Coder Social home page Coder Social logo

mborik / gpmd85emulator Goto Github PK

View Code? Open in Web Editor NEW
18.0 8.0 5.0 1.17 MB

Unix emulator of the Tesla PMD 85, an 8-bit personal micro-computer and all its compatible models produced in eighties of 20th century in former Czechoslovakia.

Home Page: https://mborik.github.io/GPMD85Emulator/

License: GNU General Public License v3.0

C++ 93.38% C 5.69% Makefile 0.47% M4 0.46%

gpmd85emulator's Issues

games.ptp file missing

hello,
is there any reason why is games.php excluded? i can see it in sourceforge archive, but not here.

Multiple ongoing regressions on screen rendering

There are still some ongoing regressions after resolving #3 (merged by #8) reported by some testers:

  • ScreenPMD85::PrepareScreen must in every frame do the cleanup of full renderer/viewport.
  • UserInterface::statusRect has invalid Y position (it depends on border size and calculation is incorrect)
  • fix the tape progress-bar in the UserInterface::RedrawStatusBar

Frequent crashes on start (or shortly after)

Testing the latest master (d1be955) on my system I am getting frequent crashes (SIGABRT). Couple backtraces (not sure if they show anything useful):

..
..
DBG: [GUI] Status bar icons resource loaded
DBG: [Screen] Windowed mode: 624x580 -> viewport: 576x512
[New Thread 0x7fffe9c006c0 (LWP 112172)]
DBG: [Sound] Initialized device to 44100Hz/8bit with 1024B (2048B) buffer
corrupted double-linked list

Thread 1 "GPMD85emu" received signal SIGABRT, Aborted.
0x00007ffff787be44 in ?? () from /usr/lib/libc.so.6
(gdb) bt
#0  0x00007ffff787be44 in ?? () from /usr/lib/libc.so.6
#1  0x00007ffff7823a30 in raise () from /usr/lib/libc.so.6
#2  0x00007ffff780b4c3 in abort () from /usr/lib/libc.so.6
#3  0x00007ffff780c354 in ?? () from /usr/lib/libc.so.6
#4  0x00007ffff7886085 in ?? () from /usr/lib/libc.so.6
#5  0x00007ffff7886bfc in ?? () from /usr/lib/libc.so.6
#6  0x00007ffff7889a9a in ?? () from /usr/lib/libc.so.6
#7  0x00007ffff788a6f4 in malloc () from /usr/lib/libc.so.6
#8  0x00007ffff7aae6e5 in operator new (sz=40) at /usr/src/debug/gcc/gcc/libstdc++-v3/libsupc++/new_op.cc:50
#9  0x000055555556c3b2 in ?? ()
#10 0x000055555556c57c in ?? ()
#11 0x0000555555569066 in ?? ()
#12 0x000055555556b055 in ?? ()
#13 0x0000555555560df8 in ?? ()
#14 0x00007ffff780cc88 in ?? () from /usr/lib/libc.so.6
#15 0x00007ffff780cd4c in __libc_start_main () from /usr/lib/libc.so.6
#16 0x0000555555561285 in ?? ()
..
..
DBG: Starting main CPU 50Hz loop

Thread 1 "GPMD85emu" received signal SIGSEGV, Segmentation fault.
0x00005555555700e6 in ?? ()
(gdb) bt
#0  0x00005555555700e6 in ?? ()
#1  0x0000555555567e74 in ?? ()
#2  0x0000555555561123 in ?? ()
#3  0x00007ffff780cc88 in ?? () from /usr/lib/libc.so.6
#4  0x00007ffff780cd4c in __libc_start_main () from /usr/lib/libc.so.6
#5  0x0000555555561285 in ?? ()

I did a manual bisect and found that the last working build was ba4f705. b0fd63b was broken and 266e230 started to crash.

Tested on Arch Linux x86_64, Xorg, removed old emulator config.

Integrate latest improvements into memory emulation & mapping

  • split ChipMemory initialization into separate child classes appropriate to each model:
    • ChipMemory12
    • ChipMemory2A
    • ChipMemory3
    • ChipMemoryC2717
  • implement 256K memory extension for models 2A a 3:
    • ChipMemory2AEx
    • ChipMemory3Ex
  • extend base class with reset status and let all the child classes implement ResetOn a ResetOff methods
  • let all the child classes to implement GetVramPointer method which returning address where VRAM is currently mapped

