IF !DEF(CONSTANTS_ASM) DEF CONSTANTS_ASM EQU 1 SECTION "Static Data", ROM0 sPieceXOffsets:: ; How to draw each piece. X-offsets of the sprites. db 0, 8, 16, 24 ; I db 0, 8, 8, 16 ; Z db 0, 8, 8, 16 ; S db 0, 8, 16, 16 ; J db 0, 0, 8, 16 ; L db 8, 8, 16, 16 ; O db 0, 8, 8, 16 ; T sPieceYOffsets:: ; How to draw each piece. Y-offsets of the sprites. db 0, 0, 0, 0 ; I db 0, 0, 7, 7 ; Z db 7, 7, 0, 0 ; S db 0, 0, 0, 7 ; J db 7, 0, 0, 0 ; L db 0, 7, 0, 7 ; O db 0, 0, 7, 0 ; T sSpeedCurve:: ; Speed curve of the game. dw $0000 ; Level 0000 db 0, %00000001 ; 1/8G db 25, 14, 30, 40 ; ARE, DAS, LOCK, LINECLEAR dw $0100 ; Level 0100 db 0, %00010001 ; 2/8G db 25, 14, 30, 40 ; ARE, DAS, LOCK, LINECLEAR dw $0150 ; Level 0150 db 0, %01001001 ; 3/8G db 25, 14, 30, 40 ; ARE, DAS, LOCK, LINECLEAR dw $0200 ; Level 0200 db 0, %01010101 ; 4/8G db 25, 14, 30, 40 ; ARE, DAS, LOCK, LINECLEAR dw $0225 ; Level 0225 db 0, %01011101 ; 5/8G db 25, 14, 30, 40 ; ARE, DAS, LOCK, LINECLEAR dw $0250 ; Level 0250 db 0, %01110111 ; 6/8G db 25, 14, 30, 40 ; ARE, DAS, LOCK, LINECLEAR dw $0275 ; Level 0275 db 0, %01111111 ; 7/8G db 25, 14, 30, 40 ; ARE, DAS, LOCK, LINECLEAR dw $0300 ; Level 0300 db 1, %11111111 ; 1G db 25, 14, 30, 32 ; ARE, DAS, LOCK, LINECLEAR dw $0350 ; Level 0350 db 2, %11111111 ; 2G db 25, 14, 30, 32 ; ARE, DAS, LOCK, LINECLEAR dw $0400 ; Level 0400 db 3, %11111111 ; 3G db 25, 14, 30, 32 ; ARE, DAS, LOCK, LINECLEAR dw $0450 ; Level 0450 db 4, %11111111 ; 4G db 25, 14, 30, 32 ; ARE, DAS, LOCK, LINECLEAR dw $0475 ; Level 0475 db 5, %11111111 ; 5G db 25, 14, 30, 32 ; ARE, DAS, LOCK, LINECLEAR dw $0500 ; Level 0500 db 20, %11111111 ; 20G db 25, 14, 30, 24 ; ARE, DAS, LOCK, LINECLEAR dw $0600 ; Level 0600 db 20, %11111111 ; 20G db 25, 8, 30, 24 ; ARE, DAS, LOCK, LINECLEAR dw $0700 ; Level 0700 db 20, %11111111 ; 20G db 20, 8, 30, 24 ; ARE, DAS, LOCK, LINECLEAR dw $0900 ; Level 0900 db 20, %11111111 ; 20G db 16, 6, 25, 16 ; ARE, DAS, LOCK, LINECLEAR dw $1100 ; Level 1100 db 20, %11111111 ; 20G db 12, 6, 25, 16 ; ARE, DAS, LOCK, LINECLEAR dw $1200 ; Level 1200 db 20, %11111111 ; 20G db 12, 6, 25, 8 ; ARE, DAS, LOCK, LINECLEAR dw $1300 ; Level 1300 db 20, %11111111 ; 20G db 10, 6, 20, 7 ; ARE, DAS, LOCK, LINECLEAR dw $1400 ; Level 1400 db 20, %11111111 ; 20G db 10, 6, 18, 6 ; ARE, DAS, LOCK, LINECLEAR dw $1500 ; Level 1500 db 20, %11111111 ; 20G db 8, 4, 16, 5 ; ARE, DAS, LOCK, LINECLEAR dw $1600 ; Level 1600 db 20, %11111111 ; 20G db 8, 4, 14, 4 ; ARE, DAS, LOCK, LINECLEAR dw $1700 ; Level 1700 db 20, %11111111 ; 20G db 6, 4, 12, 3 ; ARE, DAS, LOCK, LINECLEAR dw $1800 ; Level 1800 db 20, %11111111 ; 20G db 6, 4, 10, 3 ; ARE, DAS, LOCK, LINECLEAR dw $1900 ; Level 1900 db 20, %11111111 ; 20G db 4, 4, 8, 3 ; ARE, DAS, LOCK, LINECLEAR dw $2000 ; Level 2000 db 20, %11111111 ; 20G db 4, 3, 8, 3 ; ARE, DAS, LOCK, LINECLEAR dw $2500 ; Level 2500 db 20, %11111111 ; 20G db 2, 1, 8, 2 ; ARE, DAS, LOCK, LINECLEAR dw $3000 ; Level 3000 db 20, %11111111 ; 20G db 1, 1, 8, 1 ; ARE, DAS, LOCK, LINECLEAR dw $4000 ; Level 4000 db 20, %11111111 ; 20G db 1, 1, 6, 1 ; ARE, DAS, LOCK, LINECLEAR dw $5000 ; Level 5000 db 20, %11111111 ; 20G db 1, 1, 4, 1 ; ARE, DAS, LOCK, LINECLEAR dw $6666 ; Level 6666 db 20, %11111111 ; 20G db 1, 1, 2, 1 ; ARE, DAS, LOCK, LINECLEAR dw $9999 ; Level 9999 db 20, %11111111 ; 20G db 1, 1, 1, 1 ; ARE, DAS, LOCK, LINECLEAR sPieceRotationStates:: ; How each piece is rotated. ; I db %0000 db %1111 db %0000 db %0000 db %0010 db %0010 db %0010 db %0010 db %0000 db %1111 db %0000 db %0000 db %0010 db %0010 db %0010 db %0010 ; Z db %0000 db %1100 db %0110 db %0000 db %0010 db %0110 db %0100 db %0000 db %0000 db %1100 db %0110 db %0000 db %0010 db %0110 db %0100 db %0000 ; S db %0000 db %0110 db %1100 db %0000 db %1000 db %1100 db %0100 db %0000 db %0000 db %0110 db %1100 db %0000 db %1000 db %1100 db %0100 db %0000 ; J db %0000 db %1110 db %0010 db %0000 db %0110 db %0100 db %0100 db %0000 db %0000 db %1000 db %1110 db %0000 db %0100 db %0100 db %1100 db %0000 ; L db %0000 db %1110 db %1000 db %0000 db %0100 db %0100 db %0110 db %0000 db %0000 db %0010 db %1110 db %0000 db %1100 db %0100 db %0100 db %0000 ; O db %0000 db %0110 db %0110 db %0000 db %0000 db %0110 db %0110 db %0000 db %0000 db %0110 db %0110 db %0000 db %0000 db %0110 db %0110 db %0000 ; T db %0000 db %1110 db %0100 db %0000 db %0100 db %0110 db %0100 db %0000 db %0000 db %0100 db %1110 db %0000 db %0100 db %1100 db %0100 db %0000 DEF PALETTE_REGULAR EQU %11100100 DEF PALETTE_INVERTED EQU %00011011 DEF PALETTE_MONO_0 EQU %11111111 DEF PALETTE_MONO_1 EQU %10101010 DEF PALETTE_MONO_2 EQU %01010101 DEF PALETTE_MONO_3 EQU %00000000 DEF PALETTE_DARKER_0 EQU %11100100 DEF PALETTE_DARKER_1 EQU %11111001 DEF PALETTE_DARKER_2 EQU %11111110 DEF PALETTE_DARKER_3 EQU %11111111 DEF PALETTE_LIGHTER_0 EQU %11100100 DEF PALETTE_LIGHTER_1 EQU %10010000 DEF PALETTE_LIGHTER_2 EQU %01000000 DEF PALETTE_LIGHTER_3 EQU %00000000 DEF FIELD_TOP_LEFT EQU $9800+(1*32)+1 DEF TILE_FIELD_EMPTY EQU 7 DEF TILE_PIECE_0 EQU 10 DEF TILE_0 EQU 100 DEF NEXT_BASE_X EQU 120 DEF NEXT_BASE_Y EQU 40 DEF HOLD_BASE_X EQU 120 DEF HOLD_BASE_Y EQU 80 DEF DIGIT_BASE_X EQU 112 DEF SCORE_BASE_Y EQU 115 DEF CLEVEL_BASE_Y EQU 136 DEF NLEVEL_BASE_Y EQU 148 DEF SCURVE_N_ENTRIES EQU 32 DEF SCURVE_ENTRY_SIZE EQU 8 DEF PIECE_I EQU 0 DEF PIECE_Z EQU 1 DEF PIECE_S EQU 2 DEF PIECE_J EQU 3 DEF PIECE_L EQU 4 DEF PIECE_O EQU 5 DEF PIECE_T EQU 6 ENDC