diff options
Diffstat (limited to 'event/magnet_train.asm')
-rwxr-xr-x | event/magnet_train.asm | 170 |
1 files changed, 86 insertions, 84 deletions
diff --git a/event/magnet_train.asm b/event/magnet_train.asm index d9c1a3ae9..fbb5238c4 100755 --- a/event/magnet_train.asm +++ b/event/magnet_train.asm @@ -3,14 +3,14 @@ Special_MagnetTrain: ; 8cc04 and a jr nz, .ToGoldenrod ld a, 1 ; forwards - lb bc, $40, $60 - ld de, $fca0 + lb bc, $40, $60 + lb de, (11 * 8) - (11 * 8 + 4), -$60 jr .continue .ToGoldenrod ld a, -1 ; backwards - lb bc, $c0, $a0 - ld de, $b460 + lb bc, -$40, -$60 + lb de, (11 * 8) + (11 * 8 + 4), $60 .continue ld h, a @@ -18,21 +18,23 @@ Special_MagnetTrain: ; 8cc04 push af ld a, $5 ld [rSVBK], a + ld a, h - ld [w5_d191], a + ld [wMagnetTrainDirection], a ld a, c - ld [w5_d192], a + ld [wMagnetTrainInitPosition], a ld a, b - ld [w5_d193], a + ld [wMagnetTrainHoldPosition], a ld a, e - ld [w5_d194], a + ld [wMagnetTrainFinalPosition], a ld a, d - ld [w5_d195], a + ld [wMagnetTrainPlayerSpriteInitX], a + ld a, [hSCX] push af ld a, [hSCY] push af - call Function8ccc9 + call MagntTrain_LoadGFX_PlayMusic ld hl, hVBlank ld a, [hl] push af @@ -43,15 +45,15 @@ Special_MagnetTrain: ; 8cc04 jr z, .initialize bit 7, a jr nz, .done - callab Function8cf69 - call Function8cdf7 - call Function8cc99 + callab PlaySpriteAnimations + call MagnetTrain_Jumptable + call MagnetTrain_UpdateLYOverrides call Function3b0c call DelayFrame jr .loop .initialize - call Function8ceae + call MagnetTrain_Jumptable_FirstRunThrough jr .loop .done @@ -69,6 +71,7 @@ Special_MagnetTrain: ; 8cc04 ld [Requested2bppDest + 1], a ld [Requested2bpp], a call ClearTileMap + pop af ld [hSCY], a pop af @@ -80,21 +83,21 @@ Special_MagnetTrain: ; 8cc04 ret ; 8cc99 -Function8cc99: ; 8cc99 +MagnetTrain_UpdateLYOverrides: ; 8cc99 ld hl, LYOverridesBackup ld c, $2f ld a, [wcf64] add a ld [hSCX], a - call Function8ccc4 + call .loadloop ld c, $30 ld a, [wcf65] - call Function8ccc4 + call .loadloop ld c, $31 ld a, [wcf64] add a - call Function8ccc4 - ld a, [wd191] + call .loadloop + ld a, [wMagnetTrainDirection] ld d, a ld hl, wcf64 ld a, [hl] @@ -103,21 +106,19 @@ rept 2 endr ld [hl], a ret -; 8ccc4 -Function8ccc4: ; 8ccc4 -.asm_8ccc4 +.loadloop ld [hli], a dec c - jr nz, .asm_8ccc4 + jr nz, .loadloop ret ; 8ccc9 -Function8ccc9: ; 8ccc9 +MagntTrain_LoadGFX_PlayMusic: ; 8ccc9 call ClearBGPalettes call ClearSprites call DisableLCD - callab Function8cf53 + callab ClearSpriteAnims call SetMagnetTrainPals call DrawMagnetTrain ld a, $90 @@ -135,20 +136,20 @@ Function8ccc9: ; 8ccc9 pop af ld [rSVBK], a ld hl, VTiles0 - ld c, $4 + ld c, 4 call Request2bpp - ld hl, $c0 + ld hl, 12 tiles add hl, de ld d, h ld e, l ld hl, VTiles0 tile $04 - ld c, $4 + ld c, 4 call Request2bpp - call Function8cda6 + call MagnetTrain_InitLYOverrides ld hl, wJumptableIndex xor a ld [hli], a - ld a, [wd192] + ld a, [wMagnetTrainInitPosition] rept 3 ld [hli], a endr @@ -160,13 +161,13 @@ endr DrawMagnetTrain: ; 8cd27 hlbgcoord 0, 0 xor a -.asm_8cd2b +.loop call GetMagnetTrainBGTiles ld b, 32 / 2 call .FillAlt inc a cp $12 - jr c, .asm_8cd2b + jr c, .loop hlbgcoord 0, 6 ld de, MagnetTrainTilemap1 ld c, 20 @@ -243,14 +244,14 @@ MagnetTrainBGTiles: ; 8cd82 db $5c, $5d ; bush ; 8cda6 -Function8cda6: ; 8cda6 +MagnetTrain_InitLYOverrides: ; 8cda6 ld hl, LYOverrides - ld bc, $90 - ld a, [wd192] + ld bc, LYOverridesEnd - LYOverrides + ld a, [wMagnetTrainInitPosition] call ByteFill ld hl, LYOverridesBackup - ld bc, $90 - ld a, [wd192] + ld bc, LYOverridesBackupEnd - LYOverridesBackup + ld a, [wMagnetTrainInitPosition] call ByteFill ld a, $43 ld [hLCDStatCustom], a @@ -290,11 +291,11 @@ SetMagnetTrainPals: ; 8cdc3 ret ; 8cdf7 -Function8cdf7: ; 8cdf7 +MagnetTrain_Jumptable: ; 8cdf7 ld a, [wJumptableIndex] ld e, a ld d, 0 - ld hl, Jumptable_8ce06 + ld hl, .Jumptable rept 2 add hl, de endr @@ -304,25 +305,26 @@ endr jp [hl] ; 8ce06 -Jumptable_8ce06: ; 8ce06 - dw Function8ce19 - dw Function8ce6d - dw Function8ce47 - dw Function8ce6d - dw Function8ce7a - dw Function8ce6d - dw Function8cea2 +.Jumptable: ; 8ce06 + jumptable_start + jumptable .InitPlayerSpriteAnim + jumptable .WaitScene + jumptable .MoveTrain1 + jumptable .WaitScene + jumptable .MoveTrain2 + jumptable .WaitScene + jumptable .TrainArrived ; 8ce14 -Function8ce14: ; 8ce14 +.Next: ; 8ce14 ld hl, wJumptableIndex inc [hl] ret ; 8ce19 -Function8ce19: ; 8ce19 - ld d, $55 - ld a, [wd194 + 1] +.InitPlayerSpriteAnim: ; 8ce19 + ld d, 10 * 8 + 5 + ld a, [wMagnetTrainPlayerSpriteInitX] ld e, a ld b, SPRITE_ANIM_INDEX_15 ld a, [rSVBK] @@ -331,67 +333,67 @@ Function8ce19: ; 8ce19 ld [rSVBK], a ld a, [PlayerGender] bit 0, a - jr z, .asm_8ce31 + jr z, .got_gender ld b, SPRITE_ANIM_INDEX_1F -.asm_8ce31 +.got_gender pop af ld [rSVBK], a ld a, b call _InitSpriteAnimStruct - ld hl, $3 + ld hl, SPRITEANIMSTRUCT_TILE_ID add hl, bc ld [hl], $0 - call Function8ce14 + call .Next ld a, $80 ld [wcf66], a ret ; 8ce47 -Function8ce47: ; 8ce47 - ld hl, wd193 +.MoveTrain1: ; 8ce47 + ld hl, wMagnetTrainHoldPosition ld a, [wcf65] cp [hl] - jr z, .asm_8ce64 + jr z, .PrepareToHoldTrain ld e, a - ld a, [wd191] + ld a, [wMagnetTrainDirection] xor $ff inc a add e ld [wcf65], a - ld hl, wc3c0 - ld a, [wd191] + ld hl, wGlobalAnimXOffset + ld a, [wMagnetTrainDirection] add [hl] ld [hl], a ret -.asm_8ce64 - call Function8ce14 +.PrepareToHoldTrain + call .Next ld a, $80 ld [wcf66], a ret ; 8ce6d -Function8ce6d: ; 8ce6d +.WaitScene: ; 8ce6d ld hl, wcf66 ld a, [hl] and a - jr z, .asm_8ce76 + jr z, .DoneWaiting dec [hl] ret -.asm_8ce76 - call Function8ce14 +.DoneWaiting + call .Next ret ; 8ce7a -Function8ce7a: ; 8ce7a - ld hl, wd194 +.MoveTrain2: ; 8ce7a + ld hl, wMagnetTrainFinalPosition ld a, [wcf65] cp [hl] - jr z, .asm_8ce9e + jr z, .PrepareToFinishAnim ld e, a - ld a, [wd191] + ld a, [wMagnetTrainDirection] xor $ff inc a ld d, a @@ -400,8 +402,8 @@ rept 2 add d endr ld [wcf65], a - ld hl, wc3c0 - ld a, [wd191] + ld hl, wGlobalAnimXOffset + ld a, [wMagnetTrainDirection] ld d, a ld a, [hl] rept 2 @@ -412,12 +414,12 @@ endr ret -.asm_8ce9e - call Function8ce14 +.PrepareToFinishAnim + call .Next ret ; 8cea2 -Function8cea2: ; 8cea2 +.TrainArrived: ; 8cea2 ld a, $80 ld [wJumptableIndex], a ld de, SFX_TRAIN_ARRIVED @@ -425,10 +427,10 @@ Function8cea2: ; 8cea2 ret ; 8ceae -Function8ceae: ; 8ceae - callba Function8cf69 - call Function8cdf7 - call Function8cc99 +MagnetTrain_Jumptable_FirstRunThrough: ; 8ceae + callba PlaySpriteAnimations + call MagnetTrain_Jumptable + call MagnetTrain_UpdateLYOverrides call Function3b0c call DelayFrame ld a, [rSVBK] @@ -444,15 +446,15 @@ Function8ceae: ; 8ceae ld [TimeOfDayPal], a ld a, $1 ld [wPermission], a - ld b, SCGB_09 + ld b, SCGB_MAPPALS call GetSGBLayout call UpdateTimePals ld a, [rBGP] - ld [wcfc7], a + ld [wBGP], a ld a, [rOBP0] - ld [wcfc8], a + ld [wOBP0], a ld a, [rOBP1] - ld [wcfc9], a + ld [wOBP1], a pop af ld [wPermission], a pop af |