Here is a partial DASM file for 'outzone' in which you can see our routine : 013ABE: 4E71 nop ; Ignore checksum error (ROM EVEN) 013AD4: 6022 bra $13af8 ; Ignore checksum error (ROM ODD) 000970: 4EF9 0003 FFE0 jmp $3ffd0.l ; Jump to our patched routine 000976: 4E71 nop 000978: 4E71 nop 00097a: 4E71 nop 03FFD0: 48E7 FFFE movem.l D0-D7/A0-A6, -(A7) ; Our patched routine starts here 03FFD4: 7005 moveq #$5, D0 ; Starting level - 1 (the value in D0 must be between 0 and 6) 03FFD6: D179 0024 0c02 add.w D0, $240c02.l 03FFDC: 4CDF 7FFF movem.l (A7)+, D0-D7/A0-A6 03FFE0: 4A79 0024 0B4A tst.w $240b4a.l ; Copy of the original code 03FFE6: 6704 beq $3ffec 03FFE8: 32BC 0004 move.w #$4, (A1) 03FFEC: 4EF9 0000 097c jmp $97c.l ; Back to the original routine To get this, copy/paste this in your outzone.xml file : Select your starting level with the cheats (use the left and right arrows), reset MAME (F3) to be sure, enter the debugger, then save range 0x000000-0x03ffff to a binary file ... I now let you code a tool that splits this file into 2 smaller ones (one for EVEN, one for ODD), then find a way to "burn" these 2 smaller files into ROMS which you can then plug on your PCB ...