File tree Expand file tree Collapse file tree 5 files changed +46
-44
lines changed Expand file tree Collapse file tree 5 files changed +46
-44
lines changed Original file line number Diff line number Diff line change @@ -3,6 +3,7 @@ mod input;
3
3
mod labels;
4
4
mod pushdown;
5
5
mod rng;
6
+ mod score;
6
7
mod sps;
7
8
mod util;
8
9
mod video;
@@ -63,18 +64,17 @@ fn main() {
63
64
64
65
// other stuff
65
66
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
-
74
67
if options. foo {
75
68
let mut emu = util:: emulator ( None ) ;
76
69
let mut view = video:: Video :: new ( ) ;
77
70
71
+ let rng_seed = labels:: get ( "rng_seed" ) as usize ;
72
+ let main_loop = labels:: get ( "mainLoop" ) ;
73
+ let practise_type = labels:: get ( "practiseType" ) as usize ;
74
+ let game_mode = labels:: get ( "gameMode" ) as usize ;
75
+ let level_number = labels:: get ( "levelNumber" ) as usize ;
76
+ let b_modifier = labels:: get ( "typeBModifier" ) as usize ;
77
+ let mode_typeb = labels:: get ( "MODE_TYPEB" ) as u8 ;
78
78
79
79
rng:: seeds ( ) . iter ( ) . for_each ( |seed| {
80
80
Original file line number Diff line number Diff line change 1
- use crate :: { labels, util} ;
1
+ use crate :: { labels, util, score } ;
2
2
3
3
pub fn test ( ) {
4
4
let mut emu = util:: emulator ( None ) ;
5
5
6
6
for pushdown in 2 ..15 {
7
7
[ 0 ..1000 , 24500 ..25500 ] . into_iter ( ) . for_each ( |range| {
8
8
for score in range {
9
- util :: set_score ( & mut emu, score) ;
9
+ score :: set ( & mut emu, score) ;
10
10
11
11
emu. registers . pc = labels:: get ( "addPushDownPoints" ) ;
12
12
emu. memory . iram_raw [ labels:: get ( "holdDownPoints" ) as usize ] = pushdown;
@@ -15,7 +15,7 @@ pub fn test() {
15
15
16
16
let reference = pushdown_impl ( pushdown, score as u16 ) as u32 ;
17
17
18
- assert_eq ! ( reference, util :: get_score ( & mut emu) - score) ;
18
+ assert_eq ! ( reference, score :: get ( & mut emu) - score) ;
19
19
}
20
20
} ) ;
21
21
}
Original file line number Diff line number Diff line change 1
1
use crate :: { util, labels} ;
2
2
use std:: collections:: HashSet ;
3
3
4
+ pub fn test ( ) {
5
+ assert_eq ! (
6
+ seeds( ) ,
7
+ include_str!( "./rng_seeds.txt" )
8
+ . split( ',' )
9
+ . map( |s| s. trim( ) . parse:: <u16 >( ) . expect( s) )
10
+ . collect:: <HashSet <_>>( )
11
+ ) ;
12
+ }
13
+
4
14
pub fn seeds ( ) -> HashSet < u16 > {
5
15
let mut emu = util:: emulator ( None ) ;
6
16
let rng_seed = labels:: get ( "rng_seed" ) ;
@@ -33,13 +43,3 @@ pub fn seeds() -> HashSet<u16> {
33
43
34
44
seeds
35
45
}
36
-
37
- pub fn test ( ) {
38
- assert_eq ! (
39
- seeds( ) ,
40
- include_str!( "./rng_seeds.txt" )
41
- . split( ',' )
42
- . map( |s| s. trim( ) . parse:: <u16 >( ) . expect( s) )
43
- . collect:: <HashSet <_>>( )
44
- ) ;
45
- }
Original file line number Diff line number Diff line change
1
+ use rusticnes_core:: nes:: NesState ;
2
+ use crate :: labels;
3
+
4
+ pub fn set ( emu : & mut NesState , score : u32 ) {
5
+ let score_addr = labels:: get ( "score" ) ;
6
+ let binscore_addr = labels:: get ( "binScore" ) ;
7
+ let bcd_str = format ! ( "{:06}" , score) ;
8
+ let bcd_a = i64:: from_str_radix ( & bcd_str[ 0 ..2 ] , 16 ) . unwrap ( ) ;
9
+ let bcd_b = i64:: from_str_radix ( & bcd_str[ 2 ..4 ] , 16 ) . unwrap ( ) ;
10
+ let bcd_c = i64:: from_str_radix ( & bcd_str[ 4 ..6 ] , 16 ) . unwrap ( ) ;
11
+
12
+ emu. memory . iram_raw [ ( score_addr + 2 ) as usize ] = bcd_a as u8 ;
13
+ emu. memory . iram_raw [ ( score_addr + 1 ) as usize ] = bcd_b as u8 ;
14
+ emu. memory . iram_raw [ score_addr as usize ] = bcd_c as u8 ;
15
+ emu. memory . iram_raw [ binscore_addr as usize ] = score as u8 ;
16
+ emu. memory . iram_raw [ ( binscore_addr + 1 ) as usize ] = ( score >> 8 ) as u8 ;
17
+ emu. memory . iram_raw [ ( binscore_addr + 2 ) as usize ] = ( score >> 16 ) as u8 ;
18
+ }
19
+
20
+ pub fn get ( emu : & mut NesState ) -> u32 {
21
+ let binscore_addr = labels:: get ( "binScore" ) ;
22
+ emu. memory . iram_raw [ binscore_addr as usize ] as u32
23
+ + ( ( emu. memory . iram_raw [ ( binscore_addr + 1 ) as usize ] as u32 ) << 8 )
24
+ + ( ( emu. memory . iram_raw [ ( binscore_addr + 2 ) as usize ] as u32 ) << 16 )
25
+ }
Original file line number Diff line number Diff line change @@ -42,26 +42,3 @@ pub fn print_step(emu: &mut NesState) {
42
42
43
43
println ! ( "{}" , opcode_info:: disassemble_instruction( emu. cpu. opcode, 0 , 0 ) . 0 ) ;
44
44
}
45
-
46
- pub fn set_score ( emu : & mut NesState , score : u32 ) {
47
- let score_addr = labels:: get ( "score" ) ;
48
- let binscore_addr = labels:: get ( "binScore" ) ;
49
- let bcd_str = format ! ( "{:06}" , score) ;
50
- let bcd_a = i64:: from_str_radix ( & bcd_str[ 0 ..2 ] , 16 ) . unwrap ( ) ;
51
- let bcd_b = i64:: from_str_radix ( & bcd_str[ 2 ..4 ] , 16 ) . unwrap ( ) ;
52
- let bcd_c = i64:: from_str_radix ( & bcd_str[ 4 ..6 ] , 16 ) . unwrap ( ) ;
53
-
54
- emu. memory . iram_raw [ ( score_addr + 2 ) as usize ] = bcd_a as u8 ;
55
- emu. memory . iram_raw [ ( score_addr + 1 ) as usize ] = bcd_b as u8 ;
56
- emu. memory . iram_raw [ score_addr as usize ] = bcd_c as u8 ;
57
- emu. memory . iram_raw [ binscore_addr as usize ] = score as u8 ;
58
- emu. memory . iram_raw [ ( binscore_addr + 1 ) as usize ] = ( score >> 8 ) as u8 ;
59
- emu. memory . iram_raw [ ( binscore_addr + 2 ) as usize ] = ( score >> 16 ) as u8 ;
60
- }
61
-
62
- pub fn get_score ( emu : & mut NesState ) -> u32 {
63
- let binscore_addr = labels:: get ( "binScore" ) ;
64
- emu. memory . iram_raw [ binscore_addr as usize ] as u32
65
- + ( ( emu. memory . iram_raw [ ( binscore_addr + 1 ) as usize ] as u32 ) << 8 )
66
- + ( ( emu. memory . iram_raw [ ( binscore_addr + 2 ) as usize ] as u32 ) << 16 )
67
- }
You can’t perform that action at this time.
0 commit comments