summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRangi <remy.oukaour+rangi42@gmail.com>2020-07-17 16:53:10 -0400
committerRangi <remy.oukaour+rangi42@gmail.com>2020-07-17 16:53:10 -0400
commit4ba9501c2858398f1b9ef1f6b8ace22f7afcc29f (patch)
tree626938bcd5b7e605eb60a7ebb871e1d140a26598
parenta7360edd39cb3f1f511e257eb540897304dcb3f4 (diff)
Port pokered's more local system for trade animation scripts
Also factor out trade tilemaps
-rw-r--r--engine/movie/trade_animation.asm1380
-rw-r--r--gfx/trade/game_boy.tilemap1
-rw-r--r--gfx/trade/link_cable.tilemap1
-rw-r--r--macros.asm1
-rw-r--r--macros/scripts/trade_anims.asm140
5 files changed, 3 insertions, 1520 deletions
diff --git a/engine/movie/trade_animation.asm b/engine/movie/trade_animation.asm
index 06912b5c..7cbc6cee 100644
--- a/engine/movie/trade_animation.asm
+++ b/engine/movie/trade_animation.asm
@@ -1,1379 +1 @@
-TRADEANIM_RIGHT_ARROW EQU "▶" ; $ed
-TRADEANIM_LEFT_ARROW EQU "▼" ; $ee
-
-; TradeAnim_TubeAnimJumptable.Jumptable indexes
- const_def
- const TRADEANIMSTATE_0 ; 0
- const TRADEANIMSTATE_1 ; 1
- const TRADEANIMSTATE_2 ; 2
- const TRADEANIMSTATE_3 ; 3
-TRADEANIMJUMPTABLE_LENGTH EQU const_value
-
-TradeAnimation:
- ld hl, wPlayerTrademonSenderName
- ld de, wOTTrademonSenderName
- call LinkTradeAnim_LoadTradePlayerNames
- ld hl, wPlayerTrademonSpecies
- ld de, wOTTrademonSpecies
- call LinkTradeAnim_LoadTradeMonSpecies
- ld de, .script
- jr RunTradeAnimScript
-
-.script
- tradeanim_setup_givemon_scroll
- tradeanim_show_givemon_data
- tradeanim_do_givemon_scroll
- tradeanim_wait_80
- tradeanim_poof
- tradeanim_rocking_ball
- tradeanim_enter_link_tube
- tradeanim_wait_anim
- tradeanim_bulge_through_tube
- tradeanim_wait_anim
- tradeanim_textbox_scroll
- 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_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_frontpic_scroll
- tradeanim_wait_80
- tradeanim_textbox_scroll
- tradeanim_take_care_of_text
- tradeanim_scroll_out_right
- tradeanim_end
-
-TradeAnimationPlayer2:
- ld hl, wOTTrademonSenderName
- ld de, wPlayerTrademonSenderName
- call LinkTradeAnim_LoadTradePlayerNames
- ld hl, wOTTrademonSpecies
- ld de, wPlayerTrademonSpecies
- call LinkTradeAnim_LoadTradeMonSpecies
- ld de, .script
- jr RunTradeAnimScript
-
-.script
- tradeanim_ot_sends_text_2
- tradeanim_ot_bids_farewell
- 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_frontpic_scroll
- tradeanim_wait_80
- tradeanim_textbox_scroll
- tradeanim_take_care_of_text
- tradeanim_scroll_out_right
-
- tradeanim_setup_givemon_scroll
- tradeanim_show_givemon_data
- tradeanim_do_givemon_scroll
- tradeanim_wait_80
- tradeanim_poof
- tradeanim_rocking_ball
- tradeanim_enter_link_tube
- tradeanim_wait_anim
- tradeanim_bulge_through_tube
- tradeanim_wait_anim
- tradeanim_textbox_scroll
- tradeanim_give_trademon_sfx
- tradeanim_tube_to_player
- tradeanim_sent_to_ot_text
- tradeanim_scroll_out_right
- tradeanim_end
-
-RunTradeAnimScript:
- ld hl, wTradeAnimAddress
- ld [hl], e
- inc hl
- ld [hl], d
- ldh a, [hMapAnims]
- push af
- xor a
- ldh [hMapAnims], a
- ld hl, wVramState
- ld a, [hl]
- push af
- res 0, [hl]
- ld hl, wOptions
- ld a, [hl]
- push af
- set NO_TEXT_SCROLL, [hl]
- call .TradeAnimLayout
- ld de, MUSIC_EVOLUTION
- call PlayMusic2
-.anim_loop
- call DoTradeAnimation
- jr nc, .anim_loop
- pop af
- ld [wOptions], a
- pop af
- ld [wVramState], a
- pop af
- ldh [hMapAnims], a
- ret
-
-.TradeAnimLayout:
- xor a
- ld [wJumptableIndex], a
- call ClearBGPalettes
- call ClearSprites
- call ClearTilemap
- call DisableLCD
- call LoadFontsBattleExtra
- callfar ClearSpriteAnims
- ldh a, [hCGB]
- and a
- jr z, .NotCGB
- ld a, $1
- ldh [rVBK], a
- ld hl, vTiles0
- ld bc, sScratch - vTiles0
- xor a
- call ByteFill
- ld a, $0
- ldh [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, TradeArrowRightGFX
- ld de, vTiles0 tile TRADEANIM_RIGHT_ARROW
- ld bc, 1 tiles
- ld a, BANK(TradeArrowRightGFX)
- call FarCopyBytes
- ld hl, TradeArrowLeftGFX
- ld de, vTiles0 tile TRADEANIM_LEFT_ARROW
- ld bc, 1 tiles
- ld a, BANK(TradeArrowLeftGFX)
- call FarCopyBytes
- xor a
- ldh [hSCX], a
- ldh [hSCY], a
- ld a, $7
- ldh [hWX], a
- ld a, $90
- ldh [hWY], a
- 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 TradeAnim_NormalPals
- ret
-
-DoTradeAnimation:
- ld a, [wJumptableIndex]
- bit 7, a
- jr nz, .finished
- call .DoTradeAnimCommand
- callfar PlaySpriteAnimations
- ld hl, wce65
- inc [hl]
- call DelayFrame
- and a
- ret
-
-.finished
- call LoadStandardFont
- scf
- ret
-
-.DoTradeAnimCommand:
- jumptable .JumpTable, wJumptableIndex
-
-.JumpTable:
-; entries correspond to tradeanim_* constants (see macros/scripts/trade_anims.asm)
- dw TradeAnim_AdvanceScriptPointer ; 00
- dw TradeAnim_ShowGivemonData ; 01
- dw TradeAnim_ShowGetmonData ; 02
- dw TradeAnim_EnterLinkTube1 ; 03
- dw TradeAnim_EnterLinkTube2 ; 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_FrontpicScrollStart ; 1d
- dw TradeAnim_TextboxScrollStart ; 1e
- dw TradeAnim_ScrollOutRight ; 1f
- dw TradeAnim_ScrollOutRight2 ; 20
- dw TradeAnim_Wait80 ; 21
- dw TradeAnim_RockingBall ; 22
- dw TradeAnim_DropBall ; 23
- dw TradeAnim_WaitAnim ; 24
- dw TradeAnim_Poof ; 25
- dw TradeAnim_BulgeThroughTube ; 26
- dw TradeAnim_GiveTrademonSFX ; 27
- dw TradeAnim_GetTrademonSFX ; 28
- dw TradeAnim_End ; 29
-
-TradeAnim_IncrementJumptableIndex:
- ld hl, wJumptableIndex
- inc [hl]
- ret
-
-TradeAnim_AdvanceScriptPointer:
- ld hl, wTradeAnimAddress
- 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
-
-TradeAnim_End:
- ld hl, wJumptableIndex
- set 7, [hl]
- ret
-
-TradeAnim_TubeToOT1:
- ld a, TRADEANIM_RIGHT_ARROW
- call TradeAnim_PlaceTrademonStatsOnTubeAnim
- ld a, [wLinkTradeSendmonSpecies]
- ld [wTempIconSpecies], a
- xor a
- depixel 5, 11, 4, 0
- ld b, $0
- jr TradeAnim_InitTubeAnim
-
-TradeAnim_TubeToPlayer1:
- ld a, TRADEANIM_LEFT_ARROW
- call TradeAnim_PlaceTrademonStatsOnTubeAnim
- ld a, [wLinkTradeGetmonSpecies]
- ld [wTempIconSpecies], a
- ld a, TRADEANIMSTATE_2
- depixel 9, 18, 4, 4
- ld b, $4
-TradeAnim_InitTubeAnim:
- push bc
- push de
- push bc
- push de
-
- push af
- call DisableLCD
- callfar ClearSpriteAnims
- hlbgcoord 20, 3
- ld bc, 12
- ld a, $60
- call ByteFill
- pop af
-
- call TradeAnim_TubeAnimJumptable
-
- xor a
- ldh [hSCX], a
- ld a, $7
- ldh [hWX], a
- ld a, $70
- ldh [hWY], a
- call EnableLCD
- call LoadTradeBubbleGFX
-
- pop de
- ld a, SPRITE_ANIM_INDEX_TRADEMON_ICON
- call InitSpriteAnimStruct
-
- ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
- add hl, bc
- pop bc
- ld [hl], b
-
- pop de
- ld a, SPRITE_ANIM_INDEX_TRADEMON_BUBBLE
- call InitSpriteAnimStruct
-
- ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
- add hl, bc
- pop bc
- ld [hl], b
-
- call WaitBGMap
- ld b, SCGB_TRADE_TUBE
- call GetSGBLayout
- ld a, %11100100 ; 3,2,1,0
- call DmgToCgbBGPals
- ld a, %11010000
- call DmgToCgbObjPal0
-
- call TradeAnim_IncrementJumptableIndex
- ld a, 92
- ld [wFrameCounter], a
- ret
-
-TradeAnim_TubeToOT2:
- call TradeAnim_FlashBGPals
- ldh a, [hSCX]
- add $2
- ldh [hSCX], a
- cp $50
- ret nz
- ld a, TRADEANIMSTATE_1
- call TradeAnim_TubeAnimJumptable
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_TubeToOT3:
- call TradeAnim_FlashBGPals
- ldh a, [hSCX]
- add $2
- ldh [hSCX], a
- cp $a0
- ret nz
- ld a, TRADEANIMSTATE_2
- call TradeAnim_TubeAnimJumptable
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_TubeToOT4:
- call TradeAnim_FlashBGPals
- ldh a, [hSCX]
- add $2
- ldh [hSCX], a
- and a
- ret nz
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_TubeToPlayer3:
- call TradeAnim_FlashBGPals
- ldh a, [hSCX]
- sub $2
- ldh [hSCX], a
- cp $b0
- ret nz
- ld a, TRADEANIMSTATE_1
- call TradeAnim_TubeAnimJumptable
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_TubeToPlayer4:
- call TradeAnim_FlashBGPals
- ldh a, [hSCX]
- sub $2
- ldh [hSCX], a
- cp $60
- ret nz
- xor a ; TRADEANIMSTATE_0
- call TradeAnim_TubeAnimJumptable
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_TubeToPlayer5:
- call TradeAnim_FlashBGPals
- ldh a, [hSCX]
- sub $2
- ldh [hSCX], a
- and a
- ret nz
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_TubeToOT6:
-TradeAnim_TubeToPlayer6:
- ld a, 128
- ld [wFrameCounter], a
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_TubeToOT8:
-TradeAnim_TubeToPlayer8:
- call ClearBGPalettes
- call ClearTilemap
- call ClearSprites
- call DisableLCD
- callfar ClearSpriteAnims
- hlbgcoord 0, 0
- ld bc, sScratch - vBGMap0
- ld a, " "
- call ByteFill
- xor a
- ldh [hSCX], a
- ld a, $90
- ldh [hWY], a
- call EnableLCD
- call LoadTradeBallAndCableGFX
- call WaitBGMap
- call TradeAnim_NormalPals
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_TubeToOT5:
-TradeAnim_TubeToOT7:
-TradeAnim_TubeToPlayer2:
-TradeAnim_TubeToPlayer7:
- call TradeAnim_FlashBGPals
- ld hl, wFrameCounter
- ld a, [hl]
- and a
- jr z, .done
- dec [hl]
- ret
-
-.done
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_GiveTrademonSFX:
- call TradeAnim_AdvanceScriptPointer
- ld de, SFX_GIVE_TRADEMON
- call PlaySFX
- ret
-
-TradeAnim_GetTrademonSFX:
- call TradeAnim_AdvanceScriptPointer
- ld de, SFX_GET_TRADEMON
- call PlaySFX
- ret
-
-TradeAnim_TubeAnimJumptable:
- maskbits TRADEANIMJUMPTABLE_LENGTH
- ld e, a
- ld d, 0
- ld hl, .Jumptable
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp hl
-
-.Jumptable:
-; entries correspond to TRADEANIMSTATE_* constants
- dw .Zero
- dw .One
- dw .Two
- dw .Three
-
-.Zero:
-.Three:
- call TradeAnim_BlankTilemap
- hlcoord 9, 3
- ld [hl], $5b
- inc hl
- ld bc, 10
- ld a, $60
- call ByteFill
- hlcoord 3, 2
- call TradeAnim_CopyTradeGameBoyTilemap
- ret
-
-.One:
- call TradeAnim_BlankTilemap
- hlcoord 0, 3
- ld bc, SCREEN_WIDTH
- ld a, $60
- call ByteFill
- ret
-
-.Two:
- call TradeAnim_BlankTilemap
- 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 TradeAnim_CopyTradeGameBoyTilemap
- ret
-
-TradeAnim_CopyTradeGameBoyTilemap:
- ld de, TradeGameBoyTilemap
- lb bc, 8, 6
- call TradeAnim_CopyBoxFromDEtoHL
- ret
-
-TradeAnim_PlaceTrademonStatsOnTubeAnim:
- push af
- call ClearBGPalettes
- call WaitTop
- ld a, HIGH(vBGMap1)
- ldh [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, HIGH(vBGMap0)
- ldh [hBGMapAddress + 1], a
- call ClearTilemap
- ret
-
-TradeAnim_EnterLinkTube1:
- call ClearTilemap
- call WaitTop
- ld a, $a0
- ldh [hSCX], a
- call DelayFrame
- hlcoord 8, 2
- ld de, TradeLinkTubeTilemap
- lb bc, 3, 12
- call TradeAnim_CopyBoxFromDEtoHL
- call WaitBGMap
- ld b, SCGB_TRADE_TUBE
- 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 TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_EnterLinkTube2:
- ldh a, [hSCX]
- and a
- jr z, .done
- add $4
- ldh [hSCX], a
- ret
-
-.done
- ld c, 80
- call DelayFrames
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_ExitLinkTube:
- ldh a, [hSCX]
- cp $a0
- jr z, .done
- sub $4
- ldh [hSCX], a
- ret
-
-.done
- call ClearTilemap
- xor a
- ldh [hSCX], a
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_SetupGivemonScroll:
- ld a, $8f
- ldh [hWX], a
- ld a, $88
- ldh [hSCX], a
- ld a, $50
- ldh [hWY], a
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_DoGivemonScroll:
- ldh a, [hWX]
- cp $7
- jr z, .done
- sub $4
- ldh [hWX], a
- ldh a, [hSCX]
- sub $4
- ldh [hSCX], a
- ret
-
-.done
- ld a, $7
- ldh [hWX], a
- xor a
- ldh [hSCX], a
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_FrontpicScrollStart:
- ld a, $7
- ldh [hWX], a
- ld a, $50
- ldh [hWY], a
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_TextboxScrollStart:
- ld a, $7
- ldh [hWX], a
- ld a, $90
- ldh [hWY], a
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_ScrollOutRight:
- call WaitTop
- ld a, HIGH(vBGMap1)
- ldh [hBGMapAddress + 1], a
- call WaitBGMap
- ld a, $7
- ldh [hWX], a
- xor a
- ldh [hWY], a
- call DelayFrame
- call WaitTop
- ld a, HIGH(vBGMap0)
- ldh [hBGMapAddress + 1], a
- call ClearTilemap
- call TradeAnim_IncrementJumptableIndex
- ret
-
-TradeAnim_ScrollOutRight2:
- ldh a, [hWX]
- cp $a1
- jr nc, .done
- inc a
- inc a
- ldh [hWX], a
- ret
-
-.done
- ld a, HIGH(vBGMap1)
- ldh [hBGMapAddress + 1], a
- call WaitBGMap
- ld a, $7
- ldh [hWX], a
- ld a, $90
- ldh [hWY], a
- ld a, HIGH(vBGMap0)
- ldh [hBGMapAddress + 1], a
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_ShowGivemonData:
- call ShowPlayerTrademonStats
- ld a, [wPlayerTrademonSpecies]
- ld [wCurPartySpecies], a
- ld a, [wPlayerTrademonDVs]
- ld [wTempMonDVs], a
- ld a, [wPlayerTrademonDVs + 1]
- ld [wTempMonDVs + 1], a
- ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
- 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 PlayCry
-.skip_cry
-
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_ShowGetmonData:
- call ShowOTTrademonStats
- ld a, [wOTTrademonSpecies]
- ld [wCurPartySpecies], a
- ld a, [wOTTrademonDVs]
- ld [wTempMonDVs], a
- ld a, [wOTTrademonDVs + 1]
- ld [wTempMonDVs + 1], a
- ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
- call GetSGBLayout
- ld a, %11100100 ; 3,2,1,0
- call DmgToCgbBGPals
- call TradeAnim_ShowGetmonFrontpic
-
- ld a, [wOTTrademonSpecies]
- call GetCryIndex
- jr c, .skip_cry
- ld e, c
- ld d, b
- call PlayCry
-.skip_cry
-
- call TradeAnim_AdvanceScriptPointer
- ret
-
-TradeAnim_GetFrontpic:
- push de
- push af
- predef GetUnownLetter
- pop af
- ld [wCurPartySpecies], a
- ld [wCurSpecies], a
- call GetBaseData
- pop de
- predef GetMonFrontpic
- ret
-
-TradeAnim_GetNickname:
- push de
- ld [wNamedObjectIndexBuffer], a
- call GetPokemonName
- ld hl, wStringBuffer1
- pop de
- ld bc, NAME_LENGTH
- call CopyBytes
- ret
-
-TradeAnim_ShowGivemonFrontpic:
- ld de, vTiles0
- jr TradeAnim_ShowFrontpic
-
-TradeAnim_ShowGetmonFrontpic:
- ld de, vTiles0 tile $31
-TradeAnim_ShowFrontpic:
- call DelayFrame
- ld hl, vTiles2
- lb bc, 10, $31
- call Request2bpp
- call WaitTop
- call TradeAnim_BlankTilemap
- hlcoord 7, 2
- xor a
- ldh [hGraphicStartTile], a
- lb bc, 7, 7
- predef PlaceGraphic
- call WaitBGMap
- ret
-
-TradeAnim_Wait80:
- ld c, 80
- call DelayFrames
- call TradeAnim_AdvanceScriptPointer
- ret
-
-ShowPlayerTrademonStats:
- ld de, wPlayerTrademonSpecies
- ld a, [de]
- cp EGG
- jr z, TrademonStats_Egg
- call TrademonStats_MonTemplate
- ld de, wPlayerTrademonSpecies
- call TrademonStats_PrintSpeciesNumber
- ld de, wPlayerTrademonSpeciesName
- call TrademonStats_PrintSpeciesName
- ld de, wPlayerTrademonOTName
- call TrademonStats_PrintOTName
- ld de, wPlayerTrademonID
- call TrademonStats_PrintTrademonID
- call TrademonStats_WaitBGMap
- ret
-
-ShowOTTrademonStats:
- ld de, wOTTrademonSpecies
- ld a, [de]
- cp EGG
- jr z, TrademonStats_Egg
- call TrademonStats_MonTemplate
- ld de, wOTTrademonSpecies
- call TrademonStats_PrintSpeciesNumber
- ld de, wOTTrademonSpeciesName
- call TrademonStats_PrintSpeciesName
- ld de, wOTTrademonOTName
- call TrademonStats_PrintOTName
- ld de, wOTTrademonID
- call TrademonStats_PrintTrademonID
- call TrademonStats_WaitBGMap
- ret
-
-TrademonStats_MonTemplate:
- call WaitTop
- call TradeAnim_BlankTilemap
- ld a, HIGH(vBGMap1)
- ldh [hBGMapAddress + 1], a
- hlcoord 3, 0
- ld b, $6
- ld c, $d
- call Textbox
- hlcoord 4, 0
- ld de, .OTMonData
- call PlaceString
- ret
-
-.OTMonData:
- db "─── №."
- next ""
- next "OT/"
- next "<ID>№.@"
-
-TrademonStats_Egg:
- call WaitTop
- call TradeAnim_BlankTilemap
- ld a, HIGH(vBGMap1)
- ldh [hBGMapAddress + 1], a
- hlcoord 3, 0
- ld b, 6
- ld c, 13
- call Textbox
- hlcoord 4, 2
- ld de, .EggData
- call PlaceString
- call TrademonStats_WaitBGMap
- ret
-
-.EggData:
- db "EGG"
- next "OT/?????"
- next "<ID>№.?????@"
-
-TrademonStats_WaitBGMap:
- call WaitBGMap
- call WaitTop
- ld a, HIGH(vBGMap0)
- ldh [hBGMapAddress + 1], a
- ret
-
-TrademonStats_PrintSpeciesNumber:
- hlcoord 10, 0
- lb bc, PRINTNUM_LEADINGZEROS | 1, 3
- call PrintNum
- ret
-
-TrademonStats_PrintSpeciesName:
- hlcoord 4, 2
- call PlaceString
- ret
-
-TrademonStats_PrintOTName:
- hlcoord 7, 4
- call PlaceString
- ret
-
-TrademonStats_PrintTrademonID:
- hlcoord 7, 6
- lb bc, PRINTNUM_LEADINGZEROS | 2, 5
- call PrintNum
- ret
-
-TradeAnim_RockingBall:
- depixel 10, 11, 4, 0
- ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL
- call InitSpriteAnimStruct
- call TradeAnim_AdvanceScriptPointer
- ld a, 64
- ld [wFrameCounter], a
- ret
-
-TradeAnim_DropBall:
- depixel 10, 11, 4, 0
- ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL
- call InitSpriteAnimStruct
- ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
- add hl, bc
- ld [hl], $1
- ld hl, SPRITEANIMSTRUCT_YOFFSET
- add hl, bc
- ld [hl], $dc
- call TradeAnim_AdvanceScriptPointer
- ld a, 56
- ld [wFrameCounter], a
- ret
-
-TradeAnim_Poof:
- depixel 10, 11, 4, 0
- ld a, SPRITE_ANIM_INDEX_TRADE_POOF
- call InitSpriteAnimStruct
- call TradeAnim_AdvanceScriptPointer
- ld a, 16
- ld [wFrameCounter], a
- ld de, SFX_BALL_POOF
- call PlaySFX
- ret
-
-TradeAnim_BulgeThroughTube:
- ld a, %11100100 ; 3,2,1,0
- call DmgToCgbObjPal0
- depixel 5, 11
- ld a, SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE
- call InitSpriteAnimStruct
- call TradeAnim_AdvanceScriptPointer
- ld a, 128
- ld [wFrameCounter], a
- ret
-
-TradeAnim_AnimateTrademonInTube:
- ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
- add hl, bc
- ld e, [hl]
- ld d, 0
- ld hl, .Jumptable
- add hl, de
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp hl
-
-.Jumptable:
- dw .InitTimer
- dw .WaitTimer1
- dw .MoveRight
- dw .MoveDown
- dw .MoveUp
- dw .MoveLeft
- dw .WaitTimer2
-
-.JumptableNext:
- ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX
- add hl, bc
- inc [hl]
- ret
-
-.InitTimer:
- call .JumptableNext
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld [hl], $80
- ret
-
-.WaitTimer1:
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld a, [hl]
- dec [hl]
- and a
- ret nz
- call .JumptableNext
-
-.MoveRight:
- ld hl, SPRITEANIMSTRUCT_XCOORD
- add hl, bc
- ld a, [hl]
- cp $94
- jr nc, .done_move_right
- inc [hl]
- ret
-
-.done_move_right
- call .JumptableNext
-
-.MoveDown:
- ld hl, SPRITEANIMSTRUCT_YCOORD
- add hl, bc
- ld a, [hl]
- cp $4c
- jr nc, .done_move_down
- inc [hl]
- ret
-
-.done_move_down
- ld hl, SPRITEANIMSTRUCT_INDEX
- add hl, bc
- ld [hl], $0
- ret
-
-.MoveUp:
- ld hl, SPRITEANIMSTRUCT_YCOORD
- add hl, bc
- ld a, [hl]
- cp $2c
- jr z, .done_move_up
- dec [hl]
- ret
-
-.done_move_up
- call .JumptableNext
-
-.MoveLeft:
- ld hl, SPRITEANIMSTRUCT_XCOORD
- add hl, bc
- ld a, [hl]
- cp $58
- jr z, .done_move_left
- dec [hl]
- ret
-
-.done_move_left
- call .JumptableNext
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld [hl], $80
- ret
-
-.WaitTimer2:
- ld hl, SPRITEANIMSTRUCT_0C
- add hl, bc
- ld a, [hl]
- dec [hl]
- and a
- ret nz
- ld hl, SPRITEANIMSTRUCT_INDEX
- add hl, bc
- ld [hl], $0
- ret
-
-TradeAnim_SentToOTText:
- ld a, [wLinkMode]
- cp LINK_TIMECAPSULE
- jr z, .time_capsule
- ld hl, .MonNameSentToText
- call PrintText
- ld c, 189
- call DelayFrames
- ld hl, .MonWasSentToText
- call PrintText
- call TradeAnim_Wait80Frames
- ld c, 128
- call DelayFrames
- call TradeAnim_AdvanceScriptPointer
- ret
-
-.time_capsule
- ld hl, .MonWasSentToText
- call PrintText
- call TradeAnim_Wait80Frames
- call TradeAnim_AdvanceScriptPointer
- ret
-
-.MonWasSentToText:
- text_far _MonWasSentToText
- text_end
-
-.MonNameSentToText:
- text_far _MonNameSentToText
- text_end
-
-TradeAnim_OTBidsFarewell:
- ld hl, .BidsFarewellToMonText
- call PrintText
- call TradeAnim_Wait80Frames
- ld hl, .MonNameBidsFarewellText
- call PrintText
- call TradeAnim_Wait80Frames
- call TradeAnim_AdvanceScriptPointer
- ret
-
-.BidsFarewellToMonText:
- text_far _BidsFarewellToMonText
- text_end
-
-.MonNameBidsFarewellText:
- text_far _MonNameBidsFarewellText
- text_end
-
-TradeAnim_TakeCareOfText:
- call WaitTop
- hlcoord 0, 10
- ld bc, 8 * SCREEN_WIDTH
- ld a, " "
- call ByteFill
- call WaitBGMap
- ld hl, .TakeGoodCareOfMonText
- call PrintText
- call TradeAnim_Wait80Frames
- call TradeAnim_AdvanceScriptPointer
- ret
-
-.TakeGoodCareOfMonText:
- text_far _TakeGoodCareOfMonText
- text_end
-
-TradeAnim_OTSendsText1:
- ld hl, .ForYourMonSendsText
- call PrintText
- call TradeAnim_Wait80Frames
- ld hl, .OTSendsText
- call PrintText
- call TradeAnim_Wait80Frames
- ld c, 14
- call DelayFrames
- call TradeAnim_AdvanceScriptPointer
- ret
-
-.ForYourMonSendsText:
- text_far _ForYourMonSendsText
- text_end
-
-.OTSendsText:
- text_far _OTSendsText
- text_end
-
-TradeAnim_OTSendsText2:
- ld hl, .WillTradeText
- call PrintText
- call TradeAnim_Wait80Frames
- ld hl, .ForYourMonWillTradeText
- call PrintText
- call TradeAnim_Wait80Frames
- ld c, 14
- call DelayFrames
- call TradeAnim_AdvanceScriptPointer
- ret
-
-.WillTradeText:
- text_far _WillTradeText
- text_end
-
-.ForYourMonWillTradeText:
- text_far _ForYourMonWillTradeText
- text_end
-
-TradeAnim_Wait80Frames:
- ld c, 80
- call DelayFrames
- ret
-
-TradeAnim_BlankTilemap:
- hlcoord 0, 0
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- ld a, " "
- call ByteFill
- ret
-
-TradeAnim_CopyBoxFromDEtoHL:
-.row
- push bc
- push hl
-.col
- ld a, [de]
- inc de
- ld [hli], a
- dec c
- jr nz, .col
- pop hl
- ld bc, SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .row
- ret
-
-TradeAnim_NormalPals:
- ldh 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
-
-LinkTradeAnim_LoadTradePlayerNames:
- push de
- ld de, wLinkPlayer1Name
- ld bc, NAME_LENGTH
- call CopyBytes
- pop hl
- ld de, wLinkPlayer2Name
- ld bc, NAME_LENGTH
- call CopyBytes
- ret
-
-LinkTradeAnim_LoadTradeMonSpecies:
- ld a, [hl]
- ld [wLinkTradeSendmonSpecies], a
- ld a, [de]
- ld [wLinkTradeGetmonSpecies], a
- ret
-
-TradeAnim_FlashBGPals:
- ld a, [wce65]
- and $7
- ret nz
- ldh a, [rBGP]
- xor %00111100
- call DmgToCgbBGPals
- ret
-
-LoadTradeBallAndCableGFX:
- 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), 12
- 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
-
-LoadTradeBubbleGFX:
- call DelayFrame
- ld e, MONICON_TRADE
- callfar LoadMenuMonIcon
- 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
-
-TradeAnim_WaitAnim:
- ld hl, wFrameCounter
- ld a, [hl]
- and a
- jr z, .done
- dec [hl]
- ret
-
-.done
- call TradeAnim_AdvanceScriptPointer
- ret
-
-DebugTrade: ; unreferenced
-; This function was meant for use in Japanese versions, so the
-; constant used for copy length was changed by accident.
-
- ld hl, .DebugTradeData
-
- ld a, [hli]
- ld [wPlayerTrademonSpecies], a
- ld de, wPlayerTrademonSenderName
- ld c, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 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, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 2
-.loop2
- ld a, [hli]
- ld [de], a
- inc de
- dec c
- jr nz, .loop2
- ret
-
-debugtrade: MACRO
-; species, ot name, ot id (?)
- db \1, \2
- dw \3
-ENDM
-
-.DebugTradeData:
- debugtrade VENUSAUR, "ゲーフり@@", $0123 ; GAME FREAK
- debugtrade CHARIZARD, "クりーチャ@", $0456 ; Creatures Inc.
-
-TradeGameBoyTilemap:
-; 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
-
-TradeLinkTubeTilemap:
-; 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
-
-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"
+TRADEANIM_RIGHT_ARROW EQU "▶" ; $ed TRADEANIM_LEFT_ARROW EQU "▼" ; $ee ; TradeAnim_TubeAnimJumptable.Jumptable indexes const_def const TRADEANIMSTATE_0 ; 0 const TRADEANIMSTATE_1 ; 1 const TRADEANIMSTATE_2 ; 2 const TRADEANIMSTATE_3 ; 3 TRADEANIMJUMPTABLE_LENGTH EQU const_value add_tradeanim: MACRO \1_TradeCmd: dw \1 ENDM tradeanim: MACRO db (\1_TradeCmd - DoTradeAnimation.JumpTable) / 2 ENDM TradeAnimation: ld hl, wPlayerTrademonSenderName ld de, wOTTrademonSenderName call LinkTradeAnim_LoadTradePlayerNames ld hl, wPlayerTrademonSpecies ld de, wOTTrademonSpecies call LinkTradeAnim_LoadTradeMonSpecies ld de, .script jr RunTradeAnimScript .script tradeanim TradeAnim_SetupGivemonScroll tradeanim TradeAnim_ShowGivemonData tradeanim TradeAnim_DoGivemonScroll tradeanim TradeAnim_Wait80 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_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_Wait80 tradeanim TradeAnim_TextboxScrollStart tradeanim TradeAnim_TakeCareOfText tradeanim TradeAnim_ScrollOutRight tradeanim TradeAnim_End TradeAnimationPlayer2: ld hl, wOTTrademonSenderName ld de, wPlayerTrademonSenderName call LinkTradeAnim_LoadTradePlayerNames ld hl, wOTTrademonSpecies ld de, wPlayerTrademonSpecies call LinkTradeAnim_LoadTradeMonSpecies ld de, .script jr RunTradeAnimScript .script tradeanim TradeAnim_OTSendsText2 tradeanim TradeAnim_OTBidsFarewell 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_Wait80 tradeanim TradeAnim_TextboxScrollStart tradeanim TradeAnim_TakeCareOfText tradeanim TradeAnim_ScrollOutRight tradeanim TradeAnim_SetupGivemonScroll tradeanim TradeAnim_ShowGivemonData tradeanim TradeAnim_DoGivemonScroll tradeanim TradeAnim_Wait80 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 RunTradeAnimScript: ld hl, wTradeAnimAddress ld [hl], e inc hl ld [hl], d ldh a, [hMapAnims] push af xor a ldh [hMapAnims], a ld hl, wVramState ld a, [hl] push af res 0, [hl] ld hl, wOptions ld a, [hl] push af set NO_TEXT_SCROLL, [hl] call .TradeAnimLayout ld de, MUSIC_EVOLUTION call PlayMusic2 .anim_loop call DoTradeAnimation jr nc, .anim_loop pop af ld [wOptions], a pop af ld [wVramState], a pop af ldh [hMapAnims], a ret .TradeAnimLayout: xor a ld [wJumptableIndex], a call ClearBGPalettes call ClearSprites call ClearTilemap call DisableLCD call LoadFontsBattleExtra callfar ClearSpriteAnims ldh a, [hCGB] and a jr z, .NotCGB ld a, $1 ldh [rVBK], a ld hl, vTiles0 ld bc, sScratch - vTiles0 xor a call ByteFill ld a, $0 ldh [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, TradeArrowRightGFX ld de, vTiles0 tile TRADEANIM_RIGHT_ARROW ld bc, 1 tiles ld a, BANK(TradeArrowRightGFX) call FarCopyBytes ld hl, TradeArrowLeftGFX ld de, vTiles0 tile TRADEANIM_LEFT_ARROW ld bc, 1 tiles ld a, BANK(TradeArrowLeftGFX) call FarCopyBytes xor a ldh [hSCX], a ldh [hSCY], a ld a, $7 ldh [hWX], a ld a, $90 ldh [hWY], a 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 TradeAnim_NormalPals ret DoTradeAnimation: ld a, [wJumptableIndex] bit 7, a jr nz, .finished call .DoTradeAnimCommand callfar PlaySpriteAnimations ld hl, wce65 inc [hl] call DelayFrame and a ret .finished call LoadStandardFont scf ret .DoTradeAnimCommand: jumptable .JumpTable, wJumptableIndex .JumpTable: ; entries correspond to tradeanim_* constants (see macros/scripts/trade_anims.asm) 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_RockingBall ; 22 add_tradeanim TradeAnim_DropBall ; 23 add_tradeanim TradeAnim_WaitAnim ; 24 add_tradeanim TradeAnim_Poof ; 25 add_tradeanim TradeAnim_BulgeThroughTube ; 26 add_tradeanim TradeAnim_GiveTrademonSFX ; 27 add_tradeanim TradeAnim_GetTrademonSFX ; 28 add_tradeanim TradeAnim_End ; 29 TradeAnim_IncrementJumptableIndex: ld hl, wJumptableIndex inc [hl] ret TradeAnim_AdvanceScriptPointer: ld hl, wTradeAnimAddress 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 TradeAnim_End: ld hl, wJumptableIndex set 7, [hl] ret TradeAnim_TubeToOT1: ld a, TRADEANIM_RIGHT_ARROW call TradeAnim_PlaceTrademonStatsOnTubeAnim ld a, [wLinkTradeSendmonSpecies] ld [wTempIconSpecies], a xor a depixel 5, 11, 4, 0 ld b, $0 jr TradeAnim_InitTubeAnim TradeAnim_TubeToPlayer1: ld a, TRADEANIM_LEFT_ARROW call TradeAnim_PlaceTrademonStatsOnTubeAnim ld a, [wLinkTradeGetmonSpecies] ld [wTempIconSpecies], a ld a, TRADEANIMSTATE_2 depixel 9, 18, 4, 4 ld b, $4 TradeAnim_InitTubeAnim: push bc push de push bc push de push af call DisableLCD callfar ClearSpriteAnims hlbgcoord 20, 3 ld bc, 12 ld a, $60 call ByteFill pop af call TradeAnim_TubeAnimJumptable xor a ldh [hSCX], a ld a, $7 ldh [hWX], a ld a, $70 ldh [hWY], a call EnableLCD call LoadTradeBubbleGFX pop de ld a, SPRITE_ANIM_INDEX_TRADEMON_ICON call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc pop bc ld [hl], b pop de ld a, SPRITE_ANIM_INDEX_TRADEMON_BUBBLE call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc pop bc ld [hl], b call WaitBGMap ld b, SCGB_TRADE_TUBE call GetSGBLayout ld a, %11100100 ; 3,2,1,0 call DmgToCgbBGPals ld a, %11010000 call DmgToCgbObjPal0 call TradeAnim_IncrementJumptableIndex ld a, 92 ld [wFrameCounter], a ret TradeAnim_TubeToOT2: call TradeAnim_FlashBGPals ldh a, [hSCX] add $2 ldh [hSCX], a cp $50 ret nz ld a, TRADEANIMSTATE_1 call TradeAnim_TubeAnimJumptable call TradeAnim_IncrementJumptableIndex ret TradeAnim_TubeToOT3: call TradeAnim_FlashBGPals ldh a, [hSCX] add $2 ldh [hSCX], a cp $a0 ret nz ld a, TRADEANIMSTATE_2 call TradeAnim_TubeAnimJumptable call TradeAnim_IncrementJumptableIndex ret TradeAnim_TubeToOT4: call TradeAnim_FlashBGPals ldh a, [hSCX] add $2 ldh [hSCX], a and a ret nz call TradeAnim_IncrementJumptableIndex ret TradeAnim_TubeToPlayer3: call TradeAnim_FlashBGPals ldh a, [hSCX] sub $2 ldh [hSCX], a cp $b0 ret nz ld a, TRADEANIMSTATE_1 call TradeAnim_TubeAnimJumptable call TradeAnim_IncrementJumptableIndex ret TradeAnim_TubeToPlayer4: call TradeAnim_FlashBGPals ldh a, [hSCX] sub $2 ldh [hSCX], a cp $60 ret nz xor a ; TRADEANIMSTATE_0 call TradeAnim_TubeAnimJumptable call TradeAnim_IncrementJumptableIndex ret TradeAnim_TubeToPlayer5: call TradeAnim_FlashBGPals ldh a, [hSCX] sub $2 ldh [hSCX], a and a ret nz call TradeAnim_IncrementJumptableIndex ret TradeAnim_TubeToOT6: TradeAnim_TubeToPlayer6: ld a, 128 ld [wFrameCounter], a call TradeAnim_IncrementJumptableIndex ret TradeAnim_TubeToOT8: TradeAnim_TubeToPlayer8: call ClearBGPalettes call ClearTilemap call ClearSprites call DisableLCD callfar ClearSpriteAnims hlbgcoord 0, 0 ld bc, sScratch - vBGMap0 ld a, " " call ByteFill xor a ldh [hSCX], a ld a, $90 ldh [hWY], a call EnableLCD call LoadTradeBallAndCableGFX call WaitBGMap call TradeAnim_NormalPals call TradeAnim_AdvanceScriptPointer ret TradeAnim_TubeToOT5: TradeAnim_TubeToOT7: TradeAnim_TubeToPlayer2: TradeAnim_TubeToPlayer7: call TradeAnim_FlashBGPals ld hl, wFrameCounter ld a, [hl] and a jr z, .done dec [hl] ret .done call TradeAnim_IncrementJumptableIndex ret TradeAnim_GiveTrademonSFX: call TradeAnim_AdvanceScriptPointer ld de, SFX_GIVE_TRADEMON call PlaySFX ret TradeAnim_GetTrademonSFX: call TradeAnim_AdvanceScriptPointer ld de, SFX_GET_TRADEMON call PlaySFX ret TradeAnim_TubeAnimJumptable: maskbits TRADEANIMJUMPTABLE_LENGTH ld e, a ld d, 0 ld hl, .Jumptable add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp hl .Jumptable: ; entries correspond to TRADEANIMSTATE_* constants dw .Zero dw .One dw .Two dw .Three .Zero: .Three: call TradeAnim_BlankTilemap hlcoord 9, 3 ld [hl], $5b inc hl ld bc, 10 ld a, $60 call ByteFill hlcoord 3, 2 call TradeAnim_CopyTradeGameBoyTilemap ret .One: call TradeAnim_BlankTilemap hlcoord 0, 3 ld bc, SCREEN_WIDTH ld a, $60 call ByteFill ret .Two: call TradeAnim_BlankTilemap 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 TradeAnim_CopyTradeGameBoyTilemap ret TradeAnim_CopyTradeGameBoyTilemap: ld de, TradeGameBoyTilemap lb bc, 8, 6 call TradeAnim_CopyBoxFromDEtoHL ret TradeAnim_PlaceTrademonStatsOnTubeAnim: push af call ClearBGPalettes call WaitTop ld a, HIGH(vBGMap1) ldh [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, HIGH(vBGMap0) ldh [hBGMapAddress + 1], a call ClearTilemap ret TradeAnim_EnterLinkTube1: call ClearTilemap call WaitTop ld a, $a0 ldh [hSCX], a call DelayFrame hlcoord 8, 2 ld de, TradeLinkTubeTilemap lb bc, 3, 12 call TradeAnim_CopyBoxFromDEtoHL call WaitBGMap ld b, SCGB_TRADE_TUBE 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 TradeAnim_IncrementJumptableIndex ret TradeAnim_EnterLinkTube2: ldh a, [hSCX] and a jr z, .done add $4 ldh [hSCX], a ret .done ld c, 80 call DelayFrames call TradeAnim_AdvanceScriptPointer ret TradeAnim_ExitLinkTube: ldh a, [hSCX] cp $a0 jr z, .done sub $4 ldh [hSCX], a ret .done call ClearTilemap xor a ldh [hSCX], a call TradeAnim_AdvanceScriptPointer ret TradeAnim_SetupGivemonScroll: ld a, $8f ldh [hWX], a ld a, $88 ldh [hSCX], a ld a, $50 ldh [hWY], a call TradeAnim_AdvanceScriptPointer ret TradeAnim_DoGivemonScroll: ldh a, [hWX] cp $7 jr z, .done sub $4 ldh [hWX], a ldh a, [hSCX] sub $4 ldh [hSCX], a ret .done ld a, $7 ldh [hWX], a xor a ldh [hSCX], a call TradeAnim_AdvanceScriptPointer ret TradeAnim_FrontpicScrollStart: ld a, $7 ldh [hWX], a ld a, $50 ldh [hWY], a call TradeAnim_AdvanceScriptPointer ret TradeAnim_TextboxScrollStart: ld a, $7 ldh [hWX], a ld a, $90 ldh [hWY], a call TradeAnim_AdvanceScriptPointer ret TradeAnim_ScrollOutRight: call WaitTop ld a, HIGH(vBGMap1) ldh [hBGMapAddress + 1], a call WaitBGMap ld a, $7 ldh [hWX], a xor a ldh [hWY], a call DelayFrame call WaitTop ld a, HIGH(vBGMap0) ldh [hBGMapAddress + 1], a call ClearTilemap call TradeAnim_IncrementJumptableIndex ret TradeAnim_ScrollOutRight2: ldh a, [hWX] cp $a1 jr nc, .done inc a inc a ldh [hWX], a ret .done ld a, HIGH(vBGMap1) ldh [hBGMapAddress + 1], a call WaitBGMap ld a, $7 ldh [hWX], a ld a, $90 ldh [hWY], a ld a, HIGH(vBGMap0) ldh [hBGMapAddress + 1], a call TradeAnim_AdvanceScriptPointer ret TradeAnim_ShowGivemonData: call ShowPlayerTrademonStats ld a, [wPlayerTrademonSpecies] ld [wCurPartySpecies], a ld a, [wPlayerTrademonDVs] ld [wTempMonDVs], a ld a, [wPlayerTrademonDVs + 1] ld [wTempMonDVs + 1], a ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS 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 PlayCry .skip_cry call TradeAnim_AdvanceScriptPointer ret TradeAnim_ShowGetmonData: call ShowOTTrademonStats ld a, [wOTTrademonSpecies] ld [wCurPartySpecies], a ld a, [wOTTrademonDVs] ld [wTempMonDVs], a ld a, [wOTTrademonDVs + 1] ld [wTempMonDVs + 1], a ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS call GetSGBLayout ld a, %11100100 ; 3,2,1,0 call DmgToCgbBGPals call TradeAnim_ShowGetmonFrontpic ld a, [wOTTrademonSpecies] call GetCryIndex jr c, .skip_cry ld e, c ld d, b call PlayCry .skip_cry call TradeAnim_AdvanceScriptPointer ret TradeAnim_GetFrontpic: push de push af predef GetUnownLetter pop af ld [wCurPartySpecies], a ld [wCurSpecies], a call GetBaseData pop de predef GetMonFrontpic ret TradeAnim_GetNickname: push de ld [wNamedObjectIndexBuffer], a call GetPokemonName ld hl, wStringBuffer1 pop de ld bc, NAME_LENGTH call CopyBytes ret TradeAnim_ShowGivemonFrontpic: ld de, vTiles0 jr TradeAnim_ShowFrontpic TradeAnim_ShowGetmonFrontpic: ld de, vTiles0 tile $31 TradeAnim_ShowFrontpic: call DelayFrame ld hl, vTiles2 lb bc, 10, $31 call Request2bpp call WaitTop call TradeAnim_BlankTilemap hlcoord 7, 2 xor a ldh [hGraphicStartTile], a lb bc, 7, 7 predef PlaceGraphic call WaitBGMap ret TradeAnim_Wait80: ld c, 80 call DelayFrames call TradeAnim_AdvanceScriptPointer ret ShowPlayerTrademonStats: ld de, wPlayerTrademonSpecies ld a, [de] cp EGG jr z, TrademonStats_Egg call TrademonStats_MonTemplate ld de, wPlayerTrademonSpecies call TrademonStats_PrintSpeciesNumber ld de, wPlayerTrademonSpeciesName call TrademonStats_PrintSpeciesName ld de, wPlayerTrademonOTName call TrademonStats_PrintOTName ld de, wPlayerTrademonID call TrademonStats_PrintTrademonID call TrademonStats_WaitBGMap ret ShowOTTrademonStats: ld de, wOTTrademonSpecies ld a, [de] cp EGG jr z, TrademonStats_Egg call TrademonStats_MonTemplate ld de, wOTTrademonSpecies call TrademonStats_PrintSpeciesNumber ld de, wOTTrademonSpeciesName call TrademonStats_PrintSpeciesName ld de, wOTTrademonOTName call TrademonStats_PrintOTName ld de, wOTTrademonID call TrademonStats_PrintTrademonID call TrademonStats_WaitBGMap ret TrademonStats_MonTemplate: call WaitTop call TradeAnim_BlankTilemap ld a, HIGH(vBGMap1) ldh [hBGMapAddress + 1], a hlcoord 3, 0 ld b, $6 ld c, $d call Textbox hlcoord 4, 0 ld de, .OTMonData call PlaceString ret .OTMonData: db "─── №." next "" next "OT/" next "<ID>№.@" TrademonStats_Egg: call WaitTop call TradeAnim_BlankTilemap ld a, HIGH(vBGMap1) ldh [hBGMapAddress + 1], a hlcoord 3, 0 ld b, 6 ld c, 13 call Textbox hlcoord 4, 2 ld de, .EggData call PlaceString call TrademonStats_WaitBGMap ret .EggData: db "EGG" next "OT/?????" next "<ID>№.?????@" TrademonStats_WaitBGMap: call WaitBGMap call WaitTop ld a, HIGH(vBGMap0) ldh [hBGMapAddress + 1], a ret TrademonStats_PrintSpeciesNumber: hlcoord 10, 0 lb bc, PRINTNUM_LEADINGZEROS | 1, 3 call PrintNum ret TrademonStats_PrintSpeciesName: hlcoord 4, 2 call PlaceString ret TrademonStats_PrintOTName: hlcoord 7, 4 call PlaceString ret TrademonStats_PrintTrademonID: hlcoord 7, 6 lb bc, PRINTNUM_LEADINGZEROS | 2, 5 call PrintNum ret TradeAnim_RockingBall: depixel 10, 11, 4, 0 ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL call InitSpriteAnimStruct call TradeAnim_AdvanceScriptPointer ld a, 64 ld [wFrameCounter], a ret TradeAnim_DropBall: depixel 10, 11, 4, 0 ld a, SPRITE_ANIM_INDEX_TRADE_POKE_BALL call InitSpriteAnimStruct ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld [hl], $1 ld hl, SPRITEANIMSTRUCT_YOFFSET add hl, bc ld [hl], $dc call TradeAnim_AdvanceScriptPointer ld a, 56 ld [wFrameCounter], a ret TradeAnim_Poof: depixel 10, 11, 4, 0 ld a, SPRITE_ANIM_INDEX_TRADE_POOF call InitSpriteAnimStruct call TradeAnim_AdvanceScriptPointer ld a, 16 ld [wFrameCounter], a ld de, SFX_BALL_POOF call PlaySFX ret TradeAnim_BulgeThroughTube: ld a, %11100100 ; 3,2,1,0 call DmgToCgbObjPal0 depixel 5, 11 ld a, SPRITE_ANIM_INDEX_TRADE_TUBE_BULGE call InitSpriteAnimStruct call TradeAnim_AdvanceScriptPointer ld a, 128 ld [wFrameCounter], a ret TradeAnim_AnimateTrademonInTube: ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc ld e, [hl] ld d, 0 ld hl, .Jumptable add hl, de add hl, de ld a, [hli] ld h, [hl] ld l, a jp hl .Jumptable: dw .InitTimer dw .WaitTimer1 dw .MoveRight dw .MoveDown dw .MoveUp dw .MoveLeft dw .WaitTimer2 .JumptableNext: ld hl, SPRITEANIMSTRUCT_JUMPTABLE_INDEX add hl, bc inc [hl] ret .InitTimer: call .JumptableNext ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $80 ret .WaitTimer1: ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] dec [hl] and a ret nz call .JumptableNext .MoveRight: ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] cp $94 jr nc, .done_move_right inc [hl] ret .done_move_right call .JumptableNext .MoveDown: ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] cp $4c jr nc, .done_move_down inc [hl] ret .done_move_down ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ld [hl], $0 ret .MoveUp: ld hl, SPRITEANIMSTRUCT_YCOORD add hl, bc ld a, [hl] cp $2c jr z, .done_move_up dec [hl] ret .done_move_up call .JumptableNext .MoveLeft: ld hl, SPRITEANIMSTRUCT_XCOORD add hl, bc ld a, [hl] cp $58 jr z, .done_move_left dec [hl] ret .done_move_left call .JumptableNext ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld [hl], $80 ret .WaitTimer2: ld hl, SPRITEANIMSTRUCT_0C add hl, bc ld a, [hl] dec [hl] and a ret nz ld hl, SPRITEANIMSTRUCT_INDEX add hl, bc ld [hl], $0 ret TradeAnim_SentToOTText: ld a, [wLinkMode] cp LINK_TIMECAPSULE jr z, .time_capsule ld hl, .MonNameSentToText call PrintText ld c, 189 call DelayFrames ld hl, .MonWasSentToText call PrintText call TradeAnim_Wait80Frames ld c, 128 call DelayFrames call TradeAnim_AdvanceScriptPointer ret .time_capsule ld hl, .MonWasSentToText call PrintText call TradeAnim_Wait80Frames call TradeAnim_AdvanceScriptPointer ret .MonWasSentToText: text_far _MonWasSentToText text_end .MonNameSentToText: text_far _MonNameSentToText text_end TradeAnim_OTBidsFarewell: ld hl, .BidsFarewellToMonText call PrintText call TradeAnim_Wait80Frames ld hl, .MonNameBidsFarewellText call PrintText call TradeAnim_Wait80Frames call TradeAnim_AdvanceScriptPointer ret .BidsFarewellToMonText: text_far _BidsFarewellToMonText text_end .MonNameBidsFarewellText: text_far _MonNameBidsFarewellText text_end TradeAnim_TakeCareOfText: call WaitTop hlcoord 0, 10 ld bc, 8 * SCREEN_WIDTH ld a, " " call ByteFill call WaitBGMap ld hl, .TakeGoodCareOfMonText call PrintText call TradeAnim_Wait80Frames call TradeAnim_AdvanceScriptPointer ret .TakeGoodCareOfMonText: text_far _TakeGoodCareOfMonText text_end TradeAnim_OTSendsText1: ld hl, .ForYourMonSendsText call PrintText call TradeAnim_Wait80Frames ld hl, .OTSendsText call PrintText call TradeAnim_Wait80Frames ld c, 14 call DelayFrames call TradeAnim_AdvanceScriptPointer ret .ForYourMonSendsText: text_far _ForYourMonSendsText text_end .OTSendsText: text_far _OTSendsText text_end TradeAnim_OTSendsText2: ld hl, .WillTradeText call PrintText call TradeAnim_Wait80Frames ld hl, .ForYourMonWillTradeText call PrintText call TradeAnim_Wait80Frames ld c, 14 call DelayFrames call TradeAnim_AdvanceScriptPointer ret .WillTradeText: text_far _WillTradeText text_end .ForYourMonWillTradeText: text_far _ForYourMonWillTradeText text_end TradeAnim_Wait80Frames: ld c, 80 call DelayFrames ret TradeAnim_BlankTilemap: hlcoord 0, 0 ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld a, " " call ByteFill ret TradeAnim_CopyBoxFromDEtoHL: .row push bc push hl .col ld a, [de] inc de ld [hli], a dec c jr nz, .col pop hl ld bc, SCREEN_WIDTH add hl, bc pop bc dec b jr nz, .row ret TradeAnim_NormalPals: ldh 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 LinkTradeAnim_LoadTradePlayerNames: push de ld de, wLinkPlayer1Name ld bc, NAME_LENGTH call CopyBytes pop hl ld de, wLinkPlayer2Name ld bc, NAME_LENGTH call CopyBytes ret LinkTradeAnim_LoadTradeMonSpecies: ld a, [hl] ld [wLinkTradeSendmonSpecies], a ld a, [de] ld [wLinkTradeGetmonSpecies], a ret TradeAnim_FlashBGPals: ld a, [wce65] and $7 ret nz ldh a, [rBGP] xor %00111100 call DmgToCgbBGPals ret LoadTradeBallAndCableGFX: 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), 12 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 LoadTradeBubbleGFX: call DelayFrame ld e, MONICON_TRADE callfar LoadMenuMonIcon 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 TradeAnim_WaitAnim: ld hl, wFrameCounter ld a, [hl] and a jr z, .done dec [hl] ret .done call TradeAnim_AdvanceScriptPointer ret DebugTrade: ; unreferenced ; This function was meant for use in Japanese versions, so the ; constant used for copy length was changed by accident. ld hl, .DebugTradeData ld a, [hli] ld [wPlayerTrademonSpecies], a ld de, wPlayerTrademonSenderName ld c, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 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, NAME_LENGTH + 2 ; JP: NAME_LENGTH_JAPANESE + 2 .loop2 ld a, [hli] ld [de], a inc de dec c jr nz, .loop2 ret debugtrade: MACRO ; species, ot name, ot id db \1, \2 dw \3 ENDM .DebugTradeData: debugtrade VENUSAUR, "ゲーフり@@", $0123 ; GAME FREAK debugtrade CHARIZARD, "クりーチャ@", $0456 ; Creatures Inc. 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" \ No newline at end of file
diff --git a/gfx/trade/game_boy.tilemap b/gfx/trade/game_boy.tilemap
new file mode 100644
index 00000000..5f772126
--- /dev/null
+++ b/gfx/trade/game_boy.tilemap
@@ -0,0 +1 @@
+12222345667849::;8<=>>?@ABCCDEFGCHIJACKLMNOPPPQR \ No newline at end of file
diff --git a/gfx/trade/link_cable.tilemap b/gfx/trade/link_cable.tilemap
new file mode 100644
index 00000000..3f7e248a
--- /dev/null
+++ b/gfx/trade/link_cable.tilemap
@@ -0,0 +1 @@
+CUVSSSSSSSSSCWXTTTTTTTTTCYZCCCCCCCCC \ No newline at end of file
diff --git a/macros.asm b/macros.asm
index 4c9b6b48..ad92b2e7 100644
--- a/macros.asm
+++ b/macros.asm
@@ -14,7 +14,6 @@ INCLUDE "macros/scripts/movement.asm"
INCLUDE "macros/scripts/map_setup.asm"
INCLUDE "macros/scripts/battle_commands.asm"
INCLUDE "macros/scripts/battle_anims.asm"
-INCLUDE "macros/scripts/trade_anims.asm"
INCLUDE "macros/scripts/gfx_anims.asm"
INCLUDE "macros/legacy.asm"
diff --git a/macros/scripts/trade_anims.asm b/macros/scripts/trade_anims.asm
deleted file mode 100644
index 2552f273..00000000
--- a/macros/scripts/trade_anims.asm
+++ /dev/null
@@ -1,140 +0,0 @@
-; DoTradeAnimation.JumpTable indexes (see engine/movies/trade_animation.asm)
- const_def
-
- const tradeanim_next_command ; $00
-tradeanim_next: MACRO
- db tradeanim_next_command
-ENDM
-
- const tradeanim_show_givemon_data_command ; $01
-tradeanim_show_givemon_data: MACRO
- db tradeanim_show_givemon_data_command
-ENDM
-
- const tradeanim_show_getmon_data_command ; $02
-tradeanim_show_getmon_data: MACRO
- db tradeanim_show_getmon_data_command
-ENDM
-
- const tradeanim_enter_link_tube_command ; $03
-tradeanim_enter_link_tube: MACRO
- db tradeanim_enter_link_tube_command
-ENDM
-
- const_skip ; continues tradeanim_enter_link_tube_command
-
- const tradeanim_exit_link_tube_command ; $05
-tradeanim_exit_link_tube: MACRO
- db tradeanim_exit_link_tube_command
-ENDM
-
- const tradeanim_tube_to_ot_command ; $06
-tradeanim_tube_to_ot: MACRO
- db tradeanim_tube_to_ot_command
-ENDM
-
- const_skip 7 ; continues tradeanim_tube_to_ot_command
-
- const tradeanim_tube_to_player_command ; $0e
-tradeanim_tube_to_player: MACRO
- db tradeanim_tube_to_player_command
-ENDM
-
- const_skip 7 ; continues tradeanim_tube_to_player_command
-
- const tradeanim_sent_to_ot_text_command ; $16
-tradeanim_sent_to_ot_text: MACRO
- db tradeanim_sent_to_ot_text_command
-ENDM
-
- const tradeanim_ot_bids_farewell_command ; $17
-tradeanim_ot_bids_farewell: MACRO
- db tradeanim_ot_bids_farewell_command
-ENDM
-
- const tradeanim_take_care_of_text_command ; $18
-tradeanim_take_care_of_text: MACRO
- db tradeanim_take_care_of_text_command
-ENDM
-
- const tradeanim_ot_sends_text_1_command ; $19
-tradeanim_ot_sends_text_1: MACRO
- db tradeanim_ot_sends_text_1_command
-ENDM
-
- const tradeanim_ot_sends_text_2_command ; $1a
-tradeanim_ot_sends_text_2: MACRO
- db tradeanim_ot_sends_text_2_command
-ENDM
-
- const tradeanim_setup_givemon_scroll_command ; $1b
-tradeanim_setup_givemon_scroll: MACRO
- db tradeanim_setup_givemon_scroll_command
-ENDM
-
- const tradeanim_do_givemon_scroll_command ; $1c
-tradeanim_do_givemon_scroll: MACRO
- db tradeanim_do_givemon_scroll_command
-ENDM
-
- const tradeanim_frontpic_scroll_command ; $1d
-tradeanim_frontpic_scroll: MACRO
- db tradeanim_frontpic_scroll_command
-ENDM
-
- const tradeanim_textbox_scroll_command ; $1e
-tradeanim_textbox_scroll: MACRO
- db tradeanim_textbox_scroll_command
-ENDM
-
- const tradeanim_scroll_out_right_command ; $1f
-tradeanim_scroll_out_right: MACRO
- db tradeanim_scroll_out_right_command
-ENDM
-
- const_skip ; continues tradeanim_scroll_out_right_command
-
- const tradeanim_wait_80_command ; $21
-tradeanim_wait_80: MACRO
- db tradeanim_wait_80_command
-ENDM
-
- const tradeanim_rocking_ball_command ; $22
-tradeanim_rocking_ball: MACRO
- db tradeanim_rocking_ball_command
-ENDM
-
- const tradeanim_drop_ball_command ; $23
-tradeanim_drop_ball: MACRO
- db tradeanim_drop_ball_command
-ENDM
-
- const tradeanim_wait_anim_command ; $24
-tradeanim_wait_anim: MACRO
- db tradeanim_wait_anim_command
-ENDM
-
- const tradeanim_poof_command ; $25
-tradeanim_poof: MACRO
- db tradeanim_poof_command
-ENDM
-
- const tradeanim_bulge_through_tube_command ; $26
-tradeanim_bulge_through_tube: MACRO
- db tradeanim_bulge_through_tube_command
-ENDM
-
- const tradeanim_give_trademon_sfx_command ; $27
-tradeanim_give_trademon_sfx: MACRO
- db tradeanim_give_trademon_sfx_command
-ENDM
-
- const tradeanim_get_trademon_sfx_command ; $28
-tradeanim_get_trademon_sfx: MACRO
- db tradeanim_get_trademon_sfx_command
-ENDM
-
- const tradeanim_end_command ; $29
-tradeanim_end: MACRO
- db tradeanim_end_command
-ENDM