diff options
author | PikalaxALT <PikalaxALT@gmail.com> | 2019-10-29 21:29:10 -0400 |
---|---|---|
committer | PikalaxALT <PikalaxALT@gmail.com> | 2019-10-29 21:29:10 -0400 |
commit | e7a66b294169572a70c65b7223ae16810e9a49a3 (patch) | |
tree | 3a70ce34b5a66f14a069a3ade9befc57109c1ec8 | |
parent | e9592bee5d1aa74a39e8879d52c0e5f105bef9c1 (diff) |
port sub_8050F3C
-rw-r--r-- | asm/cable_club.s | 8 | ||||
-rw-r--r-- | asm/evolution_scene.s | 32 | ||||
-rw-r--r-- | asm/link_rfu_3.s | 4 | ||||
-rw-r--r-- | asm/pokeball.s | 6 | ||||
-rw-r--r-- | asm/trade.s | 2596 | ||||
-rw-r--r-- | data/strings.s | 8 | ||||
-rw-r--r-- | data/trade.s | 2 | ||||
-rw-r--r-- | include/gba/defines.h | 1 | ||||
-rw-r--r-- | include/pokeball.h | 2 | ||||
-rw-r--r-- | include/strings.h | 4 | ||||
-rw-r--r-- | src/oak_speech.c | 2 | ||||
-rw-r--r-- | src/trade.c | 810 |
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; +} |