Skip to content

Commit 858a89a

Browse files
Seamless chains
1 parent f853dcd commit 858a89a

File tree

5 files changed

+61
-28
lines changed

5 files changed

+61
-28
lines changed

art/judge/judge_back.png

-21 Bytes
Loading

art/judge/judge_top.png

25 Bytes
Loading

inc/judge.inc

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ DEF Y_FEATHER_5 EQU Y_FEATHER_0 + 3
6060
DEF Y_FEATHER_6 EQU Y_FEATHER_0 + 2
6161
DEF Y_FEATHER_7 EQU Y_FEATHER_0 + 1
6262

63-
DEF H_CHAIN_LEFT EQU 5
63+
DEF H_CHAIN_LEFT EQU 6
6464
DEF X_CHAIN_LEFT EQU 32
6565
FOR I, 8
6666
DEF Y_CHAIN_LEFT_{d:I} EQU Y_SOUL_{d:I} - 8 * H_CHAIN_LEFT
@@ -69,7 +69,7 @@ ENDR
6969
DEF H_CHAIN_RIGHT EQU 4
7070
DEF X_CHAIN_RIGHT EQU 88
7171
FOR I, 8
72-
DEF Y_CHAIN_RIGHT_{d:I} EQU Y_SOUL_0 - Y_SOUL_{d:I} + 88 - 8 * H_CHAIN_RIGHT
72+
DEF Y_CHAIN_RIGHT_{d:I} EQU Y_SOUL_0 - Y_SOUL_{d:I} + 70 - 8 * H_CHAIN_RIGHT
7373
ENDR
7474

7575
DEF W_PLATE EQU 5
@@ -78,7 +78,11 @@ DEF O_CHAIN_LEFT EQU O_FEATHER + H_FEATHER
7878
DEF O_STRING_LEFT EQU O_CHAIN_LEFT + H_CHAIN_LEFT
7979
DEF O_PLATE_LEFT EQU O_STRING_LEFT + 4
8080

81-
DEF O_CHAIN_RIGHT EQU O_PLATE_LEFT + W_PLATE
81+
DEF O_CHAIN_RIGHT2 EQU O_PLATE_LEFT + W_PLATE
82+
DEF H_CHAIN_RIGHT2 EQU 2
83+
DEF DX_CHAIN_RIGHT EQU 10
84+
85+
DEF O_CHAIN_RIGHT EQU O_CHAIN_RIGHT2 + H_CHAIN_RIGHT2
8286
DEF O_STRING_RIGHT EQU O_CHAIN_RIGHT + H_CHAIN_RIGHT
8387
DEF O_PLATE_RIGHT EQU O_STRING_RIGHT + 4
8488

@@ -112,9 +116,15 @@ DEF MAP_HEALTH EQU TILEMAP1
112116
DEF ROW_HEALTH EQU 0
113117
DEF COL_HEALTH EQU 16
114118

115-
DEF T_TOP_LEFT EQU $AF
119+
DEF T_TOP_LEFT1 EQU $AE
120+
DEF T_TOP_LEFT2 EQU T_TOP_LEFT1 + 1
121+
DEF T_TOP_RIGHT EQU T_TOP_LEFT2 + 1
122+
116123
DEF COL_TOP_LEFT EQU 3
117-
DEF ROW_TOP_LEFT EQU 5
124+
DEF ROW_TOP_LEFT EQU 4
125+
126+
DEF COL_TOP_RIGHT EQU 10
127+
DEF ROW_TOP_RIGHT EQU 2
118128

119129
DEF MUSIC_DELAY EQU $40
120130
DEF MUSIC_STEREO EQU 1

src/judge/judge_copy.asm

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ Judge::
2121
ld bc, Back2Tiles.end - Back2Tiles
2222
call Copy1bppLongSafe
2323

24+
ld b, BackTiles.end - BackTiles
2425
call Copy2bppSafe
2526

2627
ld hl, STARTOF(VRAM) | $1000
@@ -74,8 +75,14 @@ Judge::
7475
call SetAdjObject
7576

7677
.right
77-
ld a, H_CHAIN_RIGHT - 1
78+
ld bc, T_CHAIN << 8 | OAM_PRIO | OAM_YFLIP
7879
ld de, Y_CHAIN_RIGHT_0 << 8 | X_CHAIN_RIGHT
80+
call SetObject
81+
ld d, Y_CHAIN_RIGHT_0 + TILE_HEIGHT
82+
call SetObject
83+
84+
ld a, H_CHAIN_RIGHT - 1
85+
ld de, (Y_CHAIN_RIGHT_0 + TILE_HEIGHT + DX_CHAIN_RIGHT) << 8 | X_CHAIN_RIGHT
7986
call InitChain
8087
ld b, T_STRING
8188
call InitString
@@ -107,7 +114,6 @@ Copy1bppLongSafe:
107114

