summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2019-10-29 21:29:10 -0400
committerPikalaxALT <PikalaxALT@gmail.com>2019-10-29 21:29:10 -0400
commite7a66b294169572a70c65b7223ae16810e9a49a3 (patch)
tree3a70ce34b5a66f14a069a3ade9befc57109c1ec8
parente9592bee5d1aa74a39e8879d52c0e5f105bef9c1 (diff)
port sub_8050F3C
-rw-r--r--asm/cable_club.s8
-rw-r--r--asm/evolution_scene.s32
-rw-r--r--asm/link_rfu_3.s4
-rw-r--r--asm/pokeball.s6
-rw-r--r--asm/trade.s2596
-rw-r--r--data/strings.s8
-rw-r--r--data/trade.s2
-rw-r--r--include/gba/defines.h1
-rw-r--r--include/pokeball.h2
-rw-r--r--include/strings.h4
-rw-r--r--src/oak_speech.c2
-rw-r--r--src/trade.c810
12 files changed, 865 insertions, 2610 deletions
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 01aa8d217..9b4c173c9 100644
--- a/asm/cable_club.s
+++ b/asm/cable_club.s
@@ -2193,7 +2193,7 @@ _08081894:
.align 2, 0
_080818A4: .4byte gPaletteFade
_080818A8:
- ldr r1, _080818C0 @ =gUnknown_2031DA4
+ ldr r1, _080818C0 @ =gSelectedTradeMonPositions
movs r0, 0
strb r0, [r1]
strb r0, [r1, 0x1]
@@ -2205,7 +2205,7 @@ _080818B8:
strh r0, [r4, 0x8]
b _080818D8
.align 2, 0
-_080818C0: .4byte gUnknown_2031DA4
+_080818C0: .4byte gSelectedTradeMonPositions
_080818C4:
ldr r0, _080818E0 @ =gReceivedRemoteLinkPlayers
ldrb r0, [r0]
@@ -2269,7 +2269,7 @@ _0808192C:
.align 2, 0
_0808193C: .4byte gPaletteFade
_08081940:
- ldr r1, _08081958 @ =gUnknown_2031DA4
+ ldr r1, _08081958 @ =gSelectedTradeMonPositions
movs r0, 0
strb r0, [r1]
strb r0, [r1, 0x1]
@@ -2281,7 +2281,7 @@ _08081950:
strh r0, [r4]
b _08081970
.align 2, 0
-_08081958: .4byte gUnknown_2031DA4
+_08081958: .4byte gSelectedTradeMonPositions
_0808195C:
bl IsLinkTaskFinished
lsls r0, 24
diff --git a/asm/evolution_scene.s b/asm/evolution_scene.s
index b718deee6..710ee2b67 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -2817,7 +2817,7 @@ _080CF620:
movs r0, 0
adds r1, r4, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CF648 @ =gTasks
adds r1, r7, r6
lsls r1, 3
@@ -3110,7 +3110,7 @@ _080CF8A8:
movs r0, 0
adds r1, r4, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CF91C @ =0x00000103
bl PlayFanfare
ldr r2, _080CF920 @ =gTasks
@@ -3222,7 +3222,7 @@ _080CF9AC:
ldr r1, _080CF9C8 @ =gUnknown_841E325
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CF9CC @ =gTasks
adds r1, r7, r6
lsls r1, 3
@@ -3341,7 +3341,7 @@ _080CFAA8:
movs r0, 0
adds r1, r4, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r1, _080CFAD4 @ =gTasks
adds r0, r7, r6
lsls r0, 3
@@ -3376,7 +3376,7 @@ _080CFAF2:
ldr r1, _080CFB2C @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CFB30 @ =gTasks
adds r1, r7, r6
lsls r1, 3
@@ -3477,7 +3477,7 @@ _080CFBDA:
ldr r1, _080CFC04 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CFC08 @ =gTasks
adds r1, r7, r6
lsls r1, 3
@@ -3509,7 +3509,7 @@ _080CFC26:
ldr r1, _080CFC4C @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CFC50 @ =gTasks
adds r1, r7, r6
lsls r1, 3
@@ -3537,7 +3537,7 @@ _080CFC54:
ldr r1, _080CFCEC @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CFCF0 @ =gTasks
adds r1, r7, r6
lsls r1, 3
@@ -3625,7 +3625,7 @@ _080CFD1C:
ldr r1, _080CFD68 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r1, _080CFD6C @ =gTasks
adds r0, r7, r6
lsls r0, 3
@@ -3665,7 +3665,7 @@ _080CFD70:
ldr r1, _080CFDA4 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r1, _080CFDA8 @ =gTasks
adds r0, r7, r6
lsls r0, 3
@@ -3782,7 +3782,7 @@ _080CFE74:
ldr r1, _080CFEB8 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r1, _080CFEBC @ =gTasks
adds r0, r7, r6
lsls r0, 3
@@ -3825,7 +3825,7 @@ _080CFEC0:
ldr r1, _080CFF20 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CFF24 @ =gTasks
adds r1, r7, r6
lsls r1, 3
@@ -3859,7 +3859,7 @@ _080CFF42:
ldr r1, _080CFF68 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, _080CFF6C @ =gTasks
adds r1, r7, r6
lsls r1, 3
@@ -3890,7 +3890,7 @@ _080CFF70:
ldr r1, _080CFFB0 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r1, _080CFFB4 @ =gTasks
adds r0, r7, r6
lsls r0, 3
@@ -3909,7 +3909,7 @@ _080CFFB8:
ldr r1, _080CFFE4 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r1, _080CFFE8 @ =gTasks
adds r0, r7, r6
lsls r0, 3
@@ -3932,7 +3932,7 @@ _080CFFEC:
ldr r1, _080D0010 @ =gDisplayedStringBattle
movs r0, 0
movs r2, 0x1
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r1, _080D0014 @ =gTasks
adds r0, r7, r6
lsls r0, 3
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index eac4dcb4d..4decd66ff 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -3083,7 +3083,7 @@ _08117210:
movs r2, 0xD8
bl memcpy
bl ResetBlockReceivedFlags
- ldr r1, _08117270 @ =gUnknown_2031DA4
+ ldr r1, _08117270 @ =gSelectedTradeMonPositions
strb r7, [r1]
movs r0, 0x6
strb r0, [r1, 0x1]
@@ -3105,7 +3105,7 @@ _0811725C:
.align 2, 0
_08117268: .4byte gLinkPartnerMail
_0811726C: .4byte gBlockRecvBuffer
-_08117270: .4byte gUnknown_2031DA4
+_08117270: .4byte gSelectedTradeMonPositions
_08117274: .4byte gMain
_08117278: .4byte CB2_ReturnToField
_0811727C: .4byte CB2_InitTradeAnim_LinkTrade
diff --git a/asm/pokeball.s b/asm/pokeball.s
index fa1f4eee0..ed9eea832 100644
--- a/asm/pokeball.s
+++ b/asm/pokeball.s
@@ -2327,8 +2327,8 @@ _0804BB90:
bx r0
thumb_func_end sub_804BAA4
- thumb_func_start sub_804BB98
-sub_804BB98: @ 804BB98
+ thumb_func_start CreateTradePokeballSprite
+CreateTradePokeballSprite: @ 804BB98
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -2414,7 +2414,7 @@ _0804BC40: .4byte gUnknown_82605CC
_0804BC44: .4byte gUnknown_82606F4
_0804BC48: .4byte gSprites
_0804BC4C: .4byte sub_804BC50
- thumb_func_end sub_804BB98
+ thumb_func_end CreateTradePokeballSprite
thumb_func_start sub_804BC50
sub_804BC50: @ 804BC50
diff --git a/asm/trade.s b/asm/trade.s
index d22c2c980..0c863b4f1 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -5,2339 +5,11 @@
.text
- thumb_func_start sub_8050DE0
-sub_8050DE0: @ 8050DE0
- push {lr}
- ldr r0, _08050E0C @ =gUnknown_826CE2C
- bl LoadSpriteSheet
- ldr r0, _08050E10 @ =gUnknown_826CE7C
- bl LoadSpriteSheet
- ldr r0, _08050E14 @ =gUnknown_826CEB0
- bl LoadSpriteSheet
- ldr r0, _08050E18 @ =gUnknown_826CF28
- bl LoadSpriteSheet
- ldr r0, _08050E1C @ =gUnknown_826CE34
- bl LoadSpritePalette
- ldr r0, _08050E20 @ =gUnknown_826CE3C
- bl LoadSpritePalette
- pop {r0}
- bx r0
- .align 2, 0
-_08050E0C: .4byte gUnknown_826CE2C
-_08050E10: .4byte gUnknown_826CE7C
-_08050E14: .4byte gUnknown_826CEB0
-_08050E18: .4byte gUnknown_826CF28
-_08050E1C: .4byte gUnknown_826CE34
-_08050E20: .4byte gUnknown_826CE3C
- thumb_func_end sub_8050DE0
-
- thumb_func_start sub_8050E24
-sub_8050E24: @ 8050E24
- push {r4,r5,lr}
- sub sp, 0x14
- ldr r0, _08050E94 @ =sTradeAnimationResourcesPtr
- ldr r0, [r0]
- adds r0, 0xEE
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050EB4
- bl GetMultiplayerId
- lsls r0, 24
- ldr r3, _08050E98 @ =gStringVar1
- movs r2, 0x80
- lsls r2, 17
- eors r2, r0
- lsrs r2, 24
- lsls r1, r2, 3
- subs r1, r2
- lsls r1, 2
- ldr r0, _08050E9C @ =gLinkPlayers + 8
- adds r1, r0
- adds r0, r3, 0
- bl StringCopy
- ldr r5, _08050EA0 @ =gUnknown_2031DA4
- ldrb r0, [r5, 0x1]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r4, 0x64
- muls r0, r4
- ldr r1, _08050EA4 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _08050EA8 @ =gStringVar3
- mov r1, sp
- bl StringCopy10
- ldrb r0, [r5]
- muls r0, r4
- ldr r1, _08050EAC @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _08050EB0 @ =gStringVar2
- mov r1, sp
- bl StringCopy10
- b _08050EF0
- .align 2, 0
-_08050E94: .4byte sTradeAnimationResourcesPtr
-_08050E98: .4byte gStringVar1
-_08050E9C: .4byte gLinkPlayers + 8
-_08050EA0: .4byte gUnknown_2031DA4
-_08050EA4: .4byte gEnemyParty
-_08050EA8: .4byte gStringVar3
-_08050EAC: .4byte gPlayerParty
-_08050EB0: .4byte gStringVar2
-_08050EB4:
- ldr r0, _08050EF8 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 2
- ldr r0, _08050EFC @ =gIngameTrades
- adds r4, r0
- ldr r0, _08050F00 @ =gStringVar1
- adds r1, r4, 0
- adds r1, 0x2B
- bl StringCopy
- ldr r0, _08050F04 @ =gStringVar3
- adds r1, r4, 0
- bl StringCopy10
- ldr r0, _08050F08 @ =gSpecialVar_0x8005
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08050F0C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _08050F10 @ =gStringVar2
- mov r1, sp
- bl StringCopy10
-_08050EF0:
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08050EF8: .4byte gSpecialVar_0x8004
-_08050EFC: .4byte gIngameTrades
-_08050F00: .4byte gStringVar1
-_08050F04: .4byte gStringVar3
-_08050F08: .4byte gSpecialVar_0x8005
-_08050F0C: .4byte gPlayerParty
-_08050F10: .4byte gStringVar2
- thumb_func_end sub_8050E24
-
- thumb_func_start sub_8050F14
-sub_8050F14: @ 8050F14
- push {lr}
- ldr r0, _08050F2C @ =sTradeAnimationResourcesPtr
- ldr r0, [r0]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08050F30
- bl sub_805232C
- b _08050F34
- .align 2, 0
-_08050F2C: .4byte sTradeAnimationResourcesPtr
-_08050F30:
- bl sub_8050F3C
-_08050F34:
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- thumb_func_end sub_8050F14
-
- thumb_func_start sub_8050F3C
-sub_8050F3C: @ 8050F3C
- push {r4-r7,lr}
- sub sp, 0x10
- ldr r0, _08050F60 @ =sTradeAnimationResourcesPtr
- ldr r1, [r0]
- adds r1, 0x94
- ldrh r5, [r1]
- ldr r1, _08050F64 @ =0x0000010b
- adds r7, r0, 0
- cmp r5, r1
- bls _08050F54
- bl _08052318
-_08050F54:
- lsls r0, r5, 2
- ldr r1, _08050F68 @ =_08050F6C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050F60: .4byte sTradeAnimationResourcesPtr
-_08050F64: .4byte 0x0000010b
-_08050F68: .4byte _08050F6C
- .align 2, 0
-_08050F6C:
- .4byte _0805139C
- .4byte _08051414
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08051470
- .4byte _080514B8
- .4byte _0805152C
- .4byte _08052318
- .4byte _08051598
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _080515BC
- .4byte _080515EC
- .4byte _080515FE
- .4byte _08051620
- .4byte _08051668
- .4byte _08051698
- .4byte _080516E0
- .4byte _08051730
- .4byte _08051784
- .4byte _08051808
- .4byte _0805182C
- .4byte _08051878
- .4byte _080518C4
- .4byte _08051920
- .4byte _08051980
- .4byte _08051994
- .4byte _080519A8
- .4byte _080519BC
- .4byte _08051AE4
- .4byte _08051BB4
- .4byte _08051C3C
- .4byte _08051CB4
- .4byte _08051CC4
- .4byte _08051CE4
- .4byte _08051D34
- .4byte _08051D52
- .4byte _08051D90
- .4byte _08051DA0
- .4byte _08051E1C
- .4byte _08052318
- .4byte _08051E44
- .4byte _08051E84
- .4byte _08051EC4
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08051EE4
- .4byte _08051F0C
- .4byte _08051F28
- .4byte _08051F48
- .4byte _08051FF0
- .4byte _08052024
- .4byte _08052070
- .4byte _08052128
- .4byte _080521B4
- .4byte _08052200
- .4byte _08052210
- .4byte _08052216
- .4byte _0805223C
- .4byte _08052298
- .4byte _080522BC
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052160
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _080517B0
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052318
- .4byte _08052198
-_0805139C:
- ldr r3, _08051408 @ =gSprites
- ldr r0, [r7]
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r4, [r7]
- adds r2, r4, 0
- adds r2, 0x8E
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldr r1, _0805140C @ =0x0000ff4c
- strh r1, [r0, 0x24]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldr r2, _08051410 @ =gMonFrontPicCoords
- adds r0, r4, 0
- adds r0, 0xF0
- ldrh r0, [r0]
- lsls r0, 2
- adds r0, r2
- ldrb r0, [r0, 0x1]
- strh r0, [r1, 0x26]
- adds r1, r4, 0
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- bl GetCurrentMapMusic
- ldr r1, [r7]
- adds r1, 0xF4
- strh r0, [r1]
- movs r0, 0x84
- lsls r0, 1
- bl PlayNewMapMusic
- bl _08052318
- .align 2, 0
-_08051408: .4byte gSprites
-_0805140C: .4byte 0x0000ff4c
-_08051410: .4byte gMonFrontPicCoords
-_08051414:
- ldr r5, [r7]
- adds r6, r5, 0
- adds r6, 0xE6
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- ble _08051448
- ldr r2, _08051444 @ =gSprites
- adds r0, r5, 0
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- adds r1, 0x3
- strh r1, [r0, 0x24]
- ldrh r0, [r6]
- subs r0, 0x3
- strh r0, [r6]
- bl _08052318
- .align 2, 0
-_08051444: .4byte gSprites
-_08051448:
- ldr r2, _0805146C @ =gSprites
- adds r0, r5, 0
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0
- strh r1, [r0, 0x24]
- strh r1, [r6]
- adds r1, r5, 0
- adds r1, 0x94
- movs r0, 0xA
- strh r0, [r1]
- bl _08052318
- .align 2, 0
-_0805146C: .4byte gSprites
-_08051470:
- ldr r4, _080514AC @ =gStringVar4
- ldr r1, _080514B0 @ =gUnknown_841E1E9
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8054508
- ldr r4, _080514B4 @ =sTradeAnimationResourcesPtr
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0xF0
- ldrh r1, [r2]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _0805149E
- adds r0, r1, 0
- movs r1, 0
- bl PlayCry1
-_0805149E:
- ldr r3, [r4]
- adds r1, r3, 0
- adds r1, 0x94
- movs r2, 0
- movs r0, 0xB
- bl _0805218E
- .align 2, 0
-_080514AC: .4byte gStringVar4
-_080514B0: .4byte gUnknown_841E1E9
-_080514B4: .4byte sTradeAnimationResourcesPtr
-_080514B8:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x50
- beq _080514C8
- bl _08052318
-_080514C8:
- adds r0, r1, 0
- adds r0, 0x8E
- ldrb r0, [r0]
- ldr r2, _0805151C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r2
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0x14
- str r2, [sp, 0x8]
- ldr r2, _08051520 @ =0x000fffff
- str r2, [sp, 0xC]
- movs r2, 0x78
- movs r3, 0x20
- bl sub_804BB98
- ldr r1, [r7]
- adds r1, 0xD2
- strb r0, [r1]
- ldr r1, [r7]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldr r4, _08051524 @ =gStringVar4
- ldr r1, _08051528 @ =gUnknown_841E200
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8054508
- bl _08052318
- .align 2, 0
-_0805151C: .4byte gSprites
-_08051520: .4byte 0x000fffff
-_08051524: .4byte gStringVar4
-_08051528: .4byte gUnknown_841E200
-_0805152C:
- ldr r5, _08051588 @ =gSprites
- ldr r0, [r7]
- adds r0, 0xD2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r4, r5, 0
- adds r4, 0x1C
- adds r0, r4
- ldr r1, [r0]
- ldr r0, _0805158C @ =SpriteCallbackDummy
- cmp r1, r0
- beq _0805154C
- bl _08052318
-_0805154C:
- ldr r0, _08051590 @ =sTradePokeballSpriteTemplate
- movs r1, 0x78
- movs r2, 0x20
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0xD3
- strb r0, [r1]
- ldr r2, [r7]
- adds r0, r2, 0
- adds r0, 0xD3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _08051594 @ =SpriteCB_TradePokeball_Outbound
- str r1, [r0]
- adds r2, 0xD2
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
- ldr r1, [r7]
- bl _080522AC
- .align 2, 0
-_08051588: .4byte gSprites
-_0805158C: .4byte SpriteCallbackDummy
-_08051590: .4byte sTradePokeballSpriteTemplate
-_08051594: .4byte SpriteCB_TradePokeball_Outbound
-_08051598:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080515B8 @ =sTradeAnimationResourcesPtr
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x14
- strh r1, [r0]
- bl _08052318
- .align 2, 0
-_080515B8: .4byte sTradeAnimationResourcesPtr
-_080515BC:
- ldr r0, _080515E8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080515CC
- bl _08052318
-_080515CC:
- movs r0, 0x4
- bl sub_8050968
- movs r0, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- bl _080522A8
- .align 2, 0
-_080515E8: .4byte gPaletteFade
-_080515EC:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl _080522A4
-_080515FE:
- ldr r0, _0805161C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0805160E
- bl _08052318
-_0805160E:
- ldr r0, [r7]
- adds r0, 0x94
- movs r1, 0x17
- strh r1, [r0]
- bl _08052318
- .align 2, 0
-_0805161C: .4byte gPaletteFade
-_08051620:
- ldr r4, _0805163C @ =sTradeAnimationResourcesPtr
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0xEA
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bls _08051640
- adds r0, r1, 0
- subs r0, 0x34
- strh r0, [r2]
- b _0805165C
- .align 2, 0
-_0805163C: .4byte sTradeAnimationResourcesPtr
-_08051640:
- movs r0, 0x1
- bl sub_8050968
- ldr r3, [r4]
- adds r1, r3, 0
- adds r1, 0xEA
- movs r2, 0
- movs r0, 0x80
- strh r0, [r1]
- subs r1, 0x56
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- str r2, [r3, 0x64]
-_0805165C:
- ldr r0, _08051664 @ =sTradeAnimationResourcesPtr
- ldr r4, [r0]
- bl _08051EB0
- .align 2, 0
-_08051664: .4byte sTradeAnimationResourcesPtr
-_08051668:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x14
- bhi _08051678
- bl _08052318
-_08051678:
- bl TradeAnim_UpdateBgAffine
- ldr r0, _08051694 @ =gUnknown_826CF30
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x91
- strb r0, [r1]
- ldr r1, [r7]
- bl _080522AC
- .align 2, 0
-_08051694: .4byte gUnknown_826CF30
-_08051698:
- ldr r2, _080516D8 @ =gSprites
- ldr r0, [r7]
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- blt _080516B8
- bl _08052318
-_080516B8:
- adds r0, r1, 0
- bl DestroySprite
- movs r1, 0xC8
- lsls r1, 3
- movs r0, 0x50
- bl SetGpuReg
- ldr r1, _080516DC @ =0x0000040c
- movs r0, 0x52
- bl SetGpuReg
- ldr r1, [r7]
- bl _080522AC
- .align 2, 0
-_080516D8: .4byte gSprites
-_080516DC: .4byte 0x0000040c
-_080516E0:
- ldr r2, [r7]
- adds r0, r2, 0
- adds r0, 0xE0
- ldrh r1, [r0]
- subs r1, 0x1
- strh r1, [r0]
- lsls r1, 16
- movs r0, 0x9E
- lsls r0, 17
- cmp r1, r0
- bne _08051700
- adds r1, r2, 0
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08051700:
- ldr r0, [r7]
- adds r0, 0xE0
- movs r2, 0
- ldrsh r1, [r0, r2]
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- beq _08051714
- bl _08052318
-_08051714:
- ldr r0, _0805172C @ =sGameLinkCableEndSpriteTemplate
- movs r1, 0x80
- movs r2, 0x41
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x92
- strb r0, [r1]
- bl _08052318
- .align 2, 0
-_0805172C: .4byte sGameLinkCableEndSpriteTemplate
-_08051730:
- ldr r0, _08051774 @ =gUnknown_826CE44
- movs r1, 0x80
- movs r2, 0x50
- movs r3, 0x3
- bl CreateSprite
- ldr r4, _08051778 @ =sTradeAnimationResourcesPtr
- ldr r1, [r4]
- adds r1, 0x90
- strb r0, [r1]
- ldr r0, _0805177C @ =gUnknown_826CE84
- movs r1, 0x80
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- adds r1, 0x91
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08051780 @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r1, [r4]
- bl _080522AC
- .align 2, 0
-_08051774: .4byte gUnknown_826CE44
-_08051778: .4byte sTradeAnimationResourcesPtr
-_0805177C: .4byte gUnknown_826CE84
-_08051780: .4byte gSprites
-_08051784:
- ldr r2, [r7]
- adds r1, r2, 0
- adds r1, 0xE0
- ldrh r0, [r1]
- subs r0, 0x2
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA6
- bne _0805179E
- subs r1, 0x4C
- movs r0, 0xC8
- strh r0, [r1]
-_0805179E:
- ldr r1, _080517AC @ =0x00001241
- movs r0, 0
- bl SetGpuReg
- bl _08052318
- .align 2, 0
-_080517AC: .4byte 0x00001241
-_080517B0:
- ldr r2, _08051804 @ =gSprites
- ldr r4, [r7]
- adds r3, r4, 0
- adds r3, 0x90
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x2
- strh r1, [r0, 0x22]
- adds r0, r4, 0
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x22]
- subs r1, 0x2
- strh r1, [r0, 0x22]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r3, 0x22
- ldrsh r1, [r0, r3]
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _080517F6
- bl _08052318
-_080517F6:
- adds r1, r4, 0
- adds r1, 0x94
- movs r0, 0x1D
- strh r0, [r1]
- bl _08052318
- .align 2, 0
-_08051804: .4byte gSprites
-_08051808:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08051828 @ =sTradeAnimationResourcesPtr
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x1E
- strh r1, [r0]
- bl _08052318
- .align 2, 0
-_08051828: .4byte sTradeAnimationResourcesPtr
-_0805182C:
- ldr r0, _08051870 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0805183C
- bl _08052318
-_0805183C:
- ldr r0, [r7]
- adds r0, 0x90
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08051874 @ =gSprites
- adds r0, r4
- bl DestroySprite
- ldr r0, [r7]
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- movs r0, 0x2
- bl sub_8050968
- ldr r1, [r7]
- bl _080522AC
- .align 2, 0
-_08051870: .4byte gPaletteFade
-_08051874: .4byte gSprites
-_08051878:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r5, _080518BC @ =gUnknown_826CE84
- adds r0, r5, 0
- movs r1, 0x6F
- movs r2, 0xAA
- movs r3, 0
- bl CreateSprite
- ldr r4, _080518C0 @ =sTradeAnimationResourcesPtr
- ldr r1, [r4]
- adds r1, 0x90
- strb r0, [r1]
- movs r2, 0xA
- negs r2, r2
- adds r0, r5, 0
- movs r1, 0x81
- movs r3, 0
- bl CreateSprite
- ldr r1, [r4]
- adds r1, 0x91
- strb r0, [r1]
- ldr r1, [r4]
- bl _080522AC
- .align 2, 0
-_080518BC: .4byte gUnknown_826CE84
-_080518C0: .4byte sTradeAnimationResourcesPtr
-_080518C4:
- ldr r0, _08051914 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080518E2
- movs r0, 0x28
- bl PlaySE
- ldr r0, _08051918 @ =sTradeAnimationResourcesPtr
- ldr r1, [r0]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080518E2:
- ldr r3, _0805191C @ =gSprites
- ldr r0, _08051918 @ =sTradeAnimationResourcesPtr
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0x90
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- strh r1, [r0, 0x26]
- adds r2, 0x91
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- bl _08052318
- .align 2, 0
-_08051914: .4byte gPaletteFade
-_08051918: .4byte sTradeAnimationResourcesPtr
-_0805191C: .4byte gSprites
-_08051920:
- ldr r5, _0805197C @ =gSprites
- ldr r4, [r7]
- adds r2, r4, 0
- adds r2, 0x90
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- strh r1, [r0, 0x26]
- adds r6, r4, 0
- adds r6, 0x91
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, r0, r5
- movs r0, 0x26
- ldrsh r1, [r3, r0]
- movs r0, 0x5A
- negs r0, r0
- cmp r1, r0
- ble _08051966
- bl _08052318
-_08051966:
- movs r2, 0x1
- strh r2, [r3, 0x30]
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- strh r2, [r0, 0x30]
- adds r1, r4, 0
- bl _080522AC
- .align 2, 0
-_0805197C: .4byte gSprites
-_08051980:
- ldr r2, _08051990 @ =0x0000ffff
- movs r0, 0x1
- movs r1, 0x10
- bl BlendPalettes
- bl _080522A8
- .align 2, 0
-_08051990: .4byte 0x0000ffff
-_08051994:
- ldr r2, _080519A4 @ =0x0000ffff
- movs r0, 0x1
- movs r1, 0
- bl BlendPalettes
- bl _080522A8
- .align 2, 0
-_080519A4: .4byte 0x0000ffff
-_080519A8:
- ldr r2, _080519B8 @ =0x0000ffff
- movs r0, 0x1
- movs r1, 0x10
- bl BlendPalettes
- bl _080522A8
- .align 2, 0
-_080519B8: .4byte 0x0000ffff
-_080519BC:
- ldr r5, _08051A28 @ =sTradeAnimationResourcesPtr
- ldr r0, [r5]
- adds r0, 0xF0
- ldrh r0, [r0]
- bl IsPokeSpriteNotFlipped
- lsls r0, 24
- cmp r0, 0
- bne _08051A34
- ldr r4, _08051A2C @ =gSprites
- ldr r2, [r5]
- adds r2, 0x8E
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x10
- adds r0, r1
- ldr r1, _08051A30 @ =gUnknown_826CF88
- str r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x1]
- movs r2, 0x3
- orrs r1, r2
- strb r1, [r0, 0x1]
- ldr r0, [r5]
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0
- movs r2, 0x3
- movs r3, 0x3
- bl CalcCenterToCornerVec
- ldr r0, [r5]
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0
- bl StartSpriteAffineAnim
- b _08051A4A
- .align 2, 0
-_08051A28: .4byte sTradeAnimationResourcesPtr
-_08051A2C: .4byte gSprites
-_08051A30: .4byte gUnknown_826CF88
-_08051A34:
- ldr r0, [r5]
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08051AD8 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAffineAnim
-_08051A4A:
- ldr r5, _08051ADC @ =sTradeAnimationResourcesPtr
- ldr r0, [r5]
- adds r0, 0x8F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08051AD8 @ =gSprites
- adds r0, r4
- movs r1, 0
- bl StartSpriteAffineAnim
- ldr r2, [r5]
- adds r3, r2, 0
- adds r3, 0x8E
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x3C
- strh r1, [r0, 0x20]
- adds r2, 0x8F
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xB4
- strh r1, [r0, 0x20]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xC0
- strh r1, [r0, 0x22]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldr r1, _08051AE0 @ =0x0000ffe0
- strh r1, [r0, 0x22]
- ldrb r0, [r3]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x8F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- ldr r1, [r5]
- bl _080522AC
- .align 2, 0
-_08051AD8: .4byte gSprites
-_08051ADC: .4byte sTradeAnimationResourcesPtr
-_08051AE0: .4byte 0x0000ffe0
-_08051AE4:
- ldr r4, _08051BAC @ =gSprites
- ldr r2, [r7]
- adds r3, r2, 0
- adds r3, 0x8E
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- movs r5, 0
- strh r1, [r0, 0x26]
- adds r2, 0x8F
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r0, [r0, 0x26]
- adds r0, 0xA3
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x2
- bhi _08051B2C
- movs r0, 0x27
- bl PlaySE
-_08051B2C:
- ldr r2, [r7]
- adds r3, r2, 0
- adds r3, 0x8E
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r6, 0x26
- ldrsh r1, [r0, r6]
- movs r0, 0xDE
- negs r0, r0
- cmp r1, r0
- blt _08051B4C
- bl _08052318
-_08051B4C:
- adds r0, r2, 0
- adds r0, 0x90
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r5, [r0, 0x30]
- adds r0, r2, 0
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r5, [r0, 0x30]
- adds r1, r2, 0
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r7]
- adds r0, 0x8F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r2
- strb r1, [r0]
- ldr r2, _08051BB0 @ =0x0000ffff
- movs r0, 0x1
- movs r1, 0
- bl BlendPalettes
- b _08052318
- .align 2, 0
-_08051BAC: .4byte gSprites
-_08051BB0: .4byte 0x0000ffff
-_08051BB4:
- ldr r4, _08051C38 @ =gSprites
- ldr r2, [r7]
- adds r3, r2, 0
- adds r3, 0x90
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x26]
- subs r1, 0x3
- strh r1, [r0, 0x26]
- adds r2, 0x91
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r2, 0x26
- ldrsh r1, [r0, r2]
- movs r0, 0xDE
- negs r0, r0
- cmp r1, r0
- ble _08051BF6
- b _08052318
-_08051BF6:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, [r7]
- adds r2, r1, 0
- adds r2, 0x94
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- adds r1, 0x90
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r0, [r7]
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- b _08052318
- .align 2, 0
-_08051C38: .4byte gSprites
-_08051C3C:
- ldr r0, _08051CA4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08051C4A
- b _08052318
-_08051C4A:
- ldr r1, [r7]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x1
- bl sub_8050968
- ldr r0, [r7]
- adds r0, 0xE0
- movs r1, 0xA6
- strh r1, [r0]
- ldr r0, _08051CA8 @ =gUnknown_826CE44
- movs r4, 0x14
- negs r4, r4
- movs r1, 0x80
- adds r2, r4, 0
- movs r3, 0x3
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x90
- strb r0, [r1]
- ldr r0, _08051CAC @ =gUnknown_826CE84
- movs r1, 0x80
- adds r2, r4, 0
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x91
- strb r0, [r1]
- ldr r0, [r7]
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08051CB0 @ =gSprites
- adds r0, r1
- movs r1, 0x1
- bl StartSpriteAnim
- b _08052318
- .align 2, 0
-_08051CA4: .4byte gPaletteFade
-_08051CA8: .4byte gUnknown_826CE44
-_08051CAC: .4byte gUnknown_826CE84
-_08051CB0: .4byte gSprites
-_08051CB4:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- b _080522A4
-_08051CC4:
- movs r1, 0x92
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, _08051CE0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08051CDC
- b _08052318
-_08051CDC:
- b _080522A8
- .align 2, 0
-_08051CE0: .4byte gPaletteFade
-_08051CE4:
- ldr r2, _08051D30 @ =gSprites
- ldr r4, [r7]
- adds r3, r4, 0
- adds r3, 0x90
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- adds r0, r4, 0
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x26]
- adds r1, 0x3
- strh r1, [r0, 0x26]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r3, 0x26
- ldrsh r1, [r0, r3]
- movs r6, 0x22
- ldrsh r0, [r0, r6]
- adds r1, r0
- cmp r1, 0x40
- beq _08051D2A
- b _08052318
-_08051D2A:
- adds r1, r4, 0
- b _080522AC
- .align 2, 0
-_08051D30: .4byte gSprites
-_08051D34:
- ldr r1, [r7]
- adds r5, r1, 0
- adds r5, 0xE0
- ldrh r0, [r5]
- adds r0, 0x2
- strh r0, [r5]
- lsls r0, 16
- asrs r0, 16
- movs r6, 0x9E
- lsls r6, 1
- cmp r0, r6
- bgt _08051D4E
- b _08052318
-_08051D4E:
- strh r6, [r5]
- b _080522AC
-_08051D52:
- ldr r0, [r7]
- adds r0, 0x90
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08051D8C @ =gSprites
- adds r0, r4
- bl DestroySprite
- ldr r0, [r7]
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r3, [r7]
- adds r2, r3, 0
- adds r2, 0x94
- ldrh r0, [r2]
- adds r0, 0x1
- movs r1, 0
- strh r0, [r2]
- str r1, [r3, 0x64]
- b _08052318
- .align 2, 0
-_08051D8C: .4byte gSprites
-_08051D90:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0xA
- beq _08051D9E
- b _08052318
-_08051D9E:
- b _080522AC
-_08051DA0:
- ldr r1, [r7]
- adds r2, r1, 0
- adds r2, 0xE0
- ldrh r0, [r2]
- adds r0, 0x1
- strh r0, [r2]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0xAE
- lsls r3, 1
- cmp r0, r3
- ble _08051DC2
- strh r3, [r2]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08051DC2:
- ldr r2, [r7]
- adds r0, r2, 0
- adds r0, 0xE0
- movs r3, 0
- ldrsh r1, [r0, r3]
- movs r0, 0xA4
- lsls r0, 1
- cmp r1, r0
- beq _08051DD6
- b _08052318
-_08051DD6:
- movs r6, 0x84
- lsls r6, 1
- adds r0, r2, r6
- ldrb r0, [r0]
- cmp r0, 0
- bne _08051DE4
- b _08052318
-_08051DE4:
- ldr r0, _08051E10 @ =sGameLinkCableEndSpriteTemplate
- movs r1, 0x80
- movs r2, 0x41
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x92
- strb r0, [r1]
- ldr r2, _08051E14 @ =gSprites
- ldr r0, [r7]
- adds r0, 0x92
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _08051E18 @ =SpriteCB_GameLinkCableEnd_Inbound
- str r1, [r0]
- b _08052318
- .align 2, 0
-_08051E10: .4byte sGameLinkCableEndSpriteTemplate
-_08051E14: .4byte gSprites
-_08051E18: .4byte SpriteCB_GameLinkCableEnd_Inbound
-_08051E1C:
- ldr r0, _08051E3C @ =gUnknown_826CF30
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r2, _08051E40 @ =sTradeAnimationResourcesPtr
- ldr r1, [r2]
- adds r1, 0x91
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x94
- movs r1, 0x32
- strh r1, [r0]
- b _08052318
- .align 2, 0
-_08051E3C: .4byte gUnknown_826CF30
-_08051E40: .4byte sTradeAnimationResourcesPtr
-_08051E44:
- ldr r2, _08051E80 @ =gSprites
- ldr r0, [r7]
- adds r0, 0x91
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r0, r2
- adds r0, r1, 0
- adds r0, 0x3F
- ldrb r0, [r0]
- lsls r0, 27
- cmp r0, 0
- blt _08051E62
- b _08052318
-_08051E62:
- adds r0, r1, 0
- bl DestroySprite
- movs r0, 0x6
- bl sub_8050968
- ldr r1, [r7]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- movs r0, 0x98
- bl PlaySE
- b _08052318
- .align 2, 0
-_08051E80: .4byte gSprites
-_08051E84:
- ldr r1, [r7]
- adds r2, r1, 0
- adds r2, 0xEA
- ldrh r3, [r2]
- ldr r0, _08051E9C @ =0x000003ff
- cmp r3, r0
- bhi _08051EA0
- adds r0, r3, 0
- adds r0, 0x34
- strh r0, [r2]
- b _08051EAE
- .align 2, 0
-_08051E9C: .4byte 0x000003ff
-_08051EA0:
- movs r0, 0x80
- lsls r0, 3
- strh r0, [r2]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08051EAE:
- ldr r4, [r7]
-_08051EB0:
- adds r0, r4, 0
- adds r0, 0xEA
- ldrh r1, [r0]
- movs r0, 0x80
- lsls r0, 8
- bl __divsi3
- adds r4, 0xE8
- strh r0, [r4]
- b _08052318
-_08051EC4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _08051EE0 @ =sTradeAnimationResourcesPtr
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x3C
- strh r1, [r0]
- b _08052318
- .align 2, 0
-_08051EE0: .4byte sTradeAnimationResourcesPtr
-_08051EE4:
- ldr r4, _08051F08 @ =gPaletteFade
- ldrb r1, [r4, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08051EF2
- b _08052318
-_08051EF2:
- movs r0, 0x5
- bl sub_8050968
- movs r0, 0x7
- bl sub_8050968
- ldrb r0, [r4, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r4, 0x8]
- b _080522A8
- .align 2, 0
-_08051F08: .4byte gPaletteFade
-_08051F0C:
- ldr r2, _08051F24 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- b _080522A4
- .align 2, 0
-_08051F24: .4byte gPaletteFade
-_08051F28:
- movs r1, 0xA2
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, _08051F44 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08051F40
- b _08052318
-_08051F40:
- b _080522A8
- .align 2, 0
-_08051F44: .4byte gPaletteFade
-_08051F48:
- ldr r0, _08051FDC @ =sTradePokeballSpriteTemplate
- movs r2, 0x8
- negs r2, r2
- movs r1, 0x78
- movs r3, 0
- bl CreateSprite
- ldr r5, _08051FE0 @ =sTradeAnimationResourcesPtr
- ldr r1, [r5]
- adds r1, 0xD3
- movs r6, 0
- strb r0, [r1]
- ldr r4, _08051FE4 @ =gSprites
- ldr r2, [r5]
- adds r2, 0xD3
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x4A
- strh r1, [r0, 0x34]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r4, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08051FE8 @ =SpriteCB_TradePokeball_Inbound
- str r1, [r0]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r0, [r5]
- adds r0, 0xD3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0x2
- bl StartSpriteAffineAnim
- ldr r0, [r5]
- adds r0, 0xD3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- ldrb r1, [r0, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- ldr r2, _08051FEC @ =0x0000ffff
- movs r1, 0x10
- bl BlendPalettes
- ldr r2, [r5]
- adds r1, r2, 0
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- str r6, [r2, 0x64]
- b _08052318
- .align 2, 0
-_08051FDC: .4byte sTradePokeballSpriteTemplate
-_08051FE0: .4byte sTradeAnimationResourcesPtr
-_08051FE4: .4byte gSprites
-_08051FE8: .4byte SpriteCB_TradePokeball_Inbound
-_08051FEC: .4byte 0x0000ffff
-_08051FF0:
- ldr r2, _0805201C @ =gSprites
- ldr r0, [r7]
- adds r0, 0xD3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrb r1, [r0, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- ldr r1, _08052020 @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, [r7]
- b _080522AC
- .align 2, 0
-_0805201C: .4byte gSprites
-_08052020: .4byte 0x0000ffff
-_08052024:
- ldr r2, _08052060 @ =gSprites
- ldr r3, [r7]
- adds r0, r3, 0
- adds r0, 0xD3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _08052064 @ =SpriteCallbackDummy
- cmp r1, r0
- beq _08052042
- b _08052318
-_08052042:
- adds r0, r3, 0
- adds r0, 0xF2
- ldrh r2, [r0]
- lsls r0, r2, 3
- ldr r1, _08052068 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _0805206C @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- ldr r1, [r1, 0x10]
- ldr r3, [r3, 0x6C]
- bl HandleLoadSpecialPokePic
- ldr r1, [r7]
- b _080522AC
- .align 2, 0
-_08052060: .4byte gSprites
-_08052064: .4byte SpriteCallbackDummy
-_08052068: .4byte gMonFrontPicTable
-_0805206C: .4byte gMonSpritesGfxPtr
-_08052070:
- ldr r4, _0805211C @ =gSprites
- ldr r2, [r7]
- adds r6, r2, 0
- adds r6, 0x8F
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r5, 0
- movs r1, 0x78
- strh r1, [r0, 0x20]
- ldrb r0, [r6]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldr r3, _08052120 @ =gMonFrontPicCoords
- adds r2, 0xF2
- ldrh r0, [r2]
- lsls r0, 2
- adds r0, r3
- ldrb r0, [r0, 0x1]
- adds r0, 0x3C
- strh r0, [r1, 0x22]
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r5, [r0, 0x24]
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r5, [r0, 0x26]
- ldrb r1, [r6]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0
- bl StartSpriteAnim
- ldr r0, [r7]
- adds r0, 0x8F
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- ldrb r1, [r1, 0x5]
- lsrs r1, 4
- movs r2, 0x2
- str r2, [sp]
- movs r2, 0x1
- str r2, [sp, 0x4]
- movs r2, 0x14
- str r2, [sp, 0x8]
- ldr r2, _08052124 @ =0x000fffff
- str r2, [sp, 0xC]
- movs r2, 0x78
- movs r3, 0x54
- bl CreatePokeballSpriteToReleaseMon
- ldr r0, [r7]
- adds r0, 0xD3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldr r0, [r7]
- adds r0, 0xD3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl DestroySprite
- ldr r1, [r7]
- b _080522AC
- .align 2, 0
-_0805211C: .4byte gSprites
-_08052120: .4byte gMonFrontPicCoords
-_08052124: .4byte 0x000fffff
-_08052128:
- movs r1, 0xAA
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r4, _08052154 @ =gStringVar4
- ldr r1, _08052158 @ =gUnknown_841E20D
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8054508
- ldr r0, _0805215C @ =sTradeAnimationResourcesPtr
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x94
- movs r2, 0
- movs r0, 0xA7
- b _0805218E
- .align 2, 0
-_08052154: .4byte gStringVar4
-_08052158: .4byte gUnknown_841E20D
-_0805215C: .4byte sTradeAnimationResourcesPtr
-_08052160:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x3C
- bhi _0805216E
- b _08052318
-_0805216E:
- adds r2, r1, 0
- adds r2, 0xF2
- ldrh r1, [r2]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _08052184
- adds r0, r1, 0
- movs r1, 0
- bl PlayCry1
-_08052184:
- ldr r3, [r7]
- adds r1, r3, 0
- adds r1, 0x94
- movs r2, 0
- ldr r0, _08052194 @ =0x0000010b
-_0805218E:
- strh r0, [r1]
- str r2, [r3, 0x64]
- b _08052318
- .align 2, 0
-_08052194: .4byte 0x0000010b
-_08052198:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _080521A4
- b _08052318
-_080521A4:
- ldr r0, _080521B0 @ =sTradeAnimationResourcesPtr
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x44
- strh r1, [r0]
- b _08052318
- .align 2, 0
-_080521B0: .4byte sTradeAnimationResourcesPtr
-_080521B4:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0xA
- bne _080521C6
- ldr r0, _080521F4 @ =0x00000103
- bl PlayFanfare
-_080521C6:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- cmp r0, 0xFA
- beq _080521D0
- b _08052318
-_080521D0:
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r1]
- ldr r4, _080521F8 @ =gStringVar4
- ldr r1, _080521FC @ =gUnknown_841E21E
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8054508
- ldr r0, [r7]
- str r5, [r0, 0x64]
- b _08052318
- .align 2, 0
-_080521F4: .4byte 0x00000103
-_080521F8: .4byte gStringVar4
-_080521FC: .4byte gUnknown_841E21E
-_08052200:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x3C
- beq _0805220E
- b _08052318
-_0805220E:
- b _080522AC
-_08052210:
- bl sub_80544AC
- b _080522A8
-_08052216:
- ldr r2, [r7]
- adds r0, r2, 0
- adds r0, 0xEE
- ldrb r0, [r0]
- cmp r0, 0
- beq _08052226
- movs r0, 0x1
- b _0805231A
-_08052226:
- ldr r0, _08052238 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08052318
- adds r1, r2, 0
- b _080522AC
- .align 2, 0
-_08052238: .4byte gMain
-_0805223C:
- ldr r0, _08052280 @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- movs r1, 0
- bl Trade_SwapPlayerAndParterMonData
- ldr r1, _08052284 @ =gCB2_AfterEvolution
- ldr r0, _08052288 @ =CB2_RunTradeAnim_InGameTrade
- str r0, [r1]
- ldr r7, _0805228C @ =gUnknown_2031DA4
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08052290 @ =gPlayerParty
- adds r0, r5
- movs r1, 0x1
- movs r2, 0
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _080522A8
- ldrb r3, [r7]
- adds r0, r3, 0
- muls r0, r6
- adds r0, r5
- ldr r1, _08052294 @ =sTradeAnimationResourcesPtr
- ldr r1, [r1]
- adds r1, 0x8F
- ldrb r2, [r1]
- adds r1, r4, 0
- bl TradeEvolutionScene
- b _080522A8
- .align 2, 0
-_08052280: .4byte gSpecialVar_0x8005
-_08052284: .4byte gCB2_AfterEvolution
-_08052288: .4byte CB2_RunTradeAnim_InGameTrade
-_0805228C: .4byte gUnknown_2031DA4
-_08052290: .4byte gPlayerParty
-_08052294: .4byte sTradeAnimationResourcesPtr
-_08052298:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
-_080522A4:
- bl BeginNormalPaletteFade
-_080522A8:
- ldr r0, _080522B8 @ =sTradeAnimationResourcesPtr
- ldr r1, [r0]
-_080522AC:
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08052318
- .align 2, 0
-_080522B8: .4byte sTradeAnimationResourcesPtr
-_080522BC:
- ldr r0, _08052324 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08052318
- ldr r0, [r7]
- adds r0, 0xF4
- ldrh r0, [r0]
- bl PlayNewMapMusic
- ldr r0, [r7]
- cmp r0, 0
- beq _0805230A
- bl FreeAllWindowBuffers
- movs r0, 0x3
- bl GetBgTilemapBuffer
- bl Free
- movs r0, 0x1
- bl GetBgTilemapBuffer
- bl Free
- movs r0, 0
- bl GetBgTilemapBuffer
- bl Free
- bl FreeMonSpritesGfx
- ldr r0, [r7]
- bl Free
- str r4, [r7]
-_0805230A:
- ldr r0, _08052328 @ =CB2_ReturnToField
- bl SetMainCallback2
- bl sub_8053AE4
- bl HelpSystem_Enable
-_08052318:
- movs r0, 0
-_0805231A:
- add sp, 0x10
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08052324: .4byte gPaletteFade
-_08052328: .4byte CB2_ReturnToField
- thumb_func_end sub_8050F3C
-
thumb_func_start sub_805232C
sub_805232C: @ 805232C
push {r4-r7,lr}
sub sp, 0x10
- ldr r0, _08052350 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08052350 @ =sTradeData
ldr r1, [r0]
adds r1, 0x94
ldrh r5, [r1]
@@ -2353,7 +25,7 @@ _08052344:
ldr r0, [r0]
mov pc, r0
.align 2, 0
-_08052350: .4byte sTradeAnimationResourcesPtr
+_08052350: .4byte sTradeData
_08052354: .4byte 0x0000010b
_08052358: .4byte _0805235C
.align 2, 0
@@ -2727,14 +399,14 @@ _08052838:
_0805285C: .4byte gSprites
_08052860:
ldr r4, _0805289C @ =gStringVar4
- ldr r1, _080528A0 @ =gUnknown_841E1E9
+ ldr r1, _080528A0 @ =gText_XWillBeSentToY
adds r0, r4, 0
bl StringExpandPlaceholders
movs r0, 0
adds r1, r4, 0
movs r2, 0
- bl sub_8054508
- ldr r4, _080528A4 @ =sTradeAnimationResourcesPtr
+ bl DrawTextOnTradeWindow
+ ldr r4, _080528A4 @ =sTradeData
ldr r0, [r4]
adds r2, r0, 0
adds r2, 0xF0
@@ -2755,8 +427,8 @@ _0805288E:
bl _080535EA
.align 2, 0
_0805289C: .4byte gStringVar4
-_080528A0: .4byte gUnknown_841E1E9
-_080528A4: .4byte sTradeAnimationResourcesPtr
+_080528A0: .4byte gText_XWillBeSentToY
+_080528A4: .4byte sTradeData
_080528A8:
ldr r1, [r7]
ldr r0, [r1, 0x64]
@@ -2786,7 +458,7 @@ _080528B8:
str r2, [sp, 0xC]
movs r2, 0x78
movs r3, 0x20
- bl sub_804BB98
+ bl CreateTradePokeballSprite
ldr r1, [r7]
adds r1, 0xD2
strb r0, [r1]
@@ -2796,19 +468,19 @@ _080528B8:
adds r0, 0x1
strh r0, [r1]
ldr r4, _08052914 @ =gStringVar4
- ldr r1, _08052918 @ =gUnknown_841E200
+ ldr r1, _08052918 @ =gText_ByeByeVar1
adds r0, r4, 0
bl StringExpandPlaceholders
movs r0, 0
adds r1, r4, 0
movs r2, 0
- bl sub_8054508
+ bl DrawTextOnTradeWindow
bl _08053774
.align 2, 0
_0805290C: .4byte gSprites
_08052910: .4byte 0x000fffff
_08052914: .4byte gStringVar4
-_08052918: .4byte gUnknown_841E200
+_08052918: .4byte gText_ByeByeVar1
_0805291C:
ldr r5, _08052978 @ =gSprites
ldr r0, [r7]
@@ -2866,14 +538,14 @@ _08052988:
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
- ldr r0, _080529A8 @ =sTradeAnimationResourcesPtr
+ ldr r0, _080529A8 @ =sTradeData
ldr r0, [r0]
adds r0, 0x94
movs r1, 0x14
strh r1, [r0]
bl _08053774
.align 2, 0
-_080529A8: .4byte sTradeAnimationResourcesPtr
+_080529A8: .4byte sTradeData
_080529AC:
ldr r0, _080529D8 @ =gPaletteFade
ldrb r1, [r0, 0x7]
@@ -2884,7 +556,7 @@ _080529AC:
bl _08053774
_080529BC:
movs r0, 0x4
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
movs r0, 0
movs r1, 0xFF
bl FillWindowPixelBuffer
@@ -2920,7 +592,7 @@ _080529FE:
.align 2, 0
_08052A0C: .4byte gPaletteFade
_08052A10:
- ldr r4, _08052A2C @ =sTradeAnimationResourcesPtr
+ ldr r4, _08052A2C @ =sTradeData
ldr r0, [r4]
adds r2, r0, 0
adds r2, 0xEA
@@ -2934,10 +606,10 @@ _08052A10:
strh r0, [r2]
b _08052A4A
.align 2, 0
-_08052A2C: .4byte sTradeAnimationResourcesPtr
+_08052A2C: .4byte sTradeData
_08052A30:
movs r0, 0x1
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
ldr r3, [r4]
adds r1, r3, 0
adds r1, 0xEA
@@ -2949,11 +621,11 @@ _08052A30:
strh r0, [r1]
str r2, [r3, 0x64]
_08052A4A:
- ldr r0, _08052A54 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08052A54 @ =sTradeData
ldr r4, [r0]
bl _0805330C
.align 2, 0
-_08052A54: .4byte sTradeAnimationResourcesPtr
+_08052A54: .4byte sTradeData
_08052A58:
ldr r1, [r7]
ldr r0, [r1, 0x64]
@@ -2964,7 +636,7 @@ _08052A58:
bl _08053774
_08052A68:
movs r0, 0x3
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
ldr r0, _08052A88 @ =gUnknown_826CF48
movs r1, 0x78
movs r2, 0x50
@@ -3020,7 +692,7 @@ _08052AE0:
beq _08052AF0
bl _08053774
_08052AF0:
- ldr r0, _08052B04 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08052B04 @ =sTradeData
ldr r0, [r0]
adds r0, 0x94
movs r1, 0x1A
@@ -3028,7 +700,7 @@ _08052AF0:
bl _08053774
.align 2, 0
_08052B00: .4byte c3_08054588
-_08052B04: .4byte sTradeAnimationResourcesPtr
+_08052B04: .4byte sTradeData
_08052B08:
ldr r2, [r7]
adds r0, r2, 0
@@ -3051,7 +723,7 @@ _08052B28:
movs r2, 0x50
movs r3, 0x3
bl CreateSprite
- ldr r4, _08052B84 @ =sTradeAnimationResourcesPtr
+ ldr r4, _08052B84 @ =sTradeData
ldr r1, [r4]
adds r1, 0x90
strb r0, [r1]
@@ -3067,7 +739,7 @@ _08052B28:
adds r0, r1
ldr r1, _08052B8C @ =SpriteCB_TradeGlowWireless
str r1, [r0]
- ldr r0, _08052B90 @ =gUnknown_826CE84
+ ldr r0, _08052B90 @ =sGlowBallSpriteTemplate
movs r1, 0x78
movs r2, 0x50
movs r3, 0
@@ -3088,10 +760,10 @@ _08052B28:
bl _08053708
.align 2, 0
_08052B80: .4byte gUnknown_826CE44
-_08052B84: .4byte sTradeAnimationResourcesPtr
+_08052B84: .4byte sTradeData
_08052B88: .4byte gSprites
_08052B8C: .4byte SpriteCB_TradeGlowWireless
-_08052B90: .4byte gUnknown_826CE84
+_08052B90: .4byte sGlowBallSpriteTemplate
_08052B94:
ldr r2, [r7]
adds r1, r2, 0
@@ -3165,14 +837,14 @@ _08052C18:
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
- ldr r0, _08052C38 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08052C38 @ =sTradeData
ldr r0, [r0]
adds r0, 0x94
movs r1, 0x1E
strh r1, [r0]
bl _08053774
.align 2, 0
-_08052C38: .4byte sTradeAnimationResourcesPtr
+_08052C38: .4byte sTradeData
_08052C3C:
ldr r0, _08052C80 @ =gPaletteFade
ldrb r1, [r0, 0x7]
@@ -3200,7 +872,7 @@ _08052C4C:
adds r0, r4
bl DestroySprite
movs r0, 0x2
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
ldr r1, [r7]
bl _08053708
.align 2, 0
@@ -3215,13 +887,13 @@ _08052C88:
movs r2, 0x10
movs r3, 0
bl BeginNormalPaletteFade
- ldr r5, _08052CCC @ =gUnknown_826CE84
+ ldr r5, _08052CCC @ =sGlowBallSpriteTemplate
adds r0, r5, 0
movs r1, 0x6F
movs r2, 0xAA
movs r3, 0
bl CreateSprite
- ldr r4, _08052CD0 @ =sTradeAnimationResourcesPtr
+ ldr r4, _08052CD0 @ =sTradeData
ldr r1, [r4]
adds r1, 0x90
strb r0, [r1]
@@ -3237,8 +909,8 @@ _08052C88:
ldr r1, [r4]
bl _08053708
.align 2, 0
-_08052CCC: .4byte gUnknown_826CE84
-_08052CD0: .4byte sTradeAnimationResourcesPtr
+_08052CCC: .4byte sGlowBallSpriteTemplate
+_08052CD0: .4byte sTradeData
_08052CD4:
ldr r0, _08052D24 @ =gPaletteFade
ldrb r1, [r0, 0x7]
@@ -3248,7 +920,7 @@ _08052CD4:
bne _08052CF2
movs r0, 0x28
bl PlaySE
- ldr r0, _08052D28 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08052D28 @ =sTradeData
ldr r1, [r0]
adds r1, 0x94
ldrh r0, [r1]
@@ -3256,7 +928,7 @@ _08052CD4:
strh r0, [r1]
_08052CF2:
ldr r3, _08052D2C @ =gSprites
- ldr r0, _08052D28 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08052D28 @ =sTradeData
ldr r2, [r0]
adds r0, r2, 0
adds r0, 0x90
@@ -3280,7 +952,7 @@ _08052CF2:
bl _08053774
.align 2, 0
_08052D24: .4byte gPaletteFade
-_08052D28: .4byte sTradeAnimationResourcesPtr
+_08052D28: .4byte sTradeData
_08052D2C: .4byte gSprites
_08052D30:
ldr r5, _08052D94 @ =gSprites
@@ -3361,7 +1033,7 @@ _08052DC4:
.align 2, 0
_08052DD4: .4byte 0x0000ffff
_08052DD8:
- ldr r5, _08052E44 @ =sTradeAnimationResourcesPtr
+ ldr r5, _08052E44 @ =sTradeData
ldr r0, [r5]
adds r0, 0xF0
ldrh r0, [r0]
@@ -3412,7 +1084,7 @@ _08052DD8:
bl StartSpriteAffineAnim
b _08052E66
.align 2, 0
-_08052E44: .4byte sTradeAnimationResourcesPtr
+_08052E44: .4byte sTradeData
_08052E48: .4byte gSprites
_08052E4C: .4byte gUnknown_826CF88
_08052E50:
@@ -3427,7 +1099,7 @@ _08052E50:
movs r1, 0
bl StartSpriteAffineAnim
_08052E66:
- ldr r5, _08052EF8 @ =sTradeAnimationResourcesPtr
+ ldr r5, _08052EF8 @ =sTradeData
ldr r0, [r5]
adds r0, 0x8F
ldrb r1, [r0]
@@ -3497,7 +1169,7 @@ _08052E66:
bl _08053708
.align 2, 0
_08052EF4: .4byte gSprites
-_08052EF8: .4byte sTradeAnimationResourcesPtr
+_08052EF8: .4byte sTradeData
_08052EFC: .4byte 0x0000ffe0
_08052F00:
ldr r4, _08052FC8 @ =gSprites
@@ -3684,13 +1356,13 @@ _08053066:
adds r0, 0x1
strh r0, [r1]
movs r0, 0x1
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
ldr r0, [r7]
adds r0, 0xE0
movs r1, 0xA6
strh r1, [r0]
movs r0, 0x3
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
ldr r0, [r7]
adds r0, 0xE4
movs r1, 0xCE
@@ -3718,7 +1390,7 @@ _08053066:
adds r0, r1
ldr r1, _080530F0 @ =SpriteCB_TradeGlowWireless
str r1, [r0]
- ldr r0, _080530F4 @ =gUnknown_826CE84
+ ldr r0, _080530F4 @ =sGlowBallSpriteTemplate
movs r1, 0x78
adds r2, r4, 0
movs r3, 0
@@ -3741,7 +1413,7 @@ _080530E4: .4byte gPaletteFade
_080530E8: .4byte gUnknown_826CE44
_080530EC: .4byte gSprites
_080530F0: .4byte SpriteCB_TradeGlowWireless
-_080530F4: .4byte gUnknown_826CE84
+_080530F4: .4byte sGlowBallSpriteTemplate
_080530F8:
movs r1, 0x1
negs r1, r1
@@ -3818,7 +1490,7 @@ _08053180:
lsls r1, 5
movs r0, 0
bl SetGpuReg
- ldr r4, _080531DC @ =sTradeAnimationResourcesPtr
+ ldr r4, _080531DC @ =sTradeData
ldr r2, [r4]
adds r1, r2, 0
adds r1, 0xE0
@@ -3861,7 +1533,7 @@ _080531D8:
strh r2, [r3]
b _08053708
.align 2, 0
-_080531DC: .4byte sTradeAnimationResourcesPtr
+_080531DC: .4byte sTradeData
_080531E0: .4byte c3_08054588
_080531E4: .4byte gTasks
_080531E8:
@@ -3902,7 +1574,7 @@ _08053224:
beq _08053234
b _08053774
_08053234:
- ldr r0, _08053248 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08053248 @ =sTradeData
ldr r2, [r0]
adds r1, r2, 0
adds r1, 0x94
@@ -3912,7 +1584,7 @@ _08053234:
b _08053774
.align 2, 0
_08053244: .4byte c3_08054588
-_08053248: .4byte sTradeAnimationResourcesPtr
+_08053248: .4byte sTradeData
_0805324C:
ldr r1, [r7]
ldr r0, [r1, 0x64]
@@ -3946,7 +1618,7 @@ _0805327A:
movs r2, 0x50
movs r3, 0
bl CreateSprite
- ldr r2, _0805329C @ =sTradeAnimationResourcesPtr
+ ldr r2, _0805329C @ =sTradeData
ldr r1, [r2]
adds r1, 0x91
strb r0, [r1]
@@ -3957,7 +1629,7 @@ _0805327A:
b _08053774
.align 2, 0
_08053298: .4byte gUnknown_826CF30
-_0805329C: .4byte sTradeAnimationResourcesPtr
+_0805329C: .4byte sTradeData
_080532A0:
ldr r2, _080532DC @ =gSprites
ldr r0, [r7]
@@ -3978,7 +1650,7 @@ _080532BE:
adds r0, r1, 0
bl DestroySprite
movs r0, 0x6
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
ldr r1, [r7]
adds r1, 0x94
ldrh r0, [r1]
@@ -4031,14 +1703,14 @@ _08053320:
movs r2, 0
movs r3, 0x10
bl BeginNormalPaletteFade
- ldr r0, _0805333C @ =sTradeAnimationResourcesPtr
+ ldr r0, _0805333C @ =sTradeData
ldr r0, [r0]
adds r0, 0x94
movs r1, 0x3C
strh r1, [r0]
b _08053774
.align 2, 0
-_0805333C: .4byte sTradeAnimationResourcesPtr
+_0805333C: .4byte sTradeData
_08053340:
ldr r4, _08053364 @ =gPaletteFade
ldrb r1, [r4, 0x7]
@@ -4049,9 +1721,9 @@ _08053340:
b _08053774
_0805334E:
movs r0, 0x5
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
movs r0, 0x7
- bl sub_8050968
+ bl SetTradeSequenceBgGpuRegs
ldrb r0, [r4, 0x8]
movs r1, 0x80
orrs r0, r1
@@ -4097,7 +1769,7 @@ _080533A4:
movs r1, 0x78
movs r3, 0
bl CreateSprite
- ldr r5, _0805343C @ =sTradeAnimationResourcesPtr
+ ldr r5, _0805343C @ =sTradeData
ldr r1, [r5]
adds r1, 0xD3
movs r6, 0
@@ -4162,7 +1834,7 @@ _080533A4:
b _08053774
.align 2, 0
_08053438: .4byte sTradePokeballSpriteTemplate
-_0805343C: .4byte sTradeAnimationResourcesPtr
+_0805343C: .4byte sTradeData
_08053440: .4byte gSprites
_08053444: .4byte SpriteCB_TradePokeball_Inbound
_08053448: .4byte 0x0000ffff
@@ -4319,14 +1991,14 @@ _08053584:
movs r0, 0
bl SetGpuReg
ldr r4, _080535B0 @ =gStringVar4
- ldr r1, _080535B4 @ =gUnknown_841E20D
+ ldr r1, _080535B4 @ =gText_XSentOverY
adds r0, r4, 0
bl StringExpandPlaceholders
movs r0, 0
adds r1, r4, 0
movs r2, 0
- bl sub_8054508
- ldr r0, _080535B8 @ =sTradeAnimationResourcesPtr
+ bl DrawTextOnTradeWindow
+ ldr r0, _080535B8 @ =sTradeData
ldr r3, [r0]
adds r1, r3, 0
adds r1, 0x94
@@ -4335,8 +2007,8 @@ _08053584:
b _080535EA
.align 2, 0
_080535B0: .4byte gStringVar4
-_080535B4: .4byte gUnknown_841E20D
-_080535B8: .4byte sTradeAnimationResourcesPtr
+_080535B4: .4byte gText_XSentOverY
+_080535B8: .4byte sTradeData
_080535BC:
ldr r1, [r7]
ldr r0, [r1, 0x64]
@@ -4375,14 +2047,14 @@ _080535F4:
bne _08053600
b _08053774
_08053600:
- ldr r0, _0805360C @ =sTradeAnimationResourcesPtr
+ ldr r0, _0805360C @ =sTradeData
ldr r0, [r0]
adds r0, 0x94
movs r1, 0x44
strh r1, [r0]
b _08053774
.align 2, 0
-_0805360C: .4byte sTradeAnimationResourcesPtr
+_0805360C: .4byte sTradeData
_08053610:
ldr r1, [r7]
ldr r0, [r1, 0x64]
@@ -4405,20 +2077,20 @@ _0805362C:
movs r5, 0
strh r0, [r1]
ldr r4, _08053654 @ =gStringVar4
- ldr r1, _08053658 @ =gUnknown_841E21E
+ ldr r1, _08053658 @ =gText_TakeGoodCareOfX
adds r0, r4, 0
bl StringExpandPlaceholders
movs r0, 0
adds r1, r4, 0
movs r2, 0
- bl sub_8054508
+ bl DrawTextOnTradeWindow
ldr r0, [r7]
str r5, [r0, 0x64]
b _08053774
.align 2, 0
_08053650: .4byte 0x00000103
_08053654: .4byte gStringVar4
-_08053658: .4byte gUnknown_841E21E
+_08053658: .4byte gText_TakeGoodCareOfX
_0805365C:
ldr r1, [r7]
ldr r0, [r1, 0x64]
@@ -4430,7 +2102,7 @@ _0805365C:
_0805366A:
b _08053708
_0805366C:
- bl sub_80544AC
+ bl CheckPartnersMonForRibbons
b _08053704
_08053672:
ldr r2, [r7]
@@ -4456,11 +2128,11 @@ _08053698:
ldr r0, _080536DC @ =gSpecialVar_0x8005
ldrb r0, [r0]
movs r1, 0
- bl Trade_SwapPlayerAndParterMonData
+ bl TradeMons
ldr r1, _080536E0 @ =gCB2_AfterEvolution
ldr r0, _080536E4 @ =CB2_RunTradeAnim_InGameTrade
str r0, [r1]
- ldr r7, _080536E8 @ =gUnknown_2031DA4
+ ldr r7, _080536E8 @ =gSelectedTradeMonPositions
ldrb r0, [r7]
movs r6, 0x64
muls r0, r6
@@ -4477,7 +2149,7 @@ _08053698:
adds r0, r3, 0
muls r0, r6
adds r0, r5
- ldr r1, _080536F0 @ =sTradeAnimationResourcesPtr
+ ldr r1, _080536F0 @ =sTradeData
ldr r1, [r1]
adds r1, 0x8F
ldrb r2, [r1]
@@ -4488,9 +2160,9 @@ _08053698:
_080536DC: .4byte gSpecialVar_0x8005
_080536E0: .4byte gCB2_AfterEvolution
_080536E4: .4byte CB2_RunTradeAnim_InGameTrade
-_080536E8: .4byte gUnknown_2031DA4
+_080536E8: .4byte gSelectedTradeMonPositions
_080536EC: .4byte gPlayerParty
-_080536F0: .4byte sTradeAnimationResourcesPtr
+_080536F0: .4byte sTradeData
_080536F4:
movs r0, 0x1
negs r0, r0
@@ -4501,7 +2173,7 @@ _080536F4:
_08053700:
bl BeginNormalPaletteFade
_08053704:
- ldr r0, _08053714 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08053714 @ =sTradeData
ldr r1, [r0]
_08053708:
adds r1, 0x94
@@ -4510,7 +2182,7 @@ _08053708:
strh r0, [r1]
b _08053774
.align 2, 0
-_08053714: .4byte sTradeAnimationResourcesPtr
+_08053714: .4byte sTradeData
_08053718:
ldr r0, _08053780 @ =gPaletteFade
ldrb r1, [r0, 0x7]
@@ -4544,7 +2216,7 @@ _08053718:
_08053766:
ldr r0, _08053784 @ =CB2_ReturnToField
bl SetMainCallback2
- bl sub_8053AE4
+ bl BufferInGameTradeMonName
bl HelpSystem_Enable
_08053774:
movs r0, 0
@@ -4588,7 +2260,7 @@ _080537B8:
ldr r1, _080537F8 @ =sub_8053E8C
mov r8, r1
str r1, [r0]
- ldr r7, _080537FC @ =gUnknown_2031DA4
+ ldr r7, _080537FC @ =gSelectedTradeMonPositions
ldrb r0, [r7]
movs r6, 0x64
muls r0, r6
@@ -4605,7 +2277,7 @@ _080537B8:
adds r0, r3, 0
muls r0, r6
adds r0, r5
- ldr r1, _08053804 @ =sTradeAnimationResourcesPtr
+ ldr r1, _08053804 @ =sTradeData
ldr r1, [r1]
adds r1, 0x8F
ldrb r2, [r1]
@@ -4615,14 +2287,14 @@ _080537B8:
.align 2, 0
_080537F4: .4byte gCB2_AfterEvolution
_080537F8: .4byte sub_8053E8C
-_080537FC: .4byte gUnknown_2031DA4
+_080537FC: .4byte gSelectedTradeMonPositions
_08053800: .4byte gPlayerParty
-_08053804: .4byte sTradeAnimationResourcesPtr
+_08053804: .4byte sTradeData
_08053808:
mov r0, r8
bl SetMainCallback2
_0805380E:
- ldr r1, _08053838 @ =gUnknown_2031DA4
+ ldr r1, _08053838 @ =gSelectedTradeMonPositions
movs r0, 0xFF
_08053812:
strb r0, [r1]
@@ -4642,7 +2314,7 @@ _08053822:
pop {r0}
bx r0
.align 2, 0
-_08053838: .4byte gUnknown_2031DA4
+_08053838: .4byte gSelectedTradeMonPositions
thumb_func_end sub_8053788
thumb_func_start sub_805383C
@@ -4669,7 +2341,7 @@ _08053864:
ldr r0, _080538B4 @ =0x0000abcd
cmp r1, r0
bne _08053874
- ldr r0, _080538B8 @ =sTradeAnimationResourcesPtr
+ ldr r0, _080538B8 @ =sTradeData
ldr r0, [r0]
adds r0, 0x72
strb r6, [r0]
@@ -4689,7 +2361,7 @@ _0805387A:
ldr r0, _080538B4 @ =0x0000abcd
cmp r1, r0
bne _0805389C
- ldr r0, _080538B8 @ =sTradeAnimationResourcesPtr
+ ldr r0, _080538B8 @ =sTradeData
ldr r0, [r0]
adds r0, 0x73
movs r1, 0x1
@@ -4706,7 +2378,7 @@ _080538A8: .4byte gBlockRecvBuffer
_080538AC: .4byte 0x0000dcba
_080538B0: .4byte sub_8053788
_080538B4: .4byte 0x0000abcd
-_080538B8: .4byte sTradeAnimationResourcesPtr
+_080538B8: .4byte sTradeData
thumb_func_end sub_805383C
thumb_func_start SpriteCB_TradePokeball_Default
@@ -4870,7 +2542,7 @@ _080539C0:
bne _080539FE
adds r0, r4, 0
bl DestroySprite
- ldr r0, _08053A08 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08053A08 @ =sTradeData
ldr r0, [r0]
adds r0, 0x94
movs r1, 0xE
@@ -4881,7 +2553,7 @@ _080539FE:
bx r0
.align 2, 0
_08053A04: .4byte gUnknown_826D1E4
-_08053A08: .4byte sTradeAnimationResourcesPtr
+_08053A08: .4byte sTradeData
thumb_func_end SpriteCB_TradePokeball_Outbound2
thumb_func_start SpriteCB_TradePokeball_Inbound
@@ -4993,8 +2665,8 @@ _08053ADC: .4byte gSpeciesNames
_08053AE0: .4byte gStringVar2
thumb_func_end GetInGameTradeSpeciesInfo
- thumb_func_start sub_8053AE4
-sub_8053AE4: @ 8053AE4
+ thumb_func_start BufferInGameTradeMonName
+BufferInGameTradeMonName: @ 8053AE4
push {r4,lr}
sub sp, 0x20
ldr r0, _08053B2C @ =gSpecialVar_0x8004
@@ -5035,7 +2707,7 @@ _08053B38: .4byte gPlayerParty
_08053B3C: .4byte gStringVar1
_08053B40: .4byte gStringVar2
_08053B44: .4byte gSpeciesNames
- thumb_func_end sub_8053AE4
+ thumb_func_end BufferInGameTradeMonName
thumb_func_start sub_8053B48
sub_8053B48: @ 8053B48
@@ -5313,7 +2985,7 @@ CB2_RunTradeAnim_LinkTrade: @ 8053D84
lsrs r6, r0, 24
cmp r6, 0x1
bne _08053DE6
- ldr r5, _08053E08 @ =sTradeAnimationResourcesPtr
+ ldr r5, _08053E08 @ =sTradeData
ldr r0, [r5]
adds r0, 0x8E
ldrb r1, [r0]
@@ -5331,7 +3003,7 @@ CB2_RunTradeAnim_LinkTrade: @ 8053D84
lsls r0, 2
adds r0, r4
bl FreeSpriteOamMatrix
- ldr r0, _08053E10 @ =gUnknown_2031DA4
+ ldr r0, _08053E10 @ =gSelectedTradeMonPositions
ldrb r4, [r0]
ldrb r0, [r0, 0x1]
movs r1, 0x6
@@ -5340,7 +3012,7 @@ CB2_RunTradeAnim_LinkTrade: @ 8053D84
lsls r1, 24
lsrs r1, 24
adds r0, r4, 0
- bl Trade_SwapPlayerAndParterMonData
+ bl TradeMons
ldr r0, [r5]
adds r2, r0, 0
adds r2, 0x74
@@ -5362,9 +3034,9 @@ _08053DE6:
pop {r0}
bx r0
.align 2, 0
-_08053E08: .4byte sTradeAnimationResourcesPtr
+_08053E08: .4byte sTradeData
_08053E0C: .4byte gSprites
-_08053E10: .4byte gUnknown_2031DA4
+_08053E10: .4byte gSelectedTradeMonPositions
_08053E14: .4byte 0x0000abcd
_08053E18: .4byte sub_8053E1C
thumb_func_end CB2_RunTradeAnim_LinkTrade
@@ -5379,7 +3051,7 @@ sub_8053E1C: @ 8053E1C
bl sub_805383C
cmp r4, 0
bne _08053E68
- ldr r4, _08053E80 @ =sTradeAnimationResourcesPtr
+ ldr r4, _08053E80 @ =sTradeData
ldr r2, [r4]
adds r0, r2, 0
adds r0, 0x72
@@ -5414,7 +3086,7 @@ _08053E68:
pop {r0}
bx r0
.align 2, 0
-_08053E80: .4byte sTradeAnimationResourcesPtr
+_08053E80: .4byte sTradeData
_08053E84: .4byte 0x00000101
_08053E88: .4byte 0x0000dcba
thumb_func_end sub_8053E1C
@@ -5570,7 +3242,7 @@ _08054068:
.align 2, 0
_0805407C: .4byte gMain
_08054080:
- ldr r0, _080540B4 @ =sTradeAnimationResourcesPtr
+ ldr r0, _080540B4 @ =sTradeData
ldr r3, [r0]
ldr r0, [r3, 0x64]
adds r0, 0x1
@@ -5597,7 +3269,7 @@ _080540A8:
adds r0, r2
b _080540D0
.align 2, 0
-_080540B4: .4byte sTradeAnimationResourcesPtr
+_080540B4: .4byte sTradeData
_080540B8: .4byte gMain
_080540BC:
bl IsLinkTaskFinished
@@ -5630,7 +3302,7 @@ _080540EA:
movs r0, 0
adds r1, r4, 0
movs r2, 0
- bl sub_8054508
+ bl DrawTextOnTradeWindow
b _08054396
.align 2, 0
_080540FC: .4byte gStringVar4
@@ -5639,16 +3311,16 @@ _08054104:
bl InUnionRoom
cmp r0, 0
beq _08054120
- ldr r0, _0805411C @ =sTradeAnimationResourcesPtr
+ ldr r0, _0805411C @ =sTradeData
ldr r1, [r0]
adds r1, 0xF8
movs r0, 0x12
bl sub_8113550
b _08054132
.align 2, 0
-_0805411C: .4byte sTradeAnimationResourcesPtr
+_0805411C: .4byte sTradeData
_08054120:
- ldr r0, _08054174 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08054174 @ =sTradeData
ldr r1, [r0]
adds r1, 0xF8
movs r0, 0xC
@@ -5687,12 +3359,12 @@ _0805415A:
strb r0, [r1]
b _080541F2
.align 2, 0
-_08054174: .4byte sTradeAnimationResourcesPtr
+_08054174: .4byte sTradeData
_08054178: .4byte gWirelessCommType
_0805417C: .4byte gLinkPlayers
_08054180: .4byte gMain
_08054184:
- ldr r0, _0805419C @ =sTradeAnimationResourcesPtr
+ ldr r0, _0805419C @ =sTradeData
ldr r1, [r0]
ldr r0, [r1, 0x64]
adds r0, 0x1
@@ -5706,7 +3378,7 @@ _08054194:
adds r1, r2, r0
b _08054340
.align 2, 0
-_0805419C: .4byte sTradeAnimationResourcesPtr
+_0805419C: .4byte sTradeData
_080541A0:
bl sub_80DA3D8
lsls r0, 24
@@ -5724,7 +3396,7 @@ _080541A0:
.align 2, 0
_080541C0: .4byte gMain
_080541C4:
- ldr r0, _080541D8 @ =sTradeAnimationResourcesPtr
+ ldr r0, _080541D8 @ =sTradeData
ldr r0, [r0]
str r1, [r0, 0x64]
ldr r0, _080541DC @ =gMain
@@ -5735,7 +3407,7 @@ _080541C4:
strb r1, [r0]
b _08054396
.align 2, 0
-_080541D8: .4byte sTradeAnimationResourcesPtr
+_080541D8: .4byte sTradeData
_080541DC: .4byte gMain
_080541E0:
bl sub_80DA40C
@@ -5748,15 +3420,15 @@ _080541E0:
_080541F0:
strb r1, [r0]
_080541F2:
- ldr r0, _08054200 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08054200 @ =sTradeData
ldr r0, [r0]
str r2, [r0, 0x64]
b _08054396
.align 2, 0
_080541FC: .4byte gMain
-_08054200: .4byte sTradeAnimationResourcesPtr
+_08054200: .4byte sTradeData
_08054204:
- ldr r4, _08054238 @ =sTradeAnimationResourcesPtr
+ ldr r4, _08054238 @ =sTradeData
ldr r1, [r4]
ldr r0, [r1, 0x64]
adds r0, 0x1
@@ -5780,7 +3452,7 @@ _08054214:
str r0, [r4, 0x64]
b _08054242
.align 2, 0
-_08054238: .4byte sTradeAnimationResourcesPtr
+_08054238: .4byte sTradeData
_0805423C:
ldr r1, [r4]
movs r0, 0
@@ -5796,7 +3468,7 @@ _08054242:
.align 2, 0
_08054250: .4byte gMain
_08054254:
- ldr r0, _08054270 @ =sTradeAnimationResourcesPtr
+ ldr r0, _08054270 @ =sTradeData
ldr r1, [r0]
ldr r0, [r1, 0x64]
cmp r0, 0
@@ -5810,7 +3482,7 @@ _08054254:
strb r1, [r0]
b _08054396
.align 2, 0
-_08054270: .4byte sTradeAnimationResourcesPtr
+_08054270: .4byte sTradeData
_08054274: .4byte gMain
_08054278:
subs r0, 0x1
@@ -5834,7 +3506,7 @@ _0805428A:
.align 2, 0
_0805429C: .4byte gMain
_080542A0:
- ldr r0, _080542C0 @ =sTradeAnimationResourcesPtr
+ ldr r0, _080542C0 @ =sTradeData
ldr r1, [r0]
ldr r0, [r1, 0x64]
adds r0, 0x1
@@ -5850,7 +3522,7 @@ _080542A0:
bl sub_800AB9C
b _08054396
.align 2, 0
-_080542C0: .4byte sTradeAnimationResourcesPtr
+_080542C0: .4byte sTradeData
_080542C4:
bl IsLinkTaskFinished
lsls r0, 24
@@ -5991,7 +3663,7 @@ sub_80543C4: @ 80543C4
bl GetBgTilemapBuffer
bl Free
bl FreeMonSpritesGfx
- ldr r4, _08054434 @ =sTradeAnimationResourcesPtr
+ ldr r4, _08054434 @ =sTradeData
ldr r0, [r4]
bl Free
str r5, [r4]
@@ -6014,7 +3686,7 @@ _0805441A:
bx r0
.align 2, 0
_08054430: .4byte gPaletteFade
-_08054434: .4byte sTradeAnimationResourcesPtr
+_08054434: .4byte sTradeData
_08054438: .4byte gWirelessCommType
_0805443C: .4byte gMain
thumb_func_end sub_80543C4
@@ -6071,13 +3743,13 @@ _080544A4: .4byte gFieldCallback
_080544A8: .4byte FieldCallback_ReturnToEventScript2
thumb_func_end sub_8054470
- thumb_func_start sub_80544AC
-sub_80544AC: @ 80544AC
+ thumb_func_start CheckPartnersMonForRibbons
+CheckPartnersMonForRibbons: @ 80544AC
push {r4,r5,lr}
movs r5, 0
movs r4, 0
_080544B2:
- ldr r0, _080544F0 @ =gUnknown_2031DA4
+ ldr r0, _080544F0 @ =gSelectedTradeMonPositions
ldrb r0, [r0, 0x1]
movs r1, 0x6
bl __umodsi3
@@ -6107,10 +3779,10 @@ _080544EA:
pop {r0}
bx r0
.align 2, 0
-_080544F0: .4byte gUnknown_2031DA4
+_080544F0: .4byte gSelectedTradeMonPositions
_080544F4: .4byte gEnemyParty
_080544F8: .4byte 0x0000083b
- thumb_func_end sub_80544AC
+ thumb_func_end CheckPartnersMonForRibbons
thumb_func_start sub_80544FC
sub_80544FC: @ 80544FC
@@ -6120,8 +3792,8 @@ sub_80544FC: @ 80544FC
bx r0
thumb_func_end sub_80544FC
- thumb_func_start sub_8054508
-sub_8054508: @ 8054508
+ thumb_func_start DrawTextOnTradeWindow
+DrawTextOnTradeWindow: @ 8054508
push {r4-r7,lr}
mov r7, r8
push {r7}
@@ -6136,7 +3808,7 @@ sub_8054508: @ 8054508
adds r0, r5, 0
movs r1, 0xFF
bl FillWindowPixelBuffer
- ldr r2, _08054580 @ =sTradeAnimationResourcesPtr
+ ldr r2, _08054580 @ =sTradeData
ldr r1, [r2]
movs r6, 0x82
lsls r6, 1
@@ -6180,9 +3852,9 @@ sub_8054508: @ 8054508
pop {r0}
bx r0
.align 2, 0
-_08054580: .4byte sTradeAnimationResourcesPtr
+_08054580: .4byte sTradeData
_08054584: .4byte 0x00000105
- thumb_func_end sub_8054508
+ thumb_func_end DrawTextOnTradeWindow
thumb_func_start c3_08054588
c3_08054588: @ 8054588
@@ -6311,7 +3983,7 @@ c3_0805465C: @ 805465C
ldrsh r4, [r7, r0]
cmp r4, 0
bne _080546BC
- ldr r1, _0805472C @ =sTradeAnimationResourcesPtr
+ ldr r1, _0805472C @ =sTradeData
ldr r3, [r1]
ldr r5, _08054730 @ =0x0000010b
adds r2, r3, r5
@@ -6342,7 +4014,7 @@ c3_0805465C: @ 805465C
movs r1, 0x13
bl SetGpuReg
_080546BC:
- ldr r4, _0805472C @ =sTradeAnimationResourcesPtr
+ ldr r4, _0805472C @ =sTradeData
ldr r2, [r4]
ldr r5, _08054730 @ =0x0000010b
mov r8, r5
@@ -6396,7 +4068,7 @@ _0805471E:
bx r0
.align 2, 0
_08054728: .4byte gTasks+0x8
-_0805472C: .4byte sTradeAnimationResourcesPtr
+_0805472C: .4byte sTradeData
_08054730: .4byte 0x0000010b
thumb_func_end c3_0805465C
@@ -6415,7 +4087,7 @@ sub_8054734: @ 8054734
ldrsh r0, [r6, r1]
cmp r0, 0
bne _08054774
- ldr r1, _080547EC @ =sTradeAnimationResourcesPtr
+ ldr r1, _080547EC @ =sTradeData
ldr r0, [r1]
ldr r3, _080547F0 @ =0x00000109
adds r2, r0, r3
@@ -6433,7 +4105,7 @@ sub_8054734: @ 8054734
movs r1, 0x13
bl SetGpuReg
_08054774:
- ldr r5, _080547EC @ =sTradeAnimationResourcesPtr
+ ldr r5, _080547EC @ =sTradeData
ldr r0, [r5]
ldr r3, _080547F4 @ =0x0000010b
adds r1, r0, r3
@@ -6489,7 +4161,7 @@ _08054774:
b _0805480C
.align 2, 0
_080547E8: .4byte gTasks+0x8
-_080547EC: .4byte sTradeAnimationResourcesPtr
+_080547EC: .4byte sTradeData
_080547F0: .4byte 0x00000109
_080547F4: .4byte 0x0000010b
_080547F8: .4byte 0x0000ffff
diff --git a/data/strings.s b/data/strings.s
index bd5c308a5..5ebdc7afa 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -4407,17 +4407,17 @@ gUnknown_841E1C5::
.string "Your friend wants\n"
.string "to trade POKéMON.$"
-gUnknown_841E1E9:: @ 841E1E9
+gText_XWillBeSentToY:: @ 841E1E9
.string "{STR_VAR_2} will be\n"
.string "sent to {STR_VAR_1}.$"
-gUnknown_841E200:: @ 841E200
+gText_ByeByeVar1:: @ 841E200
.string "Bye-bye, {STR_VAR_2}!$"
-gUnknown_841E20D:: @ 841E20D
+gText_XSentOverY:: @ 841E20D
.string "{STR_VAR_1} sent over {STR_VAR_3}.$"
-gUnknown_841E21E:: @ 841E21E
+gText_TakeGoodCareOfX:: @ 841E21E
.string "Take good care of {STR_VAR_3}!$"
gText_From:: @ 841E234
diff --git a/data/trade.s b/data/trade.s
index 0102b1faf..e9ff8b289 100644
--- a/data/trade.s
+++ b/data/trade.s
@@ -750,7 +750,7 @@ gSpriteAnimTable_826CE74::
gUnknown_826CE7C:: @ 826CE7C
obj_tiles gUnknown_8264C1C, 0x0300, 5552
-gUnknown_826CE84:: @ 826CE84
+sGlowBallSpriteTemplate:: @ 826CE84
spr_template 5552, 5551, gOamData_826CE5C, gSpriteAnimTable_826CE74, NULL, gDummySpriteAffineAnimTable, SpriteCB_TradeGlowCore
gOamData_826CE9C::
diff --git a/include/gba/defines.h b/include/gba/defines.h
index 65561f10a..8c92d7b64 100644
--- a/include/gba/defines.h
+++ b/include/gba/defines.h
@@ -76,6 +76,7 @@
#define RGB_BLACK RGB(0, 0, 0)
#define RGB_WHITE RGB(31, 31, 31)
+#define RGB_WHITEALPHA (0xFFFF)
#define NAKED __attribute__((naked))
#define UNUSED __attribute__((unused))
diff --git a/include/pokeball.h b/include/pokeball.h
index ee0478eab..884ded22e 100644
--- a/include/pokeball.h
+++ b/include/pokeball.h
@@ -25,7 +25,7 @@ enum
u8 DoPokeballSendOutAnimation(s16 pan, u8 kindOfThrow);
void CreatePokeballSpriteToReleaseMon(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h);
-u8 sub_804BB98(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h);
+u8 CreateTradePokeballSprite(u8 monSpriteId, u8 bank, u8 x, u8 y, u8 oamPriority, u8 subpriortiy, u8 g, u32 h);
u8 sub_807671C(u8 a, u8 b, u8 x, u8 y, u8 oamPriority, u8 subPriority, u8 g, u32 h);
void sub_8076918(u8 bank);
void DoHitAnimHealthboxEffect(u8 bank);
diff --git a/include/strings.h b/include/strings.h
index 43043b537..2c1e93b38 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -662,5 +662,9 @@ extern const u8 gText_SevenIsland[];
// trade
extern const u8 gUnknown_841E0A5[];
+extern const u8 gText_XWillBeSentToY[];
+extern const u8 gText_ByeByeVar1[];
+extern const u8 gText_XSentOverY[];
+extern const u8 gText_TakeGoodCareOfX[];
#endif //GUARD_STRINGS_H
diff --git a/src/oak_speech.c b/src/oak_speech.c
index c39ff262e..3f946e13f 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -977,7 +977,7 @@ static void Task_OakSpeech15(u8 taskId)
{
ClearDialogWindowAndFrame(0, 1);
spriteId = gTasks[taskId].data[4];
- gTasks[taskId].data[6] = sub_804BB98(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1F3F);
+ gTasks[taskId].data[6] = CreateTradePokeballSprite(spriteId, gSprites[spriteId].oam.paletteNum, 0x64, 0x42, 0, 0, 32, 0xFFFF1F3F);
gTasks[taskId].data[3] = 48;
gTasks[taskId].data[0] = 64;
gTasks[taskId].func = Task_OakSpeech16;
diff --git a/src/trade.c b/src/trade.c
index 19f6e47f6..a21781753 100644
--- a/src/trade.c
+++ b/src/trade.c
@@ -9,11 +9,13 @@
#include "window.h"
#include "librfu.h"
#include "text_window.h"
+#include "evolution_scene.h"
#include "pokemon_icon.h"
#include "pokedex.h"
#include "mail_data.h"
#include "graphics.h"
#include "link.h"
+#include "help_system.h"
#include "link_rfu.h"
#include "cable_club.h"
#include "data.h"
@@ -23,6 +25,7 @@
#include "menu.h"
#include "overworld.h"
#include "battle_anim.h"
+#include "pokeball.h"
#include "party_menu.h"
#include "util.h"
#include "daycare.h"
@@ -37,6 +40,22 @@
#include "constants/songs.h"
#include "constants/moves.h"
+struct InGameTrade {
+ /*0x00*/ u8 nickname[POKEMON_NAME_LENGTH + 1];
+ /*0x0C*/ u16 species;
+ /*0x0E*/ u8 ivs[NUM_STATS];
+ /*0x14*/ u8 abilityNum;
+ /*0x18*/ u32 otId;
+ /*0x1C*/ u8 conditions[5];
+ /*0x24*/ u32 personality;
+ /*0x28*/ u16 heldItem;
+ /*0x2A*/ u8 mailNum;
+ /*0x2B*/ u8 otName[11];
+ /*0x36*/ u8 otGender;
+ /*0x37*/ u8 sheen;
+ /*0x38*/ u16 requestedSpecies;
+};
+
struct TradeMenuResources
{
/*0x0000*/ u8 unk_0;
@@ -80,7 +99,7 @@ struct TradeMenuResources
struct TradeAnimationResources {
/*0x00*/ struct Pokemon mon;
/*0x64*/ u32 timer;
- /*0x68*/ u32 unk_68[2];
+ /*0x68*/ u32 monPersonalities[2];
/*0x70*/ u8 filler_70[2];
/*0x72*/ u8 unk_72;
/*0x73*/ u8 unk_73;
@@ -96,7 +115,7 @@ struct TradeAnimationResources {
/*0x93*/ u8 unk_93;
/*0x94*/ u16 state;
/*0x96*/ u8 filler_96[0xD2 - 0x96];
- /*0xD2*/ u8 unk_D2;
+ /*0xD2*/ u8 pokeballSpriteId;
/*0xD3*/ u8 unk_D3;
/*0xD4*/ u16 unk_D4;
/*0xD6*/ u16 unk_D6;
@@ -108,18 +127,17 @@ struct TradeAnimationResources {
/*0xE2*/ s16 bg1hofs;
/*0xE4*/ s16 bg2vofs;
/*0xE6*/ s16 bg2hofs;
- /*0xE8*/ u16 unk_E8;
+ /*0xE8*/ u16 sXY;
/*0xEA*/ u16 unk_EA;
/*0xEC*/ u16 unk_EC;
/*0xEE*/ bool8 isLinkTrade;
/*0xF0*/ u16 tradeSpecies[2];
/*0xF4*/ u16 cachedMapMusic;
/*0xF6*/ u8 unk_F6;
- /*0xF8*/ u16 unk_F8;
- /*0xFA*/ u16 unk_FA;
+ /*0xF8*/ u16 monSpecies[2];
/*0xFC*/ u8 unk_FC[7];
/*0x103*/ u8 filler_103[5];
- /*0x108*/ u8 unk_108;
+ /*0x108*/ u8 isCableTrade;
/*0x109*/ u8 filler_109[7];
};
@@ -141,9 +159,9 @@ IWRAM_DATA vu16 gUnknown_3000E78;
EWRAM_DATA u8 *gUnknown_2031C90 = NULL;
EWRAM_DATA u8 *gUnknown_2031C94[14] = {};
EWRAM_DATA struct MailStruct gLinkPartnerMail[6] = {};
-EWRAM_DATA u8 gUnknown_2031DA4[2] = {0};
+EWRAM_DATA u8 gSelectedTradeMonPositions[2] = {0};
EWRAM_DATA struct TradeMenuResources * sTradeMenuResourcesPtr = NULL;
-EWRAM_DATA struct TradeAnimationResources * sTradeAnimationResourcesPtr = NULL;
+EWRAM_DATA struct TradeAnimationResources * sTradeData = NULL;
void sub_804C728(void);
void sub_804D4F8(void);
@@ -177,12 +195,19 @@ void sub_805049C(void);
void sub_80504B0(void);
void TradeAnimInit_LoadGfx(void);
void CB2_RunTradeAnim_InGameTrade(void);
-void sub_8050968(u8 idx);
+void SetTradeSequenceBgGpuRegs(u8 idx);
void sub_8050DE0(void);
void sub_8050E24(void);
-void sub_8050F14(void);
+u8 sub_8050F14(void);
+u8 sub_8050F3C(void);
+u8 sub_805232C(void);
void CB2_RunTradeAnim_LinkTrade(void);
void LoadHeldItemIcons(void);
+void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed);
+void CheckPartnersMonForRibbons(void);
+void BufferInGameTradeMonName(void);
+void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite);
+void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite);
extern const u16 gUnknown_8260C30[];
extern const u16 gUnknown_8261430[];
@@ -224,6 +249,19 @@ extern const u16 gUnknown_826985C[];
extern const u16 gUnknown_826995C[];
extern const u32 gWirelessSignal4bpp[];
extern const u32 gUnknown_826C60C[];
+extern const struct SpriteSheet gUnknown_826CE2C;
+extern const struct SpriteSheet gUnknown_826CE7C;
+extern const struct SpriteSheet gUnknown_826CEB0;
+extern const struct SpriteSheet gUnknown_826CF28;
+extern const struct SpritePalette gUnknown_826CE34;
+extern const struct SpritePalette gUnknown_826CE3C;
+extern const struct InGameTrade gIngameTrades[];
+extern const struct SpriteTemplate sTradePokeballSpriteTemplate;
+extern const struct SpriteTemplate gUnknown_826CF30;
+extern const struct SpriteTemplate sGameLinkCableEndSpriteTemplate;
+extern const struct SpriteTemplate gUnknown_826CE44;
+extern const struct SpriteTemplate sGlowBallSpriteTemplate;
+extern const union AffineAnimCmd *const gUnknown_826CF88[];
void sub_804C600(void)
{
@@ -2353,8 +2391,8 @@ void sub_804D548(void)
{
if (!gPaletteFade.active)
{
- gUnknown_2031DA4[0] = sTradeMenuResourcesPtr->tradeMenuCursorPosition;
- gUnknown_2031DA4[1] = sTradeMenuResourcesPtr->unk_7E;
+ gSelectedTradeMonPositions[0] = sTradeMenuResourcesPtr->tradeMenuCursorPosition;
+ gSelectedTradeMonPositions[1] = sTradeMenuResourcesPtr->unk_7E;
if (gWirelessCommType != 0)
{
sTradeMenuResourcesPtr->unk_6F = 16;
@@ -4108,10 +4146,10 @@ void sub_804FE00(struct Sprite * sprite)
}
}
-void TradeAnim_UpdateBgAffine(void)
+void SetTradeBGAffine(void)
{
struct BgAffineDstData affine;
- DoBgAffineSet(&affine, sTradeAnimationResourcesPtr->unk_D4 * 0x100, sTradeAnimationResourcesPtr->unk_D6 * 0x100, sTradeAnimationResourcesPtr->unk_DC, sTradeAnimationResourcesPtr->unk_DE, sTradeAnimationResourcesPtr->unk_E8, sTradeAnimationResourcesPtr->unk_E8, sTradeAnimationResourcesPtr->unk_EC);
+ DoBgAffineSet(&affine, sTradeData->unk_D4 * 0x100, sTradeData->unk_D6 * 0x100, sTradeData->unk_DC, sTradeData->unk_DE, sTradeData->sXY, sTradeData->sXY, sTradeData->unk_EC);
SetGpuReg(REG_OFFSET_BG2PA, affine.pa);
SetGpuReg(REG_OFFSET_BG2PB, affine.pb);
SetGpuReg(REG_OFFSET_BG2PC, affine.pc);
@@ -4124,18 +4162,18 @@ static void TradeAnim_UpdateBgRegs(void)
{
u16 dispcnt;
- SetGpuReg(REG_OFFSET_BG1VOFS, sTradeAnimationResourcesPtr->bg1vofs);
- SetGpuReg(REG_OFFSET_BG1HOFS, sTradeAnimationResourcesPtr->bg1hofs);
+ SetGpuReg(REG_OFFSET_BG1VOFS, sTradeData->bg1vofs);
+ SetGpuReg(REG_OFFSET_BG1HOFS, sTradeData->bg1hofs);
dispcnt = GetGpuReg(REG_OFFSET_DISPCNT);
if ((dispcnt & 7) == DISPCNT_MODE_0)
{
- SetGpuReg(REG_OFFSET_BG2VOFS, sTradeAnimationResourcesPtr->bg2vofs);
- SetGpuReg(REG_OFFSET_BG2HOFS, sTradeAnimationResourcesPtr->bg2hofs);
+ SetGpuReg(REG_OFFSET_BG2VOFS, sTradeData->bg2vofs);
+ SetGpuReg(REG_OFFSET_BG2HOFS, sTradeData->bg2hofs);
}
else
{
- TradeAnim_UpdateBgAffine();
+ SetTradeBGAffine();
}
}
@@ -4149,28 +4187,28 @@ static void VBlankCB_TradeAnim(void)
void sub_804FF24(void)
{
- sTradeAnimationResourcesPtr->unk_8A = 0;
- sTradeAnimationResourcesPtr->unk_88 = 0;
- sTradeAnimationResourcesPtr->unk_89 = 0;
+ sTradeData->unk_8A = 0;
+ sTradeData->unk_88 = 0;
+ sTradeData->unk_89 = 0;
}
void sub_804FF4C(void)
{
- if (sTradeAnimationResourcesPtr->unk_88 == sTradeAnimationResourcesPtr->unk_89)
- sTradeAnimationResourcesPtr->unk_8A++;
+ if (sTradeData->unk_88 == sTradeData->unk_89)
+ sTradeData->unk_8A++;
else
- sTradeAnimationResourcesPtr->unk_8A = 0;
+ sTradeData->unk_8A = 0;
- if (sTradeAnimationResourcesPtr->unk_8A > 300)
+ if (sTradeData->unk_8A > 300)
{
CloseLink();
SetMainCallback2(CB2_LinkError);
- sTradeAnimationResourcesPtr->unk_8A = 0;
- sTradeAnimationResourcesPtr->unk_89 = 0;
- sTradeAnimationResourcesPtr->unk_88 = 0;
+ sTradeData->unk_8A = 0;
+ sTradeData->unk_89 = 0;
+ sTradeData->unk_88 = 0;
}
- sTradeAnimationResourcesPtr->unk_89 = sTradeAnimationResourcesPtr->unk_88;
+ sTradeData->unk_89 = sTradeData->unk_88;
}
u32 sub_804FFC4(void)
@@ -4189,13 +4227,13 @@ void sub_804FFE4(u8 whichParty, u8 a1)
if (whichParty == 0)
{
- mon = &gPlayerParty[gUnknown_2031DA4[0]];
+ mon = &gPlayerParty[gSelectedTradeMonPositions[0]];
pos = 1;
}
if (whichParty == 1)
{
- mon = &gEnemyParty[gUnknown_2031DA4[1] % PARTY_SIZE];
+ mon = &gEnemyParty[gSelectedTradeMonPositions[1] % PARTY_SIZE];
pos = 3;
}
@@ -4211,14 +4249,14 @@ void sub_804FFE4(u8 whichParty, u8 a1)
HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality);
LoadCompressedSpritePalette(GetMonSpritePalStruct(mon));
- sTradeAnimationResourcesPtr->tradeSpecies[whichParty] = species;
- sTradeAnimationResourcesPtr->unk_68[whichParty] = personality;
+ sTradeData->tradeSpecies[whichParty] = species;
+ sTradeData->monPersonalities[whichParty] = personality;
break;
case 1:
SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, pos);
- sTradeAnimationResourcesPtr->pokePicSpriteIdxs[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6);
- gSprites[sTradeAnimationResourcesPtr->pokePicSpriteIdxs[whichParty]].invisible = TRUE;
- gSprites[sTradeAnimationResourcesPtr->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy;
+ sTradeData->pokePicSpriteIdxs[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6);
+ gSprites[sTradeData->pokePicSpriteIdxs[whichParty]].invisible = TRUE;
+ gSprites[sTradeData->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy;
break;
}
}
@@ -4233,7 +4271,7 @@ void CB2_InitTradeAnim_LinkTrade(void)
gLinkType = 0x1144;
CloseLink();
}
- sTradeAnimationResourcesPtr = AllocZeroed(sizeof(struct TradeAnimationResources));
+ sTradeData = AllocZeroed(sizeof(struct TradeAnimationResources));
AllocateMonSpritesGfx();
ResetTasks();
ResetSpriteData();
@@ -4242,25 +4280,25 @@ void CB2_InitTradeAnim_LinkTrade(void)
TradeAnimInit_LoadGfx();
sub_804FF24();
gMain.state++;
- sTradeAnimationResourcesPtr->unk_8C = 0;
- sTradeAnimationResourcesPtr->state = 0;
- sTradeAnimationResourcesPtr->isLinkTrade = TRUE;
- sTradeAnimationResourcesPtr->unk_D4 = 64;
- sTradeAnimationResourcesPtr->unk_D6 = 64;
- sTradeAnimationResourcesPtr->unk_D8 = 0;
- sTradeAnimationResourcesPtr->unk_DA = 0;
- sTradeAnimationResourcesPtr->unk_DC = 120;
- sTradeAnimationResourcesPtr->unk_DE = 80;
- sTradeAnimationResourcesPtr->unk_E8 = 256;
- sTradeAnimationResourcesPtr->unk_EC = 0;
+ sTradeData->unk_8C = 0;
+ sTradeData->state = 0;
+ sTradeData->isLinkTrade = TRUE;
+ sTradeData->unk_D4 = 64;
+ sTradeData->unk_D6 = 64;
+ sTradeData->unk_D8 = 0;
+ sTradeData->unk_DA = 0;
+ sTradeData->unk_DC = 120;
+ sTradeData->unk_DE = 80;
+ sTradeData->sXY = 256;
+ sTradeData->unk_EC = 0;
break;
case 1:
if (!gReceivedRemoteLinkPlayers)
{
- sTradeAnimationResourcesPtr->unk_108 = TRUE;
+ sTradeData->isCableTrade = TRUE;
OpenLink();
gMain.state++;
- sTradeAnimationResourcesPtr->timer = 0;
+ sTradeData->timer = 0;
}
else
{
@@ -4268,10 +4306,10 @@ void CB2_InitTradeAnim_LinkTrade(void)
}
break;
case 2:
- sTradeAnimationResourcesPtr->timer++;
- if (sTradeAnimationResourcesPtr->timer > 60)
+ sTradeData->timer++;
+ if (sTradeData->timer > 60)
{
- sTradeAnimationResourcesPtr->timer = 0;
+ sTradeData->timer = 0;
gMain.state++;
}
break;
@@ -4280,8 +4318,8 @@ void CB2_InitTradeAnim_LinkTrade(void)
{
if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
{
- sTradeAnimationResourcesPtr->timer++;
- if (sTradeAnimationResourcesPtr->timer > 30)
+ sTradeData->timer++;
+ if (sTradeData->timer > 30)
{
CheckShouldAdvanceLinkState();
gMain.state++;
@@ -4305,9 +4343,9 @@ void CB2_InitTradeAnim_LinkTrade(void)
}
break;
case 5:
- sTradeAnimationResourcesPtr->unk_72 = 0;
- sTradeAnimationResourcesPtr->unk_73 = 0;
- sTradeAnimationResourcesPtr->unk_93 = 0;
+ sTradeData->unk_72 = 0;
+ sTradeData->unk_73 = 0;
+ sTradeData->unk_93 = 0;
sub_804FFE4(0, 0);
gMain.state++;
break;
@@ -4333,9 +4371,9 @@ void CB2_InitTradeAnim_LinkTrade(void)
case 10:
BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
ShowBg(0);
- sTradeAnimationResourcesPtr->unk_F8 = GetMonData(&gPlayerParty[gUnknown_2031DA4[0]], MON_DATA_SPECIES2);
- sTradeAnimationResourcesPtr->unk_FA = GetMonData(&gEnemyParty[gUnknown_2031DA4[1] % 6], MON_DATA_SPECIES2);
- memcpy(sTradeAnimationResourcesPtr->unk_FC, gLinkPlayers[GetMultiplayerId() ^ 1].name, 7);
+ sTradeData->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedTradeMonPositions[0]], MON_DATA_SPECIES2);
+ sTradeData->monSpecies[1] = GetMonData(&gEnemyParty[gSelectedTradeMonPositions[1] % 6], MON_DATA_SPECIES2);
+ memcpy(sTradeData->unk_FC, gLinkPlayers[GetMultiplayerId() ^ 1].name, 7);
gMain.state++;
break;
case 11:
@@ -4364,8 +4402,8 @@ void CB2_InitTradeAnim_LinkTrade(void)
void sub_805049C(void)
{
- sub_8050968(5);
- sub_8050968(0);
+ SetTradeSequenceBgGpuRegs(5);
+ SetTradeSequenceBgGpuRegs(0);
}
void sub_80504B0(void)
@@ -4406,30 +4444,30 @@ void CB2_InitTradeAnim_InGameTrade(void)
switch (gMain.state)
{
case 0:
- gUnknown_2031DA4[0] = gSpecialVar_0x8005;
- gUnknown_2031DA4[1] = 6;
+ gSelectedTradeMonPositions[0] = gSpecialVar_0x8005;
+ gSelectedTradeMonPositions[1] = 6;
StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName);
GetMonData(&gEnemyParty[0], MON_DATA_OT_NAME, otName);
StringCopy(gLinkPlayers[1].name, otName);
- sTradeAnimationResourcesPtr = AllocZeroed(sizeof(*sTradeAnimationResourcesPtr));
+ sTradeData = AllocZeroed(sizeof(*sTradeData));
AllocateMonSpritesGfx();
ResetTasks();
ResetSpriteData();
FreeAllSpritePalettes();
SetVBlankCallback(VBlankCB_TradeAnim);
TradeAnimInit_LoadGfx();
- sTradeAnimationResourcesPtr->isLinkTrade = FALSE;
- sTradeAnimationResourcesPtr->unk_8C = 0;
- sTradeAnimationResourcesPtr->state = 0;
- sTradeAnimationResourcesPtr->unk_D4 = 64;
- sTradeAnimationResourcesPtr->unk_D6 = 64;
- sTradeAnimationResourcesPtr->unk_D8 = 0;
- sTradeAnimationResourcesPtr->unk_DA = 0;
- sTradeAnimationResourcesPtr->unk_DC = 120;
- sTradeAnimationResourcesPtr->unk_DE = 80;
- sTradeAnimationResourcesPtr->unk_E8 = 256;
- sTradeAnimationResourcesPtr->unk_EC = 0;
- sTradeAnimationResourcesPtr->timer = 0;
+ sTradeData->isLinkTrade = FALSE;
+ sTradeData->unk_8C = 0;
+ sTradeData->state = 0;
+ sTradeData->unk_D4 = 64;
+ sTradeData->unk_D6 = 64;
+ sTradeData->unk_D8 = 0;
+ sTradeData->unk_DA = 0;
+ sTradeData->unk_DC = 120;
+ sTradeData->unk_DE = 80;
+ sTradeData->sXY = 256;
+ sTradeData->unk_EC = 0;
+ sTradeData->timer = 0;
gMain.state = 5;
break;
case 5:
@@ -4463,8 +4501,8 @@ void CB2_InitTradeAnim_InGameTrade(void)
gMain.state++;
break;
case 11:
- sub_8050968(5);
- sub_8050968(0);
+ SetTradeSequenceBgGpuRegs(5);
+ SetTradeSequenceBgGpuRegs(0);
sub_8050E24();
gMain.state++;
break;
@@ -4502,7 +4540,7 @@ static void RS_TryEnableNationalPokedex(void)
EnableNationalPokedex();*/
}
-void Trade_SwapPlayerAndParterMonData(u8 playerPartyIdx, u8 partnerPartyIdx)
+void TradeMons(u8 playerPartyIdx, u8 partnerPartyIdx)
{
u8 friendship;
@@ -4518,9 +4556,9 @@ void Trade_SwapPlayerAndParterMonData(u8 playerPartyIdx, u8 partnerPartyIdx)
ClearMailStruct(&gSaveBlock1Ptr->mail[playerMail]);
// This is where the actual trade happens!!
- sTradeAnimationResourcesPtr->mon = *playerMon;
+ sTradeData->mon = *playerMon;
*playerMon = *partnerMon;
- *partnerMon = sTradeAnimationResourcesPtr->mon;
+ *partnerMon = sTradeData->mon;
// By default, a Pokemon received from a trade will have 70 Friendship.
friendship = 70;
@@ -4538,16 +4576,16 @@ void Trade_SwapPlayerAndParterMonData(u8 playerPartyIdx, u8 partnerPartyIdx)
void sub_80508F4(void)
{
- switch (sTradeAnimationResourcesPtr->unk_93)
+ switch (sTradeData->unk_93)
{
case 1:
if (IsLinkTaskFinished())
{
- SendBlock(bitmask_all_link_players_but_self(), sTradeAnimationResourcesPtr->linkData, 20);
- sTradeAnimationResourcesPtr->unk_93++;
+ SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, 20);
+ sTradeData->unk_93++;
}
case 2:
- sTradeAnimationResourcesPtr->unk_93 = 0;
+ sTradeData->unk_93 = 0;
break;
}
}
@@ -4562,13 +4600,13 @@ void CB2_RunTradeAnim_InGameTrade(void)
UpdatePaletteFade();
}
-void sub_8050968(u8 state)
+void SetTradeSequenceBgGpuRegs(u8 state)
{
switch (state)
{
case 0:
- sTradeAnimationResourcesPtr->bg2vofs = 0;
- sTradeAnimationResourcesPtr->bg2hofs = 0xB4;
+ sTradeData->bg2vofs = 0;
+ sTradeData->bg2hofs = 0xB4;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256);
LoadPalette(gTradeGba2_Pal, 0x10, 0x60);
@@ -4576,12 +4614,12 @@ void sub_8050968(u8 state)
DmaCopy16Defvars(3, gUnknown_826601C, (void *)BG_SCREEN_ADDR(18), 0x1000);
break;
case 1:
- sTradeAnimationResourcesPtr->bg1hofs = 0;
- sTradeAnimationResourcesPtr->bg1vofs = 0x15C;
+ sTradeData->bg1hofs = 0;
+ sTradeData->bg1vofs = 0x15C;
SetGpuReg(REG_OFFSET_BG1VOFS, 0x15C);
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_TXT256x512);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT256x512);
- if (sTradeAnimationResourcesPtr->unk_108)
+ if (sTradeData->isCableTrade)
{
DmaCopy16Defvars(3, gUnknown_826AA5C, (void *)BG_SCREEN_ADDR(5), 0x1000);
}
@@ -4593,9 +4631,9 @@ void sub_8050968(u8 state)
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
break;
case 2:
- sTradeAnimationResourcesPtr->bg1vofs = 0;
- sTradeAnimationResourcesPtr->bg1hofs = 0;
- if (sTradeAnimationResourcesPtr->unk_108 == FALSE)
+ sTradeData->bg1vofs = 0;
+ sTradeData->bg1hofs = 0;
+ if (sTradeData->isCableTrade == FALSE)
{
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
LZ77UnCompVram(gUnknown_3379A0Bin, (void *)BG_SCREEN_ADDR(5));
@@ -4612,19 +4650,19 @@ void sub_8050968(u8 state)
LoadPalette(gUnknown_826BF5C, 0x30, 0x20);
LZ77UnCompVram(gWirelessSignal4bpp, BG_CHAR_ADDR(1));
LZ77UnCompVram(gUnknown_826C60C, BG_SCREEN_ADDR(18));
- sTradeAnimationResourcesPtr->bg2vofs = 0x50;
+ sTradeData->bg2vofs = 0x50;
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
break;
case 4:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18) | BGCNT_AFF128x128);
- sTradeAnimationResourcesPtr->unk_D4 = 0x40;
- sTradeAnimationResourcesPtr->unk_D6 = 0x5C;
- sTradeAnimationResourcesPtr->unk_E8 = 0x20;
- sTradeAnimationResourcesPtr->unk_EA = 0x400;
- sTradeAnimationResourcesPtr->unk_EC = 0;
+ sTradeData->unk_D4 = 0x40;
+ sTradeData->unk_D6 = 0x5C;
+ sTradeData->sXY = 0x20;
+ sTradeData->unk_EA = 0x400;
+ sTradeData->unk_EC = 0;
DmaCopyLarge16(3, gUnknown_826701C, (void *)BG_CHAR_ADDR(1), 0x2840, 0x1000);
- if (sTradeAnimationResourcesPtr->unk_108)
+ if (sTradeData->isCableTrade)
{
DmaCopy16Defvars(3, gUnknown_826985C, (void *)BG_SCREEN_ADDR(18), 0x100);
}
@@ -4634,21 +4672,21 @@ void sub_8050968(u8 state)
}
break;
case 5:
- sTradeAnimationResourcesPtr->bg1vofs = 0;
- sTradeAnimationResourcesPtr->bg1hofs = 0;
+ sTradeData->bg1vofs = 0;
+ sTradeData->bg1hofs = 0;
break;
case 6:
SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(3) | BGCNT_CHARBASE(1) | BGCNT_256COLOR | BGCNT_SCREENBASE(18) | BGCNT_TXT256x256);
- sTradeAnimationResourcesPtr->unk_D4 = 0x40;
- sTradeAnimationResourcesPtr->unk_D6 = 0x5C;
- sTradeAnimationResourcesPtr->unk_E8 = 0x100;
- sTradeAnimationResourcesPtr->unk_EA = 0x80;
- sTradeAnimationResourcesPtr->unk_DC = 0x78;
- sTradeAnimationResourcesPtr->unk_DE = 0x50;
- sTradeAnimationResourcesPtr->unk_EC = 0;
+ sTradeData->unk_D4 = 0x40;
+ sTradeData->unk_D6 = 0x5C;
+ sTradeData->sXY = 0x100;
+ sTradeData->unk_EA = 0x80;
+ sTradeData->unk_DC = 0x78;
+ sTradeData->unk_DE = 0x50;
+ sTradeData->unk_EC = 0;
DmaCopyLarge16(3, gUnknown_826701C, BG_CHAR_ADDR(1), 0x2840, 0x1000);
- if (sTradeAnimationResourcesPtr->unk_108)
+ if (sTradeData->isCableTrade)
{
DmaCopy16Defvars(3, gUnknown_826985C, (void *)BG_SCREEN_ADDR(18), 0x100);
}
@@ -4658,8 +4696,8 @@ void sub_8050968(u8 state)
}
break;
case 7:
- sTradeAnimationResourcesPtr->bg2vofs = 0;
- sTradeAnimationResourcesPtr->bg2hofs = 0;
+ sTradeData->bg2vofs = 0;
+ sTradeData->bg2hofs = 0;
SetGpuReg(REG_OFFSET_BLDCNT, 0);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_TXT512x256);
LoadPalette(gTradeGba2_Pal, 0x10, 0x60);
@@ -4668,3 +4706,543 @@ void sub_8050968(u8 state)
break;
}
}
+
+void sub_8050DE0(void)
+{
+ LoadSpriteSheet(&gUnknown_826CE2C);
+ LoadSpriteSheet(&gUnknown_826CE7C);
+ LoadSpriteSheet(&gUnknown_826CEB0);
+ LoadSpriteSheet(&gUnknown_826CF28);
+ LoadSpritePalette(&gUnknown_826CE34);
+ LoadSpritePalette(&gUnknown_826CE3C);
+}
+
+void sub_8050E24(void)
+{
+ u8 nickname[20];
+ u8 mpId;
+ const struct InGameTrade * inGameTrade;
+ if (sTradeData->isLinkTrade)
+ {
+ mpId = GetMultiplayerId();
+ StringCopy(gStringVar1, gLinkPlayers[mpId ^ 1].name);
+ GetMonData(&gEnemyParty[gSelectedTradeMonPositions[1] % 6], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar3, nickname);
+ GetMonData(&gPlayerParty[gSelectedTradeMonPositions[0]], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar2, nickname);
+ }
+ else
+ {
+ inGameTrade = &gIngameTrades[gSpecialVar_0x8004];
+ StringCopy(gStringVar1, inGameTrade->otName);
+ StringCopy10(gStringVar3, inGameTrade->nickname);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar2, nickname);
+ }
+}
+
+bool8 sub_8050F14(void)
+{
+ if (sTradeData->isCableTrade)
+ return sub_8050F3C();
+ else
+ return sub_805232C();
+}
+
+
+bool8 sub_8050F3C(void)
+{
+ u16 evoTarget;
+
+ switch (sTradeData->state)
+ {
+ case 0:
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = FALSE;
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x = -180;
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y = gMonFrontPicCoords[sTradeData->tradeSpecies[0]].y_offset;
+ sTradeData->state++;
+ sTradeData->cachedMapMusic = GetCurrentMapMusic();
+ PlayNewMapMusic(MUS_SHINKA);
+ break;
+ case 1:
+ if (sTradeData->bg2hofs > 0)
+ {
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x += 3;
+ sTradeData->bg2hofs -= 3;
+ }
+ else
+ {
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.x = 0;
+ sTradeData->bg2hofs = 0;
+ sTradeData->state = 10;
+ }
+ break;
+ case 10:
+ StringExpandPlaceholders(gStringVar4, gText_XWillBeSentToY);
+ DrawTextOnTradeWindow(0, gStringVar4, 0);
+
+ if (sTradeData->tradeSpecies[0] != SPECIES_EGG)
+ {
+ PlayCry1(sTradeData->tradeSpecies[0], 0);
+ }
+
+ sTradeData->state = 11;
+ sTradeData->timer = 0;
+ break;
+ case 11:
+ if (++sTradeData->timer == 80)
+ {
+ sTradeData->pokeballSpriteId = CreateTradePokeballSprite(sTradeData->pokePicSpriteIdxs[0], gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.paletteNum, 120, 32, 2, 1, 0x14, 0xfffff);
+ sTradeData->state++;
+ StringExpandPlaceholders(gStringVar4, gText_ByeByeVar1);
+ DrawTextOnTradeWindow(0, gStringVar4, 0);
+ }
+ break;
+ case 12:
+ if (gSprites[sTradeData->pokeballSpriteId].callback == SpriteCallbackDummy)
+ {
+ sTradeData->unk_D3 = CreateSprite(&sTradePokeballSpriteTemplate, 120, 32, 0);
+ gSprites[sTradeData->unk_D3].callback = SpriteCB_TradePokeball_Outbound;
+ DestroySprite(&gSprites[sTradeData->pokeballSpriteId]);
+ sTradeData->state++;
+ }
+ break;
+ case 13:
+ // The game waits here for the sprite to finish its animation sequence.
+ break;
+ case 14:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sTradeData->state = 20;
+ break;
+ case 20:
+ if (!gPaletteFade.active)
+ {
+ SetTradeSequenceBgGpuRegs(4);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
+ CopyWindowToVram(0, 3);
+ sTradeData->state++;
+ }
+ break;
+ case 21:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ sTradeData->state++;
+ break;
+ case 22:
+ if (!gPaletteFade.active)
+ {
+ sTradeData->state = 23;
+ }
+ break;
+ case 23:
+ if (sTradeData->unk_EA > 0x100)
+ {
+ sTradeData->unk_EA -= 0x34;
+ }
+ else
+ {
+ SetTradeSequenceBgGpuRegs(1);
+ sTradeData->unk_EA = 0x80;
+ sTradeData->state++;
+ sTradeData->timer = 0;
+ }
+ sTradeData->sXY = 0x8000 / sTradeData->unk_EA;
+ break;
+ case 24:
+ if (++sTradeData->timer > 20)
+ {
+ SetTradeBGAffine();
+ sTradeData->unk_91 = CreateSprite(&gUnknown_826CF30, 120, 80, 0);
+ sTradeData->state++;
+ }
+ break;
+ case 25:
+ if (gSprites[sTradeData->unk_91].animEnded)
+ {
+ DestroySprite(&gSprites[sTradeData->unk_91]);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND |
+ BLDCNT_TGT2_BG1 |
+ BLDCNT_TGT2_BG2);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(12, 4));
+ sTradeData->state++;
+ }
+ break;
+ case 26:
+ if (--sTradeData->bg1vofs == 316)
+ {
+ sTradeData->state++;
+ }
+ if (sTradeData->bg1vofs == 328)
+ {
+ sTradeData->unk_92 = CreateSprite(&sGameLinkCableEndSpriteTemplate, 128, 65, 0);
+ }
+ break;
+ case 27:
+ sTradeData->unk_90 = CreateSprite(&gUnknown_826CE44, 128, 80, 3);
+ sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 128, 80, 0);
+ StartSpriteAnim(&gSprites[sTradeData->unk_91], 1);
+ sTradeData->state++;
+ break;
+ case 28:
+ if ((sTradeData->bg1vofs -= 2) == 166)
+ {
+ sTradeData->state = 200;
+ }
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 |
+ DISPCNT_OBJ_1D_MAP |
+ DISPCNT_BG1_ON |
+ DISPCNT_OBJ_ON);
+ break;
+ case 200:
+ gSprites[sTradeData->unk_90].pos1.y -= 2;
+ gSprites[sTradeData->unk_91].pos1.y -= 2;
+ if (gSprites[sTradeData->unk_90].pos1.y < -8)
+ {
+ sTradeData->state = 29;
+ }
+ break;
+ case 29:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+ sTradeData->state = 30;
+ break;
+ case 30:
+ if (!gPaletteFade.active)
+ {
+ DestroySprite(&gSprites[sTradeData->unk_90]);
+ DestroySprite(&gSprites[sTradeData->unk_91]);
+ SetTradeSequenceBgGpuRegs(2);
+ sTradeData->state++;
+ }
+ break;
+ case 31:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ sTradeData->unk_90 = CreateSprite(&sGlowBallSpriteTemplate, 111, 170, 0);
+ sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 129, -10, 0);
+ sTradeData->state++;
+ break;
+ case 32:
+ if (!gPaletteFade.active)
+ {
+ PlaySE(SE_TK_WARPOUT);
+ sTradeData->state++;
+ }
+ gSprites[sTradeData->unk_90].pos2.y -= 3;
+ gSprites[sTradeData->unk_91].pos2.y += 3;
+ break;
+ case 33:
+ gSprites[sTradeData->unk_90].pos2.y -= 3;
+ gSprites[sTradeData->unk_91].pos2.y += 3;
+ if (gSprites[sTradeData->unk_90].pos2.y <= -90)
+ {
+ gSprites[sTradeData->unk_90].data[1] = 1;
+ gSprites[sTradeData->unk_91].data[1] = 1;
+ sTradeData->state++;
+ }
+ break;
+ case 34:
+ BlendPalettes(0x1, 16, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 35:
+ BlendPalettes(0x1, 0, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 36:
+ BlendPalettes(0x1, 16, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 37:
+ if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0]))
+ {
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = gUnknown_826CF88;
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].oam.affineMode = 3;
+ CalcCenterToCornerVec(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0, 3, 3);
+ StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0);
+ }
+ else
+ {
+ StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[0]], 0);
+ }
+ StartSpriteAffineAnim(&gSprites[sTradeData->pokePicSpriteIdxs[1]], 0);
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].pos1.x = 60;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 180;
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].pos1.y = 192;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.y = -32;
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = FALSE;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = FALSE;
+ sTradeData->state++;
+ break;
+ case 38:
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y -= 3;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.y += 3;
+ if (gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y < -160 && gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y >= -163)
+ {
+ PlaySE(SE_TK_WARPIN);
+ }
+ if (gSprites[sTradeData->pokePicSpriteIdxs[0]].pos2.y < -222)
+ {
+ gSprites[sTradeData->unk_90].data[1] = 0;
+ gSprites[sTradeData->unk_91].data[1] = 0;
+ sTradeData->state++;
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = TRUE;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = TRUE;
+ BlendPalettes(0x1, 0, RGB_WHITEALPHA);
+ }
+ break;
+ case 39:
+ gSprites[sTradeData->unk_90].pos2.y -= 3;
+ gSprites[sTradeData->unk_91].pos2.y += 3;
+ if (gSprites[sTradeData->unk_90].pos2.y <= -222)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+ sTradeData->state++;
+ DestroySprite(&gSprites[sTradeData->unk_90]);
+ DestroySprite(&gSprites[sTradeData->unk_91]);
+ }
+ break;
+ case 40:
+ if (!gPaletteFade.active)
+ {
+ sTradeData->state++;
+ SetTradeSequenceBgGpuRegs(1);
+ sTradeData->bg1vofs = 166;
+ sTradeData->unk_90 = CreateSprite(&gUnknown_826CE44, 128, -20, 3);
+ sTradeData->unk_91 = CreateSprite(&sGlowBallSpriteTemplate, 128, -20, 0);
+ StartSpriteAnim(&gSprites[sTradeData->unk_91], 1);
+ }
+ break;
+ case 41:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ sTradeData->state++;
+ break;
+ case 42:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
+ DISPCNT_OBJ_1D_MAP |
+ DISPCNT_BG1_ON |
+ DISPCNT_OBJ_ON);
+ if (!gPaletteFade.active)
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 43:
+ gSprites[sTradeData->unk_90].pos2.y += 3;
+ gSprites[sTradeData->unk_91].pos2.y += 3;
+ if (gSprites[sTradeData->unk_90].pos2.y + gSprites[sTradeData->unk_90].pos1.y == 64)
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 44:
+ if ((sTradeData->bg1vofs += 2) > 316)
+ {
+ sTradeData->bg1vofs = 316;
+ sTradeData->state++;
+ }
+ break;
+ case 45:
+ DestroySprite(&gSprites[sTradeData->unk_90]);
+ DestroySprite(&gSprites[sTradeData->unk_91]);
+ sTradeData->state++;
+ sTradeData->timer = 0;
+ break;
+ case 46:
+ if (++sTradeData->timer == 10)
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 47:
+ if (++sTradeData->bg1vofs > 348)
+ {
+ sTradeData->bg1vofs = 348;
+ sTradeData->state++;
+ }
+ if (sTradeData->bg1vofs == 328 && sTradeData->isCableTrade)
+ {
+ sTradeData->unk_92 = CreateSprite(&sGameLinkCableEndSpriteTemplate, 128, 65, 0);
+ gSprites[sTradeData->unk_92].callback = SpriteCB_GameLinkCableEnd_Inbound;
+ }
+ break;
+ case 48:
+ sTradeData->unk_91 = CreateSprite(&gUnknown_826CF30, 120, 80, 0);
+ sTradeData->state = 50;
+ break;
+ case 50:
+ if (gSprites[sTradeData->unk_91].animEnded)
+ {
+ DestroySprite(&gSprites[sTradeData->unk_91]);
+ SetTradeSequenceBgGpuRegs(6);
+ sTradeData->state++;
+ PlaySE(SE_W028);
+ }
+ break;
+ case 51:
+ if (sTradeData->unk_EA < 0x400)
+ {
+ sTradeData->unk_EA += 0x34;
+ }
+ else
+ {
+ sTradeData->unk_EA = 0x400;
+ sTradeData->state++;
+ }
+ sTradeData->sXY = 0x8000 / sTradeData->unk_EA;
+ break;
+ case 52:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sTradeData->state = 60;
+ break;
+
+ case 60:
+ if (!gPaletteFade.active)
+ {
+ SetTradeSequenceBgGpuRegs(5);
+ SetTradeSequenceBgGpuRegs(7);
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ sTradeData->state++;
+ }
+ break;
+ case 61:
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ sTradeData->state++;
+ break;
+ case 62:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
+ DISPCNT_OBJ_1D_MAP |
+ DISPCNT_BG2_ON |
+ DISPCNT_OBJ_ON);
+ if (!gPaletteFade.active)
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 63:
+ sTradeData->unk_D3 = CreateSprite(&sTradePokeballSpriteTemplate, 120, -8, 0);
+ gSprites[sTradeData->unk_D3].data[3] = 74;
+ gSprites[sTradeData->unk_D3].callback = SpriteCB_TradePokeball_Inbound;
+ StartSpriteAnim(&gSprites[sTradeData->unk_D3], 1);
+ StartSpriteAffineAnim(&gSprites[sTradeData->unk_D3], 2);
+ BlendPalettes(1 << (16 + gSprites[sTradeData->unk_D3].oam.paletteNum), 16, RGB_WHITEALPHA);
+ sTradeData->state++;
+ sTradeData->timer = 0;
+ break;
+ case 64:
+ BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->unk_D3].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 65:
+ if (gSprites[sTradeData->unk_D3].callback == SpriteCallbackDummy)
+ {
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[sTradeData->tradeSpecies[1]], gMonSpritesGfxPtr->sprites[3], sTradeData->tradeSpecies[1], sTradeData->monPersonalities[1]);
+ sTradeData->state++;
+ }
+ break;
+ case 66:
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 120;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.y = gMonFrontPicCoords[sTradeData->tradeSpecies[1]].y_offset + 60;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.x = 0;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].pos2.y = 0;
+ StartSpriteAnim(&gSprites[sTradeData->pokePicSpriteIdxs[1]], 0);
+ CreatePokeballSpriteToReleaseMon(sTradeData->pokePicSpriteIdxs[1], gSprites[sTradeData->pokePicSpriteIdxs[1]].oam.paletteNum, 120, 84, 2, 1, 20, 0xFFFFF);
+ FreeSpriteOamMatrix(&gSprites[sTradeData->unk_D3]);
+ DestroySprite(&gSprites[sTradeData->unk_D3]);
+ sTradeData->state++;
+ break;
+ case 67:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
+ DISPCNT_OBJ_1D_MAP |
+ DISPCNT_BG0_ON |
+ DISPCNT_BG2_ON |
+ DISPCNT_OBJ_ON);
+ StringExpandPlaceholders(gStringVar4, gText_XSentOverY);
+ DrawTextOnTradeWindow(0, gStringVar4, 0);
+ sTradeData->state = 167;
+ sTradeData->timer = 0;
+ break;
+ // 167 and 267 are extra cases added in for animations
+ case 167:
+ if (++sTradeData->timer > 60)
+ {
+ if (sTradeData->tradeSpecies[1] != SPECIES_EGG)
+ {
+ PlayCry1(sTradeData->tradeSpecies[1], 0);
+ }
+ sTradeData->state = 267;
+ sTradeData->timer = 0;
+ }
+ break;
+ case 267:
+ if (IsCryFinished())
+ {
+ sTradeData->state = 68;
+ }
+ break;
+ case 68:
+ if (++sTradeData->timer == 10)
+ {
+ PlayFanfare(MUS_FANFA5);
+ }
+ if (sTradeData->timer == 250)
+ {
+ sTradeData->state++;
+ StringExpandPlaceholders(gStringVar4, gText_TakeGoodCareOfX);
+ DrawTextOnTradeWindow(0, gStringVar4, 0);
+ sTradeData->timer = 0;
+ }
+ break;
+ case 69:
+ if (++sTradeData->timer == 60)
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 70:
+ CheckPartnersMonForRibbons();
+ sTradeData->state++;
+ break;
+ case 71:
+ if (sTradeData->isLinkTrade)
+ {
+ return TRUE;
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 72: // Only if in-game trade
+ TradeMons(gSpecialVar_0x8005, 0);
+ gCB2_AfterEvolution = CB2_RunTradeAnim_InGameTrade;
+ evoTarget = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], TRUE, ITEM_NONE);
+ if (evoTarget != SPECIES_NONE)
+ {
+ TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoTarget, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]);
+ }
+ sTradeData->state++;
+ break;
+ case 73:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sTradeData->state++;
+ break;
+ case 74:
+ if (!gPaletteFade.active)
+ {
+ PlayNewMapMusic(sTradeData->cachedMapMusic);
+ if (sTradeData)
+ {
+ FreeAllWindowBuffers();
+ Free(GetBgTilemapBuffer(3));
+ Free(GetBgTilemapBuffer(1));
+ Free(GetBgTilemapBuffer(0));
+ FreeMonSpritesGfx();
+ FREE_AND_SET_NULL(sTradeData);
+ }
+ SetMainCallback2(CB2_ReturnToField);
+ BufferInGameTradeMonName();
+ HelpSystem_Enable();
+ }
+ break;
+ }
+ return FALSE;
+}