pokecrystal-board/mobile/mobile_42.asm
2017-12-29 13:52:42 +01:00

2009 lines
32 KiB
NASM

MobileTradeAnimation_SendGivemonToGTS: ; 108000
ld a, $80
ld [wcf65], a
ld de, .TradeAnimScript
jp RunMobileTradeAnim_NoFrontpics
; 10800b
.TradeAnimScript:
mobiletradeanim_showgtsgivemon
mobiletradeanim_12
mobiletradeanim_10
mobiletradeanim_sendmon
mobiletradeanim_06
mobiletradeanim_0f
mobiletradeanim_end
MobileTradeAnimation_RetrieveGivemonFromGTS:
ld a, $80
jr asm_108018
MobileTradeAnimation_ReceiveGetmonFromGTS: ; 108016
ld a, $0
asm_108018:
ld [wcf65], a
ld de, .TradeAnimScript
jp RunMobileTradeAnim_NoFrontpics
; 108021
.TradeAnimScript:
mobiletradeanim_11
mobiletradeanim_07
mobiletradeanim_receivemon
mobiletradeanim_showgtsgetmon
mobiletradeanim_end
Function108026: ; 108026
ld a, $0
jr asm_10802c
Function10802a: ; 10802a
ld a, $1
asm_10802c:
ld [wcf65], a
ld de, .TradeAnimScript
jp RunMobileTradeAnim_Frontpics
; 108035
.TradeAnimScript: ; trade
mobiletradeanim_showgivemon
mobiletradeanim_12
mobiletradeanim_02
mobiletradeanim_sendmon
mobiletradeanim_05
mobiletradeanim_receivemon
mobiletradeanim_showgetmon
mobiletradeanim_end
Function10803d: ; 10803d
ld a, $0
ld [wcf65], a
ld de, .TradeAnimScript
jp RunMobileTradeAnim_NoFrontpics
; 108048
.TradeAnimScript:
mobiletradeanim_11
mobiletradeanim_07
mobiletradeanim_receivemon
mobiletradeanim_showoddegg
mobiletradeanim_end
Function10804d: ; 10804d
ld a, $0
ld [wcf65], a
ld de, .TradeAnimScript
jp RunMobileTradeAnim_NoFrontpics
; 108058
.TradeAnimScript:
mobiletradeanim_11
mobiletradeanim_showgtsgetmon
mobiletradeanim_end
RunMobileTradeAnim_Frontpics: ; 10805b
ld hl, wTradeAnimAddress
ld [hl], e
inc hl
ld [hl], d
ld a, [hMapAnims]
push af
xor a
ld [hMapAnims], a
ld hl, VramState
ld a, [hl]
push af
res 0, [hl]
ld hl, Options
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
call Function1080b7
.loop
call MobileTradeAnim_JumptableLoop
jr nc, .loop
pop af
ld [Options], a
pop af
ld [VramState], a
pop af
ld [hMapAnims], a
ret
; 108089
RunMobileTradeAnim_NoFrontpics: ; 108089
ld hl, wTradeAnimAddress
ld [hl], e
inc hl
ld [hl], d
ld a, [hMapAnims]
push af
xor a
ld [hMapAnims], a
ld hl, VramState
ld a, [hl]
push af
res 0, [hl]
ld hl, Options
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
call Function108157
.loop
call MobileTradeAnim_JumptableLoop
jr nc, .loop
pop af
ld [Options], a
pop af
ld [VramState], a
pop af
ld [hMapAnims], a
ret
; 1080b7
Function1080b7: ; 1080b7
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
ld [rVBK], a
ld hl, LZ_108da7
ld de, vTiles2
call Decompress
ld a, $0
ld [rVBK], a
ld hl, LZ_108d27
ld de, vTiles0 tile $20
call Decompress
call EnableLCD
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
farcall ClearSpriteAnims
call DelayFrame
ld de, TradeBallGFX
ld hl, vTiles0
lb bc, BANK(TradeBallGFX), $06
call Request2bpp
ld de, TradePoofGFX
ld hl, vTiles0 tile $06
lb bc, BANK(TradePoofGFX), $0c
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
; 108157
Function108157: ; 108157
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
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [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
; 1081ad
MobileTradeAnim_ClearTiles: ; 1081ad
ld a, $1
ld [rVBK], a
ld hl, vTiles0
ld bc, 3 * $80 tiles
xor a
call ByteFill
ld a, $0
ld [rVBK], a
ld hl, vTiles0
ld bc, 3 * $80 tiles
xor a
call ByteFill
ret
; 1081ca
MobileTradeAnim_ClearBGMap: ; 1081ca
ld a, $1
ld [rVBK], a
hlbgcoord 0, 0
ld bc, 2 * BG_MAP_HEIGHT * BG_MAP_WIDTH
ld a, $0
call ByteFill
ld a, $0
ld [rVBK], a
hlbgcoord 0, 0
ld bc, 2 * BG_MAP_HEIGHT * BG_MAP_WIDTH
ld a, $7f
call ByteFill
ret
; 1081e9
MobileTradeAnim_GetFrontpic: ; 1081e9
push de
push af
predef GetUnownLetter
pop af
ld [CurPartySpecies], a
ld [CurSpecies], a
call GetBaseData
pop de
predef GetMonFrontpic
ret
; 108201
Function108201: ; 108201
push de
push af
predef GetUnownLetter
pop af
ld [CurPartySpecies], a
ld [CurSpecies], a
call GetBaseData
pop de
predef GetAnimatedFrontpicPredef
ret
; 108219
Function108219: ; 108219
ld [CurPartySpecies], a
hlcoord 7, 2
ld d, $0
ld e, ANIM_MON_TRADE
predef AnimateFrontpic
ret
; 108229
Function108229: ; 108229
ld [CurPartySpecies], a
hlcoord 7, 2
ld d, $0
ld e, ANIM_MON_TRADE
predef LoadMonAnimation
ret
; 108239
MobileTradeAnim_InitSpeciesName: ; 108239
push de
ld [wd265], a
call GetPokemonName
ld hl, StringBuffer1
pop de
ld bc, PKMN_NAME_LENGTH
call CopyBytes
ret
; 10824b
MobileTradeAnim_JumptableLoop: ; 10824b
ld a, [wJumptableIndex]
bit 7, a
jr nz, .StopAnim
call .ExecuteMobileTradeAnimCommand
call DelayFrame
and a
ret
.StopAnim:
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
call LoadStandardFont
call LoadFontsBattleExtra
farcall MobileFunc_106462
farcall Function106464
scf
ret
; 10827b
.ExecuteMobileTradeAnimCommand: ; 10827b
ld a, [wJumptableIndex]
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
; 10828a
.Jumptable: ; 10828a
dw GetMobileTradeAnimByte ; 00
dw MobileTradeAnim_ShowPlayerMonToBeSent ; 01
dw MobileTradeAnim_02 ; 02
dw MobileTradeAnim_GiveTrademon1 ; 03
dw MobileTradeAnim_GiveTrademon2 ; 04
dw MobileTradeAnim_05 ; 05
dw MobileTradeAnim_06 ; 06
dw MobileTradeAnim_07 ; 07
dw MobileTradeAnim_GetTrademon1 ; 08
dw MobileTradeAnim_GetTrademon2 ; 09
dw MobileTradeAnim_GetTrademon3 ; 0a
dw MobileTradeAnim_ShowOTMonFromTrade ; 0b
dw EndMobileTradeAnim ; 0c
dw MobileTradeAnim_ShowPlayerMonForGTS ; 0d
dw MobileTradeAnim_ShowOTMonFromGTS ; 0e
dw MobileTradeAnim_0f ; 0f
dw MobileTradeAnim_10 ; 10
dw MobileTradeAnim_11 ; 11
dw MobileTradeAnim_FadeToBlack ; 12
dw MobileTradeAnim_GetOddEgg ; 13 get odd egg
; 1082b2
MobileTradeAnim_Next: ; 1082b2
ld hl, wJumptableIndex
inc [hl]
ret
; 1082b7
GetMobileTradeAnimByte: ; 1082b7
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
; 1082c6
EndMobileTradeAnim: ; 1082c6
ld hl, wJumptableIndex
set 7, [hl]
ret
; 1082cc
WaitMobileTradeSpriteAnims: ; 1082cc
.loop
push bc
farcall PlaySpriteAnimations
pop bc
call DelayFrame
dec c
jr nz, .loop
ret
; 1082db
Function1082db: ; 1082db
.loop
farcall PlaySpriteAnimations
farcall SetUpPokeAnim
farcall HDMATransferTileMapToWRAMBank3
jr nc, .loop
ret
; 1082f0
Function1082f0: ; 1082f0
.loop
call Function108b78
call DelayFrame
dec c
jr nz, .loop
ret
; 1082fa
Function1082fa: ; 1082fa
.loop
call Function108b78
push hl
push bc
farcall PlaySpriteAnimations
pop bc
pop hl
call DelayFrame
dec c
jr nz, .loop
ret
; 10830e
MobileTradeAnim_ShowPlayerMonToBeSent: ; 10830e
ld de, MUSIC_EVOLUTION
call PlayMusic2
ld a, $80
ld [hSCX], a
xor a
ld [hSCY], a
ld a, $87
ld [hWX], a
ld a, $50
ld [hWY], a
call MobileTradeAnim_DisplayMonToBeSent
ld a, [wPlayerTrademonSpecies]
ld [CurPartySpecies], a
call Function10895e
ld a, [wPlayerTrademonDVs]
ld [TempMonDVs], a
ld a, [wPlayerTrademonDVs + 1]
ld [TempMonDVs + 1], a
ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
call WaitBGMap
.loop
ld a, [hWX]
cp $7
jr z, .okay
sub $4
ld [hWX], a
ld a, [hSCX]
sub $4
ld [hSCX], a
call DelayFrame
jr .loop
.okay
ld a, $7
ld [hWX], a
xor a
ld [hSCX], a
ld a, [wPlayerTrademonSpecies]
call GetCryIndex
jr c, .skip_cry
ld e, c
ld d, b
call PlayCryHeader
.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
; 10839b
MobileTradeAnim_ShowOTMonFromTrade: ; 10839b
call ClearBGPalettes
call ClearSprites
call ClearTileMap
call DisableLCD
call MobileTradeAnim_ClearBGMap
ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], a
ld hl, wOTTrademonDVs
ld de, vTiles2
call Function108201
call EnableLCD
farcall DeinitializeAllSprites
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [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
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $50
ld [hWY], a
ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], a
ld a, [wOTTrademonDVs]
ld [TempMonDVs], a
ld a, [wOTTrademonDVs + 1]
ld [TempMonDVs + 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
; 10842c
MobileTradeAnim_ShowPlayerMonForGTS: ; 10842c
ld de, MUSIC_EVOLUTION
call PlayMusic2
ld a, $80
ld [hSCX], a
xor a
ld [hSCY], a
ld a, $87
ld [hWX], a
ld a, $50
ld [hWY], a
call MobileTradeAnim_DisplayMonToBeSent
ld a, [wPlayerTrademonSpecies]
ld [CurPartySpecies], a
ld hl, wPlayerTrademonDVs
call Function10898a
call DelayFrame
ld de, TradeBallGFX
ld hl, vTiles0
lb bc, BANK(TradeBallGFX), $06
call Request2bpp
ld de, TradePoofGFX
ld hl, vTiles0 tile $06
lb bc, BANK(TradePoofGFX), $0c
call Request2bpp
ld a, [wPlayerTrademonDVs]
ld [TempMonDVs], a
ld a, [wPlayerTrademonDVs + 1]
ld [TempMonDVs + 1], a
ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
call GetSGBLayout
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
call WaitBGMap
.loop
ld a, [hWX]
cp $7
jr z, .done
sub $4
ld [hWX], a
ld a, [hSCX]
sub $4
ld [hSCX], a
call DelayFrame
jr .loop
.done
ld a, $7
ld [hWX], a
xor a
ld [hSCX], a
ld a, [wPlayerTrademonSpecies]
call GetCryIndex
jr c, .skip_cry
ld e, c
ld d, b
call PlayCryHeader
.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
; 1084d7
MobileTradeAnim_ShowOTMonFromGTS: ; 1084d7
call ClearBGPalettes
call ClearSprites
call ClearTileMap
call DisableLCD
call MobileTradeAnim_ClearBGMap
ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], 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), $06
call Request2bpp
ld de, TradePoofGFX
ld hl, vTiles0 tile $06
lb bc, BANK(TradePoofGFX), $0c
call Request2bpp
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [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
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $50
ld [hWY], a
ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], a
ld a, [wOTTrademonDVs]
ld [TempMonDVs], a
ld a, [wOTTrademonDVs + 1]
ld [TempMonDVs + 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
; 108589
MobileTradeAnim_GetOddEgg: ; 108589
call ClearBGPalettes
call ClearSprites
call ClearTileMap
call DisableLCD
call MobileTradeAnim_ClearBGMap
ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], 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), $06
call Request2bpp
ld de, TradePoofGFX
ld hl, vTiles0 tile $06
lb bc, BANK(TradePoofGFX), $0c
call Request2bpp
xor a
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [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
ld [hSCX], a
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $50
ld [hWY], a
ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], a
ld a, [wOTTrademonDVs]
ld [TempMonDVs], a
ld a, [wOTTrademonDVs + 1]
ld [TempMonDVs + 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
; 108638
MobileTradeAnim_02: ; 108638
farcall DeinitializeAllSprites
call ClearBGPalettes
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
call DisableLCD
call MobileTradeAnim_ClearBGMap
call Function108c80
call Function108c6d
call EnableLCD
ld a, $c
ld [hSCX], a
ld a, $78
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld hl, Palette_109107
ld de, UnknBGPals
ld bc, 8 palettes
call CopyBytes
pop af
ld [rSVBK], a
call Function108d07
call Function108af4
call GetMobileTradeAnimByte
ret
; 108689
MobileTradeAnim_10: ; 108689
farcall DeinitializeAllSprites
call ClearBGPalettes
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
call DisableLCD
call MobileTradeAnim_ClearBGMap
ld a, $1
ld [rVBK], a
ld hl, LZ_108da7
ld de, vTiles2
call Decompress
ld a, $0
ld [rVBK], a
ld hl, LZ_108d27
ld de, vTiles0 tile $20
call Decompress
call Function108c80
call Function108c6d
call EnableLCD
ld a, $c
ld [hSCX], a
ld a, $78
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld hl, Palette_109107
ld de, UnknBGPals
ld bc, 8 palettes
call CopyBytes
pop af
ld [rSVBK], a
call Function108d07
call Function108af4
call GetMobileTradeAnimByte
ret
; 1086f4
MobileTradeAnim_11: ; 1086f4
call ClearBGPalettes
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
call DisableLCD
ld a, $1
ld [rVBK], a
ld hl, LZ_108da7
ld de, vTiles2
call Decompress
ld a, $0
ld [rVBK], a
ld hl, LZ_108d27
ld de, vTiles0 tile $20
call Decompress
call Function108c80
call Function108c6d
call EnableLCD
ld a, $80
ld [hSCX], a
ld a, $90
ld [hSCY], a
ld a, $7
ld [hWX], a
ld a, $90
ld [hWY], a
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld hl, Palette_109107
ld de, UnknBGPals
ld bc, 8 palettes
call CopyBytes
pop af
ld [rSVBK], a
call Function108d07
call Function108af4
call Function108b5a
ld a, $e0
ld [hSCX], a
ld de, MUSIC_EVOLUTION
call PlayMusic2
call GetMobileTradeAnimByte
ret
; 108763
MobileTradeAnim_GiveTrademon1: ; 108763
ld de, SFX_GIVE_TRADEMON
call PlaySFX
ld c, 40
ld hl, BGPals palette 6
call Function1082f0
call Function108af4
.loop
ld a, [hSCX]
cp $e0
jr z, .loop2
dec a
dec a
ld [hSCX], a
cp $f8
jr nz, .next
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_MOBILE_22
call _InitSpriteAnimStruct
.next
ld c, 1
call WaitMobileTradeSpriteAnims
jr .loop
.loop2
ld a, [hSCY]
cp $f8
jr z, .done
dec a
dec a
ld [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_22
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
; 1087cf
MobileTradeAnim_GiveTrademon2: ; 1087cf
ld c, 40
ld hl, BGPals + 1 palettes
call Function1082f0
call Function108af4
call Function108b5a
depixel 9, 10, 2, 0
ld a, SPRITE_ANIM_INDEX_MOBILE_25
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_23
call _InitSpriteAnimStruct
.loop
ld a, [hSCY]
cp $90
jr z, .done
sub $8
ld [hSCY], a
ld c, 1
call WaitMobileTradeSpriteAnims
jr .loop
.done
call GetMobileTradeAnimByte
ret
; 108811
MobileTradeAnim_05: ; 108811
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_24
call _InitSpriteAnimStruct
call GetMobileTradeAnimByte
ld de, SFX_THROW_BALL
call PlaySFX
ret
; 108838
MobileTradeAnim_06: ; 108838
ld c, 40
call WaitMobileTradeSpriteAnims
ld a, $1
ld [wcf64], a
ld de, SFX_SHARPEN
call PlaySFX
call GetMobileTradeAnimByte
ret
; 10884c
MobileTradeAnim_07: ; 10884c
ld c, 80
call DelayFrames
depixel 30, 10, 2, 0
ld a, SPRITE_ANIM_INDEX_MOBILE_24
call _InitSpriteAnimStruct
call GetMobileTradeAnimByte
ld de, SFX_THROW_BALL
call PlaySFX
ret
; 108863
MobileTradeAnim_GetTrademon1: ; 108863
ld c, 40
call WaitMobileTradeSpriteAnims
.loop
ld a, [hSCY]
cp $f8
jr z, .done
add $8
ld [hSCY], a
ld c, 1
call WaitMobileTradeSpriteAnims
jr .loop
.done
farcall DeinitializeAllSprites
depixel 9, 10, 2, 0
ld a, SPRITE_ANIM_INDEX_MOBILE_25
call _InitSpriteAnimStruct
ld de, SFX_GLASS_TING_2
call PlaySFX
call Function108af4
call MobileTradeAnim_Next
ret
; 108894
MobileTradeAnim_GetTrademon2: ; 108894
ld c, 20
ld hl, BGPals + 1 palettes
call Function1082fa
ld de, SFX_GIVE_TRADEMON
call PlaySFX
ld c, 20
ld hl, BGPals + 1 palettes
call Function1082fa
call Function108af4
.asm_1088ad
ld a, [hSCY]
cp $78
jr z, .asm_1088ee
inc a
inc a
ld [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_22
call _InitSpriteAnimStruct
jr .asm_1088e7
.asm_1088cf
depixel 10, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_MOBILE_22
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
ld a, [hSCX]
cp $c
jr z, .asm_108906
inc a
inc a
ld [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
; 10890a
MobileTradeAnim_GetTrademon3: ; 10890a
ld c, 40
ld hl, BGPals palette 6
call Function1082f0
call Function108af4
call GetMobileTradeAnimByte
ret
; 108919
MobileTradeAnim_0f: ; 108919
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
; 10893d
MobileTradeAnim_FadeToBlack: ; 10893d
.loop
ld 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
; 10895e
Function10895e: ; 10895e
ld de, vTiles0 tile $30
jr asm_108966
Function108963:
ld de, vTiles2 tile $31
asm_108966
call DelayFrame
ld hl, vTiles2
lb bc, $a, $31 ; $a is the bank of ?????
call Request2bpp
call WaitTop
call MobileTradeAnim_ClearTilemap
hlcoord 7, 2
xor a
ld [hGraphicStartTile], a
lb bc, 7, 7
predef PlaceGraphic
call WaitBGMap
ret
; 10898a
Function10898a: ; 10898a
ld de, vTiles2
call MobileTradeAnim_GetFrontpic
call WaitTop
call MobileTradeAnim_ClearTilemap
hlcoord 7, 2
xor a
ld [hGraphicStartTile], a
lb bc, 7, 7
predef PlaceGraphic
call WaitBGMap
ret
; 1089a8
MobileTradeAnim_DisplayMonToBeSent: ; 1089a8
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)
ld [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
; 108a1d
.EggTemplate: ; 108a1d
db "タマゴ"
next "おや/?????"
next "<ID>№<DOT>?????"
db "@"
; 108a33
Function108a33: ; 108a33
call WaitTop
call MobileTradeAnim_ClearTilemap
ld a, HIGH(vBGMap1)
ld [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
; 108a54
.OddEgg: ; 108a54
db "なぞのタマゴ@"
; 108a5b
MobileTradeAnim_LoadMonTemplate: ; 108a5b
call WaitTop
call MobileTradeAnim_ClearTilemap
ld a, HIGH(vBGMap1)
ld [hBGMapAddress + 1], a
hlcoord 4, 0
ld b, 6
ld c, 10
call TextBox
hlcoord 5, 0
ld de, .MonTemplate
call PlaceString
ret
; 108a79
.MonTemplate: ; 108a79
db "─ №<DOT>"
next ""
next "おや/"
next "<ID>№<DOT>"
db "@"
; 108a87
MobileTradeAnim_MonDisplay_UpdateBGMap: ; 108a87
call WaitBGMap
call WaitTop
ld a, HIGH(vBGMap0)
ld [hBGMapAddress + 1], a
ret
; 108a92
MobileTradeAnim_MonDisplay_PrintSpeciesNumber: ; 108a92
hlcoord 9, 0
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
ret
; 108a9c
MobileTradeAnim_MonDisplay_PrintSpeciesName: ; 108a9c
hlcoord 5, 2
call PlaceString
ret
; 108aa3
MobileTradeAnim_MonDisplay_PrintOTNameAndGender: ; 108aa3
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
; 108abb
.GenderChars: ; 108abb
db " "
db "♂"
db "♀"
; 108abe
MobileTradeAnim_MonDisplay_PrintIDNumber: ; 108abe
hlcoord 8, 6
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
call PrintNum
ret
; 108ac8
MobileTradeAnim_ClearTilemap: ; 108ac8
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld a, " "
call ByteFill
ret
; 108ad4
Function108ad4: ; 108ad4
and a
jr z, .asm_108adc
ld de, GFX_1092c7
jr .asm_108adf
.asm_108adc
ld de, GFX_1091c7
.asm_108adf
ld a, $1
ld [rVBK], a
ld hl, vTiles2 tile $4a
lb bc, BANK(GFX_1092c7), 16
call Get2bpp_2
call DelayFrame
ld a, $0
ld [rVBK], a
ret
; 108af4
Function108af4: ; 108af4
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld a, [wcf65]
and $1
jr z, .copy_palette_109147
ld hl, Palette_109187
ld de, UnknOBPals
ld bc, 8 palettes
call CopyBytes
ld hl, Palette_109187
ld de, OBPals
ld bc, 8 palettes
call CopyBytes
jr .done_copy
.copy_palette_109147
ld hl, Palette_109147
ld de, UnknOBPals
ld bc, 8 palettes
call CopyBytes
ld hl, Palette_109147
ld de, OBPals
ld bc, 8 palettes
call CopyBytes
.done_copy
pop af
ld [rSVBK], a
ld a, %11100100 ; 3,2,1,0
call DmgToCgbObjPal0
ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
call DelayFrame
ret
; 108b45
Function108b45: ; 108b45
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld de, (31 << 10) + (31 << 5) + 31 ; $7fff
ld hl, UnknBGPals
ld a, e
ld [hli], a
ld d, a
ld [hli], a
pop af
ld [rSVBK], a
ret
; 108b5a
Function108b5a: ; 108b5a
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld de, (15 << 10) + (31 << 5) + 18 ; $3ff2
ld hl, BGPals + 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
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ret
; 108b78
Function108b78: ; 108b78
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld a, c
and $2
jr z, .Orange
ld de, (31 << 10) + (31 << 5) + 31 ; $7fff
jr .load_pal
.Orange:
ld de, ( 1 << 10) + (15 << 5) + 31 ; $05ff
.load_pal
ld a, e
ld [hli], a
ld a, d
ld [hld], a
pop af
ld [rSVBK], a
ld a, $1
ld [hCGBPalUpdate], a
ret
; 108b98
Palette_108b98:
; removed
Function108b98: ; 108b98
ld d, a
ld a, [rSVBK]
push af
ld a, $5
ld [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, UnknBGPals + 7 palettes
ld bc, 8 palettes
call CopyBytes
pop af
ld [rSVBK], a
ret
; 108bbd
MobileTradeAnim_DeleteSprites: ; 108bbd
farcall DeinitializeAllSprites
call ClearSprites
ret
; 108bc7
Function108bc7: ; 108bc7 (42:4bc7)
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: ; 108be0 (42:4be0)
ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld a, [hl]
cp 9 * 8 + 2
ret z
add 1 * 8
ld [hl], a
ret
; 108bec (42:4bec)
Function108bec: ; 108bec
ld a, $90
ld [hWY], a
ld hl, .PlayerWillTradeMon
call PrintText
ld c, 80
call DelayFrames
ld hl, .ForPartnersMon
call PrintText
ld c, 80
call DelayFrames
ret
; 108c07
.PlayerWillTradeMon: ; 0x108c07
text_jump UnknownText_0x1bc787
db "@"
; 0x108c0c
.ForPartnersMon: ; 0x108c0c
text_jump UnknownText_0x1bc79d
db "@"
; 0x108c11
.UnusedTextPlayersMonTrade: ; 0x108c11
text_jump UnknownText_0x1bc7b0
db "@"
; 0x108c16
Function108c16: ; 108c16
ld a, $90
ld [hWY], a
ld hl, .TakeGoodCareOfMon
call PrintText
ld c, 80
call DelayFrames
ret
; 108c26
.TakeGoodCareOfMon: ; 0x108c26
text_jump UnknownText_0x1bc7c3
db "@"
; 0x108c2b
Function108c2b: ; 108c2b
ld a, $90
ld [hWY], a
ld hl, .PlayersMonTrade
call PrintText
ld c, 80
call DelayFrames
ret
; 108c3b
.PlayersMonTrade: ; 0x108c3b
text_jump UnknownText_0x1bc7dd
db "@"
; 0x108c40
Function108c40: ; 108c40
ld a, $90
ld [hWY], a
ld a, [wcf65]
and %10000000
jr z, .Getmon
ld hl, .CameBack
call PrintText
ld c, 80
call DelayFrames
ret
.Getmon:
ld hl, .TakeGoodCareOf
call PrintText
ld c, 80
call DelayFrames
ret
; 108c63
.TakeGoodCareOf: ; 0x108c63
text_jump UnknownText_0x1bc7f0
db "@"
; 0x108c68
.CameBack: ; 0x108c68
text_jump UnknownText_0x1bc80a
db "@"
; 0x108c6d
Function108c6d: ; 108c6d
ld hl, LZ_108fe7
debgcoord 0, 0
call Decompress
ld hl, LZ_108fe7
debgcoord 0, 0, vBGMap1
call Decompress
ret
; 108c80
Function108c80: ; 108c80
ld a, $1
ld [rVBK], a
ld hl, LZ_1090a7
debgcoord 0, 0
call Decompress
ld hl, LZ_1090a7
debgcoord 0, 0, vBGMap1
call Decompress
ld a, $0
ld [rVBK], a
ret
; 108c9b
DebugMobileTrade: ; 108c9b
; 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
; 108ce9
.DebugTradeData:
db VENUSAUR
db "ゲーフり@@"
dw $0123
db "かびーん@@"
db CHARIZARD
db "クりーチャ@"
dw $0456
db "マツミヤ@@"
; 108d07
Function108d07: ; 108d07
ld a, [wc74e]
and $7f
cp $8
jr c, .asm_108d12
ld a, $7
.asm_108d12
ld bc, 1 palettes
ld hl, Palette_1093c7
call AddNTimes
ld a, $5
ld de, UnknBGPals + 4 palettes
ld bc, 1 palettes
call FarCopyWRAM
ret
; 108d27
LZ_108d27:
INCBIN "gfx/unknown/108d27.2bpp.lz"
LZ_108da7:
INCBIN "gfx/unknown/108da7.2bpp.lz"
LZ_108fe7:
INCBIN "gfx/unknown/108fe7.tilemap.lz"
LZ_1090a7:
INCBIN "gfx/unknown/1090a7.tilemap.lz"
Palette_1090f7:
; unreferenced
RGB 31, 31, 31
RGB 0, 0, 0
RGB 31, 0, 25
RGB 0, 0, 0
RGB 31, 31, 31
RGB 0, 0, 0
RGB 9, 19, 31
RGB 0, 0, 0
Palette_109107:
RGB 18, 31, 15
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
RGB 31, 15, 1
RGB 14, 14, 31
RGB 12, 9, 31
RGB 0, 0, 0
RGB 18, 31, 15
RGB 14, 14, 31
RGB 12, 9, 31
RGB 0, 0, 0
RGB 18, 31, 15
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
RGB 18, 31, 15
RGB 31, 7, 9
RGB 18, 0, 1
RGB 0, 0, 0
RGB 18, 31, 15
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
RGB 31, 15, 1
RGB 18, 0, 30
RGB 9, 0, 17
RGB 0, 0, 0
RGB 18, 31, 15
RGB 18, 0, 30
RGB 9, 0, 17
RGB 0, 0, 0
Palette_109147:
RGB 31, 31, 31
RGB 31, 31, 12
RGB 31, 13, 12
RGB 0, 0, 0
RGB 31, 31, 31
RGB 31, 23, 15
RGB 31, 18, 7
RGB 31, 15, 0
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
RGB 31, 31, 31
RGB 31, 0, 25
RGB 31, 0, 25
RGB 0, 0, 0
RGB 31, 31, 31
RGB 9, 19, 31
RGB 9, 19, 31
RGB 0, 0, 0
RGB 31, 31, 31
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 31, 31, 31
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 31, 31, 31
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
Palette_109187:
RGB 31, 31, 31
RGB 31, 31, 12
RGB 31, 13, 12
RGB 0, 0, 0
RGB 31, 31, 31
RGB 31, 23, 15
RGB 31, 18, 7
RGB 31, 15, 0
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
RGB 31, 31, 31
RGB 9, 19, 31
RGB 9, 19, 31
RGB 0, 0, 0
RGB 31, 31, 31
RGB 31, 0, 25
RGB 31, 0, 25
RGB 0, 0, 0
RGB 31, 31, 31
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 31, 31, 31
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 31, 31, 31
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
GFX_1091c7:
INCBIN "gfx/unknown/1091c7.2bpp"
GFX_1092c7:
INCBIN "gfx/unknown/1092c7.2bpp"
Palette_1093c7:
RGB 18, 31, 15
RGB 4, 13, 31
RGB 0, 0, 31
RGB 0, 0, 0
RGB 18, 31, 15
RGB 31, 31, 0
RGB 31, 15, 0
RGB 0, 0, 0
RGB 18, 31, 15
RGB 9, 24, 0
RGB 2, 16, 0
RGB 0, 0, 0
RGB 18, 31, 15
RGB 31, 7, 9
RGB 18, 0, 1
RGB 0, 0, 0
RGB 18, 31, 15
RGB 28, 5, 31
RGB 17, 0, 17
RGB 0, 0, 0
RGB 18, 31, 15
RGB 9, 9, 9
RGB 4, 4, 4
RGB 0, 0, 0
RGB 18, 31, 15
RGB 31, 13, 21
RGB 27, 7, 12
RGB 0, 0, 0
RGB 18, 31, 15
RGB 21, 20, 20
RGB 14, 14, 31
RGB 0, 0, 0