djyt/cannonball

Add config.xml option to toggle original bugs.

Closed this issue · 3 comments

Hi, it seems you have fixed some bugs present in the original game. For preservation and gameplay purposes, it would be great to include some sort of "bug compatibility" mode (GNU options example: 'cannonball -b' or 'cannonball --bug') where you can experience the same bugs and glitches that you would see in the original arcade. There are some modern and fanmade ports of other games with the same exact goal, such as Chocolate Doom and Rogue Restoration Project (the only difference is that Doom or Rogue had their source code available after a few years, but if you have already reverse-engineered and documented the original ROM of OutRun that shouldn't be a problem at all), which make them great as a starting point for newer ports and forks.

djyt commented

For now you can compile the engine with FIX_BUGS set to false in globals.hpp. This will disable the bug fixes.

Arguably, many of these bug fixes are relatively minor. However, I will happily add an option to configure this in the config.xml file.

All enhancements (as opposed to bug fixes) can be currently disabled, so the engine is as close to the original as possible.

Thank you so much.

djyt commented
  • Added config option that toggles the millisecond error during extend play. the steering issue and the misplaced tile on the music select. This will be in release 0.15
  • Unfortunately, the shadow bug was not fixable (in the sense of replicating the original behaviour). When I implemented widescreen mode, I changed a lot of the code relating to sprites positioning. In doing so, I extended the data type that held the x position of sprites. So the bug is now permanently gone.
  • The sprite zoom table is not yet selectable.