Inspiration
Ive been obsessed with the NES for the last year. I made an emulator for the NES. And I made a NES game. so i went with a NES ROM disassembler, so I can use as a debugging tool with my emulator when I integrate it.
What it does
takes a rom, *.nes file, and disassembles it to a cc65 assembler file
How we built it
cmake -S . -B build
cmake --build build --config Release
./DisAsmTetroid TestRom1.nes --output-file out.s
# to build the test roms
cl65 --target nes ./TestRoms/TestRom1.s -o TestRom1.nes
Challenges we ran into
The halting problem. I need to know when a program halts for it to successfully disassemble accurately. so i needed to find ways that I can use to guess when a ROM halts vs when a rom doesn't halt.
Accomplishments that we're proud of
I got it to disassemble 6/151 instructions accurately.
(that being JMP absolute address value and all LDA immediate)
So you can
assemble disassemble reassemble disassemble over and over with no error.
What's next for TetroidDisasm
refactor, and work on the control flow graph so it can disassemble BEQ, BNE... and once thats complete add the atcual limits of the reset code. and NMI code
Built With
- c++
- cmake
Log in or sign up for Devpost to join the conversation.