Magnet train fixes
Should make the code slightly easier to read, at least
This commit is contained in:
@@ -3,14 +3,14 @@ MagnetTrain:
|
|||||||
and a
|
and a
|
||||||
jr nz, .ToGoldenrod
|
jr nz, .ToGoldenrod
|
||||||
ld a, 1 ; forwards
|
ld a, 1 ; forwards
|
||||||
lb bc, $40, $60
|
lb bc, 8 * TILE_WIDTH, 12 * TILE_WIDTH
|
||||||
lb de, (11 * 8) - (11 * 8 + 4), -$60
|
lb de, (11 * TILE_WIDTH) - (11 * TILE_WIDTH + 4), -12 * TILE_WIDTH
|
||||||
jr .continue
|
jr .continue
|
||||||
|
|
||||||
.ToGoldenrod:
|
.ToGoldenrod:
|
||||||
ld a, -1 ; backwards
|
ld a, -1 ; backwards
|
||||||
lb bc, -$40, -$60
|
lb bc, -8 * TILE_WIDTH, -12 * TILE_WIDTH
|
||||||
lb de, (11 * 8) + (11 * 8 + 4), $60
|
lb de, (11 * TILE_WIDTH) + (11 * TILE_WIDTH + 4), 12 * TILE_WIDTH
|
||||||
|
|
||||||
.continue
|
.continue
|
||||||
ld h, a
|
ld h, a
|
||||||
@@ -34,11 +34,11 @@ MagnetTrain:
|
|||||||
push af
|
push af
|
||||||
ldh a, [hSCY]
|
ldh a, [hSCY]
|
||||||
push af
|
push af
|
||||||
call MagntTrain_LoadGFX_PlayMusic
|
call MagnetTrain_LoadGFX_PlayMusic
|
||||||
ld hl, hVBlank
|
ld hl, hVBlank
|
||||||
ld a, [hl]
|
ld a, [hl]
|
||||||
push af
|
push af
|
||||||
ld [hl], $1
|
ld [hl], 1
|
||||||
.loop
|
.loop
|
||||||
ld a, [wJumptableIndex]
|
ld a, [wJumptableIndex]
|
||||||
and a
|
and a
|
||||||
@@ -84,18 +84,19 @@ MagnetTrain:
|
|||||||
|
|
||||||
MagnetTrain_UpdateLYOverrides:
|
MagnetTrain_UpdateLYOverrides:
|
||||||
ld hl, wLYOverridesBackup
|
ld hl, wLYOverridesBackup
|
||||||
ld c, $2f
|
ld c, 6 * TILE_WIDTH - 1
|
||||||
ld a, [wMagnetTrainOffset]
|
ld a, [wMagnetTrainOffset]
|
||||||
add a
|
add a
|
||||||
ldh [hSCX], a
|
ldh [hSCX], a
|
||||||
call .loadloop
|
call .loadloop
|
||||||
ld c, $30
|
ld c, 6 * TILE_WIDTH
|
||||||
ld a, [wMagnetTrainPosition]
|
ld a, [wMagnetTrainPosition]
|
||||||
call .loadloop
|
call .loadloop
|
||||||
ld c, $31
|
ld c, 6 * TILE_WIDTH + 1
|
||||||
ld a, [wMagnetTrainOffset]
|
ld a, [wMagnetTrainOffset]
|
||||||
add a
|
add a
|
||||||
call .loadloop
|
call .loadloop
|
||||||
|
|
||||||
ld a, [wMagnetTrainDirection]
|
ld a, [wMagnetTrainDirection]
|
||||||
ld d, a
|
ld d, a
|
||||||
ld hl, wMagnetTrainOffset
|
ld hl, wMagnetTrainOffset
|
||||||
@@ -111,20 +112,22 @@ MagnetTrain_UpdateLYOverrides:
|
|||||||
jr nz, .loadloop
|
jr nz, .loadloop
|
||||||
ret
|
ret
|
||||||
|
|
||||||
MagntTrain_LoadGFX_PlayMusic:
|
MagnetTrain_LoadGFX_PlayMusic:
|
||||||
call ClearBGPalettes
|
call ClearBGPalettes
|
||||||
call ClearSprites
|
call ClearSprites
|
||||||
call DisableLCD
|
call DisableLCD
|
||||||
callfar ClearSpriteAnims
|
callfar ClearSpriteAnims
|
||||||
call SetMagnetTrainPals
|
call SetMagnetTrainPals
|
||||||
call DrawMagnetTrain
|
call DrawMagnetTrain
|
||||||
ld a, $90
|
ld a, SCREEN_HEIGHT_PX
|
||||||
ldh [hWY], a
|
ldh [hWY], a
|
||||||
call EnableLCD
|
call EnableLCD
|
||||||
xor a
|
xor a
|
||||||
ldh [hBGMapMode], a
|
ldh [hBGMapMode], a
|
||||||
ldh [hSCX], a
|
ldh [hSCX], a
|
||||||
ldh [hSCY], a
|
ldh [hSCY], a
|
||||||
|
|
||||||
|
; Load the player sprite
|
||||||
ldh a, [rSVBK]
|
ldh a, [rSVBK]
|
||||||
push af
|
push af
|
||||||
ld a, BANK(wPlayerGender)
|
ld a, BANK(wPlayerGender)
|
||||||
@@ -135,6 +138,8 @@ MagntTrain_LoadGFX_PlayMusic:
|
|||||||
ld hl, vTiles0
|
ld hl, vTiles0
|
||||||
ld c, 4
|
ld c, 4
|
||||||
call Request2bpp
|
call Request2bpp
|
||||||
|
|
||||||
|
; Load the trainer walking frame
|
||||||
ld hl, 12 tiles
|
ld hl, 12 tiles
|
||||||
add hl, de
|
add hl, de
|
||||||
ld d, h
|
ld d, h
|
||||||
@@ -142,7 +147,9 @@ MagntTrain_LoadGFX_PlayMusic:
|
|||||||
ld hl, vTiles0 tile $04
|
ld hl, vTiles0 tile $04
|
||||||
ld c, 4
|
ld c, 4
|
||||||
call Request2bpp
|
call Request2bpp
|
||||||
|
|
||||||
call MagnetTrain_InitLYOverrides
|
call MagnetTrain_InitLYOverrides
|
||||||
|
|
||||||
ld hl, wJumptableIndex
|
ld hl, wJumptableIndex
|
||||||
xor a
|
xor a
|
||||||
ld [hli], a ; wJumptableIndex
|
ld [hli], a ; wJumptableIndex
|
||||||
@@ -150,6 +157,7 @@ MagntTrain_LoadGFX_PlayMusic:
|
|||||||
ld [hli], a ; wMagnetTrainOffset
|
ld [hli], a ; wMagnetTrainOffset
|
||||||
ld [hli], a ; wMagnetTrainPosition
|
ld [hli], a ; wMagnetTrainPosition
|
||||||
ld [hli], a ; wMagnetTrainWaitCounter
|
ld [hli], a ; wMagnetTrainWaitCounter
|
||||||
|
|
||||||
ld de, MUSIC_MAGNET_TRAIN
|
ld de, MUSIC_MAGNET_TRAIN
|
||||||
call PlayMusic2
|
call PlayMusic2
|
||||||
ret
|
ret
|
||||||
@@ -159,25 +167,26 @@ DrawMagnetTrain:
|
|||||||
xor a
|
xor a
|
||||||
.loop
|
.loop
|
||||||
call GetMagnetTrainBGTiles
|
call GetMagnetTrainBGTiles
|
||||||
ld b, 32 / 2
|
ld b, BG_MAP_WIDTH / 2
|
||||||
call .FillAlt
|
call .FillAlt
|
||||||
inc a
|
inc a
|
||||||
cp $12
|
cp SCREEN_HEIGHT
|
||||||
jr c, .loop
|
jr c, .loop
|
||||||
|
|
||||||
hlbgcoord 0, 6
|
hlbgcoord 0, 6
|
||||||
ld de, MagnetTrainTilemap1
|
ld de, MagnetTrainTilemap
|
||||||
ld c, 20
|
ld c, 20
|
||||||
call .FillLine
|
call .FillLine
|
||||||
hlbgcoord 0, 7
|
hlbgcoord 0, 7
|
||||||
ld de, MagnetTrainTilemap2
|
ld de, MagnetTrainTilemap + 20
|
||||||
ld c, 20
|
ld c, 20
|
||||||
call .FillLine
|
call .FillLine
|
||||||
hlbgcoord 0, 8
|
hlbgcoord 0, 8
|
||||||
ld de, MagnetTrainTilemap3
|
ld de, MagnetTrainTilemap + (20 * 2)
|
||||||
ld c, 20
|
ld c, 20
|
||||||
call .FillLine
|
call .FillLine
|
||||||
hlbgcoord 0, 9
|
hlbgcoord 0, 9
|
||||||
ld de, MagnetTrainTilemap4
|
ld de, MagnetTrainTilemap + (20 * 3)
|
||||||
ld c, 20
|
ld c, 20
|
||||||
call .FillLine
|
call .FillLine
|
||||||
ret
|
ret
|
||||||
@@ -247,7 +256,7 @@ MagnetTrain_InitLYOverrides:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
SetMagnetTrainPals:
|
SetMagnetTrainPals:
|
||||||
ld a, $1
|
ld a, 1
|
||||||
ldh [rVBK], a
|
ldh [rVBK], a
|
||||||
|
|
||||||
; bushes
|
; bushes
|
||||||
@@ -274,7 +283,7 @@ SetMagnetTrainPals:
|
|||||||
ld a, PAL_BG_YELLOW
|
ld a, PAL_BG_YELLOW
|
||||||
call ByteFill
|
call ByteFill
|
||||||
|
|
||||||
ld a, $0
|
ld a, 0
|
||||||
ldh [rVBK], a
|
ldh [rVBK], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -305,7 +314,7 @@ MagnetTrain_Jumptable:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.InitPlayerSpriteAnim:
|
.InitPlayerSpriteAnim:
|
||||||
ld d, 10 * 8 + 5
|
ld d, (8 + 2) * TILE_WIDTH + 5
|
||||||
ld a, [wMagnetTrainPlayerSpriteInitX]
|
ld a, [wMagnetTrainPlayerSpriteInitX]
|
||||||
ld e, a
|
ld e, a
|
||||||
ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
|
ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_RED
|
||||||
@@ -317,7 +326,6 @@ MagnetTrain_Jumptable:
|
|||||||
bit PLAYERGENDER_FEMALE_F, a
|
bit PLAYERGENDER_FEMALE_F, a
|
||||||
jr z, .got_gender
|
jr z, .got_gender
|
||||||
ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
|
ld b, SPRITE_ANIM_INDEX_MAGNET_TRAIN_BLUE
|
||||||
|
|
||||||
.got_gender
|
.got_gender
|
||||||
pop af
|
pop af
|
||||||
ldh [rSVBK], a
|
ldh [rSVBK], a
|
||||||
@@ -325,9 +333,9 @@ MagnetTrain_Jumptable:
|
|||||||
call _InitSpriteAnimStruct
|
call _InitSpriteAnimStruct
|
||||||
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
ld hl, SPRITEANIMSTRUCT_TILE_ID
|
||||||
add hl, bc
|
add hl, bc
|
||||||
ld [hl], $0
|
ld [hl], 0
|
||||||
call .Next
|
call .Next
|
||||||
ld a, $80
|
ld a, 128
|
||||||
ld [wMagnetTrainWaitCounter], a
|
ld [wMagnetTrainWaitCounter], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -350,7 +358,7 @@ MagnetTrain_Jumptable:
|
|||||||
|
|
||||||
.PrepareToHoldTrain:
|
.PrepareToHoldTrain:
|
||||||
call .Next
|
call .Next
|
||||||
ld a, $80
|
ld a, 128
|
||||||
ld [wMagnetTrainWaitCounter], a
|
ld [wMagnetTrainWaitCounter], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
@@ -408,6 +416,7 @@ MagnetTrain_Jumptable_FirstRunThrough:
|
|||||||
call MagnetTrain_UpdateLYOverrides
|
call MagnetTrain_UpdateLYOverrides
|
||||||
call PushLYOverrides
|
call PushLYOverrides
|
||||||
call DelayFrame
|
call DelayFrame
|
||||||
|
|
||||||
ldh a, [rSVBK]
|
ldh a, [rSVBK]
|
||||||
push af
|
push af
|
||||||
ld a, BANK(wEnvironment)
|
ld a, BANK(wEnvironment)
|
||||||
@@ -416,20 +425,23 @@ MagnetTrain_Jumptable_FirstRunThrough:
|
|||||||
push af
|
push af
|
||||||
ld a, [wEnvironment]
|
ld a, [wEnvironment]
|
||||||
push af
|
push af
|
||||||
|
|
||||||
ld a, [wTimeOfDay]
|
ld a, [wTimeOfDay]
|
||||||
maskbits NUM_DAYTIMES
|
maskbits NUM_DAYTIMES
|
||||||
ld [wTimeOfDayPal], a
|
ld [wTimeOfDayPal], a
|
||||||
ld a, $1
|
ld a, TOWN
|
||||||
ld [wEnvironment], a
|
ld [wEnvironment], a
|
||||||
ld b, SCGB_MAPPALS
|
ld b, SCGB_MAPPALS
|
||||||
call GetSGBLayout
|
call GetSGBLayout
|
||||||
call UpdateTimePals
|
call UpdateTimePals
|
||||||
|
|
||||||
ldh a, [rBGP]
|
ldh a, [rBGP]
|
||||||
ld [wBGP], a
|
ld [wBGP], a
|
||||||
ldh a, [rOBP0]
|
ldh a, [rOBP0]
|
||||||
ld [wOBP0], a
|
ld [wOBP0], a
|
||||||
ldh a, [rOBP1]
|
ldh a, [rOBP1]
|
||||||
ld [wOBP1], a
|
ld [wOBP1], a
|
||||||
|
|
||||||
pop af
|
pop af
|
||||||
ld [wEnvironment], a
|
ld [wEnvironment], a
|
||||||
pop af
|
pop af
|
||||||
@@ -438,11 +450,8 @@ MagnetTrain_Jumptable_FirstRunThrough:
|
|||||||
ldh [rSVBK], a
|
ldh [rSVBK], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
MagnetTrainTilemap1:
|
MagnetTrainTilemap:
|
||||||
db $1f, $05, $06, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0b, $0c, $1f
|
db $1f, $05, $06, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0a, $0a, $0a, $09, $0a, $0a, $0a, $0b, $0c, $1f
|
||||||
MagnetTrainTilemap2:
|
|
||||||
db $14, $15, $16, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1b, $1c, $1d
|
db $14, $15, $16, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1a, $1a, $1a, $19, $1a, $1a, $1a, $1b, $1c, $1d
|
||||||
MagnetTrainTilemap3:
|
|
||||||
db $24, $25, $26, $27, $07, $2f, $29, $28, $28, $28, $28, $28, $28, $29, $07, $2f, $2a, $2b, $2c, $2d
|
db $24, $25, $26, $27, $07, $2f, $29, $28, $28, $28, $28, $28, $28, $29, $07, $2f, $2a, $2b, $2c, $2d
|
||||||
MagnetTrainTilemap4:
|
|
||||||
db $20, $1f, $2e, $1f, $17, $00, $2e, $1f, $1f, $1f, $1f, $1f, $1f, $2e, $17, $00, $1f, $2e, $1f, $0f
|
db $20, $1f, $2e, $1f, $17, $00, $2e, $1f, $1f, $1f, $1f, $1f, $1f, $2e, $17, $00, $1f, $2e, $1f, $0f
|
||||||
|
Reference in New Issue
Block a user