Hi! I've been doing a project with an N64 emulator the last couple of weeks and thought I should start trying to talk to people who know something about hacking N64 games. What I've done is extend the Python/Qt UI frontend for mupen64plus, so that it has a Python console and a setup for loading, starting and stopping scripts from disk. The scripts so far can read and write memory, can simulate controller input and can trigger code on mupen64plus breakpoints. So all stuff that as far as I know existing memory hacking tools can do, but I want to use this as a basis to make more complicated things. The two things I'm interested in doing are:
1. Automating searches for glitches, like the TTC upwarp glitch in Mario 64
2. I want to try to write a bot that can beat Mario 64 levels by itself.
What I've got so far:
I thought I'd post here to show what I've got so far, I also had a couple of questions.
1. I suspect I'm duplicating a certain amount of work here, actually until this weekend I didn't even know about the version of Bizhawk with the Lua scripting *_* I'm wondering how much I'm hurting myself by proceeding with Python+mupen64plus rather than switching to Bizhawk or something. Bizhawk is actually running mupen64plus on the inside, right? I glanced at the API for the Bizhawk lua scripting-- does anyone know, is it using Lua or LuaJIT (i.e.: does it have access to the luajit ffi mechanism or is it the api exposed with the stack interface)?
2. The biggest thing that worries me about proceeding with mupen64plus is that it does not currently support movie recording or playback, so I would have to hack that back into the core. The thing that worries me about this is save states. The m64 and bk2 formats both look pretty ?? simple to write, but in both cases the video starts with a savestate. Do Bizhawk and mupen64plus use the same save state format? Is there a way to convert mupen64plus save states to "old mupen64" save states?