108115
SECTION "Copy2bppSafe", ROM0
109116
Copy2bppSafe:
110-
ld b, TILE_SIZE
111117
.loop
112118
rst WaitVRAM ; Wait for VRAM to become accessible
113119
ld a, [de] ; Load a byte from the address DE points to into the A register
@@ -246,9 +252,13 @@ Back1Tiles:
246252
.end
247253

248254
BackMap:
249-
INCBIN "judge_back.tilemap", 0, ROW_TOP_LEFT * SCREEN_WIDTH + COL_TOP_LEFT
250-
db T_TOP_LEFT
251-
INCBIN "judge_back.tilemap", ROW_TOP_LEFT * SCREEN_WIDTH + COL_TOP_LEFT + 1
255+
INCBIN "judge_back.tilemap", 0, ROW_TOP_RIGHT * SCREEN_WIDTH + COL_TOP_RIGHT
256+
db T_TOP_RIGHT
257+
INCBIN "judge_back.tilemap", ROW_TOP_RIGHT * SCREEN_WIDTH + COL_TOP_RIGHT + 1, ROW_TOP_LEFT * SCREEN_WIDTH + COL_TOP_LEFT - (ROW_TOP_RIGHT * SCREEN_WIDTH + COL_TOP_RIGHT + 1)
258+
db T_TOP_LEFT1
259+
INCBIN "judge_back.tilemap", ROW_TOP_LEFT * SCREEN_WIDTH + COL_TOP_LEFT + 1, SCREEN_WIDTH - 1
260+
db T_TOP_LEFT2
261+
INCBIN "judge_back.tilemap", (ROW_TOP_LEFT + 1) * SCREEN_WIDTH + COL_TOP_LEFT + 1
252262
.end
253263

254264
StatusMap:

src/judge/judge_main.asm

Lines changed: 31 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -114,15 +114,11 @@ ENDC
114114
call UpdateFeather
115115

116116
.left
117-
ld d, H_CHAIN_LEFT
118-
call UpdateChain
117+
call UpdateSoulChain
119118
call UpdateSoulPlate
120119

121120
.right
122-
ld d, H_CHAIN_RIGHT
123-
call UpdateChain
124-
ld d, W_PLATE
125-
call UpdateRow
121+
call UpdateFeatherChainAndPlate
126122

127123
call hFixedOAMDMA
128124

@@ -189,7 +185,7 @@ UpdateSoulPlate:
189185
.4
190186
ld [hl], d ; Set Y
191187

192-
ld l, O_CHAIN_RIGHT * OBJ_SIZE
188+
ld l, O_CHAIN_RIGHT2 * OBJ_SIZE
193189
ret
194190

195191

@@ -278,30 +274,47 @@ UpdateHalf:
278274
ret
279275

280276

281-
SECTION "UpdateRow", ROM0
282-
UpdateChain:
283-
ld a, [bc]
284-
inc c
277+
SECTION "UpdateChain", ROM0
278+
UpdateFeatherChainAndPlate:
279+
ld d, H_CHAIN_RIGHT2
280+
call UpdateChain
281+
inc a
282+
inc a
283+
ld d, H_CHAIN_RIGHT
284+
call UpdateChain.loop
285+
call UpdateSoulChain.cont
286+
ld d, W_PLATE
287+
jr UpdateRow
288+
289+
UpdateSoulChain:
290+
ld d, H_CHAIN_LEFT
291+
call UpdateChain
292+
.cont
293+
ld d, 2
294+
call UpdateRow.loop
295+
ld d, 2
296+
; Fall through
297+
298+
UpdateRow:
299+
add TILE_HEIGHT
285300
.loop
286301
ld [hli], a
287302
REPT OBJ_SIZE - 1
288303
inc l
289304
ENDR
290-
add TILE_HEIGHT
291305
dec d
292306
jr nz, .loop
293-
ld d, 2
294-
call UpdateRow.loop
295-
ld d, 2
296-
; Fall through
307+
ret
297308

298-
UpdateRow:
299-
add TILE_HEIGHT
309+
UpdateChain:
310+
ld a, [bc]
311+
inc c
300312
.loop
301313
ld [hli], a
302314
REPT OBJ_SIZE - 1
303315
inc l
304316
ENDR
317+
add TILE_HEIGHT
305318
dec d
306319
jr nz, .loop
307320
ret

0 commit comments

Comments
 (0)