Skip to content

Commit 9e33c09

Browse files
committed
linecap floor lines test
1 parent cb895c4 commit 9e33c09

File tree

1 file changed

+60
-3
lines changed

1 file changed

+60
-3
lines changed

tests/src/floor.rs

Lines changed: 60 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
1-
use crate::{util, labels, playfield};
1+
use crate::{util, labels, playfield, video};
22

33
pub fn test() {
44
test_floor();
5-
test_floor_linecap();
5+
test_floor_linecap_level();
6+
test_floor_linecap_lines();
67
test_floor0();
78
}
89

@@ -54,7 +55,63 @@ fn test_floor() {
5455
assert_ne!(playfield::get(&mut emu, 0, 19), 0xEF);
5556
}
5657

57-
fn test_floor_linecap() {
58+
fn test_floor_linecap_lines() {
59+
60+
let mut emu = util::emulator(None);
61+
62+
for _ in 0..3 { emu.run_until_vblank(); }
63+
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+
68+
emu.memory.iram_raw[level_number] = 19;
69+
emu.memory.iram_raw[game_mode] = 4;
70+
71+
emu.memory.iram_raw[labels::get("linecapFlag") as usize] = 1;
72+
emu.memory.iram_raw[labels::get("linecapWhen") as usize] = 1;
73+
emu.memory.iram_raw[labels::get("linecapHow") as usize] = labels::get("LINECAP_FLOOR") as u8 - 1;
74+
emu.memory.iram_raw[labels::get("linecapLines") as usize] = 0x10;
75+
emu.memory.iram_raw[labels::get("linecapLines") as usize + 1] = 0;
76+
77+
78+
emu.registers.pc = main_loop;
79+
80+
for _ in 0..5 { emu.run_until_vblank(); }
81+
82+
// get some tetrises
83+
84+
for _ in 0..4 {
85+
86+
emu.memory.iram_raw[labels::get("currentPiece") as usize] = 0x11;
87+
emu.memory.iram_raw[labels::get("tetriminoX") as usize] = 0x5;
88+
emu.memory.iram_raw[labels::get("tetriminoY") as usize] = 0x11;
89+
emu.memory.iram_raw[labels::get("autorepeatY") as usize] = 0;
90+
emu.memory.iram_raw[labels::get("vramRow") as usize] = 0;
91+
92+
playfield::set_str(&mut emu, r##"
93+
##### ####
94+
##### ####
95+
##### ####
96+
##### ####"##);
97+
98+
for _ in 0..40 { emu.run_until_vblank();}
99+
100+
}
101+
102+
// check rows aren't pulled from the top in linecap floor mode
103+
for i in 0..40 {
104+
assert_eq!(emu.memory.iram_raw[i + labels::get("playfield") as usize], 0xEF);
105+
}
106+
107+
// check the floor is there
108+
assert_ne!(playfield::get(&mut emu, 0, 19), 0xEF);
109+
// but the row above isn't
110+
assert_eq!(playfield::get(&mut emu, 0, 18), 0xEF);
111+
}
112+
113+
fn test_floor_linecap_level() {
114+
58115
let mut emu = util::emulator(None);
59116

60117
for _ in 0..3 { emu.run_until_vblank(); }

0 commit comments

Comments
 (0)