@@ -2,8 +2,8 @@ use crate::{util, labels, playfield};
2
2
3
3
pub fn test ( ) {
4
4
test_floor ( ) ;
5
- test_floor_linecap_level ( ) ;
6
- test_floor_linecap_lines ( ) ;
5
+ test_floor_linecap ( "MODE_TRANSITION" , 0 ) ;
6
+ test_floor_linecap ( "MODE_TETRIS" , 1 ) ;
7
7
test_floor0 ( ) ;
8
8
}
9
9
@@ -55,25 +55,27 @@ fn test_floor() {
55
55
assert_ne ! ( playfield:: get( & mut emu, 0 , 19 ) , 0xEF ) ;
56
56
}
57
57
58
- fn test_floor_linecap_lines ( ) {
58
+ fn test_floor_linecap ( mode : & str , linecap_when : u8 ) {
59
59
60
60
let mut emu = util:: emulator ( None ) ;
61
61
62
62
for _ in 0 ..3 { emu. run_until_vblank ( ) ; }
63
63
64
+ let practise_type = labels:: get ( "practiseType" ) as usize ;
64
65
let game_mode = labels:: get ( "gameMode" ) as usize ;
65
66
let main_loop = labels:: get ( "mainLoop" ) ;
66
67
let level_number = labels:: get ( "levelNumber" ) as usize ;
67
68
69
+ emu. memory . iram_raw [ practise_type] = labels:: get ( mode) as _ ;
68
70
emu. memory . iram_raw [ level_number] = 19 ;
69
71
emu. memory . iram_raw [ game_mode] = 4 ;
70
72
71
73
emu. memory . iram_raw [ labels:: get ( "linecapFlag" ) as usize ] = 1 ;
72
- emu. memory . iram_raw [ labels:: get ( "linecapWhen" ) as usize ] = 1 ;
74
+ emu. memory . iram_raw [ labels:: get ( "linecapWhen" ) as usize ] = linecap_when ;
73
75
emu. memory . iram_raw [ labels:: get ( "linecapHow" ) as usize ] = labels:: get ( "LINECAP_FLOOR" ) as u8 - 1 ;
74
76
emu. memory . iram_raw [ labels:: get ( "linecapLines" ) as usize ] = 0x10 ;
75
77
emu. memory . iram_raw [ labels:: get ( "linecapLines" ) as usize + 1 ] = 0 ;
76
-
78
+ emu . memory . iram_raw [ labels :: get ( "linecapLevel" ) as usize ] = 20 ;
77
79
78
80
emu. registers . pc = main_loop;
79
81
@@ -110,59 +112,6 @@ fn test_floor_linecap_lines() {
110
112
assert_eq ! ( playfield:: get( & mut emu, 0 , 18 ) , 0xEF ) ;
111
113
}
112
114
113
- fn test_floor_linecap_level ( ) {
114
-
115
- let mut emu = util:: emulator ( None ) ;
116
-
117
- for _ in 0 ..3 { emu. run_until_vblank ( ) ; }
118
-
119
- let practise_type = labels:: get ( "practiseType" ) as usize ;
120
- let game_mode = labels:: get ( "gameMode" ) as usize ;
121
- let main_loop = labels:: get ( "mainLoop" ) ;
122
- let level_number = labels:: get ( "levelNumber" ) as usize ;
123
-
124
- emu. memory . iram_raw [ practise_type] = labels:: get ( "MODE_TRANSITION" ) as _ ;
125
- emu. memory . iram_raw [ level_number] = 19 ;
126
- emu. memory . iram_raw [ game_mode] = 4 ;
127
-
128
- emu. memory . iram_raw [ labels:: get ( "linecapFlag" ) as usize ] = 1 ;
129
- emu. memory . iram_raw [ labels:: get ( "linecapHow" ) as usize ] = labels:: get ( "LINECAP_FLOOR" ) as u8 - 1 ;
130
- emu. memory . iram_raw [ labels:: get ( "linecapLevel" ) as usize ] = 20 ;
131
-
132
- emu. registers . pc = main_loop;
133
-
134
- for _ in 0 ..5 { emu. run_until_vblank ( ) ; }
135
-
136
- // get some tetrises
137
-
138
- for _ in 0 ..4 {
139
-
140
- emu. memory . iram_raw [ labels:: get ( "currentPiece" ) as usize ] = 0x11 ;
141
- emu. memory . iram_raw [ labels:: get ( "tetriminoX" ) as usize ] = 0x5 ;
142
- emu. memory . iram_raw [ labels:: get ( "tetriminoY" ) as usize ] = 0x11 ;
143
- emu. memory . iram_raw [ labels:: get ( "autorepeatY" ) as usize ] = 0 ;
144
- emu. memory . iram_raw [ labels:: get ( "vramRow" ) as usize ] = 0 ;
145
-
146
- playfield:: set_str ( & mut emu, r##"
147
- ##### ####
148
- ##### ####
149
- ##### ####
150
- ##### ####"## ) ;
151
-
152
- for _ in 0 ..40 { emu. run_until_vblank ( ) ; }
153
- }
154
-
155
- // check rows aren't pulled from the top in linecap floor mode
156
- for i in 0 ..40 {
157
- assert_eq ! ( emu. memory. iram_raw[ i + labels:: get( "playfield" ) as usize ] , 0xEF ) ;
158
- }
159
-
160
- // check the floor is there
161
- assert_ne ! ( playfield:: get( & mut emu, 0 , 19 ) , 0xEF ) ;
162
- // but the row above isn't
163
- assert_eq ! ( playfield:: get( & mut emu, 0 , 18 ) , 0xEF ) ;
164
- }
165
-
166
115
fn test_floor0 ( ) {
167
116
let mut emu = util:: emulator ( None ) ;
168
117
0 commit comments