summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/naming_screen.s4
-rw-r--r--asm/party_menu.s12
-rw-r--r--asm/pokemon_icon.s12
-rw-r--r--asm/pokemon_storage_system.s2
-rw-r--r--asm/pokemon_summary_screen.s2
-rw-r--r--asm/trade.s1096
-rw-r--r--data/data.s40
-rw-r--r--data/ingame_trades.inc174
-rw-r--r--include/link.h7
-rw-r--r--include/link_rfu.h2
-rw-r--r--include/party_menu.h1
-rw-r--r--include/pokemon_icon.h4
-rw-r--r--include/pokemon_storage_system.h1
-rw-r--r--ld_script.txt1
-rw-r--r--src/mevent_8145654.c2
-rw-r--r--src/trade.c1325
16 files changed, 1582 insertions, 1103 deletions
diff --git a/asm/naming_screen.s b/asm/naming_screen.s
index 09f4ca070..817d215a0 100644
--- a/asm/naming_screen.s
+++ b/asm/naming_screen.s
@@ -2849,7 +2849,7 @@ _0809EFEC: .4byte gUnknown_83E252C
sub_809EFF0: @ 809EFF0
push {lr}
sub sp, 0xC
- bl sub_809707C
+ bl LoadMonIconPalettes
ldr r0, _0809F038 @ =gUnknown_203998C
ldr r3, [r0]
ldr r1, _0809F03C @ =0x00001e34
@@ -2866,7 +2866,7 @@ sub_809EFF0: @ 809EFF0
str r2, [sp, 0x8]
movs r2, 0x38
movs r3, 0x28
- bl sub_8096E18
+ bl CreateMonIcon
lsls r0, 24
lsrs r0, 24
ldr r2, _0809F048 @ =gSprites
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 58c6e3732..df016c018 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
@@ -373,7 +373,7 @@ _0811ED44:
bl sub_8122980
b _0811EDFC
_0811ED4A:
- bl sub_809707C
+ bl LoadMonIconPalettes
b _0811EDFC
_0811ED50:
bl party_menu_add_per_mon_objects
@@ -7216,7 +7216,7 @@ party_menu_link_mon_icon_anim: @ 812224C
ldr r0, [sp, 0x20]
str r0, [sp, 0x8]
adds r0, r5, 0
- bl sub_8096E18
+ bl CreateMonIcon
strb r0, [r4, 0x9]
ldr r2, _081222A8 @ =gSprites
ldrb r0, [r4, 0x9]
@@ -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
diff --git a/asm/pokemon_icon.s b/asm/pokemon_icon.s
index 4eb654a50..f7ab6b1a6 100644
--- a/asm/pokemon_icon.s
+++ b/asm/pokemon_icon.s
@@ -5,8 +5,8 @@
.text
- thumb_func_start sub_8096E18
-sub_8096E18: @ 8096E18
+ thumb_func_start CreateMonIcon
+CreateMonIcon: @ 8096E18
push {r4-r7,lr}
mov r7, r9
mov r6, r8
@@ -89,7 +89,7 @@ _08096EBC: .4byte gUnknown_83D40E0
_08096EC0: .4byte gUnknown_83D3E80
_08096EC4: .4byte 0x0000dac0
_08096EC8: .4byte gSprites
- thumb_func_end sub_8096E18
+ thumb_func_end CreateMonIcon
thumb_func_start sub_8096ECC
sub_8096ECC: @ 8096ECC
@@ -330,8 +330,8 @@ sub_8097070: @ 8097070
bx r0
thumb_func_end sub_8097070
- thumb_func_start sub_809707C
-sub_809707C: @ 809707C
+ thumb_func_start LoadMonIconPalettes
+LoadMonIconPalettes: @ 809707C
push {r4,r5,lr}
movs r4, 0
ldr r5, _0809709C @ =gUnknown_83D4038
@@ -349,7 +349,7 @@ _08097082:
bx r0
.align 2, 0
_0809709C: .4byte gUnknown_83D4038
- thumb_func_end sub_809707C
+ thumb_func_end LoadMonIconPalettes
thumb_func_start SafeLoadMonIconPalette
SafeLoadMonIconPalette: @ 80970A0
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index f1188910d..a68ced640 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -8688,7 +8688,7 @@ _0808FFA8: .4byte 0x00004037
thumb_func_start sub_808FFAC
sub_808FFAC: @ 808FFAC
push {r4-r6,lr}
- bl sub_809707C
+ bl LoadMonIconPalettes
movs r2, 0
ldr r3, _0809003C @ =gUnknown_20397B0
ldr r5, _08090040 @ =0x00000b04
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index f6f746313..ec6e6723d 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -10814,7 +10814,7 @@ _08139E58:
adds r0, r5, 0
movs r2, 0x18
movs r3, 0x20
- bl sub_8096E18
+ bl CreateMonIcon
ldr r1, [r6]
ldr r2, _08139E9C @ =0x00003014
adds r1, r2
diff --git a/asm/trade.s b/asm/trade.s
index 3573dcfaf..0aa029b62 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -5,1048 +5,6 @@
.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 sub_809707C
- 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 IsRfuTaskFinished
- 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 @ =gUnknown_8261E40
-_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 @ =sub_809718C
- bl sub_8096E18
- 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 @ =gUnknown_8261E40
- 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 @ =sub_809718C
- bl sub_8096E18
- 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 gUnknown_8261E40
-_0804CB3C: .4byte gPlayerParty
-_0804CB40: .4byte 0xfff40000
-_0804CB44: .4byte sub_809718C
-_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 @ =gUnknown_8261E8A
- 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 @ =gUnknown_8261E8A
- 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 gUnknown_8261E8A
-_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 @ =gUnknown_8261E40
- 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 gUnknown_8261E40
-_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}
@@ -1178,7 +136,7 @@ _0804D00C:
cmp r6, r0
bge _0804D0A8
mov r8, r4
- ldr r7, _0804D138 @ =gUnknown_8261E40
+ ldr r7, _0804D138 @ =gTradeMonSpriteCoords
_0804D048:
movs r0, 0x64
adds r4, r6, 0
@@ -1212,7 +170,7 @@ _0804D048:
str r1, [sp, 0x8]
adds r0, r5, 0
ldr r1, _0804D144 @ =sub_809718C
- bl sub_8096E18
+ bl CreateMonIcon
mov r2, r8
ldr r1, [r2]
adds r1, 0x28
@@ -1233,7 +191,7 @@ _0804D0A8:
ldrb r0, [r0]
cmp r6, r0
bge _0804D120
- ldr r0, _0804D138 @ =gUnknown_8261E40
+ ldr r0, _0804D138 @ =gTradeMonSpriteCoords
mov r8, r1
adds r7, r0, 0
adds r7, 0xC
@@ -1271,7 +229,7 @@ _0804D0BE:
str r0, [sp, 0x8]
adds r0, r5, 0
ldr r1, _0804D144 @ =sub_809718C
- bl sub_8096E18
+ bl CreateMonIcon
mov r2, r8
ldr r1, [r2]
adds r1, 0x2E
@@ -1294,14 +252,14 @@ _0804D120:
_0804D12C: .4byte gUnknown_2031DA8
_0804D130: .4byte gPlayerPartyCount
_0804D134: .4byte gEnemyPartyCount
-_0804D138: .4byte gUnknown_8261E40
+_0804D138: .4byte gTradeMonSpriteCoords
_0804D13C: .4byte gPlayerParty
_0804D140: .4byte 0xfff40000
_0804D144: .4byte sub_809718C
_0804D148: .4byte gEnemyParty
_0804D14C: .4byte gMain
_0804D150:
- bl sub_8122550
+ bl LoadHeldItemIcons
ldr r0, _0804D170 @ =gUnknown_2031DA8
ldr r1, [r0]
adds r0, r1, 0
@@ -1424,7 +382,7 @@ _0804D24C:
adds r0, r1
movs r6, 0
add r5, sp, 0xC
- ldr r3, _0804D310 @ =gUnknown_8261E8A
+ ldr r3, _0804D310 @ =gTradeUnknownSpriteCoords
mov r8, r3
asrs r0, 1
ldrb r7, [r3, 0x4]
@@ -1471,7 +429,7 @@ _0804D270:
adds r0, r1
movs r6, 0
add r5, sp, 0xC
- ldr r7, _0804D310 @ =gUnknown_8261E8A
+ ldr r7, _0804D310 @ =gTradeUnknownSpriteCoords
mov r8, r7
asrs r0, 1
mov r1, r8
@@ -1506,7 +464,7 @@ _0804D2D4:
b _0804D4B4
.align 2, 0
_0804D30C: .4byte gSaveBlock2Ptr
-_0804D310: .4byte gUnknown_8261E8A
+_0804D310: .4byte gTradeUnknownSpriteCoords
_0804D314: .4byte gUnknown_8261CC8
_0804D318: .4byte gLinkPlayers + 8
_0804D31C: .4byte gMain
@@ -1590,7 +548,7 @@ _0804D3C0:
adds r1, 0x35
strb r0, [r1]
ldr r0, _0804D404 @ =gUnknown_8261CB0
- ldr r3, _0804D408 @ =gUnknown_8261E40
+ ldr r3, _0804D408 @ =gTradeMonSpriteCoords
ldr r4, _0804D40C @ =gUnknown_2031DA8
ldr r1, [r4]
adds r1, 0x35
@@ -1621,7 +579,7 @@ _0804D3C0:
b _0804D4D2
.align 2, 0
_0804D404: .4byte gUnknown_8261CB0
-_0804D408: .4byte gUnknown_8261E40
+_0804D408: .4byte gTradeMonSpriteCoords
_0804D40C: .4byte gUnknown_2031DA8
_0804D410: .4byte gMain
_0804D414:
@@ -3214,7 +2172,7 @@ _0804E0CC:
adds r1, r0
lsls r1, 2
adds r1, r5
- ldr r2, _0804E130 @ =gUnknown_8261E40
+ ldr r2, _0804E130 @ =gTradeMonSpriteCoords
lsls r3, r6, 1
adds r0, r3, r2
ldrb r0, [r0]
@@ -3245,7 +2203,7 @@ _0804E120:
.align 2, 0
_0804E128: .4byte gUnknown_2031DA8
_0804E12C: .4byte gSprites
-_0804E130: .4byte gUnknown_8261E40
+_0804E130: .4byte gTradeMonSpriteCoords
thumb_func_end TradeMenuMoveCursor
thumb_func_start sub_804E134
@@ -4622,7 +3580,7 @@ _0804EBA2:
adds r2, r0
lsls r2, 2
add r2, r8
- ldr r5, _0804ECA8 @ =gUnknown_8261E40
+ ldr r5, _0804ECA8 @ =gTradeMonSpriteCoords
lsls r6, 2
adds r0, r6, r5
ldrb r0, [r0]
@@ -4697,7 +3655,7 @@ _0804EC98:
.align 2, 0
_0804ECA0: .4byte gSprites
_0804ECA4: .4byte gUnknown_2031DA8
-_0804ECA8: .4byte gUnknown_8261E40
+_0804ECA8: .4byte gTradeMonSpriteCoords
_0804ECAC: .4byte sub_809718C
_0804ECB0: .4byte gUnknown_8260A32
_0804ECB4:
@@ -4762,7 +3720,7 @@ _0804ECEC:
adds r2, r0
lsls r2, 2
adds r2, r6
- ldr r5, _0804EE14 @ =gUnknown_8261E40
+ ldr r5, _0804EE14 @ =gTradeMonSpriteCoords
lsls r3, 2
adds r0, r3, r5
ldrb r0, [r0]
@@ -4865,7 +3823,7 @@ _0804ECEC:
_0804EE08: .4byte gUnknown_8260834
_0804EE0C: .4byte gSprites
_0804EE10: .4byte gUnknown_2031DA8
-_0804EE14: .4byte gUnknown_8261E40
+_0804EE14: .4byte gTradeMonSpriteCoords
_0804EE18: .4byte gUnknown_8261F18
_0804EE1C:
ldr r0, _0804EE64 @ =gUnknown_8262055
@@ -5507,7 +4465,7 @@ sub_804F2E8: @ 804F2E8
add r0, r12
lsls r2, r0, 1
mov r10, r2
- ldr r1, _0804F3B0 @ =gUnknown_8261E40
+ ldr r1, _0804F3B0 @ =gTradeMonSpriteCoords
movs r2, 0
mov r8, r2
lsls r0, 2
@@ -5585,7 +4543,7 @@ _0804F39A:
.align 2, 0
_0804F3A8: .4byte gUnknown_2031DA8
_0804F3AC: .4byte gSprites
-_0804F3B0: .4byte gUnknown_8261E40
+_0804F3B0: .4byte gTradeMonSpriteCoords
thumb_func_end sub_804F2E8
thumb_func_start sub_804F3B4
@@ -8917,7 +7875,7 @@ _08050EB4:
lsls r4, r0, 4
subs r4, r0
lsls r4, 2
- ldr r0, _08050EFC @ =gUnknown_826CF8C
+ ldr r0, _08050EFC @ =gIngameTrades
adds r4, r0
ldr r0, _08050F00 @ =gStringVar1
adds r1, r4, 0
@@ -8945,7 +7903,7 @@ _08050EF0:
bx r0
.align 2, 0
_08050EF8: .4byte gSpecialVar_0x8004
-_08050EFC: .4byte gUnknown_826CF8C
+_08050EFC: .4byte gIngameTrades
_08050F00: .4byte gStringVar1
_08050F04: .4byte gStringVar3
_08050F08: .4byte gSpecialVar_0x8005
@@ -13787,7 +12745,7 @@ sub_8053A9C: @ 8053A9C
lsls r4, r0, 4
subs r4, r0
lsls r4, 2
- ldr r0, _08053AD4 @ =gUnknown_826CF8C
+ ldr r0, _08053AD4 @ =gIngameTrades
adds r4, r0
ldr r0, _08053AD8 @ =gStringVar1
ldrh r1, [r4, 0x38]
@@ -13807,7 +12765,7 @@ sub_8053A9C: @ 8053A9C
bx r1
.align 2, 0
_08053AD0: .4byte gSpecialVar_0x8004
-_08053AD4: .4byte gUnknown_826CF8C
+_08053AD4: .4byte gIngameTrades
_08053AD8: .4byte gStringVar1
_08053ADC: .4byte gSpeciesNames
_08053AE0: .4byte gStringVar2
@@ -13822,7 +12780,7 @@ sub_8053AE4: @ 8053AE4
lsls r4, r0, 4
subs r4, r0
lsls r4, 2
- ldr r0, _08053B30 @ =gUnknown_826CF8C
+ ldr r0, _08053B30 @ =gIngameTrades
adds r4, r0
ldr r0, _08053B34 @ =gSpecialVar_0x8005
ldrh r1, [r0]
@@ -13849,7 +12807,7 @@ sub_8053AE4: @ 8053AE4
bx r0
.align 2, 0
_08053B2C: .4byte gSpecialVar_0x8004
-_08053B30: .4byte gUnknown_826CF8C
+_08053B30: .4byte gIngameTrades
_08053B34: .4byte gSpecialVar_0x8005
_08053B38: .4byte gPlayerParty
_08053B3C: .4byte gStringVar1
@@ -13868,7 +12826,7 @@ sub_8053B48: @ 8053B48
lsls r2, r1, 4
subs r2, r1
lsls r2, 2
- ldr r1, _08053CA4 @ =gUnknown_826CF8C
+ ldr r1, _08053CA4 @ =gIngameTrades
adds r5, r2, r1
movs r1, 0x64
muls r0, r1
@@ -14010,7 +12968,7 @@ sub_8053B48: @ 8053B48
bl SetMonData
b _08053CC0
.align 2, 0
-_08053CA4: .4byte gUnknown_826CF8C
+_08053CA4: .4byte gIngameTrades
_08053CA8: .4byte gPlayerParty
_08053CAC: .4byte gEnemyParty
_08053CB0: .4byte gUnknown_2031CCC
diff --git a/data/data.s b/data/data.s
index fd4b9d274..0b99ba48c 100644
--- a/data/data.s
+++ b/data/data.s
@@ -2,7 +2,11 @@
#include "constants/trainer_classes.h"
#include "constants/songs.h"
#include "constants/region_map.h"
- .set NULL, 0
+#include "constants/species.h"
+#include "constants/items.h"
+#include "constants/easy_chat.h"
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
.section .rodata
@@ -319,7 +323,7 @@ gUnknown_8261D00:: @ 8261D00
gUnknown_8261D08:: @ 8261D08
.incbin "baserom.gba", 0x261D08, 0x138
-gUnknown_8261E40:: @ 8261E40
+gTradeMonSpriteCoords:: @ 8261E40
.incbin "baserom.gba", 0x261E40, 0x1A
gUnknown_8261E5A:: @ 8261E5A
@@ -328,24 +332,36 @@ gUnknown_8261E5A:: @ 8261E5A
gUnknown_8261E72:: @ 8261E72
.incbin "baserom.gba", 0x261E72, 0x18
-gUnknown_8261E8A:: @ 8261E8A
+gTradeUnknownSpriteCoords:: @ 8261E8A
.incbin "baserom.gba", 0x261E8A, 0x2C
gUnknown_8261EB6:: @ 8261EB6
- .incbin "baserom.gba", 0x261EB6, 0xB
+ .string "$"
+
+gUnknown_8261EB7::
+ .string "{COLOR DARK_GREY}{HIGHLIGHT TRANSPARENT}{SHADOW RED}$"
gText_MaleSymbol4:: @ 8261EC1
- .incbin "baserom.gba", 0x261EC1, 0x2
+ .string "♂$"
gText_FemaleSymbol4:: @ 8261EC3
- .incbin "baserom.gba", 0x261EC3, 0x2
+ .string "♀$"
gText_GenderlessSymbol:: @ 8261EC5
- .incbin "baserom.gba", 0x261EC5, 0x2
+ .string "$"
+
+gUnknown_8261EC6::
+ .string "$"
gUnknown_8261EC7:: @ 8261EC7
- .incbin "baserom.gba", 0x261EC7, 0x5
+ .string "\n$"
+
+gUnknown_8261EC9::
+ .string "/$"
+
+ @ trade
+ .align 2
gUnknown_8261ECC:: @ 8261ECC
.incbin "baserom.gba", 0x261ECC, 0x18
@@ -461,11 +477,7 @@ gUnknown_826CF60:: @ 826CF60
gUnknown_826CF88:: @ 826CF88
.incbin "baserom.gba", 0x26CF88, 0x4
-gUnknown_826CF8C:: @ 826CF8C
- .incbin "baserom.gba", 0x26CF8C, 0x21C
-
-gUnknown_826D1A8:: @ 826D1A8
- .incbin "baserom.gba", 0x26D1A8, 0x14
+ .include "data/ingame_trades.inc"
gUnknown_826D1BC:: @ 826D1BC
.incbin "baserom.gba", 0x26D1BC, 0x10
@@ -482,6 +494,8 @@ gUnknown_826D1E4:: @ 826D1E4
gUnknown_826D250:: @ 826D250
.incbin "baserom.gba", 0x26D250, 0x44
+ @ overworld
+
gUnknown_826D294:: @ 826D294
.incbin "baserom.gba", 0x26D294, 0xA
diff --git a/data/ingame_trades.inc b/data/ingame_trades.inc
new file mode 100644
index 000000000..c3447d79b
--- /dev/null
+++ b/data/ingame_trades.inc
@@ -0,0 +1,174 @@
+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/include/link.h b/include/link.h
index 7c4b871de..552e50970 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);
diff --git a/include/link_rfu.h b/include/link_rfu.h
index 2be9dd3c9..c76758d4e 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/party_menu.h b/include/party_menu.h
index 5b9b6e1c4..ca8ac1754 100644
--- a/include/party_menu.h
+++ b/include/party_menu.h
@@ -82,6 +82,7 @@ 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, u8 side);
void PartyMenuInit_FromPlayerPc(void);
void CB2_PartyMenuFromStartMenu(void);
diff --git a/include/pokemon_icon.h b/include/pokemon_icon.h
index 60da74bcb..db45bba32 100644
--- a/include/pokemon_icon.h
+++ b/include/pokemon_icon.h
@@ -10,12 +10,14 @@ void sub_80D2F68(u16 iconId);
u8 sub_80D2D78(u16 iconId, void callback(struct Sprite *), u16 x, u16 y, u16 a4, u8 a5);
void sub_80D2FF0(u16 iconId);
void sub_80D2EF8(struct Sprite *sprite);
-void sub_809707C(void);
+void LoadMonIconPalettes(void);
void FreeMonIconPalettes(void);
u16 sub_8096FD4(u16);
u8 sub_8096ECC(u16, void (*)(struct Sprite *), s16, s16, u8, bool32);
void sub_8097070(struct Sprite *);
u16 GetUnownLetterByPersonality(u32 personality);
+void sub_809718C(void);
+u8 CreateMonIcon(u16 species, void (*callback)(void), s16 x, s16 y, u8 subpriority, u32 personality, bool32 extra);
u8 UpdateMonIconFrame(struct Sprite *sprite);
#endif // GUARD_POKEMON_ICON_H
diff --git a/include/pokemon_storage_system.h b/include/pokemon_storage_system.h
index 6790fb775..2d881878f 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 sub_808BEB4(const u8 *name, u8 *a1, u8 a2, u8 a3, u8 *buffer, u8 a5);
#endif // GUARD_POKEMON_STORAGE_SYSTEM_H
diff --git a/ld_script.txt b/ld_script.txt
index 9a8731e17..814d525da 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -85,6 +85,7 @@ SECTIONS {
asm/smokescreen.o(.text);
asm/pokeball.o(.text);
src/load_save.o(.text);
+ src/trade.o(.text);
asm/trade.o(.text);
src/play_time.o(.text);
src/new_game.o(.text);
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index 85c1dfccb..9c03dc0d5 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -200,7 +200,7 @@ s32 FadeToWonderCardMenu(void)
CopyBgTilemapBufferToVram(1);
break;
case 6:
- sub_809707C();
+ LoadMonIconPalettes();
break;
case 7:
ShowBg(1);
diff --git a/src/trade.c b/src/trade.c
new file mode 100644
index 000000000..ee28ff224
--- /dev/null
+++ b/src/trade.c
@@ -0,0 +1,1325 @@
+#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 "text_window.h"
+#include "pokemon_icon.h"
+#include "graphics.h"
+#include "link.h"
+#include "link_rfu.h"
+#include "cable_club.h"
+#include "sound.h"
+#include "party_menu.h"
+#include "pokemon_storage_system.h"
+#include "constants/species.h"
+#include "constants/items.h"
+#include "constants/easy_chat.h"
+#include "constants/songs.h"
+
+struct TradeResources
+{
+ /*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[12];
+ /*0x0044*/ u8 unk_44;
+ /*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 unk_0;
+ u16 unk_2;
+ u8 unk_4;
+ } unk_8D0[4];
+ /*0x08F0*/ u8 bg1TilemapBuffer[BG_SCREEN_SIZE];
+};
+
+IWRAM_DATA vu16 gUnknown_3000E78;
+
+EWRAM_DATA u8 *gUnknown_2031C90 = NULL;
+EWRAM_DATA u8 *gUnknown_2031C94[14] = {};
+EWRAM_DATA struct TradeResources * gUnknown_2031DA8 = NULL;
+
+void sub_804C728(void);
+void sub_804D4F8(void);
+u8 shedinja_maker_maybe(void);
+void sub_804F5BC(u8 str_idx);
+void sub_804F9D8(void);
+bool8 sub_804F610(void);
+void sub_804F748(u8 side);
+void sub_804F020(u8 side);
+void sub_804D764(void);
+void sub_804D694(u8 imgIdx);
+void sub_804F890(u8 side);
+void sub_804F964(void);
+void sub_804DFF0(void);
+void sub_804D638(void);
+void LoadHeldItemIcons(void);
+void sub_804F728(const u8 *name, u8 *a1, u8 unused);
+
+extern const struct BgTemplate gUnknown_8261F1C[4];
+extern const struct WindowTemplate gUnknown_8261F2C[18];
+extern const u8 gTradeMonSpriteCoords[][2];
+extern const u8 *gUnknown_8261ECC[];
+extern const u8 gTradeUnknownSpriteCoords[][4];
+extern const struct SpriteTemplate gUnknown_8261CB0;
+extern const struct SpriteTemplate gUnknown_8261CC8;
+
+void sub_804C600(void)
+{
+ int i;
+
+ 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, gUnknown_2031DA8->bg1TilemapBuffer);
+ if (InitWindows(gUnknown_8261F2C))
+ {
+ DeactivateAllTextPrinters();
+ gUnknown_3000E78 = 590; // ?
+ for (i = 0; i < NELEMS(gUnknown_8261F2C); 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();
+ gUnknown_2031DA8->unk_69 = 0;
+ gUnknown_2031DA8->unk_6F = 0;
+ gUnknown_2031DA8->unk_70 = 0;
+ gUnknown_2031DA8->unk_74[0] = 0;
+ gUnknown_2031DA8->unk_74[1] = 0;
+ gUnknown_2031DA8->unk_7A = 0;
+ gUnknown_2031DA8->unk_7B = 0;
+ gUnknown_2031DA8->unk_A8 = 0;
+ }
+}
+
+void sub_804C718(void)
+{
+ SetMainCallback2(sub_804C728);
+}
+
+#ifdef NONMATCHING
+void sub_804C728(void)
+{
+ int i;
+ struct SpriteTemplate temp;
+ u8 id;
+ s32 width;
+ u32 xPos;
+
+ switch (gMain.state)
+ {
+ case 0:
+ gUnknown_2031DA8 = AllocZeroed(sizeof(*gUnknown_2031DA8));
+ sub_804C600();
+ gUnknown_2031C90 = AllocZeroed(0xE00);
+
+ for (i = 0; i < 14; i++)
+ {
+ gUnknown_2031C94[i] = &gUnknown_2031C90[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);
+ }
+
+ sub_804F5BC(0);
+ ShowBg(0);
+
+ if (!gReceivedRemoteLinkPlayers)
+ {
+ gLinkType = 0x1122;
+ gUnknown_2031DA8->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:
+ gUnknown_2031DA8->unk_A8++;
+ if (gUnknown_2031DA8->unk_A8 > 11)
+ {
+ gUnknown_2031DA8->unk_A8 = 0;
+ gMain.state++;
+ }
+ break;
+ case 3:
+ if (GetLinkPlayerCount_2() >= GetSavedPlayerCount())
+ {
+ if (IsLinkMaster())
+ {
+ if (++gUnknown_2031DA8->unk_A8 > 30)
+ {
+ CheckShouldAdvanceLinkState();
+ gMain.state++;
+ }
+ }
+ else
+ {
+ gMain.state++;
+ }
+ }
+ break;
+ case 4:
+ if (gReceivedRemoteLinkPlayers == TRUE && IsLinkPlayerDataExchangeComplete() == TRUE)
+ {
+ sub_80FBB4C();
+ CalculatePlayerPartyCount();
+ gMain.state++;
+ gUnknown_2031DA8->unk_A8 = 0;
+ if (gWirelessCommType)
+ {
+ sub_80FA484(TRUE);
+ sub_800AB9C();
+ }
+ }
+ break;
+ case 5:
+ if (gWirelessCommType)
+ {
+ if (IsRfuTaskFinished())
+ {
+ 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);
+ gUnknown_2031DA8->partyCounts[0] = gPlayerPartyCount;
+ gUnknown_2031DA8->partyCounts[1] = gEnemyPartyCount;
+
+ for (i = 0; i < gUnknown_2031DA8->partyCounts[0]; i++)
+ {
+ struct Pokemon *mon = &gPlayerParty[i];
+ gUnknown_2031DA8->partyIcons[0][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2),
+ sub_809718C,
+ (gTradeMonSpriteCoords[i][0] * 8) + 14,
+ (gTradeMonSpriteCoords[i][1] * 8) - 12,
+ 1,
+ GetMonData(mon, MON_DATA_PERSONALITY),
+ TRUE);
+ }
+
+ for (i = 0; i < gUnknown_2031DA8->partyCounts[1]; i++)
+ {
+ struct Pokemon *mon = &gEnemyParty[i];
+ gUnknown_2031DA8->partyIcons[1][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL),
+ sub_809718C,
+ (gTradeMonSpriteCoords[i + PARTY_SIZE][0] * 8) + 14,
+ (gTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12,
+ 1,
+ GetMonData(mon, MON_DATA_PERSONALITY),
+ FALSE);
+ }
+ gMain.state++;
+ break;
+ case 8:
+ LoadHeldItemIcons();
+ sub_812256C(&gUnknown_2031DA8->partyCounts[0], gUnknown_2031DA8->partyIcons[0], 0);
+ gMain.state++;
+ break;
+ case 9:
+ sub_812256C(&gUnknown_2031DA8->partyCounts[0], gUnknown_2031DA8->partyIcons[0], 1);
+ gMain.state++;
+ break;
+ case 10:
+ sub_808BEB4(gSaveBlock2Ptr->playerName, gUnknown_2031C94[0], 0, 0, gDecompressionBuffer, 3);
+ id = GetMultiplayerId();
+ sub_808BEB4(gLinkPlayers[id ^ 1].name, gUnknown_2031C94[3], 0, 0, gDecompressionBuffer, 3);
+ sub_808BEB4(gUnknown_8261ECC[0], gUnknown_2031C94[6], 0, 0, gDecompressionBuffer, 2);
+ sub_804F728(gUnknown_8261ECC[1], gUnknown_2031C94[8], 24);
+ gMain.state++;
+ gUnknown_2031DA8->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 = gUnknown_8261CC8;
+ temp.tileTag += i;
+ CreateSprite(&temp, xPos + gTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][0] + (i * 32), gTradeUnknownSpriteCoords[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 = gUnknown_8261CC8;
+ temp.tileTag += i + 3;
+ CreateSprite(&temp, xPos + gTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][2] + (i * 32), gTradeUnknownSpriteCoords[LANGUAGE_ENGLISH - 1][3], 1);
+ }
+ gMain.state++;
+ break;
+ case 13:
+ temp = gUnknown_8261CC8;
+ temp.tileTag += 6;
+ CreateSprite(&temp, 215, 151, 1);
+ temp = gUnknown_8261CC8;
+ temp.tileTag += 7;
+ CreateSprite(&temp, 247, 151, 1);
+
+ for (i = 0; i < PARTY_SIZE; i++)
+ {
+ temp = gUnknown_8261CC8;
+ temp.tileTag += i + 8;
+ CreateSprite(&temp, (i * 32) + 24, 150, 1);
+ }
+
+ gUnknown_2031DA8->tradeMenuCursorSpriteIdx = CreateSprite(&gUnknown_8261CB0, gTradeMonSpriteCoords[0][0] * 8 + 32, gTradeMonSpriteCoords[0][1] * 8, 2);
+ gUnknown_2031DA8->tradeMenuCursorPosition = 0;
+ gMain.state++;
+ rbox_fill_rectangle(0);
+ break;
+ case 14:
+ sub_804F748(0);
+ sub_804F020(0);
+ gUnknown_2031DA8->unk_0 = 0;
+ gUnknown_2031DA8->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
+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 @ =gUnknown_2031DA8\n"
+ "\tldr r0, _0804C7EC @ =0x000010f0\n"
+ "\tbl AllocZeroed\n"
+ "\tstr r0, [r4]\n"
+ "\tbl sub_804C600\n"
+ "\tldr r4, _0804C7F0 @ =gUnknown_2031C90\n"
+ "\tmovs r0, 0xE0\n"
+ "\tlsls r0, 4\n"
+ "\tbl AllocZeroed\n"
+ "\tstr r0, [r4]\n"
+ "\tmovs r6, 0\n"
+ "\tldr r2, _0804C7F4 @ =gUnknown_2031C94\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 gUnknown_2031DA8\n"
+ "_0804C7EC: .4byte 0x000010f0\n"
+ "_0804C7F0: .4byte gUnknown_2031C90\n"
+ "_0804C7F4: .4byte gUnknown_2031C94\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 sub_804F5BC\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 @ =gUnknown_2031DA8\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 gUnknown_2031DA8\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 @ =gUnknown_2031DA8\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 gUnknown_2031DA8\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 @ =gUnknown_2031DA8\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 gUnknown_2031DA8\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 @ =gUnknown_2031DA8\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 gUnknown_2031DA8\n"
+ "_0804C9AC: .4byte gWirelessCommType\n"
+ "_0804C9B0:\n"
+ "\tldr r0, _0804C9E0 @ =gWirelessCommType\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r0, 0\n"
+ "\tbeq _0804C9E8\n"
+ "\tbl IsRfuTaskFinished\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 @ =gUnknown_2031DA8\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 @ =gTradeMonSpriteCoords\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 @ =sub_809718C\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 @ =gUnknown_2031DA8\n"
+ "\tldr r0, [r1]\n"
+ "\tadds r0, 0x37\n"
+ "\tldrb r0, [r0]\n"
+ "\tcmp r6, r0\n"
+ "\tbge _0804CB20\n"
+ "\tldr r0, _0804CB38 @ =gTradeMonSpriteCoords\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 @ =sub_809718C\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 gUnknown_2031DA8\n"
+ "_0804CB30: .4byte gPlayerPartyCount\n"
+ "_0804CB34: .4byte gEnemyPartyCount\n"
+ "_0804CB38: .4byte gTradeMonSpriteCoords\n"
+ "_0804CB3C: .4byte gPlayerParty\n"
+ "_0804CB40: .4byte 0xfff40000\n"
+ "_0804CB44: .4byte sub_809718C\n"
+ "_0804CB48: .4byte gEnemyParty\n"
+ "_0804CB4C: .4byte gMain\n"
+ "_0804CB50:\n"
+ "\tbl LoadHeldItemIcons\n"
+ "\tldr r0, _0804CB70 @ =gUnknown_2031DA8\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 gUnknown_2031DA8\n"
+ "_0804CB74: .4byte gMain\n"
+ "_0804CB78:\n"
+ "\tldr r0, _0804CB94 @ =gUnknown_2031DA8\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 gUnknown_2031DA8\n"
+ "_0804CB98: .4byte gMain\n"
+ "_0804CB9C:\n"
+ "\tldr r0, _0804CC14 @ =gSaveBlock2Ptr\n"
+ "\tldr r0, [r0]\n"
+ "\tldr r6, _0804CC18 @ =gUnknown_2031C94\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 sub_808BEB4\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 sub_808BEB4\n"
+ "\tldr r4, _0804CC24 @ =gUnknown_8261ECC\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 sub_808BEB4\n"
+ "\tldr r0, [r4, 0x4]\n"
+ "\tldr r1, [r6, 0x20]\n"
+ "\tmovs r2, 0x18\n"
+ "\tbl sub_804F728\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 @ =gUnknown_2031DA8\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 gUnknown_2031C94\n"
+ "_0804CC1C: .4byte gDecompressionBuffer\n"
+ "_0804CC20: .4byte gLinkPlayers + 8\n"
+ "_0804CC24: .4byte gUnknown_8261ECC\n"
+ "_0804CC28: .4byte gMain\n"
+ "_0804CC2C: .4byte gUnknown_2031DA8\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 @ =gTradeUnknownSpriteCoords\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 @ =gUnknown_8261CC8\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 @ =gTradeUnknownSpriteCoords\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 @ =gUnknown_8261CC8\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 gTradeUnknownSpriteCoords\n"
+ "_0804CD04: .4byte gUnknown_8261CC8\n"
+ "_0804CD08: .4byte gLinkPlayers + 8\n"
+ "_0804CD0C: .4byte gMain\n"
+ "_0804CD10:\n"
+ "\tldr r4, _0804CDCC @ =gUnknown_8261CC8\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 @ =gUnknown_8261CC8\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 @ =gUnknown_8261CB0\n"
+ "\tldr r2, _0804CDD4 @ =gTradeMonSpriteCoords\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 @ =gUnknown_2031DA8\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 gUnknown_8261CC8\n"
+ "_0804CDD0: .4byte gUnknown_8261CB0\n"
+ "_0804CDD4: .4byte gTradeMonSpriteCoords\n"
+ "_0804CDD8: .4byte gUnknown_2031DA8\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 @ =gUnknown_2031DA8\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 gUnknown_2031DA8\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