mamedev / mame

MAME
https://www.mamedev.org/
Other
8.32k stars 2.03k forks source link

ROM_DEFAULT_BIOS outside of ROM_REGION causes errors #6712

Open palazzol opened 4 years ago

palazzol commented 4 years ago

For both the bit90 and osborne1 drivers, the ROM_DEFAULT_BIOS tag is outside all ROM_REGIONs by design. It works fine, but when you run either from the UI, exit the driver, and then enter (or exit) any later driver in that session there is an error like this:

:: invalid BIOS "0", reverting to default WARNING: the machine might not run correctly.

Each later driver also gets interpreted as having bad roms because of this(!)

To reproduce, run bit90 or osborne from the UI, and then another arcade driver like phoenix.

I have verified this on the mingw and vs2019 builds of master, and in 0.220 release. This doesn't happen with the 0.219 release, so the bug was introduced between 0.219 and 0.220.

cuavas commented 4 years ago

Oh dear, a multi-session bug… I wonder what’s interacting with options and making it stick across sessions.

palazzol commented 4 years ago

Started doing incremental builds and found that the problem started with this commit:

https://github.com/mamedev/mame/commit/037d9d1b7059d276dca507bd8776efa7329fec95

It seems like this commit was meant to affect only the current driver, but it actually creates warnings in subsequent drivers(?)

This might be just revealing an earlier problem, because determine_bios_rom() is being called with the previous driver's "specrom". Gonna keep digging a bit more.