summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@users.noreply.github.com>2019-10-31 09:31:33 -0400
committerGitHub <noreply@github.com>2019-10-31 09:31:33 -0400
commitc6cd74fed25cbb6e2fa0296960fbcda795311b06 (patch)
tree05ae3de2bc0130040d48e800fe4e962f2a818aef
parent922411abebd56d0f5d6072bad4924c909c8e2c27 (diff)
parent2b0bcdcad9336defc82f50a329b12e631b1f33ce (diff)
Merge pull request #120 from PikalaxALT/trade
Trade
-rw-r--r--.gitignore1
-rw-r--r--asm/battle_tower.s4
-rw-r--r--asm/cable_club.s12
-rw-r--r--asm/evolution_scene.s34
-rw-r--r--asm/link_rfu_3.s14
-rw-r--r--asm/party_menu.s32
-rw-r--r--asm/pokeball.s6
-rw-r--r--asm/pokemon_storage_system.s12
-rw-r--r--asm/pokemon_summary_screen.s10
-rw-r--r--asm/trade.s15329
-rw-r--r--asm/union_room_chat.s4
-rw-r--r--baserom.ipsbin553618 -> 537206 bytes
-rw-r--r--constants/constants.inc2
-rw-r--r--constants/trainer_constants.inc243
-rw-r--r--data/data_83FECCC.s10
-rw-r--r--data/graphics.s26
-rw-r--r--data/ingame_trades.inc174
-rw-r--r--data/strings.s41
-rw-r--r--data/trade.s997
-rw-r--r--data/trade/unk_8264C1C.pngbin203 -> 0 bytes
-rw-r--r--data/trade/unk_8264E1C.pngbin205 -> 0 bytes
-rw-r--r--data/trade/unk_826501C.pngbin183 -> 0 bytes
-rw-r--r--data/trade/unk_826701C.pngbin1833 -> 0 bytes
-rw-r--r--data/trade/unk_826C60C.binbin2048 -> 0 bytes
-rw-r--r--graphics/trade/ball.png (renamed from data/trade/unk_826207C.png)bin477 -> 464 bytes
-rw-r--r--graphics/trade/black.pal (renamed from data/trade/unk_826BF5C.pal)0
-rw-r--r--graphics/trade/buttons.pngbin0 -> 227 bytes
-rw-r--r--graphics/trade/cable_closeup_map.bin (renamed from data/trade/unk_826407C.bin)bin2048 -> 2048 bytes
-rw-r--r--graphics/trade/cable_end.pngbin0 -> 194 bytes
-rw-r--r--graphics/trade/gba.pal (renamed from data/trade/unk_826499C.pal)0
-rw-r--r--graphics/trade/gba_affine.pngbin0 -> 1897 bytes
-rw-r--r--graphics/trade/gba_affine_map_cable.bin (renamed from data/trade/unk_826985C.bin)bin256 -> 256 bytes
-rw-r--r--graphics/trade/gba_affine_map_wireless.bin (renamed from data/trade/unk_826995C.bin)bin256 -> 256 bytes
-rw-r--r--graphics/trade/gba_map_cable.bin (renamed from data/trade/unk_826AA5C.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/trade/gba_map_wireless.bin (renamed from data/trade/unk_8269A5C.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/trade/gba_screen.pngbin0 -> 170 bytes
-rw-r--r--graphics/trade/glow1.png (renamed from data/trade/unk_8264A1C.png)bin208 -> 195 bytes
-rw-r--r--graphics/trade/glow2.pngbin0 -> 190 bytes
-rw-r--r--graphics/trade/menu.pal51
-rw-r--r--graphics/trade/menu.pngbin0 -> 609 bytes
-rw-r--r--graphics/trade/menu_mon_box.binbin0 -> 36 bytes
-rw-r--r--graphics/trade/misc.pal19
-rw-r--r--graphics/trade/moves_box_map.bin (renamed from data/trade/unk_8260834.bin)bin510 -> 510 bytes
-rw-r--r--graphics/trade/party_box_map.bin (renamed from data/trade/unk_8260A32.bin)bin510 -> 510 bytes
-rw-r--r--graphics/trade/pokeball.pngbin0 -> 464 bytes
-rw-r--r--graphics/trade/pokeball_symbol.pngbin0 -> 1569 bytes
-rw-r--r--graphics/trade/pokeball_symbol_map.binbin0 -> 256 bytes
-rw-r--r--graphics/trade/shadow.pal19
-rw-r--r--graphics/trade/shadow_map.bin (renamed from data/trade/unk_826601C.bin)bin4096 -> 4096 bytes
-rw-r--r--graphics/trade/stripes_bg2_map.bin (renamed from data/trade/unk_8260C30.bin)0
-rw-r--r--graphics/trade/stripes_bg3_map.bin (renamed from data/trade/unk_8261430.bin)0
-rw-r--r--graphics/trade/text.pal (renamed from data/trade/unk_8261CE0.pal)0
-rw-r--r--graphics/trade/unknown_3308C0.pal19
-rw-r--r--graphics/trade/unknown_338EA4.pal15
-rw-r--r--graphics/trade/unknown_DDB444.pal19
-rw-r--r--graphics/trade/unknown_DDCF04.binbin0 -> 2048 bytes
-rw-r--r--graphics/trade/wireless_signal_receive.pal (renamed from data/trade/unk_826BD5C.pal)0
-rw-r--r--graphics/trade/wireless_signal_send.pal (renamed from data/trade/unk_826BB5C.pal)0
-rw-r--r--graphics/unused/unused_DDCEE4.binbin0 -> 32 bytes
-rw-r--r--include/berry_powder.h1
-rw-r--r--include/constants/flags.h8
-rw-r--r--include/constants/region_map.h2
-rw-r--r--include/decompress.h2
-rw-r--r--include/gba/defines.h1
-rw-r--r--include/graphics.h8
-rw-r--r--include/international_string_util.h25
-rw-r--r--include/item.h2
-rw-r--r--include/link.h8
-rw-r--r--include/link_rfu.h2
-rw-r--r--include/load_save.h4
-rw-r--r--include/mevent.h1
-rw-r--r--include/overworld.h3
-rw-r--r--include/party_menu.h2
-rw-r--r--include/pokeball.h2
-rw-r--r--include/pokemon_icon.h11
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--include/pokemon_summary_screen.h4
-rw-r--r--include/quest_log.h1
-rw-r--r--include/save_failed_screen.h6
-rw-r--r--include/strings.h26
-rw-r--r--include/trade.h5
-rw-r--r--include/trade_scene.h17
-rw-r--r--include/util.h3
-rw-r--r--ld_script.txt6
-rw-r--r--src/battle_main.c1
-rw-r--r--src/data/ingame_trades.h144
-rw-r--r--src/daycare.c8
-rw-r--r--src/load_save.c15
-rw-r--r--src/oak_speech.c2
-rw-r--r--src/pokemon.c8
-rw-r--r--src/random.c6
-rw-r--r--src/save.c13
-rw-r--r--src/start_menu.c4
-rw-r--r--src/trade.c4502
-rw-r--r--src/trade_scene.c2874
-rw-r--r--sym_bss.txt7
-rw-r--r--sym_ewram.txt69
97 files changed, 7909 insertions, 16988 deletions
diff --git a/.gitignore b/.gitignore
index 359d15abf..176611d4a 100644
--- a/.gitignore
+++ b/.gitignore
@@ -50,3 +50,4 @@ tools/br_ips/ips_patch
types_*.taghl
!.travis/calcrom/calcrom.pl
!sound/programmable_wave_samples/*.pcm
+_Deparsed_XSubs.pm
diff --git a/asm/battle_tower.s b/asm/battle_tower.s
index eddc03f83..fe6aac664 100644
--- a/asm/battle_tower.s
+++ b/asm/battle_tower.s
@@ -2832,7 +2832,7 @@ _080E6F68:
ldrb r1, [r0]
movs r0, 0x64
muls r0, r1
- ldr r1, _080E6FB4 @ =gUnknown_2024220
+ ldr r1, _080E6FB4 @ =gEnemyParty + 500 @ &gEnemyParty[5]
adds r0, r1
movs r1, 0x2C
muls r1, r4
@@ -2855,7 +2855,7 @@ _080E6FA4: .4byte gSaveBlock2Ptr
_080E6FA8: .4byte gSaveBlock1Ptr
_080E6FAC: .4byte 0x00002cac
_080E6FB0: .4byte 0x0000056d
-_080E6FB4: .4byte gUnknown_2024220
+_080E6FB4: .4byte gEnemyParty + 500 @ &gEnemyParty[5]
thumb_func_end sub_80E6EE0
thumb_func_start SaveBattleTowerProgress
diff --git a/asm/cable_club.s b/asm/cable_club.s
index 01aa8d217..d19bb3a35 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,13 +2205,13 @@ _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]
cmp r0, 0
bne _080818D8
- ldr r0, _080818E4 @ =sub_804C718
+ ldr r0, _080818E4 @ =CB2_ReturnFromLinkTrade
bl SetMainCallback2
adds r0, r5, 0
bl DestroyTask
@@ -2221,7 +2221,7 @@ _080818D8:
bx r0
.align 2, 0
_080818E0: .4byte gReceivedRemoteLinkPlayers
-_080818E4: .4byte sub_804C718
+_080818E4: .4byte CB2_ReturnFromLinkTrade
thumb_func_end sub_8081850
thumb_func_start sub_80818E8
@@ -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..dac85320e 100644
--- a/asm/evolution_scene.s
+++ b/asm/evolution_scene.s
@@ -738,7 +738,7 @@ _080CE3D8: .4byte nullsub_76
_080CE3DC: .4byte sub_80D00D8
_080CE3E0: .4byte gMain
_080CE3E4:
- bl sub_80544FC
+ bl LoadTradeAnimGfx
b _080CE4EC
_080CE3EA:
movs r0, 0x20
@@ -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 9fc1f72cc..63a894247 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -2939,7 +2939,7 @@ sub_8117100: @ 8117100
adds r4, r0, 0
lsls r4, 24
lsrs r4, 24
- bl sub_804C718
+ bl CB2_ReturnFromLinkTrade
adds r0, r4, 0
bl DestroyTask
pop {r4}
@@ -3070,7 +3070,7 @@ _08117210:
lsrs r0, 24
cmp r0, 0x3
bne _0811725C
- ldr r4, _08117268 @ =gUnknown_2031CCC
+ ldr r4, _08117268 @ =gLinkPartnerMail
bl GetMultiplayerId
adds r1, r0, 0
movs r0, 0x1
@@ -3083,14 +3083,14 @@ _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]
ldr r1, _08117274 @ =gMain
ldr r0, _08117278 @ =CB2_ReturnToField
str r0, [r1, 0x8]
- ldr r0, _0811727C @ =sub_8050138
+ ldr r0, _0811727C @ =CB2_InitTradeAnim_LinkTrade
bl SetMainCallback2
mov r0, r8
bl sub_811B148
@@ -3103,12 +3103,12 @@ _0811725C:
pop {r0}
bx r0
.align 2, 0
-_08117268: .4byte gUnknown_2031CCC
+_08117268: .4byte gLinkPartnerMail
_0811726C: .4byte gBlockRecvBuffer
-_08117270: .4byte gUnknown_2031DA4
+_08117270: .4byte gSelectedTradeMonPositions
_08117274: .4byte gMain
_08117278: .4byte CB2_ReturnToField
-_0811727C: .4byte sub_8050138
+_0811727C: .4byte CB2_InitTradeAnim_LinkTrade
thumb_func_end sub_8117130
thumb_func_start sub_8117280
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 25befd61d..43a7a6e31 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -364,7 +364,7 @@ _0811ED14:
_0811ED30: .4byte gUnknown_203B0A0
_0811ED34: .4byte gUnknown_203B09C
_0811ED38:
- bl sub_8122550
+ bl LoadHeldItemIcons
b _0811EDFC
_0811ED3E:
bl sub_8122860
@@ -3033,7 +3033,7 @@ _081201C0:
lsrs r6, r0, 29
cmp r6, 0x3
bne _081201F0
- ldr r0, _081201EC @ =gUnknown_20243B0
+ ldr r0, _081201EC @ =gPlayerParty + 300 @ &gPlayerParty[3]
movs r1, 0xB
bl GetMonData
cmp r0, 0
@@ -3042,12 +3042,12 @@ _081201C0:
b _08120290
.align 2, 0
_081201E8: .4byte gUnknown_203B09C
-_081201EC: .4byte gUnknown_20243B0
+_081201EC: .4byte gPlayerParty + 300 @ &gPlayerParty[3]
_081201F0:
- ldr r0, _081201F4 @ =gUnknown_202434C
+ ldr r0, _081201F4 @ =gPlayerParty + 200 @ &gPlayerParty[2]
b _0812020C
.align 2, 0
-_081201F4: .4byte gUnknown_202434C
+_081201F4: .4byte gPlayerParty + 200 @ &gPlayerParty[2]
_081201F8:
cmp r0, 0x1
bne _08120290
@@ -3058,7 +3058,7 @@ _081201F8:
lsrs r5, r0, 29
cmp r5, 0x5
bne _08120224
- ldr r0, _08120220 @ =gUnknown_2024478
+ ldr r0, _08120220 @ =gPlayerParty + 500 @ &gPlayerParty[5]
_0812020C:
movs r1, 0xB
bl GetMonData
@@ -3068,9 +3068,9 @@ _0812020C:
b _08120290
.align 2, 0
_0812021C: .4byte gUnknown_203B09C
-_08120220: .4byte gUnknown_2024478
+_08120220: .4byte gPlayerParty + 500 @ &gPlayerParty[5]
_08120224:
- ldr r0, _08120234 @ =gUnknown_2024414
+ ldr r0, _08120234 @ =gPlayerParty + 400 @ &gPlayerParty[4]
movs r1, 0xB
bl GetMonData
cmp r0, 0
@@ -3078,7 +3078,7 @@ _08120224:
movs r0, 0x4
b _0812028E
.align 2, 0
-_08120234: .4byte gUnknown_2024414
+_08120234: .4byte gPlayerParty + 400 @ &gPlayerParty[4]
_08120238:
ldrb r1, [r4]
subs r0, r1, 0x2
@@ -7598,8 +7598,8 @@ _08122544:
_0812254C: .4byte gSprites
thumb_func_end sub_81224D0
- thumb_func_start sub_8122550
-sub_8122550: @ 8122550
+ thumb_func_start LoadHeldItemIcons
+LoadHeldItemIcons: @ 8122550
push {lr}
ldr r0, _08122564 @ =gUnknown_845A42C
bl LoadSpriteSheet
@@ -7610,7 +7610,7 @@ sub_8122550: @ 8122550
.align 2, 0
_08122564: .4byte gUnknown_845A42C
_08122568: .4byte gUnknown_845A434
- thumb_func_end sub_8122550
+ thumb_func_end LoadHeldItemIcons
thumb_func_start sub_812256C
sub_812256C: @ 812256C
@@ -8681,7 +8681,7 @@ _08122D8C:
ldr r3, _08122DB8 @ =sub_8122DBC
movs r4, 0
str r4, [sp]
- bl sub_81344F8
+ bl ShowPokemonSummaryScreen
add sp, 0x4
pop {r4}
pop {r0}
@@ -11407,7 +11407,7 @@ sub_8124384: @ 8124384
adds r1, r6, 0
adds r2, r5, 0
adds r3, r4, 0
- bl sub_804FCE0
+ bl Trade_CanTradeSelectedMon
cmp r0, 0x1
beq _08124418
cmp r0, 0x2
@@ -18129,7 +18129,7 @@ _08127A80: .4byte sub_811FB28
sub_8127A84: @ 8127A84
push {r4,lr}
adds r4, r0, 0
- ldr r0, _08127AA4 @ =gUnknown_20242E8
+ ldr r0, _08127AA4 @ =gPlayerParty + 100 @ &gPlayerParty[1]
movs r1, 0xB
bl GetMonData
cmp r0, 0
@@ -18143,7 +18143,7 @@ _08127AA0:
movs r0, 0x7
b _08127ABA
.align 2, 0
-_08127AA4: .4byte gUnknown_20242E8
+_08127AA4: .4byte gPlayerParty + 100 @ &gPlayerParty[1]
_08127AA8:
ldr r0, _08127AB4 @ =gUnknown_203B0A0
ldrb r0, [r0, 0xB]
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/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index ec0e9e53c..df7c4fbce 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -719,8 +719,8 @@ _0808BEA8:
bx r1
thumb_func_end sub_808BDE8
- thumb_func_start sub_808BEB4
-sub_808BEB4: @ 808BEB4
+ thumb_func_start PSS_RenderTextToVramViaBuffer
+PSS_RenderTextToVramViaBuffer: @ 808BEB4
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -868,7 +868,7 @@ _0808BFC4:
bx r0
.align 2, 0
_0808BFDC: .4byte 0x001fffff
- thumb_func_end sub_808BEB4
+ thumb_func_end PSS_RenderTextToVramViaBuffer
thumb_func_start sub_808BFE0
sub_808BFE0: @ 808BFE0
@@ -6561,7 +6561,7 @@ _0808EE78:
mov r0, r8
adds r1, r6, 0
adds r2, r5, 0
- bl sub_81344F8
+ bl ShowPokemonSummaryScreen
b _0808EEF6
.align 2, 0
_0808EEAC: .4byte gUnknown_20397B0
@@ -12353,7 +12353,7 @@ sub_8091A94: @ 8091A94
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl sub_808BEB4
+ bl PSS_RenderTextToVramViaBuffer
ldr r0, [sp, 0x30]
bl LoadSpriteSheet
mov r0, r8
@@ -12539,7 +12539,7 @@ _08091CFC:
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl sub_808BEB4
+ bl PSS_RenderTextToVramViaBuffer
adds r0, r6, 0
bl LoadSpriteSheet
ldr r0, [sp, 0x2C]
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 4c090a2d9..ceca3ed12 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_81344F8
-sub_81344F8: @ 81344F8
+ thumb_func_start ShowPokemonSummaryScreen
+ShowPokemonSummaryScreen: @ 81344F8
push {r4-r7,lr}
mov r7, r10
mov r6, r9
@@ -268,7 +268,7 @@ _08134728: .4byte 0x0000322c
_0813472C: .4byte 0x00003290
_08134730: .4byte 0x00003204
_08134734: .4byte sub_8135C34
- thumb_func_end sub_81344F8
+ thumb_func_end ShowPokemonSummaryScreen
thumb_func_start ShowSelectMovePokemonSummaryScreen
ShowSelectMovePokemonSummaryScreen: @ 8134738
@@ -283,7 +283,7 @@ ShowSelectMovePokemonSummaryScreen: @ 8134738
lsrs r5, 16
movs r4, 0x2
str r4, [sp]
- bl sub_81344F8
+ bl ShowPokemonSummaryScreen
ldr r0, _08134764 @ =gUnknown_203B140
ldr r0, [r0]
ldr r1, _08134768 @ =0x00003260
@@ -14091,7 +14091,7 @@ sub_813B854: @ 813B854
str r0, [sp]
movs r1, 0
movs r2, 0
- bl sub_81344F8
+ bl ShowPokemonSummaryScreen
add sp, 0x4
pop {r0}
bx r0
diff --git a/asm/trade.s b/asm/trade.s
deleted file mode 100644
index 6e5f333ae..000000000
--- a/asm/trade.s
+++ /dev/null
@@ -1,15329 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_804C600
-sub_804C600: @ 804C600
- push {r4,r5,lr}
- sub sp, 0xC
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- bl ResetTasks
- bl ResetPaletteFade
- ldr r2, _0804C6F8 @ =gPaletteFade
- ldrb r0, [r2, 0x8]
- movs r1, 0x80
- orrs r0, r1
- strb r0, [r2, 0x8]
- ldr r0, _0804C6FC @ =sub_804D4F8
- bl SetVBlankCallback
- ldr r4, _0804C700 @ =gTMCaseMainWindowPalette
- adds r0, r4, 0
- movs r1, 0xF0
- movs r2, 0x14
- bl LoadPalette
- adds r0, r4, 0
- movs r1, 0xD0
- movs r2, 0x14
- bl LoadPalette
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0804C704 @ =gUnknown_8261F1C
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r0, _0804C708 @ =gUnknown_2031DA8
- ldr r1, [r0]
- movs r0, 0x8F
- lsls r0, 4
- adds r1, r0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- ldr r0, _0804C70C @ =gUnknown_8261F2C
- bl InitWindows
- lsls r0, 16
- cmp r0, 0
- beq _0804C6F0
- bl DeactivateAllTextPrinters
- ldr r1, _0804C710 @ =gUnknown_3000E78
- ldr r2, _0804C714 @ =0x0000024e
- adds r0, r2, 0
- strh r0, [r1]
- movs r5, 0
-_0804C674:
- lsls r4, r5, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl ClearWindowTilemap
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r5, 0x1
- cmp r5, 0x11
- bls _0804C674
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect
- movs r0, 0
- movs r1, 0x14
- movs r2, 0xC0
- bl TextWindow_SetStdFrame0_WithPal
- movs r0, 0x2
- movs r1, 0x1
- movs r2, 0xE0
- bl TextWindow_SetUserSelectedFrame
- bl LoadMonIconPalettes
- ldr r2, _0804C708 @ =gUnknown_2031DA8
- ldr r0, [r2]
- adds r0, 0x69
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x6F
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x70
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x74
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x75
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x7A
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x7B
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0xA8
- strb r1, [r0]
-_0804C6F0:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804C6F8: .4byte gPaletteFade
-_0804C6FC: .4byte sub_804D4F8
-_0804C700: .4byte gTMCaseMainWindowPalette
-_0804C704: .4byte gUnknown_8261F1C
-_0804C708: .4byte gUnknown_2031DA8
-_0804C70C: .4byte gUnknown_8261F2C
-_0804C710: .4byte gUnknown_3000E78
-_0804C714: .4byte 0x0000024e
- thumb_func_end sub_804C600
-
- thumb_func_start sub_804C718
-sub_804C718: @ 804C718
- push {lr}
- ldr r0, _0804C724 @ =sub_804C728
- bl SetMainCallback2
- pop {r0}
- bx r0
- .align 2, 0
-_0804C724: .4byte sub_804C728
- thumb_func_end sub_804C718
-
- thumb_func_start sub_804C728
-sub_804C728: @ 804C728
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x28
- ldr r1, _0804C74C @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r3, r1, 0
- cmp r0, 0x16
- bls _0804C742
- b _0804CEE6
-_0804C742:
- lsls r0, 2
- ldr r1, _0804C750 @ =_0804C754
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804C74C: .4byte gMain
-_0804C750: .4byte _0804C754
- .align 2, 0
-_0804C754:
- .4byte _0804C7B0
- .4byte _0804C7FC
- .4byte _0804C8C8
- .4byte _0804C8F4
- .4byte _0804C950
- .4byte _0804C9B0
- .4byte _0804C9F0
- .4byte _0804CA10
- .4byte _0804CB50
- .4byte _0804CB78
- .4byte _0804CB9C
- .4byte _0804CC30
- .4byte _0804CC3E
- .4byte _0804CD10
- .4byte _0804CDE0
- .4byte _0804CE20
- .4byte _0804CE3A
- .4byte _0804CE48
- .4byte _0804CE5C
- .4byte _0804CE7C
- .4byte _0804CE9C
- .4byte _0804CEB0
- .4byte _0804CED0
-_0804C7B0:
- ldr r4, _0804C7E8 @ =gUnknown_2031DA8
- ldr r0, _0804C7EC @ =0x000010f0
- bl AllocZeroed
- str r0, [r4]
- bl sub_804C600
- ldr r4, _0804C7F0 @ =gUnknown_2031C90
- movs r0, 0xE0
- lsls r0, 4
- bl AllocZeroed
- str r0, [r4]
- movs r6, 0
- ldr r2, _0804C7F4 @ =gUnknown_2031C94
-_0804C7CE:
- lsls r1, r6, 8
- ldr r0, [r4]
- adds r0, r1
- stm r2!, {r0}
- adds r6, 0x1
- cmp r6, 0xD
- ble _0804C7CE
- ldr r1, _0804C7F8 @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804CEC2
- .align 2, 0
-_0804C7E8: .4byte gUnknown_2031DA8
-_0804C7EC: .4byte 0x000010f0
-_0804C7F0: .4byte gUnknown_2031C90
-_0804C7F4: .4byte gUnknown_2031C94
-_0804C7F8: .4byte gMain
-_0804C7FC:
- ldr r2, _0804C864 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- movs r6, 0
- movs r4, 0
-_0804C80A:
- movs r0, 0x64
- muls r0, r6
- ldr r1, _0804C868 @ =gEnemyParty
- adds r0, r1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- str r4, [sp, 0xC]
- movs r1, 0
- movs r2, 0
- movs r3, 0x20
- bl CreateMon
- adds r6, 0x1
- cmp r6, 0x5
- ble _0804C80A
- movs r0, 0
- bl sub_804F5BC
- movs r0, 0
- bl ShowBg
- ldr r0, _0804C86C @ =gReceivedRemoteLinkPlayers
- ldrb r2, [r0]
- cmp r2, 0
- bne _0804C8B4
- ldr r1, _0804C870 @ =gLinkType
- ldr r5, _0804C874 @ =0x00001122
- adds r0, r5, 0
- strh r0, [r1]
- ldr r0, _0804C878 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0xA8
- strb r2, [r0]
- ldr r0, _0804C87C @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804C880
- bl sub_800B1F4
- bl OpenLink
- bl sub_80FBB20
- b _0804C892
- .align 2, 0
-_0804C864: .4byte gPaletteFade
-_0804C868: .4byte gEnemyParty
-_0804C86C: .4byte gReceivedRemoteLinkPlayers
-_0804C870: .4byte gLinkType
-_0804C874: .4byte 0x00001122
-_0804C878: .4byte gUnknown_2031DA8
-_0804C87C: .4byte gWirelessCommType
-_0804C880:
- bl OpenLink
- ldr r1, _0804C8A8 @ =gMain
- movs r7, 0x87
- lsls r7, 3
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804C892:
- ldr r0, _0804C8AC @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804C89C
- b _0804CEE6
-_0804C89C:
- ldr r0, _0804C8B0 @ =sub_8081A90
- movs r1, 0x1
- bl CreateTask
- b _0804CEE6
- .align 2, 0
-_0804C8A8: .4byte gMain
-_0804C8AC: .4byte gWirelessCommType
-_0804C8B0: .4byte sub_8081A90
-_0804C8B4:
- ldr r0, _0804C8C4 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- b _0804CEE6
- .align 2, 0
-_0804C8C4: .4byte gMain
-_0804C8C8:
- ldr r2, _0804C8F0 @ =gUnknown_2031DA8
- ldr r1, [r2]
- adds r1, 0xA8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0xA8
- ldrb r0, [r1]
- cmp r0, 0xB
- bhi _0804C8E2
- b _0804CEE6
-_0804C8E2:
- movs r0, 0
- strb r0, [r1]
- movs r2, 0x87
- lsls r2, 3
- adds r1, r3, r2
- b _0804CEC2
- .align 2, 0
-_0804C8F0: .4byte gUnknown_2031DA8
-_0804C8F4:
- bl GetLinkPlayerCount_2
- adds r4, r0, 0
- bl GetSavedPlayerCount
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bcs _0804C908
- b _0804CEE6
-_0804C908:
- bl IsLinkMaster
- lsls r0, 24
- cmp r0, 0
- beq _0804C940
- ldr r0, _0804C938 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r1, 0xA8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1E
- bhi _0804C928
- b _0804CEE6
-_0804C928:
- bl CheckShouldAdvanceLinkState
- ldr r1, _0804C93C @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804CEC2
- .align 2, 0
-_0804C938: .4byte gUnknown_2031DA8
-_0804C93C: .4byte gMain
-_0804C940:
- ldr r1, _0804C94C @ =gMain
- movs r5, 0x87
- lsls r5, 3
- adds r1, r5
- b _0804CEC2
- .align 2, 0
-_0804C94C: .4byte gMain
-_0804C950:
- ldr r0, _0804C9A0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0804C95A
- b _0804CEE6
-_0804C95A:
- bl IsLinkPlayerDataExchangeComplete
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0804C968
- b _0804CEE6
-_0804C968:
- bl sub_80FBB4C
- bl CalculatePlayerPartyCount
- ldr r1, _0804C9A4 @ =gMain
- movs r7, 0x87
- lsls r7, 3
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _0804C9A8 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0xA8
- strb r2, [r0]
- ldr r0, _0804C9AC @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804C992
- b _0804CEE6
-_0804C992:
- movs r0, 0x1
- bl sub_80FA484
- bl sub_800AB9C
- b _0804CEE6
- .align 2, 0
-_0804C9A0: .4byte gReceivedRemoteLinkPlayers
-_0804C9A4: .4byte gMain
-_0804C9A8: .4byte gUnknown_2031DA8
-_0804C9AC: .4byte gWirelessCommType
-_0804C9B0:
- ldr r0, _0804C9E0 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804C9E8
- bl IsLinkRfuTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _0804C9C4
- b _0804CEE6
-_0804C9C4:
- ldr r1, _0804C9E4 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
- b _0804CEE6
- .align 2, 0
-_0804C9E0: .4byte gWirelessCommType
-_0804C9E4: .4byte gMain
-_0804C9E8:
- movs r2, 0x87
- lsls r2, 3
- adds r1, r3, r2
- b _0804CEC2
-_0804C9F0:
- bl shedinja_maker_maybe
- lsls r0, 24
- cmp r0, 0
- bne _0804C9FC
- b _0804CEE6
-_0804C9FC:
- bl sub_804F9D8
- ldr r1, _0804CA0C @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804CEC2
- .align 2, 0
-_0804CA0C: .4byte gMain
-_0804CA10:
- bl CalculateEnemyPartyCount
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- ldr r2, _0804CB2C @ =gUnknown_2031DA8
- ldr r0, [r2]
- ldr r1, _0804CB30 @ =gPlayerPartyCount
- ldrb r1, [r1]
- adds r0, 0x36
- strb r1, [r0]
- ldr r0, [r2]
- ldr r1, _0804CB34 @ =gEnemyPartyCount
- ldrb r1, [r1]
- adds r0, 0x37
- strb r1, [r0]
- movs r6, 0
- ldr r0, [r2]
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r6, r0
- bge _0804CAA8
- mov r8, r2
- ldr r7, _0804CB38 @ =gTradeMonSpriteCoords
-_0804CA4A:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804CB3C @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldrb r2, [r7]
- lsls r2, 19
- movs r1, 0xE0
- lsls r1, 12
- adds r2, r1
- asrs r2, 16
- ldrb r3, [r7, 0x1]
- lsls r3, 19
- ldr r1, _0804CB40 @ =0xfff40000
- adds r3, r1
- asrs r3, 16
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- adds r0, r5, 0
- ldr r1, _0804CB44 @ =SpriteCB_MonIcon
- bl CreateMonIcon
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0x28
- adds r1, r6
- strb r0, [r1]
- adds r7, 0x2
- adds r6, 0x1
- ldr r0, [r2]
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804CA4A
-_0804CAA8:
- movs r6, 0
- ldr r1, _0804CB2C @ =gUnknown_2031DA8
- ldr r0, [r1]
- adds r0, 0x37
- ldrb r0, [r0]
- cmp r6, r0
- bge _0804CB20
- ldr r0, _0804CB38 @ =gTradeMonSpriteCoords
- mov r8, r1
- adds r7, r0, 0
- adds r7, 0xC
-_0804CABE:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804CB48 @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldrb r2, [r7]
- lsls r2, 19
- movs r3, 0xE0
- lsls r3, 12
- adds r2, r3
- asrs r2, 16
- ldrb r3, [r7, 0x1]
- lsls r3, 19
- ldr r1, _0804CB40 @ =0xfff40000
- adds r3, r1
- asrs r3, 16
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r5, 0
- ldr r1, _0804CB44 @ =SpriteCB_MonIcon
- bl CreateMonIcon
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0x2E
- adds r1, r6
- strb r0, [r1]
- adds r7, 0x2
- adds r6, 0x1
- ldr r0, [r2]
- adds r0, 0x37
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804CABE
-_0804CB20:
- ldr r1, _0804CB4C @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804CEC2
- .align 2, 0
-_0804CB2C: .4byte gUnknown_2031DA8
-_0804CB30: .4byte gPlayerPartyCount
-_0804CB34: .4byte gEnemyPartyCount
-_0804CB38: .4byte gTradeMonSpriteCoords
-_0804CB3C: .4byte gPlayerParty
-_0804CB40: .4byte 0xfff40000
-_0804CB44: .4byte SpriteCB_MonIcon
-_0804CB48: .4byte gEnemyParty
-_0804CB4C: .4byte gMain
-_0804CB50:
- bl sub_8122550
- ldr r0, _0804CB70 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x36
- adds r1, 0x28
- movs r2, 0
- bl sub_812256C
- ldr r1, _0804CB74 @ =gMain
- movs r5, 0x87
- lsls r5, 3
- adds r1, r5
- b _0804CEC2
- .align 2, 0
-_0804CB70: .4byte gUnknown_2031DA8
-_0804CB74: .4byte gMain
-_0804CB78:
- ldr r0, _0804CB94 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x36
- adds r1, 0x28
- movs r2, 0x1
- bl sub_812256C
- ldr r1, _0804CB98 @ =gMain
- movs r7, 0x87
- lsls r7, 3
- adds r1, r7
- b _0804CEC2
- .align 2, 0
-_0804CB94: .4byte gUnknown_2031DA8
-_0804CB98: .4byte gMain
-_0804CB9C:
- ldr r0, _0804CC14 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r6, _0804CC18 @ =gUnknown_2031C94
- ldr r1, [r6]
- ldr r5, _0804CC1C @ =gDecompressionBuffer
- str r5, [sp]
- movs r4, 0x3
- str r4, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_808BEB4
- bl GetMultiplayerId
- lsls r0, 24
- movs r1, 0x80
- lsls r1, 17
- eors r1, r0
- lsrs r1, 24
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _0804CC20 @ =gLinkPlayers + 8
- adds r0, r1
- ldr r1, [r6, 0xC]
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_808BEB4
- ldr r4, _0804CC24 @ =gUnknown_8261ECC
- ldr r0, [r4]
- ldr r1, [r6, 0x18]
- str r5, [sp]
- movs r2, 0x2
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_808BEB4
- ldr r0, [r4, 0x4]
- ldr r1, [r6, 0x20]
- movs r2, 0x18
- bl sub_804F728
- ldr r1, _0804CC28 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _0804CC2C @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0xA8
- strb r2, [r0]
- b _0804CEE6
- .align 2, 0
-_0804CC14: .4byte gSaveBlock2Ptr
-_0804CC18: .4byte gUnknown_2031C94
-_0804CC1C: .4byte gDecompressionBuffer
-_0804CC20: .4byte gLinkPlayers + 8
-_0804CC24: .4byte gUnknown_8261ECC
-_0804CC28: .4byte gMain
-_0804CC2C: .4byte gUnknown_2031DA8
-_0804CC30:
- bl sub_804F610
- lsls r0, 24
- cmp r0, 0
- bne _0804CC3C
- b _0804CEE6
-_0804CC3C:
- b _0804CEBA
-_0804CC3E:
- ldr r0, _0804CCFC @ =gSaveBlock2Ptr
- ldr r1, [r0]
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- adds r1, r0, 0
- movs r0, 0x38
- subs r0, r1
- lsrs r1, r0, 31
- adds r0, r1
- movs r6, 0
- add r5, sp, 0x10
- ldr r3, _0804CD00 @ =gTradeUnknownSpriteCoords
- mov r8, r3
- asrs r0, 1
- ldrb r7, [r3, 0x4]
- adds r4, r0, r7
-_0804CC62:
- add r1, sp, 0x10
- ldr r0, _0804CD04 @ =gUnknown_8261CC8
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldrh r0, [r5]
- adds r0, r6
- strh r0, [r5]
- lsls r1, r4, 16
- asrs r1, 16
- add r0, sp, 0x10
- mov r3, r8
- ldrb r2, [r3, 0x5]
- movs r3, 0x1
- bl CreateSprite
- adds r4, 0x20
- adds r6, 0x1
- cmp r6, 0x2
- ble _0804CC62
- bl GetMultiplayerId
- lsls r0, 24
- movs r1, 0x80
- lsls r1, 17
- eors r1, r0
- lsrs r1, 24
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _0804CD08 @ =gLinkPlayers + 8
- adds r1, r0, r1
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- adds r1, r0, 0
- movs r0, 0x38
- subs r0, r1
- lsrs r1, r0, 31
- adds r0, r1
- movs r6, 0
- add r5, sp, 0x10
- ldr r7, _0804CD00 @ =gTradeUnknownSpriteCoords
- mov r8, r7
- asrs r0, 1
- mov r1, r8
- ldrb r1, [r1, 0x6]
- adds r4, r0, r1
-_0804CCC6:
- add r1, sp, 0x10
- ldr r0, _0804CD04 @ =gUnknown_8261CC8
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r6, 0x3
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r5]
- lsls r1, r4, 16
- asrs r1, 16
- add r0, sp, 0x10
- mov r3, r8
- ldrb r2, [r3, 0x7]
- movs r3, 0x1
- bl CreateSprite
- adds r4, 0x20
- adds r6, 0x1
- cmp r6, 0x2
- ble _0804CCC6
- ldr r1, _0804CD0C @ =gMain
- movs r5, 0x87
- lsls r5, 3
- adds r1, r5
- b _0804CEC2
- .align 2, 0
-_0804CCFC: .4byte gSaveBlock2Ptr
-_0804CD00: .4byte gTradeUnknownSpriteCoords
-_0804CD04: .4byte gUnknown_8261CC8
-_0804CD08: .4byte gLinkPlayers + 8
-_0804CD0C: .4byte gMain
-_0804CD10:
- ldr r4, _0804CDCC @ =gUnknown_8261CC8
- add r1, sp, 0x10
- adds r0, r4, 0
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r5,r7}
- stm r1!, {r2,r5,r7}
- add r1, sp, 0x10
- adds r0, r1, 0
- ldrh r0, [r0]
- adds r0, 0x6
- strh r0, [r1]
- adds r0, r1, 0
- movs r1, 0xD7
- movs r2, 0x97
- movs r3, 0x1
- bl CreateSprite
- add r0, sp, 0x10
- ldm r4!, {r3,r5,r7}
- stm r0!, {r3,r5,r7}
- ldm r4!, {r1-r3}
- stm r0!, {r1-r3}
- add r1, sp, 0x10
- adds r0, r1, 0
- ldrh r0, [r0]
- adds r0, 0x7
- strh r0, [r1]
- adds r0, r1, 0
- movs r1, 0xF7
- movs r2, 0x97
- movs r3, 0x1
- bl CreateSprite
- movs r6, 0
- add r4, sp, 0x10
- movs r5, 0xC0
- lsls r5, 13
-_0804CD5C:
- add r1, sp, 0x10
- ldr r0, _0804CDCC @ =gUnknown_8261CC8
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r6, 0
- adds r0, 0x8
- ldrh r7, [r4]
- adds r0, r7
- strh r0, [r4]
- asrs r1, r5, 16
- add r0, sp, 0x10
- movs r2, 0x96
- movs r3, 0x1
- bl CreateSprite
- movs r0, 0x80
- lsls r0, 14
- adds r5, r0
- adds r6, 0x1
- cmp r6, 0x5
- ble _0804CD5C
- ldr r0, _0804CDD0 @ =gUnknown_8261CB0
- ldr r2, _0804CDD4 @ =gTradeMonSpriteCoords
- ldrb r1, [r2]
- lsls r1, 19
- movs r3, 0x80
- lsls r3, 14
- adds r1, r3
- asrs r1, 16
- ldrb r2, [r2, 0x1]
- lsls r2, 3
- movs r3, 0x2
- bl CreateSprite
- ldr r2, _0804CDD8 @ =gUnknown_2031DA8
- ldr r1, [r2]
- adds r1, 0x34
- movs r3, 0
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x35
- strb r3, [r0]
- ldr r1, _0804CDDC @ =gMain
- movs r5, 0x87
- lsls r5, 3
- adds r1, r5
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- movs r0, 0
- bl rbox_fill_rectangle
- b _0804CEE6
- .align 2, 0
-_0804CDCC: .4byte gUnknown_8261CC8
-_0804CDD0: .4byte gUnknown_8261CB0
-_0804CDD4: .4byte gTradeMonSpriteCoords
-_0804CDD8: .4byte gUnknown_2031DA8
-_0804CDDC: .4byte gMain
-_0804CDE0:
- movs r0, 0
- bl sub_804F748
- movs r0, 0
- bl sub_804F020
- ldr r2, _0804CE14 @ =gUnknown_2031DA8
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x1]
- bl sub_804D764
- ldr r1, _0804CE18 @ =gMain
- movs r7, 0x87
- lsls r7, 3
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, _0804CE1C @ =0x00000111
- bl PlayBGM
- b _0804CEE6
- .align 2, 0
-_0804CE14: .4byte gUnknown_2031DA8
-_0804CE18: .4byte gMain
-_0804CE1C: .4byte 0x00000111
-_0804CE20:
- movs r0, 0x1
- bl sub_804F748
- movs r0, 0x1
- bl sub_804F020
- ldr r1, _0804CE44 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804CE3A:
- movs r0, 0
- bl sub_804D694
- b _0804CEBA
- .align 2, 0
-_0804CE44: .4byte gMain
-_0804CE48:
- movs r0, 0x1
- bl sub_804D694
- ldr r1, _0804CE58 @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804CEC2
- .align 2, 0
-_0804CE58: .4byte gMain
-_0804CE5C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, _0804CE78 @ =gMain
- movs r5, 0x87
- lsls r5, 3
- adds r1, r5
- b _0804CEC2
- .align 2, 0
-_0804CE78: .4byte gMain
-_0804CE7C:
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x2
- bl sub_804D694
- ldr r1, _0804CE98 @ =gMain
- movs r7, 0x87
- lsls r7, 3
- adds r1, r7
- b _0804CEC2
- .align 2, 0
-_0804CE98: .4byte gMain
-_0804CE9C:
- movs r0, 0
- bl sub_804F890
- ldr r1, _0804CEAC @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _0804CEC2
- .align 2, 0
-_0804CEAC: .4byte gMain
-_0804CEB0:
- movs r0, 0x1
- bl sub_804F890
- bl sub_804F964
-_0804CEBA:
- ldr r1, _0804CECC @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
-_0804CEC2:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804CEE6
- .align 2, 0
-_0804CECC: .4byte gMain
-_0804CED0:
- ldr r0, _0804CF08 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804CEE6
- ldr r0, _0804CF0C @ =sub_804DFF0
- str r0, [r3]
- ldr r0, _0804CF10 @ =sub_804D638
- bl SetMainCallback2
-_0804CEE6:
- bl RunTextPrinters
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x28
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804CF08: .4byte gPaletteFade
-_0804CF0C: .4byte sub_804DFF0
-_0804CF10: .4byte sub_804D638
- thumb_func_end sub_804C728
-
- thumb_func_start sub_804CF14
-sub_804CF14: @ 804CF14
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x24
- ldr r1, _0804CF38 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x16
- bls _0804CF2E
- b _0804D4D2
-_0804CF2E:
- lsls r0, 2
- ldr r1, _0804CF3C @ =_0804CF40
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804CF38: .4byte gMain
-_0804CF3C: .4byte _0804CF40
- .align 2, 0
-_0804CF40:
- .4byte _0804CF9C
- .4byte _0804CFB0
- .4byte _0804CFB8
- .4byte _0804CFC0
- .4byte _0804CFC8
- .4byte _0804CFDC
- .4byte _0804D004
- .4byte _0804D00C
- .4byte _0804D150
- .4byte _0804D178
- .4byte _0804D19C
- .4byte _0804D230
- .4byte _0804D24C
- .4byte _0804D320
- .4byte _0804D4D2
- .4byte _0804D4D2
- .4byte _0804D414
- .4byte _0804D41C
- .4byte _0804D444
- .4byte _0804D480
- .4byte _0804D4A0
- .4byte _0804D4A8
- .4byte _0804D4C0
-_0804CF9C:
- bl sub_804C600
- ldr r1, _0804CFAC @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804D4B4
- .align 2, 0
-_0804CFAC: .4byte gMain
-_0804CFB0:
- movs r5, 0x87
- lsls r5, 3
- adds r1, r2, r5
- b _0804D200
-_0804CFB8:
- movs r7, 0x87
- lsls r7, 3
- adds r1, r2, r7
- b _0804D4B4
-_0804CFC0:
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- b _0804D4B4
-_0804CFC8:
- bl CalculatePlayerPartyCount
- ldr r1, _0804CFD8 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0804D4B4
- .align 2, 0
-_0804CFD8: .4byte gMain
-_0804CFDC:
- ldr r0, _0804CFFC @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804CFF0
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
-_0804CFF0:
- ldr r1, _0804D000 @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804D4B4
- .align 2, 0
-_0804CFFC: .4byte gWirelessCommType
-_0804D000: .4byte gMain
-_0804D004:
- movs r5, 0x87
- lsls r5, 3
- adds r1, r2, r5
- b _0804D4B4
-_0804D00C:
- bl CalculateEnemyPartyCount
- ldr r4, _0804D12C @ =gUnknown_2031DA8
- ldr r0, [r4]
- ldr r1, _0804D130 @ =gPlayerPartyCount
- ldrb r1, [r1]
- adds r0, 0x36
- strb r1, [r0]
- ldr r0, [r4]
- ldr r1, _0804D134 @ =gEnemyPartyCount
- ldrb r1, [r1]
- adds r0, 0x37
- strb r1, [r0]
- movs r0, 0
- bl ClearWindowTilemap
- movs r0, 0
- bl sub_804F020
- movs r0, 0x1
- bl sub_804F020
- movs r6, 0
- ldr r0, [r4]
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r6, r0
- bge _0804D0A8
- mov r8, r4
- ldr r7, _0804D138 @ =gTradeMonSpriteCoords
-_0804D048:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804D13C @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldrb r2, [r7]
- lsls r2, 19
- movs r1, 0xE0
- lsls r1, 12
- adds r2, r1
- asrs r2, 16
- ldrb r3, [r7, 0x1]
- lsls r3, 19
- ldr r1, _0804D140 @ =0xfff40000
- adds r3, r1
- asrs r3, 16
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- adds r0, r5, 0
- ldr r1, _0804D144 @ =SpriteCB_MonIcon
- bl CreateMonIcon
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0x28
- adds r1, r6
- strb r0, [r1]
- adds r7, 0x2
- adds r6, 0x1
- ldr r0, [r2]
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804D048
-_0804D0A8:
- movs r6, 0
- ldr r1, _0804D12C @ =gUnknown_2031DA8
- ldr r0, [r1]
- adds r0, 0x37
- ldrb r0, [r0]
- cmp r6, r0
- bge _0804D120
- ldr r0, _0804D138 @ =gTradeMonSpriteCoords
- mov r8, r1
- adds r7, r0, 0
- adds r7, 0xC
-_0804D0BE:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804D148 @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x41
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- adds r0, r4, 0
- movs r1, 0
- bl GetMonData
- ldrb r2, [r7]
- lsls r2, 19
- movs r3, 0xE0
- lsls r3, 12
- adds r2, r3
- asrs r2, 16
- ldrb r3, [r7, 0x1]
- lsls r3, 19
- ldr r1, _0804D140 @ =0xfff40000
- adds r3, r1
- asrs r3, 16
- movs r1, 0x1
- str r1, [sp]
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r5, 0
- ldr r1, _0804D144 @ =SpriteCB_MonIcon
- bl CreateMonIcon
- mov r2, r8
- ldr r1, [r2]
- adds r1, 0x2E
- adds r1, r6
- strb r0, [r1]
- adds r7, 0x2
- adds r6, 0x1
- ldr r0, [r2]
- adds r0, 0x37
- ldrb r0, [r0]
- cmp r6, r0
- blt _0804D0BE
-_0804D120:
- ldr r1, _0804D14C @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804D4B4
- .align 2, 0
-_0804D12C: .4byte gUnknown_2031DA8
-_0804D130: .4byte gPlayerPartyCount
-_0804D134: .4byte gEnemyPartyCount
-_0804D138: .4byte gTradeMonSpriteCoords
-_0804D13C: .4byte gPlayerParty
-_0804D140: .4byte 0xfff40000
-_0804D144: .4byte SpriteCB_MonIcon
-_0804D148: .4byte gEnemyParty
-_0804D14C: .4byte gMain
-_0804D150:
- bl sub_8122550
- ldr r0, _0804D170 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x36
- adds r1, 0x28
- movs r2, 0
- bl sub_812256C
- ldr r1, _0804D174 @ =gMain
- movs r5, 0x87
- lsls r5, 3
- adds r1, r5
- b _0804D4B4
- .align 2, 0
-_0804D170: .4byte gUnknown_2031DA8
-_0804D174: .4byte gMain
-_0804D178:
- ldr r0, _0804D194 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0x36
- adds r1, 0x28
- movs r2, 0x1
- bl sub_812256C
- ldr r1, _0804D198 @ =gMain
- movs r7, 0x87
- lsls r7, 3
- adds r1, r7
- b _0804D4B4
- .align 2, 0
-_0804D194: .4byte gUnknown_2031DA8
-_0804D198: .4byte gMain
-_0804D19C:
- ldr r0, _0804D214 @ =gSaveBlock2Ptr
- ldr r0, [r0]
- ldr r6, _0804D218 @ =gUnknown_2031C94
- ldr r1, [r6]
- ldr r5, _0804D21C @ =gDecompressionBuffer
- str r5, [sp]
- movs r4, 0x3
- str r4, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_808BEB4
- bl GetMultiplayerId
- lsls r0, 24
- movs r1, 0x80
- lsls r1, 17
- eors r1, r0
- lsrs r1, 24
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _0804D220 @ =gLinkPlayers + 8
- adds r0, r1
- ldr r1, [r6, 0xC]
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_808BEB4
- ldr r4, _0804D224 @ =gUnknown_8261ECC
- ldr r0, [r4]
- ldr r1, [r6, 0x18]
- str r5, [sp]
- movs r2, 0x2
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_808BEB4
- ldr r0, [r4, 0x4]
- ldr r1, [r6, 0x20]
- movs r2, 0x18
- bl sub_804F728
- ldr r1, _0804D228 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
-_0804D200:
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, _0804D22C @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0xA8
- strb r2, [r0]
- b _0804D4D2
- .align 2, 0
-_0804D214: .4byte gSaveBlock2Ptr
-_0804D218: .4byte gUnknown_2031C94
-_0804D21C: .4byte gDecompressionBuffer
-_0804D220: .4byte gLinkPlayers + 8
-_0804D224: .4byte gUnknown_8261ECC
-_0804D228: .4byte gMain
-_0804D22C: .4byte gUnknown_2031DA8
-_0804D230:
- bl sub_804F610
- lsls r0, 24
- cmp r0, 0
- bne _0804D23C
- b _0804D4D2
-_0804D23C:
- ldr r1, _0804D248 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0804D4B4
- .align 2, 0
-_0804D248: .4byte gMain
-_0804D24C:
- ldr r0, _0804D30C @ =gSaveBlock2Ptr
- ldr r1, [r0]
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- adds r1, r0, 0
- movs r0, 0x38
- subs r0, r1
- lsrs r1, r0, 31
- adds r0, r1
- movs r6, 0
- add r5, sp, 0xC
- ldr r3, _0804D310 @ =gTradeUnknownSpriteCoords
- mov r8, r3
- asrs r0, 1
- ldrb r7, [r3, 0x4]
- adds r4, r0, r7
-_0804D270:
- add r1, sp, 0xC
- ldr r0, _0804D314 @ =gUnknown_8261CC8
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldrh r0, [r5]
- adds r0, r6
- strh r0, [r5]
- lsls r1, r4, 16
- asrs r1, 16
- add r0, sp, 0xC
- mov r3, r8
- ldrb r2, [r3, 0x5]
- movs r3, 0x1
- bl CreateSprite
- adds r4, 0x20
- adds r6, 0x1
- cmp r6, 0x2
- ble _0804D270
- bl GetMultiplayerId
- lsls r0, 24
- movs r1, 0x80
- lsls r1, 17
- eors r1, r0
- lsrs r1, 24
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- ldr r1, _0804D318 @ =gLinkPlayers + 8
- adds r1, r0, r1
- movs r0, 0x1
- movs r2, 0
- bl GetStringWidth
- adds r1, r0, 0
- movs r0, 0x38
- subs r0, r1
- lsrs r1, r0, 31
- adds r0, r1
- movs r6, 0
- add r5, sp, 0xC
- ldr r7, _0804D310 @ =gTradeUnknownSpriteCoords
- mov r8, r7
- asrs r0, 1
- mov r1, r8
- ldrb r1, [r1, 0x6]
- adds r4, r0, r1
-_0804D2D4:
- add r1, sp, 0xC
- ldr r0, _0804D314 @ =gUnknown_8261CC8
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r6, 0x3
- ldrh r1, [r5]
- adds r0, r1
- strh r0, [r5]
- lsls r1, r4, 16
- asrs r1, 16
- add r0, sp, 0xC
- mov r3, r8
- ldrb r2, [r3, 0x7]
- movs r3, 0x1
- bl CreateSprite
- adds r4, 0x20
- adds r6, 0x1
- cmp r6, 0x2
- ble _0804D2D4
- ldr r1, _0804D31C @ =gMain
- movs r5, 0x87
- lsls r5, 3
- adds r1, r5
- b _0804D4B4
- .align 2, 0
-_0804D30C: .4byte gSaveBlock2Ptr
-_0804D310: .4byte gTradeUnknownSpriteCoords
-_0804D314: .4byte gUnknown_8261CC8
-_0804D318: .4byte gLinkPlayers + 8
-_0804D31C: .4byte gMain
-_0804D320:
- ldr r4, _0804D3B0 @ =gUnknown_8261CC8
- add r1, sp, 0xC
- adds r0, r4, 0
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r5,r7}
- stm r1!, {r2,r5,r7}
- add r1, sp, 0xC
- adds r0, r1, 0
- ldrh r0, [r0]
- adds r0, 0x6
- strh r0, [r1]
- adds r0, r1, 0
- movs r1, 0xD7
- movs r2, 0x97
- movs r3, 0x1
- bl CreateSprite
- add r0, sp, 0xC
- ldm r4!, {r3,r5,r7}
- stm r0!, {r3,r5,r7}
- ldm r4!, {r1-r3}
- stm r0!, {r1-r3}
- add r1, sp, 0xC
- adds r0, r1, 0
- ldrh r0, [r0]
- adds r0, 0x7
- strh r0, [r1]
- adds r0, r1, 0
- movs r1, 0xF7
- movs r2, 0x97
- movs r3, 0x1
- bl CreateSprite
- movs r6, 0
- add r4, sp, 0xC
- movs r5, 0xC0
- lsls r5, 13
-_0804D36C:
- add r1, sp, 0xC
- ldr r0, _0804D3B0 @ =gUnknown_8261CC8
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- ldm r0!, {r2,r3,r7}
- stm r1!, {r2,r3,r7}
- adds r0, r6, 0
- adds r0, 0x8
- ldrh r7, [r4]
- adds r0, r7
- strh r0, [r4]
- asrs r1, r5, 16
- add r0, sp, 0xC
- movs r2, 0x96
- movs r3, 0x1
- bl CreateSprite
- movs r0, 0x80
- lsls r0, 14
- adds r5, r0
- adds r6, 0x1
- cmp r6, 0x5
- ble _0804D36C
- ldr r4, _0804D3B4 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x35
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _0804D3B8
- bl sub_8138B20
- ldr r1, [r4]
- b _0804D3C0
- .align 2, 0
-_0804D3B0: .4byte gUnknown_8261CC8
-_0804D3B4: .4byte gUnknown_2031DA8
-_0804D3B8:
- bl sub_8138B20
- ldr r1, [r4]
- adds r0, 0x6
-_0804D3C0:
- adds r1, 0x35
- strb r0, [r1]
- ldr r0, _0804D404 @ =gUnknown_8261CB0
- ldr r3, _0804D408 @ =gTradeMonSpriteCoords
- ldr r4, _0804D40C @ =gUnknown_2031DA8
- ldr r1, [r4]
- adds r1, 0x35
- ldrb r2, [r1]
- lsls r2, 1
- adds r1, r2, r3
- ldrb r1, [r1]
- lsls r1, 19
- movs r5, 0x80
- lsls r5, 14
- adds r1, r5
- asrs r1, 16
- adds r3, 0x1
- adds r2, r3
- ldrb r2, [r2]
- lsls r2, 3
- movs r3, 0x2
- bl CreateSprite
- ldr r1, [r4]
- adds r1, 0x34
- strb r0, [r1]
- ldr r0, _0804D410 @ =gMain
- movs r7, 0x87
- lsls r7, 3
- adds r0, r7
- movs r1, 0x10
- strb r1, [r0]
- b _0804D4D2
- .align 2, 0
-_0804D404: .4byte gUnknown_8261CB0
-_0804D408: .4byte gTradeMonSpriteCoords
-_0804D40C: .4byte gUnknown_2031DA8
-_0804D410: .4byte gMain
-_0804D414:
- movs r0, 0
- bl sub_804D694
- b _0804D4AC
-_0804D41C:
- movs r0, 0x1
- bl sub_804D694
- ldr r2, _0804D43C @ =gUnknown_2031DA8
- ldr r0, [r2]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- strb r1, [r0, 0x1]
- bl sub_804D764
- ldr r1, _0804D440 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _0804D4B4
- .align 2, 0
-_0804D43C: .4byte gUnknown_2031DA8
-_0804D440: .4byte gMain
-_0804D444:
- ldr r2, _0804D478 @ =gPaletteFade
- ldrb r1, [r2, 0x8]
- movs r0, 0x7F
- ands r0, r1
- strb r0, [r2, 0x8]
- movs r4, 0x1
- negs r4, r4
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- movs r0, 0
- str r0, [sp]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, _0804D47C @ =gMain
- movs r3, 0x87
- lsls r3, 3
- adds r1, r3
- b _0804D4B4
- .align 2, 0
-_0804D478: .4byte gPaletteFade
-_0804D47C: .4byte gMain
-_0804D480:
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- movs r0, 0x2
- bl sub_804D694
- ldr r1, _0804D49C @ =gMain
- movs r5, 0x87
- lsls r5, 3
- adds r1, r5
- b _0804D4B4
- .align 2, 0
-_0804D49C: .4byte gMain
-_0804D4A0:
- movs r7, 0x87
- lsls r7, 3
- adds r1, r2, r7
- b _0804D4B4
-_0804D4A8:
- bl sub_804F964
-_0804D4AC:
- ldr r1, _0804D4BC @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
-_0804D4B4:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804D4D2
- .align 2, 0
-_0804D4BC: .4byte gMain
-_0804D4C0:
- ldr r0, _0804D4F0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804D4D2
- ldr r0, _0804D4F4 @ =sub_804D638
- bl SetMainCallback2
-_0804D4D2:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x24
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D4F0: .4byte gPaletteFade
-_0804D4F4: .4byte sub_804D638
- thumb_func_end sub_804CF14
-
- thumb_func_start sub_804D4F8
-sub_804D4F8: @ 804D4F8
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804D4F8
-
- thumb_func_start sub_804D50C
-sub_804D50C: @ 804D50C
- push {r4,lr}
- sub sp, 0x4
- ldr r4, _0804D544 @ =gUnknown_2031DA8
- ldr r1, [r4]
- adds r1, 0xA8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xF
- bls _0804D53C
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0xA
- strb r1, [r0]
-_0804D53C:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D544: .4byte gUnknown_2031DA8
- thumb_func_end sub_804D50C
-
- thumb_func_start sub_804D548
-sub_804D548: @ 804D548
- push {r4,lr}
- ldr r0, _0804D580 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804D59E
- ldr r1, _0804D584 @ =gUnknown_2031DA4
- ldr r4, _0804D588 @ =gUnknown_2031DA8
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x35
- ldrb r0, [r0]
- strb r0, [r1]
- adds r0, r2, 0
- adds r0, 0x7E
- ldrb r0, [r0]
- strb r0, [r1, 0x1]
- ldr r0, _0804D58C @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804D590
- adds r1, r2, 0
- adds r1, 0x6F
- movs r0, 0x10
- strb r0, [r1]
- b _0804D59E
- .align 2, 0
-_0804D580: .4byte gPaletteFade
-_0804D584: .4byte gUnknown_2031DA4
-_0804D588: .4byte gUnknown_2031DA8
-_0804D58C: .4byte gWirelessCommType
-_0804D590:
- movs r0, 0x20
- bl sub_800AA80
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0xD
- strb r1, [r0]
-_0804D59E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804D548
-
- thumb_func_start sub_804D5A4
-sub_804D5A4: @ 804D5A4
- push {r4,r5,lr}
- ldr r5, _0804D5E4 @ =gMain
- ldr r0, _0804D5E8 @ =sub_804C718
- str r0, [r5, 0x8]
- ldr r0, _0804D5EC @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804D5FC
- bl IsLinkRfuTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0804D620
- ldr r0, _0804D5F0 @ =gUnknown_2031C90
- ldr r0, [r0]
- bl Free
- bl FreeAllWindowBuffers
- ldr r0, _0804D5F4 @ =gUnknown_2031DA8
- ldr r0, [r0]
- bl Free
- movs r0, 0
- str r0, [r5]
- bl DestroyWirelessStatusIndicatorSprite
- ldr r0, _0804D5F8 @ =sub_8050138
- bl SetMainCallback2
- b _0804D620
- .align 2, 0
-_0804D5E4: .4byte gMain
-_0804D5E8: .4byte sub_804C718
-_0804D5EC: .4byte gWirelessCommType
-_0804D5F0: .4byte gUnknown_2031C90
-_0804D5F4: .4byte gUnknown_2031DA8
-_0804D5F8: .4byte sub_8050138
-_0804D5FC:
- ldr r0, _0804D628 @ =gReceivedRemoteLinkPlayers
- ldrb r4, [r0]
- cmp r4, 0
- bne _0804D620
- ldr r0, _0804D62C @ =gUnknown_2031C90
- ldr r0, [r0]
- bl Free
- bl FreeAllWindowBuffers
- ldr r0, _0804D630 @ =gUnknown_2031DA8
- ldr r0, [r0]
- bl Free
- str r4, [r5]
- ldr r0, _0804D634 @ =sub_8050138
- bl SetMainCallback2
-_0804D620:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D628: .4byte gReceivedRemoteLinkPlayers
-_0804D62C: .4byte gUnknown_2031C90
-_0804D630: .4byte gUnknown_2031DA8
-_0804D634: .4byte sub_8050138
- thumb_func_end sub_804D5A4
-
- thumb_func_start sub_804D638
-sub_804D638: @ 804D638
- push {r4,lr}
- bl sub_804E9E4
- bl sub_804F4DC
- movs r0, 0
- bl sub_804EAE4
- movs r0, 0x1
- bl sub_804EAE4
- ldr r4, _0804D690 @ =gUnknown_2031DA8
- ldr r2, [r4]
- ldrb r1, [r2]
- adds r0, r1, 0x1
- strb r0, [r2]
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x18
- bl SetGpuReg
- ldr r2, [r4]
- ldrb r1, [r2, 0x1]
- adds r0, r1, 0
- adds r0, 0xFF
- strb r0, [r2, 0x1]
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0x1C
- bl SetGpuReg
- bl RunTextPrinters_CheckPrinter0Active
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804D690: .4byte gUnknown_2031DA8
- thumb_func_end sub_804D638
-
- thumb_func_start sub_804D694
-sub_804D694: @ 804D694
- push {r4,r5,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x1
- beq _0804D700
- cmp r4, 0x1
- bgt _0804D6AA
- cmp r4, 0
- beq _0804D6B0
- b _0804D75A
-_0804D6AA:
- cmp r4, 0x2
- beq _0804D728
- b _0804D75A
-_0804D6B0:
- ldr r0, _0804D6F0 @ =gUnknown_8E9CEDC
- movs r1, 0
- movs r2, 0x60
- bl LoadPalette
- ldr r1, _0804D6F4 @ =gUnknown_8E9CF5C
- movs r2, 0x94
- lsls r2, 5
- movs r0, 0x1
- movs r3, 0
- bl LoadBgTiles
- ldr r1, _0804D6F8 @ =gUnknown_8E9E9FC
- movs r0, 0x20
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- ldr r1, _0804D6FC @ =gUnknown_8260C30
- movs r2, 0x80
- lsls r2, 4
- movs r0, 0x2
- movs r3, 0
- bl LoadBgTilemap
- b _0804D75A
- .align 2, 0
-_0804D6F0: .4byte gUnknown_8E9CEDC
-_0804D6F4: .4byte gUnknown_8E9CF5C
-_0804D6F8: .4byte gUnknown_8E9E9FC
-_0804D6FC: .4byte gUnknown_8260C30
-_0804D700:
- ldr r1, _0804D724 @ =gUnknown_8261430
- movs r2, 0x80
- lsls r2, 4
- movs r0, 0x3
- movs r3, 0
- bl LoadBgTilemap
- movs r0, 0
- bl sub_804F284
- movs r0, 0x1
- bl sub_804F284
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _0804D75A
- .align 2, 0
-_0804D724: .4byte gUnknown_8261430
-_0804D728:
- movs r5, 0x80
- lsls r5, 21
- movs r4, 0x3
-_0804D72E:
- lsrs r0, r5, 24
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x80
- lsls r0, 18
- adds r5, r0
- subs r4, 0x1
- cmp r4, 0
- bge _0804D72E
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
-_0804D75A:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_804D694
-
- thumb_func_start sub_804D764
-sub_804D764: @ 804D764
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r3, 0
- ldr r5, _0804D7B4 @ =gUnknown_2031DA8
- mov r8, r5
- ldr r0, _0804D7B8 @ =gSprites
- mov r12, r0
- movs r1, 0x5
- negs r1, r1
- mov r9, r1
- movs r4, 0x6
- movs r7, 0x1
- movs r6, 0
-_0804D782:
- mov r1, r8
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x36
- ldrb r1, [r1]
- cmp r3, r1
- bge _0804D7BC
- adds r0, 0x28
- adds r0, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- adds r1, 0x3E
- ldrb r2, [r1]
- mov r0, r9
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x38
- adds r0, r3
- strb r7, [r0]
- b _0804D7C2
- .align 2, 0
-_0804D7B4: .4byte gUnknown_2031DA8
-_0804D7B8: .4byte gSprites
-_0804D7BC:
- adds r0, 0x38
- adds r0, r3
- strb r6, [r0]
-_0804D7C2:
- mov r1, r8
- ldr r0, [r1]
- adds r1, r0, 0
- adds r1, 0x37
- ldrb r1, [r1]
- cmp r3, r1
- bge _0804D7F2
- adds r0, 0x2E
- adds r0, r3
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r12
- adds r1, 0x3E
- ldrb r2, [r1]
- mov r0, r9
- ands r0, r2
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, 0x38
- adds r0, r4
- strb r7, [r0]
- b _0804D7F8
-_0804D7F2:
- adds r0, 0x38
- adds r0, r4
- strb r6, [r0]
-_0804D7F8:
- adds r4, 0x1
- adds r3, 0x1
- cmp r3, 0x5
- ble _0804D782
- ldr r0, [r5]
- adds r0, 0x44
- movs r1, 0x1
- strb r1, [r0]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_804D764
-
- thumb_func_start sub_804D814
-sub_804D814: @ 804D814
- push {r4,r5,lr}
- adds r5, r0, 0
- adds r4, r1, 0
- movs r3, 0
- cmp r3, r2
- bcs _0804D82E
-_0804D820:
- adds r0, r5, r3
- adds r1, r4, r3
- ldrb r1, [r1]
- strb r1, [r0]
- adds r3, 0x1
- cmp r3, r2
- bcc _0804D820
-_0804D82E:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_804D814
-
- thumb_func_start shedinja_maker_maybe
-shedinja_maker_maybe: @ 804D834
- push {r4-r6,lr}
- sub sp, 0xC
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0804D858 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x69
- ldrb r0, [r0]
- cmp r0, 0x15
- bls _0804D84E
- b _0804DB9E
-_0804D84E:
- lsls r0, 2
- ldr r1, _0804D85C @ =_0804D860
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804D858: .4byte gUnknown_2031DA8
-_0804D85C: .4byte _0804D860
- .align 2, 0
-_0804D860:
- .4byte _0804D8B8
- .4byte _0804D8E4
- .4byte _0804DB78
- .4byte _0804D914
- .4byte _0804D928
- .4byte _0804D960
- .4byte _0804DB78
- .4byte _0804D97C
- .4byte _0804D990
- .4byte _0804D9C8
- .4byte _0804DB78
- .4byte _0804D9E4
- .4byte _0804D9F8
- .4byte _0804DA30
- .4byte _0804DB78
- .4byte _0804DA58
- .4byte _0804DA6C
- .4byte _0804DAA4
- .4byte _0804DB78
- .4byte _0804DACC
- .4byte _0804DAE0
- .4byte _0804DB14
-_0804D8B8:
- ldr r0, _0804D8D8 @ =gBlockSendBuffer
- ldr r1, _0804D8DC @ =gPlayerParty
- movs r2, 0xC8
- bl sub_804D814
- ldr r3, _0804D8E0 @ =gUnknown_2031DA8
- ldr r1, [r3]
- adds r1, 0x69
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0xA8
- strb r2, [r0]
- b _0804DB9E
- .align 2, 0
-_0804D8D8: .4byte gBlockSendBuffer
-_0804D8DC: .4byte gPlayerParty
-_0804D8E0: .4byte gUnknown_2031DA8
-_0804D8E4:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _0804D8F0
- b _0804DB9E
-_0804D8F0:
- bl GetBlockReceivedStatus
- lsls r0, 24
- cmp r0, 0
- bne _0804D904
- ldr r0, _0804D900 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D900: .4byte gUnknown_2031DA8
-_0804D904:
- bl ResetBlockReceivedFlags
- ldr r0, _0804D910 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D910: .4byte gUnknown_2031DA8
-_0804D914:
- cmp r5, 0
- bne _0804D91E
- movs r0, 0x1
- bl sub_800A474
-_0804D91E:
- ldr r0, _0804D924 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D924: .4byte gUnknown_2031DA8
-_0804D928:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0804D936
- b _0804DB9E
-_0804D936:
- ldr r0, _0804D954 @ =gEnemyParty
- movs r2, 0x1
- adds r1, r5, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _0804D958 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xC8
- bl sub_804D814
- bl ResetBlockReceivedFlags
- ldr r0, _0804D95C @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D954: .4byte gEnemyParty
-_0804D958: .4byte gBlockRecvBuffer
-_0804D95C: .4byte gUnknown_2031DA8
-_0804D960:
- ldr r0, _0804D970 @ =gBlockSendBuffer
- ldr r1, _0804D974 @ =gUnknown_202434C
- movs r2, 0xC8
- bl sub_804D814
- ldr r0, _0804D978 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D970: .4byte gBlockSendBuffer
-_0804D974: .4byte gUnknown_202434C
-_0804D978: .4byte gUnknown_2031DA8
-_0804D97C:
- cmp r5, 0
- bne _0804D986
- movs r0, 0x1
- bl sub_800A474
-_0804D986:
- ldr r0, _0804D98C @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D98C: .4byte gUnknown_2031DA8
-_0804D990:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0804D99E
- b _0804DB9E
-_0804D99E:
- ldr r0, _0804D9BC @ =gUnknown_20240F4
- movs r2, 0x1
- adds r1, r5, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _0804D9C0 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xC8
- bl sub_804D814
- bl ResetBlockReceivedFlags
- ldr r0, _0804D9C4 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D9BC: .4byte gUnknown_20240F4
-_0804D9C0: .4byte gBlockRecvBuffer
-_0804D9C4: .4byte gUnknown_2031DA8
-_0804D9C8:
- ldr r0, _0804D9D8 @ =gBlockSendBuffer
- ldr r1, _0804D9DC @ =gUnknown_2024414
- movs r2, 0xC8
- bl sub_804D814
- ldr r0, _0804D9E0 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D9D8: .4byte gBlockSendBuffer
-_0804D9DC: .4byte gUnknown_2024414
-_0804D9E0: .4byte gUnknown_2031DA8
-_0804D9E4:
- cmp r5, 0
- bne _0804D9EE
- movs r0, 0x1
- bl sub_800A474
-_0804D9EE:
- ldr r0, _0804D9F4 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804D9F4: .4byte gUnknown_2031DA8
-_0804D9F8:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0804DA06
- b _0804DB9E
-_0804DA06:
- ldr r0, _0804DA24 @ =gUnknown_20241BC
- movs r2, 0x1
- adds r1, r5, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _0804DA28 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xC8
- bl sub_804D814
- bl ResetBlockReceivedFlags
- ldr r0, _0804DA2C @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804DA24: .4byte gUnknown_20241BC
-_0804DA28: .4byte gBlockRecvBuffer
-_0804DA2C: .4byte gUnknown_2031DA8
-_0804DA30:
- ldr r0, _0804DA48 @ =gBlockSendBuffer
- ldr r1, _0804DA4C @ =gSaveBlock1Ptr
- ldr r1, [r1]
- ldr r2, _0804DA50 @ =0x00002cd0
- adds r1, r2
- movs r2, 0xDC
- bl sub_804D814
- ldr r0, _0804DA54 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804DA48: .4byte gBlockSendBuffer
-_0804DA4C: .4byte gSaveBlock1Ptr
-_0804DA50: .4byte 0x00002cd0
-_0804DA54: .4byte gUnknown_2031DA8
-_0804DA58:
- cmp r5, 0
- bne _0804DA62
- movs r0, 0x3
- bl sub_800A474
-_0804DA62:
- ldr r0, _0804DA68 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804DA68: .4byte gUnknown_2031DA8
-_0804DA6C:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- beq _0804DA7A
- b _0804DB9E
-_0804DA7A:
- ldr r0, _0804DA98 @ =gUnknown_2031CCC
- movs r2, 0x1
- adds r1, r5, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _0804DA9C @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xD8
- bl sub_804D814
- bl ResetBlockReceivedFlags
- ldr r0, _0804DAA0 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804DA98: .4byte gUnknown_2031CCC
-_0804DA9C: .4byte gBlockRecvBuffer
-_0804DAA0: .4byte gUnknown_2031DA8
-_0804DAA4:
- ldr r0, _0804DABC @ =gBlockSendBuffer
- ldr r1, _0804DAC0 @ =gSaveBlock1Ptr
- ldr r1, [r1]
- ldr r2, _0804DAC4 @ =0x0000309c
- adds r1, r2
- movs r2, 0xB
- bl sub_804D814
- ldr r0, _0804DAC8 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804DABC: .4byte gBlockSendBuffer
-_0804DAC0: .4byte gSaveBlock1Ptr
-_0804DAC4: .4byte 0x0000309c
-_0804DAC8: .4byte gUnknown_2031DA8
-_0804DACC:
- cmp r5, 0
- bne _0804DAD6
- movs r0, 0x4
- bl sub_800A474
-_0804DAD6:
- ldr r0, _0804DADC @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804DB96
- .align 2, 0
-_0804DADC: .4byte gUnknown_2031DA8
-_0804DAE0:
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x3
- bne _0804DB9E
- ldr r4, _0804DB0C @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0xA9
- movs r2, 0x1
- adds r1, r5, 0
- eors r1, r2
- lsls r1, 8
- ldr r2, _0804DB10 @ =gBlockRecvBuffer
- adds r1, r2
- movs r2, 0xB
- bl sub_804D814
- bl ResetBlockReceivedFlags
- ldr r1, [r4]
- b _0804DB96
- .align 2, 0
-_0804DB0C: .4byte gUnknown_2031DA8
-_0804DB10: .4byte gBlockRecvBuffer
-_0804DB14:
- ldr r4, _0804DB68 @ =gEnemyParty
- ldr r6, _0804DB6C @ =0x0000012f
- movs r5, 0x5
-_0804DB1A:
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0
- beq _0804DB5A
- cmp r0, r6
- bne _0804DB5A
- adds r0, r4, 0
- movs r1, 0x3
- bl GetMonData
- cmp r0, 0x1
- beq _0804DB5A
- adds r0, r4, 0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- mov r0, sp
- ldr r1, _0804DB70 @ =gUnknown_8262034
- bl StringCompareWithoutExtCtrlCodes
- cmp r0, 0
- bne _0804DB5A
- adds r0, r4, 0
- movs r1, 0x2
- ldr r2, _0804DB74 @ = gSpeciesNames + 0xD05
- bl SetMonData
-_0804DB5A:
- adds r4, 0x64
- subs r5, 0x1
- cmp r5, 0
- bge _0804DB1A
- movs r0, 0x1
- b _0804DBA0
- .align 2, 0
-_0804DB68: .4byte gEnemyParty
-_0804DB6C: .4byte 0x0000012f
-_0804DB70: .4byte gUnknown_8262034
-_0804DB74: .4byte gSpeciesNames+0xD05
-_0804DB78:
- ldr r2, _0804DBA8 @ =gUnknown_2031DA8
- ldr r1, [r2]
- adds r1, 0xA8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r1, r0, 0
- adds r1, 0xA8
- ldrb r0, [r1]
- cmp r0, 0xA
- bls _0804DB9E
- movs r0, 0
- strb r0, [r1]
- ldr r1, [r2]
-_0804DB96:
- adds r1, 0x69
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804DB9E:
- movs r0, 0
-_0804DBA0:
- add sp, 0xC
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0804DBA8: .4byte gUnknown_2031DA8
- thumb_func_end shedinja_maker_maybe
-
- thumb_func_start sub_804DBAC
-sub_804DBAC: @ 804DBAC
- push {lr}
- ldr r0, _0804DBC8 @ =gUnknown_841E0A5
- ldr r1, _0804DBCC @ =gUnknown_2031DA8
- ldr r1, [r1]
- adds r1, 0x72
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804DBD0 @ =0x06010000
- adds r1, r2
- movs r2, 0x18
- bl sub_804F728
- pop {r0}
- bx r0
- .align 2, 0
-_0804DBC8: .4byte gUnknown_841E0A5
-_0804DBCC: .4byte gUnknown_2031DA8
-_0804DBD0: .4byte 0x06010000
- thumb_func_end sub_804DBAC
-
- thumb_func_start sub_804DBD4
-sub_804DBD4: @ 804DBD4
- push {r4,lr}
- lsls r1, 24
- lsrs r4, r1, 24
- movs r2, 0x1
- adds r0, r4, 0
- ands r0, r2
- cmp r0, 0
- beq _0804DC58
- ldr r0, _0804DBFC @ =gBlockRecvBuffer
- ldrh r1, [r0]
- ldr r0, _0804DC00 @ =0x0000bbbb
- cmp r1, r0
- beq _0804DC38
- cmp r1, r0
- bgt _0804DC08
- ldr r0, _0804DC04 @ =0x0000aabb
- cmp r1, r0
- beq _0804DC28
- b _0804DC52
- .align 2, 0
-_0804DBFC: .4byte gBlockRecvBuffer
-_0804DC00: .4byte 0x0000bbbb
-_0804DC04: .4byte 0x0000aabb
-_0804DC08:
- ldr r0, _0804DC1C @ =0x0000bbcc
- cmp r1, r0
- beq _0804DC48
- ldr r0, _0804DC20 @ =0x0000eeaa
- cmp r1, r0
- bne _0804DC52
- ldr r0, _0804DC24 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x78
- b _0804DC4E
- .align 2, 0
-_0804DC1C: .4byte 0x0000bbcc
-_0804DC20: .4byte 0x0000eeaa
-_0804DC24: .4byte gUnknown_2031DA8
-_0804DC28:
- ldr r0, _0804DC34 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x78
- strb r2, [r0]
- b _0804DC52
- .align 2, 0
-_0804DC34: .4byte gUnknown_2031DA8
-_0804DC38:
- ldr r0, _0804DC44 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x7A
- strb r2, [r0]
- b _0804DC52
- .align 2, 0
-_0804DC44: .4byte gUnknown_2031DA8
-_0804DC48:
- ldr r0, _0804DC80 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x7A
-_0804DC4E:
- movs r1, 0x2
- strb r1, [r0]
-_0804DC52:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_0804DC58:
- movs r2, 0x2
- adds r0, r4, 0
- ands r0, r2
- cmp r0, 0
- beq _0804DCEA
- ldr r3, _0804DC84 @ =gBlockRecvBuffer
- movs r1, 0x80
- lsls r1, 1
- adds r0, r3, r1
- ldrh r1, [r0]
- ldr r0, _0804DC88 @ =0x0000bbbb
- cmp r1, r0
- beq _0804DCCC
- cmp r1, r0
- bgt _0804DC90
- ldr r0, _0804DC8C @ =0x0000aabb
- cmp r1, r0
- beq _0804DCB0
- b _0804DCE4
- .align 2, 0
-_0804DC80: .4byte gUnknown_2031DA8
-_0804DC84: .4byte gBlockRecvBuffer
-_0804DC88: .4byte 0x0000bbbb
-_0804DC8C: .4byte 0x0000aabb
-_0804DC90:
- ldr r0, _0804DCA4 @ =0x0000bbcc
- cmp r1, r0
- beq _0804DCDC
- ldr r0, _0804DCA8 @ =0x0000eeaa
- cmp r1, r0
- bne _0804DCE4
- ldr r0, _0804DCAC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x79
- b _0804DCE2
- .align 2, 0
-_0804DCA4: .4byte 0x0000bbcc
-_0804DCA8: .4byte 0x0000eeaa
-_0804DCAC: .4byte gUnknown_2031DA8
-_0804DCB0:
- ldr r2, _0804DCC8 @ =gUnknown_2031DA8
- ldr r1, [r2]
- movs r4, 0x81
- lsls r4, 1
- adds r0, r3, r4
- ldrb r0, [r0]
- adds r0, 0x6
- adds r1, 0x7E
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x79
- b _0804DCD2
- .align 2, 0
-_0804DCC8: .4byte gUnknown_2031DA8
-_0804DCCC:
- ldr r0, _0804DCD8 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x7B
-_0804DCD2:
- movs r1, 0x1
- strb r1, [r0]
- b _0804DCE4
- .align 2, 0
-_0804DCD8: .4byte gUnknown_2031DA8
-_0804DCDC:
- ldr r0, _0804DCF0 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x7B
-_0804DCE2:
- strb r2, [r0]
-_0804DCE4:
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_0804DCEA:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DCF0: .4byte gUnknown_2031DA8
- thumb_func_end sub_804DBD4
-
- thumb_func_start sub_804DCF4
-sub_804DCF4: @ 804DCF4
- push {r4,r5,lr}
- sub sp, 0x4
- lsls r1, 24
- lsrs r5, r1, 24
- movs r0, 0x1
- ands r0, r5
- cmp r0, 0
- beq _0804DDD6
- ldr r2, _0804DD20 @ =gBlockRecvBuffer
- ldrh r1, [r2]
- ldr r0, _0804DD24 @ =0x0000ddee
- cmp r1, r0
- beq _0804DDC0
- cmp r1, r0
- bgt _0804DD30
- ldr r0, _0804DD28 @ =0x0000ccdd
- cmp r1, r0
- beq _0804DDA0
- ldr r0, _0804DD2C @ =0x0000dddd
- cmp r1, r0
- beq _0804DD6C
- b _0804DDD0
- .align 2, 0
-_0804DD20: .4byte gBlockRecvBuffer
-_0804DD24: .4byte 0x0000ddee
-_0804DD28: .4byte 0x0000ccdd
-_0804DD2C: .4byte 0x0000dddd
-_0804DD30:
- ldr r0, _0804DD40 @ =0x0000eebb
- cmp r1, r0
- beq _0804DD44
- adds r0, 0x11
- cmp r1, r0
- beq _0804DD68
- b _0804DDD0
- .align 2, 0
-_0804DD40: .4byte 0x0000eebb
-_0804DD44:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- movs r0, 0x4
- bl sub_804F5BC
- ldr r0, _0804DD64 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0xB
- b _0804DDCE
- .align 2, 0
-_0804DD64: .4byte gUnknown_2031DA8
-_0804DD68:
- movs r0, 0x5
- b _0804DDC2
-_0804DD6C:
- ldr r4, _0804DD9C @ =gUnknown_2031DA8
- ldr r1, [r4]
- ldrb r0, [r2, 0x2]
- adds r0, 0x6
- adds r1, 0x7E
- strb r0, [r1]
- movs r0, 0
- bl rbox_fill_rectangle
- ldr r0, [r4]
- adds r0, 0x35
- ldrb r0, [r0]
- bl sub_804EAAC
- ldr r0, [r4]
- adds r0, 0x7E
- ldrb r0, [r0]
- bl sub_804EAAC
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x7
- b _0804DDCE
- .align 2, 0
-_0804DD9C: .4byte gUnknown_2031DA8
-_0804DDA0:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0804DDBC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0xA
- b _0804DDCE
- .align 2, 0
-_0804DDBC: .4byte gUnknown_2031DA8
-_0804DDC0:
- movs r0, 0x1
-_0804DDC2:
- bl sub_804F5BC
- ldr r0, _0804DDEC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x8
-_0804DDCE:
- strb r1, [r0]
-_0804DDD0:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_0804DDD6:
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _0804DDE4
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_0804DDE4:
- add sp, 0x4
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DDEC: .4byte gUnknown_2031DA8
- thumb_func_end sub_804DCF4
-
- thumb_func_start sub_804DDF0
-sub_804DDF0: @ 804DDF0
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r6, _0804DE4C @ =gUnknown_2031DA8
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0x78
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804DE04
- b _0804DF38
-_0804DE04:
- adds r0, r2, 0
- adds r0, 0x79
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804DE10
- b _0804DF38
-_0804DE10:
- ldrh r1, [r1]
- ldr r0, _0804DE50 @ =0x00000101
- cmp r1, r0
- bne _0804DE58
- adds r1, r2, 0
- adds r1, 0x6F
- movs r0, 0x6
- strb r0, [r1]
- ldr r2, [r6]
- adds r1, r2, 0
- adds r1, 0x80
- movs r4, 0
- ldr r0, _0804DE54 @ =0x0000dddd
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x35
- ldrb r1, [r0]
- adds r0, 0x4D
- strh r1, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r6]
- adds r2, r0, 0
- adds r2, 0x79
- strb r4, [r2]
- adds r0, 0x78
- strb r4, [r0]
- b _0804DF38
- .align 2, 0
-_0804DE4C: .4byte gUnknown_2031DA8
-_0804DE50: .4byte 0x00000101
-_0804DE54: .4byte 0x0000dddd
-_0804DE58:
- ldr r0, _0804DEA0 @ =0x00000201
- cmp r1, r0
- bne _0804DEA8
- movs r0, 0x1
- bl sub_804F5BC
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0x80
- movs r4, 0
- movs r3, 0
- ldr r0, _0804DEA4 @ =0x0000eecc
- strh r0, [r2]
- adds r1, 0x82
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x7B
- strb r4, [r1]
- adds r0, 0x7A
- strb r4, [r0]
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x79
- strb r4, [r1]
- adds r0, 0x78
- strb r4, [r0]
- ldr r0, [r6]
- adds r0, 0x6F
- movs r1, 0x8
- b _0804DF36
- .align 2, 0
-_0804DEA0: .4byte 0x00000201
-_0804DEA4: .4byte 0x0000eecc
-_0804DEA8:
- movs r0, 0x81
- lsls r0, 1
- cmp r1, r0
- bne _0804DEF4
- movs r0, 0x5
- bl sub_804F5BC
- ldr r1, [r6]
- adds r2, r1, 0
- adds r2, 0x80
- movs r4, 0
- movs r3, 0
- ldr r0, _0804DEF0 @ =0x0000ddee
- strh r0, [r2]
- adds r1, 0x82
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x7B
- strb r4, [r1]
- adds r0, 0x7A
- strb r4, [r0]
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x79
- strb r4, [r1]
- adds r0, 0x78
- strb r4, [r0]
- ldr r0, [r6]
- adds r0, 0x6F
- movs r1, 0x8
- b _0804DF36
- .align 2, 0
-_0804DEF0: .4byte 0x0000ddee
-_0804DEF4:
- ldr r0, _0804DFD8 @ =0x00000202
- cmp r1, r0
- bne _0804DF38
- adds r1, r2, 0
- adds r1, 0x80
- movs r5, 0
- movs r4, 0
- ldr r0, _0804DFDC @ =0x0000eebb
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x82
- strh r4, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- movs r0, 0x1
- negs r0, r0
- str r4, [sp]
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r6]
- adds r1, r0, 0
- adds r1, 0x79
- strb r5, [r1]
- adds r0, 0x78
- strb r5, [r0]
- ldr r0, [r6]
- adds r0, 0x6F
- movs r1, 0xB
-_0804DF36:
- strb r1, [r0]
-_0804DF38:
- ldr r5, _0804DFE0 @ =gUnknown_2031DA8
- ldr r3, [r5]
- adds r1, r3, 0
- adds r1, 0x7A
- ldrb r0, [r1]
- cmp r0, 0
- beq _0804DFD0
- adds r0, r3, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804DFD0
- ldrh r1, [r1]
- ldr r0, _0804DFE4 @ =0x00000101
- cmp r1, r0
- bne _0804DF86
- adds r1, r3, 0
- adds r1, 0x80
- movs r4, 0
- movs r2, 0
- ldr r0, _0804DFE8 @ =0x0000ccdd
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0x82
- strh r2, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r5]
- adds r0, 0x7A
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x6F
- movs r1, 0x9
- strb r1, [r0]
-_0804DF86:
- ldr r1, [r5]
- adds r0, r1, 0
- adds r0, 0x7A
- ldrb r0, [r0]
- cmp r0, 0x2
- beq _0804DF9C
- adds r0, r1, 0
- adds r0, 0x7B
- ldrb r0, [r0]
- cmp r0, 0x2
- bne _0804DFD0
-_0804DF9C:
- movs r0, 0x1
- bl sub_804F5BC
- ldr r1, [r5]
- adds r2, r1, 0
- adds r2, 0x80
- movs r4, 0
- movs r3, 0
- ldr r0, _0804DFEC @ =0x0000ddee
- strh r0, [r2]
- adds r1, 0x82
- strh r3, [r1]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r0, [r5]
- adds r0, 0x7A
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x7B
- strb r4, [r0]
- ldr r0, [r5]
- adds r0, 0x6F
- movs r1, 0x8
- strb r1, [r0]
-_0804DFD0:
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804DFD8: .4byte 0x00000202
-_0804DFDC: .4byte 0x0000eebb
-_0804DFE0: .4byte gUnknown_2031DA8
-_0804DFE4: .4byte 0x00000101
-_0804DFE8: .4byte 0x0000ccdd
-_0804DFEC: .4byte 0x0000ddee
- thumb_func_end sub_804DDF0
-
- thumb_func_start sub_804DFF0
-sub_804DFF0: @ 804DFF0
- push {r4,lr}
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r4, r0, 24
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0804E018
- cmp r4, 0
- bne _0804E012
- movs r0, 0
- bl sub_804DBD4
- b _0804E018
-_0804E012:
- adds r0, r4, 0
- bl sub_804DCF4
-_0804E018:
- cmp r4, 0
- bne _0804E020
- bl sub_804DDF0
-_0804E020:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804DFF0
-
- thumb_func_start sub_804E028
-sub_804E028: @ 804E028
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- movs r6, 0
- movs r5, 0
- ldr r2, _0804E05C @ =gUnknown_2031DA8
- ldr r3, [r2]
- ldr r4, _0804E060 @ =gUnknown_8261D08
- lsls r2, r1, 1
- adds r2, r1
- lsls r2, 1
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 3
- adds r3, 0x38
- adds r2, r1
- adds r2, r4
-_0804E04E:
- ldrb r1, [r2]
- adds r0, r3, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- bne _0804E064
- adds r6, r1, 0
- b _0804E06C
- .align 2, 0
-_0804E05C: .4byte gUnknown_2031DA8
-_0804E060: .4byte gUnknown_8261D08
-_0804E064:
- adds r2, 0x1
- adds r5, 0x1
- cmp r5, 0x5
- ble _0804E04E
-_0804E06C:
- adds r0, r6, 0
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_804E028
-
- thumb_func_start TradeMenuMoveCursor
-TradeMenuMoveCursor: @ 804E074
- push {r4-r7,lr}
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldrb r0, [r7]
- bl sub_804E028
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xC
- bne _0804E0CC
- ldr r5, _0804E0C4 @ =gUnknown_2031DA8
- ldr r0, [r5]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _0804E0C8 @ =gSprites
- adds r0, r4
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r2, [r5]
- adds r2, 0x34
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xE0
- strh r1, [r0, 0x20]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r1, 0xA0
- strh r1, [r0, 0x22]
- b _0804E114
- .align 2, 0
-_0804E0C4: .4byte gUnknown_2031DA8
-_0804E0C8: .4byte gSprites
-_0804E0CC:
- ldr r4, _0804E128 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _0804E12C @ =gSprites
- adds r0, r5
- movs r1, 0
- bl StartSpriteAnim
- ldr r4, [r4]
- adds r4, 0x34
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- ldr r2, _0804E130 @ =gTradeMonSpriteCoords
- lsls r3, r6, 1
- adds r0, r3, r2
- ldrb r0, [r0]
- lsls r0, 3
- adds r0, 0x20
- strh r0, [r1, 0x20]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r5
- adds r2, 0x1
- adds r3, r2
- ldrb r0, [r3]
- lsls r0, 3
- strh r0, [r1, 0x22]
-_0804E114:
- ldrb r0, [r7]
- cmp r0, r6
- beq _0804E120
- movs r0, 0x5
- bl PlaySE
-_0804E120:
- strb r6, [r7]
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E128: .4byte gUnknown_2031DA8
-_0804E12C: .4byte gSprites
-_0804E130: .4byte gTradeMonSpriteCoords
- thumb_func_end TradeMenuMoveCursor
-
- thumb_func_start sub_804E134
-sub_804E134: @ 804E134
- push {r4,lr}
- movs r0, 0
- bl sub_804F5BC
- ldr r4, _0804E17C @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x5
- strb r1, [r0]
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0804E184
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0x80
- ldr r0, _0804E180 @ =0x0000aabb
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0x35
- ldrb r1, [r0]
- adds r0, 0x4D
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
- b _0804E18C
- .align 2, 0
-_0804E17C: .4byte gUnknown_2031DA8
-_0804E180: .4byte 0x0000aabb
-_0804E184:
- ldr r0, [r4]
- adds r0, 0x78
- movs r1, 0x1
- strb r1, [r0]
-_0804E18C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804E134
-
- thumb_func_start sub_804E194
-sub_804E194: @ 804E194
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r0, _0804E1B4 @ =gMain
- ldrh r1, [r0, 0x30]
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0804E1BC
- ldr r0, _0804E1B8 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x35
- movs r1, 0
- bl TradeMenuMoveCursor
- b _0804E208
- .align 2, 0
-_0804E1B4: .4byte gMain
-_0804E1B8: .4byte gUnknown_2031DA8
-_0804E1BC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0804E1D8
- ldr r0, _0804E1D4 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x35
- movs r1, 0x1
- bl TradeMenuMoveCursor
- b _0804E208
- .align 2, 0
-_0804E1D4: .4byte gUnknown_2031DA8
-_0804E1D8:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0804E1F4
- ldr r0, _0804E1F0 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x35
- movs r1, 0x2
- bl TradeMenuMoveCursor
- b _0804E208
- .align 2, 0
-_0804E1F0: .4byte gUnknown_2031DA8
-_0804E1F4:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0804E208
- ldr r0, _0804E27C @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x35
- movs r1, 0x3
- bl TradeMenuMoveCursor
-_0804E208:
- ldr r0, _0804E280 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r5, 0x1
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _0804E2DE
- movs r0, 0x5
- bl PlaySE
- ldr r4, _0804E27C @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x35
- ldrb r0, [r0]
- cmp r0, 0x5
- bhi _0804E288
- movs r0, 0x1
- movs r1, 0x1
- movs r2, 0xE
- bl DrawTextBorderOuter
- movs r0, 0x1
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, _0804E284 @ =gUnknown_8261EE4
- str r0, [sp]
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0x10
- movs r3, 0x2
- bl UnionRoomAndTradeMenuPrintOptions
- movs r0, 0x10
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r1, 0x3
- movs r2, 0
- movs r3, 0
- bl Menu_InitCursor
- movs r0, 0x1
- bl PutWindowTilemap
- movs r0, 0x1
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x1
- strb r1, [r0]
- b _0804E2DE
- .align 2, 0
-_0804E27C: .4byte gUnknown_2031DA8
-_0804E280: .4byte gMain
-_0804E284: .4byte gUnknown_8261EE4
-_0804E288:
- cmp r0, 0xB
- bhi _0804E2A6
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x2
- strb r1, [r0]
- b _0804E2DE
-_0804E2A6:
- cmp r0, 0xC
- bne _0804E2DE
- ldr r0, _0804E31C @ =gUnknown_8261FC4
- str r5, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x4
- strb r1, [r0]
- ldr r0, _0804E320 @ =gUnknown_8261ECC
- ldr r0, [r0, 0x10]
- ldr r1, [r4]
- adds r1, 0x72
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804E324 @ =0x06010000
- adds r1, r2
- movs r2, 0x18
- bl sub_804F728
-_0804E2DE:
- ldr r0, _0804E328 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x80
- lsls r0, 1
- ands r0, r1
- cmp r0, 0
- beq _0804E314
- movs r2, 0
- ldr r3, _0804E32C @ =gUnknown_2031DA8
-_0804E2F0:
- ldr r0, [r3]
- lsls r1, r2, 1
- adds r0, 0x80
- adds r0, r1
- strh r2, [r0]
- adds r2, 0x1
- cmp r2, 0x9
- ble _0804E2F0
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0804E32C @ =gUnknown_2031DA8
- ldr r1, [r1]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
-_0804E314:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E31C: .4byte gUnknown_8261FC4
-_0804E320: .4byte gUnknown_8261ECC
-_0804E324: .4byte 0x06010000
-_0804E328: .4byte gMain
-_0804E32C: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E194
-
- thumb_func_start sub_804E330
-sub_804E330: @ 804E330
- push {lr}
- bl sub_804F3B4
- ldr r3, _0804E378 @ =gUnknown_2031DA8
- ldr r0, [r3]
- adds r0, 0x6F
- movs r1, 0
- strb r1, [r0]
- ldr r2, _0804E37C @ =gSprites
- ldr r0, [r3]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, _0804E380 @ =gUnknown_8261ECC
- ldr r0, [r0, 0x4]
- ldr r1, [r3]
- adds r1, 0x72
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804E384 @ =0x06010000
- adds r1, r2
- movs r2, 0x18
- bl sub_804F728
- pop {r0}
- bx r0
- .align 2, 0
-_0804E378: .4byte gUnknown_2031DA8
-_0804E37C: .4byte gSprites
-_0804E380: .4byte gUnknown_8261ECC
-_0804E384: .4byte 0x06010000
- thumb_func_end sub_804E330
-
- thumb_func_start sub_804E388
-sub_804E388: @ 804E388
- push {lr}
- sub sp, 0x4
- bl Menu_ProcessInputNoWrapAround
- lsls r0, 24
- asrs r0, 24
- movs r1, 0x1
- negs r1, r1
- cmp r0, r1
- beq _0804E3AA
- cmp r0, r1
- ble _0804E462
- cmp r0, 0
- beq _0804E3B6
- cmp r0, 0x1
- beq _0804E3D4
- b _0804E462
-_0804E3AA:
- movs r0, 0x5
- bl PlaySE
- bl sub_804E330
- b _0804E462
-_0804E3B6:
- str r0, [sp]
- adds r0, r1, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0804E3D0 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x2
- b _0804E460
- .align 2, 0
-_0804E3D0: .4byte gUnknown_2031DA8
-_0804E3D4:
- ldr r0, _0804E3F4 @ =gPlayerParty
- ldr r1, _0804E3F8 @ =gPlayerPartyCount
- ldrb r1, [r1]
- ldr r2, _0804E3FC @ =gUnknown_2031DA8
- ldr r2, [r2]
- adds r2, 0x35
- ldrb r2, [r2]
- bl sub_804FA14
- cmp r0, 0x5
- bhi _0804E462
- lsls r0, 2
- ldr r1, _0804E400 @ =_0804E404
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E3F4: .4byte gPlayerParty
-_0804E3F8: .4byte gPlayerPartyCount
-_0804E3FC: .4byte gUnknown_2031DA8
-_0804E400: .4byte _0804E404
- .align 2, 0
-_0804E404:
- .4byte _0804E41C
- .4byte _0804E444
- .4byte _0804E44A
- .4byte _0804E450
- .4byte _0804E44A
- .4byte _0804E450
-_0804E41C:
- bl sub_804E134
- ldr r2, _0804E43C @ =gSprites
- ldr r0, _0804E440 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- b _0804E460
- .align 2, 0
-_0804E43C: .4byte gSprites
-_0804E440: .4byte gUnknown_2031DA8
-_0804E444:
- movs r0, 0x3
- movs r1, 0x3
- b _0804E454
-_0804E44A:
- movs r0, 0x3
- movs r1, 0x6
- b _0804E454
-_0804E450:
- movs r0, 0x3
- movs r1, 0x7
-_0804E454:
- bl sub_804F488
- ldr r0, _0804E468 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x8
-_0804E460:
- strb r1, [r0]
-_0804E462:
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0804E468: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E388
-
- thumb_func_start sub_804E46C
-sub_804E46C: @ 804E46C
- push {lr}
- ldr r0, _0804E490 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- bne _0804E482
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0804E48C
-_0804E482:
- movs r0, 0x5
- bl PlaySE
- bl sub_804E330
-_0804E48C:
- pop {r0}
- bx r0
- .align 2, 0
-_0804E490: .4byte gMain
- thumb_func_end sub_804E46C
-
- thumb_func_start sub_804E494
-sub_804E494: @ 804E494
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0804E4CC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E4FC
- ldr r0, _0804E4D0 @ =gUnknown_2031DA8
- ldr r2, [r0]
- adds r3, r2, 0
- adds r3, 0x35
- ldrb r1, [r3]
- cmp r1, 0x5
- bhi _0804E4DC
- ldr r0, _0804E4D4 @ =gPlayerParty
- ldrb r1, [r3]
- adds r2, 0x36
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _0804E4D8 @ =sub_804CF14
- movs r4, 0x4
- str r4, [sp]
- bl sub_81344F8
- b _0804E4F8
- .align 2, 0
-_0804E4CC: .4byte gPaletteFade
-_0804E4D0: .4byte gUnknown_2031DA8
-_0804E4D4: .4byte gPlayerParty
-_0804E4D8: .4byte sub_804CF14
-_0804E4DC:
- ldr r0, _0804E504 @ =gEnemyParty
- subs r1, 0x6
- lsls r1, 24
- lsrs r1, 24
- adds r2, 0x37
- ldrb r2, [r2]
- subs r2, 0x1
- lsls r2, 24
- lsrs r2, 24
- ldr r3, _0804E508 @ =sub_804CF14
- movs r4, 0x4
- str r4, [sp]
- bl sub_81344F8
-_0804E4F8:
- bl FreeAllWindowBuffers
-_0804E4FC:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E504: .4byte gEnemyParty
-_0804E508: .4byte sub_804CF14
- thumb_func_end sub_804E494
-
- thumb_func_start sub_804E50C
-sub_804E50C: @ 804E50C
- push {r4-r7,lr}
- adds r5, r0, 0
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- movs r4, 0
- movs r3, 0
- ldr r6, _0804E588 @ =gUnknown_2031DA8
- ldr r7, _0804E58C @ =gEnemyParty
- cmp r4, r1
- bge _0804E538
-_0804E524:
- cmp r2, r3
- beq _0804E532
- adds r0, r5, r3
- ldrb r0, [r0]
- adds r0, r4, r0
- lsls r0, 24
- lsrs r4, r0, 24
-_0804E532:
- adds r3, 0x1
- cmp r3, r1
- blt _0804E524
-_0804E538:
- ldr r0, [r6]
- adds r0, 0x7E
- ldrb r0, [r0]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r5, 0x64
- muls r0, r5
- adds r0, r7
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r1, r0, 16
- movs r0, 0xCD
- lsls r0, 1
- cmp r1, r0
- beq _0804E564
- cmp r1, 0x97
- bne _0804E590
-_0804E564:
- ldr r0, [r6]
- adds r0, 0x7E
- ldrb r0, [r0]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- muls r0, r5
- adds r0, r7
- movs r1, 0x50
- bl GetMonData
- cmp r0, 0
- bne _0804E590
- movs r0, 0x2
- b _0804E598
- .align 2, 0
-_0804E588: .4byte gUnknown_2031DA8
-_0804E58C: .4byte gEnemyParty
-_0804E590:
- cmp r4, 0
- beq _0804E596
- movs r4, 0x1
-_0804E596:
- adds r0, r4, 0
-_0804E598:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804E50C
-
- thumb_func_start sub_804E5A0
-sub_804E5A0: @ 804E5A0
- push {r4,r5,lr}
- sub sp, 0xC
- movs r2, 0
- ldr r0, _0804E5F4 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0x36
- adds r5, r0, 0
- ldrb r0, [r3]
- cmp r2, r0
- bge _0804E5CC
- adds r4, r1, 0
- adds r4, 0x45
-_0804E5BA:
- mov r1, sp
- adds r0, r1, r2
- adds r1, r4, r2
- ldrb r1, [r1]
- strb r1, [r0]
- adds r2, 0x1
- ldrb r0, [r3]
- cmp r2, r0
- blt _0804E5BA
-_0804E5CC:
- adds r4, r5, 0
- ldr r0, [r4]
- adds r1, r0, 0
- adds r1, 0x36
- ldrb r1, [r1]
- adds r0, 0x35
- ldrb r2, [r0]
- mov r0, sp
- bl sub_804E50C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0804E61C
- cmp r0, 0x1
- bgt _0804E5F8
- cmp r0, 0
- beq _0804E5FE
- b _0804E668
- .align 2, 0
-_0804E5F4: .4byte gUnknown_2031DA8
-_0804E5F8:
- cmp r0, 0x2
- beq _0804E650
- b _0804E668
-_0804E5FE:
- movs r0, 0x3
- movs r1, 0x3
- bl sub_804F488
- ldr r0, [r4]
- adds r0, 0x80
- ldr r1, _0804E618 @ =0x0000bbcc
- strh r1, [r0]
- movs r0, 0xB4
- movs r1, 0
- bl sub_804F488
- b _0804E668
- .align 2, 0
-_0804E618: .4byte 0x0000bbcc
-_0804E61C:
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804F488
- ldr r0, [r4]
- adds r0, 0x80
- ldr r1, _0804E64C @ =0x0000bbbb
- strh r1, [r0]
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0804E668
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
- b _0804E668
- .align 2, 0
-_0804E64C: .4byte 0x0000bbbb
-_0804E650:
- movs r0, 0x3
- movs r1, 0x8
- bl sub_804F488
- ldr r0, [r5]
- adds r0, 0x80
- ldr r1, _0804E670 @ =0x0000bbcc
- strh r1, [r0]
- movs r0, 0xB4
- movs r1, 0
- bl sub_804F488
-_0804E668:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E670: .4byte 0x0000bbcc
- thumb_func_end sub_804E5A0
-
- thumb_func_start sub_804E674
-sub_804E674: @ 804E674
- push {r4,lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r1, r0, 24
- cmp r1, 0
- beq _0804E696
- cmp r1, 0
- bgt _0804E690
- movs r0, 0x1
- negs r0, r0
- cmp r1, r0
- beq _0804E6B0
- b _0804E6EE
-_0804E690:
- cmp r1, 0x1
- beq _0804E6B0
- b _0804E6EE
-_0804E696:
- bl sub_804E5A0
- ldr r0, _0804E6AC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x64
- strb r1, [r0]
- movs r0, 0x11
- bl PutWindowTilemap
- b _0804E6EE
- .align 2, 0
-_0804E6AC: .4byte gUnknown_2031DA8
-_0804E6B0:
- movs r0, 0x3
- movs r1, 0x1
- bl sub_804F488
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0804E6DE
- ldr r4, _0804E6F4 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x80
- ldr r1, _0804E6F8 @ =0x0000bbcc
- strh r1, [r0]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
-_0804E6DE:
- ldr r0, _0804E6F4 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x64
- strb r1, [r0]
- movs r0, 0x11
- bl PutWindowTilemap
-_0804E6EE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E6F4: .4byte gUnknown_2031DA8
-_0804E6F8: .4byte 0x0000bbcc
- thumb_func_end sub_804E674
-
- thumb_func_start sub_804E6FC
-sub_804E6FC: @ 804E6FC
- push {r4-r6,lr}
- movs r5, 0
- ldr r0, _0804E740 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x37
- ldrb r0, [r0]
- subs r0, 0x4
- cmp r5, r0
- bge _0804E738
- movs r6, 0xC0
- lsls r6, 20
-_0804E712:
- lsrs r4, r6, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x1
- bl CopyWindowToVram
- movs r0, 0x80
- lsls r0, 17
- adds r6, r0
- adds r5, 0x1
- ldr r0, _0804E740 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x37
- ldrb r0, [r0]
- subs r0, 0x4
- cmp r5, r0
- blt _0804E712
-_0804E738:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E740: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E6FC
-
- thumb_func_start sub_804E744
-sub_804E744: @ 804E744
- push {r4,r5,lr}
- bl Menu_ProcessInputNoWrapClearOnChoose
- lsls r0, 24
- asrs r5, r0, 24
- cmp r5, 0
- beq _0804E766
- cmp r5, 0
- bgt _0804E760
- movs r0, 0x1
- negs r0, r0
- cmp r5, r0
- beq _0804E7B8
- b _0804E7C2
-_0804E760:
- cmp r5, 0x1
- beq _0804E7B8
- b _0804E7C2
-_0804E766:
- movs r0, 0x4
- bl sub_804F5BC
- ldr r4, _0804E7AC @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0x80
- ldr r1, _0804E7B0 @ =0x0000eeaa
- strh r1, [r2]
- adds r0, 0x82
- strh r5, [r0]
- movs r0, 0x5
- movs r1, 0
- bl sub_804F488
- ldr r2, _0804E7B4 @ =gSprites
- ldr r0, [r4]
- adds r0, 0x34
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x64
- strb r1, [r0]
- bl sub_804E6FC
- b _0804E7C2
- .align 2, 0
-_0804E7AC: .4byte gUnknown_2031DA8
-_0804E7B0: .4byte 0x0000eeaa
-_0804E7B4: .4byte gSprites
-_0804E7B8:
- movs r0, 0x5
- bl PlaySE
- bl sub_804E330
-_0804E7C2:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_804E744
-
- thumb_func_start sub_804E7C8
-sub_804E7C8: @ 804E7C8
- push {r4,lr}
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _0804E7F0
- movs r0, 0
- bl rbox_fill_rectangle
- ldr r4, _0804E800 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x35
- ldrb r0, [r0]
- bl sub_804EAAC
- ldr r0, [r4]
- adds r0, 0x7E
- ldrb r0, [r0]
- bl sub_804EAAC
-_0804E7F0:
- ldr r0, _0804E800 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0x7
- strb r1, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E800: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E7C8
-
- thumb_func_start sub_804E804
-sub_804E804: @ 804E804
- push {r4,lr}
- ldr r4, _0804E828 @ =gUnknown_2031DA8
- ldr r0, [r4]
- adds r0, 0x74
- ldrh r1, [r0]
- ldr r0, _0804E82C @ =0x00000505
- cmp r1, r0
- bne _0804E820
- bl sub_804DBAC
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0xE
- strb r1, [r0]
-_0804E820:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E828: .4byte gUnknown_2031DA8
-_0804E82C: .4byte 0x00000505
- thumb_func_end sub_804E804
-
- thumb_func_start sub_804E830
-sub_804E830: @ 804E830
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r4, _0804E878 @ =gUnknown_2031DA8
- ldr r1, [r4]
- adds r1, 0xA8
- ldrb r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, 0xA8
- ldrb r0, [r0]
- cmp r0, 0x78
- bls _0804E870
- ldr r0, _0804E87C @ =gUnknown_8261FC4
- movs r1, 0x1
- str r1, [sp]
- movs r1, 0xE
- str r1, [sp, 0x4]
- str r5, [sp, 0x8]
- movs r1, 0x3
- movs r2, 0
- movs r3, 0x2
- bl CreateYesNoMenu
- ldr r0, [r4]
- adds r0, 0xA8
- strb r5, [r0]
- ldr r0, [r4]
- adds r0, 0x6F
- movs r1, 0x3
- strb r1, [r0]
-_0804E870:
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E878: .4byte gUnknown_2031DA8
-_0804E87C: .4byte gUnknown_8261FC4
- thumb_func_end sub_804E830
-
- thumb_func_start sub_804E880
-sub_804E880: @ 804E880
- push {r4-r6,lr}
- ldr r0, _0804E8FC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0804E8F4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- bl rbox_fill_rectangle
- movs r0, 0x1
- bl rbox_fill_rectangle
- movs r6, 0
- movs r5, 0xE0
- lsls r5, 20
-_0804E8A6:
- lsrs r4, r5, 24
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- bl rbox_fill_rectangle
- movs r0, 0x80
- lsls r0, 17
- adds r5, r0
- adds r6, 0x1
- cmp r6, 0x3
- ble _0804E8A6
- movs r0, 0
- bl sub_804F3C8
- movs r0, 0x1
- bl sub_804F3C8
- ldr r2, _0804E900 @ =gUnknown_2031DA8
- ldr r0, [r2]
- adds r0, 0x6F
- movs r1, 0
- strb r1, [r0]
- ldr r3, _0804E904 @ =gSprites
- ldr r0, [r2]
- adds r0, 0x34
- 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]
-_0804E8F4:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804E8FC: .4byte gMain
-_0804E900: .4byte gUnknown_2031DA8
-_0804E904: .4byte gSprites
- thumb_func_end sub_804E880
-
- thumb_func_start sub_804E908
-sub_804E908: @ 804E908
- push {lr}
- ldr r0, _0804E924 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0804E93C
- ldr r0, _0804E928 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804E92C
- bl sub_800AB9C
- b _0804E932
- .align 2, 0
-_0804E924: .4byte gPaletteFade
-_0804E928: .4byte gWirelessCommType
-_0804E92C:
- movs r0, 0xC
- bl sub_800AA80
-_0804E932:
- ldr r0, _0804E940 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0xC
- strb r1, [r0]
-_0804E93C:
- pop {r0}
- bx r0
- .align 2, 0
-_0804E940: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E908
-
- thumb_func_start sub_804E944
-sub_804E944: @ 804E944
- push {lr}
- ldr r0, _0804E978 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804E988
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _0804E9AA
- ldr r0, _0804E97C @ =gUnknown_2031C90
- ldr r0, [r0]
- bl Free
- ldr r0, _0804E980 @ =gUnknown_2031DA8
- ldr r0, [r0]
- bl Free
- bl FreeAllWindowBuffers
- bl DestroyWirelessStatusIndicatorSprite
- ldr r0, _0804E984 @ =c2_8056854
- bl SetMainCallback2
- b _0804E9AA
- .align 2, 0
-_0804E978: .4byte gWirelessCommType
-_0804E97C: .4byte gUnknown_2031C90
-_0804E980: .4byte gUnknown_2031DA8
-_0804E984: .4byte c2_8056854
-_0804E988:
- ldr r0, _0804E9B0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804E9AA
- ldr r0, _0804E9B4 @ =gUnknown_2031C90
- ldr r0, [r0]
- bl Free
- ldr r0, _0804E9B8 @ =gUnknown_2031DA8
- ldr r0, [r0]
- bl Free
- bl FreeAllWindowBuffers
- ldr r0, _0804E9BC @ =c2_8056854
- bl SetMainCallback2
-_0804E9AA:
- pop {r0}
- bx r0
- .align 2, 0
-_0804E9B0: .4byte gReceivedRemoteLinkPlayers
-_0804E9B4: .4byte gUnknown_2031C90
-_0804E9B8: .4byte gUnknown_2031DA8
-_0804E9BC: .4byte c2_8056854
- thumb_func_end sub_804E944
-
- thumb_func_start sub_804E9C0
-sub_804E9C0: @ 804E9C0
- push {lr}
- movs r0, 0
- bl sub_80FA484
- lsls r0, 24
- cmp r0, 0
- bne _0804E9DC
- bl sub_800AB9C
- ldr r0, _0804E9E0 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- movs r1, 0xD
- strb r1, [r0]
-_0804E9DC:
- pop {r0}
- bx r0
- .align 2, 0
-_0804E9E0: .4byte gUnknown_2031DA8
- thumb_func_end sub_804E9C0
-
- thumb_func_start sub_804E9E4
-sub_804E9E4: @ 804E9E4
- push {lr}
- ldr r0, _0804E9FC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x6F
- ldrb r0, [r0]
- cmp r0, 0x10
- bhi _0804EAA6
- lsls r0, 2
- ldr r1, _0804EA00 @ =_0804EA04
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804E9FC: .4byte gUnknown_2031DA8
-_0804EA00: .4byte _0804EA04
- .align 2, 0
-_0804EA04:
- .4byte _0804EA48
- .4byte _0804EA4E
- .4byte _0804EA54
- .4byte _0804EA5A
- .4byte _0804EA60
- .4byte _0804EAA6
- .4byte _0804EA66
- .4byte _0804EA6C
- .4byte _0804EA72
- .4byte _0804EA78
- .4byte _0804EA7E
- .4byte _0804EA84
- .4byte _0804EA8A
- .4byte _0804EA90
- .4byte _0804EA96
- .4byte _0804EA9C
- .4byte _0804EAA2
-_0804EA48:
- bl sub_804E194
- b _0804EAA6
-_0804EA4E:
- bl sub_804E388
- b _0804EAA6
-_0804EA54:
- bl sub_804E494
- b _0804EAA6
-_0804EA5A:
- bl sub_804E674
- b _0804EAA6
-_0804EA60:
- bl sub_804E744
- b _0804EAA6
-_0804EA66:
- bl sub_804E7C8
- b _0804EAA6
-_0804EA6C:
- bl sub_804E804
- b _0804EAA6
-_0804EA72:
- bl sub_804E880
- b _0804EAA6
-_0804EA78:
- bl sub_804D50C
- b _0804EAA6
-_0804EA7E:
- bl sub_804D548
- b _0804EAA6
-_0804EA84:
- bl sub_804E908
- b _0804EAA6
-_0804EA8A:
- bl sub_804E944
- b _0804EAA6
-_0804EA90:
- bl sub_804D5A4
- b _0804EAA6
-_0804EA96:
- bl sub_804E830
- b _0804EAA6
-_0804EA9C:
- bl sub_804E46C
- b _0804EAA6
-_0804EAA2:
- bl sub_804E9C0
-_0804EAA6:
- pop {r0}
- bx r0
- thumb_func_end sub_804E9E4
-
- thumb_func_start sub_804EAAC
-sub_804EAAC: @ 804EAAC
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- adds r0, r4, 0
- movs r1, 0x6
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r3, _0804EAE0 @ =gUnknown_2031DA8
- ldr r0, [r3]
- adds r0, 0x74
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804EAD8
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, [r3]
- adds r0, 0x76
- adds r0, r2
- strb r4, [r0]
-_0804EAD8:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804EAE0: .4byte gUnknown_2031DA8
- thumb_func_end sub_804EAAC
-
- thumb_func_start sub_804EAE4
-sub_804EAE4: @ 804EAE4
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x68
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0804EB34 @ =gUnknown_2031DA8
- ldr r4, [r0]
- adds r0, r4, 0
- adds r0, 0x76
- adds r0, r7
- ldrb r0, [r0]
- movs r1, 0x1
- str r1, [sp, 0x60]
- cmp r0, 0x5
- bhi _0804EB0C
- movs r2, 0
- str r2, [sp, 0x60]
-_0804EB0C:
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- movs r0, 0
- mov r8, r0
- adds r0, r4, 0
- adds r0, 0x74
- adds r3, r0, r7
- ldrb r0, [r3]
- cmp r0, 0x2
- bne _0804EB2A
- b _0804ECB4
-_0804EB2A:
- cmp r0, 0x2
- bgt _0804EB38
- cmp r0, 0x1
- beq _0804EB46
- b _0804EE54
- .align 2, 0
-_0804EB34: .4byte gUnknown_2031DA8
-_0804EB38:
- cmp r0, 0x3
- bne _0804EB3E
- b _0804ECEC
-_0804EB3E:
- cmp r0, 0x4
- bne _0804EB44
- b _0804EE1C
-_0804EB44:
- b _0804EE54
-_0804EB46:
- movs r5, 0
- adds r0, r4, 0
- adds r0, 0x36
- adds r0, r7
- ldr r1, [sp, 0x60]
- lsls r1, 1
- mov r9, r1
- lsls r6, r7, 1
- lsls r2, r7, 4
- str r2, [sp, 0x64]
- ldrb r0, [r0]
- cmp r8, r0
- bcs _0804EB9A
- ldr r0, _0804ECA0 @ =gSprites
- mov r8, r0
- ldr r4, _0804ECA4 @ =gUnknown_2031DA8
- ldr r0, [sp, 0x60]
- add r0, r9
- lsls r2, r0, 1
- movs r3, 0x4
-_0804EB6E:
- ldr r0, [r4]
- adds r1, r5, r2
- adds r0, 0x28
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, [r4]
- adds r0, 0x36
- adds r0, r7
- ldrb r0, [r0]
- cmp r5, r0
- bcc _0804EB6E
-_0804EB9A:
- movs r5, 0
- adds r0, r6, r7
- lsls r0, 1
- adds r4, r0, 0x2
-_0804EBA2:
- lsls r0, r5, 24
- asrs r0, 24
- adds r0, r4
- lsls r0, 24
- lsrs r0, 24
- bl ClearWindowTilemap
- adds r0, r5, 0x1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x5
- bls _0804EBA2
- ldr r1, _0804ECA0 @ =gSprites
- mov r8, r1
- ldr r2, _0804ECA4 @ =gUnknown_2031DA8
- ldr r0, [r2]
- ldr r6, [sp, 0x60]
- add r6, r9
- lsls r3, r6, 1
- add r10, r3
- adds r0, 0x28
- add r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- adds r0, 0x3E
- ldrb r2, [r0]
- movs r1, 0x5
- negs r1, r1
- ands r1, r2
- strb r1, [r0]
- ldr r0, _0804ECA4 @ =gUnknown_2031DA8
- ldr r4, [r0]
- adds r4, 0x28
- add r4, r10
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- movs r1, 0x14
- strh r1, [r0, 0x2E]
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- add r2, r8
- ldr r5, _0804ECA8 @ =gTradeMonSpriteCoords
- lsls r6, 2
- adds r0, r6, r5
- ldrb r0, [r0]
- adds r3, 0x1
- lsls r3, 1
- adds r3, r5
- ldrb r1, [r3]
- adds r0, r1
- asrs r0, 1
- lsls r0, 3
- adds r0, 0xE
- strh r0, [r2, 0x32]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- add r1, r8
- adds r5, 0x1
- adds r6, r5
- ldrb r0, [r6]
- lsls r0, 3
- subs r0, 0xC
- strh r0, [r1, 0x36]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- ldr r1, _0804ECAC @ =SpriteCB_MonIcon
- bl StoreSpriteCallbackInData6
- ldr r2, _0804ECA4 @ =gUnknown_2031DA8
- ldr r1, [r2]
- adds r1, 0x74
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x28
- add r0, r10
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- add r0, r8
- bl sub_8075490
- ldr r1, _0804ECB0 @ =gUnknown_8260A32
- ldr r0, [sp, 0x64]
- subs r2, r0, r7
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0xF
- str r0, [sp]
- movs r0, 0x11
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- ldr r1, [sp, 0x60]
- cmp r1, 0
- beq _0804EC98
- b _0804EE54
-_0804EC98:
- bl sub_804F3B4
- b _0804EE54
- .align 2, 0
-_0804ECA0: .4byte gSprites
-_0804ECA4: .4byte gUnknown_2031DA8
-_0804ECA8: .4byte gTradeMonSpriteCoords
-_0804ECAC: .4byte SpriteCB_MonIcon
-_0804ECB0: .4byte gUnknown_8260A32
-_0804ECB4:
- ldr r2, _0804ECE4 @ =gSprites
- ldr r1, [sp, 0x60]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- add r0, r10
- adds r1, r4, 0
- adds r1, 0x28
- adds r1, r0
- ldrb r1, [r1]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, [r0]
- ldr r0, _0804ECE8 @ =SpriteCB_MonIcon
- cmp r1, r0
- beq _0804ECDC
- b _0804EE54
-_0804ECDC:
- movs r0, 0x3
- strb r0, [r3]
- b _0804EE54
- .align 2, 0
-_0804ECE4: .4byte gSprites
-_0804ECE8: .4byte SpriteCB_MonIcon
-_0804ECEC:
- ldr r1, _0804EE08 @ =gUnknown_8260834
- ldr r0, [sp, 0x60]
- lsls r2, r0, 4
- subs r2, r0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0xF
- str r0, [sp]
- movs r0, 0x11
- str r0, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- ldr r6, _0804EE0C @ =gSprites
- ldr r1, _0804EE10 @ =gUnknown_2031DA8
- ldr r4, [r1]
- ldr r2, [sp, 0x60]
- lsls r3, r2, 1
- adds r3, r2
- lsls r1, r3, 1
- mov r2, r10
- adds r0, r2, r1
- adds r4, 0x28
- adds r4, r0
- ldrb r0, [r4]
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r6
- ldr r5, _0804EE14 @ =gTradeMonSpriteCoords
- lsls r3, 2
- adds r0, r3, r5
- ldrb r0, [r0]
- adds r1, 0x1
- lsls r1, 1
- adds r1, r5
- ldrb r1, [r1]
- adds r0, r1
- asrs r0, 1
- lsls r0, 3
- adds r0, 0xE
- strh r0, [r2, 0x20]
- ldrb r0, [r4]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r5, 0x1
- adds r3, r5
- ldrb r0, [r3]
- lsls r0, 3
- subs r0, 0xC
- strh r0, [r1, 0x22]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r8
- strh r1, [r0, 0x24]
- ldrb r1, [r4]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r2, r8
- strh r2, [r0, 0x26]
- add r0, sp, 0x14
- ldr r1, [sp, 0x60]
- mov r2, r10
- bl sub_804EE6C
- lsls r4, r7, 1
- adds r5, r4, 0
- adds r5, 0xE
- lsls r5, 24
- lsrs r5, 24
- lsls r0, 24
- asrs r0, 24
- movs r2, 0x50
- subs r2, r0
- lsrs r0, r2, 31
- adds r2, r0
- asrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0804EE18 @ =gUnknown_8261F18
- mov r8, r0
- str r0, [sp]
- movs r1, 0
- str r1, [sp, 0x4]
- add r0, sp, 0x14
- str r0, [sp, 0x8]
- adds r0, r5, 0
- movs r3, 0x4
- bl AddTextPrinterParameterized3
- add r6, sp, 0x28
- adds r0, r6, 0
- ldr r1, [sp, 0x60]
- mov r2, r10
- bl sub_804EED4
- adds r4, 0xF
- lsls r4, 24
- lsrs r4, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- mov r2, r8
- str r2, [sp, 0x8]
- str r1, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r0, r4, 0
- movs r1, 0x1
- movs r2, 0
- movs r3, 0
- bl AddTextPrinterParameterized4
- adds r0, r5, 0
- bl PutWindowTilemap
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- ldr r0, _0804EE10 @ =gUnknown_2031DA8
- ldr r1, [r0]
- b _0804EE4A
- .align 2, 0
-_0804EE08: .4byte gUnknown_8260834
-_0804EE0C: .4byte gSprites
-_0804EE10: .4byte gUnknown_2031DA8
-_0804EE14: .4byte gTradeMonSpriteCoords
-_0804EE18: .4byte gUnknown_8261F18
-_0804EE1C:
- ldr r0, _0804EE64 @ =gUnknown_8262055
- lsls r1, r7, 1
- adds r4, r1, r0
- ldrb r2, [r4]
- adds r2, 0x4
- lsls r2, 24
- lsrs r2, 24
- adds r0, 0x1
- adds r1, r0
- ldrb r3, [r1]
- adds r3, 0x1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r4]
- str r0, [sp]
- ldrb r0, [r1]
- str r0, [sp, 0x4]
- adds r0, r7, 0
- mov r1, r10
- bl sub_804F08C
- ldr r2, _0804EE68 @ =gUnknown_2031DA8
- ldr r1, [r2]
-_0804EE4A:
- adds r1, 0x74
- adds r1, r7
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_0804EE54:
- add sp, 0x68
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804EE64: .4byte gUnknown_8262055
-_0804EE68: .4byte gUnknown_2031DA8
- thumb_func_end sub_804EAE4
-
- thumb_func_start sub_804EE6C
-sub_804EE6C: @ 804EE6C
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r1, 24
- lsls r2, 24
- lsrs r2, 24
- cmp r1, 0
- bne _0804EE94
- movs r0, 0x64
- muls r0, r2
- ldr r1, _0804EE90 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- b _0804EEA4
- .align 2, 0
-_0804EE90: .4byte gPlayerParty
-_0804EE94:
- movs r0, 0x64
- muls r0, r2
- ldr r1, _0804EED0 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
-_0804EEA4:
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy10
- movs r0, 0
- movs r1, 0x2
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0
- adds r1, r4, 0
- bl GetStringWidth
- lsls r0, 24
- lsrs r0, 24
- add sp, 0xC
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0804EED0: .4byte gEnemyParty
- thumb_func_end sub_804EE6C
-
- thumb_func_start sub_804EED4
-sub_804EED4: @ 804EED4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x8
- adds r6, r0, 0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0804EF1C @ =gUnknown_2031DA8
- ldr r1, [r0]
- lsls r0, r7, 1
- adds r0, r7
- lsls r0, 1
- adds r0, r2, r0
- adds r1, 0x51
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804EF8C
- movs r4, 0
- movs r0, 0x64
- adds r5, r2, 0
- muls r5, r0
- ldr r0, _0804EF20 @ =gPlayerParty
- mov r9, r0
- ldr r2, _0804EF24 @ =gEnemyParty
- mov r8, r2
-_0804EF0E:
- cmp r7, 0
- bne _0804EF28
- adds r1, r4, 0
- adds r1, 0xD
- mov r2, r9
- b _0804EF2E
- .align 2, 0
-_0804EF1C: .4byte gUnknown_2031DA8
-_0804EF20: .4byte gPlayerParty
-_0804EF24: .4byte gEnemyParty
-_0804EF28:
- adds r1, r4, 0
- adds r1, 0xD
- mov r2, r8
-_0804EF2E:
- adds r0, r5, r2
- movs r2, 0
- bl GetMonData
- lsls r1, r4, 1
- add r1, sp
- strh r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _0804EF0E
- ldr r1, _0804EF80 @ =gUnknown_8261EB6
- adds r0, r6, 0
- bl StringCopy
- movs r4, 0
-_0804EF50:
- lsls r0, r4, 1
- mov r2, sp
- adds r1, r2, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _0804EF6C
- adds r1, r0, 0
- movs r0, 0xD
- muls r1, r0
- ldr r0, _0804EF84 @ =gMoveNames
- adds r1, r0
- adds r0, r6, 0
- bl StringAppend
-_0804EF6C:
- adds r0, r6, 0
- ldr r1, _0804EF88 @ =gUnknown_8261EC7
- bl StringAppend
- adds r0, r4, 0x1
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0x3
- bls _0804EF50
- b _0804EF9C
- .align 2, 0
-_0804EF80: .4byte gUnknown_8261EB6
-_0804EF84: .4byte gMoveNames
-_0804EF88: .4byte gUnknown_8261EC7
-_0804EF8C:
- ldr r1, _0804EFAC @ =gUnknown_8261EB6
- adds r0, r6, 0
- bl StringCopy
- ldr r1, _0804EFB0 @ =gUnknown_841E09F
- adds r0, r6, 0
- bl StringAppend
-_0804EF9C:
- add sp, 0x8
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804EFAC: .4byte gUnknown_8261EB6
-_0804EFB0: .4byte gUnknown_841E09F
- thumb_func_end sub_804EED4
-
- thumb_func_start sub_804EFB4
-sub_804EFB4: @ 804EFB4
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r6, r2, 0
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 1
- adds r1, 0x2
- lsls r4, 24
- asrs r4, 24
- adds r4, r1
- lsls r4, 24
- lsrs r4, 24
- movs r5, 0
- movs r0, 0
- movs r1, 0x2
- bl GetFontAttribute
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0
- adds r1, r6, 0
- bl GetStringWidth
- movs r2, 0x40
- subs r2, r0
- lsrs r2, 1
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0804F01C @ =gUnknown_8261F18
- str r0, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- adds r0, r4, 0
- movs r1, 0
- movs r3, 0x4
- bl AddTextPrinterParameterized3
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F01C: .4byte gUnknown_8261F18
- thumb_func_end sub_804EFB4
-
- thumb_func_start sub_804F020
-sub_804F020: @ 804F020
- push {r4-r7,lr}
- sub sp, 0x34
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r7, _0804F080 @ =gEnemyParty
- cmp r6, 0
- bne _0804F030
- ldr r7, _0804F084 @ =gPlayerParty
-_0804F030:
- movs r4, 0
- ldr r0, _0804F088 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x36
- adds r0, r6
- ldrb r0, [r0]
- cmp r4, r0
- bcs _0804F076
- add r5, sp, 0x14
-_0804F042:
- movs r0, 0x64
- muls r0, r4
- adds r0, r7, r0
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- adds r0, r5, 0
- mov r1, sp
- bl StringCopy10
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r5, 0
- bl sub_804EFB4
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0804F088 @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x36
- adds r0, r6
- ldrb r0, [r0]
- cmp r4, r0
- bcc _0804F042
-_0804F076:
- add sp, 0x34
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F080: .4byte gEnemyParty
-_0804F084: .4byte gPlayerParty
-_0804F088: .4byte gUnknown_2031DA8
- thumb_func_end sub_804F020
-
- thumb_func_start sub_804F08C
-sub_804F08C: @ 804F08C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _0804F0E8 @ =gUnknown_8E9F1FC
- movs r0, 0x6
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r0, 0x1
- adds r2, r4, 0
- adds r3, r5, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- mov r0, r8
- cmp r0, 0
- bne _0804F0F0
- movs r0, 0x64
- muls r0, r7
- ldr r1, _0804F0EC @ =gPlayerParty
- b _0804F0F6
- .align 2, 0
-_0804F0E8: .4byte gUnknown_8E9F1FC
-_0804F0EC: .4byte gPlayerParty
-_0804F0F0:
- movs r0, 0x64
- muls r0, r7
- ldr r1, _0804F16C @ =gEnemyParty
-_0804F0F6:
- adds r0, r1
- movs r1, 0x38
- movs r2, 0
- bl GetMonData
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r4, _0804F170 @ =gUnknown_2031DA8
- ldr r5, [r4]
- mov r1, r8
- lsls r2, r1, 1
- adds r1, r2, r1
- lsls r1, 1
- adds r1, r7, r1
- adds r0, r5, 0
- adds r0, 0x51
- adds r0, r1
- ldrb r0, [r0]
- str r2, [sp, 0x18]
- cmp r0, 0
- bne _0804F174
- adds r0, r6, 0
- movs r1, 0xA
- bl __udivsi3
- lsls r0, 24
- lsrs r2, r0, 24
- mov r0, r10
- lsls r3, r0, 5
- cmp r2, 0
- beq _0804F148
- mov r1, r9
- adds r0, r1, r3
- lsls r0, 1
- movs r1, 0x8F
- lsls r1, 4
- adds r5, r1
- adds r1, r5, r0
- adds r0, r2, 0
- adds r0, 0x60
- strh r0, [r1]
-_0804F148:
- ldr r4, [r4]
- mov r1, r9
- adds r0, r1, r3
- adds r0, 0x1
- lsls r0, 1
- movs r3, 0x8F
- lsls r3, 4
- adds r4, r3
- adds r4, r0
- adds r0, r6, 0
- movs r1, 0xA
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- adds r0, 0x70
- strh r0, [r4]
- b _0804F1B2
- .align 2, 0
-_0804F16C: .4byte gEnemyParty
-_0804F170: .4byte gUnknown_2031DA8
-_0804F174:
- mov r1, r10
- lsls r0, r1, 5
- mov r1, r9
- adds r3, r1, r0
- adds r1, r3, 0
- subs r1, 0x20
- lsls r1, 1
- movs r0, 0x8F
- lsls r0, 4
- adds r2, r5, r0
- adds r1, r2, r1
- adds r0, r3, 0
- subs r0, 0x21
- lsls r0, 1
- adds r0, r2, r0
- ldrh r0, [r0]
- strh r0, [r1]
- adds r1, r3, 0
- subs r1, 0x1F
- lsls r1, 1
- adds r1, r2, r1
- adds r0, r3, 0
- subs r0, 0x24
- lsls r0, 1
- adds r2, r0
- ldrh r2, [r2]
- movs r3, 0x80
- lsls r3, 3
- adds r0, r3, 0
- orrs r0, r2
- strh r0, [r1]
-_0804F1B2:
- ldr r0, _0804F1D0 @ =gUnknown_2031DA8
- ldr r1, [r0]
- ldr r0, [sp, 0x18]
- add r0, r8
- lsls r0, 1
- adds r0, r7, r0
- adds r1, 0x51
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- beq _0804F1D4
- movs r2, 0x90
- lsls r2, 3
- b _0804F256
- .align 2, 0
-_0804F1D0: .4byte gUnknown_2031DA8
-_0804F1D4:
- mov r0, r8
- cmp r0, 0
- bne _0804F200
- movs r0, 0x64
- adds r4, r7, 0
- muls r4, r0
- ldr r0, _0804F1FC @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- movs r1, 0x2
- add r2, sp, 0xC
- bl GetMonData
- b _0804F21E
- .align 2, 0
-_0804F1FC: .4byte gPlayerParty
-_0804F200:
- movs r0, 0x64
- adds r4, r7, 0
- muls r4, r0
- ldr r0, _0804F22C @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- bl GetMonGender
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0
- movs r1, 0x2
- add r2, sp, 0xC
- bl GetMonData
-_0804F21E:
- cmp r5, 0
- beq _0804F230
- cmp r5, 0xFE
- beq _0804F244
- movs r2, 0x83
- b _0804F256
- .align 2, 0
-_0804F22C: .4byte gEnemyParty
-_0804F230:
- add r0, sp, 0xC
- movs r1, 0
- bl NameHasGenderSymbol
- lsls r0, 24
- movs r2, 0x83
- cmp r0, 0
- bne _0804F256
- movs r2, 0x84
- b _0804F256
-_0804F244:
- add r0, sp, 0xC
- movs r1, 0xFE
- bl NameHasGenderSymbol
- lsls r0, 24
- movs r2, 0x83
- cmp r0, 0
- bne _0804F256
- movs r2, 0x85
-_0804F256:
- ldr r0, _0804F280 @ =gUnknown_2031DA8
- ldr r1, [r0]
- mov r0, r10
- subs r0, 0x1
- lsls r0, 5
- add r0, r9
- adds r0, 0x1
- lsls r0, 1
- movs r3, 0x8F
- lsls r3, 4
- adds r1, r3
- adds r1, r0
- strh r2, [r1]
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F280: .4byte gUnknown_2031DA8
- thumb_func_end sub_804F08C
-
- thumb_func_start sub_804F284
-sub_804F284: @ 804F284
- push {r4-r7,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r6, r0, 24
- movs r7, 0
- ldr r0, _0804F2DC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x36
- adds r0, r6
- ldrb r0, [r0]
- cmp r7, r0
- bge _0804F2D4
- lsls r0, r6, 1
- adds r0, r6
- ldr r1, _0804F2E0 @ =gUnknown_8261E5A
- lsls r0, 2
- adds r5, r0, r1
- ldr r1, _0804F2E4 @ =gUnknown_8261E72
- adds r4, r0, r1
-_0804F2AA:
- lsls r1, r7, 24
- lsrs r1, 24
- ldrb r2, [r5]
- ldrb r3, [r5, 0x1]
- ldrb r0, [r4]
- str r0, [sp]
- ldrb r0, [r4, 0x1]
- str r0, [sp, 0x4]
- adds r0, r6, 0
- bl sub_804F08C
- adds r5, 0x2
- adds r4, 0x2
- adds r7, 0x1
- ldr r0, _0804F2DC @ =gUnknown_2031DA8
- ldr r0, [r0]
- adds r0, 0x36
- adds r0, r6
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804F2AA
-_0804F2D4:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F2DC: .4byte gUnknown_2031DA8
-_0804F2E0: .4byte gUnknown_8261E5A
-_0804F2E4: .4byte gUnknown_8261E72
- thumb_func_end sub_804F284
-
- thumb_func_start sub_804F2E8
-sub_804F2E8: @ 804F2E8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- movs r7, 0
- ldr r3, _0804F3A8 @ =gUnknown_2031DA8
- ldr r0, [r3]
- adds r0, 0x36
- add r0, r12
- ldrb r0, [r0]
- cmp r7, r0
- bge _0804F39A
- ldr r6, _0804F3AC @ =gSprites
- mov r9, r3
- mov r1, r12
- lsls r0, r1, 1
- add r0, r12
- lsls r2, r0, 1
- mov r10, r2
- ldr r1, _0804F3B0 @ =gTradeMonSpriteCoords
- movs r2, 0
- mov r8, r2
- lsls r0, 2
- adds r5, r0, r1
-_0804F320:
- mov r1, r9
- ldr r0, [r1]
- mov r2, r10
- adds r4, r7, r2
- adds r0, 0x28
- adds r0, r4
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- adds r1, 0x3E
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- mov r0, r9
- ldr r3, [r0]
- adds r2, r3, 0
- adds r2, 0x28
- adds r2, r4
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r5]
- lsls r0, 3
- adds r0, 0xE
- strh r0, [r1, 0x20]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r0, [r5, 0x1]
- lsls r0, 3
- subs r0, 0xC
- strh r0, [r1, 0x22]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r1, r8
- strh r1, [r0, 0x24]
- ldrb r1, [r2]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r6
- mov r2, r8
- strh r2, [r0, 0x26]
- adds r5, 0x2
- adds r7, 0x1
- adds r3, 0x36
- add r3, r12
- ldrb r3, [r3]
- cmp r7, r3
- blt _0804F320
-_0804F39A:
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F3A8: .4byte gUnknown_2031DA8
-_0804F3AC: .4byte gSprites
-_0804F3B0: .4byte gTradeMonSpriteCoords
- thumb_func_end sub_804F2E8
-
- thumb_func_start sub_804F3B4
-sub_804F3B4: @ 804F3B4
- push {lr}
- movs r0, 0x1
- bl rbox_fill_rectangle
- movs r0, 0x1
- bl sub_804F020
- pop {r0}
- bx r0
- thumb_func_end sub_804F3B4
-
- thumb_func_start sub_804F3C8
-sub_804F3C8: @ 804F3C8
- push {r4-r6,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0804F430 @ =gUnknown_8260A32
- lsls r2, r4, 4
- subs r2, r4
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0xF
- str r0, [sp]
- movs r0, 0x11
- str r0, [sp, 0x4]
- movs r6, 0
- str r6, [sp, 0x8]
- movs r0, 0x1
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- adds r0, r4, 0
- bl sub_804F284
- adds r0, r4, 0
- bl sub_804F020
- adds r0, r4, 0
- bl sub_804F2E8
- ldr r0, _0804F434 @ =gUnknown_8261ECC
- ldr r0, [r0, 0x4]
- ldr r5, _0804F438 @ =gUnknown_2031DA8
- ldr r1, [r5]
- adds r1, 0x72
- ldrh r1, [r1]
- lsls r1, 5
- ldr r2, _0804F43C @ =0x06010000
- adds r1, r2
- movs r2, 0x18
- bl sub_804F728
- ldr r0, [r5]
- adds r0, 0x74
- adds r0, r4
- strb r6, [r0]
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F430: .4byte gUnknown_8260A32
-_0804F434: .4byte gUnknown_8261ECC
-_0804F438: .4byte gUnknown_2031DA8
-_0804F43C: .4byte 0x06010000
- thumb_func_end sub_804F3C8
-
- thumb_func_start sub_804F440
-sub_804F440: @ 804F440
- push {lr}
- sub sp, 0x8
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_804F440
-
- thumb_func_start sub_804F464
-sub_804F464: @ 804F464
- push {lr}
- sub sp, 0x8
- movs r0, 0x1E
- str r0, [sp]
- movs r0, 0x14
- str r0, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_804F464
-
- thumb_func_start sub_804F488
-sub_804F488: @ 804F488
- push {r4-r7,lr}
- lsls r0, 16
- lsrs r5, r0, 16
- lsls r1, 24
- lsrs r6, r1, 24
- movs r3, 0
- ldr r4, _0804F4C8 @ =gUnknown_2031DA8
- mov r12, r4
- movs r7, 0x8D
- lsls r7, 4
-_0804F49C:
- mov r1, r12
- ldr r0, [r1]
- lsls r1, r3, 3
- adds r2, r0, r1
- adds r0, r2, r7
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804F4D0
- ldr r3, _0804F4CC @ =0x000008d2
- adds r0, r2, r3
- strh r5, [r0]
- adds r3, 0x2
- adds r0, r2, r3
- strb r6, [r0]
- ldr r0, [r4]
- adds r0, r1
- movs r1, 0x8D
- lsls r1, 4
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- b _0804F4D6
- .align 2, 0
-_0804F4C8: .4byte gUnknown_2031DA8
-_0804F4CC: .4byte 0x000008d2
-_0804F4D0:
- adds r3, 0x1
- cmp r3, 0x3
- ble _0804F49C
-_0804F4D6:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_804F488
-
- thumb_func_start sub_804F4DC
-sub_804F4DC: @ 804F4DC
- push {r4,r5,lr}
- movs r4, 0
- ldr r3, _0804F508 @ =gUnknown_2031DA8
-_0804F4E2:
- ldr r0, [r3]
- lsls r1, r4, 3
- adds r2, r0, r1
- movs r5, 0x8D
- lsls r5, 4
- adds r0, r2, r5
- ldrb r0, [r0]
- adds r5, r1, 0
- cmp r0, 0
- beq _0804F5AC
- ldr r0, _0804F50C @ =0x000008d2
- adds r1, r2, r0
- ldrh r0, [r1]
- cmp r0, 0
- beq _0804F510
- subs r0, 0x1
- strh r0, [r1]
- b _0804F5AC
- .align 2, 0
-_0804F508: .4byte gUnknown_2031DA8
-_0804F50C: .4byte 0x000008d2
-_0804F510:
- ldr r1, _0804F524 @ =0x000008d4
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0x8
- bhi _0804F59A
- lsls r0, 2
- ldr r1, _0804F528 @ =_0804F52C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804F524: .4byte 0x000008d4
-_0804F528: .4byte _0804F52C
- .align 2, 0
-_0804F52C:
- .4byte _0804F550
- .4byte _0804F56C
- .4byte _0804F574
- .4byte _0804F57C
- .4byte _0804F57C
- .4byte _0804F57C
- .4byte _0804F584
- .4byte _0804F58C
- .4byte _0804F594
-_0804F550:
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0804F568 @ =gUnknown_2031DA8
- ldr r1, [r1]
- adds r1, 0x80
- movs r2, 0x14
- bl SendBlock
- b _0804F59A
- .align 2, 0
-_0804F568: .4byte gUnknown_2031DA8
-_0804F56C:
- movs r0, 0
- bl sub_804F5BC
- b _0804F59A
-_0804F574:
- movs r0, 0x2
- bl sub_804F5BC
- b _0804F59A
-_0804F57C:
- movs r0, 0x3
- bl sub_804F5BC
- b _0804F59A
-_0804F584:
- movs r0, 0x6
- bl sub_804F5BC
- b _0804F59A
-_0804F58C:
- movs r0, 0x7
- bl sub_804F5BC
- b _0804F59A
-_0804F594:
- movs r0, 0x8
- bl sub_804F5BC
-_0804F59A:
- ldr r0, _0804F5B8 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r1, r5
- movs r2, 0x8D
- lsls r2, 4
- adds r1, r2
- movs r2, 0
- strb r2, [r1]
- adds r3, r0, 0
-_0804F5AC:
- adds r4, 0x1
- cmp r4, 0x3
- ble _0804F4E2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F5B8: .4byte gUnknown_2031DA8
- thumb_func_end sub_804F4DC
-
- thumb_func_start sub_804F5BC
-sub_804F5BC: @ 804F5BC
- push {r4,lr}
- sub sp, 0xC
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- ldr r0, _0804F60C @ =gUnknown_8261EF4
- lsls r4, 2
- adds r4, r0
- ldr r2, [r4]
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- movs r1, 0x3
- movs r3, 0
- bl AddTextPrinterParameterized
- movs r0, 0
- movs r1, 0x14
- movs r2, 0xC
- bl DrawTextBorderOuter
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0xC
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F60C: .4byte gUnknown_8261EF4
- thumb_func_end sub_804F5BC
-
- thumb_func_start sub_804F610
-sub_804F610: @ 804F610
- push {r4,lr}
- sub sp, 0x8
- ldr r0, _0804F660 @ =gUnknown_2031DA8
- ldr r1, [r0]
- adds r3, r1, 0
- adds r3, 0xA8
- ldrb r1, [r3]
- adds r4, r0, 0
- cmp r1, 0xD
- bhi _0804F64C
- ldr r1, _0804F664 @ =gUnknown_2031C94
- ldrb r0, [r3]
- lsls r0, 2
- adds r0, r1
- ldr r0, [r0]
- str r0, [sp]
- ldr r0, _0804F668 @ =0xffff0000
- ldr r2, [sp, 0x4]
- ands r2, r0
- movs r0, 0x80
- lsls r0, 1
- orrs r2, r0
- str r2, [sp, 0x4]
- ldrb r1, [r3]
- adds r1, 0xC8
- lsls r1, 16
- ldr r0, _0804F66C @ =0x0000ffff
- ands r0, r2
- orrs r0, r1
- str r0, [sp, 0x4]
-_0804F64C:
- ldr r0, [r4]
- adds r0, 0xA8
- ldrb r0, [r0]
- cmp r0, 0x11
- bhi _0804F71C
- lsls r0, 2
- ldr r1, _0804F670 @ =_0804F674
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0804F660: .4byte gUnknown_2031DA8
-_0804F664: .4byte gUnknown_2031C94
-_0804F668: .4byte 0xffff0000
-_0804F66C: .4byte 0x0000ffff
-_0804F670: .4byte _0804F674
- .align 2, 0
-_0804F674:
- .4byte _0804F6BC
- .4byte _0804F6BC
- .4byte _0804F6BC
- .4byte _0804F6BC
- .4byte _0804F6BC
- .4byte _0804F6BC
- .4byte _0804F6BC
- .4byte _0804F6BC
- .4byte _0804F6C0
- .4byte _0804F6D8
- .4byte _0804F6D8
- .4byte _0804F6D8
- .4byte _0804F6D8
- .4byte _0804F6D8
- .4byte _0804F6DC
- .4byte _0804F6E8
- .4byte _0804F6F4
- .4byte _0804F710
-_0804F6BC:
- mov r0, sp
- b _0804F6F6
-_0804F6C0:
- mov r0, sp
- bl LoadSpriteSheet
- ldr r1, _0804F6D4 @ =gUnknown_2031DA8
- ldr r1, [r1]
- adds r2, r1, 0
- adds r2, 0x72
- strh r0, [r2]
- b _0804F6FE
- .align 2, 0
-_0804F6D4: .4byte gUnknown_2031DA8
-_0804F6D8:
- mov r0, sp
- b _0804F6F6
-_0804F6DC:
- ldr r0, _0804F6E4 @ =gUnknown_8261D00
- bl LoadSpritePalette
- b _0804F6FA
- .align 2, 0
-_0804F6E4: .4byte gUnknown_8261D00
-_0804F6E8:
- ldr r0, _0804F6F0 @ =gUnknown_8261C60
- bl LoadSpritePalette
- b _0804F6FA
- .align 2, 0
-_0804F6F0: .4byte gUnknown_8261C60
-_0804F6F4:
- ldr r0, _0804F708 @ =gUnknown_8261C58
-_0804F6F6:
- bl LoadSpriteSheet
-_0804F6FA:
- ldr r0, _0804F70C @ =gUnknown_2031DA8
- ldr r1, [r0]
-_0804F6FE:
- adds r1, 0xA8
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0804F71C
- .align 2, 0
-_0804F708: .4byte gUnknown_8261C58
-_0804F70C: .4byte gUnknown_2031DA8
-_0804F710:
- ldr r0, [r4]
- adds r0, 0xA8
- movs r1, 0
- strb r1, [r0]
- movs r0, 0x1
- b _0804F71E
-_0804F71C:
- movs r0, 0
-_0804F71E:
- add sp, 0x8
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_804F610
-
- thumb_func_start sub_804F728
-sub_804F728: @ 804F728
- push {lr}
- sub sp, 0x8
- ldr r2, _0804F744 @ =gDecompressionBuffer
- str r2, [sp]
- movs r2, 0x6
- str r2, [sp, 0x4]
- movs r2, 0
- movs r3, 0
- bl sub_808BEB4
- add sp, 0x8
- pop {r0}
- bx r0
- .align 2, 0
-_0804F744: .4byte gDecompressionBuffer
- thumb_func_end sub_804F728
-
- thumb_func_start sub_804F748
-sub_804F748: @ 804F748
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- cmp r0, 0
- beq _0804F760
- cmp r0, 0x1
- beq _0804F7F4
- b _0804F880
-_0804F760:
- movs r7, 0
- ldr r1, _0804F7A0 @ =gUnknown_2031DA8
- ldr r0, [r1]
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804F770
- b _0804F880
-_0804F770:
- adds r6, r1, 0
- movs r5, 0
- mov r9, r5
-_0804F776:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _0804F7A4 @ =gPlayerParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0x1
- bne _0804F7A8
- ldr r0, [r6]
- adds r0, 0x45
- adds r0, r5
- mov r2, r9
- strb r2, [r0]
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- b _0804F7D8
- .align 2, 0
-_0804F7A0: .4byte gUnknown_2031DA8
-_0804F7A4: .4byte gPlayerParty
-_0804F7A8:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _0804F7C6
- ldr r0, [r6]
- adds r0, 0x45
- adds r0, r5
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- b _0804F7D8
-_0804F7C6:
- ldr r0, [r6]
- adds r0, 0x45
- adds r0, r5
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- mov r1, r9
-_0804F7D8:
- strb r1, [r0]
- ldr r0, _0804F7F0 @ =gUnknown_2031DA8
- adds r5, 0x1
- adds r7, 0x1
- ldr r0, [r0]
- adds r0, 0x36
- add r0, r8
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804F776
- b _0804F880
- .align 2, 0
-_0804F7F0: .4byte gUnknown_2031DA8
-_0804F7F4:
- movs r7, 0
- ldr r1, _0804F834 @ =gUnknown_2031DA8
- ldr r0, [r1]
- adds r0, 0x37
- ldrb r0, [r0]
- cmp r7, r0
- bge _0804F880
- adds r6, r1, 0
- movs r5, 0x6
- movs r2, 0
- mov r9, r2
-_0804F80A:
- movs r0, 0x64
- adds r1, r7, 0
- muls r1, r0
- ldr r0, _0804F838 @ =gEnemyParty
- adds r4, r1, r0
- adds r0, r4, 0
- movs r1, 0x2D
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0x1
- bne _0804F83C
- ldr r0, [r6]
- adds r0, 0x45
- adds r0, r5
- mov r2, r9
- strb r2, [r0]
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- b _0804F86C
- .align 2, 0
-_0804F834: .4byte gUnknown_2031DA8
-_0804F838: .4byte gEnemyParty
-_0804F83C:
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- adds r1, r0, 0
- cmp r1, 0
- bne _0804F85A
- ldr r0, [r6]
- adds r0, 0x45
- adds r0, r5
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- b _0804F86C
-_0804F85A:
- ldr r0, [r6]
- adds r0, 0x45
- adds r0, r5
- movs r1, 0x1
- strb r1, [r0]
- ldr r0, [r6]
- adds r0, 0x51
- adds r0, r5
- mov r1, r9
-_0804F86C:
- strb r1, [r0]
- ldr r0, _0804F88C @ =gUnknown_2031DA8
- adds r5, 0x1
- adds r7, 0x1
- ldr r0, [r0]
- adds r0, 0x36
- add r0, r8
- ldrb r0, [r0]
- cmp r7, r0
- blt _0804F80A
-_0804F880:
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F88C: .4byte gUnknown_2031DA8
- thumb_func_end sub_804F748
-
- thumb_func_start sub_804F890
-sub_804F890: @ 804F890
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0
- beq _0804F8A0
- cmp r0, 0x1
- beq _0804F900
- b _0804F954
-_0804F8A0:
- movs r6, 0
- ldr r1, _0804F8F8 @ =gUnknown_2031DA8
- ldr r0, [r1]
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r6, r0
- bcs _0804F954
- adds r7, r1, 0
-_0804F8B0:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804F8FC @ =gPlayerParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r0, r5, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl GetHPBarLevel
- ldr r1, [r7]
- adds r1, 0x5D
- adds r1, r6
- strb r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, [r7]
- adds r0, 0x36
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0804F8B0
- b _0804F954
- .align 2, 0
-_0804F8F8: .4byte gUnknown_2031DA8
-_0804F8FC: .4byte gPlayerParty
-_0804F900:
- movs r6, 0
- ldr r1, _0804F95C @ =gUnknown_2031DA8
- ldr r0, [r1]
- adds r0, 0x37
- ldrb r0, [r0]
- cmp r6, r0
- bcs _0804F954
- adds r7, r1, 0
-_0804F910:
- movs r0, 0x64
- adds r4, r6, 0
- muls r4, r0
- ldr r0, _0804F960 @ =gEnemyParty
- adds r4, r0
- adds r0, r4, 0
- movs r1, 0x39
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- adds r0, r4, 0
- movs r1, 0x3A
- bl GetMonData
- adds r1, r0, 0
- lsls r0, r5, 16
- asrs r0, 16
- lsls r1, 16
- asrs r1, 16
- bl GetHPBarLevel
- ldr r1, [r7]
- adds r1, 0x63
- adds r1, r6
- strb r0, [r1]
- adds r0, r6, 0x1
- lsls r0, 16
- lsrs r6, r0, 16
- ldr r0, [r7]
- adds r0, 0x37
- ldrb r0, [r0]
- cmp r6, r0
- bcc _0804F910
-_0804F954:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F95C: .4byte gUnknown_2031DA8
-_0804F960: .4byte gEnemyParty
- thumb_func_end sub_804F890
-
- thumb_func_start sub_804F964
-sub_804F964: @ 804F964
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r5, 0
-_0804F96C:
- movs r4, 0
- ldr r2, _0804F9D0 @ =gUnknown_2031DA8
- ldr r0, [r2]
- adds r0, 0x36
- adds r0, r5
- adds r1, r5, 0x1
- mov r8, r1
- ldrb r0, [r0]
- cmp r4, r0
- bge _0804F9BE
- adds r6, r2, 0
- lsls r0, r5, 1
- adds r0, r5
- lsls r7, r0, 1
-_0804F988:
- ldr r2, [r6]
- adds r3, r4, r7
- adds r0, r2, 0
- adds r0, 0x28
- adds r0, r3
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0804F9D4 @ =gSprites
- adds r0, r1
- adds r2, 0x5D
- adds r2, r3
- ldrb r2, [r2]
- movs r1, 0x4
- subs r1, r2
- lsls r1, 24
- lsrs r1, 24
- bl MonIcon_SetAnim
- adds r4, 0x1
- ldr r0, [r6]
- adds r0, 0x36
- adds r0, r5
- ldrb r0, [r0]
- cmp r4, r0
- blt _0804F988
-_0804F9BE:
- mov r5, r8
- cmp r5, 0x1
- ble _0804F96C
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0804F9D0: .4byte gUnknown_2031DA8
-_0804F9D4: .4byte gSprites
- thumb_func_end sub_804F964
-
- thumb_func_start sub_804F9D8
-sub_804F9D8: @ 804F9D8
- push {r4,r5,lr}
- movs r2, 0
- ldr r5, _0804FA08 @ =gSaveBlock1Ptr
- ldr r4, _0804FA0C @ =0x0000309c
- ldr r3, _0804FA10 @ =gUnknown_2031DA8
-_0804F9E2:
- ldr r0, [r5]
- adds r0, r4
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- bne _0804F9FC
- ldr r0, [r3]
- adds r0, 0xA9
- adds r0, r2
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804F9FC
- strb r0, [r1]
-_0804F9FC:
- adds r2, 0x1
- cmp r2, 0xA
- ble _0804F9E2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FA08: .4byte gSaveBlock1Ptr
-_0804FA0C: .4byte 0x0000309c
-_0804FA10: .4byte gUnknown_2031DA8
- thumb_func_end sub_804F9D8
-
- thumb_func_start sub_804FA14
-sub_804FA14: @ 804FA14
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x30
- mov r8, r0
- adds r7, r1, 0
- mov r9, r2
- movs r5, 0
- cmp r5, r7
- bge _0804FA4E
- mov r6, sp
-_0804FA2C:
- movs r0, 0x64
- adds r4, r5, 0
- muls r4, r0
- add r4, r8
- adds r0, r4, 0
- movs r1, 0x41
- bl GetMonData
- str r0, [r6, 0x18]
- adds r0, r4, 0
- movs r1, 0xB
- bl GetMonData
- stm r6!, {r0}
- adds r5, 0x1
- cmp r5, r7
- blt _0804FA2C
-_0804FA4E:
- bl IsNationalPokedexEnabled
- mov r1, r9
- lsls r4, r1, 2
- cmp r0, 0
- bne _0804FA70
- add r0, sp, 0x18
- adds r0, r4
- ldr r0, [r0]
- cmp r0, 0x97
- ble _0804FA68
- movs r0, 0x2
- b _0804FB24
-_0804FA68:
- cmp r0, 0
- bne _0804FA70
- movs r0, 0x3
- b _0804FB24
-_0804FA70:
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _0804FAB0 @ =gLinkPlayers
- adds r1, r0
- ldrb r0, [r1]
- subs r0, 0x1
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0804FAB8
- ldrb r1, [r1, 0x12]
- movs r0, 0xF
- ands r0, r1
- cmp r0, 0
- bne _0804FAB8
- add r0, sp, 0x18
- adds r0, r4
- ldr r1, [r0]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- bne _0804FAB4
- movs r0, 0x5
- b _0804FB24
- .align 2, 0
-_0804FAB0: .4byte gLinkPlayers
-_0804FAB4:
- cmp r1, 0x97
- bgt _0804FADE
-_0804FAB8:
- mov r1, sp
- adds r0, r1, r4
- ldr r1, [r0]
- movs r0, 0xCD
- lsls r0, 1
- cmp r1, r0
- beq _0804FACA
- cmp r1, 0x97
- bne _0804FAE2
-_0804FACA:
- movs r0, 0x64
- mov r1, r9
- muls r1, r0
- adds r0, r1, 0
- add r0, r8
- movs r1, 0x50
- bl GetMonData
- cmp r0, 0
- bne _0804FAE2
-_0804FADE:
- movs r0, 0x4
- b _0804FB24
-_0804FAE2:
- cmp r7, 0
- ble _0804FB00
- movs r3, 0xCE
- lsls r3, 1
- movs r2, 0
- add r1, sp, 0x18
- adds r5, r7, 0
-_0804FAF0:
- ldr r0, [r1]
- cmp r0, r3
- bne _0804FAF8
- str r2, [r1]
-_0804FAF8:
- adds r1, 0x4
- subs r5, 0x1
- cmp r5, 0
- bne _0804FAF0
-_0804FB00:
- movs r2, 0
- movs r5, 0
- cmp r2, r7
- bge _0804FB1A
- add r1, sp, 0x18
-_0804FB0A:
- cmp r5, r9
- beq _0804FB12
- ldr r0, [r1]
- adds r2, r0
-_0804FB12:
- adds r1, 0x4
- adds r5, 0x1
- cmp r5, r7
- blt _0804FB0A
-_0804FB1A:
- cmp r2, 0
- bne _0804FB22
- movs r0, 0x1
- b _0804FB24
-_0804FB22:
- movs r0, 0
-_0804FB24:
- add sp, 0x30
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804FA14
-
- thumb_func_start sub_804FB34
-sub_804FB34: @ 804FB34
- push {r4-r7,lr}
- ldr r0, _0804FBB4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _0804FBC0
- bl GetMultiplayerId
- ldr r6, _0804FBB8 @ =gLinkPlayers
- movs r7, 0x1
- eors r0, r7
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r1, [r1]
- subs r0, r1, 0x4
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0x1
- bls _0804FBC0
- subs r0, r1, 0x1
- lsls r0, 16
- lsrs r0, 16
- movs r4, 0x2
- cmp r0, 0x1
- bhi _0804FB6E
- movs r4, 0x1
-_0804FB6E:
- cmp r4, 0
- ble _0804FBC0
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r1, [r1, 0x12]
- movs r5, 0xF0
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- beq _0804FBBC
- cmp r4, 0x2
- bne _0804FBC0
- bl GetMultiplayerId
- eors r0, r7
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r1, r6
- ldrb r1, [r1, 0x12]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0
- bne _0804FBC0
- movs r0, 0x2
- b _0804FBC2
- .align 2, 0
-_0804FBB4: .4byte gReceivedRemoteLinkPlayers
-_0804FBB8: .4byte gLinkPlayers
-_0804FBBC:
- movs r0, 0x1
- b _0804FBC2
-_0804FBC0:
- movs r0, 0
-_0804FBC2:
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804FB34
-
- thumb_func_start sub_804FBC8
-sub_804FBC8: @ 804FBC8
- push {lr}
- lsls r0, 16
- lsrs r2, r0, 16
- lsls r1, 24
- lsrs r1, 24
- movs r0, 0xCD
- lsls r0, 1
- cmp r2, r0
- beq _0804FBDE
- cmp r2, 0x97
- bne _0804FBE6
-_0804FBDE:
- cmp r1, 0
- bne _0804FBE6
- movs r0, 0x1
- b _0804FBE8
-_0804FBE6:
- movs r0, 0
-_0804FBE8:
- pop {r1}
- bx r1
- thumb_func_end sub_804FBC8
-
- thumb_func_start sub_804FBEC
-sub_804FBEC: @ 804FBEC
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- ldr r4, [sp, 0x24]
- ldr r5, [sp, 0x28]
- ldr r6, [sp, 0x2C]
- lsls r2, 16
- lsrs r7, r2, 16
- lsls r3, 16
- lsrs r3, 16
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 24
- lsrs r6, 24
- lsls r2, r0, 23
- lsrs r2, 31
- mov r9, r2
- lsls r0, 24
- lsrs r4, r0, 31
- lsls r0, r1, 23
- lsrs r0, 31
- mov r10, r0
- lsls r0, r1, 24
- lsrs r0, 31
- lsls r1, 18
- lsrs r1, 28
- subs r1, 0x4
- lsls r1, 24
- lsrs r1, 24
- movs r2, 0x1
- cmp r1, 0x1
- bhi _0804FC3A
- movs r2, 0
-_0804FC3A:
- cmp r2, 0
- beq _0804FC4E
- cmp r4, 0
- bne _0804FC46
- movs r0, 0x8
- b _0804FCCE
-_0804FC46:
- cmp r0, 0
- bne _0804FC4E
- movs r0, 0x9
- b _0804FCCE
-_0804FC4E:
- adds r0, r5, 0
- adds r1, r6, 0
- str r3, [sp]
- bl sub_804FBC8
- ldr r3, [sp]
- cmp r0, 0
- bne _0804FCB2
- movs r0, 0xCE
- lsls r0, 1
- cmp r3, r0
- bne _0804FC6E
- cmp r7, r3
- beq _0804FC8C
- movs r0, 0x2
- b _0804FCCE
-_0804FC6E:
- ldr r0, _0804FC88 @ =gBaseStats
- lsls r1, r7, 3
- subs r1, r7
- lsls r1, 2
- adds r1, r0
- ldrb r0, [r1, 0x6]
- cmp r0, r8
- beq _0804FC8C
- ldrb r0, [r1, 0x7]
- cmp r0, r8
- beq _0804FC8C
- movs r0, 0x1
- b _0804FCCE
- .align 2, 0
-_0804FC88: .4byte gBaseStats
-_0804FC8C:
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- bne _0804FC9C
- cmp r7, r3
- beq _0804FC9C
- movs r0, 0x3
- b _0804FCCE
-_0804FC9C:
- mov r0, r9
- cmp r0, 0
- bne _0804FCBE
- movs r0, 0xCE
- lsls r0, 1
- cmp r7, r0
- bne _0804FCAE
- movs r0, 0x6
- b _0804FCCE
-_0804FCAE:
- cmp r7, 0x97
- bls _0804FCB6
-_0804FCB2:
- movs r0, 0x4
- b _0804FCCE
-_0804FCB6:
- cmp r3, 0x97
- bls _0804FCBE
- movs r0, 0x5
- b _0804FCCE
-_0804FCBE:
- mov r0, r10
- cmp r0, 0
- bne _0804FCCC
- cmp r7, 0x97
- bls _0804FCCC
- movs r0, 0x7
- b _0804FCCE
-_0804FCCC:
- movs r0, 0
-_0804FCCE:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_804FBEC
-
- thumb_func_start sub_804FCE0
-sub_804FCE0: @ 804FCE0
- push {r4-r6,lr}
- lsls r1, 16
- lsrs r5, r1, 16
- adds r6, r5, 0
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r3, 24
- lsls r0, 23
- lsrs r4, r0, 31
- adds r0, r2, 0
- adds r1, r3, 0
- bl sub_804FBC8
- cmp r0, 0
- bne _0804FD18
- cmp r4, 0
- bne _0804FD1C
- movs r0, 0xCE
- lsls r0, 1
- cmp r5, r0
- bne _0804FD10
- movs r0, 0x2
- b _0804FD1E
-_0804FD10:
- cmp r6, 0x97
- bls _0804FD1C
- cmp r6, r0
- beq _0804FD1C
-_0804FD18:
- movs r0, 0x1
- b _0804FD1E
-_0804FD1C:
- movs r0, 0
-_0804FD1E:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_804FCE0
-
- thumb_func_start sub_804FD24
-sub_804FD24: @ 804FD24
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0804FD40
- movs r0, 0x17
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2E]
-_0804FD40:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804FD24
-
- thumb_func_start sub_804FD48
-sub_804FD48: @ 804FD48
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0804FD72
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA
- bne _0804FD72
- movs r0, 0xBB
- bl PlaySE
- strh r5, [r4, 0x2E]
-_0804FD72:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_804FD48
-
- thumb_func_start sub_804FD78
-sub_804FD78: @ 804FD78
- push {lr}
- adds r2, r0, 0
- movs r0, 0x30
- ldrsh r1, [r2, r0]
- cmp r1, 0
- bne _0804FDAE
- ldrh r0, [r2, 0x2E]
- adds r0, 0x1
- strh r0, [r2, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xC
- bne _0804FD94
- strh r1, [r2, 0x2E]
-_0804FD94:
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- lsls r0, 1
- ldr r1, _0804FDB4 @ =gUnknown_826CF60
- adds r0, r1
- ldrb r1, [r2, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- lsls r1, 4
- adds r1, 0x4
- movs r2, 0x2
- bl LoadPalette
-_0804FDAE:
- pop {r0}
- bx r0
- .align 2, 0
-_0804FDB4: .4byte gUnknown_826CF60
- thumb_func_end sub_804FD78
-
- thumb_func_start sub_804FDB8
-sub_804FDB8: @ 804FDB8
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- adds r1, 0x1
- strh r1, [r2, 0x2E]
- ldrh r0, [r2, 0x26]
- adds r0, 0x1
- strh r0, [r2, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xA
- bne _0804FDD6
- adds r0, r2, 0
- bl DestroySprite
-_0804FDD6:
- pop {r0}
- bx r0
- thumb_func_end sub_804FDB8
-
- thumb_func_start sub_804FDDC
-sub_804FDDC: @ 804FDDC
- push {lr}
- adds r2, r0, 0
- ldrh r1, [r2, 0x2E]
- adds r1, 0x1
- strh r1, [r2, 0x2E]
- ldrh r0, [r2, 0x26]
- subs r0, 0x1
- strh r0, [r2, 0x26]
- lsls r1, 16
- asrs r1, 16
- cmp r1, 0xA
- bne _0804FDFA
- adds r0, r2, 0
- bl DestroySprite
-_0804FDFA:
- pop {r0}
- bx r0
- thumb_func_end sub_804FDDC
-
- thumb_func_start sub_804FE00
-sub_804FE00: @ 804FE00
- push {r4,lr}
- adds r4, r0, 0
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xF
- bne _0804FE1C
- movs r0, 0xC5
- bl PlaySE
- movs r0, 0
- strh r0, [r4, 0x2E]
-_0804FE1C:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804FE00
-
- thumb_func_start sub_804FE24
-sub_804FE24: @ 804FE24
- push {r4,r5,lr}
- sub sp, 0x20
- ldr r0, _0804FEB0 @ =gUnknown_2031DAC
- ldr r0, [r0]
- mov r12, r0
- adds r0, 0xD4
- ldrh r1, [r0]
- lsls r1, 8
- adds r0, 0x2
- ldrh r2, [r0]
- lsls r2, 8
- adds r0, 0x6
- movs r4, 0
- ldrsh r3, [r0, r4]
- adds r0, 0x2
- movs r5, 0
- ldrsh r0, [r0, r5]
- str r0, [sp]
- mov r4, r12
- adds r4, 0xE8
- movs r5, 0
- ldrsh r0, [r4, r5]
- str r0, [sp, 0x4]
- movs r5, 0
- ldrsh r0, [r4, r5]
- str r0, [sp, 0x8]
- mov r0, r12
- adds r0, 0xEC
- ldrh r0, [r0]
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- bl DoBgAffineSet
- add r0, sp, 0x10
- ldrh r1, [r0]
- movs r0, 0x20
- bl SetGpuReg
- add r0, sp, 0x10
- ldrh r1, [r0, 0x2]
- movs r0, 0x22
- bl SetGpuReg
- add r0, sp, 0x10
- ldrh r1, [r0, 0x4]
- movs r0, 0x24
- bl SetGpuReg
- add r0, sp, 0x10
- ldrh r1, [r0, 0x6]
- movs r0, 0x26
- bl SetGpuReg
- ldr r1, [sp, 0x18]
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x28
- bl SetGpuReg
- ldr r1, [sp, 0x1C]
- lsls r1, 16
- lsrs r1, 16
- movs r0, 0x2C
- bl SetGpuReg
- add sp, 0x20
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FEB0: .4byte gUnknown_2031DAC
- thumb_func_end sub_804FE24
-
- thumb_func_start sub_804FEB4
-sub_804FEB4: @ 804FEB4
- push {r4,lr}
- ldr r4, _0804FEFC @ =gUnknown_2031DAC
- ldr r0, [r4]
- adds r0, 0xE0
- ldrh r1, [r0]
- movs r0, 0x16
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, 0xE2
- ldrh r1, [r0]
- movs r0, 0x14
- bl SetGpuReg
- movs r0, 0
- bl GetGpuReg
- lsls r0, 16
- movs r1, 0xE0
- lsls r1, 11
- ands r1, r0
- cmp r1, 0
- bne _0804FF00
- ldr r0, [r4]
- adds r0, 0xE4
- ldrh r1, [r0]
- movs r0, 0x1A
- bl SetGpuReg
- ldr r0, [r4]
- adds r0, 0xE6
- ldrh r1, [r0]
- movs r0, 0x18
- bl SetGpuReg
- b _0804FF04
- .align 2, 0
-_0804FEFC: .4byte gUnknown_2031DAC
-_0804FF00:
- bl sub_804FE24
-_0804FF04:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_804FEB4
-
- thumb_func_start sub_804FF0C
-sub_804FF0C: @ 804FF0C
- push {lr}
- bl sub_804FEB4
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_804FF0C
-
- thumb_func_start sub_804FF24
-sub_804FF24: @ 804FF24
- push {r4,lr}
- ldr r3, _0804FF48 @ =gUnknown_2031DAC
- ldr r1, [r3]
- movs r0, 0x8A
- adds r0, r1
- mov r12, r0
- movs r2, 0
- movs r0, 0
- mov r4, r12
- strh r0, [r4]
- adds r1, 0x88
- strb r2, [r1]
- ldr r0, [r3]
- adds r0, 0x89
- strb r2, [r0]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FF48: .4byte gUnknown_2031DAC
- thumb_func_end sub_804FF24
-
- thumb_func_start sub_804FF4C
-sub_804FF4C: @ 804FF4C
- push {r4,r5,lr}
- ldr r0, _0804FF70 @ =gUnknown_2031DAC
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x88
- adds r3, r2, 0
- adds r3, 0x89
- ldrb r1, [r1]
- adds r5, r0, 0
- ldrb r3, [r3]
- cmp r1, r3
- bne _0804FF74
- adds r1, r2, 0
- adds r1, 0x8A
- ldrh r0, [r1]
- adds r0, 0x1
- b _0804FF7A
- .align 2, 0
-_0804FF70: .4byte gUnknown_2031DAC
-_0804FF74:
- adds r1, r2, 0
- adds r1, 0x8A
- movs r0, 0
-_0804FF7A:
- strh r0, [r1]
- adds r4, r5, 0
- ldr r0, [r4]
- adds r0, 0x8A
- ldrh r1, [r0]
- movs r0, 0x96
- lsls r0, 1
- cmp r1, r0
- bls _0804FFAC
- bl CloseLink
- ldr r0, _0804FFC0 @ =CB2_LinkError
- bl SetMainCallback2
- ldr r1, [r4]
- adds r3, r1, 0
- adds r3, 0x8A
- movs r2, 0
- movs r0, 0
- strh r0, [r3]
- adds r1, 0x89
- strb r2, [r1]
- ldr r0, [r4]
- adds r0, 0x88
- strb r2, [r0]
-_0804FFAC:
- ldr r0, [r5]
- adds r1, r0, 0
- adds r1, 0x88
- ldrb r1, [r1]
- adds r0, 0x89
- strb r1, [r0]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0804FFC0: .4byte CB2_LinkError
- thumb_func_end sub_804FF4C
-
- thumb_func_start sub_804FFC4
-sub_804FFC4: @ 804FFC4
- push {lr}
- ldr r0, _0804FFD4 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _0804FFD8
- movs r0, 0
- b _0804FFE0
- .align 2, 0
-_0804FFD4: .4byte gReceivedRemoteLinkPlayers
-_0804FFD8:
- bl GetMultiplayerId
- lsls r0, 24
- lsrs r0, 24
-_0804FFE0:
- pop {r1}
- bx r1
- thumb_func_end sub_804FFC4
-
- thumb_func_start sub_804FFE4
-sub_804FFE4: @ 804FFE4
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r5, r1, 24
- movs r4, 0
- mov r8, r4
- cmp r6, 0
- bne _0805000A
- ldr r0, _08050034 @ =gUnknown_2031DA4
- ldrb r1, [r0]
- movs r0, 0x64
- muls r1, r0
- ldr r0, _08050038 @ =gPlayerParty
- adds r1, r0
- mov r8, r1
- movs r4, 0x1
-_0805000A:
- cmp r6, 0x1
- bne _08050028
- ldr r0, _08050034 @ =gUnknown_2031DA4
- ldrb r0, [r0, 0x1]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, _0805003C @ =gEnemyParty
- adds r1, r0
- mov r8, r1
- movs r4, 0x3
-_08050028:
- cmp r5, 0
- beq _08050040
- cmp r5, 0x1
- beq _080500C8
- b _0805011E
- .align 2, 0
-_08050034: .4byte gUnknown_2031DA4
-_08050038: .4byte gPlayerParty
-_0805003C: .4byte gEnemyParty
-_08050040:
- mov r0, r8
- movs r1, 0x41
- bl GetMonData
- lsls r0, 16
- lsrs r5, r0, 16
- mov r0, r8
- movs r1, 0
- bl GetMonData
- adds r7, r0, 0
- cmp r6, 0
- bne _0805007C
- lsls r0, r5, 3
- ldr r1, _08050074 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _08050078 @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- ldr r1, [r1, 0x8]
- adds r2, r5, 0
- adds r3, r7, 0
- bl HandleLoadSpecialPokePic
- movs r4, 0
- b _0805009A
- .align 2, 0
-_08050074: .4byte gMonFrontPicTable
-_08050078: .4byte gMonSpritesGfxPtr
-_0805007C:
- lsls r0, r5, 3
- ldr r1, _080500BC @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _080500C0 @ =gMonSpritesGfxPtr
- ldr r2, [r1]
- lsls r4, r6, 1
- adds r1, r4, 0x1
- lsls r1, 2
- adds r2, 0x4
- adds r2, r1
- ldr r1, [r2]
- adds r2, r5, 0
- adds r3, r7, 0
- bl HandleLoadSpecialPokePic_DontHandleDeoxys
-_0805009A:
- mov r0, r8
- bl GetMonSpritePalStruct
- bl LoadCompressedSpritePalette
- ldr r0, _080500C4 @ =gUnknown_2031DAC
- ldr r1, [r0]
- adds r0, r1, 0
- adds r0, 0xF0
- adds r0, r4
- strh r5, [r0]
- lsls r0, r6, 2
- adds r1, 0x68
- adds r1, r0
- str r7, [r1]
- b _0805011E
- .align 2, 0
-_080500BC: .4byte gMonFrontPicTable
-_080500C0: .4byte gMonSpritesGfxPtr
-_080500C4: .4byte gUnknown_2031DAC
-_080500C8:
- mov r0, r8
- bl GetMonSpritePalStruct
- ldrh r0, [r0, 0x4]
- adds r1, r4, 0
- bl SetMultiuseSpriteTemplateToPokemon
- ldr r0, _08050128 @ =gMultiuseSpriteTemplate
- movs r1, 0x78
- movs r2, 0x3C
- movs r3, 0x6
- bl CreateSprite
- ldr r4, _0805012C @ =gUnknown_2031DAC
- ldr r1, [r4]
- adds r1, 0x8E
- adds r1, r6
- strb r0, [r1]
- ldr r3, _08050130 @ =gSprites
- ldr r0, [r4]
- adds r0, 0x8E
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r3
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x8E
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r3, 0x1C
- adds r0, r3
- ldr r1, _08050134 @ =SpriteCallbackDummy
- str r1, [r0]
-_0805011E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050128: .4byte gMultiuseSpriteTemplate
-_0805012C: .4byte gUnknown_2031DAC
-_08050130: .4byte gSprites
-_08050134: .4byte SpriteCallbackDummy
- thumb_func_end sub_804FFE4
-
- thumb_func_start sub_8050138
-sub_8050138: @ 8050138
- push {r4-r6,lr}
- sub sp, 0x4
- ldr r1, _08050158 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0xC
- bls _0805014E
- b _08050472
-_0805014E:
- lsls r0, 2
- ldr r1, _0805015C @ =_08050160
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050158: .4byte gMain
-_0805015C: .4byte _08050160
- .align 2, 0
-_08050160:
- .4byte _08050194
- .4byte _08050240
- .4byte _08050288
- .4byte _080502A8
- .4byte _080502F2
- .4byte _08050320
- .4byte _08050344
- .4byte _0805035C
- .4byte _08050366
- .4byte _08050380
- .4byte _0805039C
- .4byte _08050430
- .4byte _0805044C
-_08050194:
- ldr r0, _08050228 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- bne _080501A8
- ldr r1, _0805022C @ =gLinkType
- ldr r2, _08050230 @ =0x00001144
- adds r0, r2, 0
- strh r0, [r1]
- bl CloseLink
-_080501A8:
- ldr r4, _08050234 @ =gUnknown_2031DAC
- movs r0, 0x88
- lsls r0, 1
- bl AllocZeroed
- str r0, [r4]
- bl AllocateMonSpritesGfx
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, _08050238 @ =sub_804FF0C
- bl SetVBlankCallback
- bl sub_80504CC
- bl sub_804FF24
- ldr r1, _0805023C @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- ldr r1, [r4]
- adds r0, r1, 0
- adds r0, 0x8C
- strh r2, [r0]
- adds r0, 0x8
- strh r2, [r0]
- adds r1, 0xEE
- movs r0, 0x1
- strb r0, [r1]
- ldr r3, [r4]
- adds r0, r3, 0
- adds r0, 0xD4
- movs r1, 0x40
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r2, [r0]
- adds r0, 0x2
- strh r2, [r0]
- adds r1, r3, 0
- adds r1, 0xDC
- movs r0, 0x78
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x50
- strh r0, [r1]
- adds r1, 0xA
- adds r0, 0xB0
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0xEC
- strh r2, [r0]
- b _08050472
- .align 2, 0
-_08050228: .4byte gReceivedRemoteLinkPlayers
-_0805022C: .4byte gLinkType
-_08050230: .4byte 0x00001144
-_08050234: .4byte gUnknown_2031DAC
-_08050238: .4byte sub_804FF0C
-_0805023C: .4byte gMain
-_08050240:
- ldr r0, _08050270 @ =gReceivedRemoteLinkPlayers
- ldrb r5, [r0]
- cmp r5, 0
- bne _0805027C
- ldr r4, _08050274 @ =gUnknown_2031DAC
- ldr r0, [r4]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- movs r1, 0x1
- strb r1, [r0]
- bl OpenLink
- ldr r1, _08050278 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r0, [r4]
- str r5, [r0, 0x64]
- b _08050472
- .align 2, 0
-_08050270: .4byte gReceivedRemoteLinkPlayers
-_08050274: .4byte gUnknown_2031DAC
-_08050278: .4byte gMain
-_0805027C:
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- movs r0, 0x4
- strb r0, [r1]
- b _08050472
-_08050288:
- ldr r0, _080502A4 @ =gUnknown_2031DAC
- ldr r1, [r0]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x3C
- bhi _08050298
- b _08050472
-_08050298:
- movs r0, 0
- str r0, [r1, 0x64]
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- b _08050440
- .align 2, 0
-_080502A4: .4byte gUnknown_2031DAC
-_080502A8:
- bl IsLinkMaster
- lsls r0, 24
- cmp r0, 0
- bne _080502B4
- b _08050438
-_080502B4:
- bl GetLinkPlayerCount_2
- adds r4, r0, 0
- bl GetSavedPlayerCount
- lsls r4, 24
- lsls r0, 24
- cmp r4, r0
- bcc _080502EC
- ldr r0, _080502E4 @ =gUnknown_2031DAC
- ldr r1, [r0]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x1E
- bhi _080502D6
- b _08050472
-_080502D6:
- bl CheckShouldAdvanceLinkState
- ldr r1, _080502E8 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _08050440
- .align 2, 0
-_080502E4: .4byte gUnknown_2031DAC
-_080502E8: .4byte gMain
-_080502EC:
- bl sub_804FF4C
- b _08050472
-_080502F2:
- bl sub_804FF4C
- ldr r0, _08050318 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _08050300
- b _08050472
-_08050300:
- bl IsLinkPlayerDataExchangeComplete
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0805030E
- b _08050472
-_0805030E:
- ldr r1, _0805031C @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _08050440
- .align 2, 0
-_08050318: .4byte gReceivedRemoteLinkPlayers
-_0805031C: .4byte gMain
-_08050320:
- ldr r2, _08050340 @ =gUnknown_2031DAC
- ldr r0, [r2]
- adds r0, 0x72
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x73
- strb r1, [r0]
- ldr r0, [r2]
- adds r0, 0x93
- strb r1, [r0]
- movs r0, 0
- bl sub_804FFE4
- b _08050438
- .align 2, 0
-_08050340: .4byte gUnknown_2031DAC
-_08050344:
- movs r0, 0
- movs r1, 0x1
- bl sub_804FFE4
- ldr r1, _08050358 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _08050440
- .align 2, 0
-_08050358: .4byte gMain
-_0805035C:
- movs r0, 0x1
- movs r1, 0
- bl sub_804FFE4
- b _08050438
-_08050366:
- movs r0, 0x1
- movs r1, 0x1
- bl sub_804FFE4
- bl sub_80504B0
- ldr r1, _0805037C @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _08050440
- .align 2, 0
-_0805037C: .4byte gMain
-_08050380:
- bl sub_8050DE0
- ldr r0, _08050394 @ =gUnknown_826CDD4
- bl LoadSpriteSheet
- ldr r0, _08050398 @ =gUnknown_826CDDC
- bl LoadSpritePalette
- b _08050438
- .align 2, 0
-_08050394: .4byte gUnknown_826CDD4
-_08050398: .4byte gUnknown_826CDDC
-_0805039C:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- movs r0, 0
- bl ShowBg
- ldr r4, _08050418 @ =gUnknown_2031DA4
- ldrb r0, [r4]
- movs r6, 0x64
- muls r0, r6
- ldr r1, _0805041C @ =gPlayerParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- ldr r5, _08050420 @ =gUnknown_2031DAC
- ldr r1, [r5]
- adds r1, 0xF8
- strh r0, [r1]
- ldrb r0, [r4, 0x1]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- muls r0, r6
- ldr r1, _08050424 @ =gEnemyParty
- adds r0, r1
- movs r1, 0x41
- bl GetMonData
- ldr r4, [r5]
- adds r1, r4, 0
- adds r1, 0xFA
- strh r0, [r1]
- adds r4, 0xFC
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- ldr r0, _08050428 @ =gLinkPlayers + 8
- adds r1, r0
- adds r0, r4, 0
- movs r2, 0x7
- bl memcpy
- ldr r1, _0805042C @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- b _08050440
- .align 2, 0
-_08050418: .4byte gUnknown_2031DA4
-_0805041C: .4byte gPlayerParty
-_08050420: .4byte gUnknown_2031DAC
-_08050424: .4byte gEnemyParty
-_08050428: .4byte gLinkPlayers + 8
-_0805042C: .4byte gMain
-_08050430:
- bl sub_805049C
- bl sub_8050E24
-_08050438:
- ldr r1, _08050448 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
-_08050440:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08050472
- .align 2, 0
-_08050448: .4byte gMain
-_0805044C:
- ldr r0, _08050490 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08050472
- ldr r0, _08050494 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0805046C
- bl LoadWirelessStatusIndicatorSpriteGfx
- movs r0, 0
- movs r1, 0
- bl CreateWirelessStatusIndicatorSprite
-_0805046C:
- ldr r0, _08050498 @ =sub_8053D84
- bl SetMainCallback2
-_08050472:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08050490: .4byte gPaletteFade
-_08050494: .4byte gWirelessCommType
-_08050498: .4byte sub_8053D84
- thumb_func_end sub_8050138
-
- thumb_func_start sub_805049C
-sub_805049C: @ 805049C
- push {lr}
- movs r0, 0x5
- bl sub_8050968
- movs r0, 0
- bl sub_8050968
- pop {r0}
- bx r0
- thumb_func_end sub_805049C
-
- thumb_func_start sub_80504B0
-sub_80504B0: @ 80504B0
- push {lr}
- movs r0, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r0}
- bx r0
- thumb_func_end sub_80504B0
-
- thumb_func_start sub_80504CC
-sub_80504CC: @ 80504CC
- push {r4-r6,lr}
- mov r6, r10
- mov r5, r9
- mov r4, r8
- push {r4-r6}
- sub sp, 0x4
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080505B4 @ =gUnknown_826D1D4
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r5, 0x80
- lsls r5, 4
- adds r0, r5, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0
- bl SetBgTilemapBuffer
- adds r0, r5, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0x1
- bl SetBgTilemapBuffer
- adds r0, r5, 0
- bl Alloc
- adds r1, r0, 0
- movs r0, 0x3
- bl SetBgTilemapBuffer
- bl DeactivateAllTextPrinters
- ldr r0, _080505B8 @ =gBattleTextboxTiles
- mov r10, r0
- movs r0, 0
- mov r9, r0
- str r0, [sp]
- mov r1, r10
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- ldr r0, _080505BC @ =gFile_graphics_interface_menu_map_tilemap
- mov r8, r0
- ldr r4, _080505C0 @ =gDecompressionBuffer
- adds r1, r4, 0
- bl LZDecompressWram
- movs r0, 0
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- ldr r6, _080505C4 @ =gBattleTextboxPalette
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- ldr r0, _080505C8 @ =gUnknown_826D1BC
- bl InitWindows
- mov r0, r9
- str r0, [sp]
- movs r0, 0
- mov r1, r10
- movs r2, 0
- movs r3, 0
- bl DecompressAndLoadBgGfxUsingHeap
- mov r0, r8
- adds r1, r4, 0
- bl LZDecompressWram
- movs r0, 0
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0x20
- bl LoadCompressedPalette
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080505B4: .4byte gUnknown_826D1D4
-_080505B8: .4byte gBattleTextboxTiles
-_080505BC: .4byte gFile_graphics_interface_menu_map_tilemap
-_080505C0: .4byte gDecompressionBuffer
-_080505C4: .4byte gBattleTextboxPalette
-_080505C8: .4byte gUnknown_826D1BC
- thumb_func_end sub_80504CC
-
- thumb_func_start sub_80505CC
-sub_80505CC: @ 80505CC
- push {r4,r5,lr}
- sub sp, 0xC
- ldr r0, _080505EC @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xC
- bls _080505E0
- b _0805077E
-_080505E0:
- lsls r0, 2
- ldr r1, _080505F0 @ =_080505F4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080505EC: .4byte gMain
-_080505F0: .4byte _080505F4
- .align 2, 0
-_080505F4:
- .4byte _08050628
- .4byte _0805077E
- .4byte _0805077E
- .4byte _0805077E
- .4byte _0805077E
- .4byte _080506EC
- .4byte _080506F6
- .4byte _08050700
- .4byte _08050710
- .4byte _08050730
- .4byte _0805074C
- .4byte _08050754
- .4byte _08050778
-_08050628:
- ldr r1, _080506CC @ =gUnknown_2031DA4
- ldr r0, _080506D0 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- movs r5, 0
- strb r0, [r1]
- movs r0, 0x6
- strb r0, [r1, 0x1]
- ldr r4, _080506D4 @ =gLinkPlayers + 8
- ldr r0, _080506D8 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringCopy
- ldr r0, _080506DC @ =gEnemyParty
- movs r1, 0x7
- mov r2, sp
- bl GetMonData
- adds r4, 0x1C
- adds r0, r4, 0
- mov r1, sp
- bl StringCopy
- ldr r4, _080506E0 @ =gUnknown_2031DAC
- movs r0, 0x88
- lsls r0, 1
- bl AllocZeroed
- str r0, [r4]
- bl AllocateMonSpritesGfx
- bl ResetTasks
- bl ResetSpriteData
- bl FreeAllSpritePalettes
- ldr r0, _080506E4 @ =sub_804FF0C
- bl SetVBlankCallback
- bl sub_80504CC
- ldr r0, [r4]
- adds r0, 0xEE
- strb r5, [r0]
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x8C
- strh r5, [r0]
- adds r0, 0x8
- strh r5, [r0]
- adds r0, 0x40
- movs r1, 0x40
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r0, 0x2
- strh r5, [r0]
- adds r1, r2, 0
- adds r1, 0xDC
- movs r0, 0x78
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x50
- strh r0, [r1]
- adds r1, 0xA
- adds r0, 0xB0
- strh r0, [r1]
- adds r0, r2, 0
- adds r0, 0xEC
- strh r5, [r0]
- str r5, [r2, 0x64]
- ldr r0, _080506E8 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x5
- strb r1, [r0]
- b _0805077E
- .align 2, 0
-_080506CC: .4byte gUnknown_2031DA4
-_080506D0: .4byte gSpecialVar_0x8005
-_080506D4: .4byte gLinkPlayers + 8
-_080506D8: .4byte gSaveBlock2Ptr
-_080506DC: .4byte gEnemyParty
-_080506E0: .4byte gUnknown_2031DAC
-_080506E4: .4byte sub_804FF0C
-_080506E8: .4byte gMain
-_080506EC:
- movs r0, 0
- movs r1, 0
- bl sub_804FFE4
- b _08050764
-_080506F6:
- movs r0, 0
- movs r1, 0x1
- bl sub_804FFE4
- b _08050764
-_08050700:
- movs r0, 0x1
- movs r1, 0
- bl sub_804FFE4
- movs r0, 0
- bl ShowBg
- b _08050764
-_08050710:
- movs r0, 0x1
- movs r1, 0x1
- bl sub_804FFE4
- movs r0, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0
- bl PutWindowTilemap
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- b _08050764
-_08050730:
- bl sub_8050DE0
- ldr r0, _08050744 @ =gUnknown_826CDD4
- bl LoadSpriteSheet
- ldr r0, _08050748 @ =gUnknown_826CDDC
- bl LoadSpritePalette
- b _08050764
- .align 2, 0
-_08050744: .4byte gUnknown_826CDD4
-_08050748: .4byte gUnknown_826CDDC
-_0805074C:
- movs r0, 0
- bl ShowBg
- b _08050764
-_08050754:
- movs r0, 0x5
- bl sub_8050968
- movs r0, 0
- bl sub_8050968
- bl sub_8050E24
-_08050764:
- ldr r1, _08050774 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0805077E
- .align 2, 0
-_08050774: .4byte gMain
-_08050778:
- ldr r0, _0805079C @ =sub_8050948
- bl SetMainCallback2
-_0805077E:
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0805079C: .4byte sub_8050948
- thumb_func_end sub_80505CC
-
- thumb_func_start sub_80507A0
-sub_80507A0: @ 80507A0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r1, r0
- ldr r0, _080507FC @ =gPlayerParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080507F4
- adds r0, r5, 0
- movs r1, 0xB
- movs r2, 0
- bl GetMonData
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r5, 0
- movs r1, 0
- movs r2, 0
- bl GetMonData
- adds r5, r0, 0
- adds r0, r4, 0
- bl SpeciesToNationalPokedexNum
- adds r4, r0, 0
- lsls r4, 16
- lsrs r4, 16
- adds r0, r4, 0
- movs r1, 0x2
- bl GetSetPokedexFlag
- adds r0, r4, 0
- movs r1, 0x3
- adds r2, r5, 0
- bl HandleSetPokedexFlag
-_080507F4:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080507FC: .4byte gPlayerParty
- thumb_func_end sub_80507A0
-
- thumb_func_start sub_8050800
-sub_8050800: @ 8050800
- push {lr}
- bl GetMultiplayerId
- pop {r0}
- bx r0
- thumb_func_end sub_8050800
-
- thumb_func_start sub_805080C
-sub_805080C: @ 805080C
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x4
- adds r4, r1, 0
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r4, 24
- lsrs r4, 24
- movs r5, 0x64
- mov r1, r9
- muls r1, r5
- ldr r0, _080508D8 @ =gPlayerParty
- adds r7, r1, r0
- adds r0, r7, 0
- movs r1, 0x40
- bl GetMonData
- lsls r0, 16
- lsrs r6, r0, 16
- adds r1, r4, 0
- muls r1, r5
- ldr r0, _080508DC @ =gEnemyParty
- adds r5, r1, r0
- adds r0, r5, 0
- movs r1, 0x40
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- cmp r6, 0xFF
- beq _08050866
- ldr r0, _080508E0 @ =gSaveBlock1Ptr
- lsls r1, r6, 3
- adds r1, r6
- lsls r1, 2
- ldr r2, _080508E4 @ =0x00002cd0
- adds r1, r2
- ldr r0, [r0]
- adds r0, r1
- bl ClearMailStruct
-_08050866:
- ldr r4, _080508E8 @ =gUnknown_2031DAC
- ldr r0, [r4]
- adds r1, r7, 0
- movs r2, 0x64
- bl memcpy
- adds r0, r7, 0
- adds r1, r5, 0
- movs r2, 0x64
- bl memcpy
- ldr r1, [r4]
- adds r0, r5, 0
- movs r2, 0x64
- bl memcpy
- movs r1, 0x46
- mov r0, sp
- strb r1, [r0]
- adds r0, r7, 0
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _080508A2
- adds r0, r7, 0
- movs r1, 0x20
- mov r2, sp
- bl SetMonData
-_080508A2:
- mov r0, r8
- cmp r0, 0xFF
- beq _080508B8
- lsls r1, r0, 3
- add r1, r8
- lsls r1, 2
- ldr r0, _080508EC @ =gUnknown_2031CCC
- adds r1, r0
- adds r0, r7, 0
- bl GiveMailToMon2
-_080508B8:
- mov r0, r9
- bl sub_80507A0
- ldr r0, _080508F0 @ =gReceivedRemoteLinkPlayers
- ldrb r0, [r0]
- cmp r0, 0
- beq _080508CA
- bl sub_8050800
-_080508CA:
- add sp, 0x4
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080508D8: .4byte gPlayerParty
-_080508DC: .4byte gEnemyParty
-_080508E0: .4byte gSaveBlock1Ptr
-_080508E4: .4byte 0x00002cd0
-_080508E8: .4byte gUnknown_2031DAC
-_080508EC: .4byte gUnknown_2031CCC
-_080508F0: .4byte gReceivedRemoteLinkPlayers
- thumb_func_end sub_805080C
-
- thumb_func_start sub_80508F4
-sub_80508F4: @ 80508F4
- push {r4,lr}
- ldr r4, _08050908 @ =gUnknown_2031DAC
- ldr r0, [r4]
- adds r0, 0x93
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0805090C
- cmp r0, 0x2
- beq _08050932
- b _0805093C
- .align 2, 0
-_08050908: .4byte gUnknown_2031DAC
-_0805090C:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08050932
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x74
- movs r2, 0x14
- bl SendBlock
- ldr r1, [r4]
- adds r1, 0x93
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
-_08050932:
- ldr r0, _08050944 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x93
- movs r1, 0
- strb r1, [r0]
-_0805093C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08050944: .4byte gUnknown_2031DAC
- thumb_func_end sub_80508F4
-
- thumb_func_start sub_8050948
-sub_8050948: @ 8050948
- push {lr}
- bl sub_8050F14
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_8050948
-
- thumb_func_start sub_8050968
-sub_8050968: @ 8050968
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x7
- bls _08050974
- b _08050DB4
-_08050974:
- lsls r0, 2
- ldr r1, _08050980 @ =_08050984
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08050980: .4byte _08050984
- .align 2, 0
-_08050984:
- .4byte _080509A4
- .4byte _08050A18
- .4byte _08050AC4
- .4byte _08050B3C
- .4byte _08050B84
- .4byte _08050C54
- .4byte _08050C6C
- .4byte _08050D48
-_080509A4:
- ldr r0, _080509FC @ =gUnknown_2031DAC
- ldr r1, [r0]
- adds r2, r1, 0
- adds r2, 0xE4
- movs r0, 0
- strh r0, [r2]
- adds r1, 0xE6
- movs r0, 0xB4
- strh r0, [r1]
- movs r1, 0xAA
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r1, _08050A00 @ =0x00005206
- movs r0, 0xC
- bl SetGpuReg
- ldr r0, _08050A04 @ =gTradeGba2_Pal
- movs r1, 0x10
- movs r2, 0x60
- bl LoadPalette
- ldr r3, _08050A08 @ =gTradeGba_Gfx
- ldr r4, _08050A0C @ =0x06004000
- movs r5, 0xA1
- lsls r5, 5
- ldr r1, _08050A10 @ =0x040000d4
- ldr r6, _08050A14 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_080509E6:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _080509E6
- b _08050D98
- .align 2, 0
-_080509FC: .4byte gUnknown_2031DAC
-_08050A00: .4byte 0x00005206
-_08050A04: .4byte gTradeGba2_Pal
-_08050A08: .4byte gTradeGba_Gfx
-_08050A0C: .4byte 0x06004000
-_08050A10: .4byte 0x040000d4
-_08050A14: .4byte 0x80000800
-_08050A18:
- ldr r4, _08050A54 @ =gUnknown_2031DAC
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0xE2
- movs r0, 0
- strh r0, [r1]
- adds r2, 0xE0
- movs r1, 0xAE
- lsls r1, 1
- strh r1, [r2]
- movs r0, 0x16
- bl SetGpuReg
- ldr r1, _08050A58 @ =0x00008502
- movs r0, 0xA
- bl SetGpuReg
- ldr r1, _08050A5C @ =0x00009206
- movs r0, 0xC
- bl SetGpuReg
- ldr r0, [r4]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050A64
- ldr r1, _08050A60 @ =gUnknown_826AA5C
- b _08050A66
- .align 2, 0
-_08050A54: .4byte gUnknown_2031DAC
-_08050A58: .4byte 0x00008502
-_08050A5C: .4byte 0x00009206
-_08050A60: .4byte gUnknown_826AA5C
-_08050A64:
- ldr r1, _08050AB0 @ =gUnknown_8269A5C
-_08050A66:
- ldr r2, _08050AB4 @ =0x06002800
- ldr r0, _08050AB8 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08050ABC @ =0x80000800
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- ldr r3, _08050AC0 @ =gTradeGba_Gfx
- movs r4, 0xC0
- lsls r4, 19
- movs r5, 0xA1
- lsls r5, 5
- ldr r1, _08050AB8 @ =0x040000d4
- ldr r6, _08050ABC @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_08050A8A:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _08050A8A
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r1, 0x92
- lsls r1, 5
- b _08050B64
- .align 2, 0
-_08050AB0: .4byte gUnknown_8269A5C
-_08050AB4: .4byte 0x06002800
-_08050AB8: .4byte 0x040000d4
-_08050ABC: .4byte 0x80000800
-_08050AC0: .4byte gTradeGba_Gfx
-_08050AC4:
- ldr r0, _08050AF4 @ =gUnknown_2031DAC
- ldr r2, [r0]
- adds r0, r2, 0
- adds r0, 0xE0
- movs r1, 0
- strh r1, [r0]
- adds r0, 0x2
- strh r1, [r0]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r2, r1
- ldrb r0, [r0]
- cmp r0, 0
- bne _08050B04
- ldr r1, _08050AF8 @ =0x00001241
- movs r0, 0
- bl SetGpuReg
- ldr r0, _08050AFC @ =gUnknown_3379A0Bin
- ldr r1, _08050B00 @ =0x06002800
- bl LZ77UnCompVram
- movs r0, 0x8
- b _08050B1E
- .align 2, 0
-_08050AF4: .4byte gUnknown_2031DAC
-_08050AF8: .4byte 0x00001241
-_08050AFC: .4byte gUnknown_3379A0Bin
-_08050B00: .4byte 0x06002800
-_08050B04:
- ldr r1, _08050B28 @ =0x00001241
- movs r0, 0
- bl SetGpuReg
- ldr r1, _08050B2C @ =gUnknown_826407C
- ldr r2, _08050B30 @ =0x06002800
- ldr r0, _08050B34 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08050B38 @ =0x80000400
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
- movs r0, 0x1
-_08050B1E:
- movs r1, 0x10
- movs r2, 0
- bl BlendPalettes
- b _08050DB4
- .align 2, 0
-_08050B28: .4byte 0x00001241
-_08050B2C: .4byte gUnknown_826407C
-_08050B30: .4byte 0x06002800
-_08050B34: .4byte 0x040000d4
-_08050B38: .4byte 0x80000400
-_08050B3C:
- ldr r0, _08050B6C @ =gUnknown_826BF5C
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _08050B70 @ =gWirelessSignal4bpp
- ldr r1, _08050B74 @ =0x06004000
- bl LZ77UnCompVram
- ldr r0, _08050B78 @ =gUnknown_826C60C
- ldr r1, _08050B7C @ =0x06009000
- bl LZ77UnCompVram
- ldr r0, _08050B80 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0xE4
- movs r1, 0x50
- strh r1, [r0]
- movs r1, 0xB2
- lsls r1, 5
-_08050B64:
- movs r0, 0
- bl SetGpuReg
- b _08050DB4
- .align 2, 0
-_08050B6C: .4byte gUnknown_826BF5C
-_08050B70: .4byte gWirelessSignal4bpp
-_08050B74: .4byte 0x06004000
-_08050B78: .4byte gUnknown_826C60C
-_08050B7C: .4byte 0x06009000
-_08050B80: .4byte gUnknown_2031DAC
-_08050B84:
- ldr r1, _08050C0C @ =0x00001441
- movs r0, 0
- bl SetGpuReg
- ldr r1, _08050C10 @ =0x00001287
- movs r0, 0xC
- bl SetGpuReg
- ldr r0, _08050C14 @ =gUnknown_2031DAC
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0xD4
- movs r2, 0
- movs r0, 0x40
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x5C
- strh r0, [r1]
- adds r1, 0x12
- movs r0, 0x20
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x80
- lsls r0, 3
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0xEC
- strh r2, [r0]
- ldr r3, _08050C18 @ =gUnknown_826701C
- ldr r4, _08050C1C @ =0x06004000
- movs r5, 0xA1
- lsls r5, 6
- ldr r1, _08050C20 @ =0x040000d4
- ldr r6, _08050C24 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_08050BD0:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _08050BD0
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r0, _08050C14 @ =gUnknown_2031DAC
- ldr r0, [r0]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050C34
- ldr r1, _08050C28 @ =gUnknown_826985C
- ldr r2, _08050C2C @ =0x06009000
- ldr r0, _08050C20 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08050C30 @ =0x80000080
- b _08050DB0
- .align 2, 0
-_08050C0C: .4byte 0x00001441
-_08050C10: .4byte 0x00001287
-_08050C14: .4byte gUnknown_2031DAC
-_08050C18: .4byte gUnknown_826701C
-_08050C1C: .4byte 0x06004000
-_08050C20: .4byte 0x040000d4
-_08050C24: .4byte 0x80000800
-_08050C28: .4byte gUnknown_826985C
-_08050C2C: .4byte 0x06009000
-_08050C30: .4byte 0x80000080
-_08050C34:
- ldr r1, _08050C44 @ =gUnknown_826995C
- ldr r2, _08050C48 @ =0x06009000
- ldr r0, _08050C4C @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08050C50 @ =0x80000080
- b _08050DB0
- .align 2, 0
-_08050C44: .4byte gUnknown_826995C
-_08050C48: .4byte 0x06009000
-_08050C4C: .4byte 0x040000d4
-_08050C50: .4byte 0x80000080
-_08050C54:
- ldr r0, _08050C68 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xE0
- movs r2, 0
- strh r2, [r1]
- adds r0, 0xE2
- strh r2, [r0]
- b _08050DB4
- .align 2, 0
-_08050C68: .4byte gUnknown_2031DAC
-_08050C6C:
- ldr r1, _08050D00 @ =0x00001441
- movs r0, 0
- bl SetGpuReg
- ldr r1, _08050D04 @ =0x00001287
- movs r0, 0xC
- bl SetGpuReg
- ldr r0, _08050D08 @ =gUnknown_2031DAC
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0xD4
- movs r2, 0
- movs r0, 0x40
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x5C
- strh r0, [r1]
- adds r1, 0x12
- adds r0, 0xA4
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x80
- strh r0, [r1]
- subs r1, 0xE
- movs r0, 0x78
- strh r0, [r1]
- adds r1, 0x2
- movs r0, 0x50
- strh r0, [r1]
- adds r0, r3, 0
- adds r0, 0xEC
- strh r2, [r0]
- ldr r3, _08050D0C @ =gUnknown_826701C
- ldr r4, _08050D10 @ =0x06004000
- movs r5, 0xA1
- lsls r5, 6
- ldr r1, _08050D14 @ =0x040000d4
- ldr r6, _08050D18 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_08050CC2:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _08050CC2
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r0, _08050D08 @ =gUnknown_2031DAC
- ldr r0, [r0]
- movs r1, 0x84
- lsls r1, 1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0
- beq _08050D28
- ldr r1, _08050D1C @ =gUnknown_826985C
- ldr r2, _08050D20 @ =0x06009000
- ldr r0, _08050D14 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08050D24 @ =0x80000080
- b _08050DB0
- .align 2, 0
-_08050D00: .4byte 0x00001441
-_08050D04: .4byte 0x00001287
-_08050D08: .4byte gUnknown_2031DAC
-_08050D0C: .4byte gUnknown_826701C
-_08050D10: .4byte 0x06004000
-_08050D14: .4byte 0x040000d4
-_08050D18: .4byte 0x80000800
-_08050D1C: .4byte gUnknown_826985C
-_08050D20: .4byte 0x06009000
-_08050D24: .4byte 0x80000080
-_08050D28:
- ldr r1, _08050D38 @ =gUnknown_826995C
- ldr r2, _08050D3C @ =0x06009000
- ldr r0, _08050D40 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08050D44 @ =0x80000080
- b _08050DB0
- .align 2, 0
-_08050D38: .4byte gUnknown_826995C
-_08050D3C: .4byte 0x06009000
-_08050D40: .4byte 0x040000d4
-_08050D44: .4byte 0x80000080
-_08050D48:
- ldr r0, _08050DBC @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r1, r0, 0
- adds r1, 0xE4
- movs r2, 0
- strh r2, [r1]
- adds r0, 0xE6
- strh r2, [r0]
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- ldr r1, _08050DC0 @ =0x00005206
- movs r0, 0xC
- bl SetGpuReg
- ldr r0, _08050DC4 @ =gTradeGba2_Pal
- movs r1, 0x10
- movs r2, 0x60
- bl LoadPalette
- ldr r3, _08050DC8 @ =gTradeGba_Gfx
- ldr r4, _08050DCC @ =0x06004000
- movs r5, 0xA1
- lsls r5, 5
- ldr r1, _08050DD0 @ =0x040000d4
- ldr r6, _08050DD4 @ =0x80000800
- movs r2, 0x80
- lsls r2, 5
- movs r7, 0x80
- lsls r7, 24
-_08050D86:
- str r3, [r1]
- str r4, [r1, 0x4]
- str r6, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r2
- adds r4, r2
- subs r5, r2
- cmp r5, r2
- bhi _08050D86
-_08050D98:
- str r3, [r1]
- str r4, [r1, 0x4]
- lsrs r0, r5, 1
- orrs r0, r7
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- ldr r1, _08050DD8 @ =gUnknown_826601C
- ldr r2, _08050DDC @ =0x06009000
- ldr r0, _08050DD0 @ =0x040000d4
- str r1, [r0]
- str r2, [r0, 0x4]
- ldr r1, _08050DD4 @ =0x80000800
-_08050DB0:
- str r1, [r0, 0x8]
- ldr r0, [r0, 0x8]
-_08050DB4:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08050DBC: .4byte gUnknown_2031DAC
-_08050DC0: .4byte 0x00005206
-_08050DC4: .4byte gTradeGba2_Pal
-_08050DC8: .4byte gTradeGba_Gfx
-_08050DCC: .4byte 0x06004000
-_08050DD0: .4byte 0x040000d4
-_08050DD4: .4byte 0x80000800
-_08050DD8: .4byte gUnknown_826601C
-_08050DDC: .4byte 0x06009000
- thumb_func_end sub_8050968
-
- 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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_826CDE4
- 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 @ =sub_8053938
- 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 gUnknown_826CDE4
-_08051594: .4byte sub_8053938
-_08051598:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080515B8 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x14
- strh r1, [r0]
- bl _08052318
- .align 2, 0
-_080515B8: .4byte gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- ldr r4, [r0]
- bl _08051EB0
- .align 2, 0
-_08051664: .4byte gUnknown_2031DAC
-_08051668:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x14
- bhi _08051678
- bl _08052318
-_08051678:
- bl sub_804FE24
- 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 @ =gUnknown_826CEB8
- 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 gUnknown_826CEB8
-_08051730:
- ldr r0, _08051774 @ =gUnknown_826CE44
- movs r1, 0x80
- movs r2, 0x50
- movs r3, 0x3
- bl CreateSprite
- ldr r4, _08051778 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x1E
- strh r1, [r0]
- bl _08052318
- .align 2, 0
-_08051828: .4byte gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- ldr r1, [r0]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_080518E2:
- ldr r3, _0805191C @ =gSprites
- ldr r0, _08051918 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_826CEB8
- 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 @ =sub_804FDDC
- str r1, [r0]
- b _08052318
- .align 2, 0
-_08051E10: .4byte gUnknown_826CEB8
-_08051E14: .4byte gSprites
-_08051E18: .4byte sub_804FDDC
-_08051E1C:
- ldr r0, _08051E3C @ =gUnknown_826CF30
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r2, _08051E40 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x3C
- strh r1, [r0]
- b _08052318
- .align 2, 0
-_08051EE0: .4byte gUnknown_2031DAC
-_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 @ =gUnknown_826CDE4
- movs r2, 0x8
- negs r2, r2
- movs r1, 0x78
- movs r3, 0
- bl CreateSprite
- ldr r5, _08051FE0 @ =gUnknown_2031DAC
- 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 @ =sub_8053A0C
- 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 gUnknown_826CDE4
-_08051FE0: .4byte gUnknown_2031DAC
-_08051FE4: .4byte gSprites
-_08051FE8: .4byte sub_8053A0C
-_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 @ =gUnknown_2031DAC
- 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 gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x44
- strh r1, [r0]
- b _08052318
- .align 2, 0
-_080521B0: .4byte gUnknown_2031DAC
-_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 sub_805080C
- ldr r1, _08052284 @ =gCB2_AfterEvolution
- ldr r0, _08052288 @ =sub_8050948
- 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 @ =gUnknown_2031DAC
- 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 sub_8050948
-_0805228C: .4byte gUnknown_2031DA4
-_08052290: .4byte gPlayerParty
-_08052294: .4byte gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- ldr r1, [r0]
-_080522AC:
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08052318
- .align 2, 0
-_080522B8: .4byte gUnknown_2031DAC
-_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 @ =gUnknown_2031DAC
- ldr r1, [r0]
- adds r1, 0x94
- ldrh r5, [r1]
- ldr r1, _08052354 @ =0x0000010b
- adds r7, r0, 0
- cmp r5, r1
- bls _08052344
- bl _08053774
-_08052344:
- lsls r0, r5, 2
- ldr r1, _08052358 @ =_0805235C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08052350: .4byte gUnknown_2031DAC
-_08052354: .4byte 0x0000010b
-_08052358: .4byte _0805235C
- .align 2, 0
-_0805235C:
- .4byte _0805278C
- .4byte _08052804
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08052860
- .4byte _080528A8
- .4byte _0805291C
- .4byte _08053774
- .4byte _08052988
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _080529AC
- .4byte _080529DC
- .4byte _080529EE
- .4byte _08052A10
- .4byte _08053774
- .4byte _08053774
- .4byte _08052B08
- .4byte _08052B28
- .4byte _08052B94
- .4byte _08052C18
- .4byte _08052C3C
- .4byte _08052C88
- .4byte _08052CD4
- .4byte _08052D30
- .4byte _08052D9C
- .4byte _08052DB0
- .4byte _08052DC4
- .4byte _08052DD8
- .4byte _08052F00
- .4byte _08052FD0
- .4byte _08053058
- .4byte _080530F8
- .4byte _08053108
- .4byte _08053128
- .4byte _08053774
- .4byte _08053774
- .4byte _0805324C
- .4byte _0805325C
- .4byte _0805327A
- .4byte _08053774
- .4byte _080532A0
- .4byte _080532E0
- .4byte _08053320
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053340
- .4byte _08053368
- .4byte _08053384
- .4byte _080533A4
- .4byte _0805344C
- .4byte _08053480
- .4byte _080534CC
- .4byte _08053584
- .4byte _08053610
- .4byte _0805365C
- .4byte _0805366C
- .4byte _08053672
- .4byte _08053698
- .4byte _080536F4
- .4byte _08053718
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08052A58
- .4byte _08052A8C
- .4byte _08052AE0
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053180
- .4byte _080531E8
- .4byte _08053224
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _080535BC
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08052BC0
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _08053774
- .4byte _080535F4
-_0805278C:
- ldr r3, _080527F8 @ =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, _080527FC @ =0x0000ff4c
- strh r1, [r0, 0x24]
- ldrb r0, [r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r3
- ldr r2, _08052800 @ =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 _08053774
- .align 2, 0
-_080527F8: .4byte gSprites
-_080527FC: .4byte 0x0000ff4c
-_08052800: .4byte gMonFrontPicCoords
-_08052804:
- ldr r5, [r7]
- adds r6, r5, 0
- adds r6, 0xE6
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- ble _08052838
- ldr r2, _08052834 @ =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 _08053774
- .align 2, 0
-_08052834: .4byte gSprites
-_08052838:
- ldr r2, _0805285C @ =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 _08053774
- .align 2, 0
-_0805285C: .4byte gSprites
-_08052860:
- ldr r4, _0805289C @ =gStringVar4
- ldr r1, _080528A0 @ =gUnknown_841E1E9
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8054508
- ldr r4, _080528A4 @ =gUnknown_2031DAC
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0xF0
- ldrh r1, [r2]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _0805288E
- adds r0, r1, 0
- movs r1, 0
- bl PlayCry1
-_0805288E:
- ldr r3, [r4]
- adds r1, r3, 0
- adds r1, 0x94
- movs r2, 0
- movs r0, 0xB
- bl _080535EA
- .align 2, 0
-_0805289C: .4byte gStringVar4
-_080528A0: .4byte gUnknown_841E1E9
-_080528A4: .4byte gUnknown_2031DAC
-_080528A8:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x50
- beq _080528B8
- bl _08053774
-_080528B8:
- adds r0, r1, 0
- adds r0, 0x8E
- ldrb r0, [r0]
- ldr r2, _0805290C @ =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, _08052910 @ =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, _08052914 @ =gStringVar4
- ldr r1, _08052918 @ =gUnknown_841E200
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8054508
- bl _08053774
- .align 2, 0
-_0805290C: .4byte gSprites
-_08052910: .4byte 0x000fffff
-_08052914: .4byte gStringVar4
-_08052918: .4byte gUnknown_841E200
-_0805291C:
- ldr r5, _08052978 @ =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, _0805297C @ =SpriteCallbackDummy
- cmp r1, r0
- beq _0805293C
- bl _08053774
-_0805293C:
- ldr r0, _08052980 @ =gUnknown_826CDE4
- 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, _08052984 @ =sub_8053938
- 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 _08053708
- .align 2, 0
-_08052978: .4byte gSprites
-_0805297C: .4byte SpriteCallbackDummy
-_08052980: .4byte gUnknown_826CDE4
-_08052984: .4byte sub_8053938
-_08052988:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _080529A8 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x14
- strh r1, [r0]
- bl _08053774
- .align 2, 0
-_080529A8: .4byte gUnknown_2031DAC
-_080529AC:
- ldr r0, _080529D8 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080529BC
- bl _08053774
-_080529BC:
- movs r0, 0x4
- bl sub_8050968
- movs r0, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0
- movs r1, 0x3
- bl CopyWindowToVram
- bl _08053704
- .align 2, 0
-_080529D8: .4byte gPaletteFade
-_080529DC:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- bl _08053700
-_080529EE:
- ldr r0, _08052A0C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _080529FE
- bl _08053774
-_080529FE:
- ldr r0, [r7]
- adds r0, 0x94
- movs r1, 0x17
- strh r1, [r0]
- bl _08053774
- .align 2, 0
-_08052A0C: .4byte gPaletteFade
-_08052A10:
- ldr r4, _08052A2C @ =gUnknown_2031DAC
- ldr r0, [r4]
- adds r2, r0, 0
- adds r2, 0xEA
- ldrh r1, [r2]
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bls _08052A30
- adds r0, r1, 0
- subs r0, 0x34
- strh r0, [r2]
- b _08052A4A
- .align 2, 0
-_08052A2C: .4byte gUnknown_2031DAC
-_08052A30:
- 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
- movs r0, 0x7C
- strh r0, [r1]
- str r2, [r3, 0x64]
-_08052A4A:
- ldr r0, _08052A54 @ =gUnknown_2031DAC
- ldr r4, [r0]
- bl _0805330C
- .align 2, 0
-_08052A54: .4byte gUnknown_2031DAC
-_08052A58:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x14
- bhi _08052A68
- bl _08053774
-_08052A68:
- movs r0, 0x3
- bl sub_8050968
- ldr r0, _08052A88 @ =gUnknown_826CF48
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x91
- strb r0, [r1]
- ldr r1, [r7]
- bl _08053708
- .align 2, 0
-_08052A88: .4byte gUnknown_826CF48
-_08052A8C:
- ldr r2, _08052AD4 @ =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 _08052AAC
- bl _08053774
-_08052AAC:
- adds r0, r1, 0
- bl DestroySprite
- ldr r1, _08052AD8 @ =0x00000452
- movs r0, 0x50
- bl SetGpuReg
- movs r1, 0x82
- lsls r1, 3
- movs r0, 0x52
- bl SetGpuReg
- ldr r0, _08052ADC @ =c3_08054588
- movs r1, 0x5
- bl CreateTask
- ldr r1, [r7]
- bl _08053708
- .align 2, 0
-_08052AD4: .4byte gSprites
-_08052AD8: .4byte 0x00000452
-_08052ADC: .4byte c3_08054588
-_08052AE0:
- ldr r0, _08052B00 @ =c3_08054588
- bl FuncIsActiveTask
- lsls r0, 24
- cmp r0, 0
- beq _08052AF0
- bl _08053774
-_08052AF0:
- ldr r0, _08052B04 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x1A
- strh r1, [r0]
- bl _08053774
- .align 2, 0
-_08052B00: .4byte c3_08054588
-_08052B04: .4byte gUnknown_2031DAC
-_08052B08:
- 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
- beq _08052B22
- bl _08053774
-_08052B22:
- adds r1, r2, 0
- bl _08053708
-_08052B28:
- ldr r0, _08052B80 @ =gUnknown_826CE44
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0x3
- bl CreateSprite
- ldr r4, _08052B84 @ =gUnknown_2031DAC
- ldr r1, [r4]
- adds r1, 0x90
- strb r0, [r1]
- ldr r5, _08052B88 @ =gSprites
- ldr r0, [r4]
- adds r0, 0x90
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _08052B8C @ =sub_804FD48
- str r1, [r0]
- ldr r0, _08052B90 @ =gUnknown_826CE84
- movs r1, 0x78
- 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
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAnim
- ldr r1, [r4]
- bl _08053708
- .align 2, 0
-_08052B80: .4byte gUnknown_826CE44
-_08052B84: .4byte gUnknown_2031DAC
-_08052B88: .4byte gSprites
-_08052B8C: .4byte sub_804FD48
-_08052B90: .4byte gUnknown_826CE84
-_08052B94:
- ldr r2, [r7]
- adds r1, r2, 0
- adds r1, 0xE0
- ldrh r0, [r1]
- subs r0, 0x3
- strh r0, [r1]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0xA6
- bne _08052BAE
- subs r1, 0x4C
- movs r0, 0xC8
- strh r0, [r1]
-_08052BAE:
- ldr r1, _08052BBC @ =0x00001241
- movs r0, 0
- bl SetGpuReg
- bl _08053774
- .align 2, 0
-_08052BBC: .4byte 0x00001241
-_08052BC0:
- ldr r2, _08052C14 @ =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 r2, 0x22
- ldrsh r1, [r0, r2]
- movs r0, 0x8
- negs r0, r0
- cmp r1, r0
- blt _08052C06
- bl _08053774
-_08052C06:
- adds r1, r4, 0
- adds r1, 0x94
- movs r0, 0x1D
- strh r0, [r1]
- bl _08053774
- .align 2, 0
-_08052C14: .4byte gSprites
-_08052C18:
- 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, _08052C38 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x1E
- strh r1, [r0]
- bl _08053774
- .align 2, 0
-_08052C38: .4byte gUnknown_2031DAC
-_08052C3C:
- ldr r0, _08052C80 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08052C4C
- bl _08053774
-_08052C4C:
- ldr r0, [r7]
- adds r0, 0x90
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08052C84 @ =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 _08053708
- .align 2, 0
-_08052C80: .4byte gPaletteFade
-_08052C84: .4byte gSprites
-_08052C88:
- 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, _08052CCC @ =gUnknown_826CE84
- adds r0, r5, 0
- movs r1, 0x6F
- movs r2, 0xAA
- movs r3, 0
- bl CreateSprite
- ldr r4, _08052CD0 @ =gUnknown_2031DAC
- 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 _08053708
- .align 2, 0
-_08052CCC: .4byte gUnknown_826CE84
-_08052CD0: .4byte gUnknown_2031DAC
-_08052CD4:
- ldr r0, _08052D24 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08052CF2
- movs r0, 0x28
- bl PlaySE
- ldr r0, _08052D28 @ =gUnknown_2031DAC
- ldr r1, [r0]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_08052CF2:
- ldr r3, _08052D2C @ =gSprites
- ldr r0, _08052D28 @ =gUnknown_2031DAC
- 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 _08053774
- .align 2, 0
-_08052D24: .4byte gPaletteFade
-_08052D28: .4byte gUnknown_2031DAC
-_08052D2C: .4byte gSprites
-_08052D30:
- ldr r5, _08052D94 @ =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 _08052D76
- bl _08053774
-_08052D76:
- 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
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- ldr r0, _08052D98 @ =c3_0805465C
- b _08052FBE
- .align 2, 0
-_08052D94: .4byte gSprites
-_08052D98: .4byte c3_0805465C
-_08052D9C:
- ldr r2, _08052DAC @ =0x0000ffff
- movs r0, 0x8
- movs r1, 0x10
- bl BlendPalettes
- bl _08053704
- .align 2, 0
-_08052DAC: .4byte 0x0000ffff
-_08052DB0:
- ldr r2, _08052DC0 @ =0x0000ffff
- movs r0, 0x8
- movs r1, 0x10
- bl BlendPalettes
- bl _08053704
- .align 2, 0
-_08052DC0: .4byte 0x0000ffff
-_08052DC4:
- ldr r2, _08052DD4 @ =0x0000ffff
- movs r0, 0x8
- movs r1, 0x10
- bl BlendPalettes
- bl _08053704
- .align 2, 0
-_08052DD4: .4byte 0x0000ffff
-_08052DD8:
- ldr r5, _08052E44 @ =gUnknown_2031DAC
- ldr r0, [r5]
- adds r0, 0xF0
- ldrh r0, [r0]
- bl IsPokeSpriteNotFlipped
- lsls r0, 24
- cmp r0, 0
- bne _08052E50
- ldr r4, _08052E48 @ =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, _08052E4C @ =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 _08052E66
- .align 2, 0
-_08052E44: .4byte gUnknown_2031DAC
-_08052E48: .4byte gSprites
-_08052E4C: .4byte gUnknown_826CF88
-_08052E50:
- ldr r0, [r5]
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _08052EF4 @ =gSprites
- adds r0, r1
- movs r1, 0
- bl StartSpriteAffineAnim
-_08052E66:
- ldr r5, _08052EF8 @ =gUnknown_2031DAC
- ldr r0, [r5]
- adds r0, 0x8F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08052EF4 @ =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, 0x28
- 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, 0xC8
- 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, _08052EFC @ =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 _08053708
- .align 2, 0
-_08052EF4: .4byte gSprites
-_08052EF8: .4byte gUnknown_2031DAC
-_08052EFC: .4byte 0x0000ffe0
-_08052F00:
- ldr r4, _08052FC8 @ =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 _08052F48
- movs r0, 0x27
- bl PlaySE
-_08052F48:
- 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 _08052F68
- bl _08053774
-_08052F68:
- 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 r0, _08052FCC @ =sub_8054734
-_08052FBE:
- movs r1, 0x5
- bl CreateTask
- bl _08053774
- .align 2, 0
-_08052FC8: .4byte gSprites
-_08052FCC: .4byte sub_8054734
-_08052FD0:
- ldr r4, _08053054 @ =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 _08053012
- b _08053774
-_08053012:
- 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 _08053774
- .align 2, 0
-_08053054: .4byte gSprites
-_08053058:
- ldr r0, _080530E4 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08053066
- b _08053774
-_08053066:
- 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]
- movs r0, 0x3
- bl sub_8050968
- ldr r0, [r7]
- adds r0, 0xE4
- movs r1, 0xCE
- lsls r1, 1
- strh r1, [r0]
- ldr r0, _080530E8 @ =gUnknown_826CE44
- movs r4, 0x14
- negs r4, r4
- movs r1, 0x78
- adds r2, r4, 0
- movs r3, 0x3
- bl CreateSprite
- ldr r1, [r7]
- adds r1, 0x90
- strb r0, [r1]
- ldr r5, _080530EC @ =gSprites
- ldr r0, [r7]
- adds r0, 0x90
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r5, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _080530F0 @ =sub_804FD48
- str r1, [r0]
- ldr r0, _080530F4 @ =gUnknown_826CE84
- movs r1, 0x78
- 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
- adds r0, r5
- movs r1, 0x1
- bl StartSpriteAnim
- b _08053774
- .align 2, 0
-_080530E4: .4byte gPaletteFade
-_080530E8: .4byte gUnknown_826CE44
-_080530EC: .4byte gSprites
-_080530F0: .4byte sub_804FD48
-_080530F4: .4byte gUnknown_826CE84
-_080530F8:
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- str r0, [sp]
- adds r0, r1, 0
- movs r2, 0x10
- movs r3, 0
- b _08053700
-_08053108:
- movs r1, 0x92
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, _08053124 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08053120
- b _08053774
-_08053120:
- b _08053704
- .align 2, 0
-_08053124: .4byte gPaletteFade
-_08053128:
- ldr r2, _0805317C @ =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, 0x4
- 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, 0x4
- strh r1, [r0, 0x26]
- ldrb r1, [r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r6, 0x26
- ldrsh r1, [r0, r6]
- movs r2, 0x22
- ldrsh r0, [r0, r2]
- adds r1, r0
- cmp r1, 0x40
- beq _0805316E
- b _08053774
-_0805316E:
- adds r0, r4, 0
- adds r0, 0x94
- movs r1, 0x90
- strh r1, [r0]
- movs r0, 0
- str r0, [r4, 0x64]
- b _08053774
- .align 2, 0
-_0805317C: .4byte gSprites
-_08053180:
- movs r1, 0xB2
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r4, _080531DC @ =gUnknown_2031DAC
- ldr r2, [r4]
- adds r1, r2, 0
- adds r1, 0xE0
- ldrh r0, [r1]
- adds r0, 0x3
- strh r0, [r1]
- adds r1, 0x4
- ldrh r0, [r1]
- adds r0, 0x3
- strh r0, [r1]
- ldr r0, [r2, 0x64]
- adds r0, 0x1
- str r0, [r2, 0x64]
- cmp r0, 0xA
- bne _080531C4
- ldr r0, _080531E0 @ =c3_08054588
- movs r1, 0x5
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _080531E4 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- movs r0, 0x1
- strh r0, [r1, 0xC]
-_080531C4:
- ldr r1, [r4]
- adds r3, r1, 0
- adds r3, 0xE0
- movs r6, 0
- ldrsh r0, [r3, r6]
- movs r2, 0x9E
- lsls r2, 1
- cmp r0, r2
- bgt _080531D8
- b _08053774
-_080531D8:
- strh r2, [r3]
- b _08053708
- .align 2, 0
-_080531DC: .4byte gUnknown_2031DAC
-_080531E0: .4byte c3_08054588
-_080531E4: .4byte gTasks
-_080531E8:
- ldr r0, [r7]
- adds r0, 0x90
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08053220 @ =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 _08053774
- .align 2, 0
-_08053220: .4byte gSprites
-_08053224:
- ldr r0, _08053244 @ =c3_08054588
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, 0
- beq _08053234
- b _08053774
-_08053234:
- ldr r0, _08053248 @ =gUnknown_2031DAC
- ldr r2, [r0]
- adds r1, r2, 0
- adds r1, 0x94
- movs r0, 0x2E
- strh r0, [r1]
- str r3, [r2, 0x64]
- b _08053774
- .align 2, 0
-_08053244: .4byte c3_08054588
-_08053248: .4byte gUnknown_2031DAC
-_0805324C:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0xA
- beq _0805325A
- b _08053774
-_0805325A:
- b _08053708
-_0805325C:
- ldr r1, [r7]
- adds r5, r1, 0
- adds r5, 0xE0
- ldrh r0, [r5]
- adds r0, 0x1
- strh r0, [r5]
- lsls r0, 16
- asrs r0, 16
- movs r6, 0xAE
- lsls r6, 1
- cmp r0, r6
- bgt _08053276
- b _08053774
-_08053276:
- strh r6, [r5]
- b _08053708
-_0805327A:
- ldr r0, _08053298 @ =gUnknown_826CF30
- movs r1, 0x78
- movs r2, 0x50
- movs r3, 0
- bl CreateSprite
- ldr r2, _0805329C @ =gUnknown_2031DAC
- ldr r1, [r2]
- adds r1, 0x91
- strb r0, [r1]
- ldr r0, [r2]
- adds r0, 0x94
- movs r1, 0x32
- strh r1, [r0]
- b _08053774
- .align 2, 0
-_08053298: .4byte gUnknown_826CF30
-_0805329C: .4byte gUnknown_2031DAC
-_080532A0:
- ldr r2, _080532DC @ =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 _080532BE
- b _08053774
-_080532BE:
- 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 _08053774
- .align 2, 0
-_080532DC: .4byte gSprites
-_080532E0:
- ldr r1, [r7]
- adds r2, r1, 0
- adds r2, 0xEA
- ldrh r3, [r2]
- ldr r0, _080532F8 @ =0x000003ff
- cmp r3, r0
- bhi _080532FC
- adds r0, r3, 0
- adds r0, 0x34
- strh r0, [r2]
- b _0805330A
- .align 2, 0
-_080532F8: .4byte 0x000003ff
-_080532FC:
- movs r0, 0x80
- lsls r0, 3
- strh r0, [r2]
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
-_0805330A:
- ldr r4, [r7]
-_0805330C:
- 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 _08053774
-_08053320:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r0, _0805333C @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x3C
- strh r1, [r0]
- b _08053774
- .align 2, 0
-_0805333C: .4byte gUnknown_2031DAC
-_08053340:
- ldr r4, _08053364 @ =gPaletteFade
- ldrb r1, [r4, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0805334E
- b _08053774
-_0805334E:
- 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 _08053704
- .align 2, 0
-_08053364: .4byte gPaletteFade
-_08053368:
- ldr r2, _08053380 @ =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 _08053700
- .align 2, 0
-_08053380: .4byte gPaletteFade
-_08053384:
- movs r1, 0xA2
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, _080533A0 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0805339C
- b _08053774
-_0805339C:
- b _08053704
- .align 2, 0
-_080533A0: .4byte gPaletteFade
-_080533A4:
- ldr r0, _08053438 @ =gUnknown_826CDE4
- movs r2, 0x8
- negs r2, r2
- movs r1, 0x78
- movs r3, 0
- bl CreateSprite
- ldr r5, _0805343C @ =gUnknown_2031DAC
- ldr r1, [r5]
- adds r1, 0xD3
- movs r6, 0
- strb r0, [r1]
- ldr r4, _08053440 @ =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, _08053444 @ =sub_8053A0C
- 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, _08053448 @ =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 _08053774
- .align 2, 0
-_08053438: .4byte gUnknown_826CDE4
-_0805343C: .4byte gUnknown_2031DAC
-_08053440: .4byte gSprites
-_08053444: .4byte sub_8053A0C
-_08053448: .4byte 0x0000ffff
-_0805344C:
- ldr r2, _08053478 @ =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, _0805347C @ =0x0000ffff
- str r1, [sp]
- movs r1, 0x1
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- ldr r1, [r7]
- b _08053708
- .align 2, 0
-_08053478: .4byte gSprites
-_0805347C: .4byte 0x0000ffff
-_08053480:
- ldr r2, _080534BC @ =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, _080534C0 @ =SpriteCallbackDummy
- cmp r1, r0
- beq _0805349E
- b _08053774
-_0805349E:
- adds r0, r3, 0
- adds r0, 0xF2
- ldrh r2, [r0]
- lsls r0, r2, 3
- ldr r1, _080534C4 @ =gMonFrontPicTable
- adds r0, r1
- ldr r1, _080534C8 @ =gMonSpritesGfxPtr
- ldr r1, [r1]
- ldr r1, [r1, 0x10]
- ldr r3, [r3, 0x6C]
- bl HandleLoadSpecialPokePic
- ldr r1, [r7]
- b _08053708
- .align 2, 0
-_080534BC: .4byte gSprites
-_080534C0: .4byte SpriteCallbackDummy
-_080534C4: .4byte gMonFrontPicTable
-_080534C8: .4byte gMonSpritesGfxPtr
-_080534CC:
- ldr r4, _08053578 @ =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, _0805357C @ =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, _08053580 @ =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 _08053708
- .align 2, 0
-_08053578: .4byte gSprites
-_0805357C: .4byte gMonFrontPicCoords
-_08053580: .4byte 0x000fffff
-_08053584:
- movs r1, 0xAA
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r4, _080535B0 @ =gStringVar4
- ldr r1, _080535B4 @ =gUnknown_841E20D
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8054508
- ldr r0, _080535B8 @ =gUnknown_2031DAC
- ldr r3, [r0]
- adds r1, r3, 0
- adds r1, 0x94
- movs r2, 0
- movs r0, 0xA7
- b _080535EA
- .align 2, 0
-_080535B0: .4byte gStringVar4
-_080535B4: .4byte gUnknown_841E20D
-_080535B8: .4byte gUnknown_2031DAC
-_080535BC:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x3C
- bhi _080535CA
- b _08053774
-_080535CA:
- adds r2, r1, 0
- adds r2, 0xF2
- ldrh r1, [r2]
- movs r0, 0xCE
- lsls r0, 1
- cmp r1, r0
- beq _080535E0
- adds r0, r1, 0
- movs r1, 0
- bl PlayCry1
-_080535E0:
- ldr r3, [r7]
- adds r1, r3, 0
- adds r1, 0x94
- movs r2, 0
- ldr r0, _080535F0 @ =0x0000010b
-_080535EA:
- strh r0, [r1]
- str r2, [r3, 0x64]
- b _08053774
- .align 2, 0
-_080535F0: .4byte 0x0000010b
-_080535F4:
- bl IsCryFinished
- lsls r0, 24
- cmp r0, 0
- bne _08053600
- b _08053774
-_08053600:
- ldr r0, _0805360C @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0x44
- strh r1, [r0]
- b _08053774
- .align 2, 0
-_0805360C: .4byte gUnknown_2031DAC
-_08053610:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0xA
- bne _08053622
- ldr r0, _08053650 @ =0x00000103
- bl PlayFanfare
-_08053622:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- cmp r0, 0xFA
- beq _0805362C
- b _08053774
-_0805362C:
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- movs r5, 0
- strh r0, [r1]
- ldr r4, _08053654 @ =gStringVar4
- ldr r1, _08053658 @ =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 _08053774
- .align 2, 0
-_08053650: .4byte 0x00000103
-_08053654: .4byte gStringVar4
-_08053658: .4byte gUnknown_841E21E
-_0805365C:
- ldr r1, [r7]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x3C
- beq _0805366A
- b _08053774
-_0805366A:
- b _08053708
-_0805366C:
- bl sub_80544AC
- b _08053704
-_08053672:
- ldr r2, [r7]
- adds r0, r2, 0
- adds r0, 0xEE
- ldrb r0, [r0]
- cmp r0, 0
- beq _08053682
- movs r0, 0x1
- b _08053776
-_08053682:
- ldr r0, _08053694 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08053774
- adds r1, r2, 0
- b _08053708
- .align 2, 0
-_08053694: .4byte gMain
-_08053698:
- ldr r0, _080536DC @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- movs r1, 0
- bl sub_805080C
- ldr r1, _080536E0 @ =gCB2_AfterEvolution
- ldr r0, _080536E4 @ =sub_8050948
- str r0, [r1]
- ldr r7, _080536E8 @ =gUnknown_2031DA4
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _080536EC @ =gPlayerParty
- adds r0, r5
- movs r1, 0x1
- movs r2, 0
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _08053704
- ldrb r3, [r7]
- adds r0, r3, 0
- muls r0, r6
- adds r0, r5
- ldr r1, _080536F0 @ =gUnknown_2031DAC
- ldr r1, [r1]
- adds r1, 0x8F
- ldrb r2, [r1]
- adds r1, r4, 0
- bl TradeEvolutionScene
- b _08053704
- .align 2, 0
-_080536DC: .4byte gSpecialVar_0x8005
-_080536E0: .4byte gCB2_AfterEvolution
-_080536E4: .4byte sub_8050948
-_080536E8: .4byte gUnknown_2031DA4
-_080536EC: .4byte gPlayerParty
-_080536F0: .4byte gUnknown_2031DAC
-_080536F4:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
-_08053700:
- bl BeginNormalPaletteFade
-_08053704:
- ldr r0, _08053714 @ =gUnknown_2031DAC
- ldr r1, [r0]
-_08053708:
- adds r1, 0x94
- ldrh r0, [r1]
- adds r0, 0x1
- strh r0, [r1]
- b _08053774
- .align 2, 0
-_08053714: .4byte gUnknown_2031DAC
-_08053718:
- ldr r0, _08053780 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0
- bne _08053774
- ldr r0, [r7]
- adds r0, 0xF4
- ldrh r0, [r0]
- bl PlayNewMapMusic
- ldr r0, [r7]
- cmp r0, 0
- beq _08053766
- 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]
-_08053766:
- ldr r0, _08053784 @ =CB2_ReturnToField
- bl SetMainCallback2
- bl sub_8053AE4
- bl HelpSystem_Enable
-_08053774:
- movs r0, 0
-_08053776:
- add sp, 0x10
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08053780: .4byte gPaletteFade
-_08053784: .4byte CB2_ReturnToField
- thumb_func_end sub_805232C
-
- thumb_func_start sub_8053788
-sub_8053788: @ 8053788
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r0, _080537A4 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r0, r2
- ldrb r0, [r1]
- cmp r0, 0
- beq _080537A8
- cmp r0, 0x4
- beq _080537B8
- b _08053814
- .align 2, 0
-_080537A4: .4byte gMain
-_080537A8:
- movs r0, 0x4
- strb r0, [r1]
- ldr r1, _080537B4 @ =gSoftResetDisabled
- movs r0, 0x1
- b _08053812
- .align 2, 0
-_080537B4: .4byte gSoftResetDisabled
-_080537B8:
- ldr r0, _080537F4 @ =gCB2_AfterEvolution
- ldr r1, _080537F8 @ =sub_8053E8C
- mov r8, r1
- str r1, [r0]
- ldr r7, _080537FC @ =gUnknown_2031DA4
- ldrb r0, [r7]
- movs r6, 0x64
- muls r0, r6
- ldr r5, _08053800 @ =gPlayerParty
- adds r0, r5
- movs r1, 0x1
- movs r2, 0
- bl GetEvolutionTargetSpecies
- lsls r0, 16
- lsrs r4, r0, 16
- cmp r4, 0
- beq _08053808
- ldrb r3, [r7]
- adds r0, r3, 0
- muls r0, r6
- adds r0, r5
- ldr r1, _08053804 @ =gUnknown_2031DAC
- ldr r1, [r1]
- adds r1, 0x8F
- ldrb r2, [r1]
- adds r1, r4, 0
- bl TradeEvolutionScene
- b _0805380E
- .align 2, 0
-_080537F4: .4byte gCB2_AfterEvolution
-_080537F8: .4byte sub_8053E8C
-_080537FC: .4byte gUnknown_2031DA4
-_08053800: .4byte gPlayerParty
-_08053804: .4byte gUnknown_2031DAC
-_08053808:
- mov r0, r8
- bl SetMainCallback2
-_0805380E:
- ldr r1, _08053838 @ =gUnknown_2031DA4
- movs r0, 0xFF
-_08053812:
- strb r0, [r1]
-_08053814:
- bl HasLinkErrorOccurred
- lsls r0, 24
- cmp r0, 0
- bne _08053822
- bl RunTasks
-_08053822:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08053838: .4byte gUnknown_2031DA4
- thumb_func_end sub_8053788
-
- thumb_func_start sub_805383C
-sub_805383C: @ 805383C
- push {r4-r6,lr}
- bl sub_804FFC4
- bl GetBlockReceivedStatus
- lsls r0, 24
- lsrs r5, r0, 24
- movs r6, 0x1
- adds r0, r5, 0
- ands r0, r6
- cmp r0, 0
- beq _0805387A
- ldr r4, _080538A8 @ =gBlockRecvBuffer
- ldrh r1, [r4]
- ldr r0, _080538AC @ =0x0000dcba
- cmp r1, r0
- bne _08053864
- ldr r0, _080538B0 @ =sub_8053788
- bl SetMainCallback2
-_08053864:
- ldrh r1, [r4]
- ldr r0, _080538B4 @ =0x0000abcd
- cmp r1, r0
- bne _08053874
- ldr r0, _080538B8 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x72
- strb r6, [r0]
-_08053874:
- movs r0, 0
- bl ResetBlockReceivedFlag
-_0805387A:
- movs r0, 0x2
- ands r0, r5
- cmp r0, 0
- beq _080538A2
- ldr r0, _080538A8 @ =gBlockRecvBuffer
- movs r1, 0x80
- lsls r1, 1
- adds r0, r1
- ldrh r1, [r0]
- ldr r0, _080538B4 @ =0x0000abcd
- cmp r1, r0
- bne _0805389C
- ldr r0, _080538B8 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x73
- movs r1, 0x1
- strb r1, [r0]
-_0805389C:
- movs r0, 0x1
- bl ResetBlockReceivedFlag
-_080538A2:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080538A8: .4byte gBlockRecvBuffer
-_080538AC: .4byte 0x0000dcba
-_080538B0: .4byte sub_8053788
-_080538B4: .4byte 0x0000abcd
-_080538B8: .4byte gUnknown_2031DAC
- thumb_func_end sub_805383C
-
- thumb_func_start sub_80538BC
-sub_80538BC: @ 80538BC
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r5, r1]
- movs r1, 0xA
- bl __divsi3
- ldrh r4, [r5, 0x22]
- adds r4, r0
- strh r4, [r5, 0x22]
- ldrh r0, [r5, 0x30]
- ldrh r2, [r5, 0x38]
- adds r0, r2
- strh r0, [r5, 0x38]
- movs r1, 0x38
- ldrsh r0, [r5, r1]
- movs r1, 0xA
- bl __divsi3
- strh r0, [r5, 0x20]
- lsls r4, 16
- asrs r4, 16
- cmp r4, 0x4C
- ble _0805390A
- movs r0, 0x4C
- strh r0, [r5, 0x22]
- movs r2, 0x2E
- ldrsh r1, [r5, r2]
- movs r2, 0x32
- ldrsh r0, [r5, r2]
- muls r0, r1
- negs r0, r0
- movs r1, 0x64
- bl __divsi3
- strh r0, [r5, 0x2E]
- ldrh r0, [r5, 0x34]
- adds r0, 0x1
- strh r0, [r5, 0x34]
-_0805390A:
- movs r1, 0x20
- ldrsh r0, [r5, r1]
- cmp r0, 0x78
- bne _08053916
- movs r0, 0
- strh r0, [r5, 0x30]
-_08053916:
- ldrh r0, [r5, 0x36]
- ldrh r2, [r5, 0x2E]
- adds r0, r2
- strh r0, [r5, 0x2E]
- movs r1, 0x34
- ldrsh r0, [r5, r1]
- cmp r0, 0x4
- bne _0805392E
- movs r0, 0x1
- strh r0, [r5, 0x3C]
- ldr r0, _08053934 @ =SpriteCallbackDummy
- str r0, [r5, 0x1C]
-_0805392E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08053934: .4byte SpriteCallbackDummy
- thumb_func_end sub_80538BC
-
- thumb_func_start sub_8053938
-sub_8053938: @ 8053938
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- ldr r1, _080539A0 @ =gUnknown_826D1E4
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r1, [r4, 0x26]
- adds r0, r1
- strh r0, [r4, 0x26]
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x16
- bne _08053960
- movs r0, 0x31
- bl PlaySE
-_08053960:
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x2C
- bne _08053996
- movs r0, 0x85
- bl PlaySE
- ldr r0, _080539A4 @ =sub_80539AC
- str r0, [r4, 0x1C]
- movs r0, 0
- strh r0, [r4, 0x2E]
- ldrb r1, [r4, 0x5]
- lsrs r1, 4
- adds r1, 0x10
- movs r0, 0x1
- lsls r0, r1
- movs r1, 0x1
- negs r1, r1
- ldr r2, _080539A8 @ =0x0000ffff
- str r2, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_08053996:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080539A0: .4byte gUnknown_826D1E4
-_080539A4: .4byte sub_80539AC
-_080539A8: .4byte 0x0000ffff
- thumb_func_end sub_8053938
-
- thumb_func_start sub_80539AC
-sub_80539AC: @ 80539AC
- push {r4,lr}
- adds r4, r0, 0
- movs r1, 0x30
- ldrsh r0, [r4, r1]
- cmp r0, 0x14
- bne _080539C0
- adds r0, r4, 0
- movs r1, 0x1
- bl StartSpriteAffineAnim
-_080539C0:
- ldrh r0, [r4, 0x30]
- adds r0, 0x1
- strh r0, [r4, 0x30]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x14
- ble _080539FE
- ldr r1, _08053A04 @ =gUnknown_826D1E4
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- movs r1, 0
- ldrsb r1, [r0, r1]
- ldrh r0, [r4, 0x26]
- subs r0, r1
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x17
- bne _080539FE
- adds r0, r4, 0
- bl DestroySprite
- ldr r0, _08053A08 @ =gUnknown_2031DAC
- ldr r0, [r0]
- adds r0, 0x94
- movs r1, 0xE
- strh r1, [r0]
-_080539FE:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08053A04: .4byte gUnknown_826D1E4
-_08053A08: .4byte gUnknown_2031DAC
- thumb_func_end sub_80539AC
-
- thumb_func_start sub_8053A0C
-sub_8053A0C: @ 8053A0C
- push {r4,lr}
- adds r4, r0, 0
- ldrh r2, [r4, 0x32]
- movs r1, 0x32
- ldrsh r0, [r4, r1]
- cmp r0, 0
- bne _08053A3C
- ldrh r0, [r4, 0x22]
- adds r0, 0x4
- strh r0, [r4, 0x22]
- lsls r0, 16
- asrs r0, 16
- movs r3, 0x34
- ldrsh r1, [r4, r3]
- cmp r0, r1
- ble _08053A8C
- adds r0, r2, 0x1
- strh r0, [r4, 0x32]
- movs r0, 0x16
- strh r0, [r4, 0x2E]
- movs r0, 0x31
- bl PlaySE
- b _08053A8C
-_08053A3C:
- movs r1, 0x2E
- ldrsh r0, [r4, r1]
- cmp r0, 0x42
- bne _08053A4A
- movs r0, 0x32
- bl PlaySE
-_08053A4A:
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- cmp r0, 0x5C
- bne _08053A58
- movs r0, 0x33
- bl PlaySE
-_08053A58:
- movs r3, 0x2E
- ldrsh r0, [r4, r3]
- cmp r0, 0x6B
- bne _08053A66
- movs r0, 0x34
- bl PlaySE
-_08053A66:
- ldr r1, _08053A94 @ =gUnknown_826D1E4
- movs r2, 0x2E
- ldrsh r0, [r4, r2]
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 24
- asrs r0, 24
- ldrh r3, [r4, 0x26]
- adds r0, r3
- strh r0, [r4, 0x26]
- ldrh r0, [r4, 0x2E]
- adds r0, 0x1
- strh r0, [r4, 0x2E]
- lsls r0, 16
- asrs r0, 16
- cmp r0, 0x6C
- bne _08053A8C
- ldr r0, _08053A98 @ =SpriteCallbackDummy
- str r0, [r4, 0x1C]
-_08053A8C:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08053A94: .4byte gUnknown_826D1E4
-_08053A98: .4byte SpriteCallbackDummy
- thumb_func_end sub_8053A0C
-
- thumb_func_start GetInGameTradeSpeciesInfo
-GetInGameTradeSpeciesInfo: @ 8053A9C
- push {r4-r6,lr}
- ldr r0, _08053AD0 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 2
- ldr r0, _08053AD4 @ =gIngameTrades
- adds r4, r0
- ldr r0, _08053AD8 @ =gStringVar1
- ldrh r1, [r4, 0x38]
- movs r6, 0xB
- muls r1, r6
- ldr r5, _08053ADC @ =gSpeciesNames
- adds r1, r5
- bl StringCopy
- ldr r0, _08053AE0 @ =gStringVar2
- ldrh r1, [r4, 0xC]
- muls r1, r6
- adds r1, r5
- bl StringCopy
- ldrh r0, [r4, 0x38]
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_08053AD0: .4byte gSpecialVar_0x8004
-_08053AD4: .4byte gIngameTrades
-_08053AD8: .4byte gStringVar1
-_08053ADC: .4byte gSpeciesNames
-_08053AE0: .4byte gStringVar2
- thumb_func_end GetInGameTradeSpeciesInfo
-
- thumb_func_start sub_8053AE4
-sub_8053AE4: @ 8053AE4
- push {r4,lr}
- sub sp, 0x20
- ldr r0, _08053B2C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- lsls r4, r0, 4
- subs r4, r0
- lsls r4, 2
- ldr r0, _08053B30 @ =gIngameTrades
- adds r4, r0
- ldr r0, _08053B34 @ =gSpecialVar_0x8005
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _08053B38 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x2
- mov r2, sp
- bl GetMonData
- ldr r0, _08053B3C @ =gStringVar1
- mov r1, sp
- bl StringCopy10
- ldr r0, _08053B40 @ =gStringVar2
- ldrh r2, [r4, 0xC]
- movs r1, 0xB
- muls r1, r2
- ldr r2, _08053B44 @ =gSpeciesNames
- adds r1, r2
- bl StringCopy
- add sp, 0x20
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08053B2C: .4byte gSpecialVar_0x8004
-_08053B30: .4byte gIngameTrades
-_08053B34: .4byte gSpecialVar_0x8005
-_08053B38: .4byte gPlayerParty
-_08053B3C: .4byte gStringVar1
-_08053B40: .4byte gStringVar2
-_08053B44: .4byte gSpeciesNames
- thumb_func_end sub_8053AE4
-
- thumb_func_start sub_8053B48
-sub_8053B48: @ 8053B48
- push {r4-r7,lr}
- sub sp, 0x38
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, r1, 4
- subs r2, r1
- lsls r2, 2
- ldr r1, _08053CA4 @ =gIngameTrades
- adds r5, r2, r1
- movs r1, 0x64
- muls r0, r1
- ldr r1, _08053CA8 @ =gPlayerParty
- adds r0, r1
- movs r1, 0x38
- bl GetMonData
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- add r4, sp, 0x34
- movs r0, 0xFE
- strb r0, [r4]
- ldr r6, _08053CAC @ =gEnemyParty
- ldrh r1, [r5, 0xC]
- movs r3, 0x1
- str r3, [sp]
- ldr r0, [r5, 0x24]
- str r0, [sp, 0x4]
- str r3, [sp, 0x8]
- ldr r0, [r5, 0x18]
- str r0, [sp, 0xC]
- adds r0, r6, 0
- movs r3, 0x20
- bl CreateMon
- adds r2, r5, 0
- adds r2, 0xE
- adds r0, r6, 0
- movs r1, 0x27
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0xF
- adds r0, r6, 0
- movs r1, 0x28
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x10
- adds r0, r6, 0
- movs r1, 0x29
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x11
- adds r0, r6, 0
- movs r1, 0x2A
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x12
- adds r0, r6, 0
- movs r1, 0x2B
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x13
- adds r0, r6, 0
- movs r1, 0x2C
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x2
- adds r2, r5, 0
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x2B
- adds r0, r6, 0
- movs r1, 0x7
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x36
- adds r0, r6, 0
- movs r1, 0x31
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x14
- adds r0, r6, 0
- movs r1, 0x2E
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x1D
- adds r0, r6, 0
- movs r1, 0x17
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x1E
- adds r0, r6, 0
- movs r1, 0x18
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x1C
- adds r0, r6, 0
- movs r1, 0x16
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x1F
- adds r0, r6, 0
- movs r1, 0x21
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x20
- adds r0, r6, 0
- movs r1, 0x2F
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x37
- adds r0, r6, 0
- movs r1, 0x30
- bl SetMonData
- adds r0, r6, 0
- movs r1, 0x23
- adds r2, r4, 0
- bl SetMonData
- mov r4, sp
- adds r4, 0x35
- movs r0, 0
- strb r0, [r4]
- ldrh r0, [r5, 0x28]
- cmp r0, 0
- beq _08053CC0
- bl ItemIsMail
- lsls r0, 24
- cmp r0, 0
- beq _08053CB4
- add r0, sp, 0x10
- adds r1, r5, 0
- bl sub_8053CD4
- ldr r0, _08053CB0 @ =gUnknown_2031CCC
- add r1, sp, 0x10
- ldm r1!, {r2,r3,r7}
- stm r0!, {r2,r3,r7}
- ldm r1!, {r2,r3,r7}
- stm r0!, {r2,r3,r7}
- ldm r1!, {r2,r3,r7}
- stm r0!, {r2,r3,r7}
- adds r0, r6, 0
- movs r1, 0x40
- adds r2, r4, 0
- bl SetMonData
- adds r2, r5, 0
- adds r2, 0x28
- adds r0, r6, 0
- movs r1, 0xC
- bl SetMonData
- b _08053CC0
- .align 2, 0
-_08053CA4: .4byte gIngameTrades
-_08053CA8: .4byte gPlayerParty
-_08053CAC: .4byte gEnemyParty
-_08053CB0: .4byte gUnknown_2031CCC
-_08053CB4:
- adds r2, r5, 0
- adds r2, 0x28
- adds r0, r6, 0
- movs r1, 0xC
- bl SetMonData
-_08053CC0:
- ldr r0, _08053CD0 @ =gEnemyParty
- bl CalculateMonStats
- add sp, 0x38
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08053CD0: .4byte gEnemyParty
- thumb_func_end sub_8053B48
-
- thumb_func_start sub_8053CD4
-sub_8053CD4: @ 8053CD4
- push {r4,r5,lr}
- adds r4, r0, 0
- adds r5, r1, 0
- ldr r2, _08053D28 @ =gUnknown_826D1A8
- adds r0, r5, 0
- adds r0, 0x2A
- ldrb r1, [r0]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 2
- adds r2, r0, r2
- adds r1, r4, 0
- movs r3, 0x8
-_08053CEE:
- ldrh r0, [r2]
- strh r0, [r1]
- adds r2, 0x2
- adds r1, 0x2
- subs r3, 0x1
- cmp r3, 0
- bge _08053CEE
- adds r0, r4, 0
- adds r0, 0x12
- adds r1, r5, 0
- adds r1, 0x2B
- bl StringCopy
- ldr r1, [r5, 0x18]
- lsrs r0, r1, 24
- strb r0, [r4, 0x1A]
- lsrs r0, r1, 16
- strb r0, [r4, 0x1B]
- lsrs r0, r1, 8
- strb r0, [r4, 0x1C]
- strb r1, [r4, 0x1D]
- ldrh r0, [r5, 0xC]
- strh r0, [r4, 0x1E]
- ldrh r0, [r5, 0x28]
- strh r0, [r4, 0x20]
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08053D28: .4byte gUnknown_826D1A8
- thumb_func_end sub_8053CD4
-
- thumb_func_start GetTradeSpecies
-GetTradeSpecies: @ 8053D2C
- push {r4-r6,lr}
- ldr r6, _08053D58 @ =gSpecialVar_0x8005
- ldrh r0, [r6]
- movs r5, 0x64
- muls r0, r5
- ldr r4, _08053D5C @ =gPlayerParty
- adds r0, r4
- movs r1, 0x2D
- bl GetMonData
- cmp r0, 0
- bne _08053D60
- ldrh r0, [r6]
- muls r0, r5
- adds r0, r4
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r0, 16
- b _08053D62
- .align 2, 0
-_08053D58: .4byte gSpecialVar_0x8005
-_08053D5C: .4byte gPlayerParty
-_08053D60:
- movs r0, 0
-_08053D62:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end GetTradeSpecies
-
- thumb_func_start CreateInGameTradePokemon
-CreateInGameTradePokemon: @ 8053D68
- push {lr}
- ldr r0, _08053D7C @ =gSpecialVar_0x8005
- ldrb r0, [r0]
- ldr r1, _08053D80 @ =gSpecialVar_0x8004
- ldrb r1, [r1]
- bl sub_8053B48
- pop {r0}
- bx r0
- .align 2, 0
-_08053D7C: .4byte gSpecialVar_0x8005
-_08053D80: .4byte gSpecialVar_0x8004
- thumb_func_end CreateInGameTradePokemon
-
- thumb_func_start sub_8053D84
-sub_8053D84: @ 8053D84
- push {r4-r6,lr}
- bl sub_8050F14
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x1
- bne _08053DE6
- ldr r5, _08053E08 @ =gUnknown_2031DAC
- ldr r0, [r5]
- adds r0, 0x8E
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r4, _08053E0C @ =gSprites
- adds r0, r4
- bl DestroySprite
- ldr r0, [r5]
- adds r0, 0x8F
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- bl FreeSpriteOamMatrix
- ldr r0, _08053E10 @ =gUnknown_2031DA4
- ldrb r4, [r0]
- ldrb r0, [r0, 0x1]
- movs r1, 0x6
- bl __umodsi3
- adds r1, r0, 0
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_805080C
- ldr r0, [r5]
- adds r2, r0, 0
- adds r2, 0x74
- ldr r1, _08053E14 @ =0x0000abcd
- strh r1, [r2]
- adds r0, 0x93
- strb r6, [r0]
- ldr r0, _08053E18 @ =sub_8053E1C
- bl SetMainCallback2
-_08053DE6:
- bl sub_80508F4
- bl sub_805383C
- bl RunTasks
- bl RunTextPrinters
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_08053E08: .4byte gUnknown_2031DAC
-_08053E0C: .4byte gSprites
-_08053E10: .4byte gUnknown_2031DA4
-_08053E14: .4byte 0x0000abcd
-_08053E18: .4byte sub_8053E1C
- thumb_func_end sub_8053D84
-
- thumb_func_start sub_8053E1C
-sub_8053E1C: @ 8053E1C
- push {r4,lr}
- bl sub_804FFC4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_805383C
- cmp r4, 0
- bne _08053E68
- ldr r4, _08053E80 @ =gUnknown_2031DAC
- ldr r2, [r4]
- adds r0, r2, 0
- adds r0, 0x72
- ldrh r1, [r0]
- ldr r0, _08053E84 @ =0x00000101
- cmp r1, r0
- bne _08053E68
- adds r1, r2, 0
- adds r1, 0x74
- ldr r0, _08053E88 @ =0x0000dcba
- strh r0, [r1]
- bl bitmask_all_link_players_but_self
- lsls r0, 24
- lsrs r0, 24
- ldr r1, [r4]
- adds r1, 0x74
- movs r2, 0x14
- bl SendBlock
- ldr r0, [r4]
- adds r0, 0x72
- movs r1, 0x2
- strb r1, [r0]
- ldr r0, [r4]
- adds r0, 0x73
- strb r1, [r0]
-_08053E68:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08053E80: .4byte gUnknown_2031DAC
-_08053E84: .4byte 0x00000101
-_08053E88: .4byte 0x0000dcba
- thumb_func_end sub_8053E1C
-
- thumb_func_start sub_8053E8C
-sub_8053E8C: @ 8053E8C
- push {r4,lr}
- sub sp, 0x4
- ldr r1, _08053EAC @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r1, r2
- ldrb r0, [r0]
- adds r2, r1, 0
- cmp r0, 0x65
- bls _08053EA2
- b _08054396
-_08053EA2:
- lsls r0, 2
- ldr r1, _08053EB0 @ =_08053EB4
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_08053EAC: .4byte gMain
-_08053EB0: .4byte _08053EB4
- .align 2, 0
-_08053EB4:
- .4byte _0805404C
- .4byte _08054068
- .4byte _080540DC
- .4byte _08054396
- .4byte _080541E0
- .4byte _080542A0
- .4byte _080542C4
- .4byte _080542E0
- .4byte _08054304
- .4byte _0805434C
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054204
- .4byte _08054254
- .4byte _0805427E
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054104
- .4byte _08054184
- .4byte _080541A0
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054396
- .4byte _08054080
- .4byte _080540BC
-_0805404C:
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- ldr r4, _08054060 @ =gStringVar4
- ldr r1, _08054064 @ =gUnknown_841E325
- b _080540EA
- .align 2, 0
-_08054060: .4byte gStringVar4
-_08054064: .4byte gUnknown_841E325
-_08054068:
- bl sub_800AB9C
- ldr r0, _0805407C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x64
- b _080541F0
- .align 2, 0
-_0805407C: .4byte gMain
-_08054080:
- ldr r0, _080540B4 @ =gUnknown_2031DAC
- ldr r3, [r0]
- ldr r0, [r3, 0x64]
- adds r0, 0x1
- str r0, [r3, 0x64]
- cmp r0, 0xB4
- bls _0805409C
- movs r1, 0x87
- lsls r1, 3
- adds r0, r2, r1
- movs r2, 0
- movs r1, 0x65
- strb r1, [r0]
- str r2, [r3, 0x64]
-_0805409C:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _080540A8
- b _08054396
-_080540A8:
- ldr r0, _080540B8 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- b _080540D0
- .align 2, 0
-_080540B4: .4byte gUnknown_2031DAC
-_080540B8: .4byte gMain
-_080540BC:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _080540C8
- b _08054396
-_080540C8:
- ldr r0, _080540D8 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
-_080540D0:
- movs r1, 0x2
- strb r1, [r0]
- b _08054396
- .align 2, 0
-_080540D8: .4byte gMain
-_080540DC:
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- movs r0, 0x32
- strb r0, [r1]
- ldr r4, _080540FC @ =gStringVar4
- ldr r1, _08054100 @ =gText_SavingDontTurnOffThePower2
-_080540EA:
- adds r0, r4, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r4, 0
- movs r2, 0
- bl sub_8054508
- b _08054396
- .align 2, 0
-_080540FC: .4byte gStringVar4
-_08054100: .4byte gText_SavingDontTurnOffThePower2
-_08054104:
- bl InUnionRoom
- cmp r0, 0
- beq _08054120
- ldr r0, _0805411C @ =gUnknown_2031DAC
- ldr r1, [r0]
- adds r1, 0xF8
- movs r0, 0x12
- bl sub_8113550
- b _08054132
- .align 2, 0
-_0805411C: .4byte gUnknown_2031DAC
-_08054120:
- ldr r0, _08054174 @ =gUnknown_2031DAC
- ldr r1, [r0]
- adds r1, 0xF8
- movs r0, 0xC
- bl sub_8113550
- movs r0, 0x15
- bl IncrementGameStat
-_08054132:
- ldr r0, _08054178 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _0805415A
- ldr r4, _0805417C @ =gLinkPlayers
- bl GetMultiplayerId
- movs r1, 0x1
- eors r0, r1
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- adds r4, 0x4
- adds r1, r4
- ldr r1, [r1]
- movs r0, 0x2
- bl sub_8144714
-_0805415A:
- bl sub_804C1C0
- bl sub_80DA3AC
- ldr r1, _08054180 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
- ldrb r0, [r1]
- adds r0, 0x1
- movs r2, 0
- strb r0, [r1]
- b _080541F2
- .align 2, 0
-_08054174: .4byte gUnknown_2031DAC
-_08054178: .4byte gWirelessCommType
-_0805417C: .4byte gLinkPlayers
-_08054180: .4byte gMain
-_08054184:
- ldr r0, _0805419C @ =gUnknown_2031DAC
- ldr r1, [r0]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x5
- beq _08054194
- b _08054396
-_08054194:
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- b _08054340
- .align 2, 0
-_0805419C: .4byte gUnknown_2031DAC
-_080541A0:
- bl sub_80DA3D8
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _080541C4
- bl sav2_gender2_inplace_and_xFE
- ldr r0, _080541C0 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x4
- strb r1, [r0]
- b _08054396
- .align 2, 0
-_080541C0: .4byte gMain
-_080541C4:
- ldr r0, _080541D8 @ =gUnknown_2031DAC
- ldr r0, [r0]
- str r1, [r0, 0x64]
- ldr r0, _080541DC @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x33
- strb r1, [r0]
- b _08054396
- .align 2, 0
-_080541D8: .4byte gUnknown_2031DAC
-_080541DC: .4byte gMain
-_080541E0:
- bl sub_80DA40C
- ldr r0, _080541FC @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r2, 0
- movs r1, 0x28
-_080541F0:
- strb r1, [r0]
-_080541F2:
- ldr r0, _08054200 @ =gUnknown_2031DAC
- ldr r0, [r0]
- str r2, [r0, 0x64]
- b _08054396
- .align 2, 0
-_080541FC: .4byte gMain
-_08054200: .4byte gUnknown_2031DAC
-_08054204:
- ldr r4, _08054238 @ =gUnknown_2031DAC
- ldr r1, [r4]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x32
- bhi _08054214
- b _08054396
-_08054214:
- bl GetMultiplayerId
- lsls r0, 24
- cmp r0, 0
- bne _0805423C
- bl Random
- ldr r4, [r4]
- lsls r0, 16
- lsrs r0, 16
- movs r1, 0x1E
- bl __umodsi3
- lsls r0, 16
- lsrs r0, 16
- str r0, [r4, 0x64]
- b _08054242
- .align 2, 0
-_08054238: .4byte gUnknown_2031DAC
-_0805423C:
- ldr r1, [r4]
- movs r0, 0
- str r0, [r1, 0x64]
-_08054242:
- ldr r0, _08054250 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x29
- strb r1, [r0]
- b _08054396
- .align 2, 0
-_08054250: .4byte gMain
-_08054254:
- ldr r0, _08054270 @ =gUnknown_2031DAC
- ldr r1, [r0]
- ldr r0, [r1, 0x64]
- cmp r0, 0
- bne _08054278
- bl sub_800AB9C
- ldr r0, _08054274 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- movs r1, 0x2A
- strb r1, [r0]
- b _08054396
- .align 2, 0
-_08054270: .4byte gUnknown_2031DAC
-_08054274: .4byte gMain
-_08054278:
- subs r0, 0x1
- str r0, [r1, 0x64]
- b _08054396
-_0805427E:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- bne _0805428A
- b _08054396
-_0805428A:
- bl sub_80DA434
- ldr r0, _0805429C @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r0, r2
- movs r1, 0x5
- strb r1, [r0]
- b _08054396
- .align 2, 0
-_0805429C: .4byte gMain
-_080542A0:
- ldr r0, _080542C0 @ =gUnknown_2031DAC
- ldr r1, [r0]
- ldr r0, [r1, 0x64]
- adds r0, 0x1
- str r0, [r1, 0x64]
- cmp r0, 0x3C
- bls _08054396
- movs r0, 0x87
- lsls r0, 3
- adds r1, r2, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- bl sub_800AB9C
- b _08054396
- .align 2, 0
-_080542C0: .4byte gUnknown_2031DAC
-_080542C4:
- bl IsLinkTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08054396
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- b _08054338
-_080542E0:
- ldr r0, _080542FC @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08054396
- movs r0, 0x3
- bl FadeOutBGM
- ldr r1, _08054300 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- b _08054340
- .align 2, 0
-_080542FC: .4byte gPaletteFade
-_08054300: .4byte gMain
-_08054304:
- bl IsBGMStopped
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08054396
- ldr r0, _08054328 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08054334
- ldr r0, _0805432C @ =gMain
- ldr r1, [r0, 0x8]
- ldr r0, _08054330 @ =sub_804C718
- cmp r1, r0
- bne _08054334
- bl sub_800AB9C
- b _08054338
- .align 2, 0
-_08054328: .4byte gWirelessCommType
-_0805432C: .4byte gMain
-_08054330: .4byte sub_804C718
-_08054334:
- bl sub_800AAC0
-_08054338:
- ldr r1, _08054348 @ =gMain
- movs r2, 0x87
- lsls r2, 3
- adds r1, r2
-_08054340:
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _08054396
- .align 2, 0
-_08054348: .4byte gMain
-_0805434C:
- ldr r0, _08054374 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08054384
- ldr r1, [r2, 0x8]
- ldr r0, _08054378 @ =sub_804C718
- cmp r1, r0
- bne _08054384
- bl IsLinkRfuTaskFinished
- lsls r0, 24
- cmp r0, 0
- beq _08054396
- ldr r0, _0805437C @ =gSoftResetDisabled
- movs r1, 0
- strb r1, [r0]
- ldr r0, _08054380 @ =sub_80543C4
- bl SetMainCallback2
- b _08054396
- .align 2, 0
-_08054374: .4byte gWirelessCommType
-_08054378: .4byte sub_804C718
-_0805437C: .4byte gSoftResetDisabled
-_08054380: .4byte sub_80543C4
-_08054384:
- ldr r0, _080543B8 @ =gReceivedRemoteLinkPlayers
- ldrb r1, [r0]
- cmp r1, 0
- bne _08054396
- ldr r0, _080543BC @ =gSoftResetDisabled
- strb r1, [r0]
- ldr r0, _080543C0 @ =sub_80543C4
- bl SetMainCallback2
-_08054396:
- bl HasLinkErrorOccurred
- lsls r0, 24
- cmp r0, 0
- bne _080543A4
- bl RunTasks
-_080543A4:
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080543B8: .4byte gReceivedRemoteLinkPlayers
-_080543BC: .4byte gSoftResetDisabled
-_080543C0: .4byte sub_80543C4
- thumb_func_end sub_8053E8C
-
- thumb_func_start sub_80543C4
-sub_80543C4: @ 80543C4
- push {r4,r5,lr}
- ldr r0, _08054430 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _0805441A
- 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 r4, _08054434 @ =gUnknown_2031DAC
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r0, _08054438 @ =gWirelessCommType
- ldrb r0, [r0]
- cmp r0, 0
- beq _08054412
- bl DestroyWirelessStatusIndicatorSprite
-_08054412:
- ldr r0, _0805443C @ =gMain
- ldr r0, [r0, 0x8]
- bl SetMainCallback2
-_0805441A:
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_08054430: .4byte gPaletteFade
-_08054434: .4byte gUnknown_2031DAC
-_08054438: .4byte gWirelessCommType
-_0805443C: .4byte gMain
- thumb_func_end sub_80543C4
-
- thumb_func_start DoInGameTradeScene
-DoInGameTradeScene: @ 8054440
- push {lr}
- sub sp, 0x4
- bl ScriptContext2_Enable
- ldr r0, _0805446C @ =sub_8054470
- movs r1, 0xA
- bl CreateTask
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- bl HelpSystem_Disable
- add sp, 0x4
- pop {r0}
- bx r0
- .align 2, 0
-_0805446C: .4byte sub_8054470
- thumb_func_end DoInGameTradeScene
-
- thumb_func_start sub_8054470
-sub_8054470: @ 8054470
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0805449C @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _08054494
- ldr r0, _080544A0 @ =sub_80505CC
- bl SetMainCallback2
- ldr r1, _080544A4 @ =gFieldCallback
- ldr r0, _080544A8 @ =FieldCallback_ReturnToEventScript2
- str r0, [r1]
- adds r0, r4, 0
- bl DestroyTask
-_08054494:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0805449C: .4byte gPaletteFade
-_080544A0: .4byte sub_80505CC
-_080544A4: .4byte gFieldCallback
-_080544A8: .4byte FieldCallback_ReturnToEventScript2
- thumb_func_end sub_8054470
-
- thumb_func_start sub_80544AC
-sub_80544AC: @ 80544AC
- push {r4,r5,lr}
- movs r5, 0
- movs r4, 0
-_080544B2:
- ldr r0, _080544F0 @ =gUnknown_2031DA4
- ldrb r0, [r0, 0x1]
- movs r1, 0x6
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x64
- muls r0, r1
- ldr r1, _080544F4 @ =gEnemyParty
- adds r0, r1
- adds r1, r4, 0
- adds r1, 0x43
- bl GetMonData
- adds r0, r5, r0
- lsls r0, 24
- lsrs r5, r0, 24
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xB
- bls _080544B2
- cmp r5, 0
- beq _080544EA
- ldr r0, _080544F8 @ =0x0000083b
- bl FlagSet
-_080544EA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080544F0: .4byte gUnknown_2031DA4
-_080544F4: .4byte gEnemyParty
-_080544F8: .4byte 0x0000083b
- thumb_func_end sub_80544AC
-
- thumb_func_start sub_80544FC
-sub_80544FC: @ 80544FC
- push {lr}
- bl sub_80504CC
- pop {r0}
- bx r0
- thumb_func_end sub_80544FC
-
- thumb_func_start sub_8054508
-sub_8054508: @ 8054508
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x14
- adds r5, r0, 0
- mov r8, r1
- adds r4, r2, 0
- lsls r5, 24
- lsrs r5, 24
- lsls r4, 24
- lsrs r4, 24
- adds r0, r5, 0
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldr r2, _08054580 @ =gUnknown_2031DAC
- ldr r1, [r2]
- movs r6, 0x82
- lsls r6, 1
- adds r1, r6
- movs r3, 0
- movs r0, 0xF
- strb r0, [r1]
- ldr r0, [r2]
- ldr r7, _08054584 @ =0x00000105
- adds r1, r0, r7
- movs r0, 0x1
- strb r0, [r1]
- ldr r0, [r2]
- adds r7, 0x1
- adds r1, r0, r7
- movs r0, 0x6
- strb r0, [r1]
- str r3, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- ldr r0, [r2]
- adds r0, r6
- str r0, [sp, 0x8]
- lsls r4, 24
- asrs r4, 24
- str r4, [sp, 0xC]
- mov r0, r8
- str r0, [sp, 0x10]
- adds r0, r5, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl AddTextPrinterParameterized4
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08054580: .4byte gUnknown_2031DAC
-_08054584: .4byte 0x00000105
- thumb_func_end sub_8054508
-
- thumb_func_start c3_08054588
-c3_08054588: @ 8054588
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _080545C0 @ =gTasks+0x8
- adds r4, r0, r1
- ldr r1, _080545C4 @ =gUnknown_826D250
- movs r2, 0
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- lsls r1, r0, 4
- adds r2, r1, 0
- movs r3, 0x4
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _080545CC
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- beq _080545D4
- lsls r0, r1, 1
- ldr r1, _080545C8 @ =gUnknown_826BB5C
- adds r0, r1
- b _080545D6
- .align 2, 0
-_080545C0: .4byte gTasks+0x8
-_080545C4: .4byte gUnknown_826D250
-_080545C8: .4byte gUnknown_826BB5C
-_080545CC:
- movs r0, 0x80
- lsls r0, 1
- cmp r1, r0
- bne _080545E4
-_080545D4:
- ldr r0, _080545E0 @ =gUnknown_826BF5C
-_080545D6:
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
- b _080545F2
- .align 2, 0
-_080545E0: .4byte gUnknown_826BF5C
-_080545E4:
- lsls r0, r2, 1
- ldr r1, _08054648 @ =gUnknown_826BD5C
- adds r0, r1
- movs r1, 0x30
- movs r2, 0x20
- bl LoadPalette
-_080545F2:
- ldr r0, _0805464C @ =gUnknown_826D250
- movs r2, 0
- ldrsh r1, [r4, r2]
- lsls r1, 1
- adds r1, r0
- ldrb r0, [r1]
- cmp r0, 0
- bne _08054610
- movs r3, 0x2
- ldrsh r0, [r4, r3]
- cmp r0, 0
- bne _08054610
- movs r0, 0xBC
- bl PlaySE
-_08054610:
- movs r0, 0x2
- ldrsh r2, [r4, r0]
- ldr r1, _0805464C @ =gUnknown_826D250
- movs r3, 0
- ldrsh r0, [r4, r3]
- lsls r0, 1
- adds r1, 0x1
- adds r0, r1
- ldrb r0, [r0]
- cmp r2, r0
- bne _08054650
- ldrh r0, [r4]
- adds r0, 0x1
- strh r0, [r4]
- movs r0, 0
- strh r0, [r4, 0x2]
- movs r2, 0
- ldrsh r0, [r4, r2]
- lsls r0, 1
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0xFF
- bne _08054656
- adds r0, r5, 0
- bl DestroyTask
- b _08054656
- .align 2, 0
-_08054648: .4byte gUnknown_826BD5C
-_0805464C: .4byte gUnknown_826D250
-_08054650:
- ldrh r0, [r4, 0x2]
- adds r0, 0x1
- strh r0, [r4, 0x2]
-_08054656:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end c3_08054588
-
- thumb_func_start c3_0805465C
-c3_0805465C: @ 805465C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- adds r6, r0, 0
- lsls r0, r6, 2
- adds r0, r6
- lsls r0, 3
- ldr r1, _08054728 @ =gTasks+0x8
- adds r7, r0, r1
- movs r0, 0
- ldrsh r4, [r7, r0]
- cmp r4, 0
- bne _080546BC
- ldr r1, _0805472C @ =gUnknown_2031DAC
- ldr r3, [r1]
- ldr r5, _08054730 @ =0x0000010b
- adds r2, r3, r5
- movs r0, 0x78
- strb r0, [r2]
- subs r5, 0x2
- adds r2, r3, r5
- strb r0, [r2]
- ldr r0, [r1]
- movs r2, 0x85
- lsls r2, 1
- adds r0, r2
- strb r4, [r0]
- ldr r0, [r1]
- movs r3, 0x86
- lsls r3, 1
- adds r0, r3
- movs r1, 0xA0
- strb r1, [r0]
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl SetGpuRegBits
- movs r0, 0x4A
- movs r1, 0x10
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x13
- bl SetGpuReg
-_080546BC:
- ldr r4, _0805472C @ =gUnknown_2031DAC
- ldr r2, [r4]
- ldr r5, _08054730 @ =0x0000010b
- mov r8, r5
- adds r0, r2, r5
- ldrb r1, [r0]
- subs r5, 0x2
- adds r2, r5
- ldrb r0, [r2]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0x40
- bl SetGpuReg
- ldr r2, [r4]
- movs r1, 0x86
- lsls r1, 1
- adds r0, r2, r1
- ldrb r1, [r0]
- movs r3, 0x85
- lsls r3, 1
- adds r0, r2, r3
- ldrb r0, [r0]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0x44
- bl SetGpuReg
- ldrh r0, [r7]
- adds r0, 0x1
- strh r0, [r7]
- ldr r1, [r4]
- adds r1, r5
- ldrb r0, [r1]
- subs r0, 0x5
- strb r0, [r1]
- ldr r1, [r4]
- add r1, r8
- ldrb r0, [r1]
- adds r0, 0x5
- strb r0, [r1]
- ldr r0, [r4]
- adds r0, r5
- ldrb r0, [r0]
- cmp r0, 0x4F
- bhi _0805471E
- adds r0, r6, 0
- bl DestroyTask
-_0805471E:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_08054728: .4byte gTasks+0x8
-_0805472C: .4byte gUnknown_2031DAC
-_08054730: .4byte 0x0000010b
- thumb_func_end c3_0805465C
-
- thumb_func_start sub_8054734
-sub_8054734: @ 8054734
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r7, r0, 0
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _080547E8 @ =gTasks+0x8
- adds r6, r0, r1
- movs r1, 0
- ldrsh r0, [r6, r1]
- cmp r0, 0
- bne _08054774
- ldr r1, _080547EC @ =gUnknown_2031DAC
- ldr r0, [r1]
- ldr r3, _080547F0 @ =0x00000109
- adds r2, r0, r3
- movs r0, 0x50
- strb r0, [r2]
- ldr r0, [r1]
- ldr r2, _080547F4 @ =0x0000010b
- adds r1, r0, r2
- movs r0, 0xA0
- strb r0, [r1]
- movs r0, 0x4A
- movs r1, 0x10
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0x13
- bl SetGpuReg
-_08054774:
- ldr r5, _080547EC @ =gUnknown_2031DAC
- ldr r0, [r5]
- ldr r3, _080547F4 @ =0x0000010b
- adds r1, r0, r3
- ldrb r1, [r1]
- ldr r4, _080547F0 @ =0x00000109
- adds r0, r4
- ldrb r0, [r0]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0x40
- bl SetGpuReg
- ldr r2, [r5]
- movs r1, 0x86
- lsls r1, 1
- adds r0, r2, r1
- ldrb r1, [r0]
- movs r3, 0x85
- lsls r3, 1
- adds r0, r2, r3
- ldrb r0, [r0]
- lsls r0, 8
- orrs r1, r0
- movs r0, 0x44
- bl SetGpuReg
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x78
- beq _080547FC
- ldrh r0, [r6]
- adds r0, 0x1
- strh r0, [r6]
- ldr r0, [r5]
- adds r1, r0, r4
- ldrb r0, [r1]
- adds r0, 0x5
- strb r0, [r1]
- ldr r0, [r5]
- ldr r2, _080547F4 @ =0x0000010b
- adds r1, r0, r2
- ldrb r0, [r1]
- subs r0, 0x5
- strb r0, [r1]
- ldr r0, [r5]
- adds r0, r4
- ldrb r0, [r0]
- cmp r0, 0x73
- bls _0805480C
- ldr r2, _080547F8 @ =0x0000ffff
- movs r0, 0x8
- movs r1, 0
- bl BlendPalettes
- b _0805480C
- .align 2, 0
-_080547E8: .4byte gTasks+0x8
-_080547EC: .4byte gUnknown_2031DAC
-_080547F0: .4byte 0x00000109
-_080547F4: .4byte 0x0000010b
-_080547F8: .4byte 0x0000ffff
-_080547FC:
- movs r1, 0x80
- lsls r1, 6
- movs r0, 0
- bl ClearGpuRegBits
- adds r0, r7, 0
- bl DestroyTask
-_0805480C:
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8054734
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index 0d1640699..ae5381dda 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -1636,7 +1636,7 @@ _08129144:
lsls r0, 24
cmp r0, 0
bne _08129206
- bl sub_804C1C0
+ bl SetContinueGameWarpStatusToDynamicWarp
movs r0, 0
bl TrySavingData
ldr r0, _08129164 @ =gUnknown_203B0E0
@@ -1665,7 +1665,7 @@ _08129180:
bne _08129206
movs r0, 0x30
bl PlaySE
- bl sav2_gender2_inplace_and_xFE
+ bl ClearContinueGameWarpStatus2
ldr r0, _081291A0 @ =gUnknown_203B0E0
ldr r1, [r0]
movs r0, 0xA
diff --git a/baserom.ips b/baserom.ips
index 02b5aab21..5fc13b159 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/constants/constants.inc b/constants/constants.inc
index 4365e90e1..4a513c355 100644
--- a/constants/constants.inc
+++ b/constants/constants.inc
@@ -4,7 +4,7 @@
.include "constants/contest_constants.inc"
@ .include "constants/item_data_constants.inc"
.include "constants/battle_move_constants.inc"
- .include "constants/trainer_constants.inc"
+@ .include "constants/trainer_constants.inc"
.include "constants/berry_constants.inc"
.include "constants/version.inc"
.include "constants/battle.inc"
diff --git a/constants/trainer_constants.inc b/constants/trainer_constants.inc
deleted file mode 100644
index 48ed3036e..000000000
--- a/constants/trainer_constants.inc
+++ /dev/null
@@ -1,243 +0,0 @@
- .set TRAINER_CLASS_AQUA_LEADER, 0
- .set TRAINER_CLASS_TEAM_AQUA_M, 1
- .set TRAINER_CLASS_TEAM_AQUA_F, 2
- .set TRAINER_CLASS_AROMA_LADY, 3
- .set TRAINER_CLASS_RUIN_MANIAC, 4
- .set TRAINER_CLASS_INTERVIEWER, 5
- .set TRAINER_CLASS_TUBER_F, 6
- .set TRAINER_CLASS_TUBER_M, 7
- .set TRAINER_CLASS_COOL_TRAINER_M, 8
- .set TRAINER_CLASS_COOL_TRAINER_F, 9
- .set TRAINER_CLASS_HEX_MANIAC, 10
- .set TRAINER_CLASS_LADY, 11
- .set TRAINER_CLASS_BEAUTY, 12
- .set TRAINER_CLASS_RICH_BOY, 13
- .set TRAINER_CLASS_POKEMANIAC, 14
- .set TRAINER_CLASS_SWIMMER_M, 15
- .set TRAINER_CLASS_BLACK_BELT, 16
- .set TRAINER_CLASS_GUITARIST, 17
- .set TRAINER_CLASS_KINDLER, 18
- .set TRAINER_CLASS_CAMPER, 19
- .set TRAINER_CLASS_BUG_MANIAC, 20
- .set TRAINER_CLASS_PSYCHIC_M, 21
- .set TRAINER_CLASS_PSYCHIC_F, 22
- .set TRAINER_CLASS_GENTLEMAN, 23
- .set TRAINER_CLASS_ELITE_FOUR_M, 24
- .set TRAINER_CLASS_ELITE_FOUR_F, 25
- .set TRAINER_CLASS_LEADER_F, 26
- .set TRAINER_CLASS_LEADER_M, 27
- .set TRAINER_CLASS_LEADER_MF, 28
- .set TRAINER_CLASS_SCHOOL_KID_M, 29
- .set TRAINER_CLASS_SCHOOL_KID_F, 30
- .set TRAINER_CLASS_SR_AND_JR, 31
- .set TRAINER_CLASS_POKEFAN_M, 32
- .set TRAINER_CLASS_POKEFAN_F, 33
- .set TRAINER_CLASS_EXPERT_M, 34
- .set TRAINER_CLASS_EXPERT_F, 35
- .set TRAINER_CLASS_YOUNGSTER, 36
- .set TRAINER_CLASS_CHAMPION, 37
- .set TRAINER_CLASS_FISHERMAN, 38
- .set TRAINER_CLASS_CYCLING_TRIATHLETE_M, 39
- .set TRAINER_CLASS_CYCLING_TRIATHLETE_F, 40
- .set TRAINER_CLASS_RUNNING_TRIATHLETE_M, 41
- .set TRAINER_CLASS_RUNNING_TRIATHLETE_F, 42
- .set TRAINER_CLASS_SWIMMING_TRIATHLETE_M, 43
- .set TRAINER_CLASS_SWIMMING_TRIATHLETE_F, 44
- .set TRAINER_CLASS_DRAGON_TAMER, 45
- .set TRAINER_CLASS_BIRD_KEEPER, 46
- .set TRAINER_CLASS_NINJA_BOY, 47
- .set TRAINER_CLASS_BATTLE_GIRL, 48
- .set TRAINER_CLASS_PARASOL_LADY, 49
- .set TRAINER_CLASS_SWIMMER_F, 50
- .set TRAINER_CLASS_PICNICKER, 51
- .set TRAINER_CLASS_TWINS, 52
- .set TRAINER_CLASS_SAILOR, 53
- .set TRAINER_CLASS_BOARDER_1, 54
- .set TRAINER_CLASS_BOARDER_2, 55
- .set TRAINER_CLASS_COLLECTOR, 56
- .set TRAINER_CLASS_WALLY, 57
- .set TRAINER_CLASS_BRENDAN_1, 58
- .set TRAINER_CLASS_BRENDAN_2, 59
- .set TRAINER_CLASS_BRENDAN_3, 60
- .set TRAINER_CLASS_MAY_1, 61
- .set TRAINER_CLASS_MAY_2, 62
- .set TRAINER_CLASS_MAY_3, 63
- .set TRAINER_CLASS_POKEMON_BREEDER_M, 64
- .set TRAINER_CLASS_POKEMON_BREEDER_F, 65
- .set TRAINER_CLASS_POKEMON_RANGER_M, 66
- .set TRAINER_CLASS_POKEMON_RANGER_F, 67
- .set TRAINER_CLASS_MAGMA_LEADER, 68
- .set TRAINER_CLASS_TEAM_MAGMA_M, 69
- .set TRAINER_CLASS_TEAM_MAGMA_F, 70
- .set TRAINER_CLASS_LASS, 71
- .set TRAINER_CLASS_BUG_CATCHER, 72
- .set TRAINER_CLASS_HIKER, 73
- .set TRAINER_CLASS_YOUNG_COUPLE, 74
- .set TRAINER_CLASS_OLD_COUPLE, 75
- .set TRAINER_CLASS_SIS_AND_BRO, 76
-
- .set TRAINER_PIC_BRENDAN, 0
- .set TRAINER_PIC_MAY, 1
- .set TRAINER_PIC_LASS, 2
- .set TRAINER_PIC_YOUNGSTER, 3
- .set TRAINER_PIC_HIKER, 4
- .set TRAINER_PIC_BEAUTY, 5
- .set TRAINER_PIC_FISHERMAN, 6
- .set TRAINER_PIC_LADY, 7
- .set TRAINER_PIC_CYCLING_TRIATHLETE_M, 8
- .set TRAINER_PIC_AQUA_GRUNT_M, 9
- .set TRAINER_PIC_TWINS, 10
- .set TRAINER_PIC_SWIMMER_F, 11
- .set TRAINER_PIC_BUG_CATCHER, 12
- .set TRAINER_PIC_SCHOOL_KID_M, 13
- .set TRAINER_PIC_RICH_BOY, 14
- .set TRAINER_PIC_SR_AND_JR, 15
- .set TRAINER_PIC_BLACK_BELT, 16
- .set TRAINER_PIC_WALLY, 17
- .set TRAINER_PIC_AQUA_GRUNT_F, 18
- .set TRAINER_PIC_TUBER_F, 19
- .set TRAINER_PIC_HEX_MANIAC, 20
- .set TRAINER_PIC_POKEMON_BREEDER_F, 21
- .set TRAINER_PIC_MAGMA_GRUNT_M, 22
- .set TRAINER_PIC_MAGMA_GRUNT_F, 23
- .set TRAINER_PIC_INTERVIEWER, 24
- .set TRAINER_PIC_TUBER_M, 25
- .set TRAINER_PIC_YOUNG_COUPLE, 26
- .set TRAINER_PIC_GUITARIST, 27
- .set TRAINER_PIC_GENTLEMAN, 28
- .set TRAINER_PIC_STEVEN, 29
- .set TRAINER_PIC_MAXIE, 30
- .set TRAINER_PIC_RUNNING_TRIATHLETE_F, 31
- .set TRAINER_PIC_RUNNING_TRIATHLETE_M, 32
- .set TRAINER_PIC_BATTLE_GIRL, 33
- .set TRAINER_PIC_CYCLING_TRIATHLETE_F, 34
- .set TRAINER_PIC_SWIMMER_M, 35
- .set TRAINER_PIC_POKEFAN_F, 36
- .set TRAINER_PIC_EXPERT_M, 37
- .set TRAINER_PIC_EXPERT_F, 38
- .set TRAINER_PIC_SWIMMING_TRIATHLETE_M, 39
- .set TRAINER_PIC_SWIMMING_TRIATHLETE_F, 40
- .set TRAINER_PIC_DRAGON_TAMER, 41
- .set TRAINER_PIC_BIRD_KEEPER, 42
- .set TRAINER_PIC_NINJA_BOY, 43
- .set TRAINER_PIC_PARASOL_LADY, 44
- .set TRAINER_PIC_BUG_MANIAC, 45
- .set TRAINER_PIC_SAILOR, 46
- .set TRAINER_PIC_COLLECTOR, 47
- .set TRAINER_PIC_POKEMON_BREEDER_M, 48
- .set TRAINER_PIC_POKEMON_RANGER_M, 49
- .set TRAINER_PIC_POKEMON_RANGER_F, 50
- .set TRAINER_PIC_MAGMA_ADMIN_M, 51
- .set TRAINER_PIC_MAGMA_ADMIN_F, 52
- .set TRAINER_PIC_AROMA_LADY, 53
- .set TRAINER_PIC_RUIN_MANIAC, 54
- .set TRAINER_PIC_COOL_TRAINER_M, 55
- .set TRAINER_PIC_COOL_TRAINER_F, 56
- .set TRAINER_PIC_POKEMANIAC, 57
- .set TRAINER_PIC_KINDLER, 58
- .set TRAINER_PIC_CAMPER, 59
- .set TRAINER_PIC_PICNICKER, 60
- .set TRAINER_PIC_PSYCHIC_M, 61
- .set TRAINER_PIC_PSYCHIC_F, 62
- .set TRAINER_PIC_SCHOOL_KID_F, 63
- .set TRAINER_PIC_POKEFAN_M, 64
- .set TRAINER_PIC_SIS_AND_BRO, 65
- .set TRAINER_PIC_OLD_COUPLE, 66
- .set TRAINER_PIC_AQUA_ADMIN_M, 67
- .set TRAINER_PIC_AQUA_ADMIN_F, 68
- .set TRAINER_PIC_UNUSED_AQUA, 69
- .set TRAINER_PIC_ARCHIE, 70
- .set TRAINER_PIC_ROXANNE, 71
- .set TRAINER_PIC_BRAWLY, 72
- .set TRAINER_PIC_WATTSON, 73
- .set TRAINER_PIC_FLANNERY, 74
- .set TRAINER_PIC_NORMAN, 75
- .set TRAINER_PIC_WINONA, 76
- .set TRAINER_PIC_TATE_AND_LIZA, 77
- .set TRAINER_PIC_WALLACE, 78
- .set TRAINER_PIC_SIDNEY, 79
- .set TRAINER_PIC_PHOEBE, 80
- .set TRAINER_PIC_GLACIA, 81
- .set TRAINER_PIC_DRAKE, 82
-
- .set TRAINER_CLASS_NAME_POKEMON_TRAINER_1, 0
- .set TRAINER_CLASS_NAME_POKEMON_TRAINER_2, 1
- .set TRAINER_CLASS_NAME_AQUA_LEADER, 2
- .set TRAINER_CLASS_NAME_TEAM_AQUA, 3
- .set TRAINER_CLASS_NAME_AQUA_ADMIN, 4
- .set TRAINER_CLASS_NAME_AROMA_LADY, 5
- .set TRAINER_CLASS_NAME_RUIN_MANIAC, 6
- .set TRAINER_CLASS_NAME_INTERVIEWER, 7
- .set TRAINER_CLASS_NAME_TUBER_F, 8
- .set TRAINER_CLASS_NAME_TUBER_M, 9
- .set TRAINER_CLASS_NAME_COOL_TRAINER, 10
- .set TRAINER_CLASS_NAME_HEX_MANIAC, 11
- .set TRAINER_CLASS_NAME_LADY, 12
- .set TRAINER_CLASS_NAME_BEAUTY, 13
- .set TRAINER_CLASS_NAME_RICH_BOY, 14
- .set TRAINER_CLASS_NAME_POKEMANIAC, 15
- .set TRAINER_CLASS_NAME_SWIMMER_M, 16
- .set TRAINER_CLASS_NAME_BLACK_BELT, 17
- .set TRAINER_CLASS_NAME_GUITARIST, 18
- .set TRAINER_CLASS_NAME_KINDLER, 19
- .set TRAINER_CLASS_NAME_CAMPER, 20
- .set TRAINER_CLASS_NAME_BUG_MANIAC, 21
- .set TRAINER_CLASS_NAME_PSYCHIC, 22
- .set TRAINER_CLASS_NAME_GENTLEMAN, 23
- .set TRAINER_CLASS_NAME_ELITE_FOUR, 24
- .set TRAINER_CLASS_NAME_LEADER, 25
- .set TRAINER_CLASS_NAME_SCHOOL_KID, 26
- .set TRAINER_CLASS_NAME_SR_AND_JR, 27
- .set TRAINER_CLASS_NAME_WINSTRATE, 28
- .set TRAINER_CLASS_NAME_POKEFAN, 29
- .set TRAINER_CLASS_NAME_EXPERT, 30
- .set TRAINER_CLASS_NAME_YOUNGSTER, 31
- .set TRAINER_CLASS_NAME_CHAMPION, 32
- .set TRAINER_CLASS_NAME_FISHERMAN, 33
- .set TRAINER_CLASS_NAME_TRIATHLETE, 34
- .set TRAINER_CLASS_NAME_DRAGON_TAMER, 35
- .set TRAINER_CLASS_NAME_BIRD_KEEPER, 36
- .set TRAINER_CLASS_NAME_NINJA_BOY, 37
- .set TRAINER_CLASS_NAME_BATTLE_GIRL, 38
- .set TRAINER_CLASS_NAME_PARASOL_LADY, 39
- .set TRAINER_CLASS_NAME_SWIMMER_F, 40
- .set TRAINER_CLASS_NAME_PICNICKER, 41
- .set TRAINER_CLASS_NAME_TWINS, 42
- .set TRAINER_CLASS_NAME_SAILOR, 43
- .set TRAINER_CLASS_NAME_BOARDER, 44
- .set TRAINER_CLASS_NAME_COLLECTOR, 45
- .set TRAINER_CLASS_NAME_POKEMON_TRAINER_3, 46
- .set TRAINER_CLASS_NAME_POKEMON_BREEDER, 47
- .set TRAINER_CLASS_NAME_POKEMON_RANGER, 48
- .set TRAINER_CLASS_NAME_MAGMA_LEADER, 49
- .set TRAINER_CLASS_NAME_TEAM_MAGMA, 50
- .set TRAINER_CLASS_NAME_MAGMA_ADMIN, 51
- .set TRAINER_CLASS_NAME_LASS, 52
- .set TRAINER_CLASS_NAME_BUG_CATCHER, 53
- .set TRAINER_CLASS_NAME_HIKER, 54
- .set TRAINER_CLASS_NAME_YOUNG_COUPLE, 55
- .set TRAINER_CLASS_NAME_OLD_COUPLE, 56
- .set TRAINER_CLASS_NAME_SIS_AND_BRO, 57
-
- .set TRAINER_ENCOUNTER_MUSIC_MALE, 0 @ standard male encounter music
- .set TRAINER_ENCOUNTER_MUSIC_FEMALE, 1 @ standard female encounter music
- .set TRAINER_ENCOUNTER_MUSIC_GIRL, 2 @ used for male Tubers and Young Couples too
- .set TRAINER_ENCOUNTER_MUSIC_SUSPICIOUS, 3
- .set TRAINER_ENCOUNTER_MUSIC_INTENSE, 4
- .set TRAINER_ENCOUNTER_MUSIC_COOL, 5
- .set TRAINER_ENCOUNTER_MUSIC_AQUA, 6
- .set TRAINER_ENCOUNTER_MUSIC_MAGMA, 7
- .set TRAINER_ENCOUNTER_MUSIC_SWIMMER, 8
- .set TRAINER_ENCOUNTER_MUSIC_TWINS, 9 @ used for other trainer classes too
- .set TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR, 10
- .set TRAINER_ENCOUNTER_MUSIC_HIKER, 11 @ used for other trainer classes too
- .set TRAINER_ENCOUNTER_MUSIC_INTERVIEWER, 12
- .set TRAINER_ENCOUNTER_MUSIC_RICH, 13 @ Rich Boys and Gentlemen
-
- .set F_TRAINER_FEMALE, 1 << 7
-
-@ All trainer parties specify the IV, level, and species for each Pokémon in the
-@ party. Some trainer parties also specify held items and custom moves for each
-@ Pokémon.
- .set F_TRAINER_PARTY_CUSTOM_MOVESET, 1 << 0
- .set F_TRAINER_PARTY_HELD_ITEM, 1 << 1
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index 67964b9b9..5f4d1686a 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -1739,7 +1739,15 @@ gUnknown_845A788:: @ 845A788
.incbin "baserom.gba", 0x45A788, 0x60
gUnknown_845A7E8:: @ 845A7E8
- .incbin "baserom.gba", 0x45A7E8, 0x24
+ .4byte gUnknown_841718C @ Not what other player wants
+ .4byte gUnknown_84171CC @ Not an egg
+ .4byte gUnknown_84170BC @ Mon can't be traded
+ .4byte gUnknown_84170BC @ Mon can't be traded
+ .4byte gUnknown_84170FC @ Other trainer's mon can't be traded
+ .4byte gUnknown_84170E0 @ Egg can't be traded
+ .4byte gUnknown_8417130 @ Other trainer can't accept
+ .4byte gUnknown_8417164 @ Can't trade with trainer now
+ .4byte gUnknown_8417164 @ Can't trade with trainer now
gUnknown_845A80C:: @ 845A80C
.incbin "baserom.gba", 0x45A80C, 0x74
diff --git a/data/graphics.s b/data/graphics.s
index 93c5b6614..67e88a6cd 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -16214,26 +16214,26 @@ gUnknown_8E9CB9C:: @ 8E9CB9C
gUnknown_8E9CBBC:: @ 8E9CBBC
.incbin "baserom.gba", 0xE9CBBC, 0x320 @UNKNOWN
-gUnknown_8E9CEDC:: @ 8E9CEDC
- .incbin "baserom.gba", 0xE9CEDC, 0x60 @UNKNOWN
+gTradeMenu_Pal:: @ 8E9CEDC
+ .incbin "graphics/trade/menu.gbapal"
-gUnknown_8E9CF3C::
- .incbin "baserom.gba", 0xE9CF3C, 0x20 @UNKNOWN
+gTradeButtons_Pal:: @ E9CF3C
+ .incbin "graphics/trade/unknown_DDB444.gbapal"
-gUnknown_8E9CF5C:: @ 8E9CF5C
- .incbin "baserom.gba", 0xE9CF5C, 0x1280 @UNKNOWN
+gTradeMenu_Gfx:: @ 8E9CF5C
+ .incbin "graphics/trade/menu.4bpp"
-gUnknown_8E9E1DC::
- .incbin "baserom.gba", 0xE9E1DC, 0x800 @UNKNOWN
+gTradeButtons_Gfx:: @ E9E1DC
+ .incbin "graphics/trade/buttons.4bpp"
-gUnknown_8E9E9DC::
- .incbin "baserom.gba", 0xE9E9DC, 0x20 @UNKNOWN
+gUnknown_8E9E9DC:: @ E9E9DC
+ .incbin "graphics/unused/unused_DDCEE4.bin"
gUnknown_8E9E9FC:: @ 8E9E9FC
- .incbin "baserom.gba", 0xE9E9FC, 0x800 @UNKNOWN
+ .incbin "graphics/trade/unknown_DDCF04.bin"
-gUnknown_8E9F1FC:: @ 8E9F1FC
- .incbin "baserom.gba", 0xE9F1FC, 0x24 @UNKNOWN
+gTradeMenuMonBox_Tilemap:: @ 8E9F1FC
+ .incbin "graphics/trade/menu_mon_box.bin"
gFameCheckerBgPals:: @ 8E9F220
.incbin "data/graphics/fame_checker_bg.gbapal"
diff --git a/data/ingame_trades.inc b/data/ingame_trades.inc
deleted file mode 100644
index c3447d79b..000000000
--- a/data/ingame_trades.inc
+++ /dev/null
@@ -1,174 +0,0 @@
-gIngameTrades:: @ 826CF8C
- .string "MIMIEN$", 11
- .align 1
- .2byte SPECIES_MR_MIME @ species
- .byte 20, 15, 17, 24, 23, 22 @ IVs
- .byte FALSE @ has second ability
- .align 2
- .4byte 1985 @ OT ID
- .byte 5, 5, 5, 30, 5 @ contest stats
- .align 2
- .4byte 0x00009cae @ personality
- .2byte ITEM_NONE @ held item
- .byte 255 @ mail index
- .string "REYLEY$", 11
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_ABRA @ species requested
- .align 2
-
- .string "ZYNX$", 11
- .align 1
- .2byte SPECIES_JYNX @ species
- .byte 18, 17, 18, 22, 25, 21 @ IVs
- .byte FALSE @ has second ability
- .align 2
- .4byte 36728 @ OT ID
- .byte 5, 30, 5, 5, 5 @ contest stats
- .align 2
- .4byte 0x498a2e1d @ personality
- .2byte ITEM_FAB_MAIL @ held item
- .byte 0 @ mail index
- .string "DONTAE$", 11
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_POLIWHIRL @ species requested
- .align 2
-
- .string "MS. NIDO$", 11
- .align 1
- .2byte SPECIES_NIDORAN_F @ species
- .byte 22, 18, 25, 19, 15, 22 @ IVs
- .byte FALSE @ has second ability
- .align 2
- .4byte 63184 @ OT ID
- .byte 5, 5, 5, 5, 30 @ contest stats
- .align 2
- .4byte 0x4c970b89 @ personality
- .2byte ITEM_TINY_MUSHROOM @ held item
- .byte 255 @ mail index
- .string "SAIGE$", 11
- .byte FEMALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_NIDORAN_M @ species requested
- .align 2
-
- .string "CH'DING$", 11
- .align 1
- .2byte SPECIES_FARFETCHD @ species
- .byte 20, 25, 21, 24, 15, 20 @ IVs
- .byte FALSE @ has second ability
- .align 2
- .4byte 8810 @ OT ID
- .byte 30, 5, 5, 5, 5 @ contest stats
- .align 2
- .4byte 0x151943d7 @ personality
- .2byte ITEM_STICK @ held item
- .byte 255 @ mail index
- .string "ELYSSA$", 11
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_SPEAROW @ species requested
- .align 2
-
- .string "NINA$", 11
- .align 1
- .2byte SPECIES_NIDORINA @ species
- .byte 22, 25, 18, 19, 22, 15 @ IVs
- .byte FALSE @ has second ability
- .align 2
- .4byte 13637 @ OT ID
- .byte 5, 5, 30, 5, 5 @ contest stats
- .align 2
- .4byte 0x00eeca15 @ personality
- .2byte ITEM_NONE @ held item
- .byte 255 @ mail index
- .string "TURNER$", 11
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_NIDORINO @ species requested
- .align 2
-
- .string "MARC$", 11
- .align 1
- .2byte SPECIES_LICKITUNG @ species
- .byte 24, 19, 21, 15, 23, 21 @ IVs
- .byte FALSE @ has second ability
- .align 2
- .4byte 1239 @ OT ID
- .byte 5, 5, 5, 5, 30 @ contest stats
- .align 2
- .4byte 0x451308ab @ personality
- .2byte ITEM_NONE @ held item
- .byte 255 @ mail index
- .string "HADEN$", 11
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_GOLDUCK @ species requested
- .align 2
-
- .string "ESPHERE$", 11
- .align 1
- .2byte SPECIES_ELECTRODE @ species
- .byte 19, 16, 18, 25, 25, 19 @ IVs
- .byte TRUE @ has second ability
- .align 2
- .4byte 50298 @ OT ID
- .byte 30, 5, 5, 5, 5 @ contest stats
- .align 2
- .4byte 0x06341016 @ personality
- .2byte ITEM_NONE @ held item
- .byte 255 @ mail index
- .string "CLIFTON$", 11
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_RAICHU @ species requested
- .align 2
-
- .string "TANGENY$", 11
- .align 1
- .2byte SPECIES_TANGELA @ species
- .byte 22, 17, 25, 16, 23, 20 @ IVs
- .byte FALSE @ has second ability
- .align 2
- .4byte 60042 @ OT ID
- .byte 5, 5, 30, 5, 5 @ contest stats
- .align 2
- .4byte 0x5c77ecfa @ personality
- .2byte ITEM_STARDUST @ held item
- .byte 255 @ mail index
- .string "NORMA$", 11
- .byte FEMALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_VENONAT @ species requested
- .align 2
-
- .string "SEELOR$", 11
- .align 1
- .2byte SPECIES_SEEL @ species
- .byte 24, 15, 22, 16, 23, 22 @ IVs
- .byte FALSE @ has second ability
- .align 2
- .4byte 9853 @ OT ID
- .byte 5, 5, 5, 5, 30 @ contest stats
- .align 2
- .4byte 0x482cac89 @ personality
- .2byte ITEM_NONE @ held item
- .byte 255 @ mail index
- .string "GARETT$", 11
- .byte MALE @ OT gender
- .byte 10 @ sheen
- .2byte SPECIES_PONYTA @ species requested
- .align 2
-
-gUnknown_826D1A8:: @ 826D1A8
- .2byte EC_WORD_THAT_S
- .2byte EC_WORD_A
- .2byte EC_WORD_HEALTHY
- .2byte EC_POKEMON2(JYNX)
- .2byte EC_WORD_EXCL
- .2byte EC_WORD_BE
- .2byte EC_WORD_KIND
- .2byte EC_WORD_TO
- .2byte EC_WORD_IT
- .2byte 0
diff --git a/data/strings.s b/data/strings.s
index 5305352b7..d81f72bac 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -1052,24 +1052,29 @@ gUnknown_84170BC:: @ 84170BC
gUnknown_84170E0:: @ 84170E0
.string "An EGG can't be traded now.$"
+ .align 2
gUnknown_84170FC:: @ 0x84170FC
.string "The other TRAINER's POKéMON\n"
.string "can't be traded now.$"
-gUnknown_841712D:: @ 0x841712D
- .string " The other TRAINER can't accept\n"
+ .align 2
+gUnknown_8417130:: @ 0x8417130
+ .string "The other TRAINER can't accept\n"
.string "that POKéMON now.$"
-gUnknown_8417161:: @ 0x8417161
- .string " You can't trade with that\n"
+ .align 2
+gUnknown_8417164:: @ 0x8417164
+ .string "You can't trade with that\n"
.string "TRAINER now.$"
-gUnknown_841718B:: @ 0x841718B
- .string " That isn't the type of POKéMON\n"
+ .align 2
+gUnknown_841718C:: @ 0x841718C
+ .string "That isn't the type of POKéMON\n"
.string "that the other TRAINER wants.$"
-gUnknown_84171C9:: @ 0x84171C9
- .string " That isn't an EGG.$"
+ .align 2
+gUnknown_84171CC:: @ 0x84171CC
+ .string "That isn't an EGG.$"
gUnknown_84171DF:: @ 0x84171DF
.string "Choose a POKéMON.$"
@@ -4359,22 +4364,22 @@ gUnknown_841E09F:: @ 841E09F
gUnknown_841E0A5:: @ 841E0A5
.string "Is this trade okay?$"
-gUnknown_841E0B9::
+gTradeText_Cancel::
.string "CANCEL$"
-gUnknown_841E0C0::
+gTradeText_ChooseAPokemon::
.string "Choose a POKéMON.$"
-gUnknown_841E0D2::
+gTradeText_Summary::
.string "SUMMARY$"
-gUnknown_841E0DA::
+gTradeText_Trade::
.string "TRADE$"
-gUnknown_841E0E0::
+gTradeText_CancelTrade::
.string "Cancel trade?$"
-gUnknown_841E0EE::
+gTradeText_PressBButtonToExit::
.string "Press the B Button to exit.$"
gUnknown_841E10A::
@@ -4402,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
deleted file mode 100644
index 50cbeb488..000000000
--- a/data/trade.s
+++ /dev/null
@@ -1,997 +0,0 @@
-#include "constants/items.h"
-#include "constants/species.h"
-#include "constants/easy_chat.h"
-#define RGB(r, g, b) ((r) | ((g) << 5) | ((b) << 10))
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .section .rodata
- .align 2, 0
-
- @ unknown
-gUnknown_8260814:: @ 8260814
- .4byte 0x00000f24 @ sizeof(struct SaveBlock2)
- .4byte 0x00003d68 @ sizeof(struct SaveBlock1)
- .4byte 0x0000001c @ sizeof(struct MapData)
- .4byte 0x00000530 @ unk
- .4byte 0x00000034 @ unk
- .4byte 0x00000024 @ sizeof(struct MailStruct)
- .4byte 0x00000064 @ sizeof(struct Pokemon)
- .4byte 0x00000528
-
-gUnknown_8260834:: @ 8260834
- .incbin "data/trade/unk_8260834.bin"
-
-gUnknown_8260A32:: @ 8260A32
- .incbin "data/trade/unk_8260A32.bin"
-
-gUnknown_8260C30:: @ 8260C30
- .incbin "data/trade/unk_8260C30.bin"
-
-gUnknown_8261430:: @ 8261430
- .incbin "data/trade/unk_8261430.bin"
-
-gOamdata_8261C30::
- .4byte 0x80004000, 0x00000400
-
-gOamData_8261C38::
- .4byte 0xc0004000, 0x00000400
-
-gSpriteAnim_8261C40::
- obj_image_anim_frame 0x00, 5
- obj_image_anim_end
-
-gSpriteAnim_8261C48::
- obj_image_anim_frame 0x20, 5
- obj_image_anim_end
-
-gSpriteAnimTable_8261C50::
- .4byte gSpriteAnim_8261C40
- .4byte gSpriteAnim_8261C48
-
-gUnknown_8261C58:: @ 8261C58
- obj_tiles gUnknown_8E9E1DC, 0x0800, 300
-
-gUnknown_8261C60:: @ 8261C60
- obj_pal gUnknown_8E9CF3C, 2345
-
-gSpriteAnim_8261C68::
- obj_image_anim_frame 0x00, 5
- obj_image_anim_end
-
-gSpriteAnim_8261C70::
- obj_image_anim_frame 0x08, 5
- obj_image_anim_end
-
-gSpriteAnim_8261C78::
- obj_image_anim_frame 0x10, 5
- obj_image_anim_end
-
-gSpriteAnim_8261C80::
- obj_image_anim_frame 0x18, 5
- obj_image_anim_end
-
-gSpriteAnim_8261C88::
- obj_image_anim_frame 0x20, 5
- obj_image_anim_end
-
-gSpriteAnim_8261C90::
- obj_image_anim_frame 0x28, 5
- obj_image_anim_end
-
-gSpriteAnimTable_8261C98::
- .4byte gSpriteAnim_8261C68
- .4byte gSpriteAnim_8261C70
- .4byte gSpriteAnim_8261C78
- .4byte gSpriteAnim_8261C80
- .4byte gSpriteAnim_8261C88
- .4byte gSpriteAnim_8261C90
-
-gUnknown_8261CB0:: @ 8261CB0
- spr_template 300, 2345, gOamData_8261C38, gSpriteAnimTable_8261C50, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_8261CC8:: @ 8261CC8
- spr_template 200, 4925, gOamdata_8261C30, gSpriteAnimTable_8261C98, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
-
-gUnknown_8261CE0::
- .incbin "data/trade/unk_8261CE0.gbapal"
-
-gUnknown_8261D00:: @ 8261D00
- obj_pal gUnknown_8261CE0, 4925
-
-gUnknown_8261D08:: @ 8261D08
- .byte 0x04, 0x02, 0x0c, 0x0c, 0x00, 0x00
- .byte 0x02, 0x04, 0x0c, 0x0c, 0x00, 0x00
- .byte 0x07, 0x06, 0x01, 0x00, 0x00, 0x00
- .byte 0x01, 0x06, 0x07, 0x00, 0x00, 0x00
-
- .byte 0x05, 0x03, 0x0c, 0x0c, 0x00, 0x00
- .byte 0x03, 0x05, 0x0c, 0x0c, 0x00, 0x00
- .byte 0x00, 0x07, 0x06, 0x01, 0x00, 0x00
- .byte 0x06, 0x07, 0x00, 0x01, 0x00, 0x00
-
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x04, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x09, 0x08, 0x07, 0x06, 0x00, 0x00
- .byte 0x03, 0x01, 0x00, 0x00, 0x00, 0x00
-
- .byte 0x01, 0x01, 0x01, 0x01, 0x00, 0x00
- .byte 0x05, 0x01, 0x01, 0x01, 0x00, 0x00
- .byte 0x02, 0x09, 0x08, 0x07, 0x00, 0x00
- .byte 0x08, 0x09, 0x06, 0x06, 0x00, 0x00
-
- .byte 0x02, 0x02, 0x02, 0x02, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x0b, 0x0a, 0x09, 0x08, 0x07, 0x06
- .byte 0x05, 0x03, 0x01, 0x00, 0x00, 0x00
-
- .byte 0x03, 0x03, 0x03, 0x03, 0x00, 0x00
- .byte 0x01, 0x01, 0x01, 0x01, 0x00, 0x00
- .byte 0x04, 0x04, 0x04, 0x04, 0x00, 0x00
- .byte 0x0a, 0x08, 0x06, 0x00, 0x00, 0x00
-
- .byte 0x0a, 0x08, 0x0c, 0x00, 0x00, 0x00
- .byte 0x08, 0x0a, 0x0c, 0x00, 0x00, 0x00
- .byte 0x01, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x07, 0x00, 0x01, 0x00, 0x00, 0x00
-
- .byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x09, 0x0c, 0x00, 0x00, 0x00, 0x00
- .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
-
- .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x0a, 0x06, 0x00, 0x00, 0x00, 0x00
- .byte 0x03, 0x02, 0x01, 0x00, 0x00, 0x00
- .byte 0x09, 0x07, 0x00, 0x00, 0x00, 0x00
-
- .byte 0x07, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x0b, 0x0c, 0x00, 0x00, 0x00, 0x00
- .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x02, 0x01, 0x00, 0x00, 0x00, 0x00
-
- .byte 0x08, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x06, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x05, 0x04, 0x03, 0x02, 0x01, 0x00
- .byte 0x0b, 0x09, 0x07, 0x00, 0x00, 0x00
-
- .byte 0x09, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x04, 0x02, 0x00, 0x00, 0x00, 0x00
-
- .byte 0x0b, 0x09, 0x07, 0x06, 0x00, 0x00
- .byte 0x07, 0x06, 0x00, 0x00, 0x00, 0x00
- .byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00
- .byte 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00
-
-gTradeMonSpriteCoords:: @ 8261E40
- .byte 0x01, 0x05
- .byte 0x08, 0x05
- .byte 0x01, 0x0a
- .byte 0x08, 0x0a
- .byte 0x01, 0x0f
- .byte 0x08, 0x0f
- .byte 0x10, 0x05
- .byte 0x17, 0x05
- .byte 0x10, 0x0a
- .byte 0x17, 0x0a
- .byte 0x10, 0x0f
- .byte 0x17, 0x0f
- .byte 0x17, 0x12
-
-gUnknown_8261E5A:: @ 8261E5A
- .byte 0x05, 0x04
- .byte 0x0c, 0x04
- .byte 0x05, 0x09
- .byte 0x0c, 0x09
- .byte 0x05, 0x0e
- .byte 0x0c, 0x0e
- .byte 0x14, 0x04
- .byte 0x1b, 0x04
- .byte 0x14, 0x09
- .byte 0x1b, 0x09
- .byte 0x14, 0x0e
- .byte 0x1b, 0x0e
-
-gUnknown_8261E72:: @ 8261E72
- .byte 0x01, 0x03
- .byte 0x08, 0x03
- .byte 0x01, 0x08
- .byte 0x08, 0x08
- .byte 0x01, 0x0d
- .byte 0x08, 0x0d
-
- .byte 0x10, 0x03
- .byte 0x17, 0x03
- .byte 0x10, 0x08
- .byte 0x17, 0x08
- .byte 0x10, 0x0d
- .byte 0x17, 0x0d
-
-gTradeUnknownSpriteCoords:: @ 8261E8A
- .byte 0x3c, 0x09, 0xb4, 0x09
- .byte 0x30, 0x09, 0xa8, 0x09
-
-gUnknown_8261E92::
- .byte 0x00, 0x0e, 0x0f, 0x1d
- .byte 0x03, 0x05, 0x03, 0x07
- .byte 0x12, 0x05, 0x12, 0x07
- .byte 0x08, 0x07, 0x16, 0x0c
- .byte 0x08, 0x07, 0x16, 0x0c
- .byte 0x06, 0x07, 0x18, 0x0c
- .byte 0x06, 0x07, 0x18, 0x0c
- .byte 0x08, 0x07, 0x16, 0x0c
- .byte 0x07, 0x07, 0x17, 0x0c
-
-gUnknown_8261EB6:: @ 8261EB6
- .string "$"
-
-gUnknown_8261EB7::
- .string "{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT}{SHADOW RED}$"
-
-gText_MaleSymbol4:: @ 8261EC1
- .string "♂$"
-
-gText_FemaleSymbol4:: @ 8261EC3
- .string "♀$"
-
-gText_GenderlessSymbol:: @ 8261EC5
- .string "$"
-
-gUnknown_8261EC6::
- .string "$"
-
-gUnknown_8261EC7:: @ 8261EC7
- .string "\n$"
-
-gUnknown_8261EC9::
- .string "/$"
-
- .align 2
-gUnknown_8261ECC:: @ 8261ECC
- .4byte gUnknown_841E0B9
- .4byte gUnknown_841E0C0
- .4byte gUnknown_841E0D2
- .4byte gUnknown_841E0DA
- .4byte gUnknown_841E0E0
- .4byte gUnknown_841E0EE
-
-gUnknown_8261EE4:: @ 8261EE4
- .4byte gUnknown_841E10A, sub_804F440
- .4byte gUnknown_841E112, sub_804F464
-
-gUnknown_8261EF4:: @ 8261EF4
- .4byte gUnknown_841E118
- .4byte gUnknown_841E145
- .4byte gUnknown_841E16B
- .4byte gUnknown_8417094
- .4byte gUnknown_841E199
- .4byte gUnknown_841E1C5
- .4byte gUnknown_84170BC
- .4byte gUnknown_84170E0
- .4byte gUnknown_84170FC
-
-gUnknown_8261F18:: @ 8261F18
- .byte 0, 1, 2
-
- .align 2
-gUnknown_8261F1C:: @ 8261F1C
- .4byte 0x000001f8
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 2,
- @ .mapBaseIndex = 31,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x00001051
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 5,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 1,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x00002062
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 6,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x00003073
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 7,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0000
- @ }
-
-gUnknown_8261F2C:: @ 8261F2C
- .byte 0, 4, 7, 22, 4, 15
- .2byte 0x001e
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 4,
- @ .tilemapTop = 7,
- @ .width = 22,
- @ .height = 4,
- @ .paletteNum = 15,
- @ .baseBlock = 0x001e
- @ }
- .byte 0, 17, 15, 12, 4, 15
- .2byte 0x0076
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 17,
- @ .tilemapTop = 15,
- @ .width = 12,
- @ .height = 4,
- @ .paletteNum = 15,
- @ .baseBlock = 0x0076
- @ }
- .byte 0, 0, 5, 8, 2, 13
- .2byte 0x00a6
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 5,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x00a6
- @ }
- .byte 0, 7, 5, 8, 2, 13
- .2byte 0x00b6
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 7,
- @ .tilemapTop = 5,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x00b6
- @ }
- .byte 0, 0, 10, 8, 2, 13
- .2byte 0x00c6
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 10,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x00c6
- @ }
- .byte 0, 7, 10, 8, 2, 13
- .2byte 0x00d6
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 7,
- @ .tilemapTop = 10,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x00d6
- @ }
- .byte 0, 0, 15, 8, 2, 13
- .2byte 0x00e6
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 15,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x00e6
- @ }
- .byte 0, 7, 15, 8, 2, 13
- .2byte 0x00f6
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 7,
- @ .tilemapTop = 15,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x00f6
- @ }
- .byte 0, 15, 5, 8, 2, 13
- .2byte 0x0106
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 15,
- @ .tilemapTop = 5,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x0106
- @ }
- .byte 0, 22, 5, 8, 2, 13
- .2byte 0x0116
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 22,
- @ .tilemapTop = 5,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x0116
- @ }
- .byte 0, 15, 10, 8, 2, 13
- .2byte 0x0126
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 15,
- @ .tilemapTop = 10,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x0126
- @ }
- .byte 0, 22, 10, 8, 2, 13
- .2byte 0x0136
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 22,
- @ .tilemapTop = 10,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x0136
- @ }
- .byte 0, 15, 15, 8, 2, 13
- .2byte 0x0146
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 15,
- @ .tilemapTop = 15,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x0146
- @ }
- .byte 0, 22, 15, 8, 2, 13
- .2byte 0x0156
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 22,
- @ .tilemapTop = 15,
- @ .width = 8,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x0156
- @ }
- .byte 0, 2, 5, 14, 2, 13
- .2byte 0x0166
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 5,
- @ .width = 14,
- @ .height = 2,
- @ .paletteNum = 13,
- @ .baseBlock = 0x0166
- @ }
- .byte 0, 3, 8, 11, 8, 15
- .2byte 0x0182
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 3,
- @ .tilemapTop = 8,
- @ .width = 11,
- @ .height = 8,
- @ .paletteNum = 15,
- @ .baseBlock = 0x0182
- @ }
- .byte 0, 17, 5, 14, 2, 15
- .2byte 0x01da
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 17,
- @ .tilemapTop = 5,
- @ .width = 14,
- @ .height = 2,
- @ .paletteNum = 15,
- @ .baseBlock = 0x01da
- @ }
- .byte 0, 18, 8, 11, 8, 15
- .2byte 0x01f6
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 18,
- @ .tilemapTop = 8,
- @ .width = 11,
- @ .height = 8,
- @ .paletteNum = 15,
- @ .baseBlock = 0x01f6
- @ }
- .byte 255, 0, 0, 0, 0, 0
- .2byte 0x0000
- @ {
- @ .bg = 255,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 0,
- @ .width = 0,
- @ .height = 0,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0000
- @ }
-
-gUnknown_8261FC4:: @ 8261FC4
- .byte 0, 21, 13, 6, 4, 15
- .2byte 0x024e
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 21,
- @ .tilemapTop = 13,
- @ .width = 6,
- @ .height = 4,
- @ .paletteNum = 15,
- @ .baseBlock = 0x024e
- @ }
-
- .string "かいめの そうしん$", 13
- .string "かいめの じゅしん$", 13
- .string "ポケモンアイコンセット$", 13
- .string "OBJテキストセット$", 13
- .string "セルセット$", 13
- .string "OBJテキストADD$", 13
- .string "システムメッセージADD$", 13
- .string "はいけいセット$", 13
-
-gUnknown_8262034:: @ 8262034
- .string "ヌケニン$"
- .string "こうかんせいりつ $"
- .string "だめだたらしいよ $"
-
-gUnknown_8262055:: @ 8262055
- .byte 0x04, 0x03
- .byte 0x13, 0x03
-
- .align 2
-gUnknown_826205C::
- .incbin "data/trade/unk_826207C.gbapal"
-
-gUnknown_826207C::
- .incbin "data/trade/unk_826207C.4bpp"
-
- .incbin "baserom.gba", 0x26267C, 0x1A00
-
-gUnknown_826407C:: @ 826407C
- .incbin "data/trade/unk_826407C.bin"
-
- .incbin "baserom.gba", 0x26487C, 0x120
-
-gUnknown_826499C::
- .incbin "data/trade/unk_8264E1C.gbapal"
-
- .incbin "baserom.gba", 0x2649BC, 0x40
-
-gUnknown_82649FC::
- .incbin "data/trade/unk_8264A1C.gbapal"
-
-gUnknown_8264A1C::
- .incbin "data/trade/unk_8264A1C.4bpp"
-
-gUnknown_8264C1C::
- .incbin "data/trade/unk_8264C1C.4bpp"
-
-gUnknown_8264E1C::
- .incbin "data/trade/unk_8264E1C.4bpp"
-
- .incbin "baserom.gba", 0x264F1C, 0x100
-
-gUnknown_826501C::
- .incbin "data/trade/unk_826501C.4bpp"
-
-gUnknown_826601C:: @ 826601C
- .incbin "data/trade/unk_826601C.bin"
-
-gUnknown_826701C:: @ 826701C
- .incbin "data/trade/unk_826701C.8bpp"
-
-gUnknown_826985C:: @ 826985C
- .incbin "data/trade/unk_826985C.bin"
-
-gUnknown_826995C:: @ 826995C
- .incbin "data/trade/unk_826995C.bin"
-
-gUnknown_8269A5C:: @ 8269A5C
- .incbin "data/trade/unk_8269A5C.bin"
-
-gUnknown_826AA5C:: @ 826AA5C
- .incbin "data/trade/unk_826AA5C.bin"
-
- .align 2
-gUnknown_3379A0Bin:: @ 826BA5C
- .incbin "graphics/trade/unknown_3379A0.bin.lz"
-
-gUnknown_826BB5C:: @ 826BB5C
- .incbin "data/trade/unk_826BB5C.gbapal"
-
-gUnknown_826BD5C:: @ 826BD5C
- .incbin "data/trade/unk_826BD5C.gbapal"
-
-gUnknown_826BF5C:: @ 826BF5C
- .incbin "data/trade/unk_826BF5C.gbapal"
-
-gWirelessSignal4bpp:: @ 826BF7C
- .incbin "graphics/trade/wireless_signal.4bpp.lz"
-
-gUnknown_826C60C:: @ 826C60C
- .incbin "data/trade/unk_826C60C.bin.lz"
-
-gOamData_826CD00::
- .4byte 0x40000100, 0x00000000
-
-gAnimCmd_826CD08::
- obj_image_anim_frame 0x00, 3
- obj_image_anim_frame 0x04, 3
- obj_image_anim_frame 0x08, 3
- obj_image_anim_frame 0x0c, 3
- obj_image_anim_frame 0x10, 3
- obj_image_anim_frame 0x14, 3
- obj_image_anim_frame 0x18, 3
- obj_image_anim_frame 0x1c, 3
- obj_image_anim_frame 0x20, 3
- obj_image_anim_frame 0x24, 3
- obj_image_anim_frame 0x28, 3
- obj_image_anim_frame 0x2c, 3
- obj_image_anim_loop 1
- obj_image_anim_frame 0x00, 3
- obj_image_anim_end
-
-gAnimCmd_826CD44::
- obj_image_anim_frame 0x00, 3
- obj_image_anim_frame 0x04, 3
- obj_image_anim_frame 0x08, 3
- obj_image_anim_frame 0x0c, 3
- obj_image_anim_frame 0x10, 3
- obj_image_anim_frame 0x14, 3
- obj_image_anim_frame 0x18, 3
- obj_image_anim_frame 0x1c, 3
- obj_image_anim_frame 0x20, 3
- obj_image_anim_frame 0x24, 3
- obj_image_anim_frame 0x28, 3
- obj_image_anim_frame 0x2c, 3
- obj_image_anim_loop 2
- obj_image_anim_frame 0x00, 3
- obj_image_anim_end
-
-gSpriteAnimTable_826CD80::
- .4byte gAnimCmd_826CD08
- .4byte gAnimCmd_826CD44
-
-gAffineAnimCmd_826CD88::
- obj_rot_scal_anim_frame 0x0000, 0x0000, 0x00, 0x01
- obj_rot_scal_anim_end
-
-gAffineAnimCmd_826CD98::
- obj_rot_scal_anim_frame 0xfff8, 0x0000, 0x00, 0x14
- obj_rot_scal_anim_end
-
-gAffineAnimCmd_826CDA8::
- obj_rot_scal_anim_frame 0x0060, 0x0100, 0x00, 0x00
- obj_rot_scal_anim_frame 0x0000, 0x0000, 0x00, 0x05
- obj_rot_scal_anim_frame 0x0008, 0x0000, 0x00, 0x14
- obj_rot_scal_anim_end
-
-gSpriteAffineAnimTable_826CDC8::
- .4byte gAffineAnimCmd_826CD88
- .4byte gAffineAnimCmd_826CD98
- .4byte gAffineAnimCmd_826CDA8
-
-gUnknown_826CDD4:: @ 826CDD4
- obj_tiles gUnknown_826207C, 0x0600, 5557
-
-gUnknown_826CDDC:: @ 826CDDC
- obj_pal gUnknown_826205C, 5558
-
-gUnknown_826CDE4:: @ 826CDE4
- spr_template 5557, 5558, gOamData_826CD00, gSpriteAnimTable_826CD80, NULL, gSpriteAffineAnimTable_826CDC8, sub_80538BC
-
-gOamData_826CDFC::
- .4byte 0x80000500, 0x00000400
-
-gAnimCmd_826CE04::
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
-gSpriteAnimTable_826CE0C::
- .4byte gAnimCmd_826CE04
-
-gAffineAnimCmd_826CE10::
- obj_rot_scal_anim_frame -10, -10, 0, 5
- obj_rot_scal_anim_frame 10, 10, 0, 5
- obj_rot_scal_anim_jump 0
-
-gSpriteAffineAnimTable_826CE28::
- .4byte gAffineAnimCmd_826CE10
-
-gUnknown_826CE2C:: @ 826CE2C
- obj_tiles gUnknown_8264A1C, 0x0200, 5550
-
-gUnknown_826CE34:: @ 826CE34
- obj_pal gUnknown_82649FC, 5551
-
-gUnknown_826CE3C:: @ 826CE3C
- obj_pal gUnknown_826499C, 5555
-
-gUnknown_826CE44:: @ 826CE44
- spr_template 5550, 5551, gOamData_826CDFC, gSpriteAnimTable_826CE0C, NULL, gSpriteAffineAnimTable_826CE28, sub_804FD24
-
-gOamData_826CE5C::
- .4byte 0x80008000, 0x00000400
-
-gAnimCmd_826CE64::
- obj_image_anim_frame 0, 5, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
-gAnimCmd_826CE6C::
- obj_image_anim_frame 8, 5, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_end
-
-gSpriteAnimTable_826CE74::
- .4byte gAnimCmd_826CE64
- .4byte gAnimCmd_826CE6C
-
-gUnknown_826CE7C:: @ 826CE7C
- obj_tiles gUnknown_8264C1C, 0x0300, 5552
-
-gUnknown_826CE84:: @ 826CE84
- spr_template 5552, 5551, gOamData_826CE5C, gSpriteAnimTable_826CE74, NULL, gDummySpriteAffineAnimTable, sub_804FD78
-
-gOamData_826CE9C::
- .4byte 0x80008000, 0x00000400
-
-gAnimCmd_826CEA4::
- obj_image_anim_frame 0, 10
- obj_image_anim_end
-
-gSpriteAnimTable_826CEAC::
- .4byte gAnimCmd_826CEA4
-
-gUnknown_826CEB0:: @ 826CEB0
- obj_tiles gUnknown_8264E1C, 0x0100, 5554
-
-gUnknown_826CEB8:: @ 826CEB8
- spr_template 5554, 5555, gOamData_826CE9C, gSpriteAnimTable_826CEAC, NULL, gDummySpriteAffineAnimTable, sub_804FDB8
-
-gOamData_826CED0::
- .4byte 0xc0004000, 0x00000400
-
-gAnimCmd_826CED8::
- obj_image_anim_frame 0x00, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x20, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x40, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x60, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x40, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x20, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x00, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_loop 8
- obj_image_anim_end
-
-gAnimCmd_826CEFC::
- obj_image_anim_frame 0x00, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x20, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x40, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x60, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x40, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x20, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_frame 0x00, 2, OBJ_IMAGE_ANIM_H_FLIP | OBJ_IMAGE_ANIM_V_FLIP
- obj_image_anim_loop 2
- obj_image_anim_end
-
-gSpriteAnimTable_826CF20::
- .4byte gAnimCmd_826CED8
-
-gSpriteAnimTable_826CF24::
- .4byte gAnimCmd_826CEFC
-
-gUnknown_826CF28:: @ 826CF28
- obj_tiles gUnknown_826501C, 0x1000, 5556
-
-gUnknown_826CF30:: @ 826CF30
- spr_template 5556, 5555, gOamData_826CED0, gSpriteAnimTable_826CF20, NULL, gDummySpriteAffineAnimTable, sub_804FE00
-
-gUnknown_826CF48:: @ 826CF48
- spr_template 5556, 5555, gOamData_826CED0, gSpriteAnimTable_826CF24, NULL, gDummySpriteAffineAnimTable, sub_804FE00
-
-gUnknown_826CF60:: @ 826CF60
- .2byte RGB(18, 24, 31)
- .2byte RGB(18, 24, 31)
- .2byte RGB(18, 24, 31)
- .2byte RGB(31, 31, 31)
- .2byte RGB(31, 31, 31)
- .2byte RGB(31, 31, 31)
- .2byte RGB(18, 24, 31)
- .2byte RGB(18, 24, 31)
- .2byte RGB(18, 24, 31)
- .2byte RGB(31, 31, 31)
- .2byte RGB(31, 31, 31)
- .2byte RGB(31, 31, 31)
-
-gAffineAnimCmd_826CF78::
- obj_rot_scal_anim_frame 0xFF00, 0x0100, 0x00, 0x00
- obj_rot_scal_anim_jump 0
-
-gUnknown_826CF88:: @ 826CF88
- .4byte gAffineAnimCmd_826CF78
-
- .include "data/ingame_trades.inc"
-
-gUnknown_826D1BC:: @ 826D1BC
- .byte 0, 2, 15, 26, 4, 0
- .2byte 0x0040
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 2,
- @ .tilemapTop = 15,
- @ .width = 26,
- @ .height = 4,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0040
- @ }
- .byte 255, 0, 0, 0, 0, 0
- .2byte 0x0000
- @ {
- @ .bg = 255,
- @ .tilemapLeft = 0,
- @ .tilemapTop = 0,
- @ .width = 0,
- @ .height = 0,
- @ .paletteNum = 0,
- @ .baseBlock = 0x0000
- @ }
-
-gUnknown_826D1CC:: @ 826D1CC
- .byte 0, 21, 9, 6, 4, 15
- .2byte 0x00bc
- @ {
- @ .bg = 0,
- @ .tilemapLeft = 21,
- @ .tilemapTop = 9,
- @ .width = 6,
- @ .height = 4,
- @ .paletteNum = 15,
- @ .baseBlock = 0x00bc
- @ }
-
-gUnknown_826D1D4:: @ 826D1D4
- .4byte 0x000001fc
- @ {
- @ .bg = 0,
- @ .charBaseIndex = 3,
- @ .mapBaseIndex = 31,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 0,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x00002051
- @ {
- @ .bg = 1,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 5,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x00002326
- @ {
- @ .bg = 2,
- @ .charBaseIndex = 1,
- @ .mapBaseIndex = 18,
- @ .screenSize = 1,
- @ .paletteMode = 0,
- @ .priority = 2,
- @ .baseTile = 0x0000
- @ }
- .4byte 0x00003063
- @ {
- @ .bg = 3,
- @ .charBaseIndex = 0,
- @ .mapBaseIndex = 6,
- @ .screenSize = 0,
- @ .paletteMode = 0,
- @ .priority = 3,
- @ .baseTile = 0x0000
- @ }
-
-gUnknown_826D1E4:: @ 826D1E4
- .byte 0x00
- .byte 0x00
- .byte 0x01
- .byte 0x00
- .byte 0x01
- .byte 0x00
- .byte 0x01
- .byte 0x01
- .byte 0x01
- .byte 0x01
- .byte 0x02
- .byte 0x02
- .byte 0x02
- .byte 0x02
- .byte 0x03
- .byte 0x03
- .byte 0x03
- .byte 0x03
- .byte 0x04
- .byte 0x04
- .byte 0x04
- .byte 0x04
- .byte 0xfc
- .byte 0xfc
- .byte 0xfc
- .byte 0xfd
- .byte 0xfd
- .byte 0xfd
- .byte 0xfd
- .byte 0xfe
- .byte 0xfe
- .byte 0xfe
- .byte 0xfe
- .byte 0xff
- .byte 0xff
- .byte 0xff
- .byte 0xff
- .byte 0x00
- .byte 0xff
- .byte 0x00
- .byte 0xff
- .byte 0x00
- .byte 0x00
- .byte 0x00
-
- .incbin "baserom.gba", 0x26D210, 0x40
-
-gUnknown_826D250:: @ 826D250
- .byte 0x00, 0x01
- .byte 0x01, 0x01
- .byte 0x02, 0x01
- .byte 0x03, 0x01
- .byte 0x04, 0x01
- .byte 0x05, 0x02
- .byte 0x06, 0x02
- .byte 0x07, 0x02
- .byte 0x08, 0x02
- .byte 0x09, 0x02
- .byte 0x0a, 0x03
- .byte 0x0b, 0x03
- .byte 0x0c, 0x03
- .byte 0x0d, 0x04
- .byte 0x0e, 0x05
- .byte 0x0f, 0x02
- .byte 0x00, 0x01
- .byte 0x01, 0x01
- .byte 0x02, 0x01
- .byte 0x03, 0x01
- .byte 0x04, 0x01
- .byte 0x05, 0x02
- .byte 0x06, 0x02
- .byte 0x07, 0x02
- .byte 0x08, 0x02
- .byte 0x09, 0x02
- .byte 0x0a, 0x03
- .byte 0x0b, 0x03
- .byte 0x0c, 0x03
- .byte 0x0d, 0x04
- .byte 0x0e, 0x05
- .byte 0x10, 0x01
- .byte 0x10, 0xff
-
- .align 2, 0
diff --git a/data/trade/unk_8264C1C.png b/data/trade/unk_8264C1C.png
deleted file mode 100644
index 3dbbf845c..000000000
--- a/data/trade/unk_8264C1C.png
+++ /dev/null
Binary files differ
diff --git a/data/trade/unk_8264E1C.png b/data/trade/unk_8264E1C.png
deleted file mode 100644
index 48b16f034..000000000
--- a/data/trade/unk_8264E1C.png
+++ /dev/null
Binary files differ
diff --git a/data/trade/unk_826501C.png b/data/trade/unk_826501C.png
deleted file mode 100644
index a900dea3b..000000000
--- a/data/trade/unk_826501C.png
+++ /dev/null
Binary files differ
diff --git a/data/trade/unk_826701C.png b/data/trade/unk_826701C.png
deleted file mode 100644
index 91123d014..000000000
--- a/data/trade/unk_826701C.png
+++ /dev/null
Binary files differ
diff --git a/data/trade/unk_826C60C.bin b/data/trade/unk_826C60C.bin
deleted file mode 100644
index 4ce5d18b8..000000000
--- a/data/trade/unk_826C60C.bin
+++ /dev/null
Binary files differ
diff --git a/data/trade/unk_826207C.png b/graphics/trade/ball.png
index 01e26de43..97cc86a6f 100644
--- a/data/trade/unk_826207C.png
+++ b/graphics/trade/ball.png
Binary files differ
diff --git a/data/trade/unk_826BF5C.pal b/graphics/trade/black.pal
index 4b0812f09..4b0812f09 100644
--- a/data/trade/unk_826BF5C.pal
+++ b/graphics/trade/black.pal
diff --git a/graphics/trade/buttons.png b/graphics/trade/buttons.png
new file mode 100644
index 000000000..568f40a42
--- /dev/null
+++ b/graphics/trade/buttons.png
Binary files differ
diff --git a/data/trade/unk_826407C.bin b/graphics/trade/cable_closeup_map.bin
index aad25ed83..aad25ed83 100644
--- a/data/trade/unk_826407C.bin
+++ b/graphics/trade/cable_closeup_map.bin
Binary files differ
diff --git a/graphics/trade/cable_end.png b/graphics/trade/cable_end.png
new file mode 100644
index 000000000..1d7828a00
--- /dev/null
+++ b/graphics/trade/cable_end.png
Binary files differ
diff --git a/data/trade/unk_826499C.pal b/graphics/trade/gba.pal
index 64a442293..64a442293 100644
--- a/data/trade/unk_826499C.pal
+++ b/graphics/trade/gba.pal
diff --git a/graphics/trade/gba_affine.png b/graphics/trade/gba_affine.png
new file mode 100644
index 000000000..b8c2623c4
--- /dev/null
+++ b/graphics/trade/gba_affine.png
Binary files differ
diff --git a/data/trade/unk_826985C.bin b/graphics/trade/gba_affine_map_cable.bin
index 19bab962b..19bab962b 100644
--- a/data/trade/unk_826985C.bin
+++ b/graphics/trade/gba_affine_map_cable.bin
Binary files differ
diff --git a/data/trade/unk_826995C.bin b/graphics/trade/gba_affine_map_wireless.bin
index 53a511321..53a511321 100644
--- a/data/trade/unk_826995C.bin
+++ b/graphics/trade/gba_affine_map_wireless.bin
Binary files differ
diff --git a/data/trade/unk_826AA5C.bin b/graphics/trade/gba_map_cable.bin
index 80705aef5..80705aef5 100644
--- a/data/trade/unk_826AA5C.bin
+++ b/graphics/trade/gba_map_cable.bin
Binary files differ
diff --git a/data/trade/unk_8269A5C.bin b/graphics/trade/gba_map_wireless.bin
index 52f6232fc..52f6232fc 100644
--- a/data/trade/unk_8269A5C.bin
+++ b/graphics/trade/gba_map_wireless.bin
Binary files differ
diff --git a/graphics/trade/gba_screen.png b/graphics/trade/gba_screen.png
new file mode 100644
index 000000000..4220e5e0d
--- /dev/null
+++ b/graphics/trade/gba_screen.png
Binary files differ
diff --git a/data/trade/unk_8264A1C.png b/graphics/trade/glow1.png
index 4197d701c..e223d97ce 100644
--- a/data/trade/unk_8264A1C.png
+++ b/graphics/trade/glow1.png
Binary files differ
diff --git a/graphics/trade/glow2.png b/graphics/trade/glow2.png
new file mode 100644
index 000000000..e7729bc84
--- /dev/null
+++ b/graphics/trade/glow2.png
Binary files differ
diff --git a/graphics/trade/menu.pal b/graphics/trade/menu.pal
new file mode 100644
index 000000000..98377bbb3
--- /dev/null
+++ b/graphics/trade/menu.pal
@@ -0,0 +1,51 @@
+JASC-PAL
+0100
+48
+0 0 0
+57 57 172
+98 98 180
+123 106 222
+82 90 213
+82 148 205
+131 115 230
+148 156 189
+205 106 0
+246 148 0
+49 49 90
+255 213 115
+205 74 90
+255 98 32
+205 205 222
+255 255 213
+0 0 0
+0 8 16
+0 16 32
+0 24 49
+0 41 65
+0 49 82
+0 57 98
+0 65 115
+0 82 131
+0 90 148
+0 98 164
+0 106 180
+0 123 197
+0 131 213
+0 139 230
+0 156 255
+0 0 0
+0 8 16
+0 16 32
+0 24 49
+0 41 65
+0 49 82
+0 57 98
+0 65 115
+0 82 131
+0 90 148
+0 98 164
+0 106 180
+0 123 197
+0 131 213
+0 139 230
+0 156 255
diff --git a/graphics/trade/menu.png b/graphics/trade/menu.png
new file mode 100644
index 000000000..f06e5b35c
--- /dev/null
+++ b/graphics/trade/menu.png
Binary files differ
diff --git a/graphics/trade/menu_mon_box.bin b/graphics/trade/menu_mon_box.bin
new file mode 100644
index 000000000..354866137
--- /dev/null
+++ b/graphics/trade/menu_mon_box.bin
Binary files differ
diff --git a/graphics/trade/misc.pal b/graphics/trade/misc.pal
new file mode 100644
index 000000000..32fafddfc
--- /dev/null
+++ b/graphics/trade/misc.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 156 123
+164 123 197
+41 255 115
+0 139 255
+255 255 74
+255 255 255
+106 106 106
+255 156 123
+255 156 123
+255 156 123
+255 156 123
+255 156 123
+255 156 123
+255 156 123
+255 156 123
diff --git a/data/trade/unk_8260834.bin b/graphics/trade/moves_box_map.bin
index 123abf716..123abf716 100644
--- a/data/trade/unk_8260834.bin
+++ b/graphics/trade/moves_box_map.bin
Binary files differ
diff --git a/data/trade/unk_8260A32.bin b/graphics/trade/party_box_map.bin
index 69304c5cb..69304c5cb 100644
--- a/data/trade/unk_8260A32.bin
+++ b/graphics/trade/party_box_map.bin
Binary files differ
diff --git a/graphics/trade/pokeball.png b/graphics/trade/pokeball.png
new file mode 100644
index 000000000..97cc86a6f
--- /dev/null
+++ b/graphics/trade/pokeball.png
Binary files differ
diff --git a/graphics/trade/pokeball_symbol.png b/graphics/trade/pokeball_symbol.png
new file mode 100644
index 000000000..3b4a30f4f
--- /dev/null
+++ b/graphics/trade/pokeball_symbol.png
Binary files differ
diff --git a/graphics/trade/pokeball_symbol_map.bin b/graphics/trade/pokeball_symbol_map.bin
new file mode 100644
index 000000000..8355c2f5c
--- /dev/null
+++ b/graphics/trade/pokeball_symbol_map.bin
Binary files differ
diff --git a/graphics/trade/shadow.pal b/graphics/trade/shadow.pal
new file mode 100644
index 000000000..a4bec6478
--- /dev/null
+++ b/graphics/trade/shadow.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 255 255
+222 230 238
+189 205 230
+156 180 222
+0 16 172
+32 32 106
+16 16 90
+0 0 74
+255 255 189
+230 230 164
+205 205 148
+189 180 115
+139 139 90
+74 74 57
+32 32 32
diff --git a/data/trade/unk_826601C.bin b/graphics/trade/shadow_map.bin
index 8846e2d7d..8846e2d7d 100644
--- a/data/trade/unk_826601C.bin
+++ b/graphics/trade/shadow_map.bin
Binary files differ
diff --git a/data/trade/unk_8260C30.bin b/graphics/trade/stripes_bg2_map.bin
index 22f8f3b71..22f8f3b71 100644
--- a/data/trade/unk_8260C30.bin
+++ b/graphics/trade/stripes_bg2_map.bin
diff --git a/data/trade/unk_8261430.bin b/graphics/trade/stripes_bg3_map.bin
index e4168474a..e4168474a 100644
--- a/data/trade/unk_8261430.bin
+++ b/graphics/trade/stripes_bg3_map.bin
diff --git a/data/trade/unk_8261CE0.pal b/graphics/trade/text.pal
index 40426b71f..40426b71f 100644
--- a/data/trade/unk_8261CE0.pal
+++ b/graphics/trade/text.pal
diff --git a/graphics/trade/unknown_3308C0.pal b/graphics/trade/unknown_3308C0.pal
new file mode 100644
index 000000000..72cf8b7c9
--- /dev/null
+++ b/graphics/trade/unknown_3308C0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+255 57 8
+255 90 8
+255 131 8
+255 172 8
+255 213 8
+255 255 8
+255 255 131
+255 255 255
+255 255 0
+65 0 0
+115 16 0
+172 32 0
+230 57 8
+0 0 0
+0 0 0
diff --git a/graphics/trade/unknown_338EA4.pal b/graphics/trade/unknown_338EA4.pal
new file mode 100644
index 000000000..346db3df8
--- /dev/null
+++ b/graphics/trade/unknown_338EA4.pal
@@ -0,0 +1,15 @@
+JASC-PAL
+0100
+12
+148 197 255
+148 197 255
+148 197 255
+255 255 255
+255 255 255
+255 255 255
+148 197 255
+148 197 255
+148 197 255
+255 255 255
+255 255 255
+255 255 255
diff --git a/graphics/trade/unknown_DDB444.pal b/graphics/trade/unknown_DDB444.pal
new file mode 100644
index 000000000..bb74b34a2
--- /dev/null
+++ b/graphics/trade/unknown_DDB444.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+123 131 222
+98 98 180
+123 106 222
+106 172 238
+82 148 205
+180 189 230
+148 156 189
+205 106 0
+255 189 49
+246 148 0
+255 213 115
+205 74 90
+255 98 32
+205 205 222
+255 98 32
diff --git a/graphics/trade/unknown_DDCF04.bin b/graphics/trade/unknown_DDCF04.bin
new file mode 100644
index 000000000..46218245f
--- /dev/null
+++ b/graphics/trade/unknown_DDCF04.bin
Binary files differ
diff --git a/data/trade/unk_826BD5C.pal b/graphics/trade/wireless_signal_receive.pal
index 218390aa2..218390aa2 100644
--- a/data/trade/unk_826BD5C.pal
+++ b/graphics/trade/wireless_signal_receive.pal
diff --git a/data/trade/unk_826BB5C.pal b/graphics/trade/wireless_signal_send.pal
index a5da8a543..a5da8a543 100644
--- a/data/trade/unk_826BB5C.pal
+++ b/graphics/trade/wireless_signal_send.pal
diff --git a/graphics/unused/unused_DDCEE4.bin b/graphics/unused/unused_DDCEE4.bin
new file mode 100644
index 000000000..481183cbd
--- /dev/null
+++ b/graphics/unused/unused_DDCEE4.bin
Binary files differ
diff --git a/include/berry_powder.h b/include/berry_powder.h
index f0e77c44b..d944ae44d 100644
--- a/include/berry_powder.h
+++ b/include/berry_powder.h
@@ -3,5 +3,6 @@
u32 GetBerryPowder(void);
void SetBerryPowder(u32 *powder, u32 amount);
+void sub_815EE6C(u32 newKey);
#endif //GUARD_BERRY_POWDER_H
diff --git a/include/constants/flags.h b/include/constants/flags.h
index 082e12f87..bd356064c 100644
--- a/include/constants/flags.h
+++ b/include/constants/flags.h
@@ -1,7 +1,7 @@
#ifndef GUARD_CONSTANTS_FLAGS_H
#define GUARD_CONSTANTS_FLAGS_H
-// TODO: Get correct names and numbers
+#include "constants/trainers.h"
#define FLAG_TEMP_1 0x001
#define FLAG_TEMP_2 0x002
@@ -1309,10 +1309,8 @@
#define FLAG_TRAINER_FLAG_START 0x500
-#define TRAINERS_FLAG_NO 0x2E7 // 743
-#define TRAINER_FLAGS_WORDS 0x300
-
-#define SYS_FLAGS (FLAG_TRAINER_FLAG_START + TRAINER_FLAGS_WORDS) // 0x800
+// Vanilla: SYS_FLAGS = 0x800
+#define SYS_FLAGS (FLAG_TRAINER_FLAG_START + ((NUM_TRAINERS) + 31) / 32 * 32)
// SYSTEM FLAGS
diff --git a/include/constants/region_map.h b/include/constants/region_map.h
index 527acf2c9..0957a72ee 100644
--- a/include/constants/region_map.h
+++ b/include/constants/region_map.h
@@ -200,4 +200,6 @@
#define MAPSEC_SPECIAL_AREA 0xC4
#define MAPSEC_NONE 0xC5
+#define MAPSEC_IN_GAME_TRADE 0xFE
+
#endif //GUARD_CONSTANTS_REGION_MAP_H
diff --git a/include/decompress.h b/include/decompress.h
index 03080fe48..3f3a02d7b 100644
--- a/include/decompress.h
+++ b/include/decompress.h
@@ -23,9 +23,7 @@ void DecompressPicFromTable_2(const struct CompressedSpriteSheet *src, void* buf
void DecompressPicFromTable_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void* buffer, s32 species);
void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
-void HandleLoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void HandleLoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
-void HandleLoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality);
void LoadSpecialPokePic(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
void LoadSpecialPokePic_2(const struct CompressedSpriteSheet *src, void *dest, s32 species, u32 personality, bool8 isFrontPic);
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/graphics.h b/include/graphics.h
index 638351be4..56a51e67c 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -4214,4 +4214,12 @@ extern const u8 gMonIcon_Unown_ExclamationMark[];
extern const u8 gMonIcon_Unown_QuestionMark[];
extern const u8 gMonIcon_QuestionMark[];
+// trade
+extern const u16 gTradeMenu_Pal[];
+extern const u16 gTradeButtons_Pal[];
+extern const u16 gTradeMenu_Gfx[];
+extern const u16 gUnknown_8E9E9FC[];
+extern const u16 gTradeButtons_Gfx[];
+extern const u16 gTradeMenuMonBox_Tilemap[];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/international_string_util.h b/include/international_string_util.h
deleted file mode 100644
index 2b922676d..000000000
--- a/include/international_string_util.h
+++ /dev/null
@@ -1,25 +0,0 @@
-#ifndef GUARD_INTERNATIONAL_STRING_UTIL_H
-#define GUARD_INTERNATIONAL_STRING_UTIL_H
-
-#include "global.h"
-
-#include "menu.h"
-
-void sub_81DB52C(const u8 *src);
-void TVShowConvertInternationalString(u8 *dest, const u8 *src, u8 language);
-s32 GetStringCenterAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
-s32 GetStringRightAlignXOffset(s32 fontId, const u8 *str, s32 totalWidth);
-s32 GetStringCenterAlignXOffsetWithLetterSpacing(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
-s32 GetStringWidthDifference(s32 fontId, const u8 *str, s32 totalWidth, s32 letterSpacing);
-s32 GetMaxWidthInMenuTable(const struct MenuAction *str, s32 arg1);
-s32 sub_81DB3D8(const struct MenuAction *str, u8* arg1, s32 arg2);
-// sub_81DB41C
-// CopyMonCategoryText
-// sub_81DB494
-// sub_81DB4DC
-// sub_81DB554
-// sub_81DB5AC
-u32 sub_81DB604(const u8 *);
-// sub_81DB620
-
-#endif // GUARD_INTERNATIONAL_STRING_UTIL_H
diff --git a/include/item.h b/include/item.h
index dd6271d13..ccc9cd3bb 100644
--- a/include/item.h
+++ b/include/item.h
@@ -72,10 +72,12 @@ u16 BagGetQuantityByPocketPosition(u8 pocketId, u16 itemId);
bool8 itemid_is_unique(u16 itemId);
void BagPocketCompaction(struct ItemSlot * slots, u8 capacity);
u16 GetPcItemQuantity(u16 *);
+void SetBagPocketsPointers(void);
void ItemPcCompaction(void);
void RemoveItemFromPC(u16 itemId, u16 quantity);
void SortAndCompactBagPocket(struct BagPocket * pocket);
u8 CountItemsInPC(void);
+void ApplyNewEncryptionKeyToBagItems_(u32 newKey);
#endif // GUARD_ITEM_H
diff --git a/include/link.h b/include/link.h
index 7c4b871de..9465f0404 100644
--- a/include/link.h
+++ b/include/link.h
@@ -181,7 +181,7 @@ extern u32 gLinkStatus;
extern u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2];
extern u16 gSendCmd[CMD_LENGTH];
extern u8 gShouldAdvanceLinkState;
-extern struct LinkPlayer gLinkPlayers[];
+extern struct LinkPlayer gLinkPlayers[MAX_RFU_PLAYERS];
extern u16 word_3002910[];
extern bool8 gReceivedRemoteLinkPlayers;
extern bool8 gLinkVSyncDisabled;
@@ -212,6 +212,7 @@ u8 GetBlockReceivedStatus(void);
void ResetBlockReceivedFlags(void);
void ResetBlockReceivedFlag(u8);
void SetLinkDebugValues(u32, u32);
+u8 GetSavedPlayerCount(void);
u8 GetLinkPlayerCount_2(void);
bool8 IsLinkMaster(void);
void CB2_LinkError(void);
@@ -232,10 +233,10 @@ bool8 sub_800A520(void);
bool8 sub_8010500(void);
void sub_800DFB4(u8, u8);
void sub_800AB9C(void);
-void sub_800B488(void);
+void sub_800B1F4(void);
void sub_8009734(void);
void sub_800A620(void);
-void sub_8011BD0(void);
+void sub_80FBB4C(void);
u8 sub_800ABAC(void);
u8 sub_800ABBC(void);
void sub_800AAC0(void);
@@ -257,5 +258,6 @@ void ClearLinkCallback_2(void);
void sub_80FA42C(void);
void sub_800B284(struct LinkPlayer * linkPlayer);
bool8 IsWirelessAdapterConnected(void);
+bool8 sub_800A474(u8 a0);
#endif // GUARD_LINK_H
diff --git a/include/link_rfu.h b/include/link_rfu.h
index f5aa682e6..6e6e5f7a3 100644
--- a/include/link_rfu.h
+++ b/include/link_rfu.h
@@ -39,6 +39,8 @@ bool32 sub_80FAEF0(void);
bool32 IsRfuRecvQueueEmpty(void);
u32 GetRfuRecvQueueLength(void);
void sub_80F8DC0(void);
+void sub_80FBB20(void);
+bool8 sub_80FA484(bool32 a0);
void var_800D_set_xB(void);
#endif //GUARD_LINK_RFU_H
diff --git a/include/load_save.h b/include/load_save.h
index 2406b5f03..6162c30b9 100644
--- a/include/load_save.h
+++ b/include/load_save.h
@@ -26,7 +26,7 @@ void ApplyNewEncryptionKeyToAllEncryptedData(u32 encryptionKey);
void ApplyNewEncryptionKeyToBagItems(u32 encryptionKey);
void ApplyNewEncryptionKeyToWord(u32 * word, u32 encryptionKey);
void ApplyNewEncryptionKeyToHword(u16 * hword, u32 encryptionKey);
-void sav2_gender2_inplace_and_xFE(void);
-void sub_804C1C0(void);
+void ClearContinueGameWarpStatus2(void);
+void SetContinueGameWarpStatusToDynamicWarp(void);
#endif // GUARD_LOAD_SAVE_H
diff --git a/include/mevent.h b/include/mevent.h
index 98d184f60..6b67aa27c 100644
--- a/include/mevent.h
+++ b/include/mevent.h
@@ -68,5 +68,6 @@ bool32 WonderCard_Test_Unk_08_6(void);
u32 MENews_GetInput(u16 input);
void sub_8143D24(void);
u16 sub_81445C0(u32 command);
+void sub_8144714(u32 a0, u32 a1);
#endif //GUARD_MEVENT_H
diff --git a/include/overworld.h b/include/overworld.h
index 805ddc8a0..36c890eb5 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -142,5 +142,8 @@ bool32 sub_8058318(void);
void CB2_ReturnToStartMenu(void);
void CB2_WhiteOut(void);
+void c2_8056854(void);
+void sub_8054F38(u32 newKey);
+void sub_8055778(int);
#endif //GUARD_OVERWORLD_H
diff --git a/include/party_menu.h b/include/party_menu.h
index 53731bee6..c07371a5d 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -82,9 +82,11 @@ void OpenPartyMenuInBattle(u8 arg);
void sub_8127EC4(u8 battlerId, u8 unk, u8 arrayIndex);
bool8 IsMultiBattle(void);
void sub_8126EDC(void);
+void sub_812256C(u8 *partyCount, u8 (*icons)[6], u8 side);
void PartyMenuInit_FromPlayerPc(void);
void CB2_PartyMenuFromStartMenu(void);
void sub_8128198(void);
void sub_8127FF4(u8 slot, u8 slot2);
+void LoadHeldItemIcons(void);
#endif // GUARD_PARTY_MENU_H
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/pokemon_icon.h b/include/pokemon_icon.h
index 52d374041..cfc3c18f0 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -8,17 +8,20 @@ const u8 *GetMonIconTiles(u16 iconSpecies, bool32 extra);
const u16 *GetValidMonIconPalettePtr(u16 speciesId);
u16 sub_80D2E84(u16 speciesId);
void sub_80D2F68(u16 iconId);
-u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5);
+u8 sub_80D2D78(u16 iconId, SpriteCallback callback, u16 x, u16 y, u16 a4, u8 a5);
void sub_80D2FF0(u16 iconId);
-void sub_80D2EF8(struct Sprite *sprite);
+void sub_80D2EF8(struct Sprite * sprite);
void LoadMonIconPalettes(void);
void FreeMonIconPalettes(void);
u16 MailSpeciesToIconSpecies(u16);
-u8 CreateMonIcon_HandleDeoxys(u16 species, void (*callback)(struct Sprite *), s16 x, s16 y, u8 subpriority, bool32 extra);
+u8 CreateMonIcon_HandleDeoxys(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subpriority, bool32 extra);
void DestroyMonIcon(struct Sprite *);
u16 GetUnownLetterByPersonality(u32 personality);
-u8 UpdateMonIconFrame(struct Sprite *sprite);
+void SpriteCB_MonIcon(struct Sprite *);
+u8 CreateMonIcon(u16 species, SpriteCallback callback, s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra);
+u8 UpdateMonIconFrame(struct Sprite * sprite);
void LoadMonIconPalette(u16 iconId);
void FreeMonIconPalette(u16 iconId);
+void MonIcon_SetAnim(struct Sprite * sprite, u8 animNum);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 6790fb775..81f50e1e9 100644
--- a/include/pokemon_storage_system.h
+++ b/include/pokemon_storage_system.h
@@ -16,5 +16,6 @@ u8 * GetBoxNamePtr(u8 boxId);
void sub_808CE60(void);
void ResetPokemonStorageSystem(void);
u8 StorageGetCurrentBox(void);
+void PSS_RenderTextToVramViaBuffer(const u8 *name, u8 *a1, u8 a2, u8 a3, u8 *buffer, u8 a5);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/include/pokemon_summary_screen.h b/include/pokemon_summary_screen.h
index 7b250b647..b800e3d30 100644
--- a/include/pokemon_summary_screen.h
+++ b/include/pokemon_summary_screen.h
@@ -8,7 +8,6 @@ extern u8 gLastViewedMonIndex;
extern const u8 *const gMoveDescriptionPointers[];
extern const u8 *const gNatureNamePointers[];
-void ShowPokemonSummaryScreen(u8 mode, void *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
void ShowSelectMovePokemonSummaryScreen(struct Pokemon *, u8, u8, MainCallback, u16);
void ShowPokemonSummaryScreenSet40EF(u8 mode, struct BoxPokemon *mons, u8 monIndex, u8 maxMonIndex, void (*callback)(void));
u8 sub_8138B2C(void);
@@ -33,4 +32,7 @@ enum PokemonSummaryScreenPage
PSS_PAGE_CONTEST_MOVES,
};
+s32 sub_8138B20(void);
+void ShowPokemonSummaryScreen(struct Pokemon * party, u8 cursorPos, u8 lastIdx, void (*callback)(void), u8 a4);
+
#endif // GUARD_POKEMON_SUMMARY_SCREEN_H
diff --git a/include/quest_log.h b/include/quest_log.h
index 8165486ce..3f6c94de5 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -46,6 +46,7 @@ void sub_811231C(void);
void sub_81139BC(void);
void *QuestLogGetFlagOrVarPtr(bool8 isFlag, u16 idx);
void QuestLogSetFlagOrVar(bool8 isFlag, u16 idx, u16 value);
+void sub_8110840(void *oldSave);
extern u8 gUnknown_203ADFA;
diff --git a/include/save_failed_screen.h b/include/save_failed_screen.h
new file mode 100644
index 000000000..feffa2014
--- /dev/null
+++ b/include/save_failed_screen.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_SAVE_FAILED_SCREEN_H
+#define GUARD_SAVE_FAILED_SCREEN_H
+
+extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen
+
+#endif //GUARD_SAVE_FAILED_SCREEN_H
diff --git a/include/strings.h b/include/strings.h
index 9304b225d..7231755c5 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -660,4 +660,30 @@ extern const u8 gText_FiveIsland[];
extern const u8 gText_SixIsland[];
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[];
+extern const u8 gUnknown_841E325[];
+extern const u8 gTradeText_Cancel[];
+extern const u8 gTradeText_ChooseAPokemon[];
+extern const u8 gTradeText_Summary[];
+extern const u8 gTradeText_Trade[];
+extern const u8 gTradeText_CancelTrade[];
+extern const u8 gTradeText_PressBButtonToExit[];
+extern const u8 gUnknown_841E10A[];
+extern const u8 gUnknown_841E112[];
+extern const u8 gUnknown_841E118[];
+extern const u8 gUnknown_841E145[];
+extern const u8 gUnknown_841E16B[];
+extern const u8 gUnknown_8417094[];
+extern const u8 gUnknown_841E199[];
+extern const u8 gUnknown_841E1C5[];
+extern const u8 gUnknown_84170BC[];
+extern const u8 gUnknown_84170E0[];
+extern const u8 gUnknown_84170FC[];
+extern const u8 gUnknown_841E09F[];
+
#endif //GUARD_STRINGS_H
diff --git a/include/trade.h b/include/trade.h
index 02ed7d8c4..257357053 100644
--- a/include/trade.h
+++ b/include/trade.h
@@ -1,6 +1,11 @@
#ifndef GUARD_TRADE_H
#define GUARD_TRADE_H
+extern struct MailStruct gLinkPartnerMail[6];
+extern u8 gSelectedTradeMonPositions[2];
+
+extern const u16 gUnknown_826601C[];
+void CB2_ReturnFromLinkTrade(void);
s32 sub_804FB34(void);
#endif //GUARD_TRADE_H
diff --git a/include/trade_scene.h b/include/trade_scene.h
new file mode 100644
index 000000000..13cb1a56c
--- /dev/null
+++ b/include/trade_scene.h
@@ -0,0 +1,17 @@
+#ifndef GUARD_TRADE_SCENE_H
+#define GUARD_TRADE_SCENE_H
+
+void CB2_InitTradeAnim_LinkTrade(void);
+void CreateInGameTradePokemon(void);
+void DoInGameTradeScene(void);
+void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed);
+u16 GetInGameTradeSpeciesInfo(void);
+u16 GetTradeSpecies(void);
+void sub_805049C(void);
+void sub_80504B0(void);
+void LoadTradeAnimGfx(void);
+
+extern const u16 gUnknown_826601C[];
+extern const struct WindowTemplate gUnknown_826D1CC;
+
+#endif //GUARD_TRADE_SCENE_H
diff --git a/include/util.h b/include/util.h
index 3884ab21c..ef1c15faa 100644
--- a/include/util.h
+++ b/include/util.h
@@ -14,7 +14,8 @@ void LoadWordFromTwoHalfwords(u16 *, u32 *);
int CountTrailingZeroBits(u32 value);
u16 CalcCRC16(const u8 *data, u32 length);
u16 CalcCRC16WithTable(const u8 *data, u32 length);
-u32 CalcByteArraySum(const u8* data, u32 length);
+u32 CalcByteArraySum(const u8 *data, u32 length);
void BlendPalette(u16 palOffset, u16 numEntries, u8 coeff, u16 blendColor);
+void DoBgAffineSet(struct BgAffineDstData * dest, u32 texX, u32 texY, s16 srcX, s16 srcY, s16 sx, s16 sy, u16 alpha);
#endif // GUARD_UTIL_H
diff --git a/ld_script.txt b/ld_script.txt
index 2b2dff40e..f8e33aa9f 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -85,7 +85,8 @@ SECTIONS {
asm/smokescreen.o(.text);
asm/pokeball.o(.text);
src/load_save.o(.text);
- asm/trade.o(.text);
+ src/trade.o(.text);
+ src/trade_scene.o(.text);
src/play_time.o(.text);
src/new_game.o(.text);
asm/overworld.o(.text);
@@ -399,7 +400,8 @@ SECTIONS {
src/battle_gfx_sfx_util.o(.rodata);
data/battle_interface.o(.rodata);
data/pokeball.o(.rodata);
- data/trade.o(.rodata);
+ src/trade.o(.rodata);
+ src/trade_scene.o(.rodata);
data/overworld.o(.rodata);
data/tilesets.o(.rodata);
data/maps.o(.rodata);
diff --git a/src/battle_main.c b/src/battle_main.c
index 1b1614a5a..9104bc381 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -20,7 +20,6 @@
#include "graphics.h"
#include "gpu_regs.h"
#include "help_system.h"
-#include "international_string_util.h"
#include "item.h"
#include "link.h"
#include "link_rfu.h"
diff --git a/src/data/ingame_trades.h b/src/data/ingame_trades.h
new file mode 100644
index 000000000..59304242b
--- /dev/null
+++ b/src/data/ingame_trades.h
@@ -0,0 +1,144 @@
+static const struct InGameTrade sInGameTrades[] = {
+ {
+ .nickname = _("MIMIEN"),
+ .species = SPECIES_MR_MIME,
+ .ivs = {20, 15, 17, 24, 23, 22},
+ .abilityNum = 0,
+ .otId = 1985,
+ .conditions = {5, 5, 5, 30, 5},
+ .personality = 0x00009cae,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("REYLEY"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_ABRA
+ }, {
+ .nickname = _("ZYNX"),
+ .species = SPECIES_JYNX,
+ .ivs = {18, 17, 18, 22, 25, 21},
+ .abilityNum = 0,
+ .otId = 36728,
+ .conditions = {5, 30, 5, 5, 5},
+ .personality = 0x498a2e1d,
+ .heldItem = ITEM_FAB_MAIL,
+ .mailNum = 0,
+ .otName = _("DONTAE"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_POLIWHIRL
+ }, {
+ .nickname = _("MS. NIDO"),
+ .species = SPECIES_NIDORAN_F,
+ .ivs = {22, 18, 25, 19, 15, 22},
+ .abilityNum = 0,
+ .otId = 63184,
+ .conditions = {5, 5, 5, 5, 30},
+ .personality = 0x4c970b89,
+ .heldItem = ITEM_TINY_MUSHROOM,
+ .mailNum = 255,
+ .otName = _("SAIGE"),
+ .otGender = FEMALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_NIDORAN_M
+ }, {
+ .nickname = _("CH'DING"),
+ .species = SPECIES_FARFETCHD,
+ .ivs = {20, 25, 21, 24, 15, 20},
+ .abilityNum = 0,
+ .otId = 8810,
+ .conditions = {30, 5, 5, 5, 5},
+ .personality = 0x151943d7,
+ .heldItem = ITEM_STICK,
+ .mailNum = 255,
+ .otName = _("ELYSSA"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_SPEAROW
+ }, {
+ .nickname = _("NINA"),
+ .species = SPECIES_NIDORINA,
+ .ivs = {22, 25, 18, 19, 22, 15},
+ .abilityNum = 0,
+ .otId = 13637,
+ .conditions = {5, 5, 30, 5, 5},
+ .personality = 0x00eeca15,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("TURNER"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_NIDORINO
+ }, {
+ .nickname = _("MARC"),
+ .species = SPECIES_LICKITUNG,
+ .ivs = {24, 19, 21, 15, 23, 21},
+ .abilityNum = 0,
+ .otId = 1239,
+ .conditions = {5, 5, 5, 5, 30},
+ .personality = 0x451308ab,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("HADEN"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_GOLDUCK
+ }, {
+ .nickname = _("ESPHERE"),
+ .species = SPECIES_ELECTRODE,
+ .ivs = {19, 16, 18, 25, 25, 19},
+ .abilityNum = 1,
+ .otId = 50298,
+ .conditions = {30, 5, 5, 5, 5},
+ .personality = 0x06341016,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("CLIFTON"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_RAICHU
+ }, {
+ .nickname = _("TANGENY"),
+ .species = SPECIES_TANGELA,
+ .ivs = {22, 17, 25, 16, 23, 20},
+ .abilityNum = 0,
+ .otId = 60042,
+ .conditions = {5, 5, 30, 5, 5},
+ .personality = 0x5c77ecfa,
+ .heldItem = ITEM_STARDUST,
+ .mailNum = 255,
+ .otName = _("NORMA"),
+ .otGender = FEMALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_VENONAT
+ },
+ {
+ .nickname = _("SEELOR"),
+ .species = SPECIES_SEEL,
+ .ivs = {24, 15, 22, 16, 23, 22},
+ .abilityNum = 0,
+ .otId = 9853,
+ .conditions = {5, 5, 5, 5, 30},
+ .personality = 0x482cac89,
+ .heldItem = ITEM_NONE,
+ .mailNum = 255,
+ .otName = _("GARETT"),
+ .otGender = MALE,
+ .sheen = 10,
+ .requestedSpecies = SPECIES_PONYTA
+ }
+};
+
+static const u16 sInGameTradeMailMessages[][10] = {
+ {
+ EC_WORD_THAT_S,
+ EC_WORD_A,
+ EC_WORD_HEALTHY,
+ EC_POKEMON2(JYNX),
+ EC_WORD_EXCL,
+ EC_WORD_BE,
+ EC_WORD_KIND,
+ EC_WORD_TO,
+ EC_WORD_IT
+ }
+};
diff --git a/src/daycare.c b/src/daycare.c
index c016bbc38..f034bc220 100644
--- a/src/daycare.c
+++ b/src/daycare.c
@@ -14,7 +14,6 @@
#include "text.h"
#include "menu.h"
#include "new_menu_helpers.h"
-#include "international_string_util.h"
#include "script.h"
#include "strings.h"
#include "task.h"
@@ -24,25 +23,18 @@
#include "overworld.h"
#include "pokedex.h"
#include "decompress.h"
-#include "task.h"
#include "palette.h"
-#include "main.h"
#include "sound.h"
#include "constants/songs.h"
#include "text_window.h"
#include "trig.h"
#include "malloc.h"
-#include "dma3.h"
#include "gpu_regs.h"
#include "bg.h"
#include "m4a.h"
#include "graphics.h"
-#include "constants/abilities.h"
-#include "constants/species.h"
#include "scanline_effect.h"
-#include "field_weather.h"
#include "naming_screen.h"
-#include "field_screen_effect.h"
#include "help_system.h"
#include "field_fadetransition.h"
diff --git a/src/load_save.c b/src/load_save.c
index 0a7bbbfc5..da469d4e6 100644
--- a/src/load_save.c
+++ b/src/load_save.c
@@ -7,13 +7,10 @@
#include "malloc.h"
#include "item.h"
#include "save_location.h"
-
-extern void SetBagPocketsPointers(void);
-extern void sub_8110840(void *oldSave);
-extern void sub_8055778(int);
-extern void sub_8054F38(u32 newKey);
-extern void ApplyNewEncryptionKeyToBagItems_(u32 newKey);
-extern void sub_815EE6C(u32 newKey);
+#include "berry_powder.h"
+#include "item.h"
+#include "overworld.h"
+#include "quest_log.h"
#define SAVEBLOCK_MOVE_RANGE 128
@@ -146,13 +143,13 @@ void sub_804C1AC(void)
gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
}
-void sub_804C1C0(void)
+void SetContinueGameWarpStatusToDynamicWarp(void)
{
sub_8055778(0);
gSaveBlock2Ptr->specialSaveWarpFlags |= CONTINUE_GAME_WARP;
}
-void sav2_gender2_inplace_and_xFE(void)
+void ClearContinueGameWarpStatus2(void)
{
gSaveBlock2Ptr->specialSaveWarpFlags &= ~CONTINUE_GAME_WARP;
}
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/pokemon.c b/src/pokemon.c
index 17f28c7a6..fb7a8c626 100644
--- a/src/pokemon.c
+++ b/src/pokemon.c
@@ -64,9 +64,11 @@ struct OakSpeechNidoranFStruct
struct SpriteFrameImage *frameImages;
};
-// TODO: move sLearningMoveTableID, gPlayerPartyCount, gEnemyPartyCount,
-// gEnemyParty, gPlayerParty here after resolving symbol ref in between.
-extern u8 sLearningMoveTableID;
+static EWRAM_DATA u8 sLearningMoveTableID = 0;
+EWRAM_DATA u8 gPlayerPartyCount = 0;
+EWRAM_DATA u8 gEnemyPartyCount = 0;
+EWRAM_DATA struct Pokemon gEnemyParty[PARTY_SIZE] = {};
+EWRAM_DATA struct Pokemon gPlayerParty[PARTY_SIZE] = {};
EWRAM_DATA struct SpriteTemplate gMultiuseSpriteTemplate = {0};
static EWRAM_DATA struct OakSpeechNidoranFStruct *sOakSpeechNidoranResources = NULL;
diff --git a/src/random.c b/src/random.c
index 54dae0824..f6c49971d 100644
--- a/src/random.c
+++ b/src/random.c
@@ -8,11 +8,11 @@ u32 gRngValue;
u16 Random(void)
{
- gRngValue = 1103515245 * gRngValue + 24691;
- return gRngValue >> 16;
+ gRngValue = 1103515245 * gRngValue + 24691;
+ return gRngValue >> 16;
}
void SeedRng(u16 seed)
{
- gRngValue = seed;
+ gRngValue = seed;
}
diff --git a/src/save.c b/src/save.c
index 45f5fc6f0..57364b10b 100644
--- a/src/save.c
+++ b/src/save.c
@@ -6,6 +6,8 @@
#include "load_save.h"
#include "task.h"
#include "link.h"
+#include "save_failed_screen.h"
+#include "fieldmap.h"
#include "gba/flash_internal.h"
#define FILE_SIGNATURE 0x08012025 // signature value to determine if a sector is in use
@@ -66,13 +68,6 @@ const struct SaveSectionOffsets gSaveSectionOffsets[] =
SAVEBLOCK_CHUNK(struct PokemonStorage, 8)
};
-extern void DoSaveFailedScreen(u8 saveType); // save_failed_screen
-extern void sub_800AB9C(void); // link
-extern bool8 IsLinkTaskFinished(void); // link
-extern void save_serialize_map(void); // fieldmap
-extern void sub_804C1C0(void); // load_save
-extern void sav2_gender2_inplace_and_xFE(void); // load_save
-
// Sector num to begin writing save data. Sectors are rotated each time the game is saved. (possibly to avoid wear on flash memory?)
u16 gFirstSaveSector;
u32 gPrevSaveCounter;
@@ -872,7 +867,7 @@ void sub_80DA634(u8 taskId)
}
break;
case 3:
- sub_804C1C0();
+ SetContinueGameWarpStatusToDynamicWarp();
sub_80DA3AC();
gTasks[taskId].data[0] = 4;
break;
@@ -894,7 +889,7 @@ void sub_80DA634(u8 taskId)
gTasks[taskId].data[0] = 7;
break;
case 7:
- sav2_gender2_inplace_and_xFE();
+ ClearContinueGameWarpStatus2();
sub_800AB9C();
gTasks[taskId].data[0] = 8;
break;
diff --git a/src/start_menu.c b/src/start_menu.c
index dddb5f44e..4a4fe52e3 100644
--- a/src/start_menu.c
+++ b/src/start_menu.c
@@ -923,14 +923,14 @@ static void task50_after_link_battle_save(u8 taskId)
data[0] = 1;
break;
case 1:
- sub_804C1C0();
+ SetContinueGameWarpStatusToDynamicWarp();
sub_80DA45C();
data[0] = 2;
break;
case 2:
if (sub_80DA4A0())
{
- sav2_gender2_inplace_and_xFE();
+ ClearContinueGameWarpStatus2();
data[0] = 3;
}
break;
diff --git a/src/trade.c b/src/trade.c
new file mode 100644
index 000000000..5151ecedd
--- /dev/null
+++ b/src/trade.c
@@ -0,0 +1,4502 @@
+#include "global.h"
+#include "palette.h"
+#include "task.h"
+#include "decompress.h"
+#include "gpu_regs.h"
+#include "malloc.h"
+#include "bg.h"
+#include "text.h"
+#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 "random.h"
+#include "save.h"
+#include "load_save.h"
+#include "quest_log.h"
+#include "field_fadetransition.h"
+#include "mevent.h"
+#include "help_system.h"
+#include "link_rfu.h"
+#include "cable_club.h"
+#include "data.h"
+#include "sound.h"
+#include "string_util.h"
+#include "strings.h"
+#include "menu.h"
+#include "overworld.h"
+#include "battle_anim.h"
+#include "pokeball.h"
+#include "party_menu.h"
+#include "util.h"
+#include "daycare.h"
+#include "script.h"
+#include "event_data.h"
+#include "battle_interface.h"
+#include "pokemon_summary_screen.h"
+#include "pokemon_storage_system.h"
+#include "new_menu_helpers.h"
+#include "trade.h"
+#include "trade_scene.h"
+#include "constants/species.h"
+#include "constants/items.h"
+#include "constants/easy_chat.h"
+#include "constants/songs.h"
+#include "constants/region_map.h"
+#include "constants/moves.h"
+
+struct TradeMenuResources
+{
+ /*0x0000*/ u8 unk_0;
+ /*0x0001*/ u8 unk_1;
+ /*0x0002*/ u8 filler_2[0x28 - 2];
+ /*0x0028*/ u8 partyIcons[2][PARTY_SIZE];
+ /*0x0034*/ u8 tradeMenuCursorSpriteIdx;
+ /*0x0035*/ u8 tradeMenuCursorPosition;
+ /*0x0036*/ u8 partyCounts[2];
+ /*0x0038*/ bool8 tradeMenuOptionsActive[13];
+ /*0x0045*/ u8 unk_45[2][PARTY_SIZE];
+ /*0x0051*/ u8 unk_51[2][PARTY_SIZE];
+ /*0x005D*/ u8 unk_5D[2][PARTY_SIZE];
+ /*0x0069*/ u8 unk_69;
+ /*0x006A*/ u8 filler_6A[0x6F - 0x6A];
+ /*0x006F*/ u8 unk_6F;
+ /*0x0070*/ u8 unk_70;
+ /*0x0071*/ u8 filler_71;
+ /*0x0072*/ u16 unk_72;
+ /*0x0074*/ u8 unk_74[2];
+ /*0x0076*/ u8 unk_76[2];
+ /*0x0078*/ u8 unk_78;
+ /*0x0079*/ u8 unk_79;
+ /*0x007A*/ u8 unk_7A;
+ /*0x007B*/ u8 unk_7B;
+ /*0x007C*/ u8 filler_7C[0x7E - 0x7C];
+ /*0x007E*/ u8 unk_7E;
+ /*0x007F*/ u8 filler_7F;
+ /*0x0080*/ u16 linkData[20];
+ /*0x00A8*/ u8 unk_A8;
+ /*0x00A9*/ u8 unk_A9[11];
+ /*0x00B4*/ u8 filler_B4[0x8D0-0xB4];
+ /*0x08D0*/ struct {
+ bool8 active;
+ u16 delay;
+ u8 kind;
+ } cron[4];
+ /*0x08F0*/ u16 tilemapBuffer[BG_SCREEN_SIZE / 2];
+};
+
+enum TradeStatusMsg
+{
+ TRADESTATMSG_COMMSTANDBY = 0,
+ TRADESTATMSG_CANCELED,
+ TRADESTATMSG_ONLYMON,
+ TRADESTATMSG_ONLYMON2,
+ TRADESTATMSG_WAITINGFORFRIEND,
+ TRADESTATMSG_FRIENDWANTSTOTRADE,
+ TRADESTATMSG_YOURMONCANTBETRADED,
+ TRADESTATMSG_EGGCANTBETRADED,
+ TRADESTATMSG_PARTNERMONCANTBETRADED
+};
+
+static EWRAM_DATA u8 *sSpriteTextTileBuffer = NULL;
+static EWRAM_DATA u8 *sSpriteTextTilePtrs[14] = {};
+EWRAM_DATA struct MailStruct gLinkPartnerMail[6] = {};
+EWRAM_DATA u8 gSelectedTradeMonPositions[2] = {0};
+static EWRAM_DATA struct TradeMenuResources * sTradeMenuResourcesPtr = NULL;
+
+static void sub_804C728(void);
+static void sub_804D4F8(void);
+static void sub_804D638(void);
+static void sub_804D694(u8 state);
+static void sub_804D764(void);
+static u8 shedinja_maker_maybe(void);
+static void sub_804DFF0(void);
+static void RunTradeMenuCallback(void);
+static void sub_804EAAC(u8 a0);
+static void sub_804EAE4(u8 side);
+static u8 sub_804EE6C(u8 *str, u8 whichParty, u8 partyIdx);
+static void sub_804EED4(u8 *str, u8 whichParty, u8 partyIdx);
+static void sub_804F020(u8 side);
+static void sub_804F08C(u8 a0, u8 partyIdx, u8 a2, u8 a3, u8 a4, u8 a5);
+static void sub_804F284(u8 side);
+static void sub_804F3B4(void);
+static void sub_804F3C8(u8 a0);
+static void TradeMenuAction_Summary(u8 taskId);
+static void TradeMenuAction_Trade(u8 taskId);
+static void ScheduleLinkTaskWithDelay(u16 delay, u8 kind);
+static void RunScheduledLinkTasks(void);
+static void PrintTradeErrorOrStatusMessage(u8 strIdx);
+static bool8 sub_804F610(void);
+static void RenderTextToVramViaBuffer(const u8 *name, u8 *a1, u8 unused);
+static void sub_804F748(u8 side);
+static void sub_804F890(u8 side);
+static void sub_804F964(void);
+static void sub_804F9D8(void);
+static u32 sub_804FA14(struct Pokemon * party, int partyCount, int cursorPos);
+
+static const size_t gUnknown_8260814[] = {
+ sizeof(struct SaveBlock2),
+ sizeof(struct SaveBlock1),
+ sizeof(struct MapData),
+ 0x530, // unk
+ 0x34, // unk
+ sizeof(struct MailStruct),
+ sizeof(struct Pokemon),
+ 0x528 // unk
+};
+
+static const u16 sTradeMovesBoxTilemap[] = INCBIN_U16("graphics/trade/moves_box_map.bin");
+static const u16 sTradePartyBoxTilemap[] = INCBIN_U16("graphics/trade/party_box_map.bin");
+static const u8 sTradeStripesBG2Tilemap[] = INCBIN_U8("graphics/trade/stripes_bg2_map.bin");
+static const u8 sTradeStripesBG3Tilemap[] = INCBIN_U8("graphics/trade/stripes_bg3_map.bin");
+
+static const struct OamData gOamData_8261C30 = {
+ .shape = SPRITE_SHAPE(32x16),
+ .size = SPRITE_SIZE(32x16),
+ .priority = 1
+};
+
+static const struct OamData gOamData_8261C38 = {
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
+ .priority = 1
+};
+
+static const union AnimCmd gSpriteAnim_8261C40[] = {
+ ANIMCMD_FRAME(0x00, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_8261C48[] = {
+ ANIMCMD_FRAME(0x20, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_8261C50[] = {
+ gSpriteAnim_8261C40,
+ gSpriteAnim_8261C48
+};
+
+static const struct SpriteSheet sTradeButtons_SpriteSheet = {
+ gTradeButtons_Gfx,
+ 0x800,
+ 300
+};
+
+static const struct SpritePalette sTradeButtons_SpritePal = {
+ gTradeButtons_Pal,
+ 2345
+};
+
+
+static const union AnimCmd gSpriteAnim_8261C68[] = {
+ ANIMCMD_FRAME(0x00, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_8261C70[] = {
+ ANIMCMD_FRAME(0x08, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_8261C78[] = {
+ ANIMCMD_FRAME(0x10, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_8261C80[] = {
+ ANIMCMD_FRAME(0x18, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_8261C88[] = {
+ ANIMCMD_FRAME(0x20, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gSpriteAnim_8261C90[] = {
+ ANIMCMD_FRAME(0x28, 5),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_8261C98[] = {
+ gSpriteAnim_8261C68,
+ gSpriteAnim_8261C70,
+ gSpriteAnim_8261C78,
+ gSpriteAnim_8261C80,
+ gSpriteAnim_8261C88,
+ gSpriteAnim_8261C90
+};
+
+static const struct SpriteTemplate sSpriteTemplate_TradeButtons = {
+ .tileTag = 300,
+ .paletteTag = 2345,
+ .oam = &gOamData_8261C38,
+ .anims = gSpriteAnimTable_8261C50,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate sSpriteTemplate_Text = {
+ .tileTag = 200,
+ .paletteTag = 4925,
+ .oam = &gOamData_8261C30,
+ .anims = gSpriteAnimTable_8261C98,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCallbackDummy
+};
+
+static const u16 sTradeTextPal[] = INCBIN_U16("graphics/trade/text.gbapal");
+
+static const struct SpritePalette sSpritePalette_Text = {
+ sTradeTextPal,
+ 4925
+};
+
+#define DIR_UP 0
+#define DIR_DOWN 1
+#define DIR_LEFT 2
+#define DIR_RIGHT 3
+
+static const u8 sCursorMoveDestinations[][4][6] = {
+ // Player's party
+ [0] = {
+ [DIR_UP] = { 4, 2, 12, 12, 0, 0},
+ [DIR_DOWN] = { 2, 4, 12, 12, 0, 0},
+ [DIR_LEFT] = { 7, 6, 1, 0, 0, 0},
+ [DIR_RIGHT] = { 1, 6, 7, 0, 0, 0}
+ },
+ [1] = {
+ [DIR_UP] = { 5, 3, 12, 12, 0, 0},
+ [DIR_DOWN] = { 3, 5, 12, 12, 0, 0},
+ [DIR_LEFT] = { 0, 7, 6, 1, 0, 0},
+ [DIR_RIGHT] = { 6, 7, 0, 1, 0, 0}
+ },
+ [2] = {
+ [DIR_UP] = { 0, 0, 0, 0, 0, 0},
+ [DIR_DOWN] = { 4, 0, 0, 0, 0, 0},
+ [DIR_LEFT] = { 9, 8, 7, 6, 0, 0},
+ [DIR_RIGHT] = { 3, 1, 0, 0, 0, 0}
+ },
+ [3] = {
+ [DIR_UP] = { 1, 1, 1, 1, 0, 0},
+ [DIR_DOWN] = { 5, 1, 1, 1, 0, 0},
+ [DIR_LEFT] = { 2, 9, 8, 7, 0, 0},
+ [DIR_RIGHT] = { 8, 9, 6, 6, 0, 0}
+ },
+ [4] = {
+ [DIR_UP] = { 2, 2, 2, 2, 0, 0},
+ [DIR_DOWN] = { 0, 0, 0, 0, 0, 0},
+ [DIR_LEFT] = {11, 10, 9, 8, 7, 6},
+ [DIR_RIGHT] = { 5, 3, 1, 0, 0, 0}
+ },
+ [5] = {
+ [DIR_UP] = { 3, 3, 3, 3, 0, 0},
+ [DIR_DOWN] = { 1, 1, 1, 1, 0, 0},
+ [DIR_LEFT] = { 4, 4, 4, 4, 0, 0},
+ [DIR_RIGHT] = {10, 8, 6, 0, 0, 0}
+ },
+ // Partner's party
+ [6] = {
+ [DIR_UP] = {10, 8, 12, 0, 0, 0},
+ [DIR_DOWN] = { 8, 10, 12, 0, 0, 0},
+ [DIR_LEFT] = { 1, 0, 0, 0, 0, 0},
+ [DIR_RIGHT] = { 7, 0, 1, 0, 0, 0}
+ },
+ [7] = {
+ [DIR_UP] = {12, 0, 0, 0, 0, 0},
+ [DIR_DOWN] = { 9, 12, 0, 0, 0, 0},
+ [DIR_LEFT] = { 6, 0, 0, 0, 0, 0},
+ [DIR_RIGHT] = { 0, 0, 0, 0, 0, 0}
+ },
+ [8] = {
+ [DIR_UP] = { 6, 0, 0, 0, 0, 0},
+ [DIR_DOWN] = {10, 6, 0, 0, 0, 0},
+ [DIR_LEFT] = { 3, 2, 1, 0, 0, 0},
+ [DIR_RIGHT] = { 9, 7, 0, 0, 0, 0}
+ },
+ [9] = {
+ [DIR_UP] = { 7, 0, 0, 0, 0, 0},
+ [DIR_DOWN] = {11, 12, 0, 0, 0, 0},
+ [DIR_LEFT] = { 8, 0, 0, 0, 0, 0},
+ [DIR_RIGHT] = { 2, 1, 0, 0, 0, 0}
+ },
+ [10] = {
+ [DIR_UP] = { 8, 0, 0, 0, 0, 0},
+ [DIR_DOWN] = { 6, 0, 0, 0, 0, 0},
+ [DIR_LEFT] = { 5, 4, 3, 2, 1, 0},
+ [DIR_RIGHT] = {11, 9, 7, 0, 0, 0}
+ },
+ [11] = {
+ [DIR_UP] = { 9, 0, 0, 0, 0, 0},
+ [DIR_DOWN] = {12, 0, 0, 0, 0, 0},
+ [DIR_LEFT] = {10, 0, 0, 0, 0, 0},
+ [DIR_RIGHT] = { 4, 2, 0, 0, 0, 0}
+ },
+ // Cancel
+ [12] = {
+ [DIR_UP] = {11, 9, 7, 6, 0, 0},
+ [DIR_DOWN] = { 7, 6, 0, 0, 0, 0},
+ [DIR_LEFT] = {12, 0, 0, 0, 0, 0},
+ [DIR_RIGHT] = {12, 0, 0, 0, 0, 0}
+ }
+};
+
+static const u8 sTradeMonSpriteCoords[][2] = {
+ {0x01, 0x05},
+ {0x08, 0x05},
+ {0x01, 0x0a},
+ {0x08, 0x0a},
+ {0x01, 0x0f},
+ {0x08, 0x0f},
+
+ {0x10, 0x05},
+ {0x17, 0x05},
+ {0x10, 0x0a},
+ {0x17, 0x0a},
+ {0x10, 0x0f},
+ {0x17, 0x0f},
+
+ {0x17, 0x12},
+};
+
+// No idea if a 4D array is correct
+static const u8 gUnknown_8261E5A[][2][6][2] = {
+ {
+ {
+ {0x05, 0x04},
+ {0x0c, 0x04},
+ {0x05, 0x09},
+ {0x0c, 0x09},
+ {0x05, 0x0e},
+ {0x0c, 0x0e}
+ }, {
+ {0x14, 0x04},
+ {0x1b, 0x04},
+ {0x14, 0x09},
+ {0x1b, 0x09},
+ {0x14, 0x0e},
+ {0x1b, 0x0e}
+ }
+ }, {
+ {
+ {0x01, 0x03},
+ {0x08, 0x03},
+ {0x01, 0x08},
+ {0x08, 0x08},
+ {0x01, 0x0d},
+ {0x08, 0x0d}
+ }, {
+ {0x10, 0x03},
+ {0x17, 0x03},
+ {0x10, 0x08},
+ {0x17, 0x08},
+ {0x10, 0x0d},
+ {0x17, 0x0d}
+ }
+ }
+};
+
+static const u8 sTradeUnknownSpriteCoords[][4] = {
+ {0x3c, 0x09, 0xb4, 0x09},
+ {0x30, 0x09, 0xa8, 0x09}
+};
+
+static const u8 gUnknown_8261E92[] = {
+ 0x00, 0x0e, 0x0f, 0x1d,
+ 0x03, 0x05, 0x03, 0x07,
+ 0x12, 0x05, 0x12, 0x07,
+ 0x08, 0x07, 0x16, 0x0c,
+ 0x08, 0x07, 0x16, 0x0c,
+ 0x06, 0x07, 0x18, 0x0c,
+ 0x06, 0x07, 0x18, 0x0c,
+ 0x08, 0x07, 0x16, 0x0c,
+ 0x07, 0x07, 0x17, 0x0c
+};
+
+const u8 gUnknown_8261EB6[] = _("");
+const u8 gUnknown_8261EB7[] = _("{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT}{SHADOW RED}");
+const u8 gText_MaleSymbol4[] = _("♂");
+const u8 gText_FemaleSymbol4[] = _("♀");
+const u8 gText_GenderlessSymbol[] = _("");
+const u8 gUnknown_8261EC6[] = _("");
+const u8 gUnknown_8261EC7[] = _("\n");
+const u8 gUnknown_8261EC9[] = _("/");
+
+enum TradeUIText
+{
+ TRADEUITEXT_CANCEL = 0,
+ TRADEUITEXT_CHOOSE,
+ TRADEUITEXT_SUMMARY,
+ TRADEUITEXT_TRADE,
+ TRADEUITEXT_ASKCANCEL,
+ TRADEUITEXT_PRESSBTOEXIT
+};
+
+static const u8 *const sTradeUITextPtrs[] = {
+ gTradeText_Cancel,
+ gTradeText_ChooseAPokemon,
+ gTradeText_Summary,
+ gTradeText_Trade,
+ gTradeText_CancelTrade,
+ gTradeText_PressBButtonToExit
+};
+
+static const struct MenuAction gUnknown_8261EE4[] = {
+ {gUnknown_841E10A, { .void_u8 = TradeMenuAction_Summary }},
+ {gUnknown_841E112, { .void_u8 = TradeMenuAction_Trade }}
+};
+
+static const u8 *const sTradeErrorOrStatusMessagePtrs[] = {
+ gUnknown_841E118, // Communication standby
+ gUnknown_841E145, // The trade has been canceled.
+ gUnknown_841E16B, // That's your only POKéMON for battle
+ gUnknown_8417094, // That's your only POKéMON for battle
+ gUnknown_841E199, // Waiting for your friend to finish
+ gUnknown_841E1C5, // Your friend wants to trade POKéMON
+ gUnknown_84170BC, // That POKéMON can't be traded now
+ gUnknown_84170E0, // An EGG can't be traded now
+ gUnknown_84170FC // The other TRAINER's POKéMON can't be traded now
+};
+
+static const u8 gUnknown_8261F18[] = { 0, 1, 2 };
+
+static const struct BgTemplate gUnknown_8261F1C[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 2,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 5,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 6,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 7,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+static const struct WindowTemplate gUnknown_8261F2C[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 4,
+ .tilemapTop = 7,
+ .width = 22,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x01e
+ }, {
+ .bg = 0,
+ .tilemapLeft = 17,
+ .tilemapTop = 15,
+ .width = 12,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x076
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 5,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x0a6
+ }, {
+ .bg = 0,
+ .tilemapLeft = 7,
+ .tilemapTop = 5,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x0b6
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 10,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x0c6
+ }, {
+ .bg = 0,
+ .tilemapLeft = 7,
+ .tilemapTop = 10,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x0d6
+ }, {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 15,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x0e6
+ }, {
+ .bg = 0,
+ .tilemapLeft = 7,
+ .tilemapTop = 15,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x0f6
+ }, {
+ .bg = 0,
+ .tilemapLeft = 15,
+ .tilemapTop = 5,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x106
+ }, {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 5,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x116
+ }, {
+ .bg = 0,
+ .tilemapLeft = 15,
+ .tilemapTop = 10,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x126
+ }, {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 10,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x136
+ }, {
+ .bg = 0,
+ .tilemapLeft = 15,
+ .tilemapTop = 15,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x146
+ }, {
+ .bg = 0,
+ .tilemapLeft = 22,
+ .tilemapTop = 15,
+ .width = 8,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x156
+ }, {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 5,
+ .width = 14,
+ .height = 2,
+ .paletteNum = 13,
+ .baseBlock = 0x166
+ }, {
+ .bg = 0,
+ .tilemapLeft = 3,
+ .tilemapTop = 8,
+ .width = 11,
+ .height = 8,
+ .paletteNum = 15,
+ .baseBlock = 0x182
+ }, {
+ .bg = 0,
+ .tilemapLeft = 17,
+ .tilemapTop = 5,
+ .width = 14,
+ .height = 2,
+ .paletteNum = 15,
+ .baseBlock = 0x1da
+ }, {
+ .bg = 0,
+ .tilemapLeft = 18,
+ .tilemapTop = 8,
+ .width = 11,
+ .height = 8,
+ .paletteNum = 15,
+ .baseBlock = 0x1f6
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static const struct WindowTemplate gUnknown_8261FC4 = {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 13,
+ .width = 6,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x24e
+};
+
+static const u8 gUnknown_8261FCC[][13] = {
+ _("かいめの そうしん"),
+ _("かいめの じゅしん"),
+ _("ポケモンアイコンセット"),
+ _("OBJテキストセット"),
+ _("セルセット"),
+ _("OBJテキストADD"),
+ _("システムメッセージADD"),
+ _("はいけいセット")
+};
+
+static const u8 gJPText_Shedinja[] = _("ヌケニン");
+static const u8 gUnknown_8262039[] = _("こうかんせいりつ ");
+static const u8 gUnknown_8262047[] = _("だめだたらしいよ ");
+
+static const u8 gUnknown_8262055[][2] = {
+ { 4, 3},
+ {19, 3}
+};
+
+static void sub_804C600(void)
+{
+ int i;
+ static vu16 dummy;
+
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ResetPaletteFade();
+ gPaletteFade.bufferTransferDisabled = TRUE;
+ SetVBlankCallback(sub_804D4F8);
+ LoadPalette(gTMCaseMainWindowPalette, 0xF0, 0x14);
+ LoadPalette(gTMCaseMainWindowPalette, 0xD0, 0x14);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, gUnknown_8261F1C, NELEMS(gUnknown_8261F1C));
+ SetBgTilemapBuffer(1, sTradeMenuResourcesPtr->tilemapBuffer);
+ if (InitWindows(gUnknown_8261F2C))
+ {
+ DeactivateAllTextPrinters();
+ dummy = 590; // ?
+ for (i = 0; i < NELEMS(gUnknown_8261F2C) - 1; i++)
+ {
+ ClearWindowTilemap(i);
+ FillWindowPixelBuffer(i, PIXEL_FILL(0));
+ }
+ FillBgTilemapBufferRect(0, 0, 0, 0, 30, 20, 0xF);
+ TextWindow_SetStdFrame0_WithPal(0, 0x014, 0xC0);
+ TextWindow_SetUserSelectedFrame(2, 0x001, 0xE0);
+ LoadMonIconPalettes();
+ sTradeMenuResourcesPtr->unk_69 = 0;
+ sTradeMenuResourcesPtr->unk_6F = 0;
+ sTradeMenuResourcesPtr->unk_70 = 0;
+ sTradeMenuResourcesPtr->unk_74[0] = 0;
+ sTradeMenuResourcesPtr->unk_74[1] = 0;
+ sTradeMenuResourcesPtr->unk_7A = 0;
+ sTradeMenuResourcesPtr->unk_7B = 0;
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ }
+}
+
+void CB2_ReturnFromLinkTrade(void)
+{
+ SetMainCallback2(sub_804C728);
+}
+
+#ifdef NONMATCHING
+// See note on case 12 below
+static void sub_804C728(void)
+{
+ int i;
+ struct SpriteTemplate temp;
+ u8 id;
+ s32 width;
+ u32 xPos;
+
+ switch (gMain.state)
+ {
+ case 0:
+ sTradeMenuResourcesPtr = AllocZeroed(sizeof(*sTradeMenuResourcesPtr));
+ sub_804C600();
+ sSpriteTextTileBuffer = AllocZeroed(0xE00);
+
+ for (i = 0; i < 14; i++)
+ {
+ sSpriteTextTilePtrs[i] = &sSpriteTextTileBuffer[i * 256];
+ }
+
+ gMain.state++;
+ break;
+ case 1:
+ gPaletteFade.bufferTransferDisabled = FALSE;
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, 0x20, FALSE, 0, OT_ID_PLAYER_ID, 0);
+ }
+
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY);
+ ShowBg(0);
+
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ gLinkType = 0x1122;
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+
+ if (gWirelessCommType)
+ {
+ sub_800B1F4();
+ OpenLink();
+ sub_80FBB20();
+ }
+ else
+ {
+ OpenLink();
+ gMain.state++;
+ }
+ if (gWirelessCommType == 0)
+ CreateTask(sub_8081A90, 1);
+ }
+ else
+ {
+ gMain.state = 4;
+ }
+ break;
+ case 2:
+ sTradeMenuResourcesPtr->unk_A8++;
+ if (sTradeMenuResourcesPtr->unk_A8 > 11)
+ {
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ gMain.state++;
+ }
+ break;
+ case 3:
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
+ {
+ if (IsLinkMaster())
+ {
+ if (++sTradeMenuResourcesPtr->unk_A8 > 30)
+ {
+ CheckShouldAdvanceLinkState();
+ gMain.state++;
+ }
+ }
+ else
+ {
+ gMain.state++;
+ }
+ }
+ break;
+ case 4:
+ if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
+ {
+ sub_80FBB4C();
+ CalculatePlayerPartyCount();
+ gMain.state++;
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ if (gWirelessCommType)
+ {
+ sub_80FA484(TRUE);
+ sub_800AB9C();
+ }
+ }
+ break;
+ case 5:
+ if (gWirelessCommType)
+ {
+ if (IsLinkRfuTaskFinished())
+ {
+ gMain.state++;
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ }
+ else
+ {
+ gMain.state++;
+ }
+ break;
+ case 6:
+ if (shedinja_maker_maybe())
+ {
+ sub_804F9D8();
+ gMain.state++;
+ }
+ break;
+ case 7:
+ CalculateEnemyPartyCount();
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ sTradeMenuResourcesPtr->partyCounts[0] = gPlayerPartyCount;
+ sTradeMenuResourcesPtr->partyCounts[1] = gEnemyPartyCount;
+
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++)
+ {
+ struct Pokemon * mon = &gPlayerParty[i];
+ sTradeMenuResourcesPtr->partyIcons[0][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2),
+ SpriteCB_MonIcon,
+ (sTradeMonSpriteCoords[i][0] * 8) + 14,
+ (sTradeMonSpriteCoords[i][1] * 8) - 12,
+ 1,
+ GetMonData(mon, MON_DATA_PERSONALITY),
+ TRUE);
+ }
+
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++)
+ {
+ struct Pokemon * mon = &gEnemyParty[i];
+ sTradeMenuResourcesPtr->partyIcons[1][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL),
+ SpriteCB_MonIcon,
+ (sTradeMonSpriteCoords[i + PARTY_SIZE][0] * 8) + 14,
+ (sTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12,
+ 1,
+ GetMonData(mon, MON_DATA_PERSONALITY),
+ FALSE);
+ }
+ gMain.state++;
+ break;
+ case 8:
+ LoadHeldItemIcons();
+ sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0);
+ gMain.state++;
+ break;
+ case 9:
+ sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1);
+ gMain.state++;
+ break;
+ case 10:
+ PSS_RenderTextToVramViaBuffer(gSaveBlock2Ptr->playerName, sSpriteTextTilePtrs[0], 0, 0, gDecompressionBuffer, 3);
+ id = GetMultiplayerId();
+ PSS_RenderTextToVramViaBuffer(gLinkPlayers[id ^ 1].name, sSpriteTextTilePtrs[3], 0, 0, gDecompressionBuffer, 3);
+ PSS_RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CANCEL], sSpriteTextTilePtrs[6], 0, 0, gDecompressionBuffer, 2);
+ RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], sSpriteTextTilePtrs[8], 24);
+ gMain.state++;
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ break;
+ case 11:
+ if (sub_804F610())
+ gMain.state++;
+ break;
+ case 12:
+ width = GetStringWidth(1, gSaveBlock2Ptr->playerName, 0);
+ xPos = (56 - width) / 2;
+ for (i = 0; i < 3; i++)
+ {
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += i;
+ CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][0] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][1], 1);
+ }
+
+ /*
+ * These three lines are a pain to match due to register alloc and
+ * pointer arithmetic misbehavior.
+ */
+ id = GetMultiplayerId();
+ id ^= 1;
+ width = GetStringWidth(1, gLinkPlayers[id].name, 0);
+ xPos = (56 - width) / 2;
+ for (i = 0; i < 3; i++)
+ {
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += i + 3;
+ CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][2] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][3], 1);
+ }
+ gMain.state++;
+ break;
+ case 13:
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += 6;
+ CreateSprite(&temp, 215, 151, 1);
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += 7;
+ CreateSprite(&temp, 247, 151, 1);
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += i + 8;
+ CreateSprite(&temp, (i * 32) + 24, 150, 1);
+ }
+
+ sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx = CreateSprite(&sSpriteTemplate_TradeButtons, sTradeMonSpriteCoords[0][0] * 8 + 32, sTradeMonSpriteCoords[0][1] * 8, 2);
+ sTradeMenuResourcesPtr->tradeMenuCursorPosition = 0;
+ gMain.state++;
+ rbox_fill_rectangle(0);
+ break;
+ case 14:
+ sub_804F748(0);
+ sub_804F020(0);
+ sTradeMenuResourcesPtr->unk_0 = 0;
+ sTradeMenuResourcesPtr->unk_1 = 0;
+ sub_804D764();
+ gMain.state++;
+ PlayBGM(MUS_SLOT);
+ break;
+ case 15:
+ sub_804F748(1);
+ sub_804F020(1);
+ gMain.state++;
+ // fallthrough
+ case 16:
+ sub_804D694(0);
+ gMain.state++;
+ break;
+ case 17:
+ sub_804D694(1);
+ gMain.state++;
+ break;
+ case 18:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gMain.state++;
+ break;
+ case 19:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ sub_804D694(2);
+ gMain.state++;
+ break;
+ case 20:
+ sub_804F890(0);
+ gMain.state++;
+ break;
+ case 21:
+ sub_804F890(1);
+ sub_804F964();
+ gMain.state++;
+ break;
+ case 22:
+ if (!gPaletteFade.active)
+ {
+ gMain.callback1 = sub_804DFF0;
+ SetMainCallback2(sub_804D638);
+ }
+ break;
+ }
+
+ RunTextPrinters();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+#else
+NAKED
+static void sub_804C728(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tsub sp, 0x28\n"
+ "\tldr r1, _0804C74C @ =gMain\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r0, r1, r2\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r3, r1, 0\n"
+ "\tcmp r0, 0x16\n"
+ "\tbls _0804C742\n"
+ "\tb _0804CEE6\n"
+ "_0804C742:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804C750 @ =_0804C754\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_0804C74C: .4byte gMain\n"
+ "_0804C750: .4byte _0804C754\n"
+ "\t.align 2, 0\n"
+ "_0804C754:\n"
+ "\t.4byte _0804C7B0\n"
+ "\t.4byte _0804C7FC\n"
+ "\t.4byte _0804C8C8\n"
+ "\t.4byte _0804C8F4\n"
+ "\t.4byte _0804C950\n"
+ "\t.4byte _0804C9B0\n"
+ "\t.4byte _0804C9F0\n"
+ "\t.4byte _0804CA10\n"
+ "\t.4byte _0804CB50\n"
+ "\t.4byte _0804CB78\n"
+ "\t.4byte _0804CB9C\n"
+ "\t.4byte _0804CC30\n"
+ "\t.4byte _0804CC3E\n"
+ "\t.4byte _0804CD10\n"
+ "\t.4byte _0804CDE0\n"
+ "\t.4byte _0804CE20\n"
+ "\t.4byte _0804CE3A\n"
+ "\t.4byte _0804CE48\n"
+ "\t.4byte _0804CE5C\n"
+ "\t.4byte _0804CE7C\n"
+ "\t.4byte _0804CE9C\n"
+ "\t.4byte _0804CEB0\n"
+ "\t.4byte _0804CED0\n"
+ "_0804C7B0:\n"
+ "\tldr r4, _0804C7E8 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, _0804C7EC @ =0x000010f0\n"
+ "\tbl AllocZeroed\n"
+ "\tstr r0, [r4]\n"
+ "\tbl sub_804C600\n"
+ "\tldr r4, _0804C7F0 @ =sSpriteTextTileBuffer\n"
+ "\tmovs r0, 0xE0\n"
+ "\tlsls r0, 4\n"
+ "\tbl AllocZeroed\n"
+ "\tstr r0, [r4]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r2, _0804C7F4 @ =sSpriteTextTilePtrs\n"
+ "_0804C7CE:\n"
+ "\tlsls r1, r6, 8\n"
+ "\tldr r0, [r4]\n"
+ "\tadds r0, r1\n"
+ "\tstm r2!, {r0}\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0xD\n"
+ "\tble _0804C7CE\n"
+ "\tldr r1, _0804C7F8 @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804C7E8: .4byte sTradeMenuResourcesPtr\n"
+ "_0804C7EC: .4byte 0x000010f0\n"
+ "_0804C7F0: .4byte sSpriteTextTileBuffer\n"
+ "_0804C7F4: .4byte sSpriteTextTilePtrs\n"
+ "_0804C7F8: .4byte gMain\n"
+ "_0804C7FC:\n"
+ "\tldr r2, _0804C864 @ =gPaletteFade\n"
+ "\tldrb r1, [r2, 0x8]\n"
+ "\tmovs r0, 0x7F\n"
+ "\tands r0, r1\n"
+ "\tstrb r0, [r2, 0x8]\n"
+ "\tmovs r6, 0\n"
+ "\tmovs r4, 0\n"
+ "_0804C80A:\n"
+ "\tmovs r0, 0x64\n"
+ "\tmuls r0, r6\n"
+ "\tldr r1, _0804C868 @ =gEnemyParty\n"
+ "\tadds r0, r1\n"
+ "\tstr r4, [sp]\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tstr r4, [sp, 0x8]\n"
+ "\tstr r4, [sp, 0xC]\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0x20\n"
+ "\tbl CreateMon\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tble _0804C80A\n"
+ "\tmovs r0, 0\n"
+ "\tbl PrintTradeErrorOrStatusMessage\n"
+ "\tmovs r0, 0\n"
+ "\tbl ShowBg\n"
+ "\tldr r0, _0804C86C @ =gReceivedRemoteLinkPlayers\n"
+ "\tldrb r2, [r0]\n"
+ "\tcmp r2, 0\n"
+ "\tbne _0804C8B4\n"
+ "\tldr r1, _0804C870 @ =gLinkType\n"
+ "\tldr r5, _0804C874 @ =0x00001122\n"
+ "\tadds r0, r5, 0\n"
+ "\tstrh r0, [r1]\n"
+ "\tldr r0, _0804C878 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xA8\n"
+ "\tstrb r2, [r0]\n"
+ "\tldr r0, _0804C87C @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C880\n"
+ "\tbl sub_800B1F4\n"
+ "\tbl OpenLink\n"
+ "\tbl sub_80FBB20\n"
+ "\tb _0804C892\n"
+ "\t.align 2, 0\n"
+ "_0804C864: .4byte gPaletteFade\n"
+ "_0804C868: .4byte gEnemyParty\n"
+ "_0804C86C: .4byte gReceivedRemoteLinkPlayers\n"
+ "_0804C870: .4byte gLinkType\n"
+ "_0804C874: .4byte 0x00001122\n"
+ "_0804C878: .4byte sTradeMenuResourcesPtr\n"
+ "_0804C87C: .4byte gWirelessCommType\n"
+ "_0804C880:\n"
+ "\tbl OpenLink\n"
+ "\tldr r1, _0804C8A8 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "_0804C892:\n"
+ "\tldr r0, _0804C8AC @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C89C\n"
+ "\tb _0804CEE6\n"
+ "_0804C89C:\n"
+ "\tldr r0, _0804C8B0 @ =sub_8081A90\n"
+ "\tmovs r1, 0x1\n"
+ "\tbl CreateTask\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804C8A8: .4byte gMain\n"
+ "_0804C8AC: .4byte gWirelessCommType\n"
+ "_0804C8B0: .4byte sub_8081A90\n"
+ "_0804C8B4:\n"
+ "\tldr r0, _0804C8C4 @ =gMain\n"
+ "\tmovs r1, 0x87\n"
+ "\tlsls r1, 3\n"
+ "\tadds r0, r1\n"
+ "\tmovs r1, 0x4\n"
+ "\tstrb r1, [r0]\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804C8C4: .4byte gMain\n"
+ "_0804C8C8:\n"
+ "\tldr r2, _0804C8F0 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0xA8\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r1, r0, 0\n"
+ "\tadds r1, 0xA8\n"
+ "\tldrb r0, [r1]\n"
+ "\tcmp r0, 0xB\n"
+ "\tbhi _0804C8E2\n"
+ "\tb _0804CEE6\n"
+ "_0804C8E2:\n"
+ "\tmovs r0, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r3, r2\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804C8F0: .4byte sTradeMenuResourcesPtr\n"
+ "_0804C8F4:\n"
+ "\tbl GetLinkPlayerCount_2\n"
+ "\tadds r4, r0, 0\n"
+ "\tbl GetSavedPlayerCount\n"
+ "\tlsls r4, 24\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r4, r0\n"
+ "\tbcs _0804C908\n"
+ "\tb _0804CEE6\n"
+ "_0804C908:\n"
+ "\tbl IsLinkMaster\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C940\n"
+ "\tldr r0, _0804C938 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r1, 0xA8\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1E\n"
+ "\tbhi _0804C928\n"
+ "\tb _0804CEE6\n"
+ "_0804C928:\n"
+ "\tbl CheckShouldAdvanceLinkState\n"
+ "\tldr r1, _0804C93C @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804C938: .4byte sTradeMenuResourcesPtr\n"
+ "_0804C93C: .4byte gMain\n"
+ "_0804C940:\n"
+ "\tldr r1, _0804C94C @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804C94C: .4byte gMain\n"
+ "_0804C950:\n"
+ "\tldr r0, _0804C9A0 @ =gReceivedRemoteLinkPlayers\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _0804C95A\n"
+ "\tb _0804CEE6\n"
+ "_0804C95A:\n"
+ "\tbl IsLinkPlayerDataExchangeComplete\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r0, 24\n"
+ "\tcmp r0, 0x1\n"
+ "\tbeq _0804C968\n"
+ "\tb _0804CEE6\n"
+ "_0804C968:\n"
+ "\tbl sub_80FBB4C\n"
+ "\tbl CalculatePlayerPartyCount\n"
+ "\tldr r1, _0804C9A4 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804C9A8 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xA8\n"
+ "\tstrb r2, [r0]\n"
+ "\tldr r0, _0804C9AC @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804C992\n"
+ "\tb _0804CEE6\n"
+ "_0804C992:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_80FA484\n"
+ "\tbl sub_800AB9C\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804C9A0: .4byte gReceivedRemoteLinkPlayers\n"
+ "_0804C9A4: .4byte gMain\n"
+ "_0804C9A8: .4byte sTradeMenuResourcesPtr\n"
+ "_0804C9AC: .4byte gWirelessCommType\n"
+ "_0804C9B0:\n"
+ "\tldr r0, _0804C9E0 @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C9E8\n"
+ "\tbl IsLinkRfuTaskFinished\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804C9C4\n"
+ "\tb _0804CEE6\n"
+ "_0804C9C4:\n"
+ "\tldr r1, _0804C9E4 @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tbl LoadWirelessStatusIndicatorSpriteGfx\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl CreateWirelessStatusIndicatorSprite\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804C9E0: .4byte gWirelessCommType\n"
+ "_0804C9E4: .4byte gMain\n"
+ "_0804C9E8:\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r3, r2\n"
+ "\tb _0804CEC2\n"
+ "_0804C9F0:\n"
+ "\tbl shedinja_maker_maybe\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804C9FC\n"
+ "\tb _0804CEE6\n"
+ "_0804C9FC:\n"
+ "\tbl sub_804F9D8\n"
+ "\tldr r1, _0804CA0C @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CA0C: .4byte gMain\n"
+ "_0804CA10:\n"
+ "\tbl CalculateEnemyPartyCount\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x50\n"
+ "\tmovs r1, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tldr r2, _0804CB2C @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r2]\n"
+ "\tldr r1, _0804CB30 @ =gPlayerPartyCount\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r0, 0x36\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r2]\n"
+ "\tldr r1, _0804CB34 @ =gEnemyPartyCount\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r0, 0x37\n"
+ "\tstrb r1, [r0]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x36\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbge _0804CAA8\n"
+ "\tmov r8, r2\n"
+ "\tldr r7, _0804CB38 @ =sTradeMonSpriteCoords\n"
+ "_0804CA4A:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r4, r6, 0\n"
+ "\tmuls r4, r0\n"
+ "\tldr r0, _0804CB3C @ =gPlayerParty\n"
+ "\tadds r4, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x41\n"
+ "\tbl GetMonData\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r5, 16\n"
+ "\tlsrs r5, 16\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetMonData\n"
+ "\tldrb r2, [r7]\n"
+ "\tlsls r2, 19\n"
+ "\tmovs r1, 0xE0\n"
+ "\tlsls r1, 12\n"
+ "\tadds r2, r1\n"
+ "\tasrs r2, 16\n"
+ "\tldrb r3, [r7, 0x1]\n"
+ "\tlsls r3, 19\n"
+ "\tldr r1, _0804CB40 @ =0xfff40000\n"
+ "\tadds r3, r1\n"
+ "\tasrs r3, 16\n"
+ "\tmovs r1, 0x1\n"
+ "\tstr r1, [sp]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tadds r0, r5, 0\n"
+ "\tldr r1, _0804CB44 @ =SpriteCB_MonIcon\n"
+ "\tbl CreateMonIcon\n"
+ "\tmov r2, r8\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x28\n"
+ "\tadds r1, r6\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r7, 0x2\n"
+ "\tadds r6, 0x1\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x36\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tblt _0804CA4A\n"
+ "_0804CAA8:\n"
+ "\tmovs r6, 0\n"
+ "\tldr r1, _0804CB2C @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x37\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbge _0804CB20\n"
+ "\tldr r0, _0804CB38 @ =sTradeMonSpriteCoords\n"
+ "\tmov r8, r1\n"
+ "\tadds r7, r0, 0\n"
+ "\tadds r7, 0xC\n"
+ "_0804CABE:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r4, r6, 0\n"
+ "\tmuls r4, r0\n"
+ "\tldr r0, _0804CB48 @ =gEnemyParty\n"
+ "\tadds r4, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x41\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetMonData\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r5, 16\n"
+ "\tlsrs r5, 16\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetMonData\n"
+ "\tldrb r2, [r7]\n"
+ "\tlsls r2, 19\n"
+ "\tmovs r3, 0xE0\n"
+ "\tlsls r3, 12\n"
+ "\tadds r2, r3\n"
+ "\tasrs r2, 16\n"
+ "\tldrb r3, [r7, 0x1]\n"
+ "\tlsls r3, 19\n"
+ "\tldr r1, _0804CB40 @ =0xfff40000\n"
+ "\tadds r3, r1\n"
+ "\tasrs r3, 16\n"
+ "\tmovs r1, 0x1\n"
+ "\tstr r1, [sp]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tadds r0, r5, 0\n"
+ "\tldr r1, _0804CB44 @ =SpriteCB_MonIcon\n"
+ "\tbl CreateMonIcon\n"
+ "\tmov r2, r8\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x2E\n"
+ "\tadds r1, r6\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r7, 0x2\n"
+ "\tadds r6, 0x1\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x37\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tblt _0804CABE\n"
+ "_0804CB20:\n"
+ "\tldr r1, _0804CB4C @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CB2C: .4byte sTradeMenuResourcesPtr\n"
+ "_0804CB30: .4byte gPlayerPartyCount\n"
+ "_0804CB34: .4byte gEnemyPartyCount\n"
+ "_0804CB38: .4byte sTradeMonSpriteCoords\n"
+ "_0804CB3C: .4byte gPlayerParty\n"
+ "_0804CB40: .4byte 0xfff40000\n"
+ "_0804CB44: .4byte SpriteCB_MonIcon\n"
+ "_0804CB48: .4byte gEnemyParty\n"
+ "_0804CB4C: .4byte gMain\n"
+ "_0804CB50:\n"
+ "\tbl LoadHeldItemIcons\n"
+ "\tldr r0, _0804CB70 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x36\n"
+ "\tadds r1, 0x28\n"
+ "\tmovs r2, 0\n"
+ "\tbl sub_812256C\n"
+ "\tldr r1, _0804CB74 @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CB70: .4byte sTradeMenuResourcesPtr\n"
+ "_0804CB74: .4byte gMain\n"
+ "_0804CB78:\n"
+ "\tldr r0, _0804CB94 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x36\n"
+ "\tadds r1, 0x28\n"
+ "\tmovs r2, 0x1\n"
+ "\tbl sub_812256C\n"
+ "\tldr r1, _0804CB98 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CB94: .4byte sTradeMenuResourcesPtr\n"
+ "_0804CB98: .4byte gMain\n"
+ "_0804CB9C:\n"
+ "\tldr r0, _0804CC14 @ =gSaveBlock2Ptr\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r6, _0804CC18 @ =sSpriteTextTilePtrs\n"
+ "\tldr r1, [r6]\n"
+ "\tldr r5, _0804CC1C @ =gDecompressionBuffer\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r4, 0x3\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl PSS_RenderTextToVramViaBuffer\n"
+ "\tbl GetMultiplayerId\n"
+ "\tlsls r0, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 17\n"
+ "\teors r1, r0\n"
+ "\tlsrs r1, 24\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804CC20 @ =gLinkPlayers + 8\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, [r6, 0xC]\n"
+ "\tstr r5, [sp]\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl PSS_RenderTextToVramViaBuffer\n"
+ "\tldr r4, _0804CC24 @ =sTradeUITextPtrs\n"
+ "\tldr r0, [r4]\n"
+ "\tldr r1, [r6, 0x18]\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r2, 0x2\n"
+ "\tstr r2, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl PSS_RenderTextToVramViaBuffer\n"
+ "\tldr r0, [r4, 0x4]\n"
+ "\tldr r1, [r6, 0x20]\n"
+ "\tmovs r2, 0x18\n"
+ "\tbl RenderTextToVramViaBuffer\n"
+ "\tldr r1, _0804CC28 @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804CC2C @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xA8\n"
+ "\tstrb r2, [r0]\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804CC14: .4byte gSaveBlock2Ptr\n"
+ "_0804CC18: .4byte sSpriteTextTilePtrs\n"
+ "_0804CC1C: .4byte gDecompressionBuffer\n"
+ "_0804CC20: .4byte gLinkPlayers + 8\n"
+ "_0804CC24: .4byte sTradeUITextPtrs\n"
+ "_0804CC28: .4byte gMain\n"
+ "_0804CC2C: .4byte sTradeMenuResourcesPtr\n"
+ "_0804CC30:\n"
+ "\tbl sub_804F610\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804CC3C\n"
+ "\tb _0804CEE6\n"
+ "_0804CC3C:\n"
+ "\tb _0804CEBA\n"
+ "_0804CC3E:\n"
+ "\tldr r0, _0804CCFC @ =gSaveBlock2Ptr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetStringWidth\n"
+ "\tadds r1, r0, 0\n"
+ "\tmovs r0, 0x38\n"
+ "\tsubs r0, r1\n"
+ "\tlsrs r1, r0, 31\n"
+ "\tadds r0, r1\n"
+ "\tmovs r6, 0\n"
+ "\tadd r5, sp, 0x10\n"
+ "\tldr r3, _0804CD00 @ =sTradeUnknownSpriteCoords\n"
+ "\tmov r8, r3\n"
+ "\tasrs r0, 1\n"
+ "\tldrb r7, [r3, 0x4]\n"
+ "\tadds r4, r0, r7\n"
+ "_0804CC62:\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tldr r0, _0804CD04 @ =sSpriteTemplate_Text\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldrh r0, [r5]\n"
+ "\tadds r0, r6\n"
+ "\tstrh r0, [r5]\n"
+ "\tlsls r1, r4, 16\n"
+ "\tasrs r1, 16\n"
+ "\tadd r0, sp, 0x10\n"
+ "\tmov r3, r8\n"
+ "\tldrb r2, [r3, 0x5]\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadds r4, 0x20\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x2\n"
+ "\tble _0804CC62\n"
+ "\tbl GetMultiplayerId\n"
+ "\tlsls r0, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 17\n"
+ "\teors r1, r0\n"
+ "\tlsrs r1, 24\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804CD08 @ =gLinkPlayers + 8\n"
+ "\tadds r1, r0, r1\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetStringWidth\n"
+ "\tadds r1, r0, 0\n"
+ "\tmovs r0, 0x38\n"
+ "\tsubs r0, r1\n"
+ "\tlsrs r1, r0, 31\n"
+ "\tadds r0, r1\n"
+ "\tmovs r6, 0\n"
+ "\tadd r5, sp, 0x10\n"
+ "\tldr r7, _0804CD00 @ =sTradeUnknownSpriteCoords\n"
+ "\tmov r8, r7\n"
+ "\tasrs r0, 1\n"
+ "\tmov r1, r8\n"
+ "\tldrb r1, [r1, 0x6]\n"
+ "\tadds r4, r0, r1\n"
+ "_0804CCC6:\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tldr r0, _0804CD04 @ =sSpriteTemplate_Text\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tadds r0, r6, 0x3\n"
+ "\tldrh r1, [r5]\n"
+ "\tadds r0, r1\n"
+ "\tstrh r0, [r5]\n"
+ "\tlsls r1, r4, 16\n"
+ "\tasrs r1, 16\n"
+ "\tadd r0, sp, 0x10\n"
+ "\tmov r3, r8\n"
+ "\tldrb r2, [r3, 0x7]\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadds r4, 0x20\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x2\n"
+ "\tble _0804CCC6\n"
+ "\tldr r1, _0804CD0C @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CCFC: .4byte gSaveBlock2Ptr\n"
+ "_0804CD00: .4byte sTradeUnknownSpriteCoords\n"
+ "_0804CD04: .4byte sSpriteTemplate_Text\n"
+ "_0804CD08: .4byte gLinkPlayers + 8\n"
+ "_0804CD0C: .4byte gMain\n"
+ "_0804CD10:\n"
+ "\tldr r4, _0804CDCC @ =sSpriteTemplate_Text\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tadds r0, r4, 0\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r5,r7}\n"
+ "\tstm r1!, {r2,r5,r7}\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tadds r0, 0x6\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r0, r1, 0\n"
+ "\tmovs r1, 0xD7\n"
+ "\tmovs r2, 0x97\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadd r0, sp, 0x10\n"
+ "\tldm r4!, {r3,r5,r7}\n"
+ "\tstm r0!, {r3,r5,r7}\n"
+ "\tldm r4!, {r1-r3}\n"
+ "\tstm r0!, {r1-r3}\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tadds r0, 0x7\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r0, r1, 0\n"
+ "\tmovs r1, 0xF7\n"
+ "\tmovs r2, 0x97\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tmovs r6, 0\n"
+ "\tadd r4, sp, 0x10\n"
+ "\tmovs r5, 0xC0\n"
+ "\tlsls r5, 13\n"
+ "_0804CD5C:\n"
+ "\tadd r1, sp, 0x10\n"
+ "\tldr r0, _0804CDCC @ =sSpriteTemplate_Text\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tadds r0, r6, 0\n"
+ "\tadds r0, 0x8\n"
+ "\tldrh r7, [r4]\n"
+ "\tadds r0, r7\n"
+ "\tstrh r0, [r4]\n"
+ "\tasrs r1, r5, 16\n"
+ "\tadd r0, sp, 0x10\n"
+ "\tmovs r2, 0x96\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tmovs r0, 0x80\n"
+ "\tlsls r0, 14\n"
+ "\tadds r5, r0\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tble _0804CD5C\n"
+ "\tldr r0, _0804CDD0 @ =sSpriteTemplate_TradeButtons\n"
+ "\tldr r2, _0804CDD4 @ =sTradeMonSpriteCoords\n"
+ "\tldrb r1, [r2]\n"
+ "\tlsls r1, 19\n"
+ "\tmovs r3, 0x80\n"
+ "\tlsls r3, 14\n"
+ "\tadds r1, r3\n"
+ "\tasrs r1, 16\n"
+ "\tldrb r2, [r2, 0x1]\n"
+ "\tlsls r2, 3\n"
+ "\tmovs r3, 0x2\n"
+ "\tbl CreateSprite\n"
+ "\tldr r2, _0804CDD8 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x34\n"
+ "\tmovs r3, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x35\n"
+ "\tstrb r3, [r0]\n"
+ "\tldr r1, _0804CDDC @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tmovs r0, 0\n"
+ "\tbl rbox_fill_rectangle\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804CDCC: .4byte sSpriteTemplate_Text\n"
+ "_0804CDD0: .4byte sSpriteTemplate_TradeButtons\n"
+ "_0804CDD4: .4byte sTradeMonSpriteCoords\n"
+ "_0804CDD8: .4byte sTradeMenuResourcesPtr\n"
+ "_0804CDDC: .4byte gMain\n"
+ "_0804CDE0:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804F748\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804F020\n"
+ "\tldr r2, _0804CE14 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r2]\n"
+ "\tmovs r1, 0\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r2]\n"
+ "\tstrb r1, [r0, 0x1]\n"
+ "\tbl sub_804D764\n"
+ "\tldr r1, _0804CE18 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804CE1C @ =0x00000111\n"
+ "\tbl PlayBGM\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804CE14: .4byte sTradeMenuResourcesPtr\n"
+ "_0804CE18: .4byte gMain\n"
+ "_0804CE1C: .4byte 0x00000111\n"
+ "_0804CE20:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804F748\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804F020\n"
+ "\tldr r1, _0804CE44 @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "_0804CE3A:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804D694\n"
+ "\tb _0804CEBA\n"
+ "\t.align 2, 0\n"
+ "_0804CE44: .4byte gMain\n"
+ "_0804CE48:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804D694\n"
+ "\tldr r1, _0804CE58 @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CE58: .4byte gMain\n"
+ "_0804CE5C:\n"
+ "\tmovs r0, 0x1\n"
+ "\tnegs r0, r0\n"
+ "\tmovs r1, 0\n"
+ "\tstr r1, [sp]\n"
+ "\tmovs r2, 0x10\n"
+ "\tmovs r3, 0\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tldr r1, _0804CE78 @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CE78: .4byte gMain\n"
+ "_0804CE7C:\n"
+ "\tmovs r1, 0x82\n"
+ "\tlsls r1, 5\n"
+ "\tmovs r0, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl sub_804D694\n"
+ "\tldr r1, _0804CE98 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CE98: .4byte gMain\n"
+ "_0804CE9C:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804F890\n"
+ "\tldr r1, _0804CEAC @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "\tb _0804CEC2\n"
+ "\t.align 2, 0\n"
+ "_0804CEAC: .4byte gMain\n"
+ "_0804CEB0:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804F890\n"
+ "\tbl sub_804F964\n"
+ "_0804CEBA:\n"
+ "\tldr r1, _0804CECC @ =gMain\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r2\n"
+ "_0804CEC2:\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tb _0804CEE6\n"
+ "\t.align 2, 0\n"
+ "_0804CECC: .4byte gMain\n"
+ "_0804CED0:\n"
+ "\tldr r0, _0804CF08 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804CEE6\n"
+ "\tldr r0, _0804CF0C @ =sub_804DFF0\n"
+ "\tstr r0, [r3]\n"
+ "\tldr r0, _0804CF10 @ =sub_804D638\n"
+ "\tbl SetMainCallback2\n"
+ "_0804CEE6:\n"
+ "\tbl RunTextPrinters\n"
+ "\tbl RunTasks\n"
+ "\tbl AnimateSprites\n"
+ "\tbl BuildOamBuffer\n"
+ "\tbl UpdatePaletteFade\n"
+ "\tadd sp, 0x28\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804CF08: .4byte gPaletteFade\n"
+ "_0804CF0C: .4byte sub_804DFF0\n"
+ "_0804CF10: .4byte sub_804D638");
+}
+#endif //NONMATCHING
+
+#ifdef NONMATCHING
+// Nonmatching behaviour is the same as the function above
+void sub_804CF14(void)
+{
+ int i;
+ struct SpriteTemplate temp;
+ u8 id;
+ s32 width;
+ u32 xPos;
+
+ switch (gMain.state)
+ {
+ case 0:
+ sub_804C600();
+ gMain.state++;
+ break;
+ case 1:
+ gMain.state++;
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ break;
+ case 2:
+ gMain.state++;
+ break;
+ case 3:
+ gMain.state++;
+ break;
+ case 4:
+ CalculatePlayerPartyCount();
+ gMain.state++;
+ break;
+ case 5:
+ if (gWirelessCommType != 0)
+ {
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ gMain.state++;
+ break;
+ case 6:
+ gMain.state++;
+ break;
+ case 7:
+ CalculateEnemyPartyCount();
+ sTradeMenuResourcesPtr->partyCounts[0] = gPlayerPartyCount;
+ sTradeMenuResourcesPtr->partyCounts[1] = gEnemyPartyCount;
+ ClearWindowTilemap(0);
+ sub_804F020(0);
+ sub_804F020(1);
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++)
+ {
+ sTradeMenuResourcesPtr->partyIcons[0][i] = CreateMonIcon(
+ GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL),
+ SpriteCB_MonIcon,
+ sTradeMonSpriteCoords[i][0] * 8 + 14,
+ sTradeMonSpriteCoords[i][1] * 8 - 12,
+ 1,
+ GetMonData(&gPlayerParty[i], MON_DATA_PERSONALITY),
+ TRUE
+ );
+ }
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++)
+ {
+ sTradeMenuResourcesPtr->partyIcons[1][i] = CreateMonIcon(
+ GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL),
+ SpriteCB_MonIcon,
+ sTradeMonSpriteCoords[i + 6][0] * 8 + 14,
+ sTradeMonSpriteCoords[i + 6][1] * 8 - 12,
+ 1,
+ GetMonData(&gEnemyParty[i], MON_DATA_PERSONALITY),
+ FALSE
+ );
+ }
+ gMain.state++;
+ break;
+ case 8:
+ LoadHeldItemIcons();
+ sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0);
+ gMain.state++;
+ break;
+ case 9:
+ sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1);
+ gMain.state++;
+ break;
+ case 10:
+ PSS_RenderTextToVramViaBuffer(gSaveBlock2Ptr->playerName, sSpriteTextTilePtrs[0], 0, 0, gDecompressionBuffer, 3);
+ id = GetMultiplayerId();
+ PSS_RenderTextToVramViaBuffer(gLinkPlayers[id ^ 1].name, sSpriteTextTilePtrs[3], 0, 0, gDecompressionBuffer, 3);
+ PSS_RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CANCEL], sSpriteTextTilePtrs[6], 0, 0, gDecompressionBuffer, 2);
+ RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], sSpriteTextTilePtrs[8], 24);
+ gMain.state++;
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ break;
+ case 11:
+ if (sub_804F610())
+ {
+ gMain.state++;
+ }
+ break;
+ case 12:
+ width = GetStringWidth(1, gSaveBlock2Ptr->playerName, 0);
+ xPos = (56 - width) / 2;
+ for (i = 0; i < 3; i++)
+ {
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += i;
+ CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][0] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][1], 1);
+ }
+
+ /*
+ * These three lines are a pain to match due to register alloc and
+ * pointer arithmetic misbehavior.
+ */
+ id = GetMultiplayerId();
+ id ^= 1;
+ width = GetStringWidth(1, gLinkPlayers[id].name, 0);
+ xPos = (56 - width) / 2;
+ for (i = 0; i < 3; i++)
+ {
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += i + 3;
+ CreateSprite(&temp, xPos + sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][2] + (i * 32), sTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][3], 1);
+ }
+ gMain.state++;
+ break;
+ case 13:
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += 6;
+ CreateSprite(&temp, 215, 151, 1);
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += 7;
+ CreateSprite(&temp, 247, 151, 1);
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ temp = sSpriteTemplate_Text;
+ temp.tileTag += i + 8;
+ CreateSprite(&temp, (i * 32) + 24, 150, 1);
+ }
+
+ if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6)
+ sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20();
+ else
+ sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20() + 6;
+
+ sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx = CreateSprite(&sSpriteTemplate_TradeButtons, sTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][0] * 8 + 32, sTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][1] * 8, 2);
+ gMain.state = 16;
+ break;
+ case 16:
+ sub_804D694(0);
+ gMain.state++;
+ break;
+ case 17:
+ sub_804D694(1);
+ sTradeMenuResourcesPtr->unk_0 = 0;
+ sTradeMenuResourcesPtr->unk_1 = 0;
+ sub_804D764();
+ gMain.state++;
+ break;
+ case 18:
+ gPaletteFade.bufferTransferDisabled = FALSE;
+ BlendPalettes(0xFFFFFFFF, 16, RGB_BLACK);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ gMain.state++;
+ break;
+ case 19:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ sub_804D694(2);
+ gMain.state++;
+ break;
+ case 20:
+ gMain.state++;
+ break;
+ case 21:
+ sub_804F964();
+ gMain.state++;
+ break;
+ case 22:
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(sub_804D638);
+ }
+ break;
+ }
+
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+#else
+NAKED
+void sub_804CF14(void)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tmov r7, r8\n"
+ "\tpush {r7}\n"
+ "\tsub sp, 0x24\n"
+ "\tldr r1, _0804CF38 @ =gMain\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r0, r1, r2\n"
+ "\tldrb r0, [r0]\n"
+ "\tadds r2, r1, 0\n"
+ "\tcmp r0, 0x16\n"
+ "\tbls _0804CF2E\n"
+ "\tb _0804D4D2\n"
+ "_0804CF2E:\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804CF3C @ =_0804CF40\n"
+ "\tadds r0, r1\n"
+ "\tldr r0, [r0]\n"
+ "\tmov pc, r0\n"
+ "\t.align 2, 0\n"
+ "_0804CF38: .4byte gMain\n"
+ "_0804CF3C: .4byte _0804CF40\n"
+ "\t.align 2, 0\n"
+ "_0804CF40:\n"
+ "\t.4byte _0804CF9C\n"
+ "\t.4byte _0804CFB0\n"
+ "\t.4byte _0804CFB8\n"
+ "\t.4byte _0804CFC0\n"
+ "\t.4byte _0804CFC8\n"
+ "\t.4byte _0804CFDC\n"
+ "\t.4byte _0804D004\n"
+ "\t.4byte _0804D00C\n"
+ "\t.4byte _0804D150\n"
+ "\t.4byte _0804D178\n"
+ "\t.4byte _0804D19C\n"
+ "\t.4byte _0804D230\n"
+ "\t.4byte _0804D24C\n"
+ "\t.4byte _0804D320\n"
+ "\t.4byte _0804D4D2\n"
+ "\t.4byte _0804D4D2\n"
+ "\t.4byte _0804D414\n"
+ "\t.4byte _0804D41C\n"
+ "\t.4byte _0804D444\n"
+ "\t.4byte _0804D480\n"
+ "\t.4byte _0804D4A0\n"
+ "\t.4byte _0804D4A8\n"
+ "\t.4byte _0804D4C0\n"
+ "_0804CF9C:\n"
+ "\tbl sub_804C600\n"
+ "\tldr r1, _0804CFAC @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804CFAC: .4byte gMain\n"
+ "_0804CFB0:\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r2, r5\n"
+ "\tb _0804D200\n"
+ "_0804CFB8:\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r2, r7\n"
+ "\tb _0804D4B4\n"
+ "_0804CFC0:\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r2, r0\n"
+ "\tb _0804D4B4\n"
+ "_0804CFC8:\n"
+ "\tbl CalculatePlayerPartyCount\n"
+ "\tldr r1, _0804CFD8 @ =gMain\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r2\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804CFD8: .4byte gMain\n"
+ "_0804CFDC:\n"
+ "\tldr r0, _0804CFFC @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804CFF0\n"
+ "\tbl LoadWirelessStatusIndicatorSpriteGfx\n"
+ "\tmovs r0, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl CreateWirelessStatusIndicatorSprite\n"
+ "_0804CFF0:\n"
+ "\tldr r1, _0804D000 @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804CFFC: .4byte gWirelessCommType\n"
+ "_0804D000: .4byte gMain\n"
+ "_0804D004:\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r2, r5\n"
+ "\tb _0804D4B4\n"
+ "_0804D00C:\n"
+ "\tbl CalculateEnemyPartyCount\n"
+ "\tldr r4, _0804D12C @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r4]\n"
+ "\tldr r1, _0804D130 @ =gPlayerPartyCount\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r0, 0x36\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r4]\n"
+ "\tldr r1, _0804D134 @ =gEnemyPartyCount\n"
+ "\tldrb r1, [r1]\n"
+ "\tadds r0, 0x37\n"
+ "\tstrb r1, [r0]\n"
+ "\tmovs r0, 0\n"
+ "\tbl ClearWindowTilemap\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804F020\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804F020\n"
+ "\tmovs r6, 0\n"
+ "\tldr r0, [r4]\n"
+ "\tadds r0, 0x36\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbge _0804D0A8\n"
+ "\tmov r8, r4\n"
+ "\tldr r7, _0804D138 @ =sTradeMonSpriteCoords\n"
+ "_0804D048:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r4, r6, 0\n"
+ "\tmuls r4, r0\n"
+ "\tldr r0, _0804D13C @ =gPlayerParty\n"
+ "\tadds r4, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x41\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetMonData\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r5, 16\n"
+ "\tlsrs r5, 16\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetMonData\n"
+ "\tldrb r2, [r7]\n"
+ "\tlsls r2, 19\n"
+ "\tmovs r1, 0xE0\n"
+ "\tlsls r1, 12\n"
+ "\tadds r2, r1\n"
+ "\tasrs r2, 16\n"
+ "\tldrb r3, [r7, 0x1]\n"
+ "\tlsls r3, 19\n"
+ "\tldr r1, _0804D140 @ =0xfff40000\n"
+ "\tadds r3, r1\n"
+ "\tasrs r3, 16\n"
+ "\tmovs r1, 0x1\n"
+ "\tstr r1, [sp]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tstr r1, [sp, 0x8]\n"
+ "\tadds r0, r5, 0\n"
+ "\tldr r1, _0804D144 @ =SpriteCB_MonIcon\n"
+ "\tbl CreateMonIcon\n"
+ "\tmov r2, r8\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x28\n"
+ "\tadds r1, r6\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r7, 0x2\n"
+ "\tadds r6, 0x1\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x36\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tblt _0804D048\n"
+ "_0804D0A8:\n"
+ "\tmovs r6, 0\n"
+ "\tldr r1, _0804D12C @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x37\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbge _0804D120\n"
+ "\tldr r0, _0804D138 @ =sTradeMonSpriteCoords\n"
+ "\tmov r8, r1\n"
+ "\tadds r7, r0, 0\n"
+ "\tadds r7, 0xC\n"
+ "_0804D0BE:\n"
+ "\tmovs r0, 0x64\n"
+ "\tadds r4, r6, 0\n"
+ "\tmuls r4, r0\n"
+ "\tldr r0, _0804D148 @ =gEnemyParty\n"
+ "\tadds r4, r0\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x41\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetMonData\n"
+ "\tadds r5, r0, 0\n"
+ "\tlsls r5, 16\n"
+ "\tlsrs r5, 16\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tbl GetMonData\n"
+ "\tldrb r2, [r7]\n"
+ "\tlsls r2, 19\n"
+ "\tmovs r3, 0xE0\n"
+ "\tlsls r3, 12\n"
+ "\tadds r2, r3\n"
+ "\tasrs r2, 16\n"
+ "\tldrb r3, [r7, 0x1]\n"
+ "\tlsls r3, 19\n"
+ "\tldr r1, _0804D140 @ =0xfff40000\n"
+ "\tadds r3, r1\n"
+ "\tasrs r3, 16\n"
+ "\tmovs r1, 0x1\n"
+ "\tstr r1, [sp]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp, 0x8]\n"
+ "\tadds r0, r5, 0\n"
+ "\tldr r1, _0804D144 @ =SpriteCB_MonIcon\n"
+ "\tbl CreateMonIcon\n"
+ "\tmov r2, r8\n"
+ "\tldr r1, [r2]\n"
+ "\tadds r1, 0x2E\n"
+ "\tadds r1, r6\n"
+ "\tstrb r0, [r1]\n"
+ "\tadds r7, 0x2\n"
+ "\tadds r6, 0x1\n"
+ "\tldr r0, [r2]\n"
+ "\tadds r0, 0x37\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tblt _0804D0BE\n"
+ "_0804D120:\n"
+ "\tldr r1, _0804D14C @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804D12C: .4byte sTradeMenuResourcesPtr\n"
+ "_0804D130: .4byte gPlayerPartyCount\n"
+ "_0804D134: .4byte gEnemyPartyCount\n"
+ "_0804D138: .4byte sTradeMonSpriteCoords\n"
+ "_0804D13C: .4byte gPlayerParty\n"
+ "_0804D140: .4byte 0xfff40000\n"
+ "_0804D144: .4byte SpriteCB_MonIcon\n"
+ "_0804D148: .4byte gEnemyParty\n"
+ "_0804D14C: .4byte gMain\n"
+ "_0804D150:\n"
+ "\tbl LoadHeldItemIcons\n"
+ "\tldr r0, _0804D170 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x36\n"
+ "\tadds r1, 0x28\n"
+ "\tmovs r2, 0\n"
+ "\tbl sub_812256C\n"
+ "\tldr r1, _0804D174 @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804D170: .4byte sTradeMenuResourcesPtr\n"
+ "_0804D174: .4byte gMain\n"
+ "_0804D178:\n"
+ "\tldr r0, _0804D194 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r1, [r0]\n"
+ "\tadds r0, r1, 0\n"
+ "\tadds r0, 0x36\n"
+ "\tadds r1, 0x28\n"
+ "\tmovs r2, 0x1\n"
+ "\tbl sub_812256C\n"
+ "\tldr r1, _0804D198 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r7\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804D194: .4byte sTradeMenuResourcesPtr\n"
+ "_0804D198: .4byte gMain\n"
+ "_0804D19C:\n"
+ "\tldr r0, _0804D214 @ =gSaveBlock2Ptr\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r6, _0804D218 @ =sSpriteTextTilePtrs\n"
+ "\tldr r1, [r6]\n"
+ "\tldr r5, _0804D21C @ =gDecompressionBuffer\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r4, 0x3\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl PSS_RenderTextToVramViaBuffer\n"
+ "\tbl GetMultiplayerId\n"
+ "\tlsls r0, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 17\n"
+ "\teors r1, r0\n"
+ "\tlsrs r1, 24\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804D220 @ =gLinkPlayers + 8\n"
+ "\tadds r0, r1\n"
+ "\tldr r1, [r6, 0xC]\n"
+ "\tstr r5, [sp]\n"
+ "\tstr r4, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl PSS_RenderTextToVramViaBuffer\n"
+ "\tldr r4, _0804D224 @ =sTradeUITextPtrs\n"
+ "\tldr r0, [r4]\n"
+ "\tldr r1, [r6, 0x18]\n"
+ "\tstr r5, [sp]\n"
+ "\tmovs r2, 0x2\n"
+ "\tstr r2, [sp, 0x4]\n"
+ "\tmovs r2, 0\n"
+ "\tmovs r3, 0\n"
+ "\tbl PSS_RenderTextToVramViaBuffer\n"
+ "\tldr r0, [r4, 0x4]\n"
+ "\tldr r1, [r6, 0x20]\n"
+ "\tmovs r2, 0x18\n"
+ "\tbl RenderTextToVramViaBuffer\n"
+ "\tldr r1, _0804D228 @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "_0804D200:\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804D22C @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0xA8\n"
+ "\tstrb r2, [r0]\n"
+ "\tb _0804D4D2\n"
+ "\t.align 2, 0\n"
+ "_0804D214: .4byte gSaveBlock2Ptr\n"
+ "_0804D218: .4byte sSpriteTextTilePtrs\n"
+ "_0804D21C: .4byte gDecompressionBuffer\n"
+ "_0804D220: .4byte gLinkPlayers + 8\n"
+ "_0804D224: .4byte sTradeUITextPtrs\n"
+ "_0804D228: .4byte gMain\n"
+ "_0804D22C: .4byte sTradeMenuResourcesPtr\n"
+ "_0804D230:\n"
+ "\tbl sub_804F610\n"
+ "\tlsls r0, 24\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804D23C\n"
+ "\tb _0804D4D2\n"
+ "_0804D23C:\n"
+ "\tldr r1, _0804D248 @ =gMain\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r2\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804D248: .4byte gMain\n"
+ "_0804D24C:\n"
+ "\tldr r0, _0804D30C @ =gSaveBlock2Ptr\n"
+ "\tldr r1, [r0]\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetStringWidth\n"
+ "\tadds r1, r0, 0\n"
+ "\tmovs r0, 0x38\n"
+ "\tsubs r0, r1\n"
+ "\tlsrs r1, r0, 31\n"
+ "\tadds r0, r1\n"
+ "\tmovs r6, 0\n"
+ "\tadd r5, sp, 0xC\n"
+ "\tldr r3, _0804D310 @ =sTradeUnknownSpriteCoords\n"
+ "\tmov r8, r3\n"
+ "\tasrs r0, 1\n"
+ "\tldrb r7, [r3, 0x4]\n"
+ "\tadds r4, r0, r7\n"
+ "_0804D270:\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tldr r0, _0804D314 @ =sSpriteTemplate_Text\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldrh r0, [r5]\n"
+ "\tadds r0, r6\n"
+ "\tstrh r0, [r5]\n"
+ "\tlsls r1, r4, 16\n"
+ "\tasrs r1, 16\n"
+ "\tadd r0, sp, 0xC\n"
+ "\tmov r3, r8\n"
+ "\tldrb r2, [r3, 0x5]\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadds r4, 0x20\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x2\n"
+ "\tble _0804D270\n"
+ "\tbl GetMultiplayerId\n"
+ "\tlsls r0, 24\n"
+ "\tmovs r1, 0x80\n"
+ "\tlsls r1, 17\n"
+ "\teors r1, r0\n"
+ "\tlsrs r1, 24\n"
+ "\tlsls r0, r1, 3\n"
+ "\tsubs r0, r1\n"
+ "\tlsls r0, 2\n"
+ "\tldr r1, _0804D318 @ =gLinkPlayers + 8\n"
+ "\tadds r1, r0, r1\n"
+ "\tmovs r0, 0x1\n"
+ "\tmovs r2, 0\n"
+ "\tbl GetStringWidth\n"
+ "\tadds r1, r0, 0\n"
+ "\tmovs r0, 0x38\n"
+ "\tsubs r0, r1\n"
+ "\tlsrs r1, r0, 31\n"
+ "\tadds r0, r1\n"
+ "\tmovs r6, 0\n"
+ "\tadd r5, sp, 0xC\n"
+ "\tldr r7, _0804D310 @ =sTradeUnknownSpriteCoords\n"
+ "\tmov r8, r7\n"
+ "\tasrs r0, 1\n"
+ "\tmov r1, r8\n"
+ "\tldrb r1, [r1, 0x6]\n"
+ "\tadds r4, r0, r1\n"
+ "_0804D2D4:\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tldr r0, _0804D314 @ =sSpriteTemplate_Text\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tadds r0, r6, 0x3\n"
+ "\tldrh r1, [r5]\n"
+ "\tadds r0, r1\n"
+ "\tstrh r0, [r5]\n"
+ "\tlsls r1, r4, 16\n"
+ "\tasrs r1, 16\n"
+ "\tadd r0, sp, 0xC\n"
+ "\tmov r3, r8\n"
+ "\tldrb r2, [r3, 0x7]\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadds r4, 0x20\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x2\n"
+ "\tble _0804D2D4\n"
+ "\tldr r1, _0804D31C @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804D30C: .4byte gSaveBlock2Ptr\n"
+ "_0804D310: .4byte sTradeUnknownSpriteCoords\n"
+ "_0804D314: .4byte sSpriteTemplate_Text\n"
+ "_0804D318: .4byte gLinkPlayers + 8\n"
+ "_0804D31C: .4byte gMain\n"
+ "_0804D320:\n"
+ "\tldr r4, _0804D3B0 @ =sSpriteTemplate_Text\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tadds r0, r4, 0\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r5,r7}\n"
+ "\tstm r1!, {r2,r5,r7}\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tadds r0, 0x6\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r0, r1, 0\n"
+ "\tmovs r1, 0xD7\n"
+ "\tmovs r2, 0x97\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tadd r0, sp, 0xC\n"
+ "\tldm r4!, {r3,r5,r7}\n"
+ "\tstm r0!, {r3,r5,r7}\n"
+ "\tldm r4!, {r1-r3}\n"
+ "\tstm r0!, {r1-r3}\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tadds r0, r1, 0\n"
+ "\tldrh r0, [r0]\n"
+ "\tadds r0, 0x7\n"
+ "\tstrh r0, [r1]\n"
+ "\tadds r0, r1, 0\n"
+ "\tmovs r1, 0xF7\n"
+ "\tmovs r2, 0x97\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tmovs r6, 0\n"
+ "\tadd r4, sp, 0xC\n"
+ "\tmovs r5, 0xC0\n"
+ "\tlsls r5, 13\n"
+ "_0804D36C:\n"
+ "\tadd r1, sp, 0xC\n"
+ "\tldr r0, _0804D3B0 @ =sSpriteTemplate_Text\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tldm r0!, {r2,r3,r7}\n"
+ "\tstm r1!, {r2,r3,r7}\n"
+ "\tadds r0, r6, 0\n"
+ "\tadds r0, 0x8\n"
+ "\tldrh r7, [r4]\n"
+ "\tadds r0, r7\n"
+ "\tstrh r0, [r4]\n"
+ "\tasrs r1, r5, 16\n"
+ "\tadd r0, sp, 0xC\n"
+ "\tmovs r2, 0x96\n"
+ "\tmovs r3, 0x1\n"
+ "\tbl CreateSprite\n"
+ "\tmovs r0, 0x80\n"
+ "\tlsls r0, 14\n"
+ "\tadds r5, r0\n"
+ "\tadds r6, 0x1\n"
+ "\tcmp r6, 0x5\n"
+ "\tble _0804D36C\n"
+ "\tldr r4, _0804D3B4 @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r4]\n"
+ "\tadds r0, 0x35\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0x5\n"
+ "\tbhi _0804D3B8\n"
+ "\tbl sub_8138B20\n"
+ "\tldr r1, [r4]\n"
+ "\tb _0804D3C0\n"
+ "\t.align 2, 0\n"
+ "_0804D3B0: .4byte sSpriteTemplate_Text\n"
+ "_0804D3B4: .4byte sTradeMenuResourcesPtr\n"
+ "_0804D3B8:\n"
+ "\tbl sub_8138B20\n"
+ "\tldr r1, [r4]\n"
+ "\tadds r0, 0x6\n"
+ "_0804D3C0:\n"
+ "\tadds r1, 0x35\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804D404 @ =sSpriteTemplate_TradeButtons\n"
+ "\tldr r3, _0804D408 @ =sTradeMonSpriteCoords\n"
+ "\tldr r4, _0804D40C @ =sTradeMenuResourcesPtr\n"
+ "\tldr r1, [r4]\n"
+ "\tadds r1, 0x35\n"
+ "\tldrb r2, [r1]\n"
+ "\tlsls r2, 1\n"
+ "\tadds r1, r2, r3\n"
+ "\tldrb r1, [r1]\n"
+ "\tlsls r1, 19\n"
+ "\tmovs r5, 0x80\n"
+ "\tlsls r5, 14\n"
+ "\tadds r1, r5\n"
+ "\tasrs r1, 16\n"
+ "\tadds r3, 0x1\n"
+ "\tadds r2, r3\n"
+ "\tldrb r2, [r2]\n"
+ "\tlsls r2, 3\n"
+ "\tmovs r3, 0x2\n"
+ "\tbl CreateSprite\n"
+ "\tldr r1, [r4]\n"
+ "\tadds r1, 0x34\n"
+ "\tstrb r0, [r1]\n"
+ "\tldr r0, _0804D410 @ =gMain\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r0, r7\n"
+ "\tmovs r1, 0x10\n"
+ "\tstrb r1, [r0]\n"
+ "\tb _0804D4D2\n"
+ "\t.align 2, 0\n"
+ "_0804D404: .4byte sSpriteTemplate_TradeButtons\n"
+ "_0804D408: .4byte sTradeMonSpriteCoords\n"
+ "_0804D40C: .4byte sTradeMenuResourcesPtr\n"
+ "_0804D410: .4byte gMain\n"
+ "_0804D414:\n"
+ "\tmovs r0, 0\n"
+ "\tbl sub_804D694\n"
+ "\tb _0804D4AC\n"
+ "_0804D41C:\n"
+ "\tmovs r0, 0x1\n"
+ "\tbl sub_804D694\n"
+ "\tldr r2, _0804D43C @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r2]\n"
+ "\tmovs r1, 0\n"
+ "\tstrb r1, [r0]\n"
+ "\tldr r0, [r2]\n"
+ "\tstrb r1, [r0, 0x1]\n"
+ "\tbl sub_804D764\n"
+ "\tldr r1, _0804D440 @ =gMain\n"
+ "\tmovs r2, 0x87\n"
+ "\tlsls r2, 3\n"
+ "\tadds r1, r2\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804D43C: .4byte sTradeMenuResourcesPtr\n"
+ "_0804D440: .4byte gMain\n"
+ "_0804D444:\n"
+ "\tldr r2, _0804D478 @ =gPaletteFade\n"
+ "\tldrb r1, [r2, 0x8]\n"
+ "\tmovs r0, 0x7F\n"
+ "\tands r0, r1\n"
+ "\tstrb r0, [r2, 0x8]\n"
+ "\tmovs r4, 0x1\n"
+ "\tnegs r4, r4\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0x10\n"
+ "\tmovs r2, 0\n"
+ "\tbl BlendPalettes\n"
+ "\tmovs r0, 0\n"
+ "\tstr r0, [sp]\n"
+ "\tadds r0, r4, 0\n"
+ "\tmovs r1, 0\n"
+ "\tmovs r2, 0x10\n"
+ "\tmovs r3, 0\n"
+ "\tbl BeginNormalPaletteFade\n"
+ "\tldr r1, _0804D47C @ =gMain\n"
+ "\tmovs r3, 0x87\n"
+ "\tlsls r3, 3\n"
+ "\tadds r1, r3\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804D478: .4byte gPaletteFade\n"
+ "_0804D47C: .4byte gMain\n"
+ "_0804D480:\n"
+ "\tmovs r1, 0x82\n"
+ "\tlsls r1, 5\n"
+ "\tmovs r0, 0\n"
+ "\tbl SetGpuReg\n"
+ "\tmovs r0, 0x2\n"
+ "\tbl sub_804D694\n"
+ "\tldr r1, _0804D49C @ =gMain\n"
+ "\tmovs r5, 0x87\n"
+ "\tlsls r5, 3\n"
+ "\tadds r1, r5\n"
+ "\tb _0804D4B4\n"
+ "\t.align 2, 0\n"
+ "_0804D49C: .4byte gMain\n"
+ "_0804D4A0:\n"
+ "\tmovs r7, 0x87\n"
+ "\tlsls r7, 3\n"
+ "\tadds r1, r2, r7\n"
+ "\tb _0804D4B4\n"
+ "_0804D4A8:\n"
+ "\tbl sub_804F964\n"
+ "_0804D4AC:\n"
+ "\tldr r1, _0804D4BC @ =gMain\n"
+ "\tmovs r0, 0x87\n"
+ "\tlsls r0, 3\n"
+ "\tadds r1, r0\n"
+ "_0804D4B4:\n"
+ "\tldrb r0, [r1]\n"
+ "\tadds r0, 0x1\n"
+ "\tstrb r0, [r1]\n"
+ "\tb _0804D4D2\n"
+ "\t.align 2, 0\n"
+ "_0804D4BC: .4byte gMain\n"
+ "_0804D4C0:\n"
+ "\tldr r0, _0804D4F0 @ =gPaletteFade\n"
+ "\tldrb r1, [r0, 0x7]\n"
+ "\tmovs r0, 0x80\n"
+ "\tands r0, r1\n"
+ "\tcmp r0, 0\n"
+ "\tbne _0804D4D2\n"
+ "\tldr r0, _0804D4F4 @ =sub_804D638\n"
+ "\tbl SetMainCallback2\n"
+ "_0804D4D2:\n"
+ "\tbl RunTasks\n"
+ "\tbl AnimateSprites\n"
+ "\tbl BuildOamBuffer\n"
+ "\tbl UpdatePaletteFade\n"
+ "\tadd sp, 0x24\n"
+ "\tpop {r3}\n"
+ "\tmov r8, r3\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804D4F0: .4byte gPaletteFade\n"
+ "_0804D4F4: .4byte sub_804D638");
+}
+#endif //NONMATCHING
+
+static void sub_804D4F8(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void sub_804D50C(void)
+{
+ if (++sTradeMenuResourcesPtr->unk_A8 >= 16)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sTradeMenuResourcesPtr->unk_6F = 10;
+ }
+}
+
+static void sub_804D548(void)
+{
+ if (!gPaletteFade.active)
+ {
+ gSelectedTradeMonPositions[0] = sTradeMenuResourcesPtr->tradeMenuCursorPosition;
+ gSelectedTradeMonPositions[1] = sTradeMenuResourcesPtr->unk_7E;
+ if (gWirelessCommType != 0)
+ {
+ sTradeMenuResourcesPtr->unk_6F = 16;
+ }
+ else
+ {
+ sub_800AA80(32);
+ sTradeMenuResourcesPtr->unk_6F = 13;
+ }
+ }
+}
+
+static void sub_804D5A4(void)
+{
+ gMain.savedCallback = CB2_ReturnFromLinkTrade;
+ if (gWirelessCommType != 0)
+ {
+ if (IsLinkRfuTaskFinished())
+ {
+ Free(sSpriteTextTileBuffer);
+ FreeAllWindowBuffers();
+ Free(sTradeMenuResourcesPtr);
+ gMain.callback1 = NULL;
+ DestroyWirelessStatusIndicatorSprite();
+ SetMainCallback2(CB2_InitTradeAnim_LinkTrade);
+ }
+ }
+ else
+ {
+ if (gReceivedRemoteLinkPlayers == 0)
+ {
+ Free(sSpriteTextTileBuffer);
+ FreeAllWindowBuffers();
+ Free(sTradeMenuResourcesPtr);
+ gMain.callback1 = NULL;
+ SetMainCallback2(CB2_InitTradeAnim_LinkTrade);
+ }
+ }
+}
+
+static void sub_804D638(void)
+{
+ RunTradeMenuCallback();
+ RunScheduledLinkTasks();
+ sub_804EAE4(0);
+ sub_804EAE4(1);
+ SetGpuReg(REG_OFFSET_BG2HOFS, sTradeMenuResourcesPtr->unk_0++);
+ SetGpuReg(REG_OFFSET_BG3HOFS, sTradeMenuResourcesPtr->unk_1--);
+ RunTextPrinters_CheckPrinter0Active();
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_804D694(u8 state)
+{
+ int i;
+
+ switch (state)
+ {
+ case 0:
+ LoadPalette(gTradeMenu_Pal, 0x00, 0x60);
+ LoadBgTiles(1, gTradeMenu_Gfx, 0x1280, 0);
+ CopyToBgTilemapBufferRect_ChangePalette(1, gUnknown_8E9E9FC, 0, 0, 32, 20, 0);
+ LoadBgTilemap(2, sTradeStripesBG2Tilemap, 0x800, 0);
+ break;
+ case 1:
+ LoadBgTilemap(3, sTradeStripesBG3Tilemap, 0x800, 0);
+ sub_804F284(0);
+ sub_804F284(1);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 2:
+ for (i = 0; i < 4; i++)
+ {
+ // BG0 and BG1 coords only
+ SetGpuReg(REG_OFFSET_BG0HOFS + 2 * i, 0);
+ }
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ break;
+ }
+}
+
+static void sub_804D764(void)
+{
+ int i;
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ if (i < sTradeMenuResourcesPtr->partyCounts[0])
+ {
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][i]].invisible = FALSE;
+ sTradeMenuResourcesPtr->tradeMenuOptionsActive[i] = TRUE;
+ }
+ else
+ {
+ sTradeMenuResourcesPtr->tradeMenuOptionsActive[i] = FALSE;
+ }
+ if (i < sTradeMenuResourcesPtr->partyCounts[1])
+ {
+ gSprites[sTradeMenuResourcesPtr->partyIcons[1][i]].invisible = FALSE;
+ sTradeMenuResourcesPtr->tradeMenuOptionsActive[i + 6] = TRUE;
+ }
+ else
+ {
+ sTradeMenuResourcesPtr->tradeMenuOptionsActive[i + 6] = FALSE;
+ }
+ }
+ sTradeMenuResourcesPtr->tradeMenuOptionsActive[12] = TRUE;
+}
+
+static void Trade_Memcpy(void *dest, const void *src, size_t size)
+{
+ int i;
+ char *_dest = dest;
+ const char *_src = src;
+ for (i = 0; i < size; i++)
+ _dest[i] = _src[i];
+}
+
+static bool8 shedinja_maker_maybe(void)
+{
+ u8 id = GetMultiplayerId();
+ int i;
+ struct Pokemon * mon;
+
+ switch (sTradeMenuResourcesPtr->unk_69)
+ {
+ case 0:
+ Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[0], 2 * sizeof(struct Pokemon));
+ sTradeMenuResourcesPtr->unk_69++;
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ break;
+ case 1:
+ if (IsLinkTaskFinished())
+ {
+ if (GetBlockReceivedStatus() == 0)
+ {
+ sTradeMenuResourcesPtr->unk_69++;
+ }
+ else
+ {
+ ResetBlockReceivedFlags();
+ sTradeMenuResourcesPtr->unk_69++;
+ }
+ }
+ break;
+ case 3:
+ if (id == 0)
+ {
+ sub_800A474(1);
+ }
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 4:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ Trade_Memcpy(&gEnemyParty[0], gBlockRecvBuffer[id ^ 1], 2 * sizeof(struct Pokemon));
+ ResetBlockReceivedFlags();
+ sTradeMenuResourcesPtr->unk_69++;
+ }
+ break;
+ case 5:
+ Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[2], 2 * sizeof(struct Pokemon));
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 7:
+ if (id == 0)
+ {
+ sub_800A474(1);
+ }
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 8:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ Trade_Memcpy(&gEnemyParty[2], gBlockRecvBuffer[id ^ 1], 200);
+ ResetBlockReceivedFlags();
+ sTradeMenuResourcesPtr->unk_69++;
+ }
+ break;
+ case 9:
+ Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[4], 200);
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 11:
+ if (id == 0)
+ {
+ sub_800A474(1);
+ }
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 12:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ Trade_Memcpy(&gEnemyParty[4], gBlockRecvBuffer[id ^ 1], 200);
+ ResetBlockReceivedFlags();
+ sTradeMenuResourcesPtr->unk_69++;
+ }
+ break;
+ case 13:
+ Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, 220);
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 15:
+ if (id == 0)
+ {
+ sub_800A474(3);
+ }
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 16:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ Trade_Memcpy(gLinkPartnerMail, gBlockRecvBuffer[id ^ 1], 216);
+ ResetBlockReceivedFlags();
+ sTradeMenuResourcesPtr->unk_69++;
+ }
+ break;
+ case 17:
+ Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->giftRibbons, 11);
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 19:
+ if (id == 0)
+ {
+ sub_800A474(4);
+ }
+ sTradeMenuResourcesPtr->unk_69++;
+ break;
+ case 20:
+ if (GetBlockReceivedStatus() == 3)
+ {
+ Trade_Memcpy(sTradeMenuResourcesPtr->unk_A9, gBlockRecvBuffer[id ^ 1], 11);
+ ResetBlockReceivedFlags();
+ sTradeMenuResourcesPtr->unk_69++;
+ }
+ break;
+ case 21:
+ for (i = 0, mon = gEnemyParty; i < PARTY_SIZE; mon++, i++)
+ {
+ u8 name[POKEMON_NAME_LENGTH + 1];
+ u16 species = GetMonData(mon, MON_DATA_SPECIES);
+
+ if (species != SPECIES_NONE)
+ {
+ if (species == SPECIES_SHEDINJA && GetMonData(mon, MON_DATA_LANGUAGE) != LANGUAGE_JAPANESE)
+ {
+ GetMonData(mon, MON_DATA_NICKNAME, name);
+
+ if (!StringCompareWithoutExtCtrlCodes(name, gJPText_Shedinja))
+ {
+ SetMonData(mon, MON_DATA_NICKNAME, gSpeciesNames[SPECIES_SHEDINJA]);
+ }
+ }
+ }
+ }
+ return TRUE;
+ case 2:
+ case 6:
+ case 10:
+ case 14:
+ case 18:
+ sTradeMenuResourcesPtr->unk_A8++;
+ if (sTradeMenuResourcesPtr->unk_A8 > 10)
+ {
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ sTradeMenuResourcesPtr->unk_69++;
+ }
+ break;
+ }
+ return FALSE;
+}
+
+static void sub_804DBAC(void)
+{
+ RenderTextToVramViaBuffer(gUnknown_841E0A5, (u8 *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 0x18);
+}
+
+static void sub_804DBD4(u8 a0, u8 a1)
+{
+ if (a1 & 1)
+ {
+ switch (gBlockRecvBuffer[0][0])
+ {
+ case 0xEEAA:
+ sTradeMenuResourcesPtr->unk_78 = 2;
+ break;
+ case 0xAABB:
+ sTradeMenuResourcesPtr->unk_78 = 1;
+ break;
+ case 0xBBBB:
+ sTradeMenuResourcesPtr->unk_7A = 1;
+ break;
+ case 0xBBCC:
+ sTradeMenuResourcesPtr->unk_7A = 2;
+ break;
+ }
+ ResetBlockReceivedFlag(0);
+ }
+
+ if (a1 & 2)
+ {
+ switch (gBlockRecvBuffer[1][0])
+ {
+ case 0xEEAA:
+ sTradeMenuResourcesPtr->unk_79 = 2;
+ break;
+ case 0xAABB:
+ sTradeMenuResourcesPtr->unk_7E = gBlockRecvBuffer[1][1] + 6;
+ sTradeMenuResourcesPtr->unk_79 = 1;
+ break;
+ case 0xBBBB:
+ sTradeMenuResourcesPtr->unk_7B = 1;
+ break;
+ case 0xBBCC:
+ sTradeMenuResourcesPtr->unk_7B = 2;
+ break;
+ }
+ ResetBlockReceivedFlag(1);
+ }
+}
+
+static void sub_804DCF4(u8 a0, u8 a1)
+{
+ if (a1 & 1)
+ {
+ switch (gBlockRecvBuffer[0][0])
+ {
+ case 0xEEBB:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_WAITINGFORFRIEND);
+ sTradeMenuResourcesPtr->unk_6F = 11;
+ break;
+ case 0xEECC:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_FRIENDWANTSTOTRADE);
+ sTradeMenuResourcesPtr->unk_6F = 8;
+ break;
+ case 0xDDDD:
+ sTradeMenuResourcesPtr->unk_7E = gBlockRecvBuffer[0][1] + 6;
+ rbox_fill_rectangle(0);
+ sub_804EAAC(sTradeMenuResourcesPtr->tradeMenuCursorPosition);
+ sub_804EAAC(sTradeMenuResourcesPtr->unk_7E);
+ sTradeMenuResourcesPtr->unk_6F = 7;
+ break;
+ case 0xCCDD:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sTradeMenuResourcesPtr->unk_6F = 10;
+ break;
+ case 0xDDEE:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED);
+ sTradeMenuResourcesPtr->unk_6F = 8;
+ }
+ ResetBlockReceivedFlag(0);
+ }
+
+ if (a1 & 2)
+ ResetBlockReceivedFlag(1);
+}
+
+static void sub_804DDF0(void)
+{
+ if (sTradeMenuResourcesPtr->unk_78 && sTradeMenuResourcesPtr->unk_79)
+ {
+ if (sTradeMenuResourcesPtr->unk_78 == 1 && sTradeMenuResourcesPtr->unk_79 == 1)
+ {
+ sTradeMenuResourcesPtr->unk_6F = 6;
+ sTradeMenuResourcesPtr->linkData[0] = 0xDDDD;
+ sTradeMenuResourcesPtr->linkData[1] = sTradeMenuResourcesPtr->tradeMenuCursorPosition;
+ ScheduleLinkTaskWithDelay(5, 0);
+ sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0;
+ }
+ else if (sTradeMenuResourcesPtr->unk_78 == 1 && sTradeMenuResourcesPtr->unk_79 == 2)
+ {
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED);
+ sTradeMenuResourcesPtr->linkData[0] = 0xEECC;
+ sTradeMenuResourcesPtr->linkData[1] = 0;
+ ScheduleLinkTaskWithDelay(5, 0);
+ sTradeMenuResourcesPtr->unk_7A = sTradeMenuResourcesPtr->unk_7B = 0;
+ sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0;
+ sTradeMenuResourcesPtr->unk_6F = 8;
+ }
+ else if (sTradeMenuResourcesPtr->unk_78 == 2 && sTradeMenuResourcesPtr->unk_79 == 1)
+ {
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_FRIENDWANTSTOTRADE);
+ sTradeMenuResourcesPtr->linkData[0] = 0xDDEE;
+ sTradeMenuResourcesPtr->linkData[1] = 0;
+ ScheduleLinkTaskWithDelay(5, 0);
+ sTradeMenuResourcesPtr->unk_7A = sTradeMenuResourcesPtr->unk_7B = 0;
+ sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0;
+ sTradeMenuResourcesPtr->unk_6F = 8;
+ }
+ else if (sTradeMenuResourcesPtr->unk_78 == 2 && sTradeMenuResourcesPtr->unk_79 == 2)
+ {
+ sTradeMenuResourcesPtr->linkData[0] = 0xEEBB;
+ sTradeMenuResourcesPtr->linkData[1] = 0;
+ ScheduleLinkTaskWithDelay(5, 0);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0;
+ sTradeMenuResourcesPtr->unk_6F = 11;
+ }
+ }
+
+ if (sTradeMenuResourcesPtr->unk_7A && sTradeMenuResourcesPtr->unk_7B)
+ {
+ if (sTradeMenuResourcesPtr->unk_7A == 1 && sTradeMenuResourcesPtr->unk_7B == 1)
+ {
+ sTradeMenuResourcesPtr->linkData[0] = 0xCCDD;
+ sTradeMenuResourcesPtr->linkData[1] = 0;
+ ScheduleLinkTaskWithDelay(5, 0);
+ sTradeMenuResourcesPtr->unk_7A = 0;
+ sTradeMenuResourcesPtr->unk_7B = 0;
+ sTradeMenuResourcesPtr->unk_6F = 9;
+ }
+
+ if (sTradeMenuResourcesPtr->unk_7A == 2 || sTradeMenuResourcesPtr->unk_7B == 2)
+ {
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED);
+ sTradeMenuResourcesPtr->linkData[0] = 0xDDEE;
+ sTradeMenuResourcesPtr->linkData[1] = 0;
+ ScheduleLinkTaskWithDelay(5, 0);
+ sTradeMenuResourcesPtr->unk_7A = 0;
+ sTradeMenuResourcesPtr->unk_7B = 0;
+ sTradeMenuResourcesPtr->unk_6F = 8;
+ }
+ }
+}
+
+static void sub_804DFF0(void)
+{
+ u8 mpId = GetMultiplayerId();
+ u8 status;
+ if ((status = GetBlockReceivedStatus()))
+ {
+ if (mpId == 0)
+ sub_804DBD4(0, status);
+ else
+ sub_804DCF4(mpId, status);
+ }
+ if (mpId == 0)
+ sub_804DDF0();
+}
+
+static u8 sub_804E028(u8 oldPosition, u8 direction)
+{
+ int i;
+ u8 newPosition = 0;
+
+ for (i = 0; i < 6; i++)
+ {
+ if (sTradeMenuResourcesPtr->tradeMenuOptionsActive[sCursorMoveDestinations[oldPosition][direction][i]] == TRUE)
+ {
+ newPosition = sCursorMoveDestinations[oldPosition][direction][i];
+ break;
+ }
+ }
+
+ return newPosition;
+}
+
+
+static void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction)
+{
+ u8 newPosition = sub_804E028(*tradeMenuCursorPosition, direction);
+
+ if (newPosition == 12) // CANCEL
+ {
+ StartSpriteAnim(&gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx], 1);
+ gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.x = 224;
+ gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.y = 160;
+ }
+ else
+ {
+ StartSpriteAnim(&gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx], 0);
+ gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.x = sTradeMonSpriteCoords[newPosition][0] * 8 + 32;
+ gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.y = sTradeMonSpriteCoords[newPosition][1] * 8;
+ }
+
+ if (*tradeMenuCursorPosition != newPosition)
+ {
+ PlaySE(SE_SELECT);
+ }
+
+ *tradeMenuCursorPosition = newPosition;
+}
+
+static void sub_804E134(void)
+{
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY);
+ sTradeMenuResourcesPtr->unk_6F = 5;
+
+ if (GetMultiplayerId() == 1)
+ {
+ sTradeMenuResourcesPtr->linkData[0] = 0xAABB;
+ sTradeMenuResourcesPtr->linkData[1] = sTradeMenuResourcesPtr->tradeMenuCursorPosition;
+ SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 0x14);
+ }
+ else
+ {
+ sTradeMenuResourcesPtr->unk_78 = 1;
+ }
+}
+
+static void sub_804E194(void)
+{
+ int i;
+
+ if (JOY_REPT(DPAD_UP))
+ {
+ TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 0);
+ }
+ else if (JOY_REPT(DPAD_DOWN))
+ {
+ TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 1);
+ }
+ else if (JOY_REPT(DPAD_LEFT))
+ {
+ TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 2);
+ }
+ else if (JOY_REPT(DPAD_RIGHT))
+ {
+ TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 3);
+ }
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+
+ if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) // PlayerParty
+ {
+ DrawTextBorderOuter(1, 1, 14);
+ FillWindowPixelBuffer(1, PIXEL_FILL(1));
+ UnionRoomAndTradeMenuPrintOptions(1, 3, 16, 2, gUnknown_8261EE4);
+ Menu_InitCursor(1, 3, 0, 0, 16, 2, 0);
+ PutWindowTilemap(1);
+ CopyWindowToVram(1, 3);
+ sTradeMenuResourcesPtr->unk_6F = 1;
+ }
+ else if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 12)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sTradeMenuResourcesPtr->unk_6F = 2;
+ }
+ else if (sTradeMenuResourcesPtr->tradeMenuCursorPosition == 12)
+ {
+ CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 0x001, 14, 0);
+ sTradeMenuResourcesPtr->unk_6F = 4;
+ RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_ASKCANCEL], (void *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 24);
+ }
+ }
+ if (JOY_NEW(R_BUTTON))
+ {
+ for (i = 0; i < 10; i++)
+ sTradeMenuResourcesPtr->linkData[i] = i;
+ SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
+ }
+}
+
+static void sub_804E330(void)
+{
+ sub_804F3B4();
+ sTradeMenuResourcesPtr->unk_6F = 0;
+ gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = FALSE;
+ RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], (void *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 24);
+}
+
+static void sub_804E388(void)
+{
+ switch (Menu_ProcessInputNoWrapAround())
+ {
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ sub_804E330();
+ break;
+ case MENU_NOTHING_CHOSEN:
+ break;
+ case 0:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ sTradeMenuResourcesPtr->unk_6F = 2;
+ break;
+ case 1:
+ switch (sub_804FA14(gPlayerParty, gPlayerPartyCount, sTradeMenuResourcesPtr->tradeMenuCursorPosition))
+ {
+ case 0:
+ sub_804E134();
+ gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = TRUE;
+ break;
+ case 1:
+ ScheduleLinkTaskWithDelay(3, 3);
+ sTradeMenuResourcesPtr->unk_6F = 8;
+ break;
+ case 2:
+ case 4:
+ ScheduleLinkTaskWithDelay(3, 6);
+ sTradeMenuResourcesPtr->unk_6F = 8;
+ break;
+ case 3:
+ case 5:
+ ScheduleLinkTaskWithDelay(3, 7);
+ sTradeMenuResourcesPtr->unk_6F = 8;
+ break;
+ }
+ break;
+ }
+}
+
+static void sub_804E46C(void)
+{
+ if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ sub_804E330();
+ }
+}
+
+static void sub_804E494(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6)
+ ShowPokemonSummaryScreen(gPlayerParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition, sTradeMenuResourcesPtr->partyCounts[0] - 1, sub_804CF14, 4);
+ else
+ ShowPokemonSummaryScreen(gEnemyParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition - 6, sTradeMenuResourcesPtr->partyCounts[1] - 1, sub_804CF14, 4);
+ FreeAllWindowBuffers();
+ }
+}
+
+static u8 sub_804E50C(u8 *flags, u8 partyCount, u8 cursorPos)
+{
+ s32 i;
+ u16 species;
+ u8 count = 0;
+ for (i = 0; i < partyCount; i++)
+ {
+ if (cursorPos != i)
+ count += flags[i];
+ }
+ species = GetMonData(&gEnemyParty[sTradeMenuResourcesPtr->unk_7E % 6], MON_DATA_SPECIES);
+ if ((species == SPECIES_DEOXYS || species == SPECIES_MEW) && !GetMonData(&gEnemyParty[sTradeMenuResourcesPtr->unk_7E % 6], MON_DATA_OBEDIENCE))
+ return 2;
+ if (count != 0)
+ count = 1;
+ return count;
+}
+
+static void sub_804E5A0(void)
+{
+ int i;
+ u8 arr[12];
+
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++)
+ {
+ arr[i] = sTradeMenuResourcesPtr->unk_45[0][i];
+ }
+
+ switch (sub_804E50C(arr, sTradeMenuResourcesPtr->partyCounts[0], sTradeMenuResourcesPtr->tradeMenuCursorPosition))
+ {
+ case 0:
+ ScheduleLinkTaskWithDelay(3, 3);
+ sTradeMenuResourcesPtr->linkData[0] = 0xBBCC;
+ ScheduleLinkTaskWithDelay(0xB4, 0);
+ break;
+ case 1:
+ ScheduleLinkTaskWithDelay(3, 1);
+ sTradeMenuResourcesPtr->linkData[0] = 0xBBBB;
+ if (IsLinkTaskFinished())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
+ }
+ break;
+ case 2:
+ ScheduleLinkTaskWithDelay(3, 8);
+ sTradeMenuResourcesPtr->linkData[0] = 0xBBCC;
+ ScheduleLinkTaskWithDelay(0xB4, 0);
+ break;
+ }
+}
+
+static void sub_804E674(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ sub_804E5A0();
+ sTradeMenuResourcesPtr->unk_6F = 100;
+ PutWindowTilemap(17);
+ break;
+ case 1:
+ case MENU_B_PRESSED:
+ ScheduleLinkTaskWithDelay(3, 1);
+ if (IsLinkTaskFinished())
+ {
+ sTradeMenuResourcesPtr->linkData[0] = 0xBBCC;
+ SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
+ }
+ sTradeMenuResourcesPtr->unk_6F = 100;
+ PutWindowTilemap(17);
+ break;
+ }
+}
+
+static void sub_804E6FC(void)
+{
+ int i;
+
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1] - 4; i++)
+ {
+ PutWindowTilemap(i + 12);
+ CopyWindowToVram(i + 12, 1);
+ }
+}
+
+static void sub_804E744(void)
+{
+ switch (Menu_ProcessInputNoWrapClearOnChoose())
+ {
+ case 0:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_WAITINGFORFRIEND);
+ sTradeMenuResourcesPtr->linkData[0] = 0xEEAA;
+ sTradeMenuResourcesPtr->linkData[1] = 0;
+ ScheduleLinkTaskWithDelay(5, 0);
+ gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = TRUE;
+ sTradeMenuResourcesPtr->unk_6F = 100;
+ sub_804E6FC();
+ break;
+ case 1:
+ case MENU_B_PRESSED:
+ PlaySE(SE_SELECT);
+ sub_804E330();
+ break;
+ }
+}
+
+static void sub_804E7C8(void)
+{
+ if (GetMultiplayerId() == 0)
+ {
+ rbox_fill_rectangle(0);
+ sub_804EAAC(sTradeMenuResourcesPtr->tradeMenuCursorPosition);
+ sub_804EAAC(sTradeMenuResourcesPtr->unk_7E);
+ }
+ sTradeMenuResourcesPtr->unk_6F = 7;
+}
+
+static void sub_804E804(void)
+{
+ if (sTradeMenuResourcesPtr->unk_74[0] == 5 && sTradeMenuResourcesPtr->unk_74[1] == 5)
+ {
+ sub_804DBAC();
+ sTradeMenuResourcesPtr->unk_6F = 14;
+ }
+}
+
+static void sub_804E830(void)
+{
+ sTradeMenuResourcesPtr->unk_A8++;
+
+ if (sTradeMenuResourcesPtr->unk_A8 > 120)
+ {
+ CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 1, 14, 0);
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ sTradeMenuResourcesPtr->unk_6F = 3;
+ }
+}
+
+static void sub_804E880(void)
+{
+ int i;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ rbox_fill_rectangle(0);
+ rbox_fill_rectangle(1);
+
+ for (i = 0; i < 4; i++)
+ {
+ FillWindowPixelBuffer(i + 14, PIXEL_FILL(0));
+ rbox_fill_rectangle(i + 14);
+ }
+
+ sub_804F3C8(0);
+ sub_804F3C8(1);
+ sTradeMenuResourcesPtr->unk_6F = 0;
+ gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = FALSE;
+ }
+}
+
+static void sub_804E908(void)
+{
+ if (!gPaletteFade.active)
+ {
+ if (gWirelessCommType)
+ {
+ sub_800AB9C();
+ }
+ else
+ {
+ sub_800AA80(12);
+ }
+
+ sTradeMenuResourcesPtr->unk_6F = 12;
+ }
+}
+
+static void sub_804E944(void)
+{
+ if (gWirelessCommType)
+ {
+ if (IsLinkTaskFinished())
+ {
+ Free(sSpriteTextTileBuffer);
+ Free(sTradeMenuResourcesPtr);
+ FreeAllWindowBuffers();
+ DestroyWirelessStatusIndicatorSprite();
+ SetMainCallback2(c2_8056854);
+ }
+ }
+ else
+ {
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ Free(sSpriteTextTileBuffer);
+ Free(sTradeMenuResourcesPtr);
+ FreeAllWindowBuffers();
+ SetMainCallback2(c2_8056854);
+ }
+ }
+}
+
+static void sub_804E9C0(void)
+{
+ if (!sub_80FA484(FALSE))
+ {
+ sub_800AB9C();
+ sTradeMenuResourcesPtr->unk_6F = 13;
+ }
+}
+
+static void RunTradeMenuCallback(void)
+{
+ switch (sTradeMenuResourcesPtr->unk_6F)
+ {
+ case 0:
+ sub_804E194();
+ break;
+ case 1:
+ sub_804E388();
+ break;
+ case 2:
+ sub_804E494();
+ break;
+ case 3:
+ sub_804E674();
+ break;
+ case 4:
+ sub_804E744();
+ break;
+ case 6:
+ sub_804E7C8();
+ break;
+ case 7:
+ sub_804E804();
+ break;
+ case 8:
+ sub_804E880();
+ break;
+ case 9:
+ sub_804D50C();
+ break;
+ case 10:
+ sub_804D548();
+ break;
+ case 11:
+ sub_804E908();
+ break;
+ case 12:
+ sub_804E944();
+ break;
+ case 13:
+ sub_804D5A4();
+ break;
+ case 14:
+ sub_804E830();
+ break;
+ case 15:
+ sub_804E46C();
+ break;
+ case 16:
+ sub_804E9C0();
+ break;
+ }
+}
+
+static void sub_804EAAC(u8 a0)
+{
+ u8 whichParty = a0 / PARTY_SIZE;
+
+ if (sTradeMenuResourcesPtr->unk_74[whichParty] == 0)
+ {
+ sTradeMenuResourcesPtr->unk_74[whichParty] = 1;
+ sTradeMenuResourcesPtr->unk_76[whichParty] = a0;
+ }
+}
+
+static void sub_804EAE4(u8 a0)
+{
+ s8 nameStringWidth;
+ u8 nickname[20];
+ u8 movesString[56];
+ u8 i;
+ u8 partyIdx;
+ u8 whichParty;
+ u8 monIdx = sTradeMenuResourcesPtr->unk_76[a0];
+
+ whichParty = 1;
+ if (sTradeMenuResourcesPtr->unk_76[a0] < PARTY_SIZE)
+ whichParty = 0;
+ partyIdx = monIdx % PARTY_SIZE;
+ nameStringWidth = 0;
+
+ switch (sTradeMenuResourcesPtr->unk_74[a0])
+ {
+ case 1:
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[a0]; i++)
+ {
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][i + (whichParty * PARTY_SIZE)]].invisible = TRUE;
+ }
+
+ for (i = 0; i < 6; i++)
+ {
+ ClearWindowTilemap(i + (a0 * 6 + 2));
+ }
+
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].invisible = FALSE;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[0] = 20;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[2] = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + sTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[4] = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12;
+ StoreSpriteCallbackInData6(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]], SpriteCB_MonIcon);
+ sTradeMenuResourcesPtr->unk_74[a0]++;
+ sub_8075490(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]);
+ CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, a0 * 15, 0, 15, 17, 0);
+ CopyBgTilemapBufferToVram(1);
+ CopyBgTilemapBufferToVram(0);
+
+ if (whichParty == 0)
+ sub_804F3B4();
+ break;
+ case 2:
+ if (gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].callback == SpriteCB_MonIcon)
+ sTradeMenuResourcesPtr->unk_74[a0] = 3;
+ break;
+ case 3:
+ CopyToBgTilemapBufferRect_ChangePalette(1, sTradeMovesBoxTilemap, whichParty * 15, 0, 15, 17, 0);
+ CopyBgTilemapBufferToVram(1);
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.x = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + sTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.y = (sTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.x = 0;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.y = 0;
+ nameStringWidth = sub_804EE6C(nickname, whichParty, partyIdx);
+ AddTextPrinterParameterized3((a0 * 2) + 14, 0, (80 - nameStringWidth) / 2, 4, gUnknown_8261F18, 0, nickname);
+ sub_804EED4(movesString, whichParty, partyIdx);
+ AddTextPrinterParameterized4((a0 * 2) + 15, 1, 0, 0, 0, 0, gUnknown_8261F18, 0, movesString);
+ PutWindowTilemap((a0 * 2) + 14);
+ CopyWindowToVram((a0 * 2) + 14, 3);
+ PutWindowTilemap((a0 * 2) + 15);
+ CopyWindowToVram((a0 * 2) + 15, 3);
+ sTradeMenuResourcesPtr->unk_74[a0]++;
+ break;
+ case 4:
+ sub_804F08C(a0, partyIdx, gUnknown_8262055[a0][0] + 4, gUnknown_8262055[a0][1] + 1, gUnknown_8262055[a0][0], gUnknown_8262055[a0][1]);
+ sTradeMenuResourcesPtr->unk_74[a0]++;
+ break;
+ }
+}
+
+static u8 sub_804EE6C(u8 *dest, u8 whichParty, u8 partyIdx)
+{
+ u8 nickname[11];
+ if (whichParty == 0)
+ GetMonData(&gPlayerParty[partyIdx], MON_DATA_NICKNAME, nickname);
+ else
+ GetMonData(&gEnemyParty[partyIdx], MON_DATA_NICKNAME, nickname);
+ StringCopy10(dest, nickname);
+ return GetStringWidth(0, dest, GetFontAttribute(0, FONTATTR_LETTER_SPACING));
+}
+
+static void sub_804EED4(u8 *a0, u8 a1, u8 a2)
+{
+ u16 moves[MAX_MON_MOVES];
+ u16 i;
+
+ if (!sTradeMenuResourcesPtr->unk_51[a1][a2])
+ {
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (!a1)
+ {
+ moves[i] = GetMonData(&gPlayerParty[a2], i + MON_DATA_MOVE1, NULL);
+ }
+ else
+ {
+ moves[i] = GetMonData(&gEnemyParty[a2], i + MON_DATA_MOVE1, NULL);
+ }
+ }
+
+ StringCopy(a0, gUnknown_8261EB6);
+
+ for (i = 0; i < MAX_MON_MOVES; i++)
+ {
+ if (moves[i] != MOVE_NONE)
+ {
+ StringAppend(a0, gMoveNames[moves[i]]);
+ }
+
+ StringAppend(a0, gUnknown_8261EC7);
+ }
+ }
+ else
+ {
+ StringCopy(a0, gUnknown_8261EB6);
+ StringAppend(a0, gUnknown_841E09F);
+ }
+}
+
+static void sub_804EFB4(u8 whichParty, u8 windowId, const u8 *str)
+{
+ u8 xPos;
+ s8 speed;
+ windowId += (whichParty * PARTY_SIZE) + 2;
+ speed = 0;
+ xPos = (64u - GetStringWidth(0, str, GetFontAttribute(0, FONTATTR_LETTER_SPACING))) / 2;
+ AddTextPrinterParameterized3(windowId, 0, xPos, 4, gUnknown_8261F18, speed, str);
+ PutWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 3);
+}
+
+static void sub_804F020(u8 whichParty)
+{
+ u8 buff[20];
+ u8 nickname[30];
+ struct Pokemon * party = whichParty == 0 ? gPlayerParty : gEnemyParty;
+ u8 i;
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++)
+ {
+ GetMonData(&party[i], MON_DATA_NICKNAME, buff);
+ StringCopy10(nickname, buff);
+ sub_804EFB4(whichParty, i, nickname);
+ }
+}
+
+static void sub_804F08C(u8 whichParty, u8 monIdx, u8 a2, u8 a3, u8 a4, u8 a5)
+{
+ u8 level;
+ u32 r2;
+ u8 gender;
+ u8 nickname[12];
+
+ CopyToBgTilemapBufferRect_ChangePalette(1, gTradeMenuMonBox_Tilemap, a4, a5, 6, 3, 0);
+ CopyBgTilemapBufferToVram(1);
+
+ if (whichParty == 0)
+ level = GetMonData(&gPlayerParty[monIdx], MON_DATA_LEVEL, NULL);
+ else
+ level = GetMonData(&gEnemyParty[monIdx], MON_DATA_LEVEL, NULL);
+
+ if (sTradeMenuResourcesPtr->unk_51[whichParty][monIdx] == 0)
+ {
+ if (level / 10 != 0)
+ sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32)] = (level / 10) + 0x60;
+
+ sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) + 1] = (level % 10) + 0x70;
+ }
+ else
+ {
+ sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 32] = sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 33];
+ sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 31] = sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 36] | 0x400;
+ }
+
+ if (sTradeMenuResourcesPtr->unk_51[whichParty][monIdx] != 0)
+ {
+ r2 = 0x480;
+ }
+ else
+ {
+ if (whichParty == 0)
+ {
+ gender = GetMonGender(&gPlayerParty[monIdx]);
+ GetMonData(&gPlayerParty[monIdx], MON_DATA_NICKNAME, nickname);
+ }
+ else
+ {
+ gender = GetMonGender(&gEnemyParty[monIdx]);
+ GetMonData(&gEnemyParty[monIdx], MON_DATA_NICKNAME, nickname);
+ }
+
+ switch (gender)
+ {
+ case MON_MALE:
+ r2 = !NameHasGenderSymbol(nickname, MON_MALE) ? 0x84 : 0x83;
+ break;
+ case MON_FEMALE:
+ r2 = !NameHasGenderSymbol(nickname, MON_FEMALE) ? 0x85 : 0x83;
+ break;
+ default:
+ r2 = 0x83;
+ break;
+ }
+ }
+ sTradeMenuResourcesPtr->tilemapBuffer[(a3 - 1) * 32 + a2 + 1] = r2;
+}
+
+#ifdef NONMATCHING
+// Instruction swap when setting r5 and r4
+static void sub_804F284(u8 whichParty)
+{
+ s32 i;
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++)
+ {
+ sub_804F08C(
+ whichParty,
+ i,
+ gUnknown_8261E5A[0][whichParty][i][0],
+ gUnknown_8261E5A[0][whichParty][i][1],
+ gUnknown_8261E5A[1][whichParty][i][0],
+ gUnknown_8261E5A[1][whichParty][i][1]
+ );
+ }
+}
+#else
+NAKED
+static void sub_804F284(u8 whichParty)
+{
+ asm_unified("\tpush {r4-r7,lr}\n"
+ "\tsub sp, 0x8\n"
+ "\tlsls r0, 24\n"
+ "\tlsrs r6, r0, 24\n"
+ "\tmovs r7, 0\n"
+ "\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0x36\n"
+ "\tadds r0, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tbge _0804F2D4\n"
+ "\tlsls r0, r6, 1\n"
+ "\tadds r0, r6\n"
+ "\tldr r1, _0804F2E0 @ =gUnknown_8261E5A\n"
+ "\tlsls r0, 2\n"
+ "\tadds r5, r0, r1\n"
+ "\tldr r1, _0804F2E4 @ =gUnknown_8261E5A+24\n"
+ "\tadds r4, r0, r1\n"
+ "_0804F2AA:\n"
+ "\tlsls r1, r7, 24\n"
+ "\tlsrs r1, 24\n"
+ "\tldrb r2, [r5]\n"
+ "\tldrb r3, [r5, 0x1]\n"
+ "\tldrb r0, [r4]\n"
+ "\tstr r0, [sp]\n"
+ "\tldrb r0, [r4, 0x1]\n"
+ "\tstr r0, [sp, 0x4]\n"
+ "\tadds r0, r6, 0\n"
+ "\tbl sub_804F08C\n"
+ "\tadds r5, 0x2\n"
+ "\tadds r4, 0x2\n"
+ "\tadds r7, 0x1\n"
+ "\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n"
+ "\tldr r0, [r0]\n"
+ "\tadds r0, 0x36\n"
+ "\tadds r0, r6\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r7, r0\n"
+ "\tblt _0804F2AA\n"
+ "_0804F2D4:\n"
+ "\tadd sp, 0x8\n"
+ "\tpop {r4-r7}\n"
+ "\tpop {r0}\n"
+ "\tbx r0\n"
+ "\t.align 2, 0\n"
+ "_0804F2DC: .4byte sTradeMenuResourcesPtr\n"
+ "_0804F2E0: .4byte gUnknown_8261E5A\n"
+ "_0804F2E4: .4byte gUnknown_8261E5A+24");
+}
+#endif //NONMATCHING
+
+static void sub_804F2E8(u8 whichParty)
+{
+ int i;
+
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++)
+ {
+ gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].invisible = FALSE;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos1.x = sTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][0] * 8 + 14;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos1.y = sTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][1] * 8 - 12;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos2.x = 0;
+ gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos2.y = 0;
+ }
+}
+
+static void sub_804F3B4(void)
+{
+ rbox_fill_rectangle(1);
+ sub_804F020(1);
+}
+
+static void sub_804F3C8(u8 whichParty)
+{
+ CopyToBgTilemapBufferRect_ChangePalette(1, sTradePartyBoxTilemap, 15 * whichParty, 0, 15, 17, 0);
+ CopyBgTilemapBufferToVram(1);
+ sub_804F284(whichParty);
+ sub_804F020(whichParty);
+ sub_804F2E8(whichParty);
+ RenderTextToVramViaBuffer(sTradeUITextPtrs[TRADEUITEXT_CHOOSE], (void *)OBJ_VRAM0 + 32 * sTradeMenuResourcesPtr->unk_72, 24);
+ sTradeMenuResourcesPtr->unk_74[whichParty] = 0;
+}
+
+static void TradeMenuAction_Summary(u8 taskId)
+{
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void TradeMenuAction_Trade(u8 taskId)
+{
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ CopyBgTilemapBufferToVram(0);
+}
+
+static void ScheduleLinkTaskWithDelay(u16 delay, u8 kind)
+{
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ if (!sTradeMenuResourcesPtr->cron[i].active)
+ {
+ sTradeMenuResourcesPtr->cron[i].delay = delay;
+ sTradeMenuResourcesPtr->cron[i].kind = kind;
+ sTradeMenuResourcesPtr->cron[i].active = TRUE;
+ break;
+ }
+ }
+}
+
+static void RunScheduledLinkTasks(void)
+{
+ int i;
+
+ for (i = 0; i < 4; i++)
+ {
+ if (sTradeMenuResourcesPtr->cron[i].active)
+ {
+ if (sTradeMenuResourcesPtr->cron[i].delay != 0)
+ {
+ sTradeMenuResourcesPtr->cron[i].delay--;
+ }
+ else
+ {
+ switch (sTradeMenuResourcesPtr->cron[i].kind)
+ {
+ case 0:
+ SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20);
+ break;
+ case 1:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY);
+ break;
+ case 2:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_ONLYMON);
+ break;
+ case 3:
+ case 4:
+ case 5:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_ONLYMON2);
+ break;
+ case 6:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_YOURMONCANTBETRADED);
+ break;
+ case 7:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_EGGCANTBETRADED);
+ break;
+ case 8:
+ PrintTradeErrorOrStatusMessage(TRADESTATMSG_PARTNERMONCANTBETRADED);
+ break;
+ }
+ sTradeMenuResourcesPtr->cron[i].active = FALSE;
+ }
+ }
+ }
+}
+
+static void PrintTradeErrorOrStatusMessage(u8 idx)
+{
+ FillWindowPixelBuffer(0, PIXEL_FILL(1));
+ AddTextPrinterParameterized(0, 3, sTradeErrorOrStatusMessagePtrs[idx], 0, 2, 0xFF, NULL);
+ DrawTextBorderOuter(0, 0x014, 12);
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+}
+
+static bool8 sub_804F610(void)
+{
+ struct SpriteSheet sheet;
+
+ if (sTradeMenuResourcesPtr->unk_A8 < 14)
+ {
+ sheet.data = sSpriteTextTilePtrs[sTradeMenuResourcesPtr->unk_A8];
+ sheet.size = 0x100;
+ sheet.tag = 200 + sTradeMenuResourcesPtr->unk_A8;
+ }
+
+ switch (sTradeMenuResourcesPtr->unk_A8)
+ {
+ case 0 ... 7:
+ LoadSpriteSheet(&sheet);
+ sTradeMenuResourcesPtr->unk_A8++;
+ break;
+ case 8:
+ sTradeMenuResourcesPtr->unk_72 = LoadSpriteSheet(&sheet);
+ sTradeMenuResourcesPtr->unk_A8++;
+ break;
+ case 9 ... 13:
+ LoadSpriteSheet(&sheet);
+ sTradeMenuResourcesPtr->unk_A8++;
+ break;
+ case 14:
+ LoadSpritePalette(&sSpritePalette_Text);
+ sTradeMenuResourcesPtr->unk_A8++;
+ break;
+ case 15:
+ LoadSpritePalette(&sTradeButtons_SpritePal);
+ sTradeMenuResourcesPtr->unk_A8++;
+ break;
+ case 16:
+ LoadSpriteSheet(&sTradeButtons_SpriteSheet);
+ sTradeMenuResourcesPtr->unk_A8++;
+ break;
+ case 17:
+ sTradeMenuResourcesPtr->unk_A8 = 0;
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void RenderTextToVramViaBuffer(const u8 *name, u8 *dest, u8 unused)
+{
+ PSS_RenderTextToVramViaBuffer(name, dest, 0, 0, gDecompressionBuffer, 6);
+}
+
+static void sub_804F748(u8 who)
+{
+ int i;
+
+ switch (who)
+ {
+ case 0:
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[who]; i++)
+ {
+ if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) == TRUE)
+ {
+ sTradeMenuResourcesPtr->unk_45[who][i] = 0;
+ sTradeMenuResourcesPtr->unk_51[who][i] = 1;
+ }
+ else if (GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0)
+ {
+ sTradeMenuResourcesPtr->unk_45[who][i] = 0;
+ sTradeMenuResourcesPtr->unk_51[who][i] = 0;
+ }
+ else
+ {
+ sTradeMenuResourcesPtr->unk_45[who][i] = 1;
+ sTradeMenuResourcesPtr->unk_51[who][i] = 0;
+ }
+ }
+ break;
+ case 1:
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[who]; i++)
+ {
+ if (GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG) == TRUE)
+ {
+ sTradeMenuResourcesPtr->unk_45[who][i] = 0;
+ sTradeMenuResourcesPtr->unk_51[who][i] = 1;
+ }
+ else if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0)
+ {
+ sTradeMenuResourcesPtr->unk_45[who][i] = 0;
+ sTradeMenuResourcesPtr->unk_51[who][i] = 0;
+ }
+ else
+ {
+ sTradeMenuResourcesPtr->unk_45[who][i] = 1;
+ sTradeMenuResourcesPtr->unk_51[who][i] = 0;
+ }
+ }
+ break;
+ }
+}
+
+static void sub_804F890(u8 who)
+{
+ u16 i, curHp, maxHp;
+
+ switch (who)
+ {
+ case 0:
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++)
+ {
+ curHp = GetMonData(&gPlayerParty[i], MON_DATA_HP);
+ maxHp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP);
+ sTradeMenuResourcesPtr->unk_5D[0][i] = GetHPBarLevel(curHp, maxHp);
+ }
+ break;
+ case 1:
+ for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++)
+ {
+ curHp = GetMonData(&gEnemyParty[i], MON_DATA_HP);
+ maxHp = GetMonData(&gEnemyParty[i], MON_DATA_MAX_HP);
+ sTradeMenuResourcesPtr->unk_5D[1][i] = GetHPBarLevel(curHp, maxHp);
+ }
+ break;
+ }
+}
+
+static void sub_804F964(void)
+{
+ int i, j;
+ for (i = 0; i < 2; i++)
+ {
+ for (j = 0; j < sTradeMenuResourcesPtr->partyCounts[i]; j++)
+ {
+ MonIcon_SetAnim(&gSprites[sTradeMenuResourcesPtr->partyIcons[i][j]], 4 - sTradeMenuResourcesPtr->unk_5D[i][j]);
+ }
+ }
+}
+
+static void sub_804F9D8(void)
+{
+ int i;
+ for (i = 0; i < 11; i++)
+ {
+ if (gSaveBlock1Ptr->giftRibbons[i] == 0 && sTradeMenuResourcesPtr->unk_A9[i] != 0)
+ gSaveBlock1Ptr->giftRibbons[i] = sTradeMenuResourcesPtr->unk_A9[i];
+ }
+}
+
+static u32 sub_804FA14(struct Pokemon * party, int partyCount, int cursorPos)
+{
+ int i, sum;
+ struct LinkPlayer * player;
+ int species[6];
+ int species2[6];
+
+ for (i = 0; i < partyCount; i++)
+ {
+ species2[i] = GetMonData(&party[i], MON_DATA_SPECIES2);
+ species[i] = GetMonData(&party[i], MON_DATA_SPECIES);
+ }
+
+ if (!IsNationalPokedexEnabled())
+ {
+ if (species2[cursorPos] > SPECIES_MEW)
+ {
+ return 2;
+ }
+ if (species2[cursorPos] == SPECIES_NONE)
+ {
+ return 3;
+ }
+ }
+
+ player = &gLinkPlayers[GetMultiplayerId() ^ 1];
+ if ((player->version & 0xFF) != VERSION_RUBY &&
+ (player->version & 0xFF) != VERSION_SAPPHIRE)
+ {
+ if ((player->name[10] & 0xF) == 0)
+ {
+ if (species2[cursorPos] == SPECIES_EGG)
+ {
+ return 5;
+ }
+
+ if (species2[cursorPos] > SPECIES_MEW)
+ {
+ return 4;
+ }
+ }
+ }
+
+ if (species[cursorPos] == SPECIES_DEOXYS || species[cursorPos] == SPECIES_MEW)
+ {
+ if (!GetMonData(&party[cursorPos], MON_DATA_OBEDIENCE))
+ {
+ return 4;
+ }
+ }
+
+ for (i = 0; i < partyCount; i++)
+ {
+ if (species2[i] == SPECIES_EGG)
+ {
+ species2[i] = SPECIES_NONE;
+ }
+ }
+
+ for (sum = 0, i = 0; i < partyCount; i++)
+ {
+ if (i != cursorPos)
+ {
+ sum += species2[i];
+ }
+ }
+
+ if (sum != 0)
+ {
+ return 0;
+ }
+ else
+ {
+ return 1;
+ }
+}
+
+s32 sub_804FB34(void)
+{
+ s32 val;
+ u16 version;
+
+ if (gReceivedRemoteLinkPlayers != 0)
+ {
+ val = 0;
+ version = (gLinkPlayers[GetMultiplayerId() ^ 1].version & 0xFF);
+
+ if (version == VERSION_FIRE_RED || version == VERSION_LEAF_GREEN)
+ {
+ // this value could actually be anything 0 or less
+ val = 0;
+ }
+ else if (version == VERSION_RUBY || version == VERSION_SAPPHIRE)
+ {
+ val = 1;
+ }
+ else
+ {
+ val = 2;
+ }
+
+ if (val > 0)
+ {
+ if (gLinkPlayers[GetMultiplayerId()].name[10] & 0xF0)
+ {
+ if (val == 2)
+ {
+ if (gLinkPlayers[GetMultiplayerId() ^ 1].name[10] & 0xF0)
+ {
+ return 0;
+ }
+ else
+ {
+ return 2;
+ }
+ }
+ }
+ else
+ {
+ return 1;
+ }
+ }
+ }
+ return 0;
+}
+
+static bool32 IsDeoxysOrMewUntradable(u16 species, bool8 isObedientBitSet)
+{
+ if (species == SPECIES_DEOXYS || species == SPECIES_MEW)
+ {
+ if (!isObedientBitSet)
+ return TRUE;
+ }
+ return FALSE;
+}
+
+int sub_804FBEC(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuStruct_02022B14Substruct a1, u16 species1, u16 species2, u8 type, u16 species3, u8 isObedientBitSet)
+{
+ u8 r9 = a0.unk_01_0;
+ u8 r4 = a0.unk_00_7;
+ u8 r10 = a1.unk_01_0;
+ u8 r0 = a1.unk_00_7;
+ u8 r1 = a1.unk_01_2;
+ u8 r2;
+
+ if (r1 == VERSION_FIRE_RED || r1 == VERSION_LEAF_GREEN)
+ {
+ r2 = 0;
+ }
+ else
+ {
+ r2 = 1;
+ }
+ if (r2)
+ {
+ if (!r4)
+ {
+ return 8;
+ }
+ else if (!r0)
+ {
+ return 9;
+ }
+ }
+
+ if (IsDeoxysOrMewUntradable(species3, isObedientBitSet))
+ {
+ return 4;
+ }
+
+ if (species2 == SPECIES_EGG)
+ {
+ if (species1 != species2)
+ {
+ return 2;
+ }
+ }
+ else
+ {
+ if (gBaseStats[species1].type1 != type && gBaseStats[species1].type2 != type)
+ {
+ return 1;
+ }
+ }
+
+ if (species1 == SPECIES_EGG && species1 != species2)
+ {
+ return 3;
+ }
+
+ if (!r9)
+ {
+ if (species1 == SPECIES_EGG)
+ {
+ return 6;
+ }
+
+ if (species1 > SPECIES_MEW)
+ {
+ return 4;
+ }
+
+ if (species2 > SPECIES_MEW)
+ {
+ return 5;
+ }
+ }
+
+ if (!r10 && species1 > SPECIES_MEW)
+ {
+ return 7;
+ }
+
+ return 0;
+}
+
+int Trade_CanTradeSelectedMon(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3)
+{
+ u8 canTradeEggAndNational = a0.unk_01_0;
+
+ if (IsDeoxysOrMewUntradable(a2, a3))
+ {
+ return 1;
+ }
+
+ if (canTradeEggAndNational)
+ {
+ return 0;
+ }
+
+ if (species == SPECIES_EGG)
+ {
+ return 2;
+ }
+
+ if (species > SPECIES_MEW && species != SPECIES_EGG)
+ {
+ return 1;
+ }
+
+ return 0;
+}
diff --git a/src/trade_scene.c b/src/trade_scene.c
new file mode 100644
index 000000000..94fdadd5d
--- /dev/null
+++ b/src/trade_scene.c
@@ -0,0 +1,2874 @@
+#include "global.h"
+#include "task.h"
+#include "malloc.h"
+#include "bg.h"
+#include "gpu_regs.h"
+#include "util.h"
+#include "window.h"
+#include "sound.h"
+#include "decompress.h"
+#include "palette.h"
+#include "trade.h"
+#include "link.h"
+#include "librfu.h"
+#include "link_rfu.h"
+#include "text.h"
+#include "mevent.h"
+#include "graphics.h"
+#include "strings.h"
+#include "menu.h"
+#include "data.h"
+#include "battle.h"
+#include "script.h"
+#include "event_data.h"
+#include "string_util.h"
+#include "mail_data.h"
+#include "pokeball.h"
+#include "evolution_scene.h"
+#include "overworld.h"
+#include "field_fadetransition.h"
+#include "quest_log.h"
+#include "help_system.h"
+#include "new_menu_helpers.h"
+#include "battle_interface.h"
+#include "pokedex.h"
+#include "save.h"
+#include "load_save.h"
+#include "random.h"
+#include "trade_scene.h"
+#include "constants/species.h"
+#include "constants/items.h"
+#include "constants/easy_chat.h"
+#include "constants/songs.h"
+#include "constants/region_map.h"
+#include "constants/moves.h"
+
+#define TAG_GLOW1_TILES 5550
+#define TAG_GLOW_PAL 5551
+#define TAG_GLOW2_TILES 5552
+#define TAG_UNUSED_5553 5553
+#define TAG_CABLE_END_TILES 5554
+#define TAG_GBA_PAL 5555
+#define TAG_GBA_SCREEN_TILES 5556
+#define TAG_BALL_TILES 5557
+#define TAG_BALL_PAL 5558
+
+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 TradeAnimationResources {
+ /*0x00*/ struct Pokemon mon;
+ /*0x64*/ u32 timer;
+ /*0x68*/ u32 monPersonalities[2];
+ /*0x70*/ u8 filler_70[2];
+ /*0x72*/ u8 tradeStatus1;
+ /*0x73*/ u8 tradeStatus2;
+ /*0x74*/ u16 linkData[10];
+ /*0x88*/ u8 linkTimeoutCheck1;
+ /*0x89*/ u8 linkTimeoutCheck2;
+ /*0x8A*/ u16 linkTimeoutTimer;
+ /*0x8C*/ u16 unk_8C;
+ /*0x8E*/ u8 pokePicSpriteIdxs[2];
+ /*0x90*/ u8 tradeGlow1SpriteId;
+ /*0x91*/ u8 gbaScreenSpriteId;
+ /*0x92*/ u8 linkCableEndSpriteId;
+ /*0x93*/ u8 scheduleLinkTransfer;
+ /*0x94*/ u16 state;
+ /*0x96*/ u8 filler_96[0xD2 - 0x96];
+ /*0xD2*/ u8 pokeballSpriteId;
+ /*0xD3*/ u8 pokeballSpriteId2;
+ /*0xD4*/ u16 bg2texX;
+ /*0xD6*/ u16 bg2texY;
+ /*0xD8*/ u16 unk_D8;
+ /*0xDA*/ u16 unk_DA;
+ /*0xDC*/ u16 bg2srcX;
+ /*0xDE*/ u16 bg2srcY;
+ /*0xE0*/ s16 bg1vofs;
+ /*0xE2*/ s16 bg1hofs;
+ /*0xE4*/ s16 bg2vofs;
+ /*0xE6*/ s16 bg2hofs;
+ /*0xE8*/ u16 sXY;
+ /*0xEA*/ u16 bg2Zoom;
+ /*0xEC*/ u16 bg2alpha;
+ /*0xEE*/ bool8 isLinkTrade;
+ /*0xF0*/ u16 tradeSpecies[2];
+ /*0xF4*/ u16 cachedMapMusic;
+ /*0xF6*/ u8 unk_F6;
+ /*0xF8*/ u16 monSpecies[2];
+ /*0xFC*/ u8 linkPartnerName[7];
+ /*0x103*/ u8 filler_103[1];
+ /*0x104*/ u8 textColor[3];
+ /*0x107*/ u8 filler_107[1];
+ /*0x108*/ bool8 isCableTrade;
+ /*0x109*/ u8 win0left;
+ /*0x10A*/ u8 win0top;
+ /*0x10B*/ u8 win0right;
+ /*0x10C*/ u8 win0bottom;
+};
+
+static EWRAM_DATA struct TradeAnimationResources * sTradeData = NULL;
+
+static void SpriteCB_TradeGlowCable(struct Sprite * sprite);
+static void SpriteCB_TradeGlowWireless(struct Sprite * sprite);
+static void SpriteCB_TradeGlowCore(struct Sprite * sprite);
+static void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite);
+static void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite);
+static void SpriteCB_TradeGBAScreen(struct Sprite * sprite);
+static void TradeAnimInit_LoadGfx(void);
+static void CB2_RunTradeAnim_InGameTrade(void);
+static void SetTradeSequenceBgGpuRegs(u8 idx);
+static void LoadTradeGbaSpriteGfx(void);
+static void TradeBufferOTnameAndNicknames(void);
+static u8 DoTradeAnim(void);
+static u8 DoTradeAnim_Cable(void);
+static u8 DoTradeAnim_Wireless(void);
+static void SpriteCB_TradePokeball_Default(struct Sprite * sprite);
+static void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite);
+static void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite);
+static void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite);
+static void BufferInGameTradeMonName(void);
+static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrade * inGameTrade);
+static void CB2_RunTradeAnim_LinkTrade(void);
+static void CB2_WaitAndAckTradeComplete(void);
+static void sub_8053E8C(void);
+static void LinkTrade_TearDownAssets(void);
+static void Task_WaitFadeAndStartInGameTradeAnim(u8 taskId);
+static void CheckPartnersMonForRibbons(void);
+static void Task_AnimateWirelessSignal(u8 taskId);
+static void Task_OpenCenterWhiteColumn(u8 taskId);
+static void Task_CloseCenterWhiteColumn(u8 taskId);
+
+static const u16 sTradeBallPalette[] = INCBIN_U16("graphics/trade/ball.gbapal");
+static const u8 sTradeBallTiles[] = INCBIN_U8("graphics/trade/ball.4bpp");
+static const u8 gUnknown_826267C[] = INCBIN_U8("graphics/trade/pokeball_symbol.8bpp");
+static const u16 gUnknown_826407C[] = INCBIN_U16("graphics/trade/cable_closeup_map.bin");
+static const u16 gUnknown_083307C0[] = INCBIN_U16("graphics/trade/pokeball_symbol_map.bin");
+static const u16 sUnref_083308C0[] = INCBIN_U16("graphics/trade/unknown_3308C0.gbapal");
+static const u16 sTradeGbaPal[] = INCBIN_U16("graphics/trade/gba.gbapal");
+static const u16 gUnref_08330900[] = INCBIN_U16("graphics/trade/shadow.gbapal");
+static const u16 gUnref_08330920[] = INCBIN_U16("graphics/trade/black.gbapal");
+static const u16 sTradeGlowPal[] = INCBIN_U16("graphics/trade/misc.gbapal");
+static const u8 sTradeGlow1Tiles[] = INCBIN_U8("graphics/trade/glow1.4bpp");
+static const u8 sTradeGlow2Tiles[] = INCBIN_U8("graphics/trade/glow2.4bpp");
+static const u8 sTradeCableEndTiles[] = INCBIN_U8("graphics/trade/cable_end.4bpp");
+static const u8 sTradeGBAScreenTiles[] = INCBIN_U8("graphics/trade/gba_screen.4bpp");
+const u16 gUnknown_826601C[] = INCBIN_U16("graphics/trade/shadow_map.bin");
+static const u8 gUnknown_826701C[] = INCBIN_U8("graphics/trade/gba_affine.8bpp");
+static const u8 sFiller_08335760[64] = {};
+static const u8 gUnknown_826985C[] = INCBIN_U8("graphics/trade/gba_affine_map_cable.bin");
+static const u8 gUnknown_826995C[] = INCBIN_U8("graphics/trade/gba_affine_map_wireless.bin");
+static const u16 gUnknown_8269A5C[] = INCBIN_U16("graphics/trade/gba_map_wireless.bin");
+static const u16 gUnknown_826AA5C[] = INCBIN_U16("graphics/trade/gba_map_cable.bin");
+static const u32 sUnknown_3379A0Bin[] = INCBIN_U32("graphics/trade/unknown_3379A0.bin.lz");
+static const u16 sWirelessSignalAnimPals_Outbound[] = INCBIN_U16("graphics/trade/wireless_signal_send.gbapal");
+static const u16 sWirelessSignalAnimPals_Inbound[] = INCBIN_U16("graphics/trade/wireless_signal_receive.gbapal");
+static const u16 sWirelessSignalAnimPals_Off[] = INCBIN_U16("graphics/trade/black.gbapal");
+static const u32 sWirelessSignal4bpp[] = INCBIN_U32("graphics/trade/wireless_signal.4bpp.lz");
+static const u32 sWirelessSignalTilemap[] = INCBIN_U32("graphics/trade/wireless_signal.bin.lz");
+
+static const struct OamData gOamData_826CD00 = {
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .shape = SPRITE_SHAPE(16x16),
+ .size = SPRITE_SIZE(16x16)
+};
+
+static const union AnimCmd gAnimCmd_826CD08[] = {
+ ANIMCMD_FRAME(0x00, 3),
+ ANIMCMD_FRAME(0x04, 3),
+ ANIMCMD_FRAME(0x08, 3),
+ ANIMCMD_FRAME(0x0c, 3),
+ ANIMCMD_FRAME(0x10, 3),
+ ANIMCMD_FRAME(0x14, 3),
+ ANIMCMD_FRAME(0x18, 3),
+ ANIMCMD_FRAME(0x1c, 3),
+ ANIMCMD_FRAME(0x20, 3),
+ ANIMCMD_FRAME(0x24, 3),
+ ANIMCMD_FRAME(0x28, 3),
+ ANIMCMD_FRAME(0x2c, 3),
+ ANIMCMD_LOOP(1),
+ ANIMCMD_FRAME(0x00, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_826CD44[] = {
+ ANIMCMD_FRAME(0x00, 3),
+ ANIMCMD_FRAME(0x04, 3),
+ ANIMCMD_FRAME(0x08, 3),
+ ANIMCMD_FRAME(0x0c, 3),
+ ANIMCMD_FRAME(0x10, 3),
+ ANIMCMD_FRAME(0x14, 3),
+ ANIMCMD_FRAME(0x18, 3),
+ ANIMCMD_FRAME(0x1c, 3),
+ ANIMCMD_FRAME(0x20, 3),
+ ANIMCMD_FRAME(0x24, 3),
+ ANIMCMD_FRAME(0x28, 3),
+ ANIMCMD_FRAME(0x2c, 3),
+ ANIMCMD_LOOP(2),
+ ANIMCMD_FRAME(0x00, 3),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CD80[] = {
+ gAnimCmd_826CD08,
+ gAnimCmd_826CD44
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CD88[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 0, 1),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CD98[] = {
+ AFFINEANIMCMD_FRAME(-8, 0, 0, 20),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CDA8[] = {
+ AFFINEANIMCMD_FRAME(96, 256, 0, 0),
+ AFFINEANIMCMD_FRAME(0, 0, 0, 5),
+ AFFINEANIMCMD_FRAME(8, 0, 0, 20),
+ AFFINEANIMCMD_END
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_826CDC8[] = {
+ gAffineAnimCmd_826CD88,
+ gAffineAnimCmd_826CD98,
+ gAffineAnimCmd_826CDA8
+};
+
+static const struct SpriteSheet sTradeBallSpriteSheet = {
+ sTradeBallTiles,
+ 0x600,
+ TAG_BALL_TILES
+};
+
+static const struct SpritePalette sTradeBallSpritePal = {
+ sTradeBallPalette,
+ TAG_BALL_PAL
+};
+
+static const struct SpriteTemplate sTradePokeballSpriteTemplate = {
+ .tileTag = TAG_BALL_TILES,
+ .paletteTag = TAG_BALL_PAL,
+ .oam = &gOamData_826CD00,
+ .anims = gSpriteAnimTable_826CD80,
+ .affineAnims = gSpriteAffineAnimTable_826CDC8,
+ .callback = SpriteCB_TradePokeball_Default
+};
+
+static const struct OamData gOamData_826CDFC = {
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .objMode = ST_OAM_OBJ_BLEND,
+ .shape = SPRITE_SHAPE(32x32),
+ .size = SPRITE_SIZE(32x32),
+ .priority = 1
+};
+
+static const union AnimCmd gAnimCmd_826CE04[] = {
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CE0C[] = {
+ gAnimCmd_826CE04
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CE10[] = {
+ AFFINEANIMCMD_FRAME(-10, -10, 0, 5),
+ AFFINEANIMCMD_FRAME( 10, 10, 0, 5),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd *const gSpriteAffineAnimTable_826CE28[] = {
+ gAffineAnimCmd_826CE10
+};
+
+static const struct SpriteSheet sTradeGlow1SpriteSheet = {
+ sTradeGlow1Tiles,
+ 0x200,
+ TAG_GLOW1_TILES
+};
+
+static const struct SpritePalette sTradeGlowSpritePal = {
+ sTradeGlowPal,
+ TAG_GLOW_PAL
+};
+
+static const struct SpritePalette sTradeGbaSpritePal = {
+ sTradeGbaPal,
+ TAG_GBA_PAL
+};
+
+static const struct SpriteTemplate sTradeGlow1SpriteTemplate = {
+ .tileTag = TAG_GLOW1_TILES,
+ .paletteTag = TAG_GLOW_PAL,
+ .oam = &gOamData_826CDFC,
+ .anims = gSpriteAnimTable_826CE0C,
+ .affineAnims = gSpriteAffineAnimTable_826CE28,
+ .callback = SpriteCB_TradeGlowCable
+};
+
+static const struct OamData gOamData_826CE5C = {
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .priority = 1
+};
+
+static const union AnimCmd gAnimCmd_826CE64[] = {
+ ANIMCMD_FRAME(0, 5, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_826CE6C[] = {
+ ANIMCMD_FRAME(8, 5, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CE74[] = {
+ gAnimCmd_826CE64,
+ gAnimCmd_826CE6C
+};
+
+static const struct SpriteSheet sTradeGlow2SpriteSheet = {
+ sTradeGlow2Tiles,
+ 0x300,
+ TAG_GLOW2_TILES
+};
+
+static const struct SpriteTemplate sGlowBallSpriteTemplate = {
+ .tileTag = TAG_GLOW2_TILES,
+ .paletteTag = TAG_GLOW_PAL,
+ .oam = &gOamData_826CE5C,
+ .anims = gSpriteAnimTable_826CE74,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_TradeGlowCore
+};
+
+static const struct OamData gOamData_826CE9C = {
+ .shape = SPRITE_SHAPE(16x32),
+ .size = SPRITE_SIZE(16x32),
+ .priority = 1
+};
+
+static const union AnimCmd gAnimCmd_826CEA4[] = {
+ ANIMCMD_FRAME(0, 10),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CEAC[] = {
+ gAnimCmd_826CEA4
+};
+
+static const struct SpriteSheet sTradeCableEndSpriteSheet = {
+ sTradeCableEndTiles,
+ 0x100,
+ TAG_CABLE_END_TILES
+};
+
+static const struct SpriteTemplate sGameLinkCableEndSpriteTemplate = {
+ .tileTag = TAG_CABLE_END_TILES,
+ .paletteTag = TAG_GBA_PAL,
+ .oam = &gOamData_826CE9C,
+ .anims = gSpriteAnimTable_826CEAC,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_GameLinkCableEnd_Outbound
+};
+
+static const struct OamData gOamData_826CED0 = {
+ .shape = SPRITE_SHAPE(64x32),
+ .size = SPRITE_SIZE(64x32),
+ .priority = 1
+};
+
+static const union AnimCmd gAnimCmd_826CED8[] = {
+ ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x60, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_LOOP(8),
+ ANIMCMD_END
+};
+
+static const union AnimCmd gAnimCmd_826CEFC[] = {
+ ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x60, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x40, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x20, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_FRAME(0x00, 2, .hFlip = TRUE, .vFlip = TRUE),
+ ANIMCMD_LOOP(2),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CF20[] = {
+ gAnimCmd_826CED8
+};
+
+static const union AnimCmd *const gSpriteAnimTable_826CF24[] = {
+ gAnimCmd_826CEFC
+};
+
+static const struct SpriteSheet sTradeGBAScreenSpriteSheet = {
+ sTradeGBAScreenTiles,
+ 0x1000,
+ TAG_GBA_SCREEN_TILES
+};
+
+static const struct SpriteTemplate sTradeGBAScreenSpriteTemplate1 = {
+ .tileTag = TAG_GBA_SCREEN_TILES,
+ .paletteTag = TAG_GBA_PAL,
+ .oam = &gOamData_826CED0,
+ .anims = gSpriteAnimTable_826CF20,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_TradeGBAScreen
+};
+
+static const struct SpriteTemplate sTradeGBAScreenSpriteTemplate2 = {
+ .tileTag = TAG_GBA_SCREEN_TILES,
+ .paletteTag = TAG_GBA_PAL,
+ .oam = &gOamData_826CED0,
+ .anims = gSpriteAnimTable_826CF24,
+ .affineAnims = gDummySpriteAffineAnimTable,
+ .callback = SpriteCB_TradeGBAScreen
+};
+
+static const u16 sTradeGlow2PaletteAnimTable[] = {
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(18, 24, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31),
+ RGB(31, 31, 31)
+};
+
+static const union AffineAnimCmd gAffineAnimCmd_826CF78[] = {
+ AFFINEANIMCMD_FRAME(-0x100, 0x100, 0, 0),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd *const sSpriteAffineAnimTable_PlayerPokePicAlt[] = {
+ gAffineAnimCmd_826CF78
+};
+
+#include "data/ingame_trades.h"
+
+static const struct WindowTemplate gUnknown_826D1BC[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 2,
+ .tilemapTop = 15,
+ .width = 26,
+ .height = 4,
+ .paletteNum = 0,
+ .baseBlock = 0x040
+ }, DUMMY_WIN_TEMPLATE
+};
+
+const struct WindowTemplate gUnknown_826D1CC = {
+ .bg = 0,
+ .tilemapLeft = 21,
+ .tilemapTop = 9,
+ .width = 6,
+ .height = 4,
+ .paletteNum = 15,
+ .baseBlock = 0x0bc
+};
+
+static const struct BgTemplate gUnknown_826D1D4[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 3,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 0x000
+ }, {
+ .bg = 1,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 5,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 2,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 18,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 2,
+ .baseTile = 0x000
+ }, {
+ .bg = 3,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 6,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 3,
+ .baseTile = 0x000
+ }
+};
+
+static const s8 sTradeBallVerticalVelocityTable[] = {
+ 0, 0, 1, 0,
+ 1, 0, 1, 1,
+ 1, 1, 2, 2,
+ 2, 2, 3, 3,
+ 3, 3, 4, 4,
+ 4, 4, -4, -4,
+ -4, -3, -3, -3,
+ -3, -2, -2, -2,
+ -2, -1, -1, -1,
+ -1, 0, -1, 0,
+ -1, 0, 0, 0,
+ 0, 0, 1, 0,
+ 1, 0, 1, 1,
+ 1, 1, 2, 2,
+ 2, 2, 3, 3,
+ 3, 3, 4, 4,
+ 4, 4, -4, -3,
+ -3, -2, -2, -1,
+ -1, -1, 0, -1,
+ 0, 0, 0, 0,
+ 0, 0, 1, 0,
+ 1, 1, 1, 2,
+ 2, 3, 3, 4,
+ -4, -3, -2, -1,
+ -1, -1, 0, 0,
+ 0, 0, 1, 0,
+ 1, 1, 2, 3
+};
+
+static const u8 sWirelessSignalAnimParams[][2] = {
+ {0, 1},
+ {1, 1},
+ {2, 1},
+ {3, 1},
+ {4, 1},
+ {5, 2},
+ {6, 2},
+ {7, 2},
+ {8, 2},
+ {9, 2},
+ {10, 3},
+ {11, 3},
+ {12, 3},
+ {13, 4},
+ {14, 5},
+ {15, 2},
+ {0, 1},
+ {1, 1},
+ {2, 1},
+ {3, 1},
+ {4, 1},
+ {5, 2},
+ {6, 2},
+ {7, 2},
+ {8, 2},
+ {9, 2},
+ {10, 3},
+ {11, 3},
+ {12, 3},
+ {13, 4},
+ {14, 5},
+ {16, 1},
+ {16, -1}
+};
+
+// Sprite callback for link cable trade glow
+static void SpriteCB_TradeGlowCable(struct Sprite * sprite)
+{
+ sprite->data[0]++;
+ if (sprite->data[0] == 10)
+ {
+ PlaySE(SE_BOWA);
+ sprite->data[0] = 0;
+ }
+}
+
+// Sprite callback for wireless trade glow
+static void SpriteCB_TradeGlowWireless(struct Sprite * sprite)
+{
+ if (!sprite->invisible)
+ {
+ sprite->data[0]++;
+ if (sprite->data[0] == 10)
+ {
+ PlaySE(SE_W207B);
+ sprite->data[0] = 0;
+ }
+ }
+}
+
+// Palette flash for trade glow core
+static void SpriteCB_TradeGlowCore(struct Sprite * sprite)
+{
+ if (sprite->data[1] == 0)
+ {
+ sprite->data[0]++;
+ if (sprite->data[0] == 12)
+ sprite->data[0] = 0;
+ LoadPalette(&sTradeGlow2PaletteAnimTable[sprite->data[0]], 16 * (sprite->oam.paletteNum + 16) + 4, 2);
+ }
+}
+
+// Move down for 10 frames
+static void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite)
+{
+ sprite->data[0]++;
+ sprite->pos2.y++;
+ if (sprite->data[0] == 10)
+ DestroySprite(sprite);
+}
+
+// Move up for 10 frames
+static void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite)
+{
+ sprite->data[0]++;
+ sprite->pos2.y--;
+ if (sprite->data[0] == 10)
+ DestroySprite(sprite);
+}
+
+// Play a sound every 15 frames
+static void SpriteCB_TradeGBAScreen(struct Sprite * sprite)
+{
+ sprite->data[0]++;
+ if (sprite->data[0] == 15)
+ {
+ PlaySE(SE_W107);
+ sprite->data[0] = 0;
+ }
+}
+
+static void SetTradeBGAffine(void)
+{
+ struct BgAffineDstData affine;
+ DoBgAffineSet(&affine, sTradeData->bg2texX * 0x100, sTradeData->bg2texY * 0x100, sTradeData->bg2srcX, sTradeData->bg2srcY, sTradeData->sXY, sTradeData->sXY, sTradeData->bg2alpha);
+ SetGpuReg(REG_OFFSET_BG2PA, affine.pa);
+ SetGpuReg(REG_OFFSET_BG2PB, affine.pb);
+ SetGpuReg(REG_OFFSET_BG2PC, affine.pc);
+ SetGpuReg(REG_OFFSET_BG2PD, affine.pd);
+ SetGpuReg(REG_OFFSET_BG2X, affine.dx);
+ SetGpuReg(REG_OFFSET_BG2Y, affine.dy);
+}
+
+static void TradeAnim_UpdateBgRegs(void)
+{
+ u16 dispcnt;
+
+ 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, sTradeData->bg2vofs);
+ SetGpuReg(REG_OFFSET_BG2HOFS, sTradeData->bg2hofs);
+ }
+ else
+ {
+ SetTradeBGAffine();
+ }
+}
+
+static void VBlankCB_TradeAnim(void)
+{
+ TradeAnim_UpdateBgRegs();
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void InitLinkTimeoutTracker(void)
+{
+ sTradeData->linkTimeoutTimer = 0;
+ sTradeData->linkTimeoutCheck1 = 0;
+ sTradeData->linkTimeoutCheck2 = 0;
+}
+
+static void CheckLinkTimeout(void)
+{
+ if (sTradeData->linkTimeoutCheck1 == sTradeData->linkTimeoutCheck2)
+ sTradeData->linkTimeoutTimer++;
+ else
+ sTradeData->linkTimeoutTimer = 0;
+
+ if (sTradeData->linkTimeoutTimer > 300)
+ {
+ CloseLink();
+ SetMainCallback2(CB2_LinkError);
+ sTradeData->linkTimeoutTimer = 0;
+ sTradeData->linkTimeoutCheck2 = 0;
+ sTradeData->linkTimeoutCheck1 = 0;
+ }
+
+ sTradeData->linkTimeoutCheck2 = sTradeData->linkTimeoutCheck1;
+}
+
+static u32 GetMultiplayerIdIfLinkTrade(void)
+{
+ if (gReceivedRemoteLinkPlayers)
+ return GetMultiplayerId();
+ return 0;
+}
+
+static void LoadTradeMonPic(u8 whichParty, u8 action)
+{
+ int pos = 0;
+ struct Pokemon * mon = NULL;
+ u16 species;
+ u32 personality;
+
+ if (whichParty == 0)
+ {
+ mon = &gPlayerParty[gSelectedTradeMonPositions[0]];
+ pos = 1;
+ }
+
+ /*else*/ if (whichParty == 1)
+ {
+ mon = &gEnemyParty[gSelectedTradeMonPositions[1] % PARTY_SIZE];
+ pos = 3;
+ }
+
+ switch (action)
+ {
+ case 0:
+ // Load graphics
+ species = GetMonData(mon, MON_DATA_SPECIES2);
+ personality = GetMonData(mon, MON_DATA_PERSONALITY);
+
+ if (whichParty == 0)
+ HandleLoadSpecialPokePic(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[1], species, personality);
+ else
+ HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality);
+
+ LoadCompressedSpritePalette(GetMonSpritePalStruct(mon));
+ sTradeData->tradeSpecies[whichParty] = species;
+ sTradeData->monPersonalities[whichParty] = personality;
+ break;
+ case 1:
+ // Create sprite
+ SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, pos);
+ sTradeData->pokePicSpriteIdxs[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6);
+ gSprites[sTradeData->pokePicSpriteIdxs[whichParty]].invisible = TRUE;
+ gSprites[sTradeData->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy;
+ break;
+ }
+}
+
+void CB2_InitTradeAnim_LinkTrade(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ gLinkType = 0x1144;
+ CloseLink();
+ }
+ sTradeData = AllocZeroed(sizeof(struct TradeAnimationResources));
+ AllocateMonSpritesGfx();
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(VBlankCB_TradeAnim);
+ TradeAnimInit_LoadGfx();
+ InitLinkTimeoutTracker();
+ gMain.state++;
+ sTradeData->unk_8C = 0;
+ sTradeData->state = 0;
+ sTradeData->isLinkTrade = TRUE;
+ sTradeData->bg2texX = 64;
+ sTradeData->bg2texY = 64;
+ sTradeData->unk_D8 = 0;
+ sTradeData->unk_DA = 0;
+ sTradeData->bg2srcX = 120;
+ sTradeData->bg2srcY = 80;
+ sTradeData->sXY = 256;
+ sTradeData->bg2alpha = 0;
+ break;
+ case 1:
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ sTradeData->isCableTrade = TRUE;
+ OpenLink();
+ gMain.state++;
+ sTradeData->timer = 0;
+ }
+ else
+ {
+ gMain.state = 4;
+ }
+ break;
+ case 2:
+ sTradeData->timer++;
+ if (sTradeData->timer > 60)
+ {
+ sTradeData->timer = 0;
+ gMain.state++;
+ }
+ break;
+ case 3:
+ if (IsLinkMaster())
+ {
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
+ {
+ sTradeData->timer++;
+ if (sTradeData->timer > 30)
+ {
+ CheckShouldAdvanceLinkState();
+ gMain.state++;
+ }
+ }
+ else
+ {
+ CheckLinkTimeout();
+ }
+ }
+ else
+ {
+ gMain.state++;
+ }
+ break;
+ case 4:
+ CheckLinkTimeout();
+ if (gReceivedRemoteLinkPlayers == 1 && IsLinkPlayerDataExchangeComplete() == 1)
+ {
+ gMain.state++;
+ }
+ break;
+ case 5:
+ sTradeData->tradeStatus1 = 0;
+ sTradeData->tradeStatus2 = 0;
+ sTradeData->scheduleLinkTransfer = 0;
+ LoadTradeMonPic(0, 0);
+ gMain.state++;
+ break;
+ case 6:
+ LoadTradeMonPic(0, 1);
+ gMain.state++;
+ break;
+ case 7:
+ LoadTradeMonPic(1, 0);
+ gMain.state++;
+ break;
+ case 8:
+ LoadTradeMonPic(1, 1);
+ sub_80504B0();
+ gMain.state++;
+ break;
+ case 9:
+ LoadTradeGbaSpriteGfx();
+ LoadSpriteSheet(&sTradeBallSpriteSheet);
+ LoadSpritePalette(&sTradeBallSpritePal);
+ gMain.state++;
+ break;
+ case 10:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ ShowBg(0);
+ sTradeData->monSpecies[0] = GetMonData(&gPlayerParty[gSelectedTradeMonPositions[0]], MON_DATA_SPECIES2);
+ sTradeData->monSpecies[1] = GetMonData(&gEnemyParty[gSelectedTradeMonPositions[1] % 6], MON_DATA_SPECIES2);
+ memcpy(sTradeData->linkPartnerName, gLinkPlayers[GetMultiplayerId() ^ 1].name, 7);
+ gMain.state++;
+ break;
+ case 11:
+ sub_805049C();
+ TradeBufferOTnameAndNicknames();
+ gMain.state++;
+ break;
+ case 12:
+ if (!gPaletteFade.active)
+ {
+ if (gWirelessCommType != 0)
+ {
+ LoadWirelessStatusIndicatorSpriteGfx();
+ CreateWirelessStatusIndicatorSprite(0, 0);
+ }
+ SetMainCallback2(CB2_RunTradeAnim_LinkTrade);
+ }
+ break;
+ }
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void sub_805049C(void)
+{
+ SetTradeSequenceBgGpuRegs(5);
+ SetTradeSequenceBgGpuRegs(0);
+}
+
+void sub_80504B0(void)
+{
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+}
+
+static void TradeAnimInit_LoadGfx(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgsAndClearDma3BusyFlags(FALSE);
+ InitBgsFromTemplates(0, gUnknown_826D1D4, NELEMS(gUnknown_826D1D4));
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE));
+ SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE));
+ DeactivateAllTextPrinters();
+ // Doing the graphics load...
+ DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0);
+ LZDecompressWram(gFile_graphics_interface_menu_map_tilemap, gDecompressionBuffer);
+ CopyToBgTilemapBuffer(0, gDecompressionBuffer, BG_SCREEN_SIZE, 0);
+ LoadCompressedPalette(gBattleTextboxPalette, 0x000, 0x20);
+ InitWindows(gUnknown_826D1BC);
+ // ... and doing the same load again
+ DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0);
+ LZDecompressWram(gFile_graphics_interface_menu_map_tilemap, gDecompressionBuffer);
+ CopyToBgTilemapBuffer(0, gDecompressionBuffer, BG_SCREEN_SIZE, 0);
+ LoadCompressedPalette(gBattleTextboxPalette, 0x000, 0x20);
+}
+
+static void CB2_InitTradeAnim_InGameTrade(void)
+{
+ u8 otName[11];
+
+ switch (gMain.state)
+ {
+ case 0:
+ 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);
+ sTradeData = AllocZeroed(sizeof(*sTradeData));
+ AllocateMonSpritesGfx();
+ ResetTasks();
+ ResetSpriteData();
+ FreeAllSpritePalettes();
+ SetVBlankCallback(VBlankCB_TradeAnim);
+ TradeAnimInit_LoadGfx();
+ sTradeData->isLinkTrade = FALSE;
+ sTradeData->unk_8C = 0;
+ sTradeData->state = 0;
+ sTradeData->bg2texX = 64;
+ sTradeData->bg2texY = 64;
+ sTradeData->unk_D8 = 0;
+ sTradeData->unk_DA = 0;
+ sTradeData->bg2srcX = 120;
+ sTradeData->bg2srcY = 80;
+ sTradeData->sXY = 256;
+ sTradeData->bg2alpha = 0;
+ sTradeData->timer = 0;
+ gMain.state = 5;
+ break;
+ case 5:
+ LoadTradeMonPic(0, 0);
+ gMain.state++;
+ break;
+ case 6:
+ LoadTradeMonPic(0, 1);
+ gMain.state++;
+ break;
+ case 7:
+ LoadTradeMonPic(1, 0);
+ ShowBg(0);
+ gMain.state++;
+ break;
+ case 8:
+ LoadTradeMonPic(1, 1);
+ FillWindowPixelBuffer(0, PIXEL_FILL(15));
+ PutWindowTilemap(0);
+ CopyWindowToVram(0, 3);
+ gMain.state++;
+ break;
+ case 9:
+ LoadTradeGbaSpriteGfx();
+ LoadSpriteSheet(&sTradeBallSpriteSheet);
+ LoadSpritePalette(&sTradeBallSpritePal);
+ gMain.state++;
+ break;
+ case 10:
+ ShowBg(0);
+ gMain.state++;
+ break;
+ case 11:
+ SetTradeSequenceBgGpuRegs(5);
+ SetTradeSequenceBgGpuRegs(0);
+ TradeBufferOTnameAndNicknames();
+ gMain.state++;
+ break;
+ case 12:
+ SetMainCallback2(CB2_RunTradeAnim_InGameTrade);
+ break;
+ }
+
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void ReceivedMonSetPokedexFlags(u8 partyIdx)
+{
+ struct Pokemon * mon = &gPlayerParty[partyIdx];
+
+ if (!GetMonData(mon, MON_DATA_IS_EGG))
+ {
+ u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL);
+ u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL);
+ species = SpeciesToNationalPokedexNum(species);
+ GetSetPokedexFlag(species, FLAG_SET_SEEN);
+ HandleSetPokedexFlag(species, FLAG_SET_CAUGHT, personality);
+ }
+}
+
+static void RS_TryEnableNationalPokedex(void)
+{
+ u8 mpId = GetMultiplayerId();
+ // Originally in Ruby but commented out
+ /*if (gLinkPlayers[mpId ^ 1].lp_field_2 == 0x8000)
+ EnableNationalPokedex();*/
+}
+
+static void TradeMons(u8 playerPartyIdx, u8 partnerPartyIdx)
+{
+ u8 friendship;
+
+ // Get whether the offered Pokemon have mail
+ struct Pokemon * playerMon = &gPlayerParty[playerPartyIdx];
+ u16 playerMail = GetMonData(playerMon, MON_DATA_MAIL);
+
+ struct Pokemon * partnerMon = &gEnemyParty[partnerPartyIdx];
+ u16 partnerMail = GetMonData(partnerMon, MON_DATA_MAIL);
+
+ // The mail attached to the sent Pokemon no longer exists in your file.
+ if (playerMail != 0xFF)
+ ClearMailStruct(&gSaveBlock1Ptr->mail[playerMail]);
+
+ // This is where the actual trade happens!!
+ sTradeData->mon = *playerMon;
+ *playerMon = *partnerMon;
+ *partnerMon = sTradeData->mon;
+
+ // By default, a Pokemon received from a trade will have 70 Friendship.
+ friendship = 70;
+ if (!GetMonData(playerMon, MON_DATA_IS_EGG))
+ SetMonData(playerMon, MON_DATA_FRIENDSHIP, &friendship);
+
+ // Associate your partner's mail with the Pokemon they sent over.
+ if (partnerMail != 0xFF)
+ GiveMailToMon2(playerMon, &gLinkPartnerMail[partnerMail]);
+
+ ReceivedMonSetPokedexFlags(playerPartyIdx);
+ if (gReceivedRemoteLinkPlayers)
+ RS_TryEnableNationalPokedex();
+}
+
+static void HandleLinkDataSend(void)
+{
+ switch (sTradeData->scheduleLinkTransfer)
+ {
+ case 1:
+ if (IsLinkTaskFinished())
+ {
+ SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, 20);
+ sTradeData->scheduleLinkTransfer++;
+ }
+ case 2:
+ sTradeData->scheduleLinkTransfer = 0;
+ break;
+ }
+}
+
+static void CB2_RunTradeAnim_InGameTrade(void)
+{
+ DoTradeAnim();
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void SetTradeSequenceBgGpuRegs(u8 state)
+{
+ switch (state)
+ {
+ case 0:
+ 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);
+ DmaCopyLarge16(3, gTradeGba_Gfx, (void *)BG_CHAR_ADDR(1), 0x1420, 0x1000);
+ DmaCopy16Defvars(3, gUnknown_826601C, (void *)BG_SCREEN_ADDR(18), 0x1000);
+ break;
+ case 1:
+ 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 (sTradeData->isCableTrade)
+ {
+ DmaCopy16Defvars(3, gUnknown_826AA5C, (void *)BG_SCREEN_ADDR(5), 0x1000);
+ }
+ else
+ {
+ DmaCopy16Defvars(3, gUnknown_8269A5C, (void *)BG_SCREEN_ADDR(5), 0x1000);
+ }
+ DmaCopyLarge16(3, gTradeGba_Gfx, (void *)BG_CHAR_ADDR(0), 0x1420, 0x1000);
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
+ break;
+ case 2:
+ sTradeData->bg1vofs = 0;
+ sTradeData->bg1hofs = 0;
+ if (!sTradeData->isCableTrade)
+ {
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
+ LZ77UnCompVram(sUnknown_3379A0Bin, (void *)BG_SCREEN_ADDR(5));
+ BlendPalettes(0x000000008, 0x10, RGB_BLACK);
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON);
+ DmaCopy16Defvars(3, gUnknown_826407C, (void *)BG_SCREEN_ADDR(5), 0x800);
+ BlendPalettes(0x00000001, 0x10, RGB_BLACK);
+ }
+ break;
+ case 3:
+ LoadPalette(sWirelessSignalAnimPals_Off, 0x30, 0x20);
+ LZ77UnCompVram(sWirelessSignal4bpp, BG_CHAR_ADDR(1));
+ LZ77UnCompVram(sWirelessSignalTilemap, BG_SCREEN_ADDR(18));
+ 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);
+ sTradeData->bg2texX = 0x40;
+ sTradeData->bg2texY = 0x5C;
+ sTradeData->sXY = 0x20;
+ sTradeData->bg2Zoom = 0x400;
+ sTradeData->bg2alpha = 0;
+ DmaCopyLarge16(3, gUnknown_826701C, (void *)BG_CHAR_ADDR(1), 0x2840, 0x1000);
+ if (sTradeData->isCableTrade)
+ {
+ DmaCopy16Defvars(3, gUnknown_826985C, (void *)BG_SCREEN_ADDR(18), 0x100);
+ }
+ else
+ {
+ DmaCopy16Defvars(3, gUnknown_826995C, (void *)BG_SCREEN_ADDR(18), 0x100);
+ }
+ break;
+ case 5:
+ 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);
+ sTradeData->bg2texX = 0x40;
+ sTradeData->bg2texY = 0x5C;
+ sTradeData->sXY = 0x100;
+ sTradeData->bg2Zoom = 0x80;
+ sTradeData->bg2srcX = 0x78;
+ sTradeData->bg2srcY = 0x50;
+ sTradeData->bg2alpha = 0;
+ DmaCopyLarge16(3, gUnknown_826701C, BG_CHAR_ADDR(1), 0x2840, 0x1000);
+ if (sTradeData->isCableTrade)
+ {
+ DmaCopy16Defvars(3, gUnknown_826985C, (void *)BG_SCREEN_ADDR(18), 0x100);
+ }
+ else
+ {
+ DmaCopy16Defvars(3, gUnknown_826995C, (void *)BG_SCREEN_ADDR(18), 0x100);
+ }
+ break;
+ case 7:
+ 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);
+ DmaCopyLarge16(3, gTradeGba_Gfx, (void *)BG_CHAR_ADDR(1), 0x1420, 0x1000);
+ DmaCopy16Defvars(3, gUnknown_826601C, (void *)BG_SCREEN_ADDR(18), 0x1000);
+ break;
+ }
+}
+
+static void LoadTradeGbaSpriteGfx(void)
+{
+ LoadSpriteSheet(&sTradeGlow1SpriteSheet);
+ LoadSpriteSheet(&sTradeGlow2SpriteSheet);
+ LoadSpriteSheet(&sTradeCableEndSpriteSheet);
+ LoadSpriteSheet(&sTradeGBAScreenSpriteSheet);
+ LoadSpritePalette(&sTradeGlowSpritePal);
+ LoadSpritePalette(&sTradeGbaSpritePal);
+}
+
+static void TradeBufferOTnameAndNicknames(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 = &sInGameTrades[gSpecialVar_0x8004];
+ StringCopy(gStringVar1, inGameTrade->otName);
+ StringCopy10(gStringVar3, inGameTrade->nickname);
+ GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar2, nickname);
+ }
+}
+
+static bool8 DoTradeAnim(void)
+{
+ if (sTradeData->isCableTrade)
+ return DoTradeAnim_Cable();
+ else
+ return DoTradeAnim_Wireless();
+}
+
+static bool8 DoTradeAnim_Cable(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->pokeballSpriteId2 = CreateSprite(&sTradePokeballSpriteTemplate, 120, 32, 0);
+ gSprites[sTradeData->pokeballSpriteId2].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->bg2Zoom > 0x100)
+ {
+ sTradeData->bg2Zoom -= 0x34;
+ }
+ else
+ {
+ SetTradeSequenceBgGpuRegs(1);
+ sTradeData->bg2Zoom = 0x80;
+ sTradeData->state++;
+ sTradeData->timer = 0;
+ }
+ sTradeData->sXY = 0x8000 / sTradeData->bg2Zoom;
+ break;
+ case 24:
+ if (++sTradeData->timer > 20)
+ {
+ SetTradeBGAffine();
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sTradeGBAScreenSpriteTemplate1, 120, 80, 0);
+ sTradeData->state++;
+ }
+ break;
+ case 25:
+ if (gSprites[sTradeData->gbaScreenSpriteId].animEnded)
+ {
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ 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->linkCableEndSpriteId = CreateSprite(&sGameLinkCableEndSpriteTemplate, 128, 65, 0);
+ }
+ break;
+ case 27:
+ sTradeData->tradeGlow1SpriteId = CreateSprite(&sTradeGlow1SpriteTemplate, 128, 80, 3);
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 128, 80, 0);
+ StartSpriteAnim(&gSprites[sTradeData->gbaScreenSpriteId], 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->tradeGlow1SpriteId].pos1.y -= 2;
+ gSprites[sTradeData->gbaScreenSpriteId].pos1.y -= 2;
+ if (gSprites[sTradeData->tradeGlow1SpriteId].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->tradeGlow1SpriteId]);
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ SetTradeSequenceBgGpuRegs(2);
+ sTradeData->state++;
+ }
+ break;
+ case 31:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ sTradeData->tradeGlow1SpriteId = CreateSprite(&sGlowBallSpriteTemplate, 111, 170, 0);
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 129, -10, 0);
+ sTradeData->state++;
+ break;
+ case 32:
+ if (!gPaletteFade.active)
+ {
+ PlaySE(SE_TK_WARPOUT);
+ sTradeData->state++;
+ }
+ gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3;
+ gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3;
+ break;
+ case 33:
+ gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3;
+ gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3;
+ if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y <= -90)
+ {
+ gSprites[sTradeData->tradeGlow1SpriteId].data[1] = 1;
+ gSprites[sTradeData->gbaScreenSpriteId].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 = sSpriteAffineAnimTable_PlayerPokePicAlt;
+ 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->tradeGlow1SpriteId].data[1] = 0;
+ gSprites[sTradeData->gbaScreenSpriteId].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->tradeGlow1SpriteId].pos2.y -= 3;
+ gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3;
+ if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y <= -222)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+ sTradeData->state++;
+ DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]);
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ }
+ break;
+ case 40:
+ if (!gPaletteFade.active)
+ {
+ sTradeData->state++;
+ SetTradeSequenceBgGpuRegs(1);
+ sTradeData->bg1vofs = 166;
+ sTradeData->tradeGlow1SpriteId = CreateSprite(&sTradeGlow1SpriteTemplate, 128, -20, 3);
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 128, -20, 0);
+ StartSpriteAnim(&gSprites[sTradeData->gbaScreenSpriteId], 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->tradeGlow1SpriteId].pos2.y += 3;
+ gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3;
+ if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y + gSprites[sTradeData->tradeGlow1SpriteId].pos1.y == 64)
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 44:
+ if ((sTradeData->bg1vofs += 2) > 316)
+ {
+ sTradeData->bg1vofs = 316;
+ sTradeData->state++;
+ }
+ break;
+ case 45:
+ DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]);
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ 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->linkCableEndSpriteId = CreateSprite(&sGameLinkCableEndSpriteTemplate, 128, 65, 0);
+ gSprites[sTradeData->linkCableEndSpriteId].callback = SpriteCB_GameLinkCableEnd_Inbound;
+ }
+ break;
+ case 48:
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sTradeGBAScreenSpriteTemplate1, 120, 80, 0);
+ sTradeData->state = 50;
+ break;
+ case 50:
+ if (gSprites[sTradeData->gbaScreenSpriteId].animEnded)
+ {
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ SetTradeSequenceBgGpuRegs(6);
+ sTradeData->state++;
+ PlaySE(SE_W028);
+ }
+ break;
+ case 51:
+ if (sTradeData->bg2Zoom < 0x400)
+ {
+ sTradeData->bg2Zoom += 0x34;
+ }
+ else
+ {
+ sTradeData->bg2Zoom = 0x400;
+ sTradeData->state++;
+ }
+ sTradeData->sXY = 0x8000 / sTradeData->bg2Zoom;
+ 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->pokeballSpriteId2 = CreateSprite(&sTradePokeballSpriteTemplate, 120, -8, 0);
+ gSprites[sTradeData->pokeballSpriteId2].data[3] = 74;
+ gSprites[sTradeData->pokeballSpriteId2].callback = SpriteCB_TradePokeball_Inbound;
+ StartSpriteAnim(&gSprites[sTradeData->pokeballSpriteId2], 1);
+ StartSpriteAffineAnim(&gSprites[sTradeData->pokeballSpriteId2], 2);
+ BlendPalettes(1 << (16 + gSprites[sTradeData->pokeballSpriteId2].oam.paletteNum), 16, RGB_WHITEALPHA);
+ sTradeData->state++;
+ sTradeData->timer = 0;
+ break;
+ case 64:
+ BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->pokeballSpriteId2].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 65:
+ if (gSprites[sTradeData->pokeballSpriteId2].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->pokeballSpriteId2]);
+ DestroySprite(&gSprites[sTradeData->pokeballSpriteId2]);
+ 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;
+}
+
+static bool8 DoTradeAnim_Wireless(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->pokeballSpriteId2 = CreateSprite(&sTradePokeballSpriteTemplate, 120, 32, 0);
+ gSprites[sTradeData->pokeballSpriteId2].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->bg2Zoom > 0x100)
+ {
+ sTradeData->bg2Zoom -= 0x34;
+ }
+ else
+ {
+ SetTradeSequenceBgGpuRegs(1);
+ sTradeData->bg2Zoom = 0x80;
+ sTradeData->state = 124;
+ sTradeData->timer = 0;
+ }
+ sTradeData->sXY = 0x8000 / sTradeData->bg2Zoom;
+ break;
+ case 124:
+ if (++sTradeData->timer > 20)
+ {
+ SetTradeSequenceBgGpuRegs(3);
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sTradeGBAScreenSpriteTemplate2, 120, 80, 0);
+ sTradeData->state++;
+ }
+ break;
+ case 125:
+ if (gSprites[sTradeData->gbaScreenSpriteId].animEnded)
+ {
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 |
+ BLDCNT_TGT1_OBJ |
+ BLDCNT_EFFECT_BLEND |
+ BLDCNT_TGT2_BG2);
+ SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 4));
+ CreateTask(Task_AnimateWirelessSignal, 5);
+ sTradeData->state++;
+ }
+ break;
+ case 126:
+ if (!FuncIsActiveTask(Task_AnimateWirelessSignal))
+ {
+ sTradeData->state = 26;
+ }
+ break;
+ case 26:
+ if (--sTradeData->bg1vofs == 316)
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 27:
+ sTradeData->tradeGlow1SpriteId = CreateSprite(&sTradeGlow1SpriteTemplate, 120, 80, 3);
+ gSprites[sTradeData->tradeGlow1SpriteId].callback = SpriteCB_TradeGlowWireless;
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 120, 80, 0);
+ StartSpriteAnim(&gSprites[sTradeData->gbaScreenSpriteId], 1);
+ sTradeData->state++;
+ break;
+ case 28:
+ if ((sTradeData->bg1vofs -= 3) == 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->tradeGlow1SpriteId].pos1.y -= 2;
+ gSprites[sTradeData->gbaScreenSpriteId].pos1.y -= 2;
+ if (gSprites[sTradeData->tradeGlow1SpriteId].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->tradeGlow1SpriteId]);
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ SetTradeSequenceBgGpuRegs(2);
+ sTradeData->state++;
+ }
+ break;
+ case 31:
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 16, 0, RGB_BLACK);
+ sTradeData->tradeGlow1SpriteId = CreateSprite(&sGlowBallSpriteTemplate, 111, 170, 0);
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 129, -10, 0);
+ sTradeData->state++;
+ break;
+ case 32:
+ if (!gPaletteFade.active)
+ {
+ PlaySE(SE_TK_WARPOUT);
+ sTradeData->state++;
+ }
+ gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3;
+ gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3;
+ break;
+ case 33:
+ gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3;
+ gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3;
+ if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y <= -90)
+ {
+ gSprites[sTradeData->tradeGlow1SpriteId].data[1] = 1;
+ gSprites[sTradeData->gbaScreenSpriteId].data[1] = 1;
+ sTradeData->state++;
+ CreateTask(Task_OpenCenterWhiteColumn, 5);
+ }
+ break;
+ case 34:
+ BlendPalettes(0x8, 16, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 35:
+ BlendPalettes(0x8, 16, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 36:
+ BlendPalettes(0x8, 16, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 37:
+ if (!IsPokeSpriteNotFlipped(sTradeData->tradeSpecies[0]))
+ {
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].affineAnims = sSpriteAffineAnimTable_PlayerPokePicAlt;
+ 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 = 40;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].pos1.x = 200;
+ 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->tradeGlow1SpriteId].data[1] = 0;
+ gSprites[sTradeData->gbaScreenSpriteId].data[1] = 0;
+ sTradeData->state++;
+ gSprites[sTradeData->pokePicSpriteIdxs[0]].invisible = TRUE;
+ gSprites[sTradeData->pokePicSpriteIdxs[1]].invisible = TRUE;
+ CreateTask(Task_CloseCenterWhiteColumn, 5);
+ }
+ break;
+ case 39:
+ gSprites[sTradeData->tradeGlow1SpriteId].pos2.y -= 3;
+ gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 3;
+ if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y <= -222)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK);
+ sTradeData->state++;
+ DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]);
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ }
+ break;
+ case 40:
+ if (!gPaletteFade.active)
+ {
+ sTradeData->state++;
+ SetTradeSequenceBgGpuRegs(1);
+ sTradeData->bg1vofs = 166;
+ SetTradeSequenceBgGpuRegs(3);
+ sTradeData->bg2vofs = 412;
+ sTradeData->tradeGlow1SpriteId = CreateSprite(&sTradeGlow1SpriteTemplate, 120, -20, 3);
+ gSprites[sTradeData->tradeGlow1SpriteId].callback = SpriteCB_TradeGlowWireless;
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sGlowBallSpriteTemplate, 120, -20, 0);
+ StartSpriteAnim(&gSprites[sTradeData->gbaScreenSpriteId], 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->tradeGlow1SpriteId].pos2.y += 4;
+ gSprites[sTradeData->gbaScreenSpriteId].pos2.y += 4;
+ if (gSprites[sTradeData->tradeGlow1SpriteId].pos2.y + gSprites[sTradeData->tradeGlow1SpriteId].pos1.y == 64)
+ {
+ sTradeData->state = 144;
+ sTradeData->timer = 0;
+ }
+ break;
+ case 144:
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 |
+ DISPCNT_OBJ_1D_MAP |
+ DISPCNT_BG1_ON |
+ DISPCNT_BG2_ON |
+ DISPCNT_OBJ_ON);
+ sTradeData->bg1vofs += 3;
+ sTradeData->bg2vofs += 3;
+ if (++sTradeData->timer == 10)
+ {
+ u8 taskId = CreateTask(Task_AnimateWirelessSignal, 5);
+ gTasks[taskId].data[2] = TRUE;
+ }
+ if (sTradeData->bg1vofs > 316)
+ {
+ sTradeData->bg1vofs = 316;
+ sTradeData->state++;
+ }
+ break;
+ case 145:
+ DestroySprite(&gSprites[sTradeData->tradeGlow1SpriteId]);
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ sTradeData->state++;
+ sTradeData->timer = 0;
+ break;
+ case 146:
+ if (!FuncIsActiveTask(Task_AnimateWirelessSignal))
+ {
+ sTradeData->state = 46;
+ sTradeData->timer = 0;
+ }
+ break;
+ case 46:
+ if (++sTradeData->timer == 10)
+ {
+ sTradeData->state++;
+ }
+ break;
+ case 47:
+ if (++sTradeData->bg1vofs > 348)
+ {
+ sTradeData->bg1vofs = 348;
+ sTradeData->state++;
+ }
+ break;
+ case 48:
+ sTradeData->gbaScreenSpriteId = CreateSprite(&sTradeGBAScreenSpriteTemplate1, 120, 80, 0);
+ sTradeData->state = 50;
+ break;
+ case 50:
+ if (gSprites[sTradeData->gbaScreenSpriteId].animEnded)
+ {
+ DestroySprite(&gSprites[sTradeData->gbaScreenSpriteId]);
+ SetTradeSequenceBgGpuRegs(6);
+ sTradeData->state++;
+ PlaySE(SE_W028);
+ }
+ break;
+ case 51:
+ if (sTradeData->bg2Zoom < 0x400)
+ {
+ sTradeData->bg2Zoom += 0x34;
+ }
+ else
+ {
+ sTradeData->bg2Zoom = 0x400;
+ sTradeData->state++;
+ }
+ sTradeData->sXY = 0x8000 / sTradeData->bg2Zoom;
+ 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->pokeballSpriteId2 = CreateSprite(&sTradePokeballSpriteTemplate, 120, -8, 0);
+ gSprites[sTradeData->pokeballSpriteId2].data[3] = 74;
+ gSprites[sTradeData->pokeballSpriteId2].callback = SpriteCB_TradePokeball_Inbound;
+ StartSpriteAnim(&gSprites[sTradeData->pokeballSpriteId2], 1);
+ StartSpriteAffineAnim(&gSprites[sTradeData->pokeballSpriteId2], 2);
+ BlendPalettes(1 << (16 + gSprites[sTradeData->pokeballSpriteId2].oam.paletteNum), 16, RGB_WHITEALPHA);
+ sTradeData->state++;
+ sTradeData->timer = 0;
+ break;
+ case 64:
+ BeginNormalPaletteFade(1 << (16 + gSprites[sTradeData->pokeballSpriteId2].oam.paletteNum), 1, 16, 0, RGB_WHITEALPHA);
+ sTradeData->state++;
+ break;
+ case 65:
+ if (gSprites[sTradeData->pokeballSpriteId2].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->pokeballSpriteId2]);
+ DestroySprite(&gSprites[sTradeData->pokeballSpriteId2]);
+ 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;
+}
+
+static void sub_8053788(void)
+{
+ u16 evoSpecies;
+ switch (gMain.state)
+ {
+ case 0:
+ gMain.state = 4;
+ gSoftResetDisabled = TRUE;
+ break;
+ case 4:
+ gCB2_AfterEvolution = sub_8053E8C;
+ evoSpecies = GetEvolutionTargetSpecies(&gPlayerParty[gSelectedTradeMonPositions[0]], 1, 0);
+ if (evoSpecies != SPECIES_NONE)
+ TradeEvolutionScene(&gPlayerParty[gSelectedTradeMonPositions[0]], evoSpecies, sTradeData->pokePicSpriteIdxs[1], gSelectedTradeMonPositions[0]);
+ else
+ SetMainCallback2(sub_8053E8C);
+ gSelectedTradeMonPositions[0] = 0xFF;
+ break;
+ }
+ if (!HasLinkErrorOccurred())
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void HandleLinkDataReceive(void)
+{
+ u8 recvStatus;
+ GetMultiplayerIdIfLinkTrade();
+ recvStatus = GetBlockReceivedStatus();
+ if (recvStatus & (1 << 0))
+ {
+ if (gBlockRecvBuffer[0][0] == 0xDCBA)
+ SetMainCallback2(sub_8053788);
+ if (gBlockRecvBuffer[0][0] == 0xABCD)
+ sTradeData->tradeStatus1 = 1;
+ ResetBlockReceivedFlag(0);
+ }
+ if (recvStatus & (1 << 1))
+ {
+ if (gBlockRecvBuffer[1][0] == 0xABCD)
+ sTradeData->tradeStatus2 = 1;
+ ResetBlockReceivedFlag(1);
+ }
+}
+
+static void SpriteCB_TradePokeball_Default(struct Sprite * sprite)
+{
+ sprite->pos1.y += sprite->data[0] / 10;
+ sprite->data[5] += sprite->data[1];
+ sprite->pos1.x = sprite->data[5] / 10;
+ if (sprite->pos1.y > 76)
+ {
+ sprite->pos1.y = 76;
+ sprite->data[0] = -(sprite->data[0] * sprite->data[2]) / 100;
+ sprite->data[3]++;
+ }
+ if (sprite->pos1.x == 120)
+ sprite->data[1] = 0;
+ sprite->data[0] += sprite->data[4];
+ if (sprite->data[3] == 4)
+ {
+ sprite->data[7] = 1;
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+static void SpriteCB_TradePokeball_Outbound(struct Sprite * sprite)
+{
+ sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]];
+ if (sprite->data[0] == 22)
+ PlaySE(SE_KON);
+ sprite->data[0]++;
+ if (sprite->data[0] == 44)
+ {
+ PlaySE(SE_W025);
+ sprite->callback = SpriteCB_TradePokeball_Outbound2;
+ sprite->data[0] = 0;
+ BeginNormalPaletteFade(1 << (sprite->oam.paletteNum + 16), -1, 0, 16, RGB_WHITEALPHA);
+ }
+}
+
+static void SpriteCB_TradePokeball_Outbound2(struct Sprite * sprite)
+{
+ if (sprite->data[1] == 20)
+ StartSpriteAffineAnim(sprite, 1);
+ sprite->data[1]++;
+ if (sprite->data[1] > 20)
+ {
+ sprite->pos2.y -= sTradeBallVerticalVelocityTable[sprite->data[0]];
+ sprite->data[0]++;
+ if (sprite->data[0] == 23)
+ {
+ DestroySprite(sprite);
+ sTradeData->state = 14;
+ }
+ }
+}
+
+static void SpriteCB_TradePokeball_Inbound(struct Sprite * sprite)
+{
+ if (sprite->data[2] == 0)
+ {
+ sprite->pos1.y += 4;
+ if (sprite->pos1.y > sprite->data[3])
+ {
+ sprite->data[2]++;
+ sprite->data[0] = 22;
+ PlaySE(SE_KON);
+ }
+ }
+ else
+ {
+ if (sprite->data[0] == 66)
+ PlaySE(SE_KON2);
+ if (sprite->data[0] == 92)
+ PlaySE(SE_KON3);
+ if (sprite->data[0] == 107)
+ PlaySE(SE_KON4);
+ sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]];
+ sprite->data[0]++;
+ if (sprite->data[0] == 108)
+ sprite->callback = SpriteCallbackDummy;
+ }
+}
+
+u16 GetInGameTradeSpeciesInfo(void)
+{
+ // Populates gStringVar1 with the name of the requested species and
+ // gStringVar2 with the name of the offered species.
+ // Returns the requested species.
+ const struct InGameTrade * inGameTrade = &sInGameTrades[gSpecialVar_0x8004];
+ StringCopy(gStringVar1, gSpeciesNames[inGameTrade->requestedSpecies]);
+ StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]);
+ return inGameTrade->requestedSpecies;
+}
+
+static void BufferInGameTradeMonName(void)
+{
+ // Populates gStringVar1 with the nickname of the sent Pokemon and
+ // gStringVar2 with the name of the offered species.
+ u8 nickname[30];
+ const struct InGameTrade * inGameTrade = &sInGameTrades[gSpecialVar_0x8004];
+ GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_NICKNAME, nickname);
+ StringCopy10(gStringVar1, nickname);
+ StringCopy(gStringVar2, gSpeciesNames[inGameTrade->species]);
+}
+
+static void CreateInGameTradePokemonInternal(u8 playerSlot, u8 inGameTradeIdx)
+{
+ const struct InGameTrade * inGameTrade = &sInGameTrades[inGameTradeIdx];
+ u8 level = GetMonData(&gPlayerParty[playerSlot], MON_DATA_LEVEL);
+ struct MailStruct mail;
+ u8 metLocation = MAPSEC_IN_GAME_TRADE;
+ struct Pokemon * tradeMon = &gEnemyParty[0];
+ u8 mailNum;
+ CreateMon(tradeMon, inGameTrade->species, level, 32, TRUE, inGameTrade->personality, TRUE, inGameTrade->otId);
+ SetMonData(tradeMon, MON_DATA_HP_IV, &inGameTrade->ivs[0]);
+ SetMonData(tradeMon, MON_DATA_ATK_IV, &inGameTrade->ivs[1]);
+ SetMonData(tradeMon, MON_DATA_DEF_IV, &inGameTrade->ivs[2]);
+ SetMonData(tradeMon, MON_DATA_SPEED_IV, &inGameTrade->ivs[3]);
+ SetMonData(tradeMon, MON_DATA_SPATK_IV, &inGameTrade->ivs[4]);
+ SetMonData(tradeMon, MON_DATA_SPDEF_IV, &inGameTrade->ivs[5]);
+ SetMonData(tradeMon, MON_DATA_NICKNAME, inGameTrade->nickname);
+ SetMonData(tradeMon, MON_DATA_OT_NAME, inGameTrade->otName);
+ SetMonData(tradeMon, MON_DATA_OT_GENDER, &inGameTrade->otGender);
+ SetMonData(tradeMon, MON_DATA_ABILITY_NUM, &inGameTrade->abilityNum);
+ SetMonData(tradeMon, MON_DATA_BEAUTY, &inGameTrade->conditions[1]);
+ SetMonData(tradeMon, MON_DATA_CUTE, &inGameTrade->conditions[2]);
+ SetMonData(tradeMon, MON_DATA_COOL, &inGameTrade->conditions[0]);
+ SetMonData(tradeMon, MON_DATA_SMART, &inGameTrade->conditions[3]);
+ SetMonData(tradeMon, MON_DATA_TOUGH, &inGameTrade->conditions[4]);
+ SetMonData(tradeMon, MON_DATA_SHEEN, &inGameTrade->sheen);
+ SetMonData(tradeMon, MON_DATA_MET_LOCATION, &metLocation);
+ mailNum = 0;
+ if (inGameTrade->heldItem != ITEM_NONE)
+ {
+ if (ItemIsMail(inGameTrade->heldItem))
+ {
+ GetInGameTradeMail(&mail, inGameTrade);
+ gLinkPartnerMail[0] = mail;
+ SetMonData(tradeMon, MON_DATA_MAIL, &mailNum);
+ SetMonData(tradeMon, MON_DATA_HELD_ITEM, &inGameTrade->heldItem);
+ }
+ else
+ {
+ SetMonData(tradeMon, MON_DATA_HELD_ITEM, &inGameTrade->heldItem);
+ }
+ }
+ CalculateMonStats(&gEnemyParty[0]);
+}
+
+static void GetInGameTradeMail(struct MailStruct * mail, const struct InGameTrade * inGameTrade)
+{
+ int i;
+ for (i = 0; i < 9; i++)
+ mail->words[i] = sInGameTradeMailMessages[inGameTrade->mailNum][i];
+ StringCopy(mail->playerName, inGameTrade->otName);
+ mail->trainerId[0] = inGameTrade->otId >> 24;
+ mail->trainerId[1] = inGameTrade->otId >> 16;
+ mail->trainerId[2] = inGameTrade->otId >> 8;
+ mail->trainerId[3] = inGameTrade->otId;
+ mail->species = inGameTrade->species;
+ mail->itemId = inGameTrade->heldItem;
+}
+
+u16 GetTradeSpecies(void)
+{
+ if (GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_IS_EGG))
+ return SPECIES_NONE;
+ else
+ return GetMonData(&gPlayerParty[gSpecialVar_0x8005], MON_DATA_SPECIES);
+}
+
+void CreateInGameTradePokemon(void)
+{
+ CreateInGameTradePokemonInternal(gSpecialVar_0x8005, gSpecialVar_0x8004);
+}
+
+static void CB2_RunTradeAnim_LinkTrade(void)
+{
+ if (DoTradeAnim() == TRUE)
+ {
+ DestroySprite(&gSprites[sTradeData->pokePicSpriteIdxs[0]]);
+ FreeSpriteOamMatrix(&gSprites[sTradeData->pokePicSpriteIdxs[1]]);
+ TradeMons(gSelectedTradeMonPositions[0], gSelectedTradeMonPositions[1] % 6);
+ sTradeData->linkData[0] = 0xABCD;
+ sTradeData->scheduleLinkTransfer = 1;
+ SetMainCallback2(CB2_WaitAndAckTradeComplete);
+ }
+ HandleLinkDataSend();
+ HandleLinkDataReceive();
+ RunTasks();
+ RunTextPrinters();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void CB2_WaitAndAckTradeComplete(void)
+{
+ u8 mpId = GetMultiplayerIdIfLinkTrade();
+ HandleLinkDataReceive();
+ if (mpId == 0 && sTradeData->tradeStatus1 == 1 && sTradeData->tradeStatus2 == 1)
+ {
+ sTradeData->linkData[0] = 0xDCBA;
+ SendBlock(bitmask_all_link_players_but_self(), sTradeData->linkData, 20);
+ sTradeData->tradeStatus1 = 2;
+ sTradeData->tradeStatus2 = 2;
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void sub_8053E8C(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ gMain.state++;
+ StringExpandPlaceholders(gStringVar4, gUnknown_841E325);
+ DrawTextOnTradeWindow(0, gStringVar4, 0);
+ break;
+ case 1:
+ sub_800AB9C();
+ gMain.state = 100;
+ sTradeData->timer = 0;
+ break;
+ case 100:
+ if (++sTradeData->timer > 180)
+ {
+ gMain.state = 101;
+ sTradeData->timer = 0;
+ }
+ if (IsLinkTaskFinished())
+ {
+ gMain.state = 2;
+ }
+ break;
+ case 101:
+ if (IsLinkTaskFinished())
+ {
+ gMain.state = 2;
+ }
+ break;
+ case 2:
+ gMain.state = 50;
+ StringExpandPlaceholders(gStringVar4, gText_SavingDontTurnOffThePower2);
+ DrawTextOnTradeWindow(0, gStringVar4, 0);
+ break;
+ case 50:
+ if (InUnionRoom())
+ {
+ sub_8113550(18, sTradeData->monSpecies);
+ }
+ else
+ {
+ sub_8113550(12, sTradeData->monSpecies);
+ IncrementGameStat(GAME_STAT_POKEMON_TRADES);
+ }
+ if (gWirelessCommType)
+ {
+ sub_8144714(2, gLinkPlayers[GetMultiplayerId() ^ 1].trainerId);
+ }
+ SetContinueGameWarpStatusToDynamicWarp();
+ sub_80DA3AC();
+ gMain.state++;
+ sTradeData->timer = 0;
+ break;
+ case 51:
+ if (++sTradeData->timer == 5)
+ {
+ gMain.state++;
+ }
+ break;
+ case 52:
+ if (sub_80DA3D8())
+ {
+ ClearContinueGameWarpStatus2();
+ gMain.state = 4;
+ }
+ else
+ {
+ sTradeData->timer = 0;
+ gMain.state = 51;
+ }
+ break;
+ case 4:
+ sub_80DA40C();
+ gMain.state = 40;
+ sTradeData->timer = 0;
+ break;
+ case 40:
+ if (++sTradeData->timer > 50)
+ {
+ if (GetMultiplayerId() == 0)
+ {
+ sTradeData->timer = Random() % 30;
+ }
+ else
+ {
+ sTradeData->timer = 0;
+ }
+ gMain.state = 41;
+ }
+ break;
+ case 41:
+ if (sTradeData->timer == 0)
+ {
+ sub_800AB9C();
+ gMain.state = 42;
+ }
+ else
+ {
+ sTradeData->timer--;
+ }
+ break;
+ case 42:
+ if (IsLinkTaskFinished())
+ {
+ sub_80DA434();
+ gMain.state = 5;
+ }
+ break;
+ case 5:
+ if (++sTradeData->timer > 60)
+ {
+ gMain.state++;
+ sub_800AB9C();
+ }
+ break;
+ case 6:
+ if (IsLinkTaskFinished())
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gMain.state ++;
+ }
+ break;
+ case 7:
+ if (!gPaletteFade.active)
+ {
+ FadeOutBGM(3);
+ gMain.state++;
+ }
+ break;
+ case 8:
+ if (IsBGMStopped() == TRUE)
+ {
+ if (gWirelessCommType && gMain.savedCallback == CB2_ReturnFromLinkTrade)
+ {
+ sub_800AB9C();
+ }
+ else
+ {
+ sub_800AAC0();
+ }
+ gMain.state++;
+ }
+ break;
+ case 9:
+ if (gWirelessCommType && gMain.savedCallback == CB2_ReturnFromLinkTrade)
+ {
+ if (IsLinkRfuTaskFinished())
+ {
+ gSoftResetDisabled = FALSE;
+ SetMainCallback2(LinkTrade_TearDownAssets);
+ }
+ }
+ else if (!gReceivedRemoteLinkPlayers)
+ {
+ gSoftResetDisabled = FALSE;
+ SetMainCallback2(LinkTrade_TearDownAssets);
+ }
+ break;
+ }
+ if (!HasLinkErrorOccurred())
+ {
+ RunTasks();
+ }
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void LinkTrade_TearDownAssets(void)
+{
+ if (!gPaletteFade.active)
+ {
+ FreeAllWindowBuffers();
+ Free(GetBgTilemapBuffer(3));
+ Free(GetBgTilemapBuffer(1));
+ Free(GetBgTilemapBuffer(0));
+ FreeMonSpritesGfx();
+ FREE_AND_SET_NULL(sTradeData);
+ if (gWirelessCommType != 0)
+ DestroyWirelessStatusIndicatorSprite();
+ SetMainCallback2(gMain.savedCallback);
+ }
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void DoInGameTradeScene(void)
+{
+ ScriptContext2_Enable();
+ CreateTask(Task_WaitFadeAndStartInGameTradeAnim, 10);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ HelpSystem_Disable();
+}
+
+static void Task_WaitFadeAndStartInGameTradeAnim(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ {
+ SetMainCallback2(CB2_InitTradeAnim_InGameTrade);
+ gFieldCallback = FieldCallback_ReturnToEventScript2;
+ DestroyTask(taskId);
+ }
+}
+
+static void CheckPartnersMonForRibbons(void)
+{
+ u8 nRibbons = 0;
+ u8 i;
+ for (i = 0; i < 12; i++)
+ {
+ nRibbons += GetMonData(&gEnemyParty[gSelectedTradeMonPositions[1] % 6], MON_DATA_CHAMPION_RIBBON + i);
+ }
+ if (nRibbons != 0)
+ FlagSet(FLAG_SYS_RIBBON_GET);
+}
+
+void LoadTradeAnimGfx(void)
+{
+ TradeAnimInit_LoadGfx();
+}
+
+void DrawTextOnTradeWindow(u8 windowId, const u8 *str, s8 speed)
+{
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(15));
+ sTradeData->textColor[0] = 15;
+ sTradeData->textColor[1] = 1;
+ sTradeData->textColor[2] = 6;
+ AddTextPrinterParameterized4(windowId, 2, 0, 2, 0, 2, sTradeData->textColor, speed, str);
+ CopyWindowToVram(windowId, 3);
+}
+
+static void Task_AnimateWirelessSignal(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 r2 = 16 * sWirelessSignalAnimParams[data[0]][0];
+ if (data[2] == 0)
+ {
+ if (r2 == 0x100)
+ LoadPalette(sWirelessSignalAnimPals_Off, 0x30, 0x20);
+ else
+ LoadPalette(&sWirelessSignalAnimPals_Outbound[r2], 0x30, 0x20);
+ }
+ else
+ {
+ if (r2 == 0x100)
+ LoadPalette(sWirelessSignalAnimPals_Off, 0x30, 0x20);
+ else
+ LoadPalette(&sWirelessSignalAnimPals_Inbound[r2], 0x30, 0x20);
+ }
+ if (sWirelessSignalAnimParams[data[0]][0] == 0 && data[1] == 0)
+ PlaySE(SE_W215);
+ if (data[1] == sWirelessSignalAnimParams[data[0]][1])
+ {
+ data[0]++;
+ data[1] = 0;
+ if (sWirelessSignalAnimParams[data[0]][1] == 0xFF)
+ DestroyTask(taskId);
+ }
+ else
+ data[1]++;
+}
+
+static void Task_OpenCenterWhiteColumn(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[0] == 0)
+ {
+ sTradeData->win0left = sTradeData->win0right = 120;
+ sTradeData->win0top = 0;
+ sTradeData->win0bottom = 160;
+ SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_OBJ);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 |
+ WININ_WIN0_BG1 |
+ WININ_WIN0_OBJ);
+ }
+
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(sTradeData->win0left, sTradeData->win0right));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(sTradeData->win0top, sTradeData->win0bottom));
+
+ data[0]++;
+ sTradeData->win0left -= 5;
+ sTradeData->win0right += 5;
+
+ if (sTradeData->win0left < 80)
+ {
+ DestroyTask(taskId);
+ }
+}
+
+static void Task_CloseCenterWhiteColumn(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+
+ if (data[0] == 0)
+ {
+ sTradeData->win0left = 80;
+ sTradeData->win0right = 160;
+ SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_OBJ);
+ SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG0 |
+ WININ_WIN0_BG1 |
+ WININ_WIN0_OBJ);
+ }
+
+ SetGpuReg(REG_OFFSET_WIN0H, WIN_RANGE2(sTradeData->win0left, sTradeData->win0right));
+ SetGpuReg(REG_OFFSET_WIN0V, WIN_RANGE2(sTradeData->win0top, sTradeData->win0bottom));
+
+ if (sTradeData->win0left != 120)
+ {
+ data[0]++;
+ sTradeData->win0left += 5;
+ sTradeData->win0right -= 5;
+
+ if (sTradeData->win0left >= 116)
+ BlendPalettes(0x8, 0, RGB_WHITEALPHA);
+ }
+ else
+ {
+ ClearGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_WIN0_ON);
+ DestroyTask(taskId);
+ }
+}
diff --git a/sym_bss.txt b/sym_bss.txt
index a8c5ba44c..1f9f5b3d8 100644
--- a/sym_bss.txt
+++ b/sym_bss.txt
@@ -20,10 +20,9 @@
.include "src/multiboot.o"
.align 2
.include "src/daycare.o"
-
-gUnknown_3000E78: @ 3000E78
- .space 0x4
-
+ .align 2
+ .include "src/trade.o"
+ .align 2
.include "src/play_time.o"
.align 2
gUnknown_3000E80: @ 3000E80
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 77acf5657..d4c25d15f 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -18,75 +18,20 @@
.space 8
@ .include "src/link_rfu.o"
+ .align 2
.include "src/battle_controllers.o"
+ .align 2
.include "src/battle_main.o"
-
-sLearningMoveTableID: @ 2024028
- .space 0x1
-
-gPlayerPartyCount: @ 2024029
- .space 0x1
-
-gEnemyPartyCount: @ 202402A
- .space 0x2
-
-gEnemyParty: @ 202402C
- .space 0xC8
-
-gUnknown_20240F4: @ 20240F4
- .space 0x64
-
-gUnknown_2024158: @ 2024158
- .space 0x64
-
-gUnknown_20241BC: @ 20241BC
- .space 0x64
-
-gUnknown_2024220: @ 2024220
- .space 0x64
-
-gPlayerParty: @ 2024284
- .space 0x64
-
-gUnknown_20242E8: @ 20242E8
- .space 0x64
-
-gUnknown_202434C: @ 202434C
- .space 0x64
-
-gUnknown_20243B0: @ 20243B0
- .space 0x64
-
-gUnknown_2024414: @ 2024414
- .space 0x64
-
-gUnknown_2024478: @ 2024478
- .space 0x64
-
+ .align 2
.include "src/pokemon.o"
+ .align 2
.include "src/daycare.o"
.align 2
.include "src/load_save.o"
-
.align 2
-gUnknown_2031C90: @ 2031C90
- .space 0x4
-
-gUnknown_2031C94: @ 2031C94
- .space 0x38
-
-gUnknown_2031CCC: @ 2031CCC
- .space 0xD8
-
-gUnknown_2031DA4: @ 2031DA4
- .space 0x4
-
-gUnknown_2031DA8: @ 2031DA8
- .space 0x4
-
-gUnknown_2031DAC: @ 2031DAC
- .space 0x4
-
+ .include "src/trade.o"
+ .align 2
+ .include "src/trade_scene.o"
.align 2
.include "src/new_game.o"