diff options
Diffstat (limited to 'engine/battle/battle_transitions.asm')
-rw-r--r-- | engine/battle/battle_transitions.asm | 155 |
1 files changed, 126 insertions, 29 deletions
diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm index 9a5f62b1..642d457b 100644 --- a/engine/battle/battle_transitions.asm +++ b/engine/battle/battle_transitions.asm @@ -1,5 +1,5 @@ -BattleTransition: ; 7096d (1c:496d) - ld a, 1 +BattleTransition: ; 709d7 (1c:49d7) + ld a, $1 ld [H_AUTOBGTRANSFERENABLED], a call Delay3 xor a @@ -70,7 +70,7 @@ BattleTransition: ; 7096d (1c:496d) ; bit 0: set if trainer battle ; bit 1: set if enemy is at least 3 levels higher than player ; bit 2: set if dungeon map -BattleTransitions: ; 709d2 (1c:49d2) +BattleTransitions: ; 70a3c (1c:4a3c) dw BattleTransition_DoubleCircle ; %000 dw BattleTransition_Spiral ; %001 dw BattleTransition_Circle ; %010 @@ -80,7 +80,7 @@ BattleTransitions: ; 709d2 (1c:49d2) dw BattleTransition_VerticalStripes ; %110 dw BattleTransition_Split ; %111 -GetBattleTransitionID_WildOrTrainer: ; 709e2 (1c:49e2) +GetBattleTransitionID_WildOrTrainer: ; 70a4c (1c:4a4c) ld a, [W_CUROPPONENT] cp 200 jr nc, .trainer @@ -90,7 +90,7 @@ GetBattleTransitionID_WildOrTrainer: ; 709e2 (1c:49e2) set 0, c ret -GetBattleTransitionID_CompareLevels: ; 709ef (1c:49ef) +GetBattleTransitionID_CompareLevels: ; 70a59 (1c:4a59) ld hl, wPartyMon1HP .faintedLoop ld a, [hli] @@ -121,7 +121,7 @@ GetBattleTransitionID_CompareLevels: ; 709ef (1c:49ef) ; fails to recognize VICTORY_ROAD_2, VICTORY_ROAD_3, all ROCKET_HIDEOUT maps, ; MANSION_1, SEAFOAM_ISLANDS_[2-5], POWER_PLANT, DIGLETTS_CAVE ; and SILPH_CO_[9-11]F as dungeon maps -GetBattleTransitionID_IsDungeonMap: ; 70a19 (1c:4a19) +GetBattleTransitionID_IsDungeonMap: ; 70a83 (1c:4a83) ld a, [W_CURMAP] ld e, a ld hl, DungeonMaps1 @@ -153,7 +153,7 @@ GetBattleTransitionID_IsDungeonMap: ; 70a19 (1c:4a19) ; GetBattleTransitionID_IsDungeonMap checks if W_CURMAP ; is equal to one of these maps -DungeonMaps1: ; 70a3f (1c:4a3f) +DungeonMaps1: ; 70aa9 (1c:4aa9) db VIRIDIAN_FOREST db ROCK_TUNNEL_1 db SEAFOAM_ISLANDS_1 @@ -162,7 +162,7 @@ DungeonMaps1: ; 70a3f (1c:4a3f) ; GetBattleTransitionID_IsDungeonMap checks if W_CURMAP ; is in between or equal to each pair of maps -DungeonMaps2: ; 70a44 (1c:4a44) +DungeonMaps2: ; 70aac (1c:4aac) ; all MT_MOON maps db MT_MOON_1 db MT_MOON_3 @@ -181,29 +181,37 @@ DungeonMaps2: ; 70a44 (1c:4a44) db UNKNOWN_DUNGEON_1 db $FF -LoadBattleTransitionTile: ; 70a4d (1c:4a4d) +LoadBattleTransitionTile: ; 70ab7 (1c:4ab7) ld hl, vChars1 + $7f0 ld de, BattleTransitionTile lb bc, BANK(BattleTransitionTile), (BattleTransitionTileEnd - BattleTransitionTile) / $10 jp CopyVideoData -BattleTransitionTile: ; 70a59 (1c:4a59) +BattleTransitionTile: ; 70ac3 (1c:4ac3) INCBIN "gfx/battle_transition.2bpp" BattleTransitionTileEnd: -BattleTransition_BlackScreen: ; 70a69 (1c:4a69) +BattleTransition_BlackScreen: ; 70ad3 (1c:4ad3) ld a, $ff ld [rBGP], a ld [rOBP0], a ld [rOBP1], a + call Func_3021 + call Func_3040 + call Func_3061 ret ; for non-dungeon trainer battles ; called regardless of mon levels, but does an ; outward spiral if enemy is at least 3 levels ; higher than player and does an inward spiral otherwise +<<<<<<< HEAD +BattleTransition_Spiral: ; 70ae5 (1c:4ae5) + ld a, [wcd47] +======= BattleTransition_Spiral: ; 70a72 (1c:4a72) ld a, [wBattleTransitionSpiralDirection] +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a and a jr z, .outwardSpiral call BattleTransition_InwardSpiral @@ -235,12 +243,21 @@ BattleTransition_Spiral: ; 70a72 (1c:4a72) ld [wOutwardSpiralTileMapPointer], a ret +<<<<<<< HEAD +BattleTransition_InwardSpiral: ; 70b1d (1c:4b1d) + ld a, $7 + ld [wWhichTrade], a + ld hl, wTileMap + ld c, $11 + ld de, $14 +======= BattleTransition_InwardSpiral: ; 70aaa (1c:4aaa) ld a, 7 ld [wInwardSpiralUpdateScreenCounter], a coord hl, 0, 0 ld c, SCREEN_HEIGHT - 1 ld de, SCREEN_WIDTH +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a call BattleTransition_InwardSpiral_ inc c jr .skip @@ -253,7 +270,11 @@ BattleTransition_InwardSpiral: ; 70aaa (1c:4aaa) call BattleTransition_InwardSpiral_ dec c dec c +<<<<<<< HEAD + ld de, -$14 +======= ld de, -SCREEN_WIDTH +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a call BattleTransition_InwardSpiral_ inc c ld de, -1 @@ -265,7 +286,7 @@ BattleTransition_InwardSpiral: ; 70aaa (1c:4aaa) jr nz, .loop ret -BattleTransition_InwardSpiral_: ; 70ae0 (1c:4ae0) +BattleTransition_InwardSpiral_: ; 70b53 (1c:4b53) push bc .loop ld [hl], $ff @@ -284,10 +305,17 @@ BattleTransition_InwardSpiral_: ; 70ae0 (1c:4ae0) pop bc ret +<<<<<<< HEAD +BattleTransition_OutwardSpiral_: ; 70b6c (1c:4b6c) + ld bc, -$14 + ld de, $14 + ld a, [wd09b] +======= BattleTransition_OutwardSpiral_: ; 70af9 (1c:4af9) ld bc, -SCREEN_WIDTH ld de, SCREEN_WIDTH ld a, [wOutwardSpiralTileMapPointer + 1] +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a ld l, a ld a, [wOutwardSpiralTileMapPointer] ld h, a @@ -352,14 +380,19 @@ BattleTransition_OutwardSpiral_: ; 70af9 (1c:4af9) jr .done FlashScreen: -BattleTransition_FlashScreen_: ; 70b5d (1c:4b5d) +BattleTransition_FlashScreen_: ; 70be8 (1c:4be8s) ld hl, BattleTransition_FlashScreenPalettes .loop ld a, [hli] cp $1 jr z, .done ld [rBGP], a +<<<<<<< HEAD + call Func_3021 + ld c, $2 +======= ld c, 2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a call DelayFrames jr .loop .done @@ -367,28 +400,45 @@ BattleTransition_FlashScreen_: ; 70b5d (1c:4b5d) jr nz, BattleTransition_FlashScreen_ ret -BattleTransition_FlashScreenPalettes: ; 70b72 (1c:4b72) +BattleTransition_FlashScreenPalettes: ; 70be8 (1c:4be8) db $F9,$FE,$FF,$FE,$F9,$E4,$90,$40,$00,$40,$90,$E4 db $01 ; terminator ; used for low level trainer dungeon battles +<<<<<<< HEAD +BattleTransition_Shrink: ; 70bf4 (1c:4bf4) + ld c, $9 +======= BattleTransition_Shrink: ; 70b7f (1c:4b7f) ld c, SCREEN_HEIGHT / 2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a .loop push bc xor a ld [H_AUTOBGTRANSFERENABLED], a +<<<<<<< HEAD + hlCoord 0, 7 + deCoord 0, 8 + ld bc, -$28 +======= coord hl, 0, 7 coord de, 0, 8 ld bc, -SCREEN_WIDTH * 2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a call BattleTransition_CopyTiles1 coord hl, 0, 10 coord de, 0, 9 ld bc, SCREEN_WIDTH * 2 call BattleTransition_CopyTiles1 +<<<<<<< HEAD + hlCoord 8, 0 + deCoord 9, 0 + ld bc, -$2 +======= coord hl, 8, 0 coord de, 9, 0 ld bc, -2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a call BattleTransition_CopyTiles2 coord hl, 11, 0 coord de, 10, 0 @@ -406,23 +456,40 @@ BattleTransition_Shrink: ; 70b7f (1c:4b7f) jp DelayFrames ; used for high level trainer dungeon battles +<<<<<<< HEAD +BattleTransition_Split: ; 70c40 (1c:4c40) + ld c, $9 +======= BattleTransition_Split: ; 70bca (1c:4bca) ld c, SCREEN_HEIGHT / 2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a xor a ld [H_AUTOBGTRANSFERENABLED], a .loop push bc +<<<<<<< HEAD + hlCoord 0, 16 + deCoord 0, 17 + ld bc, -$28 +======= coord hl, 0, 16 coord de, 0, 17 ld bc, -SCREEN_WIDTH * 2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a call BattleTransition_CopyTiles1 coord hl, 0, 1 coord de, 0, 0 ld bc, SCREEN_WIDTH * 2 call BattleTransition_CopyTiles1 +<<<<<<< HEAD + hlCoord 18, 0 + deCoord 19, 0 + ld bc, -$2 +======= coord hl, 18, 0 coord de, 19, 0 ld bc, -2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a call BattleTransition_CopyTiles2 coord hl, 1, 0 coord de, 0, 0 @@ -437,7 +504,7 @@ BattleTransition_Split: ; 70bca (1c:4bca) ld c, 10 jp DelayFrames -BattleTransition_CopyTiles1: ; 70c12 (1c:4c12) +BattleTransition_CopyTiles1: ; 70c88 (1c:4c88) ld a, c ld [wBattleTransitionCopyTilesOffset], a ld a, b @@ -469,7 +536,7 @@ BattleTransition_CopyTiles1: ; 70c12 (1c:4c12) jr nz, .loop2 ret -BattleTransition_CopyTiles2: ; 70c3f (1c:4c3f) +BattleTransition_CopyTiles2: ; 70cb5 (1c:4c3f) ld a, c ld [wBattleTransitionCopyTilesOffset], a ld a, b @@ -519,10 +586,17 @@ BattleTransition_CopyTiles2: ; 70c3f (1c:4c3f) ret ; used for high level wild dungeon battles +<<<<<<< HEAD +BattleTransition_VerticalStripes: ; 70cf4 (1c:4cf4) + ld c, $12 + ld hl, wTileMap + deCoord 1, 17 +======= BattleTransition_VerticalStripes: ; 70c7e (1c:4c7e) ld c, SCREEN_HEIGHT coord hl, 0, 0 coord de, 1, 17 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a xor a ld [H_AUTOBGTRANSFERENABLED], a .loop @@ -547,8 +621,13 @@ BattleTransition_VerticalStripes: ; 70c7e (1c:4c7e) jr nz, .loop jp BattleTransition_BlackScreen +<<<<<<< HEAD +BattleTransition_VerticalStripes_: ; 70d20 (1c:4d20) + ld c, $a +======= BattleTransition_VerticalStripes_: ; 70caa (1c:4caa) ld c, SCREEN_WIDTH / 2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a .loop ld [hl], $ff inc hl @@ -558,10 +637,17 @@ BattleTransition_VerticalStripes_: ; 70caa (1c:4caa) ret ; used for low level wild dungeon battles +<<<<<<< HEAD +BattleTransition_HorizontalStripes: ; 70d2a (1c:4d2a) + ld c, $14 + ld hl, wTileMap + deCoord 19, 1 +======= BattleTransition_HorizontalStripes: ; 70cb4 (1c:4cb4) ld c, SCREEN_WIDTH coord hl, 0, 0 coord de, 19, 1 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a xor a ld [H_AUTOBGTRANSFERENABLED], a .loop @@ -582,9 +668,15 @@ BattleTransition_HorizontalStripes: ; 70cb4 (1c:4cb4) jr nz, .loop jp BattleTransition_BlackScreen +<<<<<<< HEAD +BattleTransition_HorizontalStripes_: ; 70d4e (1c:4d4e) + ld c, $9 + ld de, $28 +======= BattleTransition_HorizontalStripes_: ; 70cd8 (1c:4cd8) ld c, SCREEN_HEIGHT / 2 ld de, SCREEN_WIDTH * 2 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a .loop ld [hl], $ff add hl, de @@ -595,7 +687,7 @@ BattleTransition_HorizontalStripes_: ; 70cd8 (1c:4cd8) ; used for high level wild non-dungeon battles ; makes one full circle around the screen ; by animating each half circle one at a time -BattleTransition_Circle: ; 70ce4 (1c:4ce4) +BattleTransition_Circle: ; 70d5a (1c:4d5a) call BattleTransition_FlashScreen lb bc, 0, SCREEN_WIDTH / 2 ld hl, BattleTransition_HalfCircle1 @@ -606,14 +698,14 @@ BattleTransition_Circle: ; 70ce4 (1c:4ce4) call BattleTransition_Circle_Sub1 jp BattleTransition_BlackScreen -BattleTransition_FlashScreen: ; 70cfd (1c:4cfd) +BattleTransition_FlashScreen: ; 70d73 (1c:4d73) ld b, $3 call BattleTransition_FlashScreen_ xor a ld [H_AUTOBGTRANSFERENABLED], a ret -BattleTransition_Circle_Sub1: ; 70d06 (1c:4d06) +BattleTransition_Circle_Sub1: ; 70d7c (1c:4d7c) push bc push hl ld a, b @@ -627,8 +719,13 @@ BattleTransition_Circle_Sub1: ; 70d06 (1c:4d06) jr nz, BattleTransition_Circle_Sub1 ret +<<<<<<< HEAD +BattleTransition_TransferDelay3: ; 70d8f (1c:4d8f) + ld a, $1 +======= BattleTransition_TransferDelay3: ; 70d19 (1c:4d19) ld a, 1 +>>>>>>> 1a987d1e1ab96ca9553d4253c72858057332a03a ld [H_AUTOBGTRANSFERENABLED], a call Delay3 xor a @@ -638,7 +735,7 @@ BattleTransition_TransferDelay3: ; 70d19 (1c:4d19) ; used for low level wild non-dungeon battles ; makes two half circles around the screen ; by animating both half circles at the same time -BattleTransition_DoubleCircle: ; 70d24 (1c:4d24) +BattleTransition_DoubleCircle: ; 70d9a (1c:4d9a) call BattleTransition_FlashScreen ld c, SCREEN_WIDTH / 2 ld hl, BattleTransition_HalfCircle1 @@ -666,7 +763,7 @@ BattleTransition_DoubleCircle: ; 70d24 (1c:4d24) jr nz, .loop jp BattleTransition_BlackScreen -BattleTransition_Circle_Sub2: ; 70d50 (1c:4d50) +BattleTransition_Circle_Sub2: ; 70dc6 (1c:4dc6) ld [wBattleTransitionCircleScreenQuadrantY], a ld a, [hli] ld [wBattleTransitionCircleScreenQuadrantX], a @@ -679,7 +776,7 @@ BattleTransition_Circle_Sub2: ; 70d50 (1c:4d50) ld l, a jp BattleTransition_Circle_Sub3 -BattleTransition_HalfCircle1: ; 70d61 (1c:4d61) +BattleTransition_HalfCircle1: ; 70dd7 (1c:4dd7) db $01 dw BattleTransition_CircleData1 dwCoord 18, 6 @@ -720,7 +817,7 @@ BattleTransition_HalfCircle1: ; 70d61 (1c:4d61) dw BattleTransition_CircleData1 dwCoord 1, 6 -BattleTransition_HalfCircle2: ; 70d93 (1c:4d93) +BattleTransition_HalfCircle2: ; 70d93 (1c:4e09) db $00 dw BattleTransition_CircleData1 dwCoord 1, 11 @@ -761,7 +858,7 @@ BattleTransition_HalfCircle2: ; 70d93 (1c:4d93) dw BattleTransition_CircleData1 dwCoord 18, 11 -BattleTransition_Circle_Sub3: ; 70dc5 (1c:4dc5) +BattleTransition_Circle_Sub3: ; 70e3b (1c:4e3b) push hl ld a, [de] ld c, a @@ -806,17 +903,17 @@ BattleTransition_Circle_Sub3: ; 70dc5 (1c:4dc5) jr nz, .loop2 jr BattleTransition_Circle_Sub3 -BattleTransition_CircleData1: ; 70dfe (1c:4dfe) +BattleTransition_CircleData1: ; 70e74 (1c:4e74) db $02,$03,$05,$04,$09,$FF -BattleTransition_CircleData2: ; 70e04 (1c:4e04) +BattleTransition_CircleData2: ; 70e7a (1c:4e7a) db $01,$01,$02,$02,$04,$02,$04,$02,$03,$FF -BattleTransition_CircleData3: ; 70e0e (1c:4e0e) +BattleTransition_CircleData3: ; 70e84 (1c:4e84) db $02,$01,$03,$01,$04,$01,$04,$01,$04,$01,$03,$01,$02,$01,$01,$01,$01,$FF -BattleTransition_CircleData4: ; 70e20 (1c:4e20) +BattleTransition_CircleData4: ; 70e97 (1c:4e97) db $04,$01,$04,$00,$03,$01,$03,$00,$02,$01,$02,$00,$01,$FF -BattleTransition_CircleData5: ; 70e2e (1c:4e2e) +BattleTransition_CircleData5: ; 70ea3 (1c:4ea3) db $04,$00,$03,$00,$03,$00,$02,$00,$02,$00,$01,$00,$01,$00,$01,$FF |