Tile system.

This commit is contained in:
Randy Thiemann 2023-11-02 19:10:51 +01:00
parent a1331228f2
commit 2063d0c5d1
20 changed files with 3976 additions and 3130 deletions

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -100,12 +100,12 @@ BlitField::
; The last 6 rows need some care.
REPT 7
; Wait until start of drawing, then insert 35 nops.
; Wait until start of drawing, then insert nops.
: ldh a, [rSTAT]
and a, 3
cp a, 3
jr nz, :-
REPT 38
REPT 40
nop
ENDR
@ -157,12 +157,12 @@ BigBlitField::
; The last 6 rows need some care.
REPT 7
; Wait until start of drawing, then insert 35 nops.
; Wait until start of drawing, then insert nops.
: ldh a, [rSTAT]
and a, 3
cp a, 3
jr nz, :-
REPT 38
REPT 40
nop
ENDR

View File

@ -435,23 +435,23 @@ GBCGameplayProcess::
ld [wInnerReps], a
.inner2
ld a, [de]
cp a, 10
cp a, TILE_PIECE_0
jr c, .empty
cp a, 10 + (1*7)
cp a, TILE_PIECE_0 + (1*7)
jr c, .sub10
cp a, 10 + (2*7)
cp a, TILE_PIECE_0 + (2*7)
jr c, .sub17
cp a, 10 + (3*7)
cp a, TILE_PIECE_0 + (3*7)
jr c, .sub24
cp a, 10 + (4*7)
cp a, TILE_PIECE_0 + (4*7)
jr c, .sub31
cp a, 10 + (5*7)
cp a, TILE_PIECE_0 + (5*7)
jr c, .sub38
cp a, 10 + (6*7)
cp a, TILE_PIECE_0 + (6*7)
jr c, .sub45
cp a, 10 + (7*7)
cp a, TILE_PIECE_0 + (7*7)
jr c, .sub52
cp a, 10 + (8*7)
cp a, TILE_PIECE_0 + (8*7)
jr c, .sub59
.empty
ld a, $07
@ -471,7 +471,7 @@ GBCGameplayProcess::
.sub17
sub a, 7
.sub10
sub a, 10
sub a, TILE_PIECE_0
.done
ld [hl+], a
inc de
@ -672,23 +672,23 @@ GBCBigGameplayProcess::
ld [wInnerReps], a
.inner2
ld a, [de]
cp a, 10
cp a, TILE_PIECE_0
jr c, .empty
cp a, 10 + (1*7)
cp a, TILE_PIECE_0 + (1*7)
jr c, .sub10
cp a, 10 + (2*7)
cp a, TILE_PIECE_0 + (2*7)
jr c, .sub17
cp a, 10 + (3*7)
cp a, TILE_PIECE_0 + (3*7)
jr c, .sub24
cp a, 10 + (4*7)
cp a, TILE_PIECE_0 + (4*7)
jr c, .sub31
cp a, 10 + (5*7)
cp a, TILE_PIECE_0 + (5*7)
jr c, .sub38
cp a, 10 + (6*7)
cp a, TILE_PIECE_0 + (6*7)
jr c, .sub45
cp a, 10 + (7*7)
cp a, TILE_PIECE_0 + (7*7)
jr c, .sub52
cp a, 10 + (8*7)
cp a, TILE_PIECE_0 + (8*7)
jr c, .sub59
.empty
ld a, $07
@ -708,7 +708,7 @@ GBCBigGameplayProcess::
.sub17
sub a, 7
.sub10
sub a, 10
sub a, TILE_PIECE_0
.done
ld [hl+], a
inc de

View File

