From d87c2feced002b480e884e9b739817d25c725ac9 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Tue, 8 Dec 2020 23:18:24 +0700 Subject: Disassemble battle transitions --- data/predef_pointers.inc | 2 +- engine/battle/battle_transitions.asm | 614 +++++++++++++++++++++++++++++++++++ layout.link | 2 + shim.sym | 1 - 4 files changed, 617 insertions(+), 2 deletions(-) create mode 100644 engine/battle/battle_transitions.asm diff --git a/data/predef_pointers.inc b/data/predef_pointers.inc index cd1e2b2..d71e4d7 100644 --- a/data/predef_pointers.inc +++ b/data/predef_pointers.inc @@ -90,7 +90,7 @@ GiveItemPredef:: add_predef CheckSGB add_predef Function928b add_predef Function8786 - add_predef Function8c4be + add_predef DoBattleTransition add_predef Function8c9c6 add_predef Function8c940 ; 50 add_predef PlayBattleAnim diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm new file mode 100644 index 0000000..34d395f --- /dev/null +++ b/engine/battle/battle_transitions.asm @@ -0,0 +1,614 @@ +INCLUDE "constants.asm" + +SECTION "engine/battle/battle_transitions.asm", ROMX + +DoBattleTransition: ; 23:44be + ld a, %11100011 + ldh [rLCDC], a + call Func44e6 + +.loop ; 44c5 + ld a, [wJumptableIndex] + bit 7, a ; BATTLETRANSITION_END? + jr nz, .done + call Func455d + call DelayFrame + jr .loop + +.done + ld a, $FF + ldh [rBGP], a ; cut to black + xor a + ldh [hLCDCPointer], a + ldh [hLYOverrideStart], a + ldh [hLYOverrideEnd], a + ldh [hSCY], a + ld a, %10100011 + ldh [rLCDC], a + ret + +Func44e6: + callba ReanchorBGMap_NoOAMUpdate + call UpdateSprites + call Func450c + call WaitBGMap + + ld a, SCREEN_HEIGHT_PX + ldh [hWY], a + call DelayFrame + xor a + ldh [hBGMapMode], a + ld hl, wJumptableIndex + xor a + ld [hli], a + ld [hli], a + ld [hl], a + call Func48c4 + ret + +Func450c: + ld hl, wOverworldMapBlocks + ld bc, $28 tiles +.loop + ld [hl], -1 + inc hl + dec bc + ld a, c + or b + jr nz, .loop + + ld de, wOverworldMapBlocks + hlbgcoord 0, 0, vBGMap0 + ld b, BANK(@) + ld c, $28 + call Request2bpp + + ld de, Data453d + ldh a, [hOverworldFlashlightEffect] + and a + jr z, .skip + ld de, Data454d +.skip + ld hl, vChars0 tile $FF + ld b, BANK(@) + ld c, $01 + call Request2bpp + ret + +Data453d: + rept 16 + db $ff + endr + +Data454d: + rept 8 + db $00, $ff + endr + +Func455d: + jumptable .Jumptable, wJumptableIndex + +.Jumptable ; 456c + dw Func45b6 ; 00 + + dw Func4865 ; 01 ! + dw Func45d8 ; 02 + dw Func45e2 ; 03 + dw Func45e2 ; 04 + dw Func45e2 ; 05 + dw Func4614 ; 06 + dw Func462a ; 07 + + dw Func4865 ; 08 + dw Func45d8 ; 09 + dw Func45e2 ; 0a + dw Func45e2 ; 0b + dw Func45e2 ; 0c + dw Func465f ; 0d + dw Func4676 ; 0e + + dw Func4865 ; 0f ! + dw Func45d8 ; 10 + dw Func45e2 ; 11 + dw Func45e2 ; 12 + dw Func45e2 ; 13 + dw Func46a6 ; 14 + dw Func46b5 ; 15 + + dw Func4865 ; 16 ! + dw Func45d8 ; 17 + dw Func45e2 ; 18 + dw Func45e2 ; 19 + dw Func45e2 ; 1a + dw Func46da ; 1b + dw Func46e2 ; 1c + + dw Func4865 ; 1d ! + dw Func45d8 ; 1e + dw Func45e2 ; 1f + dw Func45e2 ; 20 + dw Func45e2 ; 21 + dw Func480b ; 22 + dw Func4818 ; 23 + + dw Func45ca ; 24 + +Func45b6: + ldh a, [hVBlankCounter] + and a, %00000011 + ld e, a + ld d, 0 + ld hl, .StartingPoints + add hl, de + ld a, [hl] + ld [wJumptableIndex], a + ret + +.StartingPoints ;45c6 + db $01 + db $1D + db $0F + db $16 + +Func45ca: + call ClearSprites + ld a, $80 ; BATTLE_TRANSITION_END + ld [wJumptableIndex], a + ret + +Func45d3: + ld hl, wJumptableIndex + inc [hl] + ret + +Func45d8: + call Func45d3 + xor a + ld [wFlyDestination], a + ldh [hBGMapMode], a + ret + +Func45e2: + call Func45ea + ret nc + call Func45d3 + ret + +Func45ea: + ld hl, wFlyDestination + ld a, [hl] + inc [hl] + srl a + ld e, a + ld d, $00 + ld hl, .pals + add hl, de + ld a, [hl] + cp %00000001 + jr z, .done + ldh [rBGP], a + and a + ret +.done + xor a + ld [wFlyDestination], a + scf + ret +.pals + db $f9, $fe, $ff, $fe, $f9, $e4, $90, $40, $00, $40, $90, $e4, $01 + +Func4614: + call Func45d3 + ld a, LOW(rSCX) + ldh [hLCDCPointer], a + xor a + ldh [hLYOverrideStart], a + ld a, SCREEN_HEIGHT_PX + ldh [hLYOverrideEnd], a + xor a + ld [wFlyDestination], a + ld [wcb60], a + ret +Func462a: + ld a, [wFlyDestination] + cp $60 + jr nc, .end + call Func463b + ret +.end + ld a, $24 + ld [wJumptableIndex], a + ret + +Func463b: + ld hl, wcb60 + ld a, [hl] + inc [hl] + ld hl, wFlyDestination + ld d, [hl] + add [hl] + ld [hl], a + ld a, SCREEN_HEIGHT_PX + ld bc, wLYOverrides ; ly override backups? + ld e, 0 +.loop + push af + push de + ld a, e + call Func48cf + ld [bc], a + inc bc + pop de + ld a, e + add $02 + ld e, a + pop af + dec a + jr nz, .loop + ret + +Func465f: + call Func45d3 + ld a, LOW(rSCY) + ldh [hLCDCPointer], a + xor a + ldh [hLYOverrideStart], a + ld a, SCREEN_HEIGHT_PX + ldh [hLYOverrideEnd], a + xor a + ld [wFlyDestination], a + ld a, $91 + ldh [hSCY], a + ret + +Func4676: + ld hl, wFlyDestination + ld a, [hl] + cp $48 + jr nc, .end + inc [hl] + srl a + ld e, a + ld d, $00 + ld hl, wLYOverrides + add hl, de + call Func4692 + ret +.end + ld a, $24 + ld [wJumptableIndex], a + ret + +Func4692: + ld c, $04 + ld de, $0024 + ld b, $91 +.jr4699 + ld a, b + sub l + ld [hl], a + add hl, de + dec c + jr nz, .jr4699 + ld hl, $c691 + ld [hl], $91 + ret + +Func46a6: + call Func45d3 + ld a, $43 + ldh [hLCDCPointer], a + xor a + ld [wFlyDestination], a + call Func48c4 + ret + +Func46b5: + ld hl, wFlyDestination + ld a, [hl] + cp $50 + jr nc, .finished + inc [hl] + ld e, a + xor $ff + inc a + ld d, a + call Func46cd + ret +.finished + ld a, $24 + ld [wJumptableIndex], a + ret + + +Func46cd: + ld hl, wLYOverrides + ld c, $48 +.loop + ld [hl], e + inc hl + ld [hl], d + inc hl + dec c + jr nz, .loop + ret + +Func46da: + call Func45d3 + xor a + ld [wFlyDestination], a + ret + +Func46e2: + xor a + ldh [hBGMapMode], a + ld a, [wFlyDestination] + ld e, a + ld d, $00 + ld hl, .data4723 + add hl, de + add hl, de + add hl, de + add hl, de + add hl, de + ld a, [hli] + cp -1 + jr z, .done + ld [wcb60], a + call .load + ld a, $01 + ldh [hBGMapMode], a + call DelayFrame + call DelayFrame + ld hl, wFlyDestination + inc [hl] + ret +.done + ld a, $01 + ldh [hBGMapMode], a + call DelayFrame + call DelayFrame + call DelayFrame + xor a + ldh [hBGMapMode], a + ld a, $24 + ld [wJumptableIndex], a + ret + +.data4723 + db $00, $cb, $47, $19, $c3 + db $00, $d1, $47, $dc, $c2 + db $00, $db, $47, $a1, $c2 + db $00, $ed, $47, $a5, $c2 + db $00, $fb, $47, $a9, $c2 + db $01, $fb, $47, $aa, $c2 + db $01, $ed, $47, $ae, $c2 + db $01, $db, $47, $b2, $c2 + db $01, $d1, $47, $ef, $c2 + db $01, $cb, $47, $2a, $c3 + db $03, $cb, $47, $8e, $c3 + db $03, $d1, $47, $cb, $c3 + db $03, $db, $47, $06, $c4 + db $03, $ed, $47, $02, $c4 + db $03, $fb, $47, $fe, $c3 + db $02, $fb, $47, $fd, $c3 + db $02, $ed, $47, $f9, $c3 + db $02, $db, $47, $f5, $c3 + db $02, $d1, $47, $b8, $c3 + db $02, $cb, $47, $7d, $c3 + db -1 + +.load + ld a, [hli] + ld e, a + ld a, [hli] + ld d, a + ld a, [hli] + ld h, [hl] + ld l, a +.loop + push hl + ld a, [de] + ld c, a + inc de +.loop1 + ld [hl], $ff + ld a, [wcb60] + bit 0, a + jr z, .leftside + inc hl + jr .okay1 +.leftside + dec hl +.okay1 + dec c + jr nz, .loop1 + pop hl + ld a, [wcb60] + bit 1, a + ld bc, SCREEN_WIDTH + jr z, .upper + ld bc, -SCREEN_WIDTH +.upper + add hl, bc + ld a, [de] + inc de + cp -1 + ret z + and a + jr z, .loop + ld c, a +.loop2 + ld a, [wcb60] + bit 0, a + jr z, .leftside2 + dec hl + jr .okay2 +.leftside2 + inc hl +.okay2 + dec c + jr nz, .loop2 + jr .loop + +.wedge1 db 2, 3, 5, 4, 9, -1 +.wedge2 db 1, 1, 2, 2, 4, 2, 4, 2, 3, -1 +.wedge3 db 2, 1, 3, 1, 4, 1, 4, 1, 4, 1, 3, 1, 2, 1, 1, 1, 1, -1 +.wedge4 db 4, 1, 4, 0, 3, 1, 3, 0, 2, 1, 2, 0, 1, -1 +.wedge5 db 4, 0, 3, 0, 3, 0, 2, 0, 2, 0, 1, 0, 1, 0, 1, -1 + +Func480b: + call Func45d3 + ld a, $10 + ld [wFlyDestination], a + ld a, $01 + ldh [hBGMapMode], a + ret + +Func4818: + ld hl, wFlyDestination + ld a, [hl] + and a + jr z, .done + dec [hl] + ld c, $0c +.loop + push bc + call Func4841 + pop bc + dec c + jr nz, .loop + ret + +.done + ld a, 1 + ldh [hBGMapMode], a + call DelayFrame + call DelayFrame + call DelayFrame + xor a + ldh [hBGMapMode], a + ld a, $24 + ld [wJumptableIndex], a + ret + + +Func4841: +.y_loop + call Random + cp $12 + jr nc, .y_loop + ld b, a + +.x_loop + call Random + cp SCREEN_WIDTH + jr nc, .x_loop + ld c, a + hlcoord 0, -1 + ld de, SCREEN_WIDTH + inc b + +.row_loop + add hl, de + dec b + jr nz, .row_loop + add hl, bc + ld a, [hl] + cp -1 + jr z, .y_loop + ld [hl], $ff + ret + +Func4865: + xor a + ldh [hBGMapMode], a + hlcoord 2, 1 + ld de, .PokeBallTransition + ld b, SCREEN_WIDTH - 4 +.tile_loop + push hl + ld c, 2 +.row_loop + push hl + ld a, [de] + inc de +.col_loop + and a + jr z, .done + sla a + jr nc, .no_load + ld [hl], $ff +.no_load + inc hl + jr .col_loop +.done + pop hl + push bc + ld bc, (SCREEN_WIDTH - 4) / 2 + add hl, bc + pop bc + dec c + jr nz, .row_loop + pop hl + push bc + ld bc, SCREEN_WIDTH + add hl, bc + pop bc + dec b + jr nz, .tile_loop + ld a, $01 + ldh [hBGMapMode], a + call DelayFrame + call DelayFrame + call Func45d3 + ret +.PokeBallTransition: + db $00, $00, $03, $c0, $0f, $f0, $1f, $f8, $3f, $fc, $3f, $fc, $7e, $7e, $7c, $3e + db $42, $42, $41, $82, $20, $04, $20, $04, $10, $08, $0c, $30, $03, $c0, $00, $00 + +Func48c4: + ld hl, wLYOverrides + xor a + ld c, SCREEN_HEIGHT_PX +.wipe + ld [hli], a + dec c + jr nz, .wipe + ret + +Func48cf: + calc_sine_wave .sine_table +.sine_table + dw $0000 + dw $0019 + dw $0032 + dw $004A + dw $0062 + dw $0079 + dw $008E + dw $00A2 + dw $00B5 + dw $00C6 + dw $00D5 + dw $00E2 + dw $00ED + dw $00F5 + dw $00FB + dw $00FF + dw $0100 + dw $00FF + dw $00FB + dw $00F5 + dw $00ED + dw $00E2 + dw $00D5 + dw $00C6 + dw $00B5 + dw $00A2 + dw $008E + dw $0079 + dw $0062 + dw $004A + dw $0032 + dw $0019 diff --git a/layout.link b/layout.link index 4c0b0a3..e03d166 100644 --- a/layout.link +++ b/layout.link @@ -368,6 +368,8 @@ ROMX $23 "engine/palettes.asm@Overworld fade" org $43d1 "engine/palettes.asm@Palette fading, part 2?" + org $44be + "engine/battle/battle_transitions.asm" org $60cc "gfx.asm@Pokemon Party Sprites" org $722a diff --git a/shim.sym b/shim.sym index 38cc5de..a34e54f 100755 --- a/shim.sym +++ b/shim.sym @@ -124,7 +124,6 @@ 23:4335 _UpdateTimePals 23:4354 ReplaceTimeOfDayPals 23:4370 GetTimePalette -23:44BE Function8c4be 23:4940 Function8c940 23:49C6 Function8c9c6 23:4CFD InitEffectObject -- cgit v1.2.3 From 66d09e8c345fe20cb3ebecc11f0ad3dab4c38126 Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Wed, 9 Dec 2020 00:04:13 +0700 Subject: Match battle transitions labels to pokegold --- engine/battle/battle_transitions.asm | 312 +++++++++++++++++++---------------- ram/wram.asm | 5 + 2 files changed, 177 insertions(+), 140 deletions(-) diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm index 34d395f..ba3de01 100644 --- a/engine/battle/battle_transitions.asm +++ b/engine/battle/battle_transitions.asm @@ -1,17 +1,30 @@ INCLUDE "constants.asm" +; BattleTransitionJumptable.Jumptable indexes +BATTLETRANSITION_WAVY EQU $01 +BATTLETRANSITION_WIPE EQU $08 +BATTLETRANSITION_SCANLINE EQU $0F +BATTLETRANSITION_SPIN EQU $16 +BATTLETRANSITION_SCATTER EQU $1D + +BATTLETRANSITION_FINISH EQU $24 +BATTLETRANSITION_END EQU $80 + +BATTLETRANSITION_SQUARE EQU $fe +BATTLETRANSITION_BLACK EQU $ff + SECTION "engine/battle/battle_transitions.asm", ROMX DoBattleTransition: ; 23:44be ld a, %11100011 ldh [rLCDC], a - call Func44e6 + call .InitGFX .loop ; 44c5 ld a, [wJumptableIndex] bit 7, a ; BATTLETRANSITION_END? jr nz, .done - call Func455d + call BattleTransitionJumptable call DelayFrame jr .loop @@ -27,10 +40,10 @@ DoBattleTransition: ; 23:44be ldh [rLCDC], a ret -Func44e6: +.InitGFX: callba ReanchorBGMap_NoOAMUpdate call UpdateSprites - call Func450c + call ConvertTrainerBattlePokeballTilesTo2bpp call WaitBGMap ld a, SCREEN_HEIGHT_PX @@ -43,14 +56,14 @@ Func44e6: ld [hli], a ld [hli], a ld [hl], a - call Func48c4 + call WipeLYOverrides ret -Func450c: +ConvertTrainerBattlePokeballTilesTo2bpp: ld hl, wOverworldMapBlocks ld bc, $28 tiles .loop - ld [hl], -1 + ld [hl], BATTLETRANSITION_BLACK inc hl dec bc ld a, c @@ -63,77 +76,82 @@ Func450c: ld c, $28 call Request2bpp - ld de, Data453d + ld de, .BlackTile ldh a, [hOverworldFlashlightEffect] and a jr z, .skip - ld de, Data454d + ld de, .GreyTile .skip - ld hl, vChars0 tile $FF + ld hl, vChars0 tile BATTLETRANSITION_BLACK ld b, BANK(@) ld c, $01 call Request2bpp ret -Data453d: +.BlackTile: rept 16 db $ff endr -Data454d: +.GreyTile: rept 8 db $00, $ff endr -Func455d: +BattleTransitionJumptable: jumptable .Jumptable, wJumptableIndex -.Jumptable ; 456c - dw Func45b6 ; 00 - - dw Func4865 ; 01 ! - dw Func45d8 ; 02 - dw Func45e2 ; 03 - dw Func45e2 ; 04 - dw Func45e2 ; 05 - dw Func4614 ; 06 - dw Func462a ; 07 - - dw Func4865 ; 08 - dw Func45d8 ; 09 - dw Func45e2 ; 0a - dw Func45e2 ; 0b - dw Func45e2 ; 0c - dw Func465f ; 0d - dw Func4676 ; 0e - - dw Func4865 ; 0f ! - dw Func45d8 ; 10 - dw Func45e2 ; 11 - dw Func45e2 ; 12 - dw Func45e2 ; 13 - dw Func46a6 ; 14 - dw Func46b5 ; 15 - - dw Func4865 ; 16 ! - dw Func45d8 ; 17 - dw Func45e2 ; 18 - dw Func45e2 ; 19 - dw Func45e2 ; 1a - dw Func46da ; 1b - dw Func46e2 ; 1c - - dw Func4865 ; 1d ! - dw Func45d8 ; 1e - dw Func45e2 ; 1f - dw Func45e2 ; 20 - dw Func45e2 ; 21 - dw Func480b ; 22 - dw Func4818 ; 23 - - dw Func45ca ; 24 - -Func45b6: +.Jumptable ; 456c + dw StartTrainerBattle_DetermineWhichAnimation ; 00 + +; Wavy outro + dw StartTrainerBattle_LoadPokeBallGraphics ; 01 + dw StartTrainerBattle_SetUpBGMap ; 02 + dw StartTrainerBattle_Flash ; 03 + dw StartTrainerBattle_Flash ; 04 + dw StartTrainerBattle_Flash ; 05 + dw StartTrainerBattle_SetUpForWavyOutro ; 06 + dw StartTrainerBattle_SineWave ; 07 + +; Wipe outro - unused + dw StartTrainerBattle_LoadPokeBallGraphics ; 08 + dw StartTrainerBattle_SetUpBGMap ; 09 + dw StartTrainerBattle_Flash ; 0a + dw StartTrainerBattle_Flash ; 0b + dw StartTrainerBattle_Flash ; 0c + dw StartTrainerBattle_SetUpForWipeOutro ; 0d + dw StartTrainerBattle_WipeOutro ; 0e + +; Scanline outro + dw StartTrainerBattle_LoadPokeBallGraphics ; 0f + dw StartTrainerBattle_SetUpBGMap ; 10 + dw StartTrainerBattle_Flash ; 11 + dw StartTrainerBattle_Flash ; 12 + dw StartTrainerBattle_Flash ; 13 + dw StartTrainerBattle_SetUpForScanlineOutro ; 14 + dw StartTrainerBattle_Scanlines ; 15 + +; Spin clockwise + dw StartTrainerBattle_LoadPokeBallGraphics ; 16 + dw StartTrainerBattle_SetUpBGMap ; 17 + dw StartTrainerBattle_Flash ; 18 + dw StartTrainerBattle_Flash ; 19 + dw StartTrainerBattle_Flash ; 1a + dw StartTrainerBattle_SetUpForSpinOutro ; 1b + dw StartTrainerBattle_SpinToBlack ; 1c + +; Random scatter + dw StartTrainerBattle_LoadPokeBallGraphics ; 1d + dw StartTrainerBattle_SetUpBGMap ; 1e + dw StartTrainerBattle_Flash ; 1f + dw StartTrainerBattle_Flash ; 20 + dw StartTrainerBattle_Flash ; 21 + dw StartTrainerBattle_SetUpForRandomScatterOutro ; 22 + dw StartTrainerBattle_SpeckleToBlack ; 23 + + dw StartTrainerBattle_Finish ; 24 + +StartTrainerBattle_DetermineWhichAnimation: ldh a, [hVBlankCounter] and a, %00000011 ld e, a @@ -145,37 +163,37 @@ Func45b6: ret .StartingPoints ;45c6 - db $01 - db $1D - db $0F - db $16 + db BATTLETRANSITION_WAVY + db BATTLETRANSITION_SCATTER + db BATTLETRANSITION_SCANLINE + db BATTLETRANSITION_SPIN -Func45ca: +StartTrainerBattle_Finish: call ClearSprites - ld a, $80 ; BATTLE_TRANSITION_END + ld a, BATTLETRANSITION_END ld [wJumptableIndex], a ret -Func45d3: +StartTrainerBattle_NextScene: ld hl, wJumptableIndex inc [hl] ret -Func45d8: - call Func45d3 +StartTrainerBattle_SetUpBGMap: + call StartTrainerBattle_NextScene xor a - ld [wFlyDestination], a + ld [wcb5f], a ldh [hBGMapMode], a ret -Func45e2: - call Func45ea +StartTrainerBattle_Flash: + call .DoFlashAnimation ret nc - call Func45d3 + call StartTrainerBattle_NextScene ret -Func45ea: - ld hl, wFlyDestination +.DoFlashAnimation: + ld hl, wcb5f ld a, [hl] inc [hl] srl a @@ -191,14 +209,14 @@ Func45ea: ret .done xor a - ld [wFlyDestination], a + ld [wcb5f], a scf ret .pals db $f9, $fe, $ff, $fe, $f9, $e4, $90, $40, $00, $40, $90, $e4, $01 -Func4614: - call Func45d3 +StartTrainerBattle_SetUpForWavyOutro: + call StartTrainerBattle_NextScene ld a, LOW(rSCX) ldh [hLCDCPointer], a xor a @@ -206,36 +224,36 @@ Func4614: ld a, SCREEN_HEIGHT_PX ldh [hLYOverrideEnd], a xor a - ld [wFlyDestination], a + ld [wcb5f], a ld [wcb60], a ret -Func462a: - ld a, [wFlyDestination] +StartTrainerBattle_SineWave: + ld a, [wcb5f] cp $60 jr nc, .end - call Func463b + call .DoSineWave ret .end - ld a, $24 + ld a, BATTLETRANSITION_FINISH ld [wJumptableIndex], a ret -Func463b: +.DoSineWave: ld hl, wcb60 ld a, [hl] inc [hl] - ld hl, wFlyDestination + ld hl, wcb5f ld d, [hl] add [hl] ld [hl], a ld a, SCREEN_HEIGHT_PX - ld bc, wLYOverrides ; ly override backups? + ld bc, wLYOverrides ld e, 0 .loop push af push de ld a, e - call Func48cf + call StartTrainerBattle_DrawSineWave ld [bc], a inc bc pop de @@ -247,8 +265,8 @@ Func463b: jr nz, .loop ret -Func465f: - call Func45d3 +StartTrainerBattle_SetUpForWipeOutro: + call StartTrainerBattle_NextScene ld a, LOW(rSCY) ldh [hLCDCPointer], a xor a @@ -256,13 +274,13 @@ Func465f: ld a, SCREEN_HEIGHT_PX ldh [hLYOverrideEnd], a xor a - ld [wFlyDestination], a - ld a, $91 + ld [wcb5f], a + ld a, SCREEN_HEIGHT_PX + 1 ldh [hSCY], a ret -Func4676: - ld hl, wFlyDestination +StartTrainerBattle_WipeOutro: + ld hl, wcb5f ld a, [hl] cp $48 jr nc, .end @@ -275,7 +293,7 @@ Func4676: call Func4692 ret .end - ld a, $24 + ld a, BATTLETRANSITION_FINISH ld [wJumptableIndex], a ret @@ -283,45 +301,44 @@ Func4692: ld c, $04 ld de, $0024 ld b, $91 -.jr4699 +.loop ld a, b sub l ld [hl], a add hl, de dec c - jr nz, .jr4699 + jr nz, .loop ld hl, $c691 ld [hl], $91 ret -Func46a6: - call Func45d3 - ld a, $43 +StartTrainerBattle_SetUpForScanlineOutro: + call StartTrainerBattle_NextScene + ld a, LOW(rSCX) ldh [hLCDCPointer], a xor a - ld [wFlyDestination], a - call Func48c4 + ld [wcb5f], a + call WipeLYOverrides ret -Func46b5: - ld hl, wFlyDestination +StartTrainerBattle_Scanlines: + ld hl, wcb5f ld a, [hl] cp $50 jr nc, .finished inc [hl] ld e, a - xor $ff + xor -1 ; switch scroll direction inc a ld d, a - call Func46cd + call .SplitEvenOdd ret .finished - ld a, $24 + ld a, BATTLETRANSITION_FINISH ld [wJumptableIndex], a ret - -Func46cd: +.SplitEvenOdd: ld hl, wLYOverrides ld c, $48 .loop @@ -333,37 +350,35 @@ Func46cd: jr nz, .loop ret -Func46da: - call Func45d3 +StartTrainerBattle_SetUpForSpinOutro: + call StartTrainerBattle_NextScene xor a - ld [wFlyDestination], a + ld [wcb5f], a ret -Func46e2: +StartTrainerBattle_SpinToBlack: xor a ldh [hBGMapMode], a - ld a, [wFlyDestination] + ld a, [wcb5f] ld e, a - ld d, $00 + ld d, 0 ld hl, .data4723 +rept 5 add hl, de - add hl, de - add hl, de - add hl, de - add hl, de +endr ld a, [hli] cp -1 - jr z, .done + jr z, .end ld [wcb60], a call .load - ld a, $01 + ld a, 1 ldh [hBGMapMode], a call DelayFrame call DelayFrame - ld hl, wFlyDestination + ld hl, wcb5f inc [hl] ret -.done +.end ld a, $01 ldh [hBGMapMode], a call DelayFrame @@ -371,7 +386,7 @@ Func46e2: call DelayFrame xor a ldh [hBGMapMode], a - ld a, $24 + ld a, BATTLETRANSITION_FINISH ld [wJumptableIndex], a ret @@ -457,24 +472,24 @@ Func46e2: .wedge4 db 4, 1, 4, 0, 3, 1, 3, 0, 2, 1, 2, 0, 1, -1 .wedge5 db 4, 0, 3, 0, 3, 0, 2, 0, 2, 0, 1, 0, 1, 0, 1, -1 -Func480b: - call Func45d3 +StartTrainerBattle_SetUpForRandomScatterOutro: + call StartTrainerBattle_NextScene ld a, $10 - ld [wFlyDestination], a - ld a, $01 + ld [wcb5f], a + ld a, 1 ldh [hBGMapMode], a ret -Func4818: - ld hl, wFlyDestination +StartTrainerBattle_SpeckleToBlack: + ld hl, wcb5f ld a, [hl] and a jr z, .done dec [hl] - ld c, $0c + ld c, 12 .loop push bc - call Func4841 + call .BlackOutRandomTile pop bc dec c jr nz, .loop @@ -488,12 +503,11 @@ Func4818: call DelayFrame xor a ldh [hBGMapMode], a - ld a, $24 + ld a, BATTLETRANSITION_FINISH ld [wJumptableIndex], a ret - -Func4841: +.BlackOutRandomTile: .y_loop call Random cp $12 @@ -520,7 +534,7 @@ Func4841: ld [hl], $ff ret -Func4865: +StartTrainerBattle_LoadPokeBallGraphics: xor a ldh [hBGMapMode], a hlcoord 2, 1 @@ -561,13 +575,31 @@ Func4865: ldh [hBGMapMode], a call DelayFrame call DelayFrame - call Func45d3 + call StartTrainerBattle_NextScene ret .PokeBallTransition: - db $00, $00, $03, $c0, $0f, $f0, $1f, $f8, $3f, $fc, $3f, $fc, $7e, $7e, $7c, $3e - db $42, $42, $41, $82, $20, $04, $20, $04, $10, $08, $0c, $30, $03, $c0, $00, $00 - -Func48c4: + ; 16x16 overlay of a Poke Ball +pusho +opt b.X ; . = 0, X = 1 + bigdw %................ + bigdw %......XXXX...... + bigdw %....XXXXXXXX.... + bigdw %...XXXXXXXXXX... + bigdw %..XXXXXXXXXXXX.. + bigdw %..XXXXXXXXXXXX.. + bigdw %.XXXXXX..XXXXXX. + bigdw %.XXXXX....XXXXX. + bigdw %.X....X..X....X. + bigdw %.X.....XX.....X. + bigdw %..X..........X.. + bigdw %..X..........X.. + bigdw %...X........X... + bigdw %....XX....XX.... + bigdw %......XXXX...... + bigdw %................ +popo + +WipeLYOverrides: ld hl, wLYOverrides xor a ld c, SCREEN_HEIGHT_PX @@ -577,7 +609,7 @@ Func48c4: jr nz, .wipe ret -Func48cf: +StartTrainerBattle_DrawSineWave: calc_sine_wave .sine_table .sine_table dw $0000 diff --git a/ram/wram.asm b/ram/wram.asm index 9690975..4405a16 100644 --- a/ram/wram.asm +++ b/ram/wram.asm @@ -328,7 +328,12 @@ wNamedObjectTypeBuffer:: db SECTION "CB5E", WRAM0[$CB5E] wJumptableIndex:: db + +UNION +wcb5f:: db +NEXTU wFlyDestination:: db +ENDU wcb60:: ds 1 wcb61:: ds 1 -- cgit v1.2.3 From dbab7a1b7076e40625754f825b4183433ee7ba9d Mon Sep 17 00:00:00 2001 From: Zumi Daxuya Date: Wed, 9 Dec 2020 00:09:02 +0700 Subject: Other battle transition tile type not needed --- engine/battle/battle_transitions.asm | 1 - 1 file changed, 1 deletion(-) diff --git a/engine/battle/battle_transitions.asm b/engine/battle/battle_transitions.asm index ba3de01..9a84387 100644 --- a/engine/battle/battle_transitions.asm +++ b/engine/battle/battle_transitions.asm @@ -10,7 +10,6 @@ BATTLETRANSITION_SCATTER EQU $1D BATTLETRANSITION_FINISH EQU $24 BATTLETRANSITION_END EQU $80 -BATTLETRANSITION_SQUARE EQU $fe BATTLETRANSITION_BLACK EQU $ff SECTION "engine/battle/battle_transitions.asm", ROMX -- cgit v1.2.3