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

Share this project:

Updates