Heya! I just submitted my first hack
here, of Trog! on the NES (which I had to add to the database), before I got around to introducing myself. Probably only useful to me, it's a one-byte change that allows player two to join on Famicom, despite the lack of a start button on Famicom p2 controllers (created the hack so I could play it on the Everdrive on, yeah, my Famicom).
Not very impressive, and all the less impressive once I figured out how to turn it into a Game Genie code. Ah well. It's my first ROM hack, what can I say. And my first foray into 6502 assembly (though I'd had some distant experience with 68000, ages ago).
I also plan to hack the game such that PVP attacks are more balanced, as in the NES game (and unlike the arcade game), P1 has a huge advantage over P2 in head-on combat. In fact, I just completed what I had really hoped would be the hack to achieve that... but it didn't. Ah well, back to the drawing board.
While attempting that hack, I became sufficiently frustrated at the difficulties of testing 2-player PVP as a solo player holding two controllers (or, in emulator, manipulating two characters on one keyboard), that I've now decided on an array of other hacks I should accomplish first: removal of the Trogs (baddies) and tarpits, removal of power ups/downs, removal of starting invincibility (waiting for that ring to go away before testing is annoying), prevention of falling over the sides as if players were
invincible, and player two mirroring movements and actions of player one.
I recently worked my way through Steven Hugg's Making Games for the NES
(which uses primarily C code on boilerplate tutorial examples on a web-based IDE). I skipped the assembly section of that book, as I had had a taste of 6502 code while reading about programming for my recently-acquired Apple //c (but I never actually used it until now, disassembling Trog). Anyway it gave me a decent grounding in NES internals and architecture.
I'm using Bisqwit's nescom and clever-disasm
tools to grok disassembled ROMs. If someone has other suggestions for free (and especially libre/open source) tools for the job, I'm happy to hear them - nescom has been very handy, but is also quite quirky and clunky, and the documentation is nearly nil. I'd never have gotten anywhere if I wasn't able to read their source code, and I'll probably have to hack the tools before I can continue to use them with any degree of comfort. But clever-disasm offers some neat features, including simulating the 6502 CPU and following ROM bank switches in order to determine where a jmp or jsr are actually headed (and labeling accordingly), which I assume isn't commonly found in free 6502 disassemblers.
I also just discovered Mesen the other day, and its debugging features are coming in very handy!
I also plan to eventually code my own games in NES, have a few small project ideas (such as ports of a couple favorite Intellivision games: Night Stalker and Tron Deadly Discs). And maybe eventually I'll branch off into GBA or SNES hacking.
You can see the state of my current endeavors with Trog! at GitHub
P.S., sorry for the ridiculously long intro, heh!