I've returned to my
Save New York cartridge disassembly project. The source code now builds, but I'm a very long way from done. Even though I've only commented about 5% of the source code at this point, I've built up a lot of other useful data into a spreadsheet like subroutine memory locations, kernal API calls, etc.
At this point, I think I'm nearing the end of the game's bootstrap and initialization routines. Even this early in the game, I see some variables in system memory that have caught my eye. There is one memory location in particular that I suspect may toggle the state machine of the entire game between "demo" "player 1" and "player 2" or something like that. But, I can't really prove it yet.
I'd like to be able to use VICE's machine language monitor to poke in one of the other potential values into that memory location and resume execution of the code. I don't see an obvious option for that. Can someone here point me in the right direction? In this case I just want to be able to change a single byte value.
There is also a broader case where I see a bunch of stuff gets copied out of the CHARGEN ROM area and then modified with bitwise operations. I think this is where the existing character set is getting modified to produce tile based graphics. Presumably, this is more space efficient on an 8k cartridge than a bunch of immediate mode writes with the same data. If that seems nonsensical, let me know and I'll paste the routine here for others to comment on.
How do I dump a larger segment of memory to file? I see
dump and
undump, but I must be doing it wrong as it's just giving me errors. Once I have that I can prove out my theory any number of ways.