pokecrystal-board/engine/movie/trade_animation.asm

1451 lines
27 KiB
NASM
Raw Normal View History

DEF TRADEANIM_RIGHT_ARROW EQU "▶" ; $ed
DEF TRADEANIM_LEFT_ARROW EQU "▼" ; $ee
2018-01-11 09:00:01 -08:00
; TradeAnim_TubeAnimJumptable.Jumptable indexes
const_def
const TRADEANIMSTATE_0 ; 0
const TRADEANIMSTATE_1 ; 1
const TRADEANIMSTATE_2 ; 2
const TRADEANIMSTATE_3 ; 3
DEF TRADEANIMJUMPTABLE_LENGTH EQU const_value
2018-01-11 09:00:01 -08:00
MACRO add_tradeanim
\1_TradeCmd:
dw \1
ENDM
MACRO tradeanim
db (\1_TradeCmd - DoTradeAnimation.Jumptable) / 2
ENDM
2018-06-24 07:09:41 -07:00
TradeAnimation:
2015-11-22 21:21:21 -08:00
xor a
ld [wUnusedTradeAnimPlayEvolutionMusic], a
2015-11-22 21:21:21 -08:00
ld hl, wPlayerTrademonSenderName
ld de, wOTTrademonSenderName
2016-01-09 13:28:22 -08:00
call LinkTradeAnim_LoadTradePlayerNames
2015-11-22 21:21:21 -08:00
ld hl, wPlayerTrademonSpecies
ld de, wOTTrademonSpecies
2016-01-09 13:28:22 -08:00
call LinkTradeAnim_LoadTradeMonSpecies
ld de, .script
jr RunTradeAnimScript
2015-11-22 21:21:21 -08:00
.script
tradeanim TradeAnim_SetupGivemonScroll
tradeanim TradeAnim_ShowGivemonData
tradeanim TradeAnim_DoGivemonScroll
tradeanim TradeAnim_Wait80
tradeanim TradeAnim_Wait96
tradeanim TradeAnim_Poof
tradeanim TradeAnim_RockingBall
tradeanim TradeAnim_EnterLinkTube1
tradeanim TradeAnim_WaitAnim
tradeanim TradeAnim_BulgeThroughTube
tradeanim TradeAnim_WaitAnim
tradeanim TradeAnim_TextboxScrollStart
tradeanim TradeAnim_GiveTrademonSFX
tradeanim TradeAnim_TubeToOT1
tradeanim TradeAnim_SentToOTText
tradeanim TradeAnim_ScrollOutRight
tradeanim TradeAnim_OTSendsText1
tradeanim TradeAnim_OTBidsFarewell
tradeanim TradeAnim_Wait40
tradeanim TradeAnim_ScrollOutRight
tradeanim TradeAnim_GetTrademonSFX
tradeanim TradeAnim_TubeToPlayer1
tradeanim TradeAnim_EnterLinkTube1
tradeanim TradeAnim_DropBall
tradeanim TradeAnim_ExitLinkTube
tradeanim TradeAnim_WaitAnim
tradeanim TradeAnim_ShowGetmonData
tradeanim TradeAnim_Poof
tradeanim TradeAnim_WaitAnim
tradeanim TradeAnim_FrontpicScrollStart
tradeanim TradeAnim_AnimateFrontpic
tradeanim TradeAnim_Wait80IfOTEgg
tradeanim TradeAnim_TextboxScrollStart
tradeanim TradeAnim_TakeCareOfText
tradeanim TradeAnim_ScrollOutRight
tradeanim TradeAnim_End
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnimationPlayer2:
2015-11-22 21:21:21 -08:00
xor a
ld [wUnusedTradeAnimPlayEvolutionMusic], a
2015-11-22 21:21:21 -08:00
ld hl, wOTTrademonSenderName
ld de, wPlayerTrademonSenderName
2016-01-09 13:28:22 -08:00
call LinkTradeAnim_LoadTradePlayerNames
2015-11-22 21:21:21 -08:00
ld hl, wOTTrademonSpecies
ld de, wPlayerTrademonSpecies
2016-01-09 13:28:22 -08:00
call LinkTradeAnim_LoadTradeMonSpecies
ld de, .script
jr RunTradeAnimScript
2015-11-22 21:21:21 -08:00
.script
tradeanim TradeAnim_OTSendsText2
tradeanim TradeAnim_OTBidsFarewell
tradeanim TradeAnim_Wait40
tradeanim TradeAnim_ScrollOutRight
tradeanim TradeAnim_GetTrademonSFX
tradeanim TradeAnim_TubeToOT1
tradeanim TradeAnim_EnterLinkTube1
tradeanim TradeAnim_DropBall
tradeanim TradeAnim_ExitLinkTube
tradeanim TradeAnim_WaitAnim
tradeanim TradeAnim_ShowGetmonData
tradeanim TradeAnim_Poof
tradeanim TradeAnim_WaitAnim
tradeanim TradeAnim_FrontpicScrollStart
tradeanim TradeAnim_AnimateFrontpic
tradeanim TradeAnim_Wait180IfOTEgg
tradeanim TradeAnim_TextboxScrollStart
tradeanim TradeAnim_TakeCareOfText
tradeanim TradeAnim_ScrollOutRight
tradeanim TradeAnim_SetupGivemonScroll
tradeanim TradeAnim_ShowGivemonData
tradeanim TradeAnim_DoGivemonScroll
tradeanim TradeAnim_Wait40
tradeanim TradeAnim_Poof
tradeanim TradeAnim_RockingBall
tradeanim TradeAnim_EnterLinkTube1
tradeanim TradeAnim_WaitAnim
tradeanim TradeAnim_BulgeThroughTube
tradeanim TradeAnim_WaitAnim
tradeanim TradeAnim_TextboxScrollStart
tradeanim TradeAnim_GiveTrademonSFX
tradeanim TradeAnim_TubeToPlayer1
tradeanim TradeAnim_SentToOTText
tradeanim TradeAnim_ScrollOutRight
tradeanim TradeAnim_End
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
RunTradeAnimScript:
2017-12-09 11:22:58 -08:00
ld hl, wTradeAnimAddress
2015-11-22 21:21:21 -08:00
ld [hl], e
inc hl
ld [hl], d
ldh a, [hMapAnims]
2015-11-22 21:21:21 -08:00
push af
xor a
ldh [hMapAnims], a
2018-01-23 14:39:09 -08:00
ld hl, wVramState
2015-11-22 21:21:21 -08:00
ld a, [hl]
push af
res 0, [hl]
2018-01-23 14:39:09 -08:00
ld hl, wOptions
2015-11-22 21:21:21 -08:00
ld a, [hl]
push af
2018-04-05 08:44:02 -07:00
set NO_TEXT_SCROLL, [hl]
2016-01-09 13:28:22 -08:00
call .TradeAnimLayout
ld a, [wUnusedTradeAnimPlayEvolutionMusic]
2015-11-22 21:21:21 -08:00
and a
jr nz, .anim_loop
ld de, MUSIC_EVOLUTION
call PlayMusic2
.anim_loop
call DoTradeAnimation
jr nc, .anim_loop
pop af
2018-01-23 14:39:09 -08:00
ld [wOptions], a
2015-11-22 21:21:21 -08:00
pop af
2018-01-23 14:39:09 -08:00
ld [wVramState], a
2015-11-22 21:21:21 -08:00
pop af
ldh [hMapAnims], a
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
.TradeAnimLayout:
2015-11-22 21:21:21 -08:00
xor a
ld [wJumptableIndex], a
call ClearBGPalettes
call ClearSprites
call ClearTilemap
2015-11-22 21:21:21 -08:00
call DisableLCD
call LoadFontsBattleExtra
2017-12-24 09:47:30 -08:00
callfar ClearSpriteAnims
ldh a, [hCGB]
2015-11-22 21:21:21 -08:00
and a
2016-01-09 13:28:22 -08:00
jr z, .NotCGB
2015-11-22 21:21:21 -08:00
ld a, $1
ldh [rVBK], a
2017-12-28 04:32:33 -08:00
ld hl, vTiles0
2022-01-20 17:16:22 -08:00
ld bc, VRAM_End - VRAM_Begin
2015-11-22 21:21:21 -08:00
xor a
call ByteFill
ld a, $0
ldh [rVBK], a
2015-11-22 21:21:21 -08:00
.NotCGB:
2015-11-22 21:21:21 -08:00
hlbgcoord 0, 0
2022-01-20 17:16:22 -08:00
ld bc, VRAM_End - vBGMap0
2015-11-22 21:21:21 -08:00
ld a, " "
call ByteFill
ld hl, TradeGameBoyLZ
2017-12-28 04:32:33 -08:00
ld de, vTiles2 tile $31
2015-11-22 21:21:21 -08:00
call Decompress
ld hl, TradeArrowRightGFX
2018-01-11 09:00:01 -08:00
ld de, vTiles0 tile TRADEANIM_RIGHT_ARROW
ld bc, 1 tiles
ld a, BANK(TradeArrowRightGFX)
2015-11-22 21:21:21 -08:00
call FarCopyBytes
ld hl, TradeArrowLeftGFX
2018-01-11 09:00:01 -08:00
ld de, vTiles0 tile TRADEANIM_LEFT_ARROW
ld bc, 1 tiles
ld a, BANK(TradeArrowLeftGFX)
2015-11-22 21:21:21 -08:00
call FarCopyBytes
xor a
ldh [hSCX], a
ldh [hSCY], a
2015-11-22 21:21:21 -08:00
ld a, $7
ldh [hWX], a
2015-11-22 21:21:21 -08:00
ld a, $90
ldh [hWY], a
2017-12-24 09:47:30 -08:00
farcall GetTrademonFrontpic
2015-11-22 21:21:21 -08:00
call EnableLCD
2016-01-09 13:28:22 -08:00
call LoadTradeBallAndCableGFX
2015-11-22 21:21:21 -08:00
ld a, [wPlayerTrademonSpecies]
ld hl, wPlayerTrademonDVs
2017-12-28 04:32:33 -08:00
ld de, vTiles0
call TradeAnim_GetFrontpic
2015-11-22 21:21:21 -08:00
ld a, [wOTTrademonSpecies]
ld hl, wOTTrademonDVs
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $31
call TradeAnim_GetFrontpic
2015-11-22 21:21:21 -08:00
ld a, [wPlayerTrademonSpecies]
ld de, wPlayerTrademonSpeciesName
call TradeAnim_GetNicknamename
2015-11-22 21:21:21 -08:00
ld a, [wOTTrademonSpecies]
ld de, wOTTrademonSpeciesName
call TradeAnim_GetNicknamename
call TradeAnim_NormalPals
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
DoTradeAnimation:
2015-11-22 21:21:21 -08:00
ld a, [wJumptableIndex]
bit 7, a
jr nz, .finished
call .DoTradeAnimCommand
2017-12-24 09:47:30 -08:00
callfar PlaySpriteAnimations
ld hl, wFrameCounter2
2015-11-22 21:21:21 -08:00
inc [hl]
call DelayFrame
and a
ret
.finished
call LoadStandardFont
scf
ret
2018-06-24 07:09:41 -07:00
.DoTradeAnimCommand:
jumptable .Jumptable, wJumptableIndex
2015-11-22 21:21:21 -08:00
.Jumptable:
add_tradeanim TradeAnim_AdvanceScriptPointer ; 00
add_tradeanim TradeAnim_ShowGivemonData ; 01
add_tradeanim TradeAnim_ShowGetmonData ; 02
add_tradeanim TradeAnim_EnterLinkTube1 ; 03
add_tradeanim TradeAnim_EnterLinkTube2 ; 04
add_tradeanim TradeAnim_ExitLinkTube ; 05
add_tradeanim TradeAnim_TubeToOT1 ; 06
add_tradeanim TradeAnim_TubeToOT2 ; 07
add_tradeanim TradeAnim_TubeToOT3 ; 08
add_tradeanim TradeAnim_TubeToOT4 ; 09
add_tradeanim TradeAnim_TubeToOT5 ; 0a
add_tradeanim TradeAnim_TubeToOT6 ; 0b
add_tradeanim TradeAnim_TubeToOT7 ; 0c
add_tradeanim TradeAnim_TubeToOT8 ; 0d
add_tradeanim TradeAnim_TubeToPlayer1 ; 0e
add_tradeanim TradeAnim_TubeToPlayer2 ; 0f
add_tradeanim TradeAnim_TubeToPlayer3 ; 10
add_tradeanim TradeAnim_TubeToPlayer4 ; 11
add_tradeanim TradeAnim_TubeToPlayer5 ; 12
add_tradeanim TradeAnim_TubeToPlayer6 ; 13
add_tradeanim TradeAnim_TubeToPlayer7 ; 14
add_tradeanim TradeAnim_TubeToPlayer8 ; 15
add_tradeanim TradeAnim_SentToOTText ; 16
add_tradeanim TradeAnim_OTBidsFarewell ; 17
add_tradeanim TradeAnim_TakeCareOfText ; 18
add_tradeanim TradeAnim_OTSendsText1 ; 19
add_tradeanim TradeAnim_OTSendsText2 ; 1a
add_tradeanim TradeAnim_SetupGivemonScroll ; 1b
add_tradeanim TradeAnim_DoGivemonScroll ; 1c
add_tradeanim TradeAnim_FrontpicScrollStart ; 1d
add_tradeanim TradeAnim_TextboxScrollStart ; 1e
add_tradeanim TradeAnim_ScrollOutRight ; 1f
add_tradeanim TradeAnim_ScrollOutRight2 ; 20
add_tradeanim TradeAnim_Wait80 ; 21
add_tradeanim TradeAnim_Wait40 ; 22
add_tradeanim TradeAnim_RockingBall ; 23
add_tradeanim TradeAnim_DropBall ; 24
add_tradeanim TradeAnim_WaitAnim ; 25
add_tradeanim TradeAnim_WaitAnim2 ; 26
add_tradeanim TradeAnim_Poof ; 27
add_tradeanim TradeAnim_BulgeThroughTube ; 28
add_tradeanim TradeAnim_GiveTrademonSFX ; 29
add_tradeanim TradeAnim_GetTrademonSFX ; 2a
add_tradeanim TradeAnim_End ; 2b
add_tradeanim TradeAnim_AnimateFrontpic ; 2c
add_tradeanim TradeAnim_Wait96 ; 2d
add_tradeanim TradeAnim_Wait80IfOTEgg ; 2e
add_tradeanim TradeAnim_Wait180IfOTEgg ; 2f
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnim_IncrementJumptableIndex:
2015-11-22 21:21:21 -08:00
ld hl, wJumptableIndex
inc [hl]
ret
2018-06-24 07:09:41 -07:00
TradeAnim_AdvanceScriptPointer:
2017-12-09 11:22:58 -08:00
ld hl, wTradeAnimAddress
2015-11-22 21:21:21 -08:00
ld e, [hl]
inc hl
ld d, [hl]
ld a, [de]
ld [wJumptableIndex], a
inc de
ld [hl], d
dec hl
ld [hl], e
ret
2018-06-24 07:09:41 -07:00
TradeAnim_End:
2015-11-22 21:21:21 -08:00
ld hl, wJumptableIndex
set 7, [hl]
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToOT1:
2018-01-11 09:00:01 -08:00
ld a, TRADEANIM_RIGHT_ARROW
call TradeAnim_PlaceTrademonStatsOnTubeAnim
2016-01-09 13:28:22 -08:00
ld a, [wLinkTradeSendmonSpecies]
ld [wTempIconSpecies], a
2015-11-22 21:21:21 -08:00
xor a
depixel 5, 11, 4, 0
ld b, $0
jr TradeAnim_InitTubeAnim
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToPlayer1:
2018-01-11 09:00:01 -08:00
ld a, TRADEANIM_LEFT_ARROW
call TradeAnim_PlaceTrademonStatsOnTubeAnim
2016-01-09 13:28:22 -08:00
ld a, [wLinkTradeGetmonSpecies]
ld [wTempIconSpecies], a
2018-01-11 09:00:01 -08:00
ld a, TRADEANIMSTATE_2
2015-11-22 21:21:21 -08:00
depixel 9, 18, 4, 4
ld b, $4
2018-06-24 07:09:41 -07:00
TradeAnim_InitTubeAnim:
2015-11-22 21:21:21 -08:00
push bc
push de
push bc
push de
2015-11-22 21:21:21 -08:00
push af
call DisableLCD
2017-12-24 09:47:30 -08:00
callfar ClearSpriteAnims
2015-11-22 21:21:21 -08:00
hlbgcoord 20, 3
ld bc, 12
2015-11-22 21:21:21 -08:00
ld a, $60
call ByteFill
pop af
call TradeAnim_TubeAnimJumptable
2015-11-22 21:21:21 -08:00
xor a
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
ld a, $7
ldh [hWX], a
2015-11-22 21:21:21 -08:00
ld a, $70
ldh [hWY], a
2015-11-22 21:21:21 -08:00
call EnableLCD
2016-01-09 13:28:22 -08:00
call LoadTradeBubbleGFX
2015-11-22 21:21:21 -08:00
pop de
ld a, SPRITE_ANIM_INDEX_TRADEMON_ICON
call InitSpriteAnimStruct
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-22 21:21:21 -08:00
add hl, bc
pop bc
ld [hl], b
2015-11-22 21:21:21 -08:00
pop de
ld a, SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
call InitSpriteAnimStruct
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-22 21:21:21 -08:00
add hl, bc
pop bc
ld [hl], b
2015-11-22 21:21:21 -08:00
call WaitBGMap
ld b, SCGB_TRADE_TUBE
2015-11-22 21:21:21 -08:00
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
2015-11-22 21:21:21 -08:00
call DmgToCgbBGPals
ld a, %11010000
2015-12-09 08:38:40 -08:00
call DmgToCgbObjPal0
call TradeAnim_IncrementJumptableIndex
2018-01-11 12:36:11 -08:00
ld a, 92
ld [wFrameCounter], a
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToOT2:
call TradeAnim_FlashBGPals
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
add $2
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
cp $50
ret nz
2018-01-11 09:00:01 -08:00
ld a, TRADEANIMSTATE_1
call TradeAnim_TubeAnimJumptable
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToOT3:
call TradeAnim_FlashBGPals
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
add $2
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
cp $a0
ret nz
2018-01-11 09:00:01 -08:00
ld a, TRADEANIMSTATE_2
call TradeAnim_TubeAnimJumptable
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToOT4:
call TradeAnim_FlashBGPals
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
add $2
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
and a
ret nz
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToPlayer3:
call TradeAnim_FlashBGPals
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
sub $2
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
cp $b0
ret nz
2018-01-11 09:00:01 -08:00
ld a, TRADEANIMSTATE_1
call TradeAnim_TubeAnimJumptable
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToPlayer4:
call TradeAnim_FlashBGPals
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
sub $2
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
cp $60
ret nz
2018-01-11 09:00:01 -08:00
xor a ; TRADEANIMSTATE_0
call TradeAnim_TubeAnimJumptable
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToPlayer5:
call TradeAnim_FlashBGPals
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
sub $2
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
and a
ret nz
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2015-11-22 23:08:08 -08:00
TradeAnim_TubeToOT6:
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToPlayer6:
2018-01-11 12:36:11 -08:00
ld a, 128
ld [wFrameCounter], a
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2015-11-22 23:08:08 -08:00
TradeAnim_TubeToOT8:
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToPlayer8:
2015-11-22 21:21:21 -08:00
call ClearBGPalettes
call ClearTilemap
2015-11-22 21:21:21 -08:00
call ClearSprites
call DisableLCD
2017-12-24 09:47:30 -08:00
callfar ClearSpriteAnims
2015-11-22 21:21:21 -08:00
hlbgcoord 0, 0
2022-01-20 17:16:22 -08:00
ld bc, VRAM_End - vBGMap0
2015-11-22 21:21:21 -08:00
ld a, " "
call ByteFill
xor a
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
ld a, $90
ldh [hWY], a
2015-11-22 21:21:21 -08:00
call EnableLCD
2016-01-09 13:28:22 -08:00
call LoadTradeBallAndCableGFX
2015-11-22 21:21:21 -08:00
call WaitBGMap
call TradeAnim_NormalPals
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2015-11-22 23:08:08 -08:00
TradeAnim_TubeToOT5:
TradeAnim_TubeToOT7:
TradeAnim_TubeToPlayer2:
2018-06-24 07:09:41 -07:00
TradeAnim_TubeToPlayer7:
call TradeAnim_FlashBGPals
2018-01-11 12:36:11 -08:00
ld hl, wFrameCounter
2015-11-22 21:21:21 -08:00
ld a, [hl]
and a
jr z, .done
dec [hl]
ret
.done
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_GiveTrademonSFX:
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ld de, SFX_GIVE_TRADEMON
call PlaySFX
ret
2018-06-24 07:09:41 -07:00
TradeAnim_GetTrademonSFX:
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ld de, SFX_GET_TRADEMON
call PlaySFX
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TubeAnimJumptable:
2018-01-16 14:27:50 -08:00
maskbits TRADEANIMJUMPTABLE_LENGTH
2015-11-22 21:21:21 -08:00
ld e, a
ld d, 0
ld hl, .Jumptable
2015-11-22 21:21:21 -08:00
add hl, de
add hl, de
2015-11-22 21:21:21 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
.Jumptable:
2018-01-11 09:00:01 -08:00
; entries correspond to TRADEANIMSTATE_* constants
dw .Zero
dw .One
dw .Two
dw .Three
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
.Zero:
.Three:
call TradeAnim_BlankTilemap
2015-11-22 21:21:21 -08:00
hlcoord 9, 3
ld [hl], $5b
inc hl
2015-11-22 23:08:08 -08:00
ld bc, 10
2015-11-22 21:21:21 -08:00
ld a, $60
call ByteFill
hlcoord 3, 2
call TradeAnim_CopyTradeGameBoyTilemap
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
.One:
call TradeAnim_BlankTilemap
2015-11-22 21:21:21 -08:00
hlcoord 0, 3
ld bc, SCREEN_WIDTH
ld a, $60
call ByteFill
ret
2018-06-24 07:09:41 -07:00
.Two:
call TradeAnim_BlankTilemap
2015-11-22 21:21:21 -08:00
hlcoord 0, 3
ld bc, $11
ld a, $60
call ByteFill
hlcoord 17, 3
ld a, $5d
ld [hl], a
2015-11-22 21:21:21 -08:00
ld a, $61
ld de, SCREEN_WIDTH
ld c, $3
2015-11-22 23:08:08 -08:00
.loop
2015-11-22 21:21:21 -08:00
add hl, de
ld [hl], a
dec c
2015-11-22 23:08:08 -08:00
jr nz, .loop
2015-11-22 21:21:21 -08:00
add hl, de
ld a, $5f
ld [hld], a
ld a, $5b
ld [hl], a
hlcoord 10, 6
call TradeAnim_CopyTradeGameBoyTilemap
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_CopyTradeGameBoyTilemap:
2015-11-22 21:21:21 -08:00
ld de, TradeGameBoyTilemap
lb bc, 8, 6
call TradeAnim_CopyBoxFromDEtoHL
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_PlaceTrademonStatsOnTubeAnim:
2015-11-22 21:21:21 -08:00
push af
call ClearBGPalettes
call WaitTop
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap1)
ldh [hBGMapAddress + 1], a
call ClearTilemap
2015-11-22 21:21:21 -08:00
hlcoord 0, 0
ld bc, SCREEN_WIDTH
ld a, "─"
call ByteFill
hlcoord 0, 1
2015-11-22 23:08:08 -08:00
ld de, wLinkPlayer1Name
2015-11-22 21:21:21 -08:00
call PlaceString
2015-11-22 23:08:08 -08:00
ld hl, wLinkPlayer2Name
2015-11-22 21:21:21 -08:00
ld de, 0
2015-11-22 23:08:08 -08:00
.find_name_end_loop
2015-11-22 21:21:21 -08:00
ld a, [hli]
cp "@"
2015-11-22 23:08:08 -08:00
jr z, .done
2015-11-22 21:21:21 -08:00
dec de
2015-11-22 23:08:08 -08:00
jr .find_name_end_loop
2015-11-22 21:21:21 -08:00
2015-11-22 23:08:08 -08:00
.done
2015-11-22 21:21:21 -08:00
hlcoord 0, 4
add hl, de
2015-11-22 23:08:08 -08:00
ld de, wLinkPlayer2Name
2015-11-22 21:21:21 -08:00
call PlaceString
hlcoord 7, 2
ld bc, 6
pop af
call ByteFill
call WaitBGMap
call WaitTop
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap0)
ldh [hBGMapAddress + 1], a
call ClearTilemap
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_EnterLinkTube1:
call ClearTilemap
2015-11-22 21:21:21 -08:00
call WaitTop
ld a, $a0
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
call DelayFrame
hlcoord 8, 2
ld de, TradeLinkTubeTilemap
2015-11-22 21:21:21 -08:00
lb bc, 3, 12
call TradeAnim_CopyBoxFromDEtoHL
2015-11-22 21:21:21 -08:00
call WaitBGMap
ld b, SCGB_TRADE_TUBE
2015-11-22 21:21:21 -08:00
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
2015-11-22 21:21:21 -08:00
call DmgToCgbBGPals
lb de, %11100100, %11100100 ; 3,2,1,0, 3,2,1,0
2015-11-22 21:21:21 -08:00
call DmgToCgbObjPals
ld de, SFX_POTION
call PlaySFX
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_EnterLinkTube2:
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
and a
jr z, .done
add $4
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
ret
.done
ld c, 80
call DelayFrames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_ExitLinkTube:
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
cp $a0
jr z, .done
2015-11-22 21:21:21 -08:00
sub $4
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
ret
.done
call ClearTilemap
2015-11-22 21:21:21 -08:00
xor a
ldh [hSCX], a
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_SetupGivemonScroll:
2015-11-22 21:21:21 -08:00
ld a, $8f
ldh [hWX], a
2015-11-22 21:21:21 -08:00
ld a, $88
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
ld a, $50
ldh [hWY], a
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_DoGivemonScroll:
ldh a, [hWX]
2015-11-22 21:21:21 -08:00
cp $7
jr z, .done
sub $4
ldh [hWX], a
ldh a, [hSCX]
2015-11-22 21:21:21 -08:00
sub $4
ldh [hSCX], a
2015-11-22 21:21:21 -08:00
ret
.done
ld a, $7
ldh [hWX], a
2015-11-22 21:21:21 -08:00
xor a
ldh [hSCX], a
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_FrontpicScrollStart:
2015-11-22 21:21:21 -08:00
ld a, $7
ldh [hWX], a
2015-11-22 21:21:21 -08:00
ld a, $50
ldh [hWY], a
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_TextboxScrollStart:
2015-11-22 21:21:21 -08:00
ld a, $7
ldh [hWX], a
2015-11-22 21:21:21 -08:00
ld a, $90
ldh [hWY], a
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_ScrollOutRight:
2015-11-22 21:21:21 -08:00
call WaitTop
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap1)
ldh [hBGMapAddress + 1], a
2015-11-22 21:21:21 -08:00
call WaitBGMap
ld a, $7
ldh [hWX], a
2015-11-22 21:21:21 -08:00
xor a
ldh [hWY], a
2015-11-22 21:21:21 -08:00
call DelayFrame
call WaitTop
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap0)
ldh [hBGMapAddress + 1], a
call ClearTilemap
call TradeAnim_IncrementJumptableIndex
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_ScrollOutRight2:
ldh a, [hWX]
2015-11-22 21:21:21 -08:00
cp $a1
2015-11-22 23:08:08 -08:00
jr nc, .done
2015-11-22 21:21:21 -08:00
add $4
ldh [hWX], a
2015-11-22 21:21:21 -08:00
ret
2015-11-22 23:08:08 -08:00
.done
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap1)
ldh [hBGMapAddress + 1], a
2015-11-22 21:21:21 -08:00
call WaitBGMap
ld a, $7
ldh [hWX], a
2015-11-22 21:21:21 -08:00
ld a, $90
ldh [hWY], a
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap0)
ldh [hBGMapAddress + 1], a
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_ShowGivemonData:
call ShowPlayerTrademonStats
2015-11-22 21:21:21 -08:00
ld a, [wPlayerTrademonSpecies]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
2015-11-22 21:21:21 -08:00
ld a, [wPlayerTrademonDVs]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs], a
2015-11-22 21:21:21 -08:00
ld a, [wPlayerTrademonDVs + 1]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs + 1], a
ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
2015-11-22 21:21:21 -08:00
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
2015-11-22 21:21:21 -08:00
call DmgToCgbBGPals
call TradeAnim_ShowGivemonFrontpic
2015-11-22 21:21:21 -08:00
ld a, [wPlayerTrademonSpecies]
call GetCryIndex
jr c, .skip_cry
ld e, c
ld d, b
call PlayCry
2015-11-22 21:21:21 -08:00
.skip_cry
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_ShowGetmonData:
call ShowOTTrademonStats
2015-11-22 21:21:21 -08:00
ld a, [wOTTrademonSpecies]
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
2015-11-22 21:21:21 -08:00
ld a, [wOTTrademonDVs]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs], a
2015-11-22 21:21:21 -08:00
ld a, [wOTTrademonDVs + 1]
2018-01-23 14:39:09 -08:00
ld [wTempMonDVs + 1], a
ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
2015-11-22 21:21:21 -08:00
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
2015-11-22 21:21:21 -08:00
call DmgToCgbBGPals
call TradeAnim_ShowGetmonFrontpic
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_AnimateFrontpic:
2017-12-24 09:47:30 -08:00
farcall AnimateTrademonFrontpic
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_GetFrontpic:
2015-11-22 21:21:21 -08:00
push de
push af
predef GetUnownLetter
2015-11-22 21:21:21 -08:00
pop af
2018-01-23 14:39:09 -08:00
ld [wCurPartySpecies], a
ld [wCurSpecies], a
2015-11-22 21:21:21 -08:00
call GetBaseData
pop de
predef GetMonFrontpic
2015-11-22 21:21:21 -08:00
ret
TradeAnim_GetNicknamename:
2015-11-22 21:21:21 -08:00
push de
ld [wNamedObjectIndex], a
2015-11-22 21:21:21 -08:00
call GetPokemonName
2018-01-23 14:39:09 -08:00
ld hl, wStringBuffer1
2015-11-22 21:21:21 -08:00
pop de
ld bc, NAME_LENGTH
call CopyBytes
ret
2018-06-24 07:09:41 -07:00
TradeAnim_ShowGivemonFrontpic:
2017-12-28 04:32:33 -08:00
ld de, vTiles0
jr TradeAnim_ShowFrontpic
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnim_ShowGetmonFrontpic:
2017-12-28 04:32:33 -08:00
ld de, vTiles0 tile $31
2018-06-24 07:09:41 -07:00
TradeAnim_ShowFrontpic:
2015-11-22 21:21:21 -08:00
call DelayFrame
2017-12-28 04:32:33 -08:00
ld hl, vTiles2
2015-11-22 21:21:21 -08:00
lb bc, 10, $31
call Request2bpp
call WaitTop
call TradeAnim_BlankTilemap
2015-11-22 21:21:21 -08:00
hlcoord 7, 2
xor a
ldh [hGraphicStartTile], a
2015-11-22 21:21:21 -08:00
lb bc, 7, 7
predef PlaceGraphic
2015-11-22 21:21:21 -08:00
call WaitBGMap
ret
TradeAnim_Wait80:
2015-11-22 21:21:21 -08:00
ld c, 80
call DelayFrames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
TradeAnim_Wait40:
2015-11-22 21:21:21 -08:00
ld c, 40
call DelayFrames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
TradeAnim_Wait96:
2015-11-22 21:21:21 -08:00
ld c, 96
call DelayFrames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
TradeAnim_Wait80IfOTEgg:
2015-11-22 23:08:08 -08:00
call IsOTTrademonEgg
2015-11-22 21:21:21 -08:00
ret nz
ld c, 80
call DelayFrames
ret
TradeAnim_Wait180IfOTEgg:
2015-11-22 23:08:08 -08:00
call IsOTTrademonEgg
2015-11-22 21:21:21 -08:00
ret nz
ld c, 180
call DelayFrames
ret
2018-06-24 07:09:41 -07:00
IsOTTrademonEgg:
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ld a, [wOTTrademonSpecies]
2015-11-22 23:08:08 -08:00
cp EGG
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
ShowPlayerTrademonStats:
2015-11-22 21:21:21 -08:00
ld de, wPlayerTrademonSpecies
ld a, [de]
2015-11-22 23:08:08 -08:00
cp EGG
jr z, TrademonStats_Egg
call TrademonStats_MonTemplate
2015-11-22 21:21:21 -08:00
ld de, wPlayerTrademonSpecies
call TrademonStats_PrintSpeciesNumber
2015-11-22 21:21:21 -08:00
ld de, wPlayerTrademonSpeciesName
call TrademonStats_PrintSpeciesName
2015-11-22 21:21:21 -08:00
ld a, [wPlayerTrademonCaughtData]
ld de, wPlayerTrademonOTName
call TrademonStats_PrintOTName
ld de, wPlayerTrademonID
call TrademonStats_PrintTrademonID
call TrademonStats_WaitBGMap
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
ShowOTTrademonStats:
2015-11-22 21:21:21 -08:00
ld de, wOTTrademonSpecies
ld a, [de]
2015-11-22 23:08:08 -08:00
cp EGG
jr z, TrademonStats_Egg
call TrademonStats_MonTemplate
2015-11-22 21:21:21 -08:00
ld de, wOTTrademonSpecies
call TrademonStats_PrintSpeciesNumber
2015-11-22 21:21:21 -08:00
ld de, wOTTrademonSpeciesName
call TrademonStats_PrintSpeciesName
2015-11-22 21:21:21 -08:00
ld a, [wOTTrademonCaughtData]
ld de, wOTTrademonOTName
call TrademonStats_PrintOTName
2015-11-22 21:21:21 -08:00
ld de, wOTTrademonID
call TrademonStats_PrintTrademonID
call TrademonStats_WaitBGMap
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TrademonStats_MonTemplate:
2015-11-22 21:21:21 -08:00
call WaitTop
call TradeAnim_BlankTilemap
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap1)
ldh [hBGMapAddress + 1], a
2015-11-22 21:21:21 -08:00
hlcoord 3, 0
ld b, $6
ld c, $d
2019-04-08 05:15:10 -07:00
call Textbox
2015-11-22 21:21:21 -08:00
hlcoord 4, 0
ld de, .OTMonData
2015-11-22 21:21:21 -08:00
call PlaceString
ret
2018-06-24 07:09:41 -07:00
.OTMonData:
2015-11-22 21:21:21 -08:00
db "─── №."
next ""
next "OT/"
2015-11-22 23:08:08 -08:00
next "<ID>№.@"
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TrademonStats_Egg:
2015-11-22 21:21:21 -08:00
call WaitTop
call TradeAnim_BlankTilemap
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap1)
ldh [hBGMapAddress + 1], a
2015-11-22 21:21:21 -08:00
hlcoord 3, 0
ld b, 6
ld c, 13
2019-04-08 05:15:10 -07:00
call Textbox
2015-11-22 21:21:21 -08:00
hlcoord 4, 2
ld de, .EggData
2015-11-22 21:21:21 -08:00
call PlaceString
call TrademonStats_WaitBGMap
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
.EggData:
2015-11-22 21:21:21 -08:00
db "EGG"
next "OT/?????"
next "<ID>№.?????@"
2018-06-24 07:09:41 -07:00
TrademonStats_WaitBGMap:
2015-11-22 21:21:21 -08:00
call WaitBGMap
call WaitTop
2017-12-28 04:32:33 -08:00
ld a, HIGH(vBGMap0)
ldh [hBGMapAddress + 1], a
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TrademonStats_PrintSpeciesNumber:
2015-11-22 21:21:21 -08:00
hlcoord 10, 0
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
ld [hl], " "
ret
2018-06-24 07:09:41 -07:00
TrademonStats_PrintSpeciesName:
2015-11-22 21:21:21 -08:00
hlcoord 4, 2
call PlaceString
ret
2018-06-24 07:09:41 -07:00
TrademonStats_PrintOTName:
2015-11-22 21:21:21 -08:00
cp 3
jr c, .caught_gender_okay
2015-11-22 21:21:21 -08:00
xor a
.caught_gender_okay
2015-11-22 21:21:21 -08:00
push af
hlcoord 7, 4
call PlaceString
inc bc
pop af
ld hl, .Gender
2015-11-22 21:21:21 -08:00
ld d, 0
ld e, a
add hl, de
ld a, [hl]
ld [bc], a
ret
2018-06-24 07:09:41 -07:00
.Gender:
2015-11-22 21:21:21 -08:00
db " ", "♂", "♀"
2018-06-24 07:09:41 -07:00
TrademonStats_PrintTrademonID:
2015-11-22 21:21:21 -08:00
hlcoord 7, 6
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
ret
2018-06-24 07:09:41 -07:00
TradeAnim_RockingBall:
2015-11-22 21:21:21 -08:00
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL
call InitSpriteAnimStruct
call TradeAnim_AdvanceScriptPointer
2018-01-11 12:36:11 -08:00
ld a, 32
ld [wFrameCounter], a
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_DropBall:
2015-11-22 21:21:21 -08:00
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL
call InitSpriteAnimStruct
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-22 21:21:21 -08:00
add hl, bc
ld [hl], $1
ld hl, SPRITEANIMSTRUCT_YOFFSET
2015-11-22 21:21:21 -08:00
add hl, bc
ld [hl], $dc
call TradeAnim_AdvanceScriptPointer
2018-01-11 12:36:11 -08:00
ld a, 56
ld [wFrameCounter], a
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_Poof:
2015-11-22 21:21:21 -08:00
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_TRADE_POOF
call InitSpriteAnimStruct
call TradeAnim_AdvanceScriptPointer
2018-01-11 12:36:11 -08:00
ld a, 16
ld [wFrameCounter], a
2015-11-22 21:21:21 -08:00
ld de, SFX_BALL_POOF
call PlaySFX
ret
2018-06-24 07:09:41 -07:00
TradeAnim_BulgeThroughTube:
ld a, %11100100 ; 3,2,1,0
2015-12-09 08:38:40 -08:00
call DmgToCgbObjPal0
2015-11-22 21:21:21 -08:00
depixel 5, 11
ld a, SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
call InitSpriteAnimStruct
call TradeAnim_AdvanceScriptPointer
2018-01-11 12:36:11 -08:00
ld a, 64
ld [wFrameCounter], a
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_AnimateTrademonInTube:
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-22 21:21:21 -08:00
add hl, bc
ld e, [hl]
ld d, 0
ld hl, .Jumptable
2015-11-22 21:21:21 -08:00
add hl, de
add hl, de
2015-11-22 21:21:21 -08:00
ld a, [hli]
ld h, [hl]
ld l, a
jp hl
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
.Jumptable:
dw .InitTimer
dw .WaitTimer1
dw .MoveRight
dw .MoveDown
dw .MoveUp
dw .MoveLeft
dw .WaitTimer2
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
.JumptableNext:
2016-05-13 22:11:01 -07:00
ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
2015-11-22 21:21:21 -08:00
add hl, bc
inc [hl]
ret
2018-06-24 07:09:41 -07:00
.InitTimer:
call .JumptableNext
ld hl, SPRITEANIMSTRUCT_VAR1
2015-11-22 21:21:21 -08:00
add hl, bc
ld [hl], $80
ret
2018-06-24 07:09:41 -07:00
.WaitTimer1:
ld hl, SPRITEANIMSTRUCT_VAR1
2015-11-22 21:21:21 -08:00
add hl, bc
ld a, [hl]
dec [hl]
and a
ret nz
call .JumptableNext
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
.MoveRight:
ld hl, SPRITEANIMSTRUCT_XCOORD
2015-11-22 21:21:21 -08:00
add hl, bc
ld a, [hl]
cp $94
jr nc, .done_move_right
2015-11-22 21:21:21 -08:00
inc [hl]
ret
.done_move_right
call .JumptableNext
2018-06-24 07:09:41 -07:00
.MoveDown:
ld hl, SPRITEANIMSTRUCT_YCOORD
2015-11-22 21:21:21 -08:00
add hl, bc
ld a, [hl]
cp $4c
jr nc, .done_move_down
2015-11-22 21:21:21 -08:00
inc [hl]
ret
.done_move_down
ld hl, SPRITEANIMSTRUCT_INDEX
2015-11-22 21:21:21 -08:00
add hl, bc
ld [hl], $0
ret
2018-06-24 07:09:41 -07:00
.MoveUp:
ld hl, SPRITEANIMSTRUCT_YCOORD
2015-11-22 21:21:21 -08:00
add hl, bc
ld a, [hl]
cp $2c
jr z, .done_move_up
2015-11-22 21:21:21 -08:00
dec [hl]
ret
.done_move_up
call .JumptableNext
2018-06-24 07:09:41 -07:00
.MoveLeft:
ld hl, SPRITEANIMSTRUCT_XCOORD
2015-11-22 21:21:21 -08:00
add hl, bc
ld a, [hl]
cp $58
jr z, .done_move_left
2015-11-22 21:21:21 -08:00
dec [hl]
ret
.done_move_left
call .JumptableNext
ld hl, SPRITEANIMSTRUCT_VAR1
2015-11-22 21:21:21 -08:00
add hl, bc
ld [hl], $80
ret
2018-06-24 07:09:41 -07:00
.WaitTimer2:
ld hl, SPRITEANIMSTRUCT_VAR1
2015-11-22 21:21:21 -08:00
add hl, bc
ld a, [hl]
dec [hl]
and a
ret nz
ld hl, SPRITEANIMSTRUCT_INDEX
2015-11-22 21:21:21 -08:00
add hl, bc
ld [hl], $0
ret
2018-06-24 07:09:41 -07:00
TradeAnim_SentToOTText:
2015-11-22 21:21:21 -08:00
ld a, [wLinkMode]
cp LINK_TIMECAPSULE
jr z, .time_capsule
ld hl, .MonNameSentToText
2015-11-22 21:21:21 -08:00
call PrintText
ld c, 189
call DelayFrames
ld hl, .MonWasSentToText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
2015-11-22 21:21:21 -08:00
ld c, 128
call DelayFrames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
.time_capsule
ld hl, .MonWasSentToText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
.MonWasSentToText:
text_far _MonWasSentToText
text_end
2015-11-22 21:21:21 -08:00
.MonNameSentToText:
text_far _MonNameSentToText
text_end
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnim_OTBidsFarewell:
ld hl, .BidsFarewellToMonText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
ld hl, .MonNameBidsFarewellText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
.BidsFarewellToMonText:
text_far _BidsFarewellToMonText
text_end
2015-11-22 21:21:21 -08:00
.MonNameBidsFarewellText:
text_far _MonNameBidsFarewellText
text_end
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnim_TakeCareOfText:
2015-11-22 21:21:21 -08:00
call WaitTop
hlcoord 0, 10
ld bc, 8 * SCREEN_WIDTH
ld a, " "
call ByteFill
call WaitBGMap
ld hl, .TakeGoodCareOfMonText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
.TakeGoodCareOfMonText:
text_far _TakeGoodCareOfMonText
text_end
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnim_OTSendsText1:
ld hl, .ForYourMonSendsText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
ld hl, .OTSendsText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
2015-11-22 21:21:21 -08:00
ld c, 14
call DelayFrames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
.ForYourMonSendsText:
text_far _ForYourMonSendsText
text_end
2015-11-22 21:21:21 -08:00
.OTSendsText:
text_far _OTSendsText
text_end
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnim_OTSendsText2:
ld hl, .WillTradeText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
ld hl, .ForYourMonWillTradeText
2015-11-22 21:21:21 -08:00
call PrintText
call TradeAnim_Wait80Frames
2015-11-22 21:21:21 -08:00
ld c, 14
call DelayFrames
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
.WillTradeText:
text_far _WillTradeText
text_end
2015-11-22 21:21:21 -08:00
.ForYourMonWillTradeText:
text_far _ForYourMonWillTradeText
text_end
2015-11-22 21:21:21 -08:00
2018-06-24 07:09:41 -07:00
TradeAnim_Wait80Frames:
2015-11-22 21:21:21 -08:00
ld c, 80
call DelayFrames
ret
TradeAnim_BlankTilemap:
2015-11-22 21:21:21 -08:00
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, " "
call ByteFill
ret
2018-06-24 07:09:41 -07:00
TradeAnim_CopyBoxFromDEtoHL:
.row
2015-11-22 21:21:21 -08:00
push bc
push hl
.col
2015-11-22 21:21:21 -08:00
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .col
2015-11-22 21:21:21 -08:00
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
jr nz, .row
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_NormalPals:
ldh a, [hSGB]
2015-11-22 21:21:21 -08:00
and a
ld a, %11100100 ; 3,2,1,0
2016-01-09 13:28:22 -08:00
jr z, .not_sgb
2015-11-22 21:21:21 -08:00
ld a, $f0
2016-01-09 13:28:22 -08:00
.not_sgb
2015-12-09 08:38:40 -08:00
call DmgToCgbObjPal0
ld a, %11100100 ; 3,2,1,0
2015-11-22 21:21:21 -08:00
call DmgToCgbBGPals
ret
2018-06-24 07:09:41 -07:00
LinkTradeAnim_LoadTradePlayerNames:
2015-11-22 21:21:21 -08:00
push de
2015-11-22 23:08:08 -08:00
ld de, wLinkPlayer1Name
2015-11-22 21:21:21 -08:00
ld bc, NAME_LENGTH
call CopyBytes
pop hl
2015-11-22 23:08:08 -08:00
ld de, wLinkPlayer2Name
2015-11-22 21:21:21 -08:00
ld bc, NAME_LENGTH
call CopyBytes
ret
2018-06-24 07:09:41 -07:00
LinkTradeAnim_LoadTradeMonSpecies:
2015-11-22 21:21:21 -08:00
ld a, [hl]
2016-01-09 13:28:22 -08:00
ld [wLinkTradeSendmonSpecies], a
2015-11-22 21:21:21 -08:00
ld a, [de]
2016-01-09 13:28:22 -08:00
ld [wLinkTradeGetmonSpecies], a
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_FlashBGPals:
ld a, [wFrameCounter2]
2015-11-22 21:21:21 -08:00
and $7
ret nz
ldh a, [rBGP]
xor %00111100
2015-11-22 21:21:21 -08:00
call DmgToCgbBGPals
ret
2018-06-24 07:09:41 -07:00
LoadTradeBallAndCableGFX:
2015-11-22 21:21:21 -08:00
call DelayFrame
ld de, TradeBallGFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles0 tile $62
2018-01-14 16:43:35 -08:00
lb bc, BANK(TradeBallGFX), 6
2015-11-22 21:21:21 -08:00
call Request2bpp
ld de, TradePoofGFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles0 tile $68
2018-01-14 16:43:35 -08:00
lb bc, BANK(TradePoofGFX), 12
2015-11-22 21:21:21 -08:00
call Request2bpp
ld de, TradeCableGFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles0 tile $74
2018-01-14 16:43:35 -08:00
lb bc, BANK(TradeCableGFX), 4
2015-11-22 21:21:21 -08:00
call Request2bpp
2020-10-30 12:39:08 -07:00
xor a ; SPRITE_ANIM_DICT_DEFAULT
2016-01-09 13:28:22 -08:00
ld hl, wSpriteAnimDict
2015-11-22 21:21:21 -08:00
ld [hli], a
ld [hl], $62
ret
2018-06-24 07:09:41 -07:00
LoadTradeBubbleGFX:
2015-11-22 21:21:21 -08:00
call DelayFrame
ld e, MONICON_TRADE
2017-12-24 09:47:30 -08:00
callfar LoadMenuMonIcon
2015-11-22 21:21:21 -08:00
ld de, TradeBubbleGFX
2017-12-28 04:32:33 -08:00
ld hl, vTiles0 tile $72
2018-01-14 16:43:35 -08:00
lb bc, BANK(TradeBubbleGFX), 4
2015-11-22 21:21:21 -08:00
call Request2bpp
2020-10-30 12:39:08 -07:00
xor a ; SPRITE_ANIM_DICT_DEFAULT
2016-01-09 13:28:22 -08:00
ld hl, wSpriteAnimDict
2015-11-22 21:21:21 -08:00
ld [hli], a
ld [hl], $62
ret
2018-06-24 07:09:41 -07:00
TradeAnim_WaitAnim:
2018-01-11 12:36:11 -08:00
ld hl, wFrameCounter
2015-11-22 21:21:21 -08:00
ld a, [hl]
and a
jr z, .done
dec [hl]
ret
.done
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
2018-06-24 07:09:41 -07:00
TradeAnim_WaitAnim2:
2018-01-11 12:36:11 -08:00
ld hl, wFrameCounter
2015-11-22 21:21:21 -08:00
ld a, [hl]
and a
2015-11-22 23:08:08 -08:00
jr z, .done
2015-11-22 21:21:21 -08:00
dec [hl]
ret
2015-11-22 23:08:08 -08:00
.done
call TradeAnim_AdvanceScriptPointer
2015-11-22 21:21:21 -08:00
ret
DebugTrade: ; unreferenced
; This function was meant for use in Japanese versions, so the
2015-11-22 21:21:21 -08:00
; constant used for copy length was changed by accident.
ld hl, .DebugTradeData
2015-11-22 21:21:21 -08:00
ld a, [hli]
ld [wPlayerTrademonSpecies], a
ld de, wPlayerTrademonSenderName
ld c, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 2
2015-11-22 23:08:08 -08:00
.loop1
2015-11-22 21:21:21 -08:00
ld a, [hli]
ld [de], a
inc de
dec c
2015-11-22 23:08:08 -08:00
jr nz, .loop1
2015-11-22 21:21:21 -08:00
ld a, [hli]
ld [wOTTrademonSpecies], a
ld de, wOTTrademonSenderName
ld c, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 2
2015-11-22 23:08:08 -08:00
.loop2
2015-11-22 21:21:21 -08:00
ld a, [hli]
ld [de], a
inc de
dec c
2015-11-22 23:08:08 -08:00
jr nz, .loop2
2015-11-22 21:21:21 -08:00
ret
MACRO debugtrade
; species, ot name, ot id
db \1, \2
dw \3
ENDM
2018-06-24 07:09:41 -07:00
.DebugTradeData:
debugtrade VENUSAUR, "ゲーフり@@", $0123 ; GAME FREAK
debugtrade CHARIZARD, "クりーチャ@", $0456 ; Creatures Inc.
2015-11-22 21:21:21 -08:00
TradeGameBoyTilemap: INCBIN "gfx/trade/game_boy.tilemap" ; 6x8
TradeLinkTubeTilemap: INCBIN "gfx/trade/link_cable.tilemap" ; 12x3
TradeArrowRightGFX: INCBIN "gfx/trade/arrow_right.2bpp"
TradeArrowLeftGFX: INCBIN "gfx/trade/arrow_left.2bpp"
TradeCableGFX: INCBIN "gfx/trade/cable.2bpp"
TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp"
TradeGameBoyLZ: INCBIN "gfx/trade/game_boy_cable.2bpp.lz"
TradeBallGFX: INCBIN "gfx/trade/ball.2bpp"
TradePoofGFX: INCBIN "gfx/trade/poof.2bpp"