@ -26,51 +26,52 @@ INCLUDE "rgb555.asm"
; Set up charmap.
CHARMAP " ", 1
CHARMAP "0", 66
CHARMAP "1", 67
CHARMAP "2", 68
CHARMAP "3", 69
CHARMAP "4", 70
CHARMAP "5", 71
CHARMAP "6", 72
CHARMAP "7", 73
CHARMAP "8", 74
CHARMAP "9", 75
CHARMAP "A", 76
CHARMAP "B", 77
CHARMAP "C", 78
CHARMAP "D", 79
CHARMAP "E", 80
CHARMAP "F", 81
CHARMAP "G", 82
CHARMAP "H", 83
CHARMAP "I", 84
CHARMAP "J", 85
CHARMAP "K", 86
CHARMAP "L", 87
CHARMAP "M", 88
CHARMAP "N", 89
CHARMAP "O", 90
CHARMAP "P", 91
CHARMAP "Q", 92
CHARMAP "R", 93
CHARMAP "S", 94
CHARMAP "T", 95
CHARMAP "U", 96
CHARMAP "V", 97
CHARMAP "W", 98
CHARMAP "X", 99
CHARMAP "Y", 100
CHARMAP "Z", 101
CHARMAP "!", 102
CHARMAP "?", 103
CHARMAP "[", 129
CHARMAP "]", 130
CHARMAP "/", 128
CHARMAP "-", 127
CHARMAP "#", 126
CHARMAP ".", 216
CHARMAP ":", 222
CHARMAP "0", 2
CHARMAP "1", 3
CHARMAP "2", 4
CHARMAP "3", 5
CHARMAP "4", 6
CHARMAP "5", 7
CHARMAP "6", 8
CHARMAP "7", 9
CHARMAP "8", 10
CHARMAP "9", 11
CHARMAP "A", 12
CHARMAP "B", 13
CHARMAP "C", 14
CHARMAP "D", 15
CHARMAP "E", 16
CHARMAP "F", 17
CHARMAP "G", 18
CHARMAP "H", 19
CHARMAP "I", 20
CHARMAP "J", 21
CHARMAP "K", 22
CHARMAP "L", 23
CHARMAP "M", 24
CHARMAP "N", 25
CHARMAP "O", 26
CHARMAP "P", 27
CHARMAP "Q", 28
CHARMAP "R", 29
CHARMAP "S", 30
CHARMAP "T", 31
CHARMAP "U", 32
CHARMAP "V", 33
CHARMAP "W", 34
CHARMAP "X", 35
CHARMAP "Y", 36
CHARMAP "Z", 37
CHARMAP "!", 38
CHARMAP "?", 39
CHARMAP "[", 40
CHARMAP "]", 41
CHARMAP "-", 42
CHARMAP "a", 207
CHARMAP "b", 208
CHARMAP "c", 209
CHARMAP "d", 210
CHARMAP "m", 211
; Waits for PPU mode to be 0 or 1.
@ -163,20 +164,20 @@ DEF PALETTE_LIGHTER_2 EQU %01000000
DEF PALETTE_LIGHTER_3 EQU %00000000
; Sprite base positions.
DEF NEXT_BASE_X EQU 102
DEF NEXT_BASE_X EQU 100
DEF NEXT_BASE_Y EQU 37
DEF HOLD_BASE_X EQU 102
DEF HOLD_BASE_X EQU 100
DEF HOLD_BASE_Y EQU 77
DEF QUEUE_BASE_X EQU 135
DEF QUEUE_BASE_X EQU 133
DEF QUEUE_BASE_Y EQU 35
DEF SCORE_BASE_X EQU 114
DEF SCORE_BASE_X EQU 112
DEF SCORE_BASE_Y EQU 112
DEF LEVEL_BASE_X EQU 114
DEF LEVEL_BASE_X EQU 112
DEF CLEVEL_BASE_Y EQU 133
DEF NLEVEL_BASE_Y EQU 145
DEF GRADE_BASE_X EQU 147
DEF GRADE_BASE_X EQU 145
DEF GRADE_BASE_Y EQU 20
DEF TELLS_BASE_X EQU 156
DEF TELLS_BASE_X EQU 154
DEF TELLS_BASE_Y EQU 61
DEF TELLS_Y_DIST EQU 10
@ -203,20 +204,25 @@ DEF SFX_RANKGM EQU 18
DEF MUSIC_MENU EQU $EE
; Tile data offsets
DEF GAME_OVER_R10 EQU 133
DEF GAME_OVER_R12 EQU 153
DEF GAME_OVER_R14 EQU 173
DEF GAME_OVER_OTHER EQU 131
DEF TILE_FIELD_EMPTY EQU 4
DEF TILE_PIECE_0 EQU 10
DEF TILE_0 EQU 66
DEF TILE_CLEARING EQU 124
DEF TILE_GHOST EQU 125
DEF TILE_SELECTED EQU 193
DEF TILE_UNSELECTED EQU 194
; Shared
DEF TILE_BLANK EQU 1
DEF TILE_PIECE_SMALL_0 EQU 233
DEF TILE_PIECE_BONE EQU 126
DEF TILE_0 EQU 2
; Title
DEF TILE_SELECTED EQU 92
DEF TILE_UNSELECTED EQU 93
; Gameplay
DEF TILE_FIELD_EMPTY EQU 108
DEF TILE_PIECE_0 EQU 48
DEF TILE_CLEARING EQU 106
DEF TILE_GHOST EQU 107
DEF TILE_PIECE_SMALL_0 EQU 116
DEF TILE_PIECE_BONE EQU 104
DEF GAME_OVER_R10 EQU 147
DEF GAME_OVER_R12 EQU 167
DEF GAME_OVER_R14 EQU 187
DEF GAME_OVER_OTHER EQU 145
; Button mode.
DEF BUTTON_MODE_NORM EQU 0
@ -224,7 +230,7 @@ DEF BUTTON_MODE_INVR EQU 1
DEF BUTTON_MODE_COUNT EQU 2
; RNG mode.
DEF TILE_RNG_MODE_BASE EQU 218
DEF TILE_RNG_MODE_BASE EQU 130
DEF RNG_MODE_TGM1 EQU 0
DEF RNG_MODE_TGM2 EQU 1
DEF RNG_MODE_TGM3 EQU 2
@ -233,14 +239,14 @@ DEF RNG_MODE_NES EQU 4
DEF RNG_MODE_COUNT EQU 5
; Rotation mode.
DEF TILE_ROT_MODE_BASE EQU 223
DEF TILE_ROT_MODE_BASE EQU 135
DEF ROT_MODE_ARS EQU 0
DEF ROT_MODE_ARSTI EQU 1
DEF ROT_MODE_NES EQU 2
DEF ROT_MODE_COUNT EQU 3
; Drop mode.
DEF TILE_DROP_MODE_BASE EQU 226
DEF TILE_DROP_MODE_BASE EQU 138
DEF DROP_MODE_FIRM EQU 0
DEF DROP_MODE_SNIC EQU 1
DEF DROP_MODE_HARD EQU 2
@ -259,7 +265,7 @@ DEF SCURVE_CHIL EQU 5
DEF SCURVE_COUNT EQU 6
; 20G mode.
DEF TILE_HIG_MODE_BASE EQU 231
DEF TILE_HIG_MODE_BASE EQU 143
DEF HIG_MODE_OFF EQU 0
DEF HIG_MODE_ON EQU 1
DEF HIG_MODE_COUNT EQU 2
@ -303,7 +309,7 @@ DEF STATE_GAMEPLAY_BIG EQU 6
DEF STACK_SIZE EQU 64
DEF EASTER_0 EQU $9865
DEF EASTER_1 EQU $9885
DEF SLAM_ANIMATION_LEN EQU 11
DEF SLAM_ANIMATION_LEN EQU 8
; Magic location for bank id.
DEF rBANKID EQU $4007

