File tree Expand file tree Collapse file tree 9 files changed +50
-6
lines changed Expand file tree Collapse file tree 9 files changed +50
-6
lines changed Original file line number Diff line number Diff line change
1
+ ; Hydrant's crash theory sheet https://docs.google.com/spreadsheets/d/1zAQIo_mnkk0c9e4-hpeDvVxrl9r_HvLSx8V4h4ttmrs/edit#gid=1013692687
2
+
1
3
testCrash:
2
4
lda #$1C ; setting all cycles which always happen. for optimizing, this can be removed if all compared numbers are reduced by $6F1C.
3
5
sta cycleCount
Original file line number Diff line number Diff line change @@ -66,7 +66,7 @@ vramPlayfieldRows:
66
66
.word $22CC ,$22EC ,$230C ,$232C
67
67
68
68
copyLowStackRowToVram:
69
- lda lowStackRow
69
+ lda lowStackRowModifier
70
70
asl
71
71
tax
72
72
lda vramPlayfieldRows+1 ,x
Original file line number Diff line number Diff line change @@ -85,7 +85,7 @@ playState_lockTetrimino:
85
85
bcc @notAboveLowStack
86
86
ldx #<lowStackNopeGraphic
87
87
ldy #>lowStackNopeGraphic
88
- lda lowStackRow
88
+ lda lowStackRowModifier
89
89
cmp #$09
90
90
bcs @drawOnUpperHalf
91
91
; draw on lower half
Original file line number Diff line number Diff line change @@ -116,7 +116,7 @@ updateMusicSpeed:
116
116
117
117
checkIfAboveLowStackLine:
118
118
; carry set - block found
119
- ldx lowStackRow
119
+ ldx lowStackRowModifier
120
120
lda multBy10Table,x
121
121
tay
122
122
ldx #$0A
Original file line number Diff line number Diff line change @@ -339,7 +339,7 @@ checkerModifier: .res 1
339
339
garbageModifier: .res 1
340
340
droughtModifier: .res 1
341
341
dasModifier: .res 1
342
- lowStackRow : .res 1
342
+ lowStackRowModifier : .res 1
343
343
scoringModifier: .res 1
344
344
crashModifier: .res 1
345
345
strictFlag: .res 1 ;used for crash detection. If 1, the game will register a crash anytime there is a possibility of one.
Original file line number Diff line number Diff line change
1
+ use crate :: { labels, util} ;
2
+
3
+ pub fn test ( ) {
4
+ // check some hardcoded ram addresses are aligned
5
+ assert_eq ! ( labels:: get( "stack" ) , 0x100 ) ;
6
+ assert_eq ! ( labels:: get( "playfield" ) , 0x400 ) ;
7
+ assert_eq ! ( labels:: get( "highscores" ) , 0x700 ) ;
8
+ assert_eq ! ( labels:: get( "menuRAM" ) , 0x760 ) ;
9
+
10
+ // check the right amount of menu ram exists
11
+ let qty = labels:: get ( "MODE_QUANTITY" ) as usize ;
12
+ let cfg = labels:: get ( "menuConfigSizeLookup" ) as usize ;
13
+
14
+ let mut menu_options = 0 ;
15
+
16
+ for i in 0 ..qty {
17
+ if util:: rom_data ( ) [ cfg + i - 0x8000 ] != 0 {
18
+ menu_options += 1 ;
19
+ }
20
+ }
21
+
22
+ assert_eq ! ( menu_options, labels:: get( "palFlag" ) + 1 - labels:: get( "menuVars" ) ) ;
23
+ }
Original file line number Diff line number Diff line change @@ -18,6 +18,7 @@ mod toprow;
18
18
mod tspins;
19
19
mod hz_display;
20
20
mod nmi;
21
+ mod constants;
21
22
22
23
use gumdrop:: Options ;
23
24
@@ -48,7 +49,7 @@ struct TestOptions {
48
49
fn main ( ) {
49
50
let options = TestOptions :: parse_args_default_or_exit ( ) ;
50
51
51
- let tests: [ ( & str , fn ( ) ) ; 12 ] = [
52
+ let tests: [ ( & str , fn ( ) ) ; 13 ] = [
52
53
( "garbage4" , garbage:: test_garbage4_crash) ,
53
54
( "floor" , floor:: test) ,
54
55
( "tspins" , tspins:: test) ,
@@ -61,6 +62,7 @@ fn main() {
61
62
( "palettes" , palettes:: test) ,
62
63
( "hz_display" , hz_display:: test) ,
63
64
( "nmi" , nmi:: test) ,
65
+ ( "constants" , constants:: test) ,
64
66
] ;
65
67
66
68
// run tests
Original file line number Diff line number Diff line change
1
+ use crate :: labels;
2
+
3
+ pub fn test ( ) {
4
+ // check some hardcoded ram addresses are aligned
5
+ assert_eq ! ( labels:: get( "stack" ) , 0x100 ) ;
6
+ assert_eq ! ( labels:: get( "playfield" ) , 0x400 ) ;
7
+ assert_eq ! ( labels:: get( "highscores" ) , 0x700 ) ;
8
+ assert_eq ! ( labels:: get( "menuRAM" ) , 0x760 ) ;
9
+
10
+ println ! ( "{:x}" , labels:: get( "LINECAP_HOW_STRING_OFFSET" ) ) ;
11
+ }
Original file line number Diff line number Diff line change @@ -2,8 +2,14 @@ use rusticnes_core::nes::NesState;
2
2
use rusticnes_core:: { cartridge, opcodes, opcode_info } ;
3
3
use crate :: { input, labels} ;
4
4
5
+ static ROM : & ' static [ u8 ] = include_bytes ! ( "../../tetris.nes" ) ;
6
+
7
+ pub fn rom_data ( ) -> & ' static [ u8 ] {
8
+ & ROM [ 0x10 ..]
9
+ }
10
+
5
11
pub fn emulator ( rom : Option < & [ u8 ] > ) -> NesState {
6
- let rom = rom. unwrap_or ( include_bytes ! ( "../../tetris.nes" ) ) ;
12
+ let rom = rom. unwrap_or ( ROM ) ;
7
13
let mut emu = NesState :: new ( Box :: new ( cartridge:: mapper_from_file ( rom) ) . unwrap ( ) ) ;
8
14
9
15
emu. power_on ( ) ;
You can’t perform that action at this time.
0 commit comments