The screen only updates when I enter menu and then exit it

When I start the emulator (GPMD85emu -m 2A) I see this:
obrázok
When I start typing I can hear the "clicks" but nothing shows up on the display. Then I enter menu (F-F1), exit it (Esc) and the text appears.

Tried with software renderer but the result is the same.

Arch Linux, x86_64, Xorg, nvidia drivers.

Improve screen rendering

  • Upgrade SDL library to version 2.x
    • it should improve overall performance and cross-platform compatibility
  • Simplify screen rendering
    • remove OpenGL fragments which are still little bit unstable
    • remove the complex solution of scalers and scanliners
    • replace with simple texture scaling into renderer
  • Scanliners
    • will be replaced with wrapped (or repeating) tiny overlay textures of black pixels with alpha channel and blended through the screen

Connect writing into VRAM with screen rendering

  • every byte stored into VRAM memspace will be projected into union rectangle
  • screen rendering will be performed only on that union rectangle so redrawing will be performed only on that part of screen witch was changed (and save the CPU if nothing changed)
  • union rectangle should be reset to empty rectangle just before screen redrawing with be performed

Screen was redrawn only after menu enter and exit

Changes on screen was seen only after some action in menu. For example:

  • key M pressed
  • nothing happen on screen
  • entering a menu with AltGr+F1
  • exiting from menu with Esc
  • M showed in command prompt

Tested with current working copy in repo
Arch Linux
SDL2 v2.0.10

Fixing the Tape Browser block popup functionality

Popup dialog which could be shown for every block in Tape Browser has serious issue:

  • it crashing after Import tape... was selected and File browser appears but after exiting from file browser without selection (ESC) it crash on NULL pointer exception (probably because it wipe out pointer to current menu item(s), but it doesn't explain why it works properly if file was chosen...?)
  • consider if File browser dialog could be completely independent from all generic menus or submenus because of its menu-independent behaviour.

Emulator freeze during navigating in menu

When I open the menu and navigate through various sub-menus, the emulator used to freeze in short time. I found it's because of the SDL_Delay calls in MenuOpen and MenuClose routines. In attachment is a patch to eliminate this.
menufix.txt

Implement MIF 85 emulation

  • integrate SAASound library by Dave Hooper
  • implement Mif85, child of PeripheralDevice
  • integrate into IifTimer (8253)

doesn't refresh screen in Ubuntu 22.04.4 LTS Jammy Jellyfish

Compiled exactly as described in INSTALL.md under paragraph ##Building. It proceded as expected, without errors and warnings.

But after launch emulator displays only black screen with status line at the bottom of window. Changing screensize doesn't help, size of screen is changing, but content stays black.

When I go to the menu with settings and then back, screen is refreshed once and content is displayed, but doesn't updating. When i tried change screensize now, screen of emulated PMD 85 was erased and stayed black again.

Sound is working, so i can blindly enter command, for example DUMP 0000 and result will be displayed after entering to the menu and return back, but will not update any further.

I did try switch Ubuntu from Wayland to XOrg, but it did not change behaviour of emulator.

I am testing it on older notebook with:
Intel Core i5-4258U with Intel graphics Haswell-ULT (8G RAM etc...)
installed Linux Kernel is 6.5.0.-35-generic...
installation of Ubuntu is almost default, i did not change anything except many installed packages from repository

2024-06-18_screenshot_GPMD85_emulator_01

saa/Makefile.in not found

When trying to compile the latest source of GPMD85 0.11.1912, compiler stops, complaining that saa/Makefile.in is not found.

SIGABRT crash after saving snapshot

Emulator crashes immediatelly after any snapshot is saved. Snapshot was always created correctly and can be loaded without any problem.

I tried it on older Gentoo Linux and another computer with updated Debian 9 Jessie.

It doesn't depend on PMD configuration (selected model, or enabled peripherals) or running software, even after reset just in monitor it crashes same way.

crash.txt

Poor sound quality

Poor quality of sound and music was not fixed.

  • noisy
  • unpleasant high pitch tones
  • unpleasant interferences
  • there are some slow-downs and lags

Originally posted by @zkolar75 in #14 (comment)

Probably error in mapping keyboard

REPAIR
Probably error in mapping keyboard

  • The character " : " is mapped to the same key as the character " ; "
    ( After pressing this key is generated " : " , wrong )

  • The key that should generate the character " : " is generates nothing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.