View File

@ -86,22 +86,6 @@ Main::
ld a, BANK_OTHER
ld [rROMB0], a
; We use a single set of tiles for the entire game, so we copy it at the start.
ld de, sTiles
ld hl, _VRAM
ld bc, sTilesEnd - sTiles
call SafeMemCopy
; GBC uses a few different tiles.
ld a, [wInitialA]
cp a, $11
jr nz, .nocolortiles
ld de, sColorTiles
ld hl, _VRAM + (TILE_PIECE_0 * 16)
ld bc, sColorTilesEnd - sColorTiles
call SafeMemCopy
.nocolortiles
; Clear OAM.
call ClearOAM
call SetNumberSpritePositions

View File

@ -26,9 +26,9 @@ SECTION "Gameplay Big Static Data", ROMX, BANK[BANK_GAMEPLAY_BIG]
sBigLeftDasSlam::
db -1
db 0
db 1, 1
db 0, 0
db 1, 1
db 1
db 0
db 1
db 0
db -1
db -2
@ -36,9 +36,9 @@ sBigLeftDasSlam::
sBigRightDasSlam::
db -3
db -4
db -5, -5
db -4, -4
db -5, -5
db -5
db -4
db -5
db -4
db -3
db -2
@ -262,71 +262,71 @@ sBigPieceRotationStates:: ; How each piece is rotated.
sBigGameplayTileMap::
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $03,$01,$01,$01,$01,$01,$01,$01,$01,$09
DB $6D,$01,$01,$01,$01,$01,$01,$01,$01,$6F
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$03,$59,$50,$63,$5F,$01,$01,$01
DB $01,$09,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$6D,$19,$10,$23,$1F,$01,$01,$01
DB $01,$6F,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$03,$01,$01,$01,$01,$01
DB $01,$01,$01,$09,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$6D,$01,$01,$01,$01,$01
DB $01,$01,$01,$6F,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$03,$01,$01,$01
DB $01,$01,$01,$01,$01,$09,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$6D,$01,$01,$01
DB $01,$01,$01,$01,$01,$6F,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$03,$01
DB $01,$01,$01,$01,$01,$01,$01,$09,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$6D,$01
DB $01,$01,$01,$01,$01,$01,$01,$6F,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $03,$01,$01,$01,$01,$01,$01,$01,$01,$09
DB $6D,$01,$01,$01,$01,$01,$01,$01,$01,$6F
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$08,$06,$06,$06,$06,$06,$06,$06
DB $06,$07,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$6E,$70,$70,$70,$70,$70,$70,$70
DB $70,$71,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$03,$53,$5A,$57,$4F,$01
DB $01,$01,$01,$09,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$6D,$13,$1A,$17,$0F,$01
DB $01,$01,$01,$6F,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$03,$01,$01,$01
DB $01,$01,$01,$01,$01,$09,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$6D,$01,$01,$01
DB $01,$01,$01,$01,$01,$6F,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$03,$01
DB $01,$01,$01,$01,$01,$01,$01,$09,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$6D,$01
DB $01,$01,$01,$01,$01,$01,$01,$6F,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $03,$01,$01,$01,$01,$01,$01,$01,$01,$09
DB $6D,$01,$01,$01,$01,$01,$01,$01,$01,$6F
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$03,$01,$01,$01,$01,$01,$01,$01
DB $01,$09,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$6D,$01,$01,$01,$01,$01,$01,$01
DB $01,$6F,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$08,$06,$06,$06,$06,$06
DB $06,$06,$06,$07,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$6E,$70,$70,$70,$70,$70
DB $70,$70,$70,$71,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$03,$5E,$4E,$5A
DB $5D,$50,$01,$01,$01,$09,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$6D,$1E,$0E,$1A
DB $1D,$10,$01,$01,$01,$6F,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$03,$01
DB $01,$01,$01,$01,$01,$01,$01,$09,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$6D,$01
DB $01,$01,$01,$01,$01,$01,$01,$6F,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $08,$06,$06,$06,$06,$06,$06,$06,$06,$07
DB $6E,$70,$70,$70,$70,$70,$70,$70,$70,$71
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$03,$57,$50,$61,$50,$57,$01,$01
DB $01,$09,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$6D,$17,$10,$21,$10,$17,$01,$01
DB $01,$6F,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$03,$01,$01,$01,$01,$01
DB $01,$01,$01,$09,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$6D,$01,$01,$01,$01,$01
DB $01,$01,$01,$6F,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$03,$01,$01,$05
DB $05,$05,$05,$01,$01,$09,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$6D,$01,$01,$72
DB $72,$72,$72,$01,$01,$6F,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$03,$01
DB $01,$01,$01,$01,$01,$01,$01,$09,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$6D,$01
DB $01,$01,$01,$01,$01,$01,$01,$6F,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $03,$01,$01,$01,$01,$01,$01,$01,$01,$09
DB $6D,$01,$01,$01,$01,$01,$01,$01,$01,$6F
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00
sBigGameplayTileMapEnd::

