Skip to content

Commit 90d2ed1

Browse files
committed
add test for game mode mapper
1 parent 9a46333 commit 90d2ed1

File tree

1 file changed

+38
-5
lines changed

1 file changed

+38
-5
lines changed

tests/src/mapper.rs

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

44
pub fn get_expected_tilesets() -> (Vec<u8>, Vec<u8>) {
@@ -31,8 +31,11 @@ pub fn get_current_tilesets(emu: &mut NesState) -> Vec<u8>{
3131
}
3232

3333
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);
3639

3740
// validate here that background and sprite tile selects match
3841
assert_eq!(bg_select, sprite_select);
@@ -42,16 +45,46 @@ pub fn get_tile_select(emu: &mut NesState) -> u8 {
4245

4346
pub fn test() {
4447
let mut emu = util::emulator(None);
45-
48+
let mut view = video::Video::new();
4649
let (tileset1, tileset2) = get_expected_tilesets();
4750

48-
for _ in 0..4 {
51+
for _ in 0..20 {
4952
emu.run_until_vblank();
53+
// view.render(&mut emu);
5054
}
5155

5256
// test menu tileset is active
5357
let tile_select = get_tile_select(&mut emu);
5458
let current_tileset = get_current_tilesets(&mut emu);
5559
assert_eq!(tile_select, 0);
5660
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+
5790
}

0 commit comments

Comments
 (0)