Skip to content

Commit 4413fb3

Browse files
committed
test rocket screen mapper
1 parent 39c91ef commit 4413fb3

File tree

1 file changed

+55
-6
lines changed

1 file changed

+55
-6
lines changed

tests/src/mapper.rs

Lines changed: 55 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use crate::{input, labels, util, video};
1+
use crate::{input, labels, playfield, util, video};
22
use rusticnes_core::nes::NesState;
33

44
pub fn get_expected_tilesets() -> (Vec<u8>, Vec<u8>) {
@@ -8,12 +8,12 @@ pub fn get_expected_tilesets() -> (Vec<u8>, Vec<u8>) {
88
let game_tileset = include_bytes!("../../src/chr/game_tileset.chr");
99
let rocket_tileset = include_bytes!("../../src/chr/rocket_tileset.chr");
1010
let empty_tileset: Vec<u8> = vec![0; 0x1000];
11-
11+
1212
// cnrom limited to reading 8k banks, so pair tilesets accordingly
1313
let mut tileset1: Vec<u8> = vec![0; 0x2000];
1414
tileset1[..0x1000].copy_from_slice(title_menu_tileset);
1515
tileset1[0x1000..].copy_from_slice(game_tileset);
16-
16+
1717
let mut tileset2: Vec<u8> = vec![0; 0x2000];
1818
tileset2[..0x1000].copy_from_slice(rocket_tileset);
1919
tileset2[0x1000..].copy_from_slice(&empty_tileset);
@@ -64,7 +64,10 @@ pub fn test() {
6464
let game_mode = labels::get("gameMode") as usize;
6565
let main_loop = labels::get("mainLoop");
6666
let level_number = labels::get("levelNumber") as usize;
67-
emu.memory.iram_raw[practise_type] = labels::get("MODE_TETRIS") as _;
67+
let score = labels::get("score") as usize;
68+
let tetris = labels::get("MODE_TETRIS") as usize;
69+
70+
emu.memory.iram_raw[practise_type] = tetris as u8;
6871
emu.memory.iram_raw[level_number] = 18;
6972
emu.memory.iram_raw[game_mode] = 4;
7073
emu.registers.pc = main_loop;
@@ -78,6 +81,7 @@ pub fn test() {
7881
let current_tileset = get_current_tilesets(&mut emu);
7982
assert_eq!(tile_select, 1);
8083
assert_eq!(current_tileset, tileset1);
84+
8185
// boot in qual: tileset2, select 0
8286
emu.p1_input = input::SELECT;
8387
emu.reset();
@@ -90,10 +94,55 @@ pub fn test() {
9094
assert_eq!(tile_select, 0);
9195
assert_eq!(current_tileset, tileset2);
9296
emu.p1_input = 0;
93-
97+
98+
// rocket screen: tileset2, select 0
99+
emu.memory.iram_raw[practise_type] = tetris as u8;
100+
emu.memory.iram_raw[level_number] = 12;
101+
emu.memory.iram_raw[game_mode] = 4;
102+
emu.registers.pc = main_loop;
103+
104+
for _ in 0..20 {
105+
emu.run_until_vblank();
106+
// view.render(&mut emu);
107+
}
108+
emu.memory.iram_raw[score] = 0x99;
109+
emu.memory.iram_raw[score+1] = 0x99;
110+
emu.memory.iram_raw[score+2] = 0x99;
111+
playfield::set_str(&mut emu, r##"
112+
##########
113+
##########
114+
##########
115+
##########
116+
##########
117+
##########
118+
##########
119+
##########
120+
##########
121+
##########
122+
##########
123+
##########
124+
##########
125+
##########
126+
##########
127+
##########
128+
##########
129+
##########
130+
##########
131+
##########"##);
132+
133+
for _ in 0..400 {
134+
emu.run_until_vblank();
135+
view.render(&mut emu);
136+
}
137+
138+
let tile_select = get_tile_select(&mut emu);
139+
let current_tileset = get_current_tilesets(&mut emu);
140+
assert_eq!(tile_select, 0);
141+
assert_eq!(current_tileset, tileset2);
142+
143+
94144
//todo:
95145
// high score entry screen: tileset1, select 0
96146

97-
// rocket screen: tileset2, select 0
98147

99148
}

0 commit comments

Comments
 (0)