@@ -48,7 +48,7 @@ fn main() {
48
48
blocks. set_input ( (
49
49
( ( options. sps_seed >> 16 ) & 0xFF ) as u8 ,
50
50
( ( options. sps_seed >> 8 ) & 0xFF ) as u8 ,
51
- ( options. sps_seed & 0xFF ) as u8 ,
51
+ ( options. sps_seed & 0xFF ) as u8 ,
52
52
) ) ;
53
53
54
54
for _ in 0 ..options. sps_qty {
@@ -57,31 +57,55 @@ fn main() {
57
57
println ! ( "" ) ;
58
58
}
59
59
60
- // other stuff
61
-
62
60
if options. rng_seeds {
63
61
println ! ( "{:?}" , rng:: seeds( ) ) ;
64
62
}
65
63
64
+ // other stuff
65
+
66
+ let rng_seed = labels:: get ( "rng_seed" ) as usize ;
67
+ let main_loop = labels:: get ( "mainLoop" ) ;
68
+ let practise_type = labels:: get ( "practiseType" ) as usize ;
69
+ let game_mode = labels:: get ( "gameMode" ) as usize ;
70
+ let level_number = labels:: get ( "levelNumber" ) as usize ;
71
+ let b_modifier = labels:: get ( "typeBModifier" ) as usize ;
72
+ let mode_typeb = labels:: get ( "MODE_TYPEB" ) as u8 ;
73
+
66
74
if options. foo {
67
75
let mut emu = util:: emulator ( None ) ;
68
76
let mut view = video:: Video :: new ( ) ;
69
77
70
- // spend a few frames bootstrapping
71
- for _ in 0 ..3 { emu. run_until_vblank ( ) ; }
72
-
73
- emu. memory . iram_raw [ labels:: get ( "practiseType" ) as usize ] = labels:: get ( "MODE_TYPEB" ) as _ ;
74
- emu. memory . iram_raw [ labels:: get ( "gameMode" ) as usize ] = 4 ;
75
- emu. memory . iram_raw [ labels:: get ( "levelNumber" ) as usize ] = 18 ;
76
- emu. memory . iram_raw [ labels:: get ( "typeBModifier" ) as usize ] = 5 ;
77
- let label = labels:: get ( "mainLoop" ) ;
78
- rusticnes_core:: opcodes:: push ( & mut emu, ( label >> 8 ) as u8 ) ;
79
- rusticnes_core:: opcodes:: push ( & mut emu, label as u8 ) ;
80
-
81
- for _ in 0 ..10 {
82
- emu. run_until_vblank ( ) ;
83
- emu. ppu . render_ntsc ( 256 ) ;
84
- view. update ( & emu. ppu . filtered_screen ) ;
78
+
79
+ rng:: seeds ( ) . iter ( ) . for_each ( |seed| {
80
+
81
+ emu. reset ( ) ;
82
+
83
+ // spend a few frames bootstrapping
84
+ for _ in 0 ..3 { emu. run_until_vblank ( ) ; }
85
+
86
+ emu. memory . iram_raw [ practise_type] = mode_typeb;
87
+ emu. memory . iram_raw [ game_mode] = 4 ;
88
+ emu. memory . iram_raw [ level_number] = 18 ;
89
+ emu. memory . iram_raw [ b_modifier] = 5 ;
90
+
91
+ emu. memory . iram_raw [ rng_seed] = ( seed >> 8 ) as u8 ;
92
+ emu. memory . iram_raw [ rng_seed + 1 ] = * seed as u8 ;
93
+
94
+ rusticnes_core:: opcodes:: push ( & mut emu, ( main_loop >> 8 ) as u8 ) ;
95
+ rusticnes_core:: opcodes:: push ( & mut emu, main_loop as u8 ) ;
96
+
97
+ for _ in 0 ..23 {
98
+ emu. run_until_vblank ( ) ;
99
+ }
100
+
101
+ emu. ppu . render_ntsc ( video:: WIDTH ) ;
102
+
103
+
104
+ // for _ in 0..5 {
105
+ view. update ( & emu. ppu . filtered_screen ) ;
106
+ // }
107
+ } ) ;
108
+ loop {
85
109
}
86
110
}
87
111
}
0 commit comments