pokecrystal/engine/trade/animation.asm

1544 lines
24 KiB
NASM
Executable File

TradeAnimation: ; 28f24
xor a
ld [wcf66], a
ld hl, wPlayerTrademonSenderName
ld de, wOTTrademonSenderName
call LinkTradeAnim_LoadTradePlayerNames
ld hl, wPlayerTrademonSpecies
ld de, wOTTrademonSpecies
call LinkTradeAnim_LoadTradeMonSpecies
ld de, .data_28f3f
jr RunTradeAnimSequence
.data_28f3f
tradeanim_setup_givemon_scroll
tradeanim_show_givemon_data
tradeanim_do_givemon_scroll
tradeanim_wait_80
tradeanim_wait_96
tradeanim_poof
tradeanim_rocking_ball
tradeanim_enter_link_tube
tradeanim_wait_anim
tradeanim_bulge_through_tube
tradeanim_wait_anim
tradeanim_1e
tradeanim_give_trademon_sfx
tradeanim_tube_to_ot
tradeanim_sent_to_ot_text
tradeanim_scroll_out_right
tradeanim_ot_sends_text_1
tradeanim_ot_bids_farewell
tradeanim_wait_40
tradeanim_scroll_out_right
tradeanim_get_trademon_sfx
tradeanim_tube_to_player
tradeanim_enter_link_tube
tradeanim_drop_ball
tradeanim_exit_link_tube
tradeanim_wait_anim
tradeanim_show_getmon_data
tradeanim_poof
tradeanim_wait_anim
tradeanim_1d
tradeanim_animate_frontpic
tradeanim_wait_80_if_ot_egg
tradeanim_1e
tradeanim_take_care_of_text
tradeanim_scroll_out_right
tradeanim_end
TradeAnimationPlayer2: ; 28f63
xor a
ld [wcf66], a
ld hl, wOTTrademonSenderName
ld de, wPlayerTrademonSenderName
call LinkTradeAnim_LoadTradePlayerNames
ld hl, wOTTrademonSpecies
ld de, wPlayerTrademonSpecies
call LinkTradeAnim_LoadTradeMonSpecies
ld de, .data_28f7e
jr RunTradeAnimSequence
.data_28f7e
tradeanim_ot_sends_text_2
tradeanim_ot_bids_farewell
tradeanim_wait_40
tradeanim_scroll_out_right
tradeanim_get_trademon_sfx
tradeanim_tube_to_ot
tradeanim_enter_link_tube
tradeanim_drop_ball
tradeanim_exit_link_tube
tradeanim_wait_anim
tradeanim_show_getmon_data
tradeanim_poof
tradeanim_wait_anim
tradeanim_1d
tradeanim_animate_frontpic
tradeanim_wait_180_if_ot_egg
tradeanim_1e
tradeanim_take_care_of_text
tradeanim_scroll_out_right
tradeanim_setup_givemon_scroll
tradeanim_show_givemon_data
tradeanim_do_givemon_scroll
tradeanim_wait_40
tradeanim_poof
tradeanim_rocking_ball
tradeanim_enter_link_tube
tradeanim_wait_anim
tradeanim_bulge_through_tube
tradeanim_wait_anim
tradeanim_1e
tradeanim_give_trademon_sfx
tradeanim_tube_to_player
tradeanim_sent_to_ot_text
tradeanim_scroll_out_right
tradeanim_end
RunTradeAnimSequence: ; 28fa1
ld hl, wTradeAnimPointer
ld [hl], e
inc hl
ld [hl], d
ld a, [hMapAnims]
push af
xor a
ld [hMapAnims], a
ld hl, VramState
ld a, [hl]
push af
res 0, [hl]
ld hl, Options
ld a, [hl]
push af
set 4, [hl]
call .TradeAnimLayout
ld a, [wcf66]
and a
jr nz, .anim_loop
ld de, MUSIC_EVOLUTION
call PlayMusic2
.anim_loop
call DoTradeAnimation
jr nc, .anim_loop
pop af
ld [Options], a
pop af
ld [VramState], a
pop af
ld [hMapAnims], a
ret
; 28fdb
.TradeAnimLayout: ; 28fdb
xor a
ld [wJumptableIndex], a
call ClearBGPalettes
call ClearSprites
call ClearTileMap
call DisableLCD
call LoadFontsBattleExtra
callab ClearSpriteAnims
ld a, [hCGB]
and a
jr z, .NotCGB
ld a, $1
ld [rVBK], a
ld hl, VTiles0
ld bc, sScratch - VTiles0
xor a
call ByteFill
ld a, $0
ld [rVBK], a
.NotCGB
hlbgcoord 0, 0
ld bc, sScratch - VBGMap0
ld a, " "
call ByteFill
ld hl, TradeGameBoyLZ
ld de, VTiles2 tile $31
call Decompress
ld hl, TradeArrowGFX
ld de, VTiles1 tile $6d
ld bc, $10
ld a, BANK(TradeArrowGFX)
call FarCopyBytes
ld hl, TradeArrowGFX + $10
ld de, VTiles1 tile $6e
ld bc, $10
ld a, BANK(TradeArrowGFX)
call FarCopyBytes
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
callba GetTrademonFrontpic
call EnableLCD
call LoadTradeBallAndCableGFX
ld a, [wPlayerTrademonSpecies]
ld hl, wPlayerTrademonDVs
ld de, VTiles0
call TradeAnim_GetFrontpic
ld a, [wOTTrademonSpecies]
ld hl, wOTTrademonDVs
ld de, VTiles0 tile $31
call TradeAnim_GetFrontpic
ld a, [wPlayerTrademonSpecies]
ld de, wPlayerTrademonSpeciesName
call TradeAnim_GetNickname
ld a, [wOTTrademonSpecies]
ld de, wOTTrademonSpeciesName
call TradeAnim_GetNickname
call Function297ed
ret
; 29082
DoTradeAnimation: ; 29082
ld a, [wJumptableIndex]
bit 7, a
jr nz, .finished
call .DoTradeAnimCommand
callab PlaySpriteAnimations
ld hl, wcf65
inc [hl]
call DelayFrame
and a
ret
.finished
call LoadStandardFont
scf
ret
; 290a0
.DoTradeAnimCommand: ; 290a0
ld a, [wJumptableIndex]
ld e, a
ld d, 0
ld hl, .JumpTable
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 290af
.JumpTable: ; 290af
dw TradeAnim_Next ; 00
dw TradeAnim_ShowGivemonData ; 01
dw TradeAnim_ShowGetmonData ; 02
dw TradeAnim_EnterLinkTube ; 03
dw TradeAnim_04 ; 04
dw TradeAnim_ExitLinkTube ; 05
dw TradeAnim_TubeToOT1 ; 06
dw TradeAnim_TubeToOT2 ; 07
dw TradeAnim_TubeToOT3 ; 08
dw TradeAnim_TubeToOT4 ; 09
dw TradeAnim_TubeToOT5 ; 0a
dw TradeAnim_TubeToOT6 ; 0b
dw TradeAnim_TubeToOT7 ; 0c
dw TradeAnim_TubeToOT8 ; 0d
dw TradeAnim_TubeToPlayer1 ; 0e
dw TradeAnim_TubeToPlayer2 ; 0f
dw TradeAnim_TubeToPlayer3 ; 10
dw TradeAnim_TubeToPlayer4 ; 11
dw TradeAnim_TubeToPlayer5 ; 12
dw TradeAnim_TubeToPlayer6 ; 13
dw TradeAnim_TubeToPlayer7 ; 14
dw TradeAnim_TubeToPlayer8 ; 15
dw TradeAnim_SentToOTText ; 16
dw TradeAnim_OTBidsFarewell ; 17
dw TradeAnim_TakeCareOfText ; 18
dw TradeAnim_OTSendsText1 ; 19
dw TradeAnim_OTSendsText2 ; 1a
dw TradeAnim_SetupGivemonScroll ; 1b
dw TradeAnim_DoGivemonScroll ; 1c
dw TradeAnim_1d ; 1d
dw TradeAnim_1e ; 1e
dw TradeAnim_ScrollOutRight ; 1f
dw TradeAnim_ScrollOutRight2 ; 20
dw TraideAnim_Wait80 ; 21
dw TraideAnim_Wait40 ; 22
dw TradeAnim_RockingBall ; 23
dw TradeAnim_DropBall ; 24
dw TradeAnim_WaitAnim ; 25
dw TradeAnim_WaitAnim2 ; 26
dw TradeAnim_Poof ; 27
dw TradeAnim_BulgeThroughTube ; 28
dw TradeAnim_GiveTrademonSFX ; 29
dw TradeAnim_GetTrademonSFX ; 2a
dw TradeAnim_End ; 2b
dw TradeAnim_AnimateFrontpic ; 2c
dw TraideAnim_Wait96 ; 2d
dw TraideAnim_Wait80IfOTEgg ; 2e
dw TraideAnim_Wait180IfOTEgg ; 2f
; 2910f
NextTradeAnim: ; 2910f
ld hl, wJumptableIndex
inc [hl]
ret
; 29114
TradeAnim_Next: ; 29114
ld hl, wTradeAnimPointer
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
; 29123
TradeAnim_End: ; 29123
ld hl, wJumptableIndex
set 7, [hl]
ret
; 29129
TradeAnim_TubeToOT1: ; 29129
ld a, $ed
call Function292f6
ld a, [wLinkTradeSendmonSpecies]
ld [wd265], a
xor a
depixel 5, 11, 4, 0
ld b, $0
jr Function2914e
TradeAnim_TubeToPlayer1: ; 2913c
ld a, $ee
call Function292f6
ld a, [wLinkTradeGetmonSpecies]
ld [wd265], a
ld a, $2
depixel 9, 18, 4, 4
ld b, $4
Function2914e: ; 2914e
push bc
push de
push bc
push de
push af
call DisableLCD
callab ClearSpriteAnims
hlbgcoord 20, 3
ld bc, $c
ld a, $60
call ByteFill
pop af
call Function29281
xor a
ld [hSCX], a
ld a, $7
ld [hWX], a
ld a, $70
ld [hWY], a
call EnableLCD
call LoadTradeBubbleGFX
pop de
ld a, SPRITE_ANIM_INDEX_11
call _InitSpriteAnimStruct
ld hl, $b
add hl, bc
pop bc
ld [hl], b
pop de
ld a, SPRITE_ANIM_INDEX_12
call _InitSpriteAnimStruct
ld hl, $b
add hl, bc
pop bc
ld [hl], b
call WaitBGMap
ld b, SCGB_1B
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
ld a, $d0
call DmgToCgbObjPal0
call NextTradeAnim
ld a, $5c
ld [wcf64], a
ret
; 291af
TradeAnim_TubeToOT2: ; 291af
call Function2981d
ld a, [hSCX]
add $2
ld [hSCX], a
cp $50
ret nz
ld a, $1
call Function29281
call NextTradeAnim
ret
; 291c4
TradeAnim_TubeToOT3: ; 291c4
call Function2981d
ld a, [hSCX]
add $2
ld [hSCX], a
cp $a0
ret nz
ld a, $2
call Function29281
call NextTradeAnim
ret
; 291d9
TradeAnim_TubeToOT4: ; 291d9
call Function2981d
ld a, [hSCX]
add $2
ld [hSCX], a
and a
ret nz
call NextTradeAnim
ret
; 291e8
TradeAnim_TubeToPlayer3: ; 291e8
call Function2981d
ld a, [hSCX]
sub $2
ld [hSCX], a
cp $b0
ret nz
ld a, $1
call Function29281
call NextTradeAnim
ret
; 291fd
TradeAnim_TubeToPlayer4: ; 291fd
call Function2981d
ld a, [hSCX]
sub $2
ld [hSCX], a
cp $60
ret nz
xor a
call Function29281
call NextTradeAnim
ret
; 29211
TradeAnim_TubeToPlayer5: ; 29211
call Function2981d
ld a, [hSCX]
sub $2
ld [hSCX], a
and a
ret nz
call NextTradeAnim
ret
; 29220
TradeAnim_TubeToOT6:
TradeAnim_TubeToPlayer6: ; 29220
ld a, $80
ld [wcf64], a
call NextTradeAnim
ret
; 29229
TradeAnim_TubeToOT8:
TradeAnim_TubeToPlayer8: ; 29229
call ClearBGPalettes
call ClearTileMap
call ClearSprites
call DisableLCD
callab ClearSpriteAnims
hlbgcoord 0, 0
ld bc, sScratch - VBGMap0
ld a, " "
call ByteFill
xor a
ld [hSCX], a
ld a, $90
ld [hWY], a
call EnableLCD
call LoadTradeBallAndCableGFX
call WaitBGMap
call Function297ed
call TradeAnim_Next
ret
; 2925d
TradeAnim_TubeToOT5:
TradeAnim_TubeToOT7:
TradeAnim_TubeToPlayer2:
TradeAnim_TubeToPlayer7: ; 2925d
call Function2981d
ld hl, wcf64
ld a, [hl]
and a
jr z, .done
dec [hl]
ret
.done
call NextTradeAnim
ret
; 2926d
TradeAnim_GiveTrademonSFX: ; 2926d
call TradeAnim_Next
ld de, SFX_GIVE_TRADEMON
call PlaySFX
ret
; 29277
TradeAnim_GetTrademonSFX: ; 29277
call TradeAnim_Next
ld de, SFX_GET_TRADEMON
call PlaySFX
ret
; 29281
Function29281: ; 29281
and 3
ld e, a
ld d, 0
ld hl, Jumptable_2928f
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 2928f
Jumptable_2928f: ; 2928f
dw Function29297
dw Function292af
dw Function292be
dw Function29297
; 29297
Function29297: ; 29297
call Function297cf
hlcoord 9, 3
ld [hl], $5b
inc hl
ld bc, 10
ld a, $60
call ByteFill
hlcoord 3, 2
call Function292ec
ret
; 292af
Function292af: ; 292af
call Function297cf
hlcoord 0, 3
ld bc, SCREEN_WIDTH
ld a, $60
call ByteFill
ret
; 292be
Function292be: ; 292be
call Function297cf
hlcoord 0, 3
ld bc, $11
ld a, $60
call ByteFill
hlcoord 17, 3
ld a, $5d
ld [hl], a
ld a, $61
ld de, SCREEN_WIDTH
ld c, $3
.loop
add hl, de
ld [hl], a
dec c
jr nz, .loop
add hl, de
ld a, $5f
ld [hld], a
ld a, $5b
ld [hl], a
hlcoord 10, 6
call Function292ec
ret
; 292ec
Function292ec: ; 292ec
ld de, TradeGameBoyTilemap
lb bc, 8, 6
call Function297db
ret
; 292f6
Function292f6: ; 292f6
push af
call ClearBGPalettes
call WaitTop
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
call ClearTileMap
hlcoord 0, 0
ld bc, SCREEN_WIDTH
ld a, "─"
call ByteFill
hlcoord 0, 1
ld de, wLinkPlayer1Name
call PlaceString
ld hl, wLinkPlayer2Name
ld de, 0
.find_name_end_loop
ld a, [hli]
cp "@"
jr z, .done
dec de
jr .find_name_end_loop
.done
hlcoord 0, 4
add hl, de
ld de, wLinkPlayer2Name
call PlaceString
hlcoord 7, 2
ld bc, 6
pop af
call ByteFill
call WaitBGMap
call WaitTop
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
call ClearTileMap
ret
; 29348
TradeAnim_EnterLinkTube: ; 29348
call ClearTileMap
call WaitTop
ld a, $a0
ld [hSCX], a
call DelayFrame
hlcoord 8, 2
ld de, Tilemap_298f7
lb bc, 3, 12
call Function297db
call WaitBGMap
ld b, SCGB_1B
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
lb de, %11100100, %11100100 ; 3,2,1,0, 3,2,1,0
call DmgToCgbObjPals
ld de, SFX_POTION
call PlaySFX
call NextTradeAnim
ret
; 2937e
TradeAnim_04: ; 2937e
ld a, [hSCX]
and a
jr z, .done
add $4
ld [hSCX], a
ret
.done
ld c, 80
call DelayFrames
call TradeAnim_Next
ret
; 29391
TradeAnim_ExitLinkTube: ; 29391
ld a, [hSCX]
cp $a0
jr z, .asm_2939c
sub $4
ld [hSCX], a
ret
.asm_2939c
call ClearTileMap
xor a
ld [hSCX], a
call TradeAnim_Next
ret
; 293a6
TradeAnim_SetupGivemonScroll: ; 293a6
ld a, $8f
ld [hWX], a
ld a, $88
ld [hSCX], a
ld a, $50
ld [hWY], a
call TradeAnim_Next
ret
; 293b6
TradeAnim_DoGivemonScroll: ; 293b6
ld a, [hWX]
cp $7
jr z, .done
sub $4
ld [hWX], a
ld a, [hSCX]
sub $4
ld [hSCX], a
ret
.done
ld a, $7
ld [hWX], a
xor a
ld [hSCX], a
call TradeAnim_Next
ret
; 293d2
TradeAnim_1d: ; 293d2
ld a, $7
ld [hWX], a
ld a, $50
ld [hWY], a
call TradeAnim_Next
ret
; 293de
TradeAnim_1e: ; 293de
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
call TradeAnim_Next
ret
; 293ea
TradeAnim_ScrollOutRight: ; 293ea
call WaitTop
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
call WaitBGMap
ld a, $7
ld [hWX], a
xor a
ld [hWY], a
call DelayFrame
call WaitTop
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
call ClearTileMap
call NextTradeAnim
ret
; 2940c
TradeAnim_ScrollOutRight2: ; 2940c
ld a, [hWX]
cp $a1
jr nc, .done
add $4
ld [hWX], a
ret
.done
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
call WaitBGMap
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
call TradeAnim_Next
ret
; 2942e
TradeAnim_ShowGivemonData: ; 2942e
call Function2951f
ld a, [wPlayerTrademonSpecies]
ld [CurPartySpecies], a
ld a, [wPlayerTrademonDVs]
ld [TempMonDVs], a
ld a, [wPlayerTrademonDVs + 1]
ld [TempMonDVs + 1], a
ld b, SCGB_1A
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
call TradeAnim_ShowGivemonFrontpic
ld a, [wPlayerTrademonSpecies]
call GetCryIndex
jr c, .skip_cry
ld e, c
ld d, b
call PlayCryHeader
.skip_cry
call TradeAnim_Next
ret
; 29461
TradeAnim_ShowGetmonData: ; 29461
call Function29549
ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], a
ld a, [wOTTrademonDVs]
ld [TempMonDVs], a
ld a, [wOTTrademonDVs + 1]
ld [TempMonDVs + 1], a
ld b, SCGB_1A
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
call TradeAnim_ShowGetmonFrontpic
call TradeAnim_Next
ret
; 29487
TradeAnim_AnimateFrontpic: ; 29487
callba AnimateTrademonFrontpic
call TradeAnim_Next
ret
; 29491
TradeAnim_GetFrontpic: ; 29491
push de
push af
predef GetUnownLetter
pop af
ld [CurPartySpecies], a
ld [CurSpecies], a
call GetBaseData
pop de
predef GetFrontpic
ret
; 294a9
TradeAnim_GetNickname: ; 294a9
push de
ld [wd265], a
call GetPokemonName
ld hl, StringBuffer1
pop de
ld bc, NAME_LENGTH
call CopyBytes
ret
; 294bb
TradeAnim_ShowGivemonFrontpic: ; 294bb
ld de, VTiles0
jr TradeAnim_ShowFrontpic
TradeAnim_ShowGetmonFrontpic: ; 294c0
ld de, VTiles0 tile $31
TradeAnim_ShowFrontpic: ; 294c3
call DelayFrame
ld hl, VTiles2
lb bc, 10, $31
call Request2bpp
call WaitTop
call Function297cf
hlcoord 7, 2
xor a
ld [hGraphicStartTile], a
lb bc, 7, 7
predef PlaceGraphic
call WaitBGMap
ret
; 294e7
TraideAnim_Wait80: ; 294e7
ld c, 80
call DelayFrames
call TradeAnim_Next
ret
; 294f0
TraideAnim_Wait40: ; 294f0
ld c, 40
call DelayFrames
call TradeAnim_Next
ret
; 294f9
TraideAnim_Wait96: ; 294f9
ld c, 96
call DelayFrames
call TradeAnim_Next
ret
; 29502
TraideAnim_Wait80IfOTEgg: ; 29502
call IsOTTrademonEgg
ret nz
ld c, 80
call DelayFrames
ret
; 2950c
TraideAnim_Wait180IfOTEgg: ; 2950c
call IsOTTrademonEgg
ret nz
ld c, 180
call DelayFrames
ret
; 29516
IsOTTrademonEgg: ; 29516
call TradeAnim_Next
ld a, [wOTTrademonSpecies]
cp EGG
ret
; 2951f
Function2951f: ; 2951f
ld de, wPlayerTrademonSpecies
ld a, [de]
cp EGG
jr z, Function295a1
call Function29573
ld de, wPlayerTrademonSpecies
call Function295e3
ld de, wPlayerTrademonSpeciesName
call Function295ef
ld a, [wPlayerTrademonCaughtData]
ld de, wPlayerTrademonOTName
call Function295f6
ld de, PlayerScreens
call Function29611
call Function295d8
ret
; 29549
Function29549: ; 29549
ld de, wOTTrademonSpecies
ld a, [de]
cp EGG
jr z, Function295a1
call Function29573
ld de, wOTTrademonSpecies
call Function295e3
ld de, wOTTrademonSpeciesName
call Function295ef
ld a, [wOTTrademonCaughtData]
ld de, wOTTrademonOTName
call Function295f6
ld de, wOTTrademonID
call Function29611
call Function295d8
ret
; 29573
Function29573: ; 29573
call WaitTop
call Function297cf
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
hlcoord 3, 0
ld b, $6
ld c, $d
call TextBox
hlcoord 4, 0
ld de, String29591
call PlaceString
ret
; 29591
String29591: ; 29591
db "─── №."
next ""
next "OT/"
next "<ID>№.@"
; 295a1
Function295a1: ; 295a1
call WaitTop
call Function297cf
ld a, VBGMap1 / $100
ld [hBGMapAddress + 1], a
hlcoord 3, 0
ld b, $6
ld c, $d
call TextBox
hlcoord 4, 2
ld de, String295c2
call PlaceString
call Function295d8
ret
; 295c2
String295c2: ; 295c2
db "EGG"
next "OT/?????"
next "<ID>№.?????@"
; 295d8
Function295d8: ; 295d8
call WaitBGMap
call WaitTop
ld a, VBGMap0 / $100
ld [hBGMapAddress + 1], a
ret
; 295e3
Function295e3: ; 295e3
hlcoord 10, 0
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
ld [hl], " "
ret
; 295ef
Function295ef: ; 295ef
hlcoord 4, 2
call PlaceString
ret
; 295f6
Function295f6: ; 295f6
cp 3
jr c, .asm_295fb
xor a
.asm_295fb
push af
hlcoord 7, 4
call PlaceString
inc bc
pop af
ld hl, Unknown_2960e
ld d, 0
ld e, a
add hl, de
ld a, [hl]
ld [bc], a
ret
; 2960e
Unknown_2960e: ; 2960e
db " ", "♂", "♀"
; 29611
Function29611: ; 29611
hlcoord 7, 6
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
ret
; 2961b
TradeAnim_RockingBall: ; 2961b
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_0E
call _InitSpriteAnimStruct
call TradeAnim_Next
ld a, $20
ld [wcf64], a
ret
; 2962c
TradeAnim_DropBall: ; 2962c
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_0E
call _InitSpriteAnimStruct
ld hl, $b
add hl, bc
ld [hl], $1
ld hl, $7
add hl, bc
ld [hl], $dc
call TradeAnim_Next
ld a, $38
ld [wcf64], a
ret
; 29649
TradeAnim_Poof: ; 29649
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_0F
call _InitSpriteAnimStruct
call TradeAnim_Next
ld a, $10
ld [wcf64], a
ld de, SFX_BALL_POOF
call PlaySFX
ret
; 29660
TradeAnim_BulgeThroughTube: ; 29660
ld a, %11100100 ; 3,2,1,0
call DmgToCgbObjPal0
depixel 5, 11
ld a, SPRITE_ANIM_INDEX_10
call _InitSpriteAnimStruct
call TradeAnim_Next
ld a, $40
ld [wcf64], a
ret
; 29676
Function29676: ; 29676 (a:5676)
ld hl, $b
add hl, bc
ld e, [hl]
ld d, 0
ld hl, Jumptable_29686
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 29686
Jumptable_29686: ; 29686 (a:5686)
dw Function2969a
dw Function296a4
dw Function296af
dw Function296bd
dw Function296cf
dw Function296dd
dw Function296f2
; 2969a
Function29694: ; 29694 (a:5694)
ld hl, $b
add hl, bc
inc [hl]
ret
Function2969a: ; 2969a (a:569a)
call Function29694
ld hl, $c
add hl, bc
ld [hl], $80
ret
Function296a4: ; 296a4 (a:56a4)
ld hl, $c
add hl, bc
ld a, [hl]
dec [hl]
and a
ret nz
call Function29694
Function296af: ; 296af (a:56af)
ld hl, $4
add hl, bc
ld a, [hl]
cp $94
jr nc, .asm_296ba
inc [hl]
ret
.asm_296ba
call Function29694
Function296bd: ; 296bd (a:56bd)
ld hl, $5
add hl, bc
ld a, [hl]
cp $4c
jr nc, .asm_296c8
inc [hl]
ret
.asm_296c8
ld hl, $
add hl, bc
ld [hl], $0
ret
Function296cf: ; 296cf (a:56cf)
ld hl, $5
add hl, bc
ld a, [hl]
cp $2c
jr z, .asm_296da
dec [hl]
ret
.asm_296da
call Function29694
Function296dd: ; 296dd (a:56dd)
ld hl, $4
add hl, bc
ld a, [hl]
cp $58
jr z, .asm_296e8
dec [hl]
ret
.asm_296e8
call Function29694
ld hl, $c
add hl, bc
ld [hl], $80
ret
Function296f2: ; 296f2 (a:56f2)
ld hl, $c
add hl, bc
ld a, [hl]
dec [hl]
and a
ret nz
ld hl, $
add hl, bc
ld [hl], $0
ret
; 29701 (a:5701)
TradeAnim_SentToOTText: ; 29701
ld a, [wLinkMode]
cp LINK_TIMECAPSULE
jr z, .time_capsule
ld hl, UnknownText_0x29737
call PrintText
ld c, 189
call DelayFrames
ld hl, UnknownText_0x29732
call PrintText
call Function297c9
ld c, 128
call DelayFrames
call TradeAnim_Next
ret
.time_capsule
ld hl, UnknownText_0x29732
call PrintText
call Function297c9
call TradeAnim_Next
ret
; 29732
UnknownText_0x29732: ; 0x29732
; was sent to @ .
text_jump UnknownText_0x1bc6e9
db "@"
; 0x29737
UnknownText_0x29737: ; 0x29737
;
text_jump UnknownText_0x1bc701
db "@"
; 0x2973c
TradeAnim_OTBidsFarewell: ; 2973c
ld hl, UnknownText_0x29752
call PrintText
call Function297c9
ld hl, UnknownText_0x29757
call PrintText
call Function297c9
call TradeAnim_Next
ret
; 29752
UnknownText_0x29752: ; 0x29752
; bids farewell to
text_jump UnknownText_0x1bc703
db "@"
; 0x29757
UnknownText_0x29757: ; 0x29757
; .
text_jump UnknownText_0x1bc719
db "@"
; 0x2975c
TradeAnim_TakeCareOfText: ; 2975c
call WaitTop
hlcoord 0, 10
ld bc, 8 * SCREEN_WIDTH
ld a, " "
call ByteFill
call WaitBGMap
ld hl, UnknownText_0x2977a
call PrintText
call Function297c9
call TradeAnim_Next
ret
; 2977a
UnknownText_0x2977a: ; 0x2977a
; Take good care of @ .
text_jump UnknownText_0x1bc71f
db "@"
; 0x2977f
TradeAnim_OTSendsText1: ; 2977f
ld hl, UnknownText_0x2979a
call PrintText
call Function297c9
ld hl, UnknownText_0x2979f
call PrintText
call Function297c9
ld c, 14
call DelayFrames
call TradeAnim_Next
ret
; 2979a
UnknownText_0x2979a: ; 0x2979a
; For @ 's @ ,
text_jump UnknownText_0x1bc739
db "@"
; 0x2979f
UnknownText_0x2979f: ; 0x2979f
; sends @ .
text_jump UnknownText_0x1bc74c
db "@"
; 0x297a4
TradeAnim_OTSendsText2: ; 297a4
ld hl, UnknownText_0x297bf
call PrintText
call Function297c9
ld hl, UnknownText_0x297c4
call PrintText
call Function297c9
ld c, 14
call DelayFrames
call TradeAnim_Next
ret
; 297bf
UnknownText_0x297bf: ; 0x297bf
; will trade @ @
text_jump UnknownText_0x1bc75e
db "@"
; 0x297c4
UnknownText_0x297c4: ; 0x297c4
; for @ 's @ .
text_jump UnknownText_0x1bc774
db "@"
; 0x297c9
Function297c9: ; 297c9
ld c, 80
call DelayFrames
ret
; 297cf
Function297cf: ; 297cf
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, " "
call ByteFill
ret
; 297db
Function297db: ; 297db
.asm_297db
push bc
push hl
.asm_297dd
ld a, [de]
inc de
ld [hli], a
dec c
jr nz, .asm_297dd
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
jr nz, .asm_297db
ret
; 297ed
Function297ed: ; 297ed
ld a, [hSGB]
and a
ld a, %11100100 ; 3,2,1,0
jr z, .not_sgb
ld a, $f0
.not_sgb
call DmgToCgbObjPal0
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
ret
; 297ff
LinkTradeAnim_LoadTradePlayerNames: ; 297ff
push de
ld de, wLinkPlayer1Name
ld bc, NAME_LENGTH
call CopyBytes
pop hl
ld de, wLinkPlayer2Name
ld bc, NAME_LENGTH
call CopyBytes
ret
; 29814
LinkTradeAnim_LoadTradeMonSpecies: ; 29814
ld a, [hl]
ld [wLinkTradeSendmonSpecies], a
ld a, [de]
ld [wLinkTradeGetmonSpecies], a
ret
; 2981d
Function2981d: ; 2981d
ld a, [wcf65]
and $7
ret nz
ld a, [rBGP]
xor $3c
call DmgToCgbBGPals
ret
; 2982b
LoadTradeBallAndCableGFX: ; 2982b
call DelayFrame
ld de, TradeBallGFX
ld hl, VTiles0 tile $62
lb bc, BANK(TradeBallGFX), $6
call Request2bpp
ld de, TradePoofGFX
ld hl, VTiles0 tile $68
lb bc, BANK(TradePoofGFX), $c
call Request2bpp
ld de, TradeCableGFX
ld hl, VTiles0 tile $74
lb bc, BANK(TradeCableGFX), $4
call Request2bpp
xor a
ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], $62
ret
; 2985a
LoadTradeBubbleGFX: ; 2985a
call DelayFrame
ld e, $3
callab Function8e83f
ld de, TradeBubbleGFX
ld hl, VTiles0 tile $72
lb bc, BANK(TradeBubbleGFX), $4
call Request2bpp
xor a
ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], $62
ret
; 29879
TradeAnim_WaitAnim: ; 29879
ld hl, wcf64
ld a, [hl]
and a
jr z, .done
dec [hl]
ret
.done
call TradeAnim_Next
ret
; 29886
TradeAnim_WaitAnim2: ; 29886
ld hl, wcf64
ld a, [hl]
and a
jr z, .done
dec [hl]
ret
.done
call TradeAnim_Next
ret
; 29893
DebugTrade: ; 29893
; This function is unreferenced.
; It was meant for use in Japanese versions, so the
; constant used for copy length was changed by accident.
ld hl, Unknown_298b5
ld a, [hli]
ld [wPlayerTrademonSpecies], a
ld de, wPlayerTrademonSenderName
ld c, 11 + 2 ; jp: 6 + 2
.loop1
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .loop1
ld a, [hli]
ld [wOTTrademonSpecies], a
ld de, wOTTrademonSenderName
ld c, 11 + 2 ; jp: 6 + 2
.loop2
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .loop2
ret
; 298b5
Unknown_298b5: ; 298b5
db VENUSAUR, "ゲーフり@@", $23, $01 ; GAME FREAK
db CHARIZARD, "クりーチャ@", $56, $04 ; Creatures Inc.
; 298c7
TradeGameBoyTilemap: ; 298c7
; 6x8
db $31, $32, $32, $32, $32, $33
db $34, $35, $36, $36, $37, $38
db $34, $39, $3a, $3a, $3b, $38
db $3c, $3d, $3e, $3e, $3f, $40
db $41, $42, $43, $43, $44, $45
db $46, $47, $43, $48, $49, $4a
db $41, $43, $4b, $4c, $4d, $4e
db $4f, $50, $50, $50, $51, $52
; 297f7
Tilemap_298f7: ; 297f7
; 12x3
db $43, $55, $56, $53, $53, $53, $53, $53, $53, $53, $53, $53
db $43, $57, $58, $54, $54, $54, $54, $54, $54, $54, $54, $54
db $43, $59, $5a, $43, $43, $43, $43, $43, $43, $43, $43, $43
; 2991b
TradeArrowGFX: INCBIN "gfx/trade/arrow.2bpp"
TradeCableGFX: INCBIN "gfx/trade/cable.2bpp"
TradeBubbleGFX: INCBIN "gfx/trade/bubble.2bpp"
TradeGameBoyLZ: INCBIN "gfx/trade/game_boy.2bpp.lz"
TradeBallGFX: INCBIN "gfx/trade/ball.2bpp"
TradePoofGFX: INCBIN "gfx/trade/poof.2bpp"