KimJorgensen / easyflash

Fork of https://bitbucket.org/skoe/easyflash
http://skoe.de/easyflash/
41 stars 11 forks source link

Nordic Power support is broken #10

Open markusC64 opened 4 years ago

markusC64 commented 4 years ago

I have found a bug in connection with the emulation of Nordic Power. To reproduce it you only have to load the CRT and then load the game "PITSTOP II" from floppy (occurs in both cases) with the Nordic Power fastloader (F5 in the Nordic Power start screen) and of course start it.

Observation: The start screen of Pitstop II is defective.

Expected behaviour: The whole game should be loaded without errors and also executed without errors. With an original Nordic Power module the problem does not occur and the game will run without errors.

Since a similar error also occurs in other Nordic Power emulations, I have gained some experience, which could be the cause: compared to the Action Replay new mode of the Nordic Power from $8000 ROM and from $A000 RAM is mapped. The write accesses to both mentioned areas are critical. Write accesses $8000-$9FFF must affect C64 RAM and must not affect the RAM of the Nordic Power. Write accesses $A000-$BFFF on the other hand must not affect the C64 RAM and must change the RAM of the Nordic Power. If you implement both areas as described and everything else as in Action Replay, it should work - I have already successfully corrected an emulation.

Please take the example files from that VICE bug report: https://sourceforge.net/p/vice-emu/patches/230/

You also find there some test code.

KimJorgensen commented 4 years ago

First, thank you for this very nice error report which makes it clear what the problem is, how to reproduce the issue and information on how to fix it. Do you know if this was something that was broken in this fork? Otherwise this bug should really go to the upstream repository. If that is not possible and it would help anybody I'm willing to accept a pull request. It is a bit weird that this is a problem as there are some VHDL code in place to handle writes in these memory areas (https://github.com/KimJorgensen/easyflash/blob/master/Hardware/ef3-vhdl/src/cart_ar.vhdl#L318).

markusC64 commented 4 years ago

Sorry, I have no information on that. But anyway, I'd guess skoe's version is also broken. But skoe has disabled issue tracker and is not reachable any more - no activity on forums etc. So making upstream bug report is not really possible. Anyway, this seems to be a mass bug ­- any Nordic Power emulation that I have seen has this bug.

Handling writing is not enough (but necessary), original hardware switches to 8k mode ($8000-$9FFF) resp. to Ultimax Mode ($A000-$BFFF) for that single write access in mode $22 (see the vice bug report, esp. the excel file I provided there).