@@ -30,6 +30,7 @@ pub fn fuzz() {
30
30
let play_state = 0x48 ;
31
31
let p1_play_state = 0x68 ;
32
32
33
+ let nmi_label = 0x8005 ;
33
34
emu. memory . iram_raw [ game_mode] = 4 ;
34
35
emu. registers . pc = main_loop;
35
36
@@ -85,28 +86,32 @@ pub fn fuzz() {
85
86
break ;
86
87
}
87
88
88
- let address = ( ( emu. registers . s ) as u16 ) + 0x0100 ;
89
- let address1 = ( ( emu. registers . s ) as u16 ) + 0x0101 ;
89
+ let address = ( ( emu. registers . s ) as u16 ) + 0x0102 ;
90
+ let address1 = ( ( emu. registers . s ) as u16 ) + 0x0103 ;
90
91
91
92
92
- println ! ( "{}" , emu. registers. pc) ;
93
- emu. memory . iram_raw [ 0x100 ..0x200 ] . iter ( ) . for_each ( |b| {
94
- print ! ( "{:x} " , b) ;
93
+ println ! ( "PC: {:04x}" , emu. registers. pc) ;
94
+ emu. memory . iram_raw [ 0x100 ..0x200 ] . iter ( ) . enumerate ( ) . for_each ( |( i, b) | {
95
+ if ( i % 16 ) == 0 { print ! ( "\n {:04x}: " , i + 0x100 ) ; }
96
+ print ! ( "{:02x} " , b) ;
95
97
} ) ;
96
98
println ! ( "" ) ;
97
- print ! ( "{:x} " , emu. memory. iram_raw[ address as usize ] ) ;
98
- println ! ( "{:x}" , emu. memory. iram_raw[ address1 as usize ] ) ;
99
- println ! ( "{:x}" , emu. registers. s) ;
100
- println ! ( "{}" , emu. ppu. current_scanline) ;
101
- emu. run_until_vblank ( ) ;
99
+ print ! ( "{:02x} " , emu. memory. iram_raw[ address as usize ] ) ;
100
+ println ! ( "{:02x}" , emu. memory. iram_raw[ address1 as usize ] ) ;
101
+ println ! ( "SP: {:02x}" , emu. registers. s) ;
102
+ println ! ( "SL: {:02x}" , emu. ppu. current_scanline) ;
103
+ loop {
104
+ emu. cycle ( ) ;
105
+ if emu. registers . pc == nmi_label { break } ;
106
+ }
102
107
}
103
108
104
- println ! ( "{ }" , emu. registers. pc) ;
109
+ println ! ( "PC: {:04x }" , emu. registers. pc) ;
105
110
106
111
video:: preview ( & mut emu) ;
107
112
108
113
109
- println ! ( "{ }" , emu. memory. iram_raw[ p1_push_down] ) ;
114
+ println ! ( "PD: {:02x }" , emu. memory. iram_raw[ p1_push_down] ) ;
110
115
111
116
// uncrash by replacing the PC
112
117
}
0 commit comments