Viewing Issue Advanced Details
|ID||Category [?]||Severity [?]||Reproducibility||Date Submitted||Last Update|
|06323||Debugger||Critical (emulator)||Always||Jul 25, 2016, 21:27||Jul 26, 2016, 03:47|
|Tester||Tafoid||View Status||Public||Platform||MAME (Official Binary)|
|Assigned To||AJR||Resolution||Fixed||OS||Windows Vista/7/8 (64-bit)|
|Version||0.175||Fixed in Version||0.176||Build||Normal|
|Summary||06323: gunbird2, s1945iii: Crash when attempting to use -cheat|
MAME crashes upon attempting to load the cheats for these games which refer to eeprom region
|Steps To Reproduce||
mame s1945 -cheat (with latest cheat package)
Note that using the cheat plugin invoked with mame s1945iii -plugins -plugin cheat does not crash and the plugin skips/blanks out the selection in question
This seems to be due to the fact that the memory is no longer being treated as "space memory" via the debugger so no changes can be done via debugger commands (and cheat.xml files). You still seem to be able to adjust and input new values into the memory view window, but if you send a command such as "eeprom.b@002f=ff" which previously worked, you will now cause an exception. Also, the debugger no longer lists the type of eeprom it is supposed to be (as a device). What was in the drop down of the memory window as: "Serial EEPROM 93C56 (256x8) ':eeprom' eeprom space memory", is now listed as "Region ':eeprom'". losing all it's identificaton.
The eeprom changes here done here: https://github.com/mamedev/mame/commit/c275ec564355323339fb8aae0d1f00740d184095
|Affected Sets / Systems||gunbird2, s1945iii|
|There are no relationship linked to this issue.|
Jul 26, 2016, 03:30
Given the removal of the memory interface from the EEPROM device, the cheat should no longer work (and the memory window behavior is to be expected), but it also shouldn't cause a null pointer exception. The probable cause of the crash is calling device->memory().has_space(AS_X) without checking to see if the device even has a memory interface.
I've submitted a pull request to correct this, after confirming that it causes the stated command to produce an expression error (which the cheat engine will catch).