View File

@ -26,9 +26,9 @@ SECTION "Gameplay Static Data", ROMX, BANK[BANK_GAMEPLAY]
sLeftDasSlam::
db -1
db 0
db 1, 1
db 0, 0
db 1, 1
db 1
db 0
db 1
db 0
db -1
db -2
@ -36,9 +36,9 @@ sLeftDasSlam::
sRightDasSlam::
db -3
db -4
db -5, -5
db -4, -4
db -5, -5
db -5
db -4
db -5
db -4
db -3
db -2
@ -274,71 +274,71 @@ sTGM3Droughts::
sGameplayTileMap::
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $03,$01,$01,$01,$01,$01,$01,$01,$01,$09
DB $6D,$01,$01,$01,$01,$01,$01,$01,$01,$6F
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$03,$59,$50,$63,$5F,$01,$01,$01
DB $01,$09,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$6D,$19,$10,$23,$1F,$01,$01,$01
DB $01,$6F,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$03,$01,$01,$01,$01,$01
DB $01,$01,$01,$09,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$6D,$01,$01,$01,$01,$01
DB $01,$01,$01,$6F,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$03,$01,$01,$01
DB $01,$01,$01,$01,$01,$09,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$6D,$01,$01,$01
DB $01,$01,$01,$01,$01,$6F,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$03,$01
DB $01,$01,$01,$01,$01,$01,$01,$09,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$6D,$01
DB $01,$01,$01,$01,$01,$01,$01,$6F,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $03,$01,$01,$01,$01,$01,$01,$01,$01,$09
DB $6D,$01,$01,$01,$01,$01,$01,$01,$01,$6F
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$08,$06,$06,$06,$06,$06,$06,$06
DB $06,$07,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$6E,$70,$70,$70,$70,$70,$70,$70
DB $70,$71,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$03,$53,$5A,$57,$4F,$01
DB $01,$01,$01,$09,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$6D,$13,$1A,$17,$0F,$01
DB $01,$01,$01,$6F,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$03,$01,$01,$01
DB $01,$01,$01,$01,$01,$09,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$6D,$01,$01,$01
DB $01,$01,$01,$01,$01,$6F,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$03,$01
DB $01,$01,$01,$01,$01,$01,$01,$09,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$6D,$01
DB $01,$01,$01,$01,$01,$01,$01,$6F,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $03,$01,$01,$01,$01,$01,$01,$01,$01,$09
DB $6D,$01,$01,$01,$01,$01,$01,$01,$01,$6F
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$03,$01,$01,$01,$01,$01,$01,$01
DB $01,$09,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$6D,$01,$01,$01,$01,$01,$01,$01
DB $01,$6F,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$08,$06,$06,$06,$06,$06
DB $06,$06,$06,$07,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$6E,$70,$70,$70,$70,$70
DB $70,$70,$70,$71,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$03,$5E,$4E,$5A
DB $5D,$50,$01,$01,$01,$09,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$6D,$1E,$0E,$1A
DB $1D,$10,$01,$01,$01,$6F,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$03,$01
DB $01,$01,$01,$01,$01,$01,$01,$09,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$6D,$01
DB $01,$01,$01,$01,$01,$01,$01,$6F,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $08,$06,$06,$06,$06,$06,$06,$06,$06,$07
DB $6E,$70,$70,$70,$70,$70,$70,$70,$70,$71
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$03,$57,$50,$61,$50,$57,$01,$01
DB $01,$09,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$6D,$17,$10,$21,$10,$17,$01,$01
DB $01,$6F,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$03,$01,$01,$01,$01,$01
DB $01,$01,$01,$09,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$6D,$01,$01,$01,$01,$01
DB $01,$01,$01,$6F,$00,$00,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$03,$01,$01,$05
DB $05,$05,$05,$01,$01,$09,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$6D,$01,$01,$72
DB $72,$72,$72,$01,$01,$6F,$00,$00,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$03,$01
DB $01,$01,$01,$01,$01,$01,$01,$09,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$6D,$01
DB $01,$01,$01,$01,$01,$01,$01,$6F,$00,$00
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $03,$01,$01,$01,$01,$01,$01,$01,$01,$09
DB $6D,$01,$01,$01,$01,$01,$01,$01,$01,$6F
DB $00,$00,$00,$00,$00,$00,$00,$00,$00,$00
DB $00,$00
sGameplayTileMapEnd::

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -23,17 +23,17 @@ INCLUDE "globals.asm"
SECTION "Title Screen Static Data", ROMX, BANK[BANK_TITLE]
sEasterM0:: db $C4, $C6, $C8, $CA, $CC
sEasterM1:: db $C5, $C7, $C9, $CB, $CD
sEasterM0:: db $44, $46, $48, $4A, $4C
sEasterM1:: db $45, $47, $49, $4B, $4D
sEasterC0:: db $CE, $D0, $C8, $CA, $CC, $72, $74, $76, $78, $7A, $D6, $D7
sEasterC1:: db $CF, $D1, $C9, $CB, $CD, $73, $75, $77, $79, $7B, $01, $01
sEasterC0:: db $4E, $50, $48, $4A, $4C, $3A, $3C, $3E, $40, $42, $5A, $5B
sEasterC1:: db $4F, $51, $49, $4B, $4D, $3B, $3D, $3F, $41, $43, $01, $01
sEasterA0:: db $D2, $D4, $C8, $CA, $CC, $72, $74, $76, $78, $7A, $D6, $D7
sEasterA1:: db $D3, $D5, $C9, $CB, $CD, $73, $75, $77, $79, $7B, $01, $01
sEasterA0:: db $52, $54, $48, $4A, $4C, $3A, $3C, $3E, $40, $42, $5A, $5B
sEasterA1:: db $53, $55, $49, $4B, $4D, $3B, $3D, $3F, $41, $43, $01, $01
sEasterS0:: db $F7, $F9, $C8, $CA, $CC
sEasterS1:: db $F8, $FA, $C9, $CB, $CD
sEasterS0:: db $56, $58, $C8, $CA, $CC
sEasterS1:: db $57, $59, $49, $4B, $4D
sOption0::
db "NORM"
@ -77,69 +77,69 @@ sTitleScreenTileMap::
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$C3,$5B,$4C,$59,$4F,$5A,$5D,$4C
DB $01,$59,$5A,$61,$4C,$01,$01,$FB,$FC,$FD
DB $FE,$FF,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$5E,$1B,$0C,$19,$0F,$1A,$1D,$0C
DB $01,$19,$1A,$21,$0C,$01,$01,$5F,$60,$61
DB $62,$63,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$68,$6A,$6C,$6E,$70,$72,$74,$76,$78
DB $7A,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$30,$32,$34,$36,$38,$3A,$3C,$3E,$40
DB $42,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$69,$6B,$6D,$6F,$71,$73,$75
DB $77,$79,$7B,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$31,$33,$35,$37,$39,$3B,$3D
DB $3F,$41,$43,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$5B,$5D,$50,$5E
DB $5E,$01,$5E,$5F,$4C,$5D,$5F,$66,$01,$01
DB $01,$01,$01,$01,$01,$01,$1B,$1D,$10,$1E
DB $1E,$01,$1E,$1F,$0C,$1D,$1F,$26,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$C1,$01,$4D,$60
DB $5F,$5F,$5A,$59,$5E,$01,$01,$01,$01,$01
DB $81,$01,$01,$01,$01,$82,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$5D,$01,$0D,$20
DB $1F,$1F,$1A,$19,$1E,$01,$01,$01,$01,$01
DB $28,$01,$01,$01,$01,$29,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $C2,$01,$5D,$59,$52,$01,$58,$5A,$4F,$50
DB $01,$01,$01,$01,$81,$01,$01,$01,$01,$82
DB $5D,$01,$1D,$19,$12,$01,$18,$1A,$0F,$10
DB $01,$01,$01,$01,$28,$01,$01,$01,$01,$29
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$C2,$01,$5D,$5A,$5F,$01
DB $58,$5A,$4F,$50,$01,$01,$01,$01,$81,$01
DB $01,$01,$01,$82,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$5D,$01,$1D,$1A,$1F,$01
DB $18,$1A,$0F,$10,$01,$01,$01,$01,$28,$01
DB $01,$01,$01,$29,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$C2,$01
DB $4F,$5D,$5A,$5B,$01,$58,$5A,$4F,$50,$01
DB $01,$01,$81,$01,$01,$01,$01,$82,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$5D,$01
DB $0F,$1D,$1A,$1B,$01,$18,$1A,$0F,$10,$01
DB $01,$01,$28,$01,$01,$01,$01,$29,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$C2,$01,$5E,$5B,$50,$50,$4F,$01
DB $4E,$60,$5D,$61,$50,$01,$81,$01,$01,$01
DB $01,$82,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$5D,$01,$1E,$1B,$10,$10,$0F,$01
DB $0E,$20,$1D,$21,$10,$01,$28,$01,$01,$01
DB $01,$29,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$C2,$01,$4C,$57
DB $62,$4C,$64,$5E,$01,$44,$42,$52,$01,$01
DB $81,$01,$01,$01,$01,$82,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$5D,$01,$0C,$17
DB $22,$0C,$24,$1E,$01,$04,$02,$12,$01,$01
DB $28,$01,$01,$01,$01,$29,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $C2,$01,$5E,$5F,$4C,$5D,$5F,$01,$57,$50
DB $61,$50,$57,$01,$81,$01,$01,$01,$01,$82
DB $5D,$01,$1E,$1F,$0C,$1D,$1F,$01,$17,$10
DB $21,$10,$17,$01,$28,$01,$01,$01,$01,$29
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
DB $01,$01
sTitleScreenTileMapEnd::

View File

@ -123,7 +123,10 @@ ApplyTells::
add a, TELLS_Y_DIST
ld [wSPRModeHiG], a
ldh a, [rSCX]
ld b, a
ld a, TELLS_BASE_X
sub a, b
ld [wSPRModeRNG+1], a
ld [wSPRModeRot+1], a
ld [wSPRModeDrop+1], a
@ -202,17 +205,23 @@ ApplyNext::
dec a
jr nz, .getoffn
.skipoffn
ldh a, [rSCX]
ld b, a
ld a, [hl+]
add a, NEXT_BASE_X
sub a, b
ld [wSPRNext1+1], a
ld a, [hl+]
add a, NEXT_BASE_X
sub a, b
ld [wSPRNext2+1], a
ld a, [hl+]
add a, NEXT_BASE_X
sub a, b
ld [wSPRNext3+1], a
ld a, [hl]
add a, NEXT_BASE_X
sub a, b
ld [wSPRNext4+1], a
; Y positions
@ -239,7 +248,10 @@ ApplyNext::
ld [wSPRQueue2A], a
ld [wSPRQueue2B], a
ldh a, [rSCX]
ld b, a
ld a, QUEUE_BASE_X
sub a, b
ld [wSPRQueue1A+1], a
ld [wSPRQueue2A+1], a
add a, 8
@ -332,17 +344,23 @@ ApplyHold::
dec a
jr nz, .getoffh
.skipoffh
ldh a, [rSCX]
ld b, a
ld a, [hl+]
add a, HOLD_BASE_X
sub a, b
ld [wSPRHold1+1], a
ld a, [hl+]
add a, HOLD_BASE_X
sub a, b
ld [wSPRHold2+1], a
ld a, [hl+]
add a, HOLD_BASE_X
sub a, b
ld [wSPRHold3+1], a
ld a, [hl]
add a, HOLD_BASE_X
sub a, b
ld [wSPRHold4+1], a
; Y positions
@ -440,7 +458,10 @@ ApplyNumbers4::
; Positions all number sprites for gameplay.
SetNumberSpritePositions::
ldh a, [rSCX]
ld b, a
ld a, SCORE_BASE_X
sub a, b
ld hl, wSPRScore1
ld [hl], SCORE_BASE_Y
inc hl
@ -510,7 +531,10 @@ SetNumberSpritePositions::
ld a, OAMF_PAL1 | $07
ld [hl], a
ldh a, [rSCX]
ld b, a
ld a, LEVEL_BASE_X
sub a, b
ld hl, wSPRCLevel1
ld [hl], CLEVEL_BASE_Y
inc hl
@ -556,7 +580,10 @@ SetNumberSpritePositions::
ld a, OAMF_PAL1 | $07
ld [hl], a
ldh a, [rSCX]
ld b, a
ld a, LEVEL_BASE_X
sub a, b
ld hl, wSPRNLevel1
ld [hl], NLEVEL_BASE_Y
inc hl
@ -610,7 +637,10 @@ GradeRendering::
ld [wGrade1], a
; Set the X position of the grade objects.
ldh a, [rSCX]
ld b, a
ld a, GRADE_BASE_X
sub a, b
ld [wGrade0+1], a
add a, $8
ld [wGrade1+1], a

View File

@ -101,6 +101,9 @@ SwitchToGameplayB:
ld bc, sGameplayTileMapEnd - sGameplayTileMap
call UnsafeMemCopy
; And the tiles.
call LoadGameplayTiles
; Zero out SCX.
ld a, -2
ldh [rSCX], a
@ -633,6 +636,9 @@ GamePlayEventLoopHandlerB::
ld de, hNLevel
call ApplyNumbers4
call SetNumberSpritePositions
call ApplyTells
jp GBCGameplayProcess
@ -730,6 +736,9 @@ SwitchToGameplayBigB:
ld bc, sBigGameplayTileMapEnd - sBigGameplayTileMap
call UnsafeMemCopy
; And the tiles.
call LoadGameplayTiles
; Zero out SCX.
ld a, -2
ldh [rSCX], a
@ -1256,6 +1265,9 @@ GamePlayBigEventLoopHandlerB:
ld de, hNLevel
call ApplyNumbers4
call SetNumberSpritePositions
call ApplyTells
jp GBCBigGameplayProcess

View File

@ -127,6 +127,9 @@ SwitchToTitleB:
ld bc, sTitleScreenTileMapEnd - sTitleScreenTileMap
call UnsafeMemCopy
; And the tiles.
call LoadTitleTiles
; Zero out SCX.
xor a, a
ldh [rSCX], a

70
src/tiles.asm Normal file
View File

@ -0,0 +1,70 @@
; DMGTRIS
; Copyright (C) 2023 - Randy Thiemann <randy.thiemann@gmail.com>
; This program is free software: you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation, either version 3 of the License, or
; (at your option) any later version.
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
; You should have received a copy of the GNU General Public License
; along with this program. If not, see <https://www.gnu.org/licenses/>.
IF !DEF(TILES_ASM)
DEF TILES_ASM EQU 1
INCLUDE "globals.asm"
SECTION "Tile Functions", ROM0
LoadTitleTiles::
ld b, BANK_OTHER
rst RSTSwitchBank
ld de, sSharedTiles
ld hl, _VRAM
ld bc, sSharedTilesEnd - sSharedTiles
call SafeMemCopy
ld de, sTitleTiles
ld hl, _VRAM + (48*16)
ld bc, sTitleTilesEnd - sTitleTiles
call SafeMemCopy
jp RSTRestoreBank
LoadGameplayTiles::
ld b, BANK_OTHER
rst RSTSwitchBank
ld de, sSharedTiles
ld hl, _VRAM
ld bc, sSharedTilesEnd - sSharedTiles
call SafeMemCopy
ld a, [wInitialA]
cp a, $11
jr nz, .dmg
.gbc
ld de, sGameplayTilesC
ld hl, _VRAM + (48*16)
ld bc, sGameplayTilesCEnd - sGameplayTilesC
call SafeMemCopy
jp RSTRestoreBank
.dmg
ld de, sGameplayTilesM
ld hl, _VRAM + (48*16)
ld bc, sGameplayTilesMEnd - sGameplayTilesM
call SafeMemCopy
jp RSTRestoreBank
ENDC