![]() ![]() We choose to broadcast game events over UDP. After you have this information, you may want to do something with it. I hope this helps people get used to the MAME debugger. You'll notice D1ED gets triggered alot, so disable that one with the "bpclear (breakpoint number)" The same thing happens to D8BC and D676. Just scanning here are the addresses that seem interesting to me: We want to find the first branch of code that doesn't repeat. Skip above those, they're not interesting. If you scan up the file, you'll see repeated addresses of DC56. I use these blocks as starting points for new breakpoints. You'll see a nice trace with repeated blocks called out. We can step back up from the bottom of the file and see if there are interesting addresses to set breakpoints on. So we'll turn the trace file, run the game until we hit our breakpoint, and then close everything. On some CPU types, you can do just that, but with the 6809 that's powering Robotron you can't. That's a bummer! Let's walk up the stack and figure out a better spot. You'll notice the breakpoint is hit for every player death except the last one. It's at 27AC, let's set a breakpoint here. We've found the memory location for player lives! We can also take note of the instruction pointer address. You'll notice the second watchpoint is triggered!.Start the game again, and play hard until the Mutant Savior dies.Assuming you didn't die, you'll notice the first watchpoint has been hit and it doesn't have anything to do with player death.Type "wpset 0xAA6B,1,w" This will set a watchpoint that is triggered whenever our first memory address guess is written to.Find out more info on setting a watchpoint by typing "help wpset".Type "help watchpoints", a Watchpoint will cause program execution to stop whenever a memory address is written to or read from.Scanning through the differences, we don't see anything that correlates to 5 lives and 3 lives. Let's use a diff tool to see what changed in memory! On OSX, you can use Filemerge or standard old "diff". Now we have dumps of the game with 5 lives and 3 lives as the default. Let the game get to the main screen, then pause the game by hitting F8.Press the Down Arrow, Select Reset, then Hard.Press "I" to change the number of lives to "5".Press "D" to go down to "Turns Per Player".We're going to change the default number of lives to 5 and see if we can find the difference in the dump.Hit F2 to access the Operator Screens of Robotron.Press F5, then click on the emulation screen.Ah, nice, there's a dump program memory command.In the debugger console, type "Help Memory".Start playing a game, by hitting 5 to drop a coin, and 1 for one player game.) Sean Riddle has a great site with a lot of this information already available! The other way is the manual way. One way to do this is to take advantage of other peoples work. The first thing to do to find the memory location of the number of lives the player currently has. You can also click on the down arrow to access a menu that allows you to run the emulation and later pause it at different points. You can type "help" at the console and get good documentation on the debugger capabilities. You'll see two windows appear, one is the emulation, the other is the debugger window. Start mame in windowed mode with the debugger active: We're going to find out how to detect player death! This is a quick tutorial for others (and a reminder to ourselves) if you're interested in doing similar things. We choose to use MAME's debugger to detect game events and notify other pieces of software when they happened. ![]() As events happened in the game (player death, human death, lasers firing), we would trigger physical events. Player would kneal down and play the game.We had joysticks that acted as HID devices.We had an Altar that contained a Linux box that ran MAME and Robotron 2084.Use MAME's debugger to reverse engineer and extend old gamesįor the Church of Robotron's installation at Toorcamp 2012, we needed to be able to trigger physical events when game events happened in Robotron 2084. ![]()
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |