@@ -2,14 +2,23 @@ mod labels;
2
2
mod pushdown;
3
3
mod util;
4
4
mod block;
5
+ mod sps;
5
6
6
7
use gumdrop:: Options ;
7
8
9
+ fn parse_hex ( s : & str ) -> Result < u32 , std:: num:: ParseIntError > {
10
+ u32:: from_str_radix ( s, 16 )
11
+ }
12
+
8
13
#[ derive( Debug , Options ) ]
9
14
struct TestOptions {
10
15
help : bool ,
11
16
#[ options( help = "run tests" ) ]
12
17
test : bool ,
18
+ #[ options( help = "set SPS seed" , parse( try_from_str = "parse_hex" ) ) ]
19
+ sps_seed : u32 ,
20
+ #[ options( help = "print SPS pieces" ) ]
21
+ sps_qty : u32 ,
13
22
}
14
23
15
24
fn main ( ) {
@@ -20,26 +29,19 @@ fn main() {
20
29
println ! ( "pushdown works!" ) ;
21
30
}
22
31
23
- let mut emu = util:: emulator ( None ) ;
24
-
25
- let seed_0 = 0x88 ;
26
- let seed_1 = 0x88 ;
27
- let seed_2 = 0x88 ;
28
-
29
- emu. memory . iram_raw [ ( labels:: get ( "set_seed_input" ) + 0 ) as usize ] = seed_0;
30
- emu. memory . iram_raw [ ( labels:: get ( "set_seed" ) + 0 ) as usize ] = seed_0;
31
- emu. memory . iram_raw [ ( labels:: get ( "set_seed_input" ) + 1 ) as usize ] = seed_1;
32
- emu. memory . iram_raw [ ( labels:: get ( "set_seed" ) + 1 ) as usize ] = seed_1;
33
- emu. memory . iram_raw [ ( labels:: get ( "set_seed_input" ) + 2 ) as usize ] = seed_2;
34
- emu. memory . iram_raw [ ( labels:: get ( "set_seed" ) + 2 ) as usize ] = seed_2;
32
+ if options. sps_qty > 0 {
33
+ let mut blocks = sps:: SPS :: new ( ) ;
35
34
35
+ blocks. set_input ( (
36
+ ( ( options. sps_seed >> 16 ) & 0xFF ) as u8 ,
37
+ ( ( options. sps_seed >> 8 ) & 0xFF ) as u8 ,
38
+ ( options. sps_seed & 0xFF ) as u8 ,
39
+ ) ) ;
36
40
37
- for i in 0 ..12 {
38
- emu. registers . pc = labels:: get ( "pickTetriminoSeed" ) ;
39
- util:: run_to_return ( & mut emu, false ) ;
40
-
41
- let block: block:: Block = emu. memory . iram_raw [ labels:: get ( "spawnID" ) as usize ] . into ( ) ;
42
-
43
- println ! ( "{:#?}" , block) ;
41
+ for i in 0 ..options. sps_qty {
42
+ print ! ( "{:?}" , blocks. next( ) ) ;
43
+ }
44
44
}
45
+
46
+ // TODO: cycle counts for modes
45
47
}
0 commit comments