agg23 / openfpga-NES

NES for the Analogue Pocket
GNU General Public License v3.0
193 stars 9 forks source link

Rad Racer boots in different states depending on most recently loaded ROM #37

Open wesmckiel opened 1 year ago

wesmckiel commented 1 year ago

Version (or build number)

1.0.0

Steps to reproduce

-Use RetroDriven/Pocket_Updater v1.5.6 to install this core on a formatted memory card -Run this core from the FPGA menu, as normal, and select (no-intro verified) "Rad Racer (USA)" -Title screen shows, as expected, followed by the vehicle selection screen several seconds later -Access the system menu and quit the core -Run the core once more and select the same ROM -Title screen is skipped and execution proceeds from the vehicle selection screen -Access the system menu and quit the core -Run the core once more and select (one that I know works, but there may be others) the ROM "Racket Attack (USA)" -Allow the game to load -Access the system menu and quit the core -Run the core again and select "Rad Racer (USA)" once more -Title screen shows, as expected, followed by the vehicle selection screen several seconds later -Other ROMs seem to have other effects on the boot state of Rad Racer

Expected Behavior

The Rad Racer ROM boots to the title screen 100% of time on ROM load.

Actual Behavior

The Rad Racer ROM boots in a variety of states (perhaps according to the state of RAM?):

Additional Context

Is there something odd about this game that I don't know? Is there a race condition (no pun intended) coded into the front-end or something? Or is this behavior I just happened to notice indicative of an issue with the core?

The reason I suspect the core is that the one time the game booted to the ending sequence, I used the system menu to "Reset core" multiple times and it simply reset the ending sequence every time.

agg23 commented 1 year ago

Bad game is bad, but it actually looks like RAM is not properly zeroed in the core (which is incorrect, but it's what most emulators do). Thanks for the report. It may be a while before I'm able to make a new release, but it's an easy fix.

https://github.com/agg23/openfpga-NES/blame/master/rtl/nes_top.sv#L640-L642