Settings Patcher
The Naomi Settings Patcher is a small executable that gets patched onto a Naomi ROM before net booting which changes system and game settings. Settings such as monitor orientation, free play (or other coin modes), number of players and attract sounds can be customized before booting a game. Also, almost all Naomi games store their game settings in the same manner, allowing game customizations such as number of lives, difficulty and even joystick calibration to be customized as well. If you have swapped out your GD-ROM games for net booting or removed your game cartridge so that you can switch games easily, the Settings Patcher can help you from needing to enter the test menu every boot to set up options and system settings.
Where Do I Get It?
If you are using chunksin's WiPi net boot image for Raspberry Pi then the Settings Patcher is already integrated. Use the on screen menu to select a game and hold start to enter the advanced options for the game. There you will see options for enabling custom settings that you can configure before you boot the game. If you are using my net boot python server then the Settings Patcher is integrated into the cabinet configuration screen. After selecting a list of games that should be available to a cabinet you can select the force custom settings on boot option and configure options to your liking. If you are using my net boot software from the command line you can manually edit settings and patch ROMs using the included attach_settings
utility. You can find the code for the net boot utilities and python server at https://github.com/DragonMinded/netboot/.
How Does It Work?
In short, the Naomi provides a small EEPROM that is used by the system to store the configuration options found in the test menu. Many games also make use of a reserved area of the EEPROM to store their own settings as well. Normally when a game is switched the Naomi BIOS reads the old configuration, wipes it and recreates a new configuration based on the serial number of the game itself. Only a few settings such as monitor rotation are preserved whereas the rest are reset to defaults. This means that every time you switch a game, you need to reconfigure coin options and attract mode sounds as well as all of the game options you prefer. An unfortunate side effect of using a net dimm to boot games is that the BIOS resets the EEPROM to defaults every time you net boot a game. The Settings Patcher contains code to write to the EEPROM and some extra space for an EEPROM image that should be written. It gets patched onto a Naomi ROM image so that when the game is booted the Settings Patcher code is executed first and then the game is run. That allows the Settings Patcher to write whatever it wants to the EEPROM after the BIOS resets it, but before the game reads it.
How Do I Make Settings Definitions?
You might have noticed that your favorite game is missing game options when you attempt to configure settings for it. This is most likely because nobody has made a settings definition file for it yet. Settings definition files describe the layout of the game section in an EEPROM image for a particular game. Every game stores their settings differently and some do not even use the EEPROM at all. Existing settings definitions files as well as documentation for how the files work can be found at https://github.com/DragonMinded/netboot/tree/trunk/naomi/settings/definitions. You can also read a blog post where I puzzle through making a settings definition file for Monkey ball here: https://dragonminded.com/blog/1644683190 If you've made and tested a settings definition file and want it included in the default list of definitions you can open a pull request on GitHub or email me the definition file.