mirror of https://github.com/pret/pokecrystal.git
1764 lines
31 KiB
NASM
1764 lines
31 KiB
NASM
add_mobiletradeanim: MACRO
|
||
\1_MobileTradeCmd:
|
||
dw \1
|
||
ENDM
|
||
|
||
mobiletradeanim: MACRO
|
||
db (\1_MobileTradeCmd - MobileTradeAnim_JumptableLoop.Jumptable) / 2
|
||
ENDM
|
||
|
||
MobileTradeAnimation_SendGivemonToGTS:
|
||
ld a, $80
|
||
ld [wcf65], a
|
||
ld de, .TradeAnimScript
|
||
jp RunMobileTradeAnim_NoFrontpics
|
||
|
||
.TradeAnimScript:
|
||
mobiletradeanim MobileTradeAnim_ShowPlayerMonForGTS
|
||
mobiletradeanim MobileTradeAnim_FadeToBlack
|
||
mobiletradeanim MobileTradeAnim_10
|
||
mobiletradeanim MobileTradeAnim_GiveTrademon1
|
||
mobiletradeanim MobileTradeAnim_06
|
||
mobiletradeanim MobileTradeAnim_0f
|
||
mobiletradeanim EndMobileTradeAnim
|
||
|
||
MobileTradeAnimation_RetrieveGivemonFromGTS:
|
||
ld a, $80
|
||
jr asm_108018
|
||
|
||
MobileTradeAnimation_ReceiveGetmonFromGTS:
|
||
ld a, $0
|
||
asm_108018:
|
||
ld [wcf65], a
|
||
ld de, .TradeAnimScript
|
||
jp RunMobileTradeAnim_NoFrontpics
|
||
|
||
.TradeAnimScript:
|
||
mobiletradeanim MobileTradeAnim_11
|
||
mobiletradeanim MobileTradeAnim_07
|
||
mobiletradeanim MobileTradeAnim_GetTrademon1
|
||
mobiletradeanim MobileTradeAnim_ShowOTMonFromGTS
|
||
mobiletradeanim EndMobileTradeAnim
|
||
|
||
Function108026:
|
||
ld a, $0
|
||
jr asm_10802c
|
||
|
||
Function10802a:
|
||
ld a, $1
|
||
|
||
asm_10802c:
|
||
ld [wcf65], a
|
||
ld de, .TradeAnimScript
|
||
jp RunMobileTradeAnim_Frontpics
|
||
|
||
.TradeAnimScript: ; trade
|
||
mobiletradeanim MobileTradeAnim_ShowPlayerMonToBeSent
|
||
mobiletradeanim MobileTradeAnim_FadeToBlack
|
||
mobiletradeanim MobileTradeAnim_02
|
||
mobiletradeanim MobileTradeAnim_GiveTrademon1
|
||
mobiletradeanim MobileTradeAnim_05
|
||
mobiletradeanim MobileTradeAnim_GetTrademon1
|
||
mobiletradeanim MobileTradeAnim_ShowOTMonFromTrade
|
||
mobiletradeanim EndMobileTradeAnim
|
||
|
||
Function10803d:
|
||
ld a, $0
|
||
ld [wcf65], a
|
||
ld de, .TradeAnimScript
|
||
jp RunMobileTradeAnim_NoFrontpics
|
||
|
||
.TradeAnimScript:
|
||
mobiletradeanim MobileTradeAnim_11
|
||
mobiletradeanim MobileTradeAnim_07
|
||
mobiletradeanim MobileTradeAnim_GetTrademon1
|
||
mobiletradeanim MobileTradeAnim_GetOddEgg
|
||
mobiletradeanim EndMobileTradeAnim
|
||
|
||
Function10804d:
|
||
ld a, $0
|
||
ld [wcf65], a
|
||
ld de, .TradeAnimScript
|
||
jp RunMobileTradeAnim_NoFrontpics
|
||
|
||
.TradeAnimScript:
|
||
mobiletradeanim MobileTradeAnim_11
|
||
mobiletradeanim MobileTradeAnim_ShowOTMonFromGTS
|
||
mobiletradeanim EndMobileTradeAnim
|
||
|
||
RunMobileTradeAnim_Frontpics:
|
||
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 Function1080b7
|
||
.loop
|
||
call MobileTradeAnim_JumptableLoop
|
||
jr nc, .loop
|
||
pop af
|
||
ld [wOptions], a
|
||
pop af
|
||
ld [wVramState], a
|
||
pop af
|
||
ldh [hMapAnims], a
|
||
ret
|
||
|
||
RunMobileTradeAnim_NoFrontpics:
|
||
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 Function108157
|
||
.loop
|
||
call MobileTradeAnim_JumptableLoop
|
||
jr nc, .loop
|
||
pop af
|
||
ld [wOptions], a
|
||
pop af
|
||
ld [wVramState], a
|
||
pop af
|
||
ldh [hMapAnims], a
|
||
ret
|
||
|
||
Function1080b7:
|
||
xor a
|
||
ld [wJumptableIndex], a
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
call DisableLCD
|
||
call MobileTradeAnim_ClearTiles
|
||
call MobileTradeAnim_ClearBGMap
|
||
call LoadStandardFont
|
||
call LoadFontsBattleExtra
|
||
|
||
ld a, $1
|
||
ldh [rVBK], a
|
||
ld hl, MobileTradeGFX
|
||
ld de, vTiles2
|
||
call Decompress
|
||
|
||
ld a, $0
|
||
ldh [rVBK], a
|
||
ld hl, MobileTradeSpritesGFX
|
||
ld de, vTiles0 tile $20
|
||
call Decompress
|
||
|
||
call EnableLCD
|
||
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
farcall ClearSpriteAnims
|
||
|
||
call DelayFrame
|
||
|
||
ld de, TradeBallGFX
|
||
ld hl, vTiles0
|
||
lb bc, BANK(TradeBallGFX), 6
|
||
call Request2bpp
|
||
|
||
ld de, TradePoofGFX
|
||
ld hl, vTiles0 tile $06
|
||
lb bc, BANK(TradePoofGFX), 12
|
||
call Request2bpp
|
||
|
||
xor a
|
||
ld hl, wSpriteAnimDict
|
||
ld [hli], a
|
||
ld [hl], $0
|
||
|
||
ld a, [wPlayerTrademonSpecies]
|
||
ld hl, wPlayerTrademonDVs
|
||
ld de, vTiles0 tile $30
|
||
call MobileTradeAnim_GetFrontpic
|
||
|
||
ld a, [wOTTrademonSpecies]
|
||
ld hl, wOTTrademonDVs
|
||
ld de, vTiles2 tile $31
|
||
call MobileTradeAnim_GetFrontpic
|
||
|
||
ld a, [wPlayerTrademonSpecies]
|
||
ld de, wPlayerTrademonSpeciesName
|
||
call MobileTradeAnim_InitSpeciesName
|
||
|
||
ld a, [wOTTrademonSpecies]
|
||
ld de, wOTTrademonSpeciesName
|
||
call MobileTradeAnim_InitSpeciesName
|
||
|
||
xor a
|
||
call Function108b98
|
||
call Function108af4
|
||
ret
|
||
|
||
Function108157:
|
||
xor a
|
||
ld [wJumptableIndex], a
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
call DisableLCD
|
||
call MobileTradeAnim_ClearTiles
|
||
call MobileTradeAnim_ClearBGMap
|
||
call LoadStandardFont
|
||
call LoadFontsBattleExtra
|
||
call EnableLCD
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
farcall ClearSpriteAnims
|
||
xor a
|
||
ld hl, wSpriteAnimDict
|
||
ld [hli], a
|
||
ld [hl], $0
|
||
call DelayFrame
|
||
ld a, [wPlayerTrademonSpecies]
|
||
ld de, wPlayerTrademonSpeciesName
|
||
call MobileTradeAnim_InitSpeciesName
|
||
ld a, [wOTTrademonSpecies]
|
||
ld de, wOTTrademonSpeciesName
|
||
call MobileTradeAnim_InitSpeciesName
|
||
xor a
|
||
call Function108b98
|
||
call Function108af4
|
||
ret
|
||
|
||
MobileTradeAnim_ClearTiles:
|
||
ld a, $1
|
||
ldh [rVBK], a
|
||
ld hl, vTiles0
|
||
ld bc, 3 * $80 tiles
|
||
xor a
|
||
call ByteFill
|
||
ld a, $0
|
||
ldh [rVBK], a
|
||
ld hl, vTiles0
|
||
ld bc, 3 * $80 tiles
|
||
xor a
|
||
call ByteFill
|
||
ret
|
||
|
||
MobileTradeAnim_ClearBGMap:
|
||
ld a, $1
|
||
ldh [rVBK], a
|
||
hlbgcoord 0, 0
|
||
ld bc, 2 * BG_MAP_HEIGHT * BG_MAP_WIDTH
|
||
ld a, $0
|
||
call ByteFill
|
||
ld a, $0
|
||
ldh [rVBK], a
|
||
hlbgcoord 0, 0
|
||
ld bc, 2 * BG_MAP_HEIGHT * BG_MAP_WIDTH
|
||
ld a, $7f
|
||
call ByteFill
|
||
ret
|
||
|
||
MobileTradeAnim_GetFrontpic:
|
||
push de
|
||
push af
|
||
predef GetUnownLetter
|
||
pop af
|
||
ld [wCurPartySpecies], a
|
||
ld [wCurSpecies], a
|
||
call GetBaseData
|
||
pop de
|
||
predef GetMonFrontpic
|
||
ret
|
||
|
||
Function108201:
|
||
push de
|
||
push af
|
||
predef GetUnownLetter
|
||
pop af
|
||
ld [wCurPartySpecies], a
|
||
ld [wCurSpecies], a
|
||
call GetBaseData
|
||
pop de
|
||
predef GetAnimatedFrontpic
|
||
ret
|
||
|
||
Function108219:
|
||
ld [wCurPartySpecies], a
|
||
hlcoord 7, 2
|
||
ld d, $0
|
||
ld e, ANIM_MON_TRADE
|
||
predef AnimateFrontpic
|
||
ret
|
||
|
||
Function108229:
|
||
ld [wCurPartySpecies], a
|
||
hlcoord 7, 2
|
||
ld d, $0
|
||
ld e, ANIM_MON_TRADE
|
||
predef LoadMonAnimation
|
||
ret
|
||
|
||
MobileTradeAnim_InitSpeciesName:
|
||
push de
|
||
ld [wNamedObjectIndexBuffer], a
|
||
call GetPokemonName
|
||
ld hl, wStringBuffer1
|
||
pop de
|
||
ld bc, MON_NAME_LENGTH
|
||
call CopyBytes
|
||
ret
|
||
|
||
MobileTradeAnim_JumptableLoop:
|
||
ld a, [wJumptableIndex]
|
||
bit 7, a
|
||
jr nz, .StopAnim
|
||
call .ExecuteMobileTradeAnimCommand
|
||
call DelayFrame
|
||
and a
|
||
ret
|
||
|
||
.StopAnim:
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
call LoadStandardFont
|
||
call LoadFontsBattleExtra
|
||
farcall Stubbed_Function106462
|
||
farcall Function106464
|
||
scf
|
||
ret
|
||
|
||
.ExecuteMobileTradeAnimCommand:
|
||
jumptable .Jumptable, wJumptableIndex
|
||
|
||
.Jumptable:
|
||
add_mobiletradeanim GetMobileTradeAnimByte ; 00
|
||
add_mobiletradeanim MobileTradeAnim_ShowPlayerMonToBeSent ; 01
|
||
add_mobiletradeanim MobileTradeAnim_02 ; 02
|
||
add_mobiletradeanim MobileTradeAnim_GiveTrademon1 ; 03
|
||
add_mobiletradeanim MobileTradeAnim_GiveTrademon2 ; 04
|
||
add_mobiletradeanim MobileTradeAnim_05 ; 05
|
||
add_mobiletradeanim MobileTradeAnim_06 ; 06
|
||
add_mobiletradeanim MobileTradeAnim_07 ; 07
|
||
add_mobiletradeanim MobileTradeAnim_GetTrademon1 ; 08
|
||
add_mobiletradeanim MobileTradeAnim_GetTrademon2 ; 09
|
||
add_mobiletradeanim MobileTradeAnim_GetTrademon3 ; 0a
|
||
add_mobiletradeanim MobileTradeAnim_ShowOTMonFromTrade ; 0b
|
||
add_mobiletradeanim EndMobileTradeAnim ; 0c
|
||
add_mobiletradeanim MobileTradeAnim_ShowPlayerMonForGTS ; 0d
|
||
add_mobiletradeanim MobileTradeAnim_ShowOTMonFromGTS ; 0e
|
||
add_mobiletradeanim MobileTradeAnim_0f ; 0f
|
||
add_mobiletradeanim MobileTradeAnim_10 ; 10
|
||
add_mobiletradeanim MobileTradeAnim_11 ; 11
|
||
add_mobiletradeanim MobileTradeAnim_FadeToBlack ; 12
|
||
add_mobiletradeanim MobileTradeAnim_GetOddEgg ; 13 get odd egg
|
||
|
||
MobileTradeAnim_Next:
|
||
ld hl, wJumptableIndex
|
||
inc [hl]
|
||
ret
|
||
|
||
GetMobileTradeAnimByte:
|
||
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
|
||
|
||
EndMobileTradeAnim:
|
||
ld hl, wJumptableIndex
|
||
set 7, [hl]
|
||
ret
|
||
|
||
WaitMobileTradeSpriteAnims:
|
||
.loop
|
||
push bc
|
||
farcall PlaySpriteAnimations
|
||
pop bc
|
||
call DelayFrame
|
||
dec c
|
||
jr nz, .loop
|
||
ret
|
||
|
||
Function1082db:
|
||
.loop
|
||
farcall PlaySpriteAnimations
|
||
farcall SetUpPokeAnim
|
||
farcall HDMATransferTilemapToWRAMBank3
|
||
jr nc, .loop
|
||
ret
|
||
|
||
Function1082f0:
|
||
.loop
|
||
call Function108b78
|
||
call DelayFrame
|
||
dec c
|
||
jr nz, .loop
|
||
ret
|
||
|
||
Function1082fa:
|
||
.loop
|
||
call Function108b78
|
||
push hl
|
||
push bc
|
||
farcall PlaySpriteAnimations
|
||
pop bc
|
||
pop hl
|
||
call DelayFrame
|
||
dec c
|
||
jr nz, .loop
|
||
ret
|
||
|
||
MobileTradeAnim_ShowPlayerMonToBeSent:
|
||
ld de, MUSIC_EVOLUTION
|
||
call PlayMusic2
|
||
ld a, $80
|
||
ldh [hSCX], a
|
||
xor a
|
||
ldh [hSCY], a
|
||
ld a, $87
|
||
ldh [hWX], a
|
||
ld a, $50
|
||
ldh [hWY], a
|
||
call MobileTradeAnim_DisplayMonToBeSent
|
||
ld a, [wPlayerTrademonSpecies]
|
||
ld [wCurPartySpecies], a
|
||
call Function10895e
|
||
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 WaitBGMap
|
||
.loop
|
||
ldh a, [hWX]
|
||
cp $7
|
||
jr z, .okay
|
||
sub $4
|
||
ldh [hWX], a
|
||
ldh a, [hSCX]
|
||
sub $4
|
||
ldh [hSCX], a
|
||
call DelayFrame
|
||
jr .loop
|
||
|
||
.okay
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
xor a
|
||
ldh [hSCX], a
|
||
ld a, [wPlayerTrademonSpecies]
|
||
call GetCryIndex
|
||
jr c, .skip_cry
|
||
ld e, c
|
||
ld d, b
|
||
call PlayCry
|
||
|
||
.skip_cry
|
||
ld c, 80
|
||
call DelayFrames
|
||
call Function108bec
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
|
||
call InitSpriteAnimStruct
|
||
ld de, SFX_BALL_POOF
|
||
call PlaySFX
|
||
hlcoord 0, 0
|
||
ld bc, 12 * SCREEN_WIDTH
|
||
ld a, " "
|
||
call ByteFill
|
||
ld c, 80
|
||
call WaitMobileTradeSpriteAnims
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_ShowOTMonFromTrade:
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
call DisableLCD
|
||
call MobileTradeAnim_ClearBGMap
|
||
ld a, [wOTTrademonSpecies]
|
||
ld [wCurPartySpecies], a
|
||
ld hl, wOTTrademonDVs
|
||
ld de, vTiles2
|
||
call Function108201
|
||
call EnableLCD
|
||
farcall DeinitializeAllSprites
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
|
||
call InitSpriteAnimStruct
|
||
call Function108b45
|
||
ld a, $1
|
||
call Function108b98
|
||
call Function108af4
|
||
ld c, 48
|
||
call WaitMobileTradeSpriteAnims
|
||
ld de, SFX_BALL_POOF
|
||
call PlaySFX
|
||
call MobileTradeAnim_DisplayReceivedMon
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $50
|
||
ldh [hWY], a
|
||
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 Function108963
|
||
ld a, [wOTTrademonSpecies]
|
||
call Function108229
|
||
call Function1082db
|
||
call Function108c16
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_ShowPlayerMonForGTS:
|
||
ld de, MUSIC_EVOLUTION
|
||
call PlayMusic2
|
||
ld a, $80
|
||
ldh [hSCX], a
|
||
xor a
|
||
ldh [hSCY], a
|
||
ld a, $87
|
||
ldh [hWX], a
|
||
ld a, $50
|
||
ldh [hWY], a
|
||
call MobileTradeAnim_DisplayMonToBeSent
|
||
ld a, [wPlayerTrademonSpecies]
|
||
ld [wCurPartySpecies], a
|
||
ld hl, wPlayerTrademonDVs
|
||
call Function10898a
|
||
call DelayFrame
|
||
ld de, TradeBallGFX
|
||
ld hl, vTiles0
|
||
lb bc, BANK(TradeBallGFX), 6
|
||
call Request2bpp
|
||
ld de, TradePoofGFX
|
||
ld hl, vTiles0 tile $06
|
||
lb bc, BANK(TradePoofGFX), 12
|
||
call Request2bpp
|
||
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 WaitBGMap
|
||
.loop
|
||
ldh a, [hWX]
|
||
cp $7
|
||
jr z, .done
|
||
sub $4
|
||
ldh [hWX], a
|
||
ldh a, [hSCX]
|
||
sub $4
|
||
ldh [hSCX], a
|
||
call DelayFrame
|
||
jr .loop
|
||
|
||
.done
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
xor a
|
||
ldh [hSCX], a
|
||
ld a, [wPlayerTrademonSpecies]
|
||
call GetCryIndex
|
||
jr c, .skip_cry
|
||
ld e, c
|
||
ld d, b
|
||
call PlayCry
|
||
|
||
.skip_cry
|
||
ld c, 80
|
||
call DelayFrames
|
||
call Function108c2b
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
|
||
call InitSpriteAnimStruct
|
||
ld de, SFX_BALL_POOF
|
||
call PlaySFX
|
||
hlcoord 0, 0
|
||
ld bc, 12 * SCREEN_WIDTH
|
||
ld a, " "
|
||
call ByteFill
|
||
ld c, 80
|
||
call WaitMobileTradeSpriteAnims
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_ShowOTMonFromGTS:
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
call DisableLCD
|
||
call MobileTradeAnim_ClearBGMap
|
||
ld a, [wOTTrademonSpecies]
|
||
ld [wCurPartySpecies], a
|
||
ld hl, wOTTrademonDVs
|
||
ld de, vTiles2
|
||
call Function108201
|
||
call EnableLCD
|
||
farcall DeinitializeAllSprites
|
||
call DelayFrame
|
||
ld de, TradeBallGFX
|
||
ld hl, vTiles0
|
||
lb bc, BANK(TradeBallGFX), 6
|
||
call Request2bpp
|
||
ld de, TradePoofGFX
|
||
ld hl, vTiles0 tile $06
|
||
lb bc, BANK(TradePoofGFX), 12
|
||
call Request2bpp
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
|
||
call InitSpriteAnimStruct
|
||
call Function108b45
|
||
ld a, $1
|
||
call Function108b98
|
||
call Function108af4
|
||
ld c, 48
|
||
call WaitMobileTradeSpriteAnims
|
||
ld de, SFX_BALL_POOF
|
||
call PlaySFX
|
||
call MobileTradeAnim_DisplayReceivedMon
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $50
|
||
ldh [hWY], a
|
||
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
|
||
ld a, [wOTTrademonSpecies]
|
||
ld hl, wOTTrademonDVs
|
||
call Function10898a
|
||
ld a, [wOTTrademonSpecies]
|
||
call Function108229
|
||
call Function1082db
|
||
call Function108c40
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_GetOddEgg:
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
call DisableLCD
|
||
call MobileTradeAnim_ClearBGMap
|
||
ld a, [wOTTrademonSpecies]
|
||
ld [wCurPartySpecies], a
|
||
ld hl, wOTTrademonDVs
|
||
ld de, vTiles2
|
||
call Function108201
|
||
call EnableLCD
|
||
farcall DeinitializeAllSprites
|
||
call DelayFrame
|
||
ld de, TradeBallGFX
|
||
ld hl, vTiles0
|
||
lb bc, BANK(TradeBallGFX), 6
|
||
call Request2bpp
|
||
ld de, TradePoofGFX
|
||
ld hl, vTiles0 tile $06
|
||
lb bc, BANK(TradePoofGFX), 12
|
||
call Request2bpp
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
|
||
call InitSpriteAnimStruct
|
||
call Function108b45
|
||
ld a, $1
|
||
call Function108b98
|
||
call Function108af4
|
||
ld c, 48
|
||
call WaitMobileTradeSpriteAnims
|
||
ld de, SFX_BALL_POOF
|
||
call PlaySFX
|
||
call Function108a33
|
||
xor a
|
||
ldh [hSCX], a
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $50
|
||
ldh [hWY], a
|
||
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
|
||
ld a, [wOTTrademonSpecies]
|
||
ld hl, wOTTrademonDVs
|
||
call Function10898a
|
||
ld a, [wOTTrademonSpecies]
|
||
call Function108229
|
||
call Function1082db
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_02:
|
||
farcall DeinitializeAllSprites
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
xor a
|
||
ldh [hBGMapMode], a
|
||
call DisableLCD
|
||
call MobileTradeAnim_ClearBGMap
|
||
call Function108c80
|
||
call Function108c6d
|
||
call EnableLCD
|
||
ld a, $c
|
||
ldh [hSCX], a
|
||
ld a, $78
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
ldh a, [rSVBK]
|
||
push af
|
||
ld a, $5
|
||
ldh [rSVBK], a
|
||
ld hl, MobileTradeBGPalettes
|
||
ld de, wBGPals1
|
||
ld bc, 8 palettes
|
||
call CopyBytes
|
||
pop af
|
||
ldh [rSVBK], a
|
||
call LoadMobileAdapterPalette
|
||
call Function108af4
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_10:
|
||
farcall DeinitializeAllSprites
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
xor a
|
||
ldh [hBGMapMode], a
|
||
call DisableLCD
|
||
call MobileTradeAnim_ClearBGMap
|
||
ld a, $1
|
||
ldh [rVBK], a
|
||
ld hl, MobileTradeGFX
|
||
ld de, vTiles2
|
||
call Decompress
|
||
ld a, $0
|
||
ldh [rVBK], a
|
||
ld hl, MobileTradeSpritesGFX
|
||
ld de, vTiles0 tile $20
|
||
call Decompress
|
||
call Function108c80
|
||
call Function108c6d
|
||
call EnableLCD
|
||
ld a, $c
|
||
ldh [hSCX], a
|
||
ld a, $78
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
ldh a, [rSVBK]
|
||
push af
|
||
ld a, $5
|
||
ldh [rSVBK], a
|
||
ld hl, MobileTradeBGPalettes
|
||
ld de, wBGPals1
|
||
ld bc, 8 palettes
|
||
call CopyBytes
|
||
pop af
|
||
ldh [rSVBK], a
|
||
call LoadMobileAdapterPalette
|
||
call Function108af4
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_11:
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
xor a
|
||
ldh [hBGMapMode], a
|
||
call DisableLCD
|
||
ld a, $1
|
||
ldh [rVBK], a
|
||
ld hl, MobileTradeGFX
|
||
ld de, vTiles2
|
||
call Decompress
|
||
ld a, $0
|
||
ldh [rVBK], a
|
||
ld hl, MobileTradeSpritesGFX
|
||
ld de, vTiles0 tile $20
|
||
call Decompress
|
||
call Function108c80
|
||
call Function108c6d
|
||
call EnableLCD
|
||
ld a, $80
|
||
ldh [hSCX], a
|
||
ld a, $90
|
||
ldh [hSCY], a
|
||
ld a, $7
|
||
ldh [hWX], a
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
ldh a, [rSVBK]
|
||
push af
|
||
ld a, $5
|
||
ldh [rSVBK], a
|
||
ld hl, MobileTradeBGPalettes
|
||
ld de, wBGPals1
|
||
ld bc, 8 palettes
|
||
call CopyBytes
|
||
pop af
|
||
ldh [rSVBK], a
|
||
call LoadMobileAdapterPalette
|
||
call Function108af4
|
||
call Function108b5a
|
||
ld a, $e0
|
||
ldh [hSCX], a
|
||
ld de, MUSIC_EVOLUTION
|
||
call PlayMusic2
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_GiveTrademon1:
|
||
ld de, SFX_GIVE_TRADEMON
|
||
call PlaySFX
|
||
ld c, 40
|
||
ld hl, wBGPals2 palette 6
|
||
call Function1082f0
|
||
call Function108af4
|
||
.loop
|
||
ldh a, [hSCX]
|
||
cp $e0
|
||
jr z, .loop2
|
||
dec a
|
||
dec a
|
||
ldh [hSCX], a
|
||
cp $f8
|
||
jr nz, .next
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
|
||
call InitSpriteAnimStruct
|
||
|
||
.next
|
||
ld c, 1
|
||
call WaitMobileTradeSpriteAnims
|
||
jr .loop
|
||
|
||
.loop2
|
||
ldh a, [hSCY]
|
||
cp $f8
|
||
jr z, .done
|
||
dec a
|
||
dec a
|
||
ldh [hSCY], a
|
||
cp $40
|
||
jr z, .init
|
||
cp $30
|
||
jr z, .delete
|
||
cp $68
|
||
jr z, .replace
|
||
jr .next2
|
||
|
||
.init
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
|
||
call InitSpriteAnimStruct
|
||
xor a
|
||
call Function108ad4
|
||
jr .next2
|
||
|
||
.delete
|
||
call MobileTradeAnim_DeleteSprites
|
||
jr .next2
|
||
|
||
.replace
|
||
call MobileTradeAnim_DeleteSprites
|
||
ld a, $1
|
||
call Function108ad4
|
||
.next2
|
||
ld c, 1
|
||
call WaitMobileTradeSpriteAnims
|
||
jr .loop2
|
||
|
||
.done
|
||
call MobileTradeAnim_Next
|
||
ret
|
||
|
||
MobileTradeAnim_GiveTrademon2:
|
||
ld c, 40
|
||
ld hl, wBGPals2 + 1 palettes
|
||
call Function1082f0
|
||
call Function108af4
|
||
call Function108b5a
|
||
depixel 9, 10, 2, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_PING
|
||
call InitSpriteAnimStruct
|
||
ld de, SFX_FORESIGHT
|
||
call PlaySFX
|
||
ld c, 10
|
||
call WaitMobileTradeSpriteAnims
|
||
xor a
|
||
ld [wcf64], a
|
||
depixel 9, 10, 2, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_PULSE
|
||
call InitSpriteAnimStruct
|
||
.loop
|
||
ldh a, [hSCY]
|
||
cp $90
|
||
jr z, .done
|
||
sub $8
|
||
ldh [hSCY], a
|
||
ld c, 1
|
||
call WaitMobileTradeSpriteAnims
|
||
jr .loop
|
||
|
||
.done
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_05:
|
||
ld c, 40
|
||
call WaitMobileTradeSpriteAnims
|
||
ld a, $1
|
||
ld [wcf64], a
|
||
ld de, SFX_SHARPEN
|
||
call PlaySFX
|
||
ld c, 60
|
||
call WaitMobileTradeSpriteAnims
|
||
depixel 30, 10, 2, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_PULSE
|
||
call InitSpriteAnimStruct
|
||
call GetMobileTradeAnimByte
|
||
ld de, SFX_THROW_BALL
|
||
call PlaySFX
|
||
ret
|
||
|
||
MobileTradeAnim_06:
|
||
ld c, 40
|
||
call WaitMobileTradeSpriteAnims
|
||
ld a, $1
|
||
ld [wcf64], a
|
||
ld de, SFX_SHARPEN
|
||
call PlaySFX
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_07:
|
||
ld c, 80
|
||
call DelayFrames
|
||
depixel 30, 10, 2, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_PULSE
|
||
call InitSpriteAnimStruct
|
||
call GetMobileTradeAnimByte
|
||
ld de, SFX_THROW_BALL
|
||
call PlaySFX
|
||
ret
|
||
|
||
MobileTradeAnim_GetTrademon1:
|
||
ld c, 40
|
||
call WaitMobileTradeSpriteAnims
|
||
.loop
|
||
ldh a, [hSCY]
|
||
cp $f8
|
||
jr z, .done
|
||
add $8
|
||
ldh [hSCY], a
|
||
ld c, 1
|
||
call WaitMobileTradeSpriteAnims
|
||
jr .loop
|
||
|
||
.done
|
||
farcall DeinitializeAllSprites
|
||
depixel 9, 10, 2, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_PING
|
||
call InitSpriteAnimStruct
|
||
ld de, SFX_GLASS_TING_2
|
||
call PlaySFX
|
||
call Function108af4
|
||
call MobileTradeAnim_Next
|
||
ret
|
||
|
||
MobileTradeAnim_GetTrademon2:
|
||
ld c, 20
|
||
ld hl, wBGPals2 + 1 palettes
|
||
call Function1082fa
|
||
ld de, SFX_GIVE_TRADEMON
|
||
call PlaySFX
|
||
ld c, 20
|
||
ld hl, wBGPals2 + 1 palettes
|
||
call Function1082fa
|
||
call Function108af4
|
||
.asm_1088ad
|
||
ldh a, [hSCY]
|
||
cp $78
|
||
jr z, .asm_1088ee
|
||
inc a
|
||
inc a
|
||
ldh [hSCY], a
|
||
cp $30
|
||
jr z, .asm_1088c5
|
||
cp $40
|
||
jr z, .asm_1088dd
|
||
cp $68
|
||
jr z, .asm_1088cf
|
||
jr .asm_1088e7
|
||
|
||
.asm_1088c5
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
|
||
call InitSpriteAnimStruct
|
||
jr .asm_1088e7
|
||
|
||
.asm_1088cf
|
||
depixel 10, 11, 4, 0
|
||
ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_CABLE_BULGE
|
||
call InitSpriteAnimStruct
|
||
xor a
|
||
call Function108ad4
|
||
jr .asm_1088e7
|
||
|
||
.asm_1088dd
|
||
call MobileTradeAnim_DeleteSprites
|
||
ld a, $1
|
||
call Function108ad4
|
||
jr .asm_1088e7
|
||
|
||
.asm_1088e7
|
||
ld c, 1
|
||
call WaitMobileTradeSpriteAnims
|
||
jr .asm_1088ad
|
||
|
||
.asm_1088ee
|
||
ldh a, [hSCX]
|
||
cp $c
|
||
jr z, .asm_108906
|
||
inc a
|
||
inc a
|
||
ldh [hSCX], a
|
||
cp -8
|
||
jr nz, .asm_1088e7
|
||
call MobileTradeAnim_DeleteSprites
|
||
ld c, 1
|
||
call WaitMobileTradeSpriteAnims
|
||
jr .asm_1088ee
|
||
|
||
.asm_108906
|
||
call MobileTradeAnim_Next
|
||
ret
|
||
|
||
MobileTradeAnim_GetTrademon3:
|
||
ld c, 40
|
||
ld hl, wBGPals2 palette 6
|
||
call Function1082f0
|
||
call Function108af4
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_0f:
|
||
ld c, 40
|
||
call WaitMobileTradeSpriteAnims
|
||
farcall DeinitializeAllSprites
|
||
call ClearBGPalettes
|
||
call ClearSprites
|
||
call ClearTilemap
|
||
call DisableLCD
|
||
call MobileTradeAnim_ClearTiles
|
||
call MobileTradeAnim_ClearBGMap
|
||
call EnableLCD
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
MobileTradeAnim_FadeToBlack:
|
||
.loop
|
||
ldh a, [rBGP]
|
||
and a
|
||
jr z, .blank
|
||
sla a
|
||
sla a
|
||
call DmgToCgbBGPals
|
||
call DmgToCgbObjPal0
|
||
ld c, 4
|
||
call DelayFrames
|
||
jr .loop
|
||
|
||
.blank
|
||
xor a
|
||
call DmgToCgbBGPals
|
||
call DmgToCgbObjPal0
|
||
call GetMobileTradeAnimByte
|
||
ret
|
||
|
||
Function10895e:
|
||
ld de, vTiles0 tile $30
|
||
jr asm_108966
|
||
|
||
Function108963:
|
||
ld de, vTiles2 tile $31
|
||
asm_108966:
|
||
call DelayFrame
|
||
ld hl, vTiles2
|
||
lb bc, BANK(TradeGameBoyLZ), $31
|
||
call Request2bpp
|
||
call WaitTop
|
||
call MobileTradeAnim_ClearTilemap
|
||
hlcoord 7, 2
|
||
xor a
|
||
ldh [hGraphicStartTile], a
|
||
lb bc, 7, 7
|
||
predef PlaceGraphic
|
||
call WaitBGMap
|
||
ret
|
||
|
||
Function10898a:
|
||
ld de, vTiles2
|
||
call MobileTradeAnim_GetFrontpic
|
||
call WaitTop
|
||
call MobileTradeAnim_ClearTilemap
|
||
hlcoord 7, 2
|
||
xor a
|
||
ldh [hGraphicStartTile], a
|
||
lb bc, 7, 7
|
||
predef PlaceGraphic
|
||
call WaitBGMap
|
||
ret
|
||
|
||
MobileTradeAnim_DisplayMonToBeSent:
|
||
ld de, wPlayerTrademonSpecies
|
||
ld a, [de]
|
||
cp EGG
|
||
jr z, MobileTradeAnim_DisplayEggData
|
||
call MobileTradeAnim_LoadMonTemplate
|
||
ld de, wPlayerTrademonSpecies
|
||
call MobileTradeAnim_MonDisplay_PrintSpeciesNumber
|
||
ld de, wPlayerTrademonSpeciesName
|
||
call MobileTradeAnim_MonDisplay_PrintSpeciesName
|
||
ld a, [wPlayerTrademonCaughtData]
|
||
ld de, wPlayerTrademonOTName
|
||
call MobileTradeAnim_MonDisplay_PrintOTNameAndGender
|
||
ld de, wPlayerTrademonID
|
||
call MobileTradeAnim_MonDisplay_PrintIDNumber
|
||
call MobileTradeAnim_MonDisplay_UpdateBGMap
|
||
ret
|
||
|
||
MobileTradeAnim_DisplayReceivedMon:
|
||
ld de, wOTTrademonSpecies
|
||
ld a, [de]
|
||
cp EGG
|
||
jr z, MobileTradeAnim_DisplayEggData
|
||
call MobileTradeAnim_LoadMonTemplate
|
||
ld de, wOTTrademonSpecies
|
||
call MobileTradeAnim_MonDisplay_PrintSpeciesNumber
|
||
ld de, wOTTrademonSpeciesName
|
||
call MobileTradeAnim_MonDisplay_PrintSpeciesName
|
||
ld a, [wOTTrademonCaughtData]
|
||
ld de, wOTTrademonOTName
|
||
call MobileTradeAnim_MonDisplay_PrintOTNameAndGender
|
||
ld de, wOTTrademonID
|
||
call MobileTradeAnim_MonDisplay_PrintIDNumber
|
||
call MobileTradeAnim_MonDisplay_UpdateBGMap
|
||
ret
|
||
|
||
MobileTradeAnim_DisplayEggData:
|
||
call WaitTop
|
||
call MobileTradeAnim_ClearTilemap
|
||
ld a, HIGH(vBGMap1)
|
||
ldh [hBGMapAddress + 1], a
|
||
hlcoord 5, 0
|
||
ld b, 6
|
||
ld c, 9
|
||
call Textbox
|
||
hlcoord 6, 2
|
||
ld de, .EggTemplate
|
||
call PlaceString
|
||
call MobileTradeAnim_MonDisplay_UpdateBGMap
|
||
ret
|
||
|
||
.EggTemplate:
|
||
db "タマゴ"
|
||
next "おや/?????"
|
||
next "<ID>№<DOT>?????"
|
||
db "@"
|
||
|
||
Function108a33:
|
||
call WaitTop
|
||
call MobileTradeAnim_ClearTilemap
|
||
ld a, HIGH(vBGMap1)
|
||
ldh [hBGMapAddress + 1], a
|
||
hlcoord 5, 0
|
||
ld b, 6
|
||
ld c, 9
|
||
call Textbox
|
||
hlcoord 7, 4
|
||
ld de, .OddEgg
|
||
call PlaceString
|
||
call MobileTradeAnim_MonDisplay_UpdateBGMap
|
||
ret
|
||
|
||
.OddEgg:
|
||
db "なぞのタマゴ@"
|
||
|
||
MobileTradeAnim_LoadMonTemplate:
|
||
call WaitTop
|
||
call MobileTradeAnim_ClearTilemap
|
||
ld a, HIGH(vBGMap1)
|
||
ldh [hBGMapAddress + 1], a
|
||
hlcoord 4, 0
|
||
ld b, 6
|
||
ld c, 10
|
||
call Textbox
|
||
hlcoord 5, 0
|
||
ld de, .MonTemplate
|
||
call PlaceString
|
||
ret
|
||
|
||
.MonTemplate:
|
||
db "─ №<DOT>"
|
||
next ""
|
||
next "おや/"
|
||
next "<ID>№<DOT>"
|
||
db "@"
|
||
|
||
MobileTradeAnim_MonDisplay_UpdateBGMap:
|
||
call WaitBGMap
|
||
call WaitTop
|
||
ld a, HIGH(vBGMap0)
|
||
ldh [hBGMapAddress + 1], a
|
||
ret
|
||
|
||
MobileTradeAnim_MonDisplay_PrintSpeciesNumber:
|
||
hlcoord 9, 0
|
||
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
|
||
call PrintNum
|
||
ret
|
||
|
||
MobileTradeAnim_MonDisplay_PrintSpeciesName:
|
||
hlcoord 5, 2
|
||
call PlaceString
|
||
ret
|
||
|
||
MobileTradeAnim_MonDisplay_PrintOTNameAndGender:
|
||
cp $3
|
||
jr c, .got_gender
|
||
xor a
|
||
.got_gender
|
||
push af
|
||
hlcoord 8, 4
|
||
call PlaceString
|
||
inc bc
|
||
pop af
|
||
ld hl, .GenderChars
|
||
ld d, 0
|
||
ld e, a
|
||
add hl, de
|
||
ld a, [hl]
|
||
ld [bc], a
|
||
ret
|
||
|
||
.GenderChars:
|
||
db " "
|
||
db "♂"
|
||
db "♀"
|
||
|
||
MobileTradeAnim_MonDisplay_PrintIDNumber:
|
||
hlcoord 8, 6
|
||
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
|
||
call PrintNum
|
||
ret
|
||
|
||
MobileTradeAnim_ClearTilemap:
|
||
hlcoord 0, 0
|
||
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
|
||
ld a, " "
|
||
call ByteFill
|
||
ret
|
||
|
||
Function108ad4:
|
||
and a
|
||
jr z, .asm_108adc
|
||
ld de, MobileCable2GFX
|
||
jr .asm_108adf
|
||
|
||
.asm_108adc
|
||
ld de, MobileCable1GFX
|
||
.asm_108adf
|
||
ld a, $1
|
||
ldh [rVBK], a
|
||
ld hl, vTiles2 tile $4a
|
||
lb bc, BANK(MobileCable1GFX), 16 ; aka BANK(MobileCable2GFX)
|
||
call Get2bppViaHDMA
|
||
call DelayFrame
|
||
ld a, $0
|
||
ldh [rVBK], a
|
||
ret
|
||
|
||
Function108af4:
|
||
ldh a, [rSVBK]
|
||
push af
|
||
ld a, $5
|
||
ldh [rSVBK], a
|
||
ld a, [wcf65]
|
||
and $1
|
||
jr z, .copy_MobileTradeOB1Palettes
|
||
ld hl, MobileTradeOB2Palettes
|
||
ld de, wOBPals1
|
||
ld bc, 8 palettes
|
||
call CopyBytes
|
||
ld hl, MobileTradeOB2Palettes
|
||
ld de, wOBPals2
|
||
ld bc, 8 palettes
|
||
call CopyBytes
|
||
jr .done_copy
|
||
|
||
.copy_MobileTradeOB1Palettes
|
||
ld hl, MobileTradeOB1Palettes
|
||
ld de, wOBPals1
|
||
ld bc, 8 palettes
|
||
call CopyBytes
|
||
ld hl, MobileTradeOB1Palettes
|
||
ld de, wOBPals2
|
||
ld bc, 8 palettes
|
||
call CopyBytes
|
||
|
||
.done_copy
|
||
pop af
|
||
ldh [rSVBK], a
|
||
ld a, %11100100 ; 3,2,1,0
|
||
call DmgToCgbObjPal0
|
||
ld a, %11100100 ; 3,2,1,0
|
||
call DmgToCgbBGPals
|
||
call DelayFrame
|
||
ret
|
||
|
||
Function108b45:
|
||
ldh a, [rSVBK]
|
||
push af
|
||
ld a, $5
|
||
ldh [rSVBK], a
|
||
ld de, PALRGB_WHITE
|
||
ld hl, wBGPals1
|
||
ld a, e
|
||
ld [hli], a
|
||
ld d, a
|
||
ld [hli], a
|
||
pop af
|
||
ldh [rSVBK], a
|
||
ret
|
||
|
||
Function108b5a:
|
||
ldh a, [rSVBK]
|
||
push af
|
||
ld a, $5
|
||
ldh [rSVBK], a
|
||
ld de, palred 18 + palgreen 31 + palblue 15
|
||
ld hl, wBGPals2 + 4 palettes
|
||
ld c, $10
|
||
.loop
|
||
ld a, e
|
||
ld [hli], a
|
||
ld a, d
|
||
ld [hli], a
|
||
dec c
|
||
jr nz, .loop
|
||
pop af
|
||
ldh [rSVBK], a
|
||
ld a, TRUE
|
||
ldh [hCGBPalUpdate], a
|
||
ret
|
||
|
||
Function108b78:
|
||
ldh a, [rSVBK]
|
||
push af
|
||
ld a, $5
|
||
ldh [rSVBK], a
|
||
ld a, c
|
||
and $2
|
||
jr z, .Orange
|
||
ld de, PALRGB_WHITE
|
||
jr .load_pal
|
||
|
||
.Orange:
|
||
ld de, palred 31 + palgreen 15 + palblue 1
|
||
.load_pal
|
||
ld a, e
|
||
ld [hli], a
|
||
ld a, d
|
||
ld [hld], a
|
||
pop af
|
||
ldh [rSVBK], a
|
||
ld a, TRUE
|
||
ldh [hCGBPalUpdate], a
|
||
ret
|
||
|
||
Palette_108b98:
|
||
; removed
|
||
|
||
Function108b98:
|
||
ld d, a
|
||
ldh a, [rSVBK]
|
||
push af
|
||
ld a, $5
|
||
ldh [rSVBK], a
|
||
ld a, [wcf65]
|
||
and $1
|
||
xor d
|
||
jr z, .asm_108bad
|
||
ld hl, Palette_108b98 + 1 palettes
|
||
jr .asm_108bb0
|
||
|
||
.asm_108bad
|
||
ld hl, Palette_108b98
|
||
.asm_108bb0
|
||
ld de, wBGPals1 + 7 palettes
|
||
ld bc, 8 palettes
|
||
call CopyBytes
|
||
pop af
|
||
ldh [rSVBK], a
|
||
ret
|
||
|
||
MobileTradeAnim_DeleteSprites:
|
||
farcall DeinitializeAllSprites
|
||
call ClearSprites
|
||
ret
|
||
|
||
Function108bc7:
|
||
ld a, [wcf64]
|
||
and a
|
||
ret z
|
||
ld hl, SPRITEANIMSTRUCT_YCOORD
|
||
add hl, bc
|
||
ld a, [hl]
|
||
cp -1 * 8 - 6
|
||
jr z, .delete
|
||
sub 1 * 8
|
||
ld [hl], a
|
||
ret
|
||
|
||
.delete
|
||
farcall DeinitializeSprite
|
||
ret
|
||
|
||
Function108be0:
|
||
ld hl, SPRITEANIMSTRUCT_YCOORD
|
||
add hl, bc
|
||
ld a, [hl]
|
||
cp 9 * 8 + 2
|
||
ret z
|
||
add 1 * 8
|
||
ld [hl], a
|
||
ret
|
||
|
||
Function108bec:
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
ld hl, .MobilePlayerWillTradeMonText
|
||
call PrintText
|
||
ld c, 80
|
||
call DelayFrames
|
||
ld hl, .MobileForPartnersMonText
|
||
call PrintText
|
||
ld c, 80
|
||
call DelayFrames
|
||
ret
|
||
|
||
.MobilePlayerWillTradeMonText:
|
||
text_far _MobilePlayerWillTradeMonText
|
||
text_end
|
||
|
||
.MobileForPartnersMonText:
|
||
text_far _MobileForPartnersMonText
|
||
text_end
|
||
|
||
.MobilePlayersMonTradeText:
|
||
text_far _MobilePlayersMonTradeText
|
||
text_end
|
||
|
||
Function108c16:
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
ld hl, .MobileTakeGoodCareOfMonText
|
||
call PrintText
|
||
ld c, 80
|
||
call DelayFrames
|
||
ret
|
||
|
||
.MobileTakeGoodCareOfMonText:
|
||
text_far _MobileTakeGoodCareOfMonText
|
||
text_end
|
||
|
||
Function108c2b:
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
ld hl, .MobilePlayersMonTrade2Text
|
||
call PrintText
|
||
ld c, 80
|
||
call DelayFrames
|
||
ret
|
||
|
||
.MobilePlayersMonTrade2Text:
|
||
text_far _MobilePlayersMonTrade2Text
|
||
text_end
|
||
|
||
Function108c40:
|
||
ld a, $90
|
||
ldh [hWY], a
|
||
ld a, [wcf65]
|
||
and %10000000
|
||
jr z, .Getmon
|
||
ld hl, .MobileTradeCameBackText
|
||
call PrintText
|
||
ld c, 80
|
||
call DelayFrames
|
||
ret
|
||
|
||
.Getmon:
|
||
ld hl, .MobileTakeGoodCareOfText
|
||
call PrintText
|
||
ld c, 80
|
||
call DelayFrames
|
||
ret
|
||
|
||
.MobileTakeGoodCareOfText:
|
||
text_far _MobileTakeGoodCareOfText
|
||
text_end
|
||
|
||
.MobileTradeCameBackText:
|
||
text_far _MobileTradeCameBackText
|
||
text_end
|
||
|
||
Function108c6d:
|
||
ld hl, MobileTradeTilemapLZ
|
||
debgcoord 0, 0
|
||
call Decompress
|
||
ld hl, MobileTradeTilemapLZ
|
||
debgcoord 0, 0, vBGMap1
|
||
call Decompress
|
||
ret
|
||
|
||
Function108c80:
|
||
ld a, $1
|
||
ldh [rVBK], a
|
||
ld hl, MobileTradeAttrmapLZ
|
||
debgcoord 0, 0
|
||
call Decompress
|
||
ld hl, MobileTradeAttrmapLZ
|
||
debgcoord 0, 0, vBGMap1
|
||
call Decompress
|
||
ld a, $0
|
||
ldh [rVBK], a
|
||
ret
|
||
|
||
DebugMobileTrade:
|
||
; localization error: NAME_LENGTH (11) should be NAME_LENGTH_JAPANESE (6) here
|
||
|
||
ld hl, .DebugTradeData
|
||
ld a, [hli]
|
||
ld [wPlayerTrademonSpecies], a
|
||
|
||
ld de, wPlayerTrademonSenderName
|
||
ld c, NAME_LENGTH
|
||
.your_name_loop
|
||
ld a, [hli]
|
||
ld [de], a
|
||
inc de
|
||
dec c
|
||
jr nz, .your_name_loop
|
||
|
||
ld de, wPlayerTrademonID
|
||
ld c, 2
|
||
.your_id_loop
|
||
ld a, [hli]
|
||
ld [de], a
|
||
inc de
|
||
dec c
|
||
jr nz, .your_id_loop
|
||
|
||
ld de, wPlayerTrademonOTName
|
||
ld c, NAME_LENGTH
|
||
.your_ot_loop
|
||
ld a, [hli]
|
||
ld [de], a
|
||
inc de
|
||
dec c
|
||
jr nz, .your_ot_loop
|
||
|
||
ld a, [hli]
|
||
ld [wOTTrademonSpecies], a
|
||
|
||
ld de, wOTTrademonSenderName
|
||
ld c, NAME_LENGTH
|
||
.their_name_loop
|
||
ld a, [hli]
|
||
ld [de], a
|
||
inc de
|
||
dec c
|
||
jr nz, .their_name_loop
|
||
|
||
ld de, wOTTrademonID
|
||
ld c, 2
|
||
.their_id_loop
|
||
ld a, [hli]
|
||
ld [de], a
|
||
inc de
|
||
dec c
|
||
jr nz, .their_id_loop
|
||
|
||
ld de, wOTTrademonOTName
|
||
ld c, NAME_LENGTH
|
||
.their_ot_loop
|
||
ld a, [hli]
|
||
ld [de], a
|
||
inc de
|
||
dec c
|
||
jr nz, .their_ot_loop
|
||
|
||
ret
|
||
|
||
.DebugTradeData:
|
||
db VENUSAUR
|
||
db "ゲーフり@@"
|
||
dw $0123
|
||
db "かびーん@@"
|
||
db CHARIZARD
|
||
db "クりーチャ@"
|
||
dw $0456
|
||
db "マツミヤ@@"
|
||
|
||
LoadMobileAdapterPalette:
|
||
ld a, [wc74e]
|
||
and $7f
|
||
cp $8 ; CONST: Amount of mobile adapters
|
||
jr c, .asm_108d12
|
||
ld a, $7
|
||
|
||
.asm_108d12
|
||
ld bc, 1 palettes
|
||
ld hl, MobileAdapterPalettes
|
||
call AddNTimes
|
||
ld a, BANK(wBGPals1)
|
||
ld de, wBGPals1 + 4 palettes
|
||
ld bc, 1 palettes
|
||
call FarCopyWRAM
|
||
ret
|
||
|
||
MobileTradeSpritesGFX:
|
||
INCBIN "gfx/mobile/mobile_trade_sprites.2bpp.lz"
|
||
|
||
MobileTradeGFX:
|
||
INCBIN "gfx/mobile/mobile_trade.2bpp.lz"
|
||
|
||
MobileTradeTilemapLZ:
|
||
INCBIN "gfx/mobile/mobile_trade.tilemap.lz"
|
||
|
||
MobileTradeAttrmapLZ:
|
||
INCBIN "gfx/mobile/mobile_trade.attrmap.lz"
|
||
|
||
UnusedMobilePulsePalettes:
|
||
INCLUDE "gfx/mobile/unused_mobile_pulses.pal"
|
||
|
||
MobileTradeBGPalettes:
|
||
INCLUDE "gfx/mobile/mobile_trade_bg.pal"
|
||
|
||
MobileTradeOB1Palettes:
|
||
INCLUDE "gfx/mobile/mobile_trade_ob1.pal"
|
||
|
||
MobileTradeOB2Palettes:
|
||
INCLUDE "gfx/mobile/mobile_trade_ob2.pal"
|
||
|
||
MobileCable1GFX:
|
||
INCBIN "gfx/mobile/mobile_cable_1.2bpp"
|
||
|
||
MobileCable2GFX:
|
||
INCBIN "gfx/mobile/mobile_cable_2.2bpp"
|
||
|
||
MobileAdapterPalettes:
|
||
INCLUDE "gfx/mobile/mobile_adapters.pal"
|