1
- use crate :: util;
1
+ use crate :: { labels , util, video } ;
2
2
use rusticnes_core:: nes:: NesState ;
3
3
4
4
pub fn get_expected_tilesets ( ) -> ( Vec < u8 > , Vec < u8 > ) {
@@ -31,8 +31,11 @@ pub fn get_current_tilesets(emu: &mut NesState) -> Vec<u8>{
31
31
}
32
32
33
33
pub fn get_tile_select ( emu : & mut NesState ) -> u8 {
34
- let bg_select = emu. ppu . control & 0x10 >> 4 ;
35
- let sprite_select = emu. ppu . control & 0x08 >> 3 ;
34
+ let bg_select = ( emu. ppu . control & 0x10 ) >> 4 ;
35
+ let sprite_select = ( emu. ppu . control & 0x08 ) >> 3 ;
36
+ // println!("Current PPU Control is {:08b}", emu.ppu.control);
37
+ // println!("Current BG Select is {}", bg_select);
38
+ // println!("Current Sprite Select is {}", sprite_select);
36
39
37
40
// validate here that background and sprite tile selects match
38
41
assert_eq ! ( bg_select, sprite_select) ;
@@ -42,16 +45,46 @@ pub fn get_tile_select(emu: &mut NesState) -> u8 {
42
45
43
46
pub fn test ( ) {
44
47
let mut emu = util:: emulator ( None ) ;
45
-
48
+ let mut view = video :: Video :: new ( ) ;
46
49
let ( tileset1, tileset2) = get_expected_tilesets ( ) ;
47
50
48
- for _ in 0 ..4 {
51
+ for _ in 0 ..20 {
49
52
emu. run_until_vblank ( ) ;
53
+ // view.render(&mut emu);
50
54
}
51
55
52
56
// test menu tileset is active
53
57
let tile_select = get_tile_select ( & mut emu) ;
54
58
let current_tileset = get_current_tilesets ( & mut emu) ;
55
59
assert_eq ! ( tile_select, 0 ) ;
56
60
assert_eq ! ( current_tileset, tileset1) ;
61
+
62
+ // test game mode
63
+ let practise_type = labels:: get ( "practiseType" ) as usize ;
64
+ let game_mode = labels:: get ( "gameMode" ) as usize ;
65
+ let main_loop = labels:: get ( "mainLoop" ) ;
66
+ let level_number = labels:: get ( "levelNumber" ) as usize ;
67
+ emu. memory . iram_raw [ practise_type] = labels:: get ( "MODE_TETRIS" ) as _ ;
68
+ emu. memory . iram_raw [ level_number] = 18 ;
69
+ emu. memory . iram_raw [ game_mode] = 4 ;
70
+ emu. registers . pc = main_loop;
71
+
72
+ for _ in 0 ..20 {
73
+ emu. run_until_vblank ( ) ;
74
+ // view.render(&mut emu);
75
+ }
76
+
77
+ let tile_select = get_tile_select ( & mut emu) ;
78
+ let current_tileset = get_current_tilesets ( & mut emu) ;
79
+ assert_eq ! ( tile_select, 1 ) ;
80
+ assert_eq ! ( current_tileset, tileset1) ;
81
+
82
+ //todo:
83
+
84
+ // boot in qual: tileset2, select 0
85
+
86
+ // high score entry screen: tileset1, select 0
87
+
88
+ // rocket screen: tileset2, select 0
89
+
57
90
}
0 commit comments