On the trying of writting a debugger I wrote a disassembler to make a great tool like that:
Nintendulator
I'm walking to this way:
Look Mine
But...
In some games as Super Mario Brothers and Others the disassembler works fine but on Excite Bike the disassembler generates an output that doesn't show correct. (mainly for the reset vector)
I'm always disassembler from the $8000 to $FFFA, reading and disassembling....
After get all the asm code...
I just point the cursor to RESET place.... in the Super Mario and others games fine! but on Excite Bike the cursor doesn't find the "correct" local.
On Excite Bike case:
The reset indicates the $C184 and my disassembler generated
So to my disassembler I don't have the $C184 to go...
The initial address $8000 to forward shows...
So I thougth that it was because the compiler puts some garbages which my disassember is trying to figure out what is it. am I rigth?
The compiler generates Illegal opcodes or garbage just to padding the left memory? (or even parameters or something...)
Or need I to change my way to disassembler ? I mean don't start on $8000 and finish on $FFFA.
ps1: I also believe that one of my opcodes must be with wrong size long.
ps2: some games tells 2 PRG banks but two of them are identical in this case I just ignore the address which holds the VECTORS.
ps3: sorry for my lack of knolegde on english language... if my thougths aren't well explained I can try to do it another way.
Nintendulator
I'm walking to this way:
Look Mine
But...
In some games as Super Mario Brothers and Others the disassembler works fine but on Excite Bike the disassembler generates an output that doesn't show correct. (mainly for the reset vector)
I'm always disassembler from the $8000 to $FFFA, reading and disassembling....
After get all the asm code...
I just point the cursor to RESET place.... in the Super Mario and others games fine! but on Excite Bike the cursor doesn't find the "correct" local.
On Excite Bike case:
The reset indicates the $C184 and my disassembler generated
Code:
C17D:CMP $E800, X
C180:NOT IMPLEMENTED [0X17]
C181:ORA ($00,X)
C183:ORA ($78,X)
C185:CLD
C180:NOT IMPLEMENTED [0X17]
C181:ORA ($00,X)
C183:ORA ($78,X)
C185:CLD
So to my disassembler I don't have the $C184 to go...
The initial address $8000 to forward shows...
Code:
8000:LSR $C3
8002:STA $C3, X
8004:TXS
8005:CMP #$2C
8007:NOT IMPLEMENTED [0XCB]
8008:ADC $C4
800A:TXS
800B:CMP #$2C
800D:NOT IMPLEMENTED [0XCB]
800E:ADC $C4
8010:LDA $7CC3 ,X
8013:CMP #$9A
8015:CMP #$2C
8017:NOT IMPLEMENTED [0XCB]
8018:AND $1CC4, X
801B:CPY $00
801D:ORA ($02,X)
801F:NOT IMPLEMENTED [0X03]
8020:NOT IMPLEMENTED [0X04]
8021:NOT IMPLEMENTED [0X02]
8022:NOT IMPLEMENTED [0X03]
8023:NOT IMPLEMENTED [0X04]
8002:STA $C3, X
8004:TXS
8005:CMP #$2C
8007:NOT IMPLEMENTED [0XCB]
8008:ADC $C4
800A:TXS
800B:CMP #$2C
800D:NOT IMPLEMENTED [0XCB]
800E:ADC $C4
8010:LDA $7CC3 ,X
8013:CMP #$9A
8015:CMP #$2C
8017:NOT IMPLEMENTED [0XCB]
8018:AND $1CC4, X
801B:CPY $00
801D:ORA ($02,X)
801F:NOT IMPLEMENTED [0X03]
8020:NOT IMPLEMENTED [0X04]
8021:NOT IMPLEMENTED [0X02]
8022:NOT IMPLEMENTED [0X03]
8023:NOT IMPLEMENTED [0X04]
So I thougth that it was because the compiler puts some garbages which my disassember is trying to figure out what is it. am I rigth?
The compiler generates Illegal opcodes or garbage just to padding the left memory? (or even parameters or something...)
Or need I to change my way to disassembler ? I mean don't start on $8000 and finish on $FFFA.
ps1: I also believe that one of my opcodes must be with wrong size long.
ps2: some games tells 2 PRG banks but two of them are identical in this case I just ignore the address which holds the VECTORS.
ps3: sorry for my lack of knolegde on english language... if my thougths aren't well explained I can try to do it another way.