diff options
-rw-r--r-- | asm/naming_screen.s | 4 | ||||
-rw-r--r-- | asm/party_menu.s | 12 | ||||
-rw-r--r-- | asm/pokemon_icon.s | 12 | ||||
-rw-r--r-- | asm/pokemon_storage_system.s | 2 | ||||
-rw-r--r-- | asm/pokemon_summary_screen.s | 2 | ||||
-rw-r--r-- | asm/trade.s | 1096 | ||||
-rw-r--r-- | data/data.s | 40 | ||||
-rw-r--r-- | data/ingame_trades.inc | 174 | ||||
-rw-r--r-- | include/link.h | 7 | ||||
-rw-r--r-- | include/link_rfu.h | 2 | ||||
-rw-r--r-- | include/party_menu.h | 1 | ||||
-rw-r--r-- | include/pokemon_icon.h | 4 | ||||
-rw-r--r-- | include/pokemon_storage_system.h | 1 | ||||
-rw-r--r-- | ld_script.txt | 1 | ||||
-rw-r--r-- | src/mevent_8145654.c | 2 | ||||
-rw-r--r-- | src/trade.c | 1325 |
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 |