diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-29 17:05:56 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2019-10-29 17:05:56 -0400 |
commit | 316337b031d35d89db0f2ad939972588cae291bd (patch) | |
tree | 1b18b2cd3eae186f96e9a3b018da776486a68fbe | |
parent | ce5c3fdd776a47d5d6c3790249c53afaff844553 (diff) |
trade partway through sub_8050968
-rw-r--r-- | asm/link_rfu_3.s | 8 | ||||
-rw-r--r-- | asm/party_menu.s | 2 | ||||
-rw-r--r-- | asm/trade.s | 1325 | ||||
-rw-r--r-- | data/data_83FECCC.s | 10 | ||||
-rw-r--r-- | data/strings.s | 21 | ||||
-rw-r--r-- | data/trade.s | 32 | ||||
-rw-r--r-- | src/trade.c | 1257 |
7 files changed, 1083 insertions, 1572 deletions
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 9fc1f72cc..eac4dcb4d 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -3070,7 +3070,7 @@ _08117210: lsrs r0, 24 cmp r0, 0x3 bne _0811725C - ldr r4, _08117268 @ =gUnknown_2031CCC + ldr r4, _08117268 @ =gLinkPartnerMail bl GetMultiplayerId adds r1, r0, 0 movs r0, 0x1 @@ -3090,7 +3090,7 @@ _08117210: ldr r1, _08117274 @ =gMain ldr r0, _08117278 @ =CB2_ReturnToField str r0, [r1, 0x8] - ldr r0, _0811727C @ =sub_8050138 + ldr r0, _0811727C @ =CB2_InitTradeAnim_LinkTrade bl SetMainCallback2 mov r0, r8 bl sub_811B148 @@ -3103,12 +3103,12 @@ _0811725C: pop {r0} bx r0 .align 2, 0 -_08117268: .4byte gUnknown_2031CCC +_08117268: .4byte gLinkPartnerMail _0811726C: .4byte gBlockRecvBuffer _08117270: .4byte gUnknown_2031DA4 _08117274: .4byte gMain _08117278: .4byte CB2_ReturnToField -_0811727C: .4byte sub_8050138 +_0811727C: .4byte CB2_InitTradeAnim_LinkTrade thumb_func_end sub_8117130 thumb_func_start sub_8117280 diff --git a/asm/party_menu.s b/asm/party_menu.s index b10cfa8f5..91e19ebf2 100644 --- a/asm/party_menu.s +++ b/asm/party_menu.s @@ -11407,7 +11407,7 @@ sub_8124384: @ 8124384 adds r1, r6, 0 adds r2, r5, 0 adds r3, r4, 0 - bl sub_804FCE0 + bl Trade_CanTradeSelectedMon cmp r0, 0x1 beq _08124418 cmp r0, 0x2 diff --git a/asm/trade.s b/asm/trade.s index bcb88fdb7..f13118ef6 100644 --- a/asm/trade.s +++ b/asm/trade.s @@ -5,937 +5,6 @@ .text - thumb_func_start sub_8050138 -sub_8050138: @ 8050138 - push {r4-r6,lr} - sub sp, 0x4 - ldr r1, _08050158 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r0, r1, r2 - ldrb r0, [r0] - adds r2, r1, 0 - cmp r0, 0xC - bls _0805014E - b _08050472 -_0805014E: - lsls r0, 2 - ldr r1, _0805015C @ =_08050160 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08050158: .4byte gMain -_0805015C: .4byte _08050160 - .align 2, 0 -_08050160: - .4byte _08050194 - .4byte _08050240 - .4byte _08050288 - .4byte _080502A8 - .4byte _080502F2 - .4byte _08050320 - .4byte _08050344 - .4byte _0805035C - .4byte _08050366 - .4byte _08050380 - .4byte _0805039C - .4byte _08050430 - .4byte _0805044C -_08050194: - ldr r0, _08050228 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - bne _080501A8 - ldr r1, _0805022C @ =gLinkType - ldr r2, _08050230 @ =0x00001144 - adds r0, r2, 0 - strh r0, [r1] - bl CloseLink -_080501A8: - ldr r4, _08050234 @ =gUnknown_2031DAC - movs r0, 0x88 - lsls r0, 1 - bl AllocZeroed - str r0, [r4] - bl AllocateMonSpritesGfx - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _08050238 @ =sub_804FF0C - bl SetVBlankCallback - bl sub_80504CC - bl sub_804FF24 - ldr r1, _0805023C @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - movs r2, 0 - strb r0, [r1] - ldr r1, [r4] - adds r0, r1, 0 - adds r0, 0x8C - strh r2, [r0] - adds r0, 0x8 - strh r2, [r0] - adds r1, 0xEE - movs r0, 0x1 - strb r0, [r1] - ldr r3, [r4] - adds r0, r3, 0 - adds r0, 0xD4 - movs r1, 0x40 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r0, 0x2 - strh r2, [r0] - adds r1, r3, 0 - adds r1, 0xDC - movs r0, 0x78 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x50 - strh r0, [r1] - adds r1, 0xA - adds r0, 0xB0 - strh r0, [r1] - adds r0, r3, 0 - adds r0, 0xEC - strh r2, [r0] - b _08050472 - .align 2, 0 -_08050228: .4byte gReceivedRemoteLinkPlayers -_0805022C: .4byte gLinkType -_08050230: .4byte 0x00001144 -_08050234: .4byte gUnknown_2031DAC -_08050238: .4byte sub_804FF0C -_0805023C: .4byte gMain -_08050240: - ldr r0, _08050270 @ =gReceivedRemoteLinkPlayers - ldrb r5, [r0] - cmp r5, 0 - bne _0805027C - ldr r4, _08050274 @ =gUnknown_2031DAC - ldr r0, [r4] - movs r1, 0x84 - lsls r1, 1 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - bl OpenLink - ldr r1, _08050278 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r4] - str r5, [r0, 0x64] - b _08050472 - .align 2, 0 -_08050270: .4byte gReceivedRemoteLinkPlayers -_08050274: .4byte gUnknown_2031DAC -_08050278: .4byte gMain -_0805027C: - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - movs r0, 0x4 - strb r0, [r1] - b _08050472 -_08050288: - ldr r0, _080502A4 @ =gUnknown_2031DAC - ldr r1, [r0] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x3C - bhi _08050298 - b _08050472 -_08050298: - movs r0, 0 - str r0, [r1, 0x64] - movs r0, 0x87 - lsls r0, 3 - adds r1, r2, r0 - b _08050440 - .align 2, 0 -_080502A4: .4byte gUnknown_2031DAC -_080502A8: - bl IsLinkMaster - lsls r0, 24 - cmp r0, 0 - bne _080502B4 - b _08050438 -_080502B4: - bl GetLinkPlayerCount_2 - adds r4, r0, 0 - bl GetSavedPlayerCount - lsls r4, 24 - lsls r0, 24 - cmp r4, r0 - bcc _080502EC - ldr r0, _080502E4 @ =gUnknown_2031DAC - ldr r1, [r0] - ldr r0, [r1, 0x64] - adds r0, 0x1 - str r0, [r1, 0x64] - cmp r0, 0x1E - bhi _080502D6 - b _08050472 -_080502D6: - bl CheckShouldAdvanceLinkState - ldr r1, _080502E8 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_080502E4: .4byte gUnknown_2031DAC -_080502E8: .4byte gMain -_080502EC: - bl sub_804FF4C - b _08050472 -_080502F2: - bl sub_804FF4C - ldr r0, _08050318 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0x1 - beq _08050300 - b _08050472 -_08050300: - bl IsLinkPlayerDataExchangeComplete - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0805030E - b _08050472 -_0805030E: - ldr r1, _0805031C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_08050318: .4byte gReceivedRemoteLinkPlayers -_0805031C: .4byte gMain -_08050320: - ldr r2, _08050340 @ =gUnknown_2031DAC - ldr r0, [r2] - adds r0, 0x72 - movs r1, 0 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x73 - strb r1, [r0] - ldr r0, [r2] - adds r0, 0x93 - strb r1, [r0] - movs r0, 0 - bl sub_804FFE4 - b _08050438 - .align 2, 0 -_08050340: .4byte gUnknown_2031DAC -_08050344: - movs r0, 0 - movs r1, 0x1 - bl sub_804FFE4 - ldr r1, _08050358 @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_08050358: .4byte gMain -_0805035C: - movs r0, 0x1 - movs r1, 0 - bl sub_804FFE4 - b _08050438 -_08050366: - movs r0, 0x1 - movs r1, 0x1 - bl sub_804FFE4 - bl sub_80504B0 - ldr r1, _0805037C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_0805037C: .4byte gMain -_08050380: - bl sub_8050DE0 - ldr r0, _08050394 @ =gUnknown_826CDD4 - bl LoadSpriteSheet - ldr r0, _08050398 @ =gUnknown_826CDDC - bl LoadSpritePalette - b _08050438 - .align 2, 0 -_08050394: .4byte gUnknown_826CDD4 -_08050398: .4byte gUnknown_826CDDC -_0805039C: - movs r0, 0x1 - negs r0, r0 - movs r1, 0 - str r1, [sp] - movs r2, 0x10 - movs r3, 0 - bl BeginNormalPaletteFade - movs r0, 0 - bl ShowBg - ldr r4, _08050418 @ =gUnknown_2031DA4 - ldrb r0, [r4] - movs r6, 0x64 - muls r0, r6 - ldr r1, _0805041C @ =gPlayerParty - adds r0, r1 - movs r1, 0x41 - bl GetMonData - ldr r5, _08050420 @ =gUnknown_2031DAC - ldr r1, [r5] - adds r1, 0xF8 - strh r0, [r1] - ldrb r0, [r4, 0x1] - movs r1, 0x6 - bl __umodsi3 - lsls r0, 24 - lsrs r0, 24 - muls r0, r6 - ldr r1, _08050424 @ =gEnemyParty - adds r0, r1 - movs r1, 0x41 - bl GetMonData - ldr r4, [r5] - adds r1, r4, 0 - adds r1, 0xFA - strh r0, [r1] - adds r4, 0xFC - bl GetMultiplayerId - movs r1, 0x1 - eors r0, r1 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 3 - subs r1, r0 - lsls r1, 2 - ldr r0, _08050428 @ =gLinkPlayers + 8 - adds r1, r0 - adds r0, r4, 0 - movs r2, 0x7 - bl memcpy - ldr r1, _0805042C @ =gMain - movs r2, 0x87 - lsls r2, 3 - adds r1, r2 - b _08050440 - .align 2, 0 -_08050418: .4byte gUnknown_2031DA4 -_0805041C: .4byte gPlayerParty -_08050420: .4byte gUnknown_2031DAC -_08050424: .4byte gEnemyParty -_08050428: .4byte gLinkPlayers + 8 -_0805042C: .4byte gMain -_08050430: - bl sub_805049C - bl sub_8050E24 -_08050438: - ldr r1, _08050448 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 -_08050440: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _08050472 - .align 2, 0 -_08050448: .4byte gMain -_0805044C: - ldr r0, _08050490 @ =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _08050472 - ldr r0, _08050494 @ =gWirelessCommType - ldrb r0, [r0] - cmp r0, 0 - beq _0805046C - bl LoadWirelessStatusIndicatorSpriteGfx - movs r0, 0 - movs r1, 0 - bl CreateWirelessStatusIndicatorSprite -_0805046C: - ldr r0, _08050498 @ =sub_8053D84 - bl SetMainCallback2 -_08050472: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08050490: .4byte gPaletteFade -_08050494: .4byte gWirelessCommType -_08050498: .4byte sub_8053D84 - thumb_func_end sub_8050138 - - thumb_func_start sub_805049C -sub_805049C: @ 805049C - push {lr} - movs r0, 0x5 - bl sub_8050968 - movs r0, 0 - bl sub_8050968 - pop {r0} - bx r0 - thumb_func_end sub_805049C - - thumb_func_start sub_80504B0 -sub_80504B0: @ 80504B0 - push {lr} - movs r0, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - pop {r0} - bx r0 - thumb_func_end sub_80504B0 - - thumb_func_start sub_80504CC -sub_80504CC: @ 80504CC - push {r4-r6,lr} - mov r6, r10 - mov r5, r9 - mov r4, r8 - push {r4-r6} - sub sp, 0x4 - movs r0, 0 - movs r1, 0 - bl SetGpuReg - movs r0, 0 - bl ResetBgsAndClearDma3BusyFlags - ldr r1, _080505B4 @ =gUnknown_826D1D4 - movs r0, 0 - movs r2, 0x4 - bl InitBgsFromTemplates - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgX - movs r0, 0 - movs r1, 0 - movs r2, 0 - bl ChangeBgY - movs r5, 0x80 - lsls r5, 4 - adds r0, r5, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0 - bl SetBgTilemapBuffer - adds r0, r5, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0x1 - bl SetBgTilemapBuffer - adds r0, r5, 0 - bl Alloc - adds r1, r0, 0 - movs r0, 0x3 - bl SetBgTilemapBuffer - bl DeactivateAllTextPrinters - ldr r0, _080505B8 @ =gBattleTextboxTiles - mov r10, r0 - movs r0, 0 - mov r9, r0 - str r0, [sp] - mov r1, r10 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - ldr r0, _080505BC @ =gFile_graphics_interface_menu_map_tilemap - mov r8, r0 - ldr r4, _080505C0 @ =gDecompressionBuffer - adds r1, r4, 0 - bl LZDecompressWram - movs r0, 0 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - ldr r6, _080505C4 @ =gBattleTextboxPalette - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - ldr r0, _080505C8 @ =gUnknown_826D1BC - bl InitWindows - mov r0, r9 - str r0, [sp] - movs r0, 0 - mov r1, r10 - movs r2, 0 - movs r3, 0 - bl DecompressAndLoadBgGfxUsingHeap - mov r0, r8 - adds r1, r4, 0 - bl LZDecompressWram - movs r0, 0 - adds r1, r4, 0 - adds r2, r5, 0 - movs r3, 0 - bl CopyToBgTilemapBuffer - adds r0, r6, 0 - movs r1, 0 - movs r2, 0x20 - bl LoadCompressedPalette - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080505B4: .4byte gUnknown_826D1D4 -_080505B8: .4byte gBattleTextboxTiles -_080505BC: .4byte gFile_graphics_interface_menu_map_tilemap -_080505C0: .4byte gDecompressionBuffer -_080505C4: .4byte gBattleTextboxPalette -_080505C8: .4byte gUnknown_826D1BC - thumb_func_end sub_80504CC - - thumb_func_start sub_80505CC -sub_80505CC: @ 80505CC - push {r4,r5,lr} - sub sp, 0xC - ldr r0, _080505EC @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - ldrb r0, [r0] - cmp r0, 0xC - bls _080505E0 - b _0805077E -_080505E0: - lsls r0, 2 - ldr r1, _080505F0 @ =_080505F4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080505EC: .4byte gMain -_080505F0: .4byte _080505F4 - .align 2, 0 -_080505F4: - .4byte _08050628 - .4byte _0805077E - .4byte _0805077E - .4byte _0805077E - .4byte _0805077E - .4byte _080506EC - .4byte _080506F6 - .4byte _08050700 - .4byte _08050710 - .4byte _08050730 - .4byte _0805074C - .4byte _08050754 - .4byte _08050778 -_08050628: - ldr r1, _080506CC @ =gUnknown_2031DA4 - ldr r0, _080506D0 @ =gSpecialVar_0x8005 - ldrh r0, [r0] - movs r5, 0 - strb r0, [r1] - movs r0, 0x6 - strb r0, [r1, 0x1] - ldr r4, _080506D4 @ =gLinkPlayers + 8 - ldr r0, _080506D8 @ =gSaveBlock2Ptr - ldr r1, [r0] - adds r0, r4, 0 - bl StringCopy - ldr r0, _080506DC @ =gEnemyParty - movs r1, 0x7 - mov r2, sp - bl GetMonData - adds r4, 0x1C - adds r0, r4, 0 - mov r1, sp - bl StringCopy - ldr r4, _080506E0 @ =gUnknown_2031DAC - movs r0, 0x88 - lsls r0, 1 - bl AllocZeroed - str r0, [r4] - bl AllocateMonSpritesGfx - bl ResetTasks - bl ResetSpriteData - bl FreeAllSpritePalettes - ldr r0, _080506E4 @ =sub_804FF0C - bl SetVBlankCallback - bl sub_80504CC - ldr r0, [r4] - adds r0, 0xEE - strb r5, [r0] - ldr r2, [r4] - adds r0, r2, 0 - adds r0, 0x8C - strh r5, [r0] - adds r0, 0x8 - strh r5, [r0] - adds r0, 0x40 - movs r1, 0x40 - strh r1, [r0] - adds r0, 0x2 - strh r1, [r0] - adds r0, 0x2 - strh r5, [r0] - adds r0, 0x2 - strh r5, [r0] - adds r1, r2, 0 - adds r1, 0xDC - movs r0, 0x78 - strh r0, [r1] - adds r1, 0x2 - movs r0, 0x50 - strh r0, [r1] - adds r1, 0xA - adds r0, 0xB0 - strh r0, [r1] - adds r0, r2, 0 - adds r0, 0xEC - strh r5, [r0] - str r5, [r2, 0x64] - ldr r0, _080506E8 @ =gMain - movs r1, 0x87 - lsls r1, 3 - adds r0, r1 - movs r1, 0x5 - strb r1, [r0] - b _0805077E - .align 2, 0 -_080506CC: .4byte gUnknown_2031DA4 -_080506D0: .4byte gSpecialVar_0x8005 -_080506D4: .4byte gLinkPlayers + 8 -_080506D8: .4byte gSaveBlock2Ptr -_080506DC: .4byte gEnemyParty -_080506E0: .4byte gUnknown_2031DAC -_080506E4: .4byte sub_804FF0C -_080506E8: .4byte gMain -_080506EC: - movs r0, 0 - movs r1, 0 - bl sub_804FFE4 - b _08050764 -_080506F6: - movs r0, 0 - movs r1, 0x1 - bl sub_804FFE4 - b _08050764 -_08050700: - movs r0, 0x1 - movs r1, 0 - bl sub_804FFE4 - movs r0, 0 - bl ShowBg - b _08050764 -_08050710: - movs r0, 0x1 - movs r1, 0x1 - bl sub_804FFE4 - movs r0, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - movs r0, 0 - bl PutWindowTilemap - movs r0, 0 - movs r1, 0x3 - bl CopyWindowToVram - b _08050764 -_08050730: - bl sub_8050DE0 - ldr r0, _08050744 @ =gUnknown_826CDD4 - bl LoadSpriteSheet - ldr r0, _08050748 @ =gUnknown_826CDDC - bl LoadSpritePalette - b _08050764 - .align 2, 0 -_08050744: .4byte gUnknown_826CDD4 -_08050748: .4byte gUnknown_826CDDC -_0805074C: - movs r0, 0 - bl ShowBg - b _08050764 -_08050754: - movs r0, 0x5 - bl sub_8050968 - movs r0, 0 - bl sub_8050968 - bl sub_8050E24 -_08050764: - ldr r1, _08050774 @ =gMain - movs r0, 0x87 - lsls r0, 3 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _0805077E - .align 2, 0 -_08050774: .4byte gMain -_08050778: - ldr r0, _0805079C @ =sub_8050948 - bl SetMainCallback2 -_0805077E: - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - add sp, 0xC - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0805079C: .4byte sub_8050948 - thumb_func_end sub_80505CC - - thumb_func_start sub_80507A0 -sub_80507A0: @ 80507A0 - push {r4,r5,lr} - lsls r0, 24 - lsrs r0, 24 - movs r1, 0x64 - muls r1, r0 - ldr r0, _080507FC @ =gPlayerParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080507F4 - adds r0, r5, 0 - movs r1, 0xB - movs r2, 0 - bl GetMonData - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r5, 0 - movs r1, 0 - movs r2, 0 - bl GetMonData - adds r5, r0, 0 - adds r0, r4, 0 - bl SpeciesToNationalPokedexNum - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0x2 - bl GetSetPokedexFlag - adds r0, r4, 0 - movs r1, 0x3 - adds r2, r5, 0 - bl HandleSetPokedexFlag -_080507F4: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080507FC: .4byte gPlayerParty - thumb_func_end sub_80507A0 - - thumb_func_start sub_8050800 -sub_8050800: @ 8050800 - push {lr} - bl GetMultiplayerId - pop {r0} - bx r0 - thumb_func_end sub_8050800 - - thumb_func_start sub_805080C -sub_805080C: @ 805080C - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r4, r1, 0 - lsls r0, 24 - lsrs r0, 24 - mov r9, r0 - lsls r4, 24 - lsrs r4, 24 - movs r5, 0x64 - mov r1, r9 - muls r1, r5 - ldr r0, _080508D8 @ =gPlayerParty - adds r7, r1, r0 - adds r0, r7, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 16 - lsrs r6, r0, 16 - adds r1, r4, 0 - muls r1, r5 - ldr r0, _080508DC @ =gEnemyParty - adds r5, r1, r0 - adds r0, r5, 0 - movs r1, 0x40 - bl GetMonData - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - cmp r6, 0xFF - beq _08050866 - ldr r0, _080508E0 @ =gSaveBlock1Ptr - lsls r1, r6, 3 - adds r1, r6 - lsls r1, 2 - ldr r2, _080508E4 @ =0x00002cd0 - adds r1, r2 - ldr r0, [r0] - adds r0, r1 - bl ClearMailStruct -_08050866: - ldr r4, _080508E8 @ =gUnknown_2031DAC - ldr r0, [r4] - adds r1, r7, 0 - movs r2, 0x64 - bl memcpy - adds r0, r7, 0 - adds r1, r5, 0 - movs r2, 0x64 - bl memcpy - ldr r1, [r4] - adds r0, r5, 0 - movs r2, 0x64 - bl memcpy - movs r1, 0x46 - mov r0, sp - strb r1, [r0] - adds r0, r7, 0 - movs r1, 0x2D - bl GetMonData - cmp r0, 0 - bne _080508A2 - adds r0, r7, 0 - movs r1, 0x20 - mov r2, sp - bl SetMonData -_080508A2: - mov r0, r8 - cmp r0, 0xFF - beq _080508B8 - lsls r1, r0, 3 - add r1, r8 - lsls r1, 2 - ldr r0, _080508EC @ =gUnknown_2031CCC - adds r1, r0 - adds r0, r7, 0 - bl GiveMailToMon2 -_080508B8: - mov r0, r9 - bl sub_80507A0 - ldr r0, _080508F0 @ =gReceivedRemoteLinkPlayers - ldrb r0, [r0] - cmp r0, 0 - beq _080508CA - bl sub_8050800 -_080508CA: - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080508D8: .4byte gPlayerParty -_080508DC: .4byte gEnemyParty -_080508E0: .4byte gSaveBlock1Ptr -_080508E4: .4byte 0x00002cd0 -_080508E8: .4byte gUnknown_2031DAC -_080508EC: .4byte gUnknown_2031CCC -_080508F0: .4byte gReceivedRemoteLinkPlayers - thumb_func_end sub_805080C - - thumb_func_start sub_80508F4 -sub_80508F4: @ 80508F4 - push {r4,lr} - ldr r4, _08050908 @ =gUnknown_2031DAC - ldr r0, [r4] - adds r0, 0x93 - ldrb r0, [r0] - cmp r0, 0x1 - beq _0805090C - cmp r0, 0x2 - beq _08050932 - b _0805093C - .align 2, 0 -_08050908: .4byte gUnknown_2031DAC -_0805090C: - bl IsLinkTaskFinished - lsls r0, 24 - cmp r0, 0 - beq _08050932 - bl bitmask_all_link_players_but_self - lsls r0, 24 - lsrs r0, 24 - ldr r1, [r4] - adds r1, 0x74 - movs r2, 0x14 - bl SendBlock - ldr r1, [r4] - adds r1, 0x93 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] -_08050932: - ldr r0, _08050944 @ =gUnknown_2031DAC - ldr r0, [r0] - adds r0, 0x93 - movs r1, 0 - strb r1, [r0] -_0805093C: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08050944: .4byte gUnknown_2031DAC - thumb_func_end sub_80508F4 - - thumb_func_start sub_8050948 -sub_8050948: @ 8050948 - push {lr} - bl sub_8050F14 - bl RunTasks - bl RunTextPrinters - bl AnimateSprites - bl BuildOamBuffer - bl UpdatePaletteFade - pop {r0} - bx r0 - thumb_func_end sub_8050948 - thumb_func_start sub_8050968 sub_8050968: @ 8050968 push {r4-r7,lr} @@ -963,7 +32,7 @@ _08050984: .4byte _08050C6C .4byte _08050D48 _080509A4: - ldr r0, _080509FC @ =gUnknown_2031DAC + ldr r0, _080509FC @ =sTradeAnimationResourcesPtr ldr r1, [r0] adds r2, r1, 0 adds r2, 0xE4 @@ -1005,7 +74,7 @@ _080509E6: bhi _080509E6 b _08050D98 .align 2, 0 -_080509FC: .4byte gUnknown_2031DAC +_080509FC: .4byte sTradeAnimationResourcesPtr _08050A00: .4byte 0x00005206 _08050A04: .4byte gTradeGba2_Pal _08050A08: .4byte gTradeGba_Gfx @@ -1013,7 +82,7 @@ _08050A0C: .4byte 0x06004000 _08050A10: .4byte 0x040000d4 _08050A14: .4byte 0x80000800 _08050A18: - ldr r4, _08050A54 @ =gUnknown_2031DAC + ldr r4, _08050A54 @ =sTradeAnimationResourcesPtr ldr r2, [r4] adds r1, r2, 0 adds r1, 0xE2 @@ -1041,7 +110,7 @@ _08050A18: ldr r1, _08050A60 @ =gUnknown_826AA5C b _08050A66 .align 2, 0 -_08050A54: .4byte gUnknown_2031DAC +_08050A54: .4byte sTradeAnimationResourcesPtr _08050A58: .4byte 0x00008502 _08050A5C: .4byte 0x00009206 _08050A60: .4byte gUnknown_826AA5C @@ -1092,7 +161,7 @@ _08050AB8: .4byte 0x040000d4 _08050ABC: .4byte 0x80000800 _08050AC0: .4byte gTradeGba_Gfx _08050AC4: - ldr r0, _08050AF4 @ =gUnknown_2031DAC + ldr r0, _08050AF4 @ =sTradeAnimationResourcesPtr ldr r2, [r0] adds r0, r2, 0 adds r0, 0xE0 @@ -1115,7 +184,7 @@ _08050AC4: movs r0, 0x8 b _08050B1E .align 2, 0 -_08050AF4: .4byte gUnknown_2031DAC +_08050AF4: .4byte sTradeAnimationResourcesPtr _08050AF8: .4byte 0x00001241 _08050AFC: .4byte gUnknown_3379A0Bin _08050B00: .4byte 0x06002800 @@ -1154,7 +223,7 @@ _08050B3C: ldr r0, _08050B78 @ =gUnknown_826C60C ldr r1, _08050B7C @ =0x06009000 bl LZ77UnCompVram - ldr r0, _08050B80 @ =gUnknown_2031DAC + ldr r0, _08050B80 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0xE4 movs r1, 0x50 @@ -1171,7 +240,7 @@ _08050B70: .4byte gWirelessSignal4bpp _08050B74: .4byte 0x06004000 _08050B78: .4byte gUnknown_826C60C _08050B7C: .4byte 0x06009000 -_08050B80: .4byte gUnknown_2031DAC +_08050B80: .4byte sTradeAnimationResourcesPtr _08050B84: ldr r1, _08050C0C @ =0x00001441 movs r0, 0 @@ -1179,7 +248,7 @@ _08050B84: ldr r1, _08050C10 @ =0x00001287 movs r0, 0xC bl SetGpuReg - ldr r0, _08050C14 @ =gUnknown_2031DAC + ldr r0, _08050C14 @ =sTradeAnimationResourcesPtr ldr r3, [r0] adds r1, r3, 0 adds r1, 0xD4 @@ -1225,7 +294,7 @@ _08050BD0: orrs r0, r7 str r0, [r1, 0x8] ldr r0, [r1, 0x8] - ldr r0, _08050C14 @ =gUnknown_2031DAC + ldr r0, _08050C14 @ =sTradeAnimationResourcesPtr ldr r0, [r0] movs r1, 0x84 lsls r1, 1 @@ -1243,7 +312,7 @@ _08050BD0: .align 2, 0 _08050C0C: .4byte 0x00001441 _08050C10: .4byte 0x00001287 -_08050C14: .4byte gUnknown_2031DAC +_08050C14: .4byte sTradeAnimationResourcesPtr _08050C18: .4byte gUnknown_826701C _08050C1C: .4byte 0x06004000 _08050C20: .4byte 0x040000d4 @@ -1265,7 +334,7 @@ _08050C48: .4byte 0x06009000 _08050C4C: .4byte 0x040000d4 _08050C50: .4byte 0x80000080 _08050C54: - ldr r0, _08050C68 @ =gUnknown_2031DAC + ldr r0, _08050C68 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r1, r0, 0 adds r1, 0xE0 @@ -1275,7 +344,7 @@ _08050C54: strh r2, [r0] b _08050DB4 .align 2, 0 -_08050C68: .4byte gUnknown_2031DAC +_08050C68: .4byte sTradeAnimationResourcesPtr _08050C6C: ldr r1, _08050D00 @ =0x00001441 movs r0, 0 @@ -1283,7 +352,7 @@ _08050C6C: ldr r1, _08050D04 @ =0x00001287 movs r0, 0xC bl SetGpuReg - ldr r0, _08050D08 @ =gUnknown_2031DAC + ldr r0, _08050D08 @ =sTradeAnimationResourcesPtr ldr r3, [r0] adds r1, r3, 0 adds r1, 0xD4 @@ -1334,7 +403,7 @@ _08050CC2: orrs r0, r7 str r0, [r1, 0x8] ldr r0, [r1, 0x8] - ldr r0, _08050D08 @ =gUnknown_2031DAC + ldr r0, _08050D08 @ =sTradeAnimationResourcesPtr ldr r0, [r0] movs r1, 0x84 lsls r1, 1 @@ -1352,7 +421,7 @@ _08050CC2: .align 2, 0 _08050D00: .4byte 0x00001441 _08050D04: .4byte 0x00001287 -_08050D08: .4byte gUnknown_2031DAC +_08050D08: .4byte sTradeAnimationResourcesPtr _08050D0C: .4byte gUnknown_826701C _08050D10: .4byte 0x06004000 _08050D14: .4byte 0x040000d4 @@ -1374,7 +443,7 @@ _08050D3C: .4byte 0x06009000 _08050D40: .4byte 0x040000d4 _08050D44: .4byte 0x80000080 _08050D48: - ldr r0, _08050DBC @ =gUnknown_2031DAC + ldr r0, _08050DBC @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r1, r0, 0 adds r1, 0xE4 @@ -1433,7 +502,7 @@ _08050DB4: pop {r0} bx r0 .align 2, 0 -_08050DBC: .4byte gUnknown_2031DAC +_08050DBC: .4byte sTradeAnimationResourcesPtr _08050DC0: .4byte 0x00005206 _08050DC4: .4byte gTradeGba2_Pal _08050DC8: .4byte gTradeGba_Gfx @@ -1474,7 +543,7 @@ _08050E20: .4byte gUnknown_826CE3C sub_8050E24: @ 8050E24 push {r4,r5,lr} sub sp, 0x14 - ldr r0, _08050E94 @ =gUnknown_2031DAC + ldr r0, _08050E94 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0xEE ldrb r0, [r0] @@ -1522,7 +591,7 @@ sub_8050E24: @ 8050E24 bl StringCopy10 b _08050EF0 .align 2, 0 -_08050E94: .4byte gUnknown_2031DAC +_08050E94: .4byte sTradeAnimationResourcesPtr _08050E98: .4byte gStringVar1 _08050E9C: .4byte gLinkPlayers + 8 _08050EA0: .4byte gUnknown_2031DA4 @@ -1575,7 +644,7 @@ _08050F10: .4byte gStringVar2 thumb_func_start sub_8050F14 sub_8050F14: @ 8050F14 push {lr} - ldr r0, _08050F2C @ =gUnknown_2031DAC + ldr r0, _08050F2C @ =sTradeAnimationResourcesPtr ldr r0, [r0] movs r1, 0x84 lsls r1, 1 @@ -1586,7 +655,7 @@ sub_8050F14: @ 8050F14 bl sub_805232C b _08050F34 .align 2, 0 -_08050F2C: .4byte gUnknown_2031DAC +_08050F2C: .4byte sTradeAnimationResourcesPtr _08050F30: bl sub_8050F3C _08050F34: @@ -1600,7 +669,7 @@ _08050F34: sub_8050F3C: @ 8050F3C push {r4-r7,lr} sub sp, 0x10 - ldr r0, _08050F60 @ =gUnknown_2031DAC + ldr r0, _08050F60 @ =sTradeAnimationResourcesPtr ldr r1, [r0] adds r1, 0x94 ldrh r5, [r1] @@ -1616,7 +685,7 @@ _08050F54: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08050F60: .4byte gUnknown_2031DAC +_08050F60: .4byte sTradeAnimationResourcesPtr _08050F64: .4byte 0x0000010b _08050F68: .4byte _08050F6C .align 2, 0 @@ -1997,7 +1066,7 @@ _08051470: adds r1, r4, 0 movs r2, 0 bl sub_8054508 - ldr r4, _080514B4 @ =gUnknown_2031DAC + ldr r4, _080514B4 @ =sTradeAnimationResourcesPtr ldr r0, [r4] adds r2, r0, 0 adds r2, 0xF0 @@ -2019,7 +1088,7 @@ _0805149E: .align 2, 0 _080514AC: .4byte gStringVar4 _080514B0: .4byte gUnknown_841E1E9 -_080514B4: .4byte gUnknown_2031DAC +_080514B4: .4byte sTradeAnimationResourcesPtr _080514B8: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -2089,7 +1158,7 @@ _0805152C: beq _0805154C bl _08052318 _0805154C: - ldr r0, _08051590 @ =gUnknown_826CDE4 + ldr r0, _08051590 @ =sTradePokeballSpriteTemplate movs r1, 0x78 movs r2, 0x20 movs r3, 0 @@ -2105,7 +1174,7 @@ _0805154C: adds r0, r1 lsls r0, 2 adds r0, r4 - ldr r1, _08051594 @ =sub_8053938 + ldr r1, _08051594 @ =SpriteCB_TradePokeball_Outbound str r1, [r0] adds r2, 0xD2 ldrb r1, [r2] @@ -2119,8 +1188,8 @@ _0805154C: .align 2, 0 _08051588: .4byte gSprites _0805158C: .4byte SpriteCallbackDummy -_08051590: .4byte gUnknown_826CDE4 -_08051594: .4byte sub_8053938 +_08051590: .4byte sTradePokeballSpriteTemplate +_08051594: .4byte SpriteCB_TradePokeball_Outbound _08051598: movs r0, 0x1 negs r0, r0 @@ -2129,14 +1198,14 @@ _08051598: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _080515B8 @ =gUnknown_2031DAC + ldr r0, _080515B8 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x14 strh r1, [r0] bl _08052318 .align 2, 0 -_080515B8: .4byte gUnknown_2031DAC +_080515B8: .4byte sTradeAnimationResourcesPtr _080515BC: ldr r0, _080515E8 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -2183,7 +1252,7 @@ _0805160E: .align 2, 0 _0805161C: .4byte gPaletteFade _08051620: - ldr r4, _0805163C @ =gUnknown_2031DAC + ldr r4, _0805163C @ =sTradeAnimationResourcesPtr ldr r0, [r4] adds r2, r0, 0 adds r2, 0xEA @@ -2197,7 +1266,7 @@ _08051620: strh r0, [r2] b _0805165C .align 2, 0 -_0805163C: .4byte gUnknown_2031DAC +_0805163C: .4byte sTradeAnimationResourcesPtr _08051640: movs r0, 0x1 bl sub_8050968 @@ -2213,11 +1282,11 @@ _08051640: strh r0, [r1] str r2, [r3, 0x64] _0805165C: - ldr r0, _08051664 @ =gUnknown_2031DAC + ldr r0, _08051664 @ =sTradeAnimationResourcesPtr ldr r4, [r0] bl _08051EB0 .align 2, 0 -_08051664: .4byte gUnknown_2031DAC +_08051664: .4byte sTradeAnimationResourcesPtr _08051668: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -2227,7 +1296,7 @@ _08051668: bhi _08051678 bl _08052318 _08051678: - bl sub_804FE24 + bl TradeAnim_UpdateBgAffine ldr r0, _08051694 @ =gUnknown_826CF30 movs r1, 0x78 movs r2, 0x50 @@ -2299,7 +1368,7 @@ _08051700: beq _08051714 bl _08052318 _08051714: - ldr r0, _0805172C @ =gUnknown_826CEB8 + ldr r0, _0805172C @ =sGameLinkCableEndSpriteTemplate movs r1, 0x80 movs r2, 0x41 movs r3, 0 @@ -2309,14 +1378,14 @@ _08051714: strb r0, [r1] bl _08052318 .align 2, 0 -_0805172C: .4byte gUnknown_826CEB8 +_0805172C: .4byte sGameLinkCableEndSpriteTemplate _08051730: ldr r0, _08051774 @ =gUnknown_826CE44 movs r1, 0x80 movs r2, 0x50 movs r3, 0x3 bl CreateSprite - ldr r4, _08051778 @ =gUnknown_2031DAC + ldr r4, _08051778 @ =sTradeAnimationResourcesPtr ldr r1, [r4] adds r1, 0x90 strb r0, [r1] @@ -2342,7 +1411,7 @@ _08051730: bl _080522AC .align 2, 0 _08051774: .4byte gUnknown_826CE44 -_08051778: .4byte gUnknown_2031DAC +_08051778: .4byte sTradeAnimationResourcesPtr _0805177C: .4byte gUnknown_826CE84 _08051780: .4byte gSprites _08051784: @@ -2418,14 +1487,14 @@ _08051808: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _08051828 @ =gUnknown_2031DAC + ldr r0, _08051828 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x1E strh r1, [r0] bl _08052318 .align 2, 0 -_08051828: .4byte gUnknown_2031DAC +_08051828: .4byte sTradeAnimationResourcesPtr _0805182C: ldr r0, _08051870 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -2474,7 +1543,7 @@ _08051878: movs r2, 0xAA movs r3, 0 bl CreateSprite - ldr r4, _080518C0 @ =gUnknown_2031DAC + ldr r4, _080518C0 @ =sTradeAnimationResourcesPtr ldr r1, [r4] adds r1, 0x90 strb r0, [r1] @@ -2491,7 +1560,7 @@ _08051878: bl _080522AC .align 2, 0 _080518BC: .4byte gUnknown_826CE84 -_080518C0: .4byte gUnknown_2031DAC +_080518C0: .4byte sTradeAnimationResourcesPtr _080518C4: ldr r0, _08051914 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -2501,7 +1570,7 @@ _080518C4: bne _080518E2 movs r0, 0x28 bl PlaySE - ldr r0, _08051918 @ =gUnknown_2031DAC + ldr r0, _08051918 @ =sTradeAnimationResourcesPtr ldr r1, [r0] adds r1, 0x94 ldrh r0, [r1] @@ -2509,7 +1578,7 @@ _080518C4: strh r0, [r1] _080518E2: ldr r3, _0805191C @ =gSprites - ldr r0, _08051918 @ =gUnknown_2031DAC + ldr r0, _08051918 @ =sTradeAnimationResourcesPtr ldr r2, [r0] adds r0, r2, 0 adds r0, 0x90 @@ -2533,7 +1602,7 @@ _080518E2: bl _08052318 .align 2, 0 _08051914: .4byte gPaletteFade -_08051918: .4byte gUnknown_2031DAC +_08051918: .4byte sTradeAnimationResourcesPtr _0805191C: .4byte gSprites _08051920: ldr r5, _0805197C @ =gSprites @@ -2608,7 +1677,7 @@ _080519A8: .align 2, 0 _080519B8: .4byte 0x0000ffff _080519BC: - ldr r5, _08051A28 @ =gUnknown_2031DAC + ldr r5, _08051A28 @ =sTradeAnimationResourcesPtr ldr r0, [r5] adds r0, 0xF0 ldrh r0, [r0] @@ -2659,7 +1728,7 @@ _080519BC: bl StartSpriteAffineAnim b _08051A4A .align 2, 0 -_08051A28: .4byte gUnknown_2031DAC +_08051A28: .4byte sTradeAnimationResourcesPtr _08051A2C: .4byte gSprites _08051A30: .4byte gUnknown_826CF88 _08051A34: @@ -2674,7 +1743,7 @@ _08051A34: movs r1, 0 bl StartSpriteAffineAnim _08051A4A: - ldr r5, _08051ADC @ =gUnknown_2031DAC + ldr r5, _08051ADC @ =sTradeAnimationResourcesPtr ldr r0, [r5] adds r0, 0x8F ldrb r1, [r0] @@ -2744,7 +1813,7 @@ _08051A4A: bl _080522AC .align 2, 0 _08051AD8: .4byte gSprites -_08051ADC: .4byte gUnknown_2031DAC +_08051ADC: .4byte sTradeAnimationResourcesPtr _08051AE0: .4byte 0x0000ffe0 _08051AE4: ldr r4, _08051BAC @ =gSprites @@ -3130,7 +2199,7 @@ _08051DD6: bne _08051DE4 b _08052318 _08051DE4: - ldr r0, _08051E10 @ =gUnknown_826CEB8 + ldr r0, _08051E10 @ =sGameLinkCableEndSpriteTemplate movs r1, 0x80 movs r2, 0x41 movs r3, 0 @@ -3147,20 +2216,20 @@ _08051DE4: lsls r0, 2 adds r2, 0x1C adds r0, r2 - ldr r1, _08051E18 @ =sub_804FDDC + ldr r1, _08051E18 @ =SpriteCB_GameLinkCableEnd_Inbound str r1, [r0] b _08052318 .align 2, 0 -_08051E10: .4byte gUnknown_826CEB8 +_08051E10: .4byte sGameLinkCableEndSpriteTemplate _08051E14: .4byte gSprites -_08051E18: .4byte sub_804FDDC +_08051E18: .4byte SpriteCB_GameLinkCableEnd_Inbound _08051E1C: ldr r0, _08051E3C @ =gUnknown_826CF30 movs r1, 0x78 movs r2, 0x50 movs r3, 0 bl CreateSprite - ldr r2, _08051E40 @ =gUnknown_2031DAC + ldr r2, _08051E40 @ =sTradeAnimationResourcesPtr ldr r1, [r2] adds r1, 0x91 strb r0, [r1] @@ -3171,7 +2240,7 @@ _08051E1C: b _08052318 .align 2, 0 _08051E3C: .4byte gUnknown_826CF30 -_08051E40: .4byte gUnknown_2031DAC +_08051E40: .4byte sTradeAnimationResourcesPtr _08051E44: ldr r2, _08051E80 @ =gSprites ldr r0, [r7] @@ -3245,14 +2314,14 @@ _08051EC4: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _08051EE0 @ =gUnknown_2031DAC + ldr r0, _08051EE0 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x3C strh r1, [r0] b _08052318 .align 2, 0 -_08051EE0: .4byte gUnknown_2031DAC +_08051EE0: .4byte sTradeAnimationResourcesPtr _08051EE4: ldr r4, _08051F08 @ =gPaletteFade ldrb r1, [r4, 0x7] @@ -3305,13 +2374,13 @@ _08051F40: .align 2, 0 _08051F44: .4byte gPaletteFade _08051F48: - ldr r0, _08051FDC @ =gUnknown_826CDE4 + ldr r0, _08051FDC @ =sTradePokeballSpriteTemplate movs r2, 0x8 negs r2, r2 movs r1, 0x78 movs r3, 0 bl CreateSprite - ldr r5, _08051FE0 @ =gUnknown_2031DAC + ldr r5, _08051FE0 @ =sTradeAnimationResourcesPtr ldr r1, [r5] adds r1, 0xD3 movs r6, 0 @@ -3333,7 +2402,7 @@ _08051F48: adds r1, r4, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _08051FE8 @ =sub_8053A0C + ldr r1, _08051FE8 @ =SpriteCB_TradePokeball_Inbound str r1, [r0] ldrb r1, [r2] lsls r0, r1, 4 @@ -3375,10 +2444,10 @@ _08051F48: str r6, [r2, 0x64] b _08052318 .align 2, 0 -_08051FDC: .4byte gUnknown_826CDE4 -_08051FE0: .4byte gUnknown_2031DAC +_08051FDC: .4byte sTradePokeballSpriteTemplate +_08051FE0: .4byte sTradeAnimationResourcesPtr _08051FE4: .4byte gSprites -_08051FE8: .4byte sub_8053A0C +_08051FE8: .4byte SpriteCB_TradePokeball_Inbound _08051FEC: .4byte 0x0000ffff _08051FF0: ldr r2, _0805201C @ =gSprites @@ -3540,7 +2609,7 @@ _08052128: adds r1, r4, 0 movs r2, 0 bl sub_8054508 - ldr r0, _0805215C @ =gUnknown_2031DAC + ldr r0, _0805215C @ =sTradeAnimationResourcesPtr ldr r3, [r0] adds r1, r3, 0 adds r1, 0x94 @@ -3550,7 +2619,7 @@ _08052128: .align 2, 0 _08052154: .4byte gStringVar4 _08052158: .4byte gUnknown_841E20D -_0805215C: .4byte gUnknown_2031DAC +_0805215C: .4byte sTradeAnimationResourcesPtr _08052160: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -3589,14 +2658,14 @@ _08052198: bne _080521A4 b _08052318 _080521A4: - ldr r0, _080521B0 @ =gUnknown_2031DAC + ldr r0, _080521B0 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x44 strh r1, [r0] b _08052318 .align 2, 0 -_080521B0: .4byte gUnknown_2031DAC +_080521B0: .4byte sTradeAnimationResourcesPtr _080521B4: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -3670,9 +2739,9 @@ _0805223C: ldr r0, _08052280 @ =gSpecialVar_0x8005 ldrb r0, [r0] movs r1, 0 - bl sub_805080C + bl Trade_SwapPlayerAndParterMonData ldr r1, _08052284 @ =gCB2_AfterEvolution - ldr r0, _08052288 @ =sub_8050948 + ldr r0, _08052288 @ =CB2_RunTradeAnim_InGameTrade str r0, [r1] ldr r7, _0805228C @ =gUnknown_2031DA4 ldrb r0, [r7] @@ -3691,7 +2760,7 @@ _0805223C: adds r0, r3, 0 muls r0, r6 adds r0, r5 - ldr r1, _08052294 @ =gUnknown_2031DAC + ldr r1, _08052294 @ =sTradeAnimationResourcesPtr ldr r1, [r1] adds r1, 0x8F ldrb r2, [r1] @@ -3701,10 +2770,10 @@ _0805223C: .align 2, 0 _08052280: .4byte gSpecialVar_0x8005 _08052284: .4byte gCB2_AfterEvolution -_08052288: .4byte sub_8050948 +_08052288: .4byte CB2_RunTradeAnim_InGameTrade _0805228C: .4byte gUnknown_2031DA4 _08052290: .4byte gPlayerParty -_08052294: .4byte gUnknown_2031DAC +_08052294: .4byte sTradeAnimationResourcesPtr _08052298: movs r0, 0x1 negs r0, r0 @@ -3715,7 +2784,7 @@ _08052298: _080522A4: bl BeginNormalPaletteFade _080522A8: - ldr r0, _080522B8 @ =gUnknown_2031DAC + ldr r0, _080522B8 @ =sTradeAnimationResourcesPtr ldr r1, [r0] _080522AC: adds r1, 0x94 @@ -3724,7 +2793,7 @@ _080522AC: strh r0, [r1] b _08052318 .align 2, 0 -_080522B8: .4byte gUnknown_2031DAC +_080522B8: .4byte sTradeAnimationResourcesPtr _080522BC: ldr r0, _08052324 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -3776,7 +2845,7 @@ _08052328: .4byte CB2_ReturnToField sub_805232C: @ 805232C push {r4-r7,lr} sub sp, 0x10 - ldr r0, _08052350 @ =gUnknown_2031DAC + ldr r0, _08052350 @ =sTradeAnimationResourcesPtr ldr r1, [r0] adds r1, 0x94 ldrh r5, [r1] @@ -3792,7 +2861,7 @@ _08052344: ldr r0, [r0] mov pc, r0 .align 2, 0 -_08052350: .4byte gUnknown_2031DAC +_08052350: .4byte sTradeAnimationResourcesPtr _08052354: .4byte 0x0000010b _08052358: .4byte _0805235C .align 2, 0 @@ -4173,7 +3242,7 @@ _08052860: adds r1, r4, 0 movs r2, 0 bl sub_8054508 - ldr r4, _080528A4 @ =gUnknown_2031DAC + ldr r4, _080528A4 @ =sTradeAnimationResourcesPtr ldr r0, [r4] adds r2, r0, 0 adds r2, 0xF0 @@ -4195,7 +3264,7 @@ _0805288E: .align 2, 0 _0805289C: .4byte gStringVar4 _080528A0: .4byte gUnknown_841E1E9 -_080528A4: .4byte gUnknown_2031DAC +_080528A4: .4byte sTradeAnimationResourcesPtr _080528A8: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -4265,7 +3334,7 @@ _0805291C: beq _0805293C bl _08053774 _0805293C: - ldr r0, _08052980 @ =gUnknown_826CDE4 + ldr r0, _08052980 @ =sTradePokeballSpriteTemplate movs r1, 0x78 movs r2, 0x20 movs r3, 0 @@ -4281,7 +3350,7 @@ _0805293C: adds r0, r1 lsls r0, 2 adds r0, r4 - ldr r1, _08052984 @ =sub_8053938 + ldr r1, _08052984 @ =SpriteCB_TradePokeball_Outbound str r1, [r0] adds r2, 0xD2 ldrb r1, [r2] @@ -4295,8 +3364,8 @@ _0805293C: .align 2, 0 _08052978: .4byte gSprites _0805297C: .4byte SpriteCallbackDummy -_08052980: .4byte gUnknown_826CDE4 -_08052984: .4byte sub_8053938 +_08052980: .4byte sTradePokeballSpriteTemplate +_08052984: .4byte SpriteCB_TradePokeball_Outbound _08052988: movs r0, 0x1 negs r0, r0 @@ -4305,14 +3374,14 @@ _08052988: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _080529A8 @ =gUnknown_2031DAC + ldr r0, _080529A8 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x14 strh r1, [r0] bl _08053774 .align 2, 0 -_080529A8: .4byte gUnknown_2031DAC +_080529A8: .4byte sTradeAnimationResourcesPtr _080529AC: ldr r0, _080529D8 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -4359,7 +3428,7 @@ _080529FE: .align 2, 0 _08052A0C: .4byte gPaletteFade _08052A10: - ldr r4, _08052A2C @ =gUnknown_2031DAC + ldr r4, _08052A2C @ =sTradeAnimationResourcesPtr ldr r0, [r4] adds r2, r0, 0 adds r2, 0xEA @@ -4373,7 +3442,7 @@ _08052A10: strh r0, [r2] b _08052A4A .align 2, 0 -_08052A2C: .4byte gUnknown_2031DAC +_08052A2C: .4byte sTradeAnimationResourcesPtr _08052A30: movs r0, 0x1 bl sub_8050968 @@ -4388,11 +3457,11 @@ _08052A30: strh r0, [r1] str r2, [r3, 0x64] _08052A4A: - ldr r0, _08052A54 @ =gUnknown_2031DAC + ldr r0, _08052A54 @ =sTradeAnimationResourcesPtr ldr r4, [r0] bl _0805330C .align 2, 0 -_08052A54: .4byte gUnknown_2031DAC +_08052A54: .4byte sTradeAnimationResourcesPtr _08052A58: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -4459,7 +3528,7 @@ _08052AE0: beq _08052AF0 bl _08053774 _08052AF0: - ldr r0, _08052B04 @ =gUnknown_2031DAC + ldr r0, _08052B04 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x1A @@ -4467,7 +3536,7 @@ _08052AF0: bl _08053774 .align 2, 0 _08052B00: .4byte c3_08054588 -_08052B04: .4byte gUnknown_2031DAC +_08052B04: .4byte sTradeAnimationResourcesPtr _08052B08: ldr r2, [r7] adds r0, r2, 0 @@ -4490,7 +3559,7 @@ _08052B28: movs r2, 0x50 movs r3, 0x3 bl CreateSprite - ldr r4, _08052B84 @ =gUnknown_2031DAC + ldr r4, _08052B84 @ =sTradeAnimationResourcesPtr ldr r1, [r4] adds r1, 0x90 strb r0, [r1] @@ -4504,7 +3573,7 @@ _08052B28: adds r1, r5, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _08052B8C @ =sub_804FD48 + ldr r1, _08052B8C @ =SpriteCB_TradeGlowWireless str r1, [r0] ldr r0, _08052B90 @ =gUnknown_826CE84 movs r1, 0x78 @@ -4527,9 +3596,9 @@ _08052B28: bl _08053708 .align 2, 0 _08052B80: .4byte gUnknown_826CE44 -_08052B84: .4byte gUnknown_2031DAC +_08052B84: .4byte sTradeAnimationResourcesPtr _08052B88: .4byte gSprites -_08052B8C: .4byte sub_804FD48 +_08052B8C: .4byte SpriteCB_TradeGlowWireless _08052B90: .4byte gUnknown_826CE84 _08052B94: ldr r2, [r7] @@ -4604,14 +3673,14 @@ _08052C18: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _08052C38 @ =gUnknown_2031DAC + ldr r0, _08052C38 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x1E strh r1, [r0] bl _08053774 .align 2, 0 -_08052C38: .4byte gUnknown_2031DAC +_08052C38: .4byte sTradeAnimationResourcesPtr _08052C3C: ldr r0, _08052C80 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -4660,7 +3729,7 @@ _08052C88: movs r2, 0xAA movs r3, 0 bl CreateSprite - ldr r4, _08052CD0 @ =gUnknown_2031DAC + ldr r4, _08052CD0 @ =sTradeAnimationResourcesPtr ldr r1, [r4] adds r1, 0x90 strb r0, [r1] @@ -4677,7 +3746,7 @@ _08052C88: bl _08053708 .align 2, 0 _08052CCC: .4byte gUnknown_826CE84 -_08052CD0: .4byte gUnknown_2031DAC +_08052CD0: .4byte sTradeAnimationResourcesPtr _08052CD4: ldr r0, _08052D24 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -4687,7 +3756,7 @@ _08052CD4: bne _08052CF2 movs r0, 0x28 bl PlaySE - ldr r0, _08052D28 @ =gUnknown_2031DAC + ldr r0, _08052D28 @ =sTradeAnimationResourcesPtr ldr r1, [r0] adds r1, 0x94 ldrh r0, [r1] @@ -4695,7 +3764,7 @@ _08052CD4: strh r0, [r1] _08052CF2: ldr r3, _08052D2C @ =gSprites - ldr r0, _08052D28 @ =gUnknown_2031DAC + ldr r0, _08052D28 @ =sTradeAnimationResourcesPtr ldr r2, [r0] adds r0, r2, 0 adds r0, 0x90 @@ -4719,7 +3788,7 @@ _08052CF2: bl _08053774 .align 2, 0 _08052D24: .4byte gPaletteFade -_08052D28: .4byte gUnknown_2031DAC +_08052D28: .4byte sTradeAnimationResourcesPtr _08052D2C: .4byte gSprites _08052D30: ldr r5, _08052D94 @ =gSprites @@ -4800,7 +3869,7 @@ _08052DC4: .align 2, 0 _08052DD4: .4byte 0x0000ffff _08052DD8: - ldr r5, _08052E44 @ =gUnknown_2031DAC + ldr r5, _08052E44 @ =sTradeAnimationResourcesPtr ldr r0, [r5] adds r0, 0xF0 ldrh r0, [r0] @@ -4851,7 +3920,7 @@ _08052DD8: bl StartSpriteAffineAnim b _08052E66 .align 2, 0 -_08052E44: .4byte gUnknown_2031DAC +_08052E44: .4byte sTradeAnimationResourcesPtr _08052E48: .4byte gSprites _08052E4C: .4byte gUnknown_826CF88 _08052E50: @@ -4866,7 +3935,7 @@ _08052E50: movs r1, 0 bl StartSpriteAffineAnim _08052E66: - ldr r5, _08052EF8 @ =gUnknown_2031DAC + ldr r5, _08052EF8 @ =sTradeAnimationResourcesPtr ldr r0, [r5] adds r0, 0x8F ldrb r1, [r0] @@ -4936,7 +4005,7 @@ _08052E66: bl _08053708 .align 2, 0 _08052EF4: .4byte gSprites -_08052EF8: .4byte gUnknown_2031DAC +_08052EF8: .4byte sTradeAnimationResourcesPtr _08052EFC: .4byte 0x0000ffe0 _08052F00: ldr r4, _08052FC8 @ =gSprites @@ -5155,7 +4224,7 @@ _08053066: adds r1, r5, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _080530F0 @ =sub_804FD48 + ldr r1, _080530F0 @ =SpriteCB_TradeGlowWireless str r1, [r0] ldr r0, _080530F4 @ =gUnknown_826CE84 movs r1, 0x78 @@ -5179,7 +4248,7 @@ _08053066: _080530E4: .4byte gPaletteFade _080530E8: .4byte gUnknown_826CE44 _080530EC: .4byte gSprites -_080530F0: .4byte sub_804FD48 +_080530F0: .4byte SpriteCB_TradeGlowWireless _080530F4: .4byte gUnknown_826CE84 _080530F8: movs r1, 0x1 @@ -5257,7 +4326,7 @@ _08053180: lsls r1, 5 movs r0, 0 bl SetGpuReg - ldr r4, _080531DC @ =gUnknown_2031DAC + ldr r4, _080531DC @ =sTradeAnimationResourcesPtr ldr r2, [r4] adds r1, r2, 0 adds r1, 0xE0 @@ -5300,7 +4369,7 @@ _080531D8: strh r2, [r3] b _08053708 .align 2, 0 -_080531DC: .4byte gUnknown_2031DAC +_080531DC: .4byte sTradeAnimationResourcesPtr _080531E0: .4byte c3_08054588 _080531E4: .4byte gTasks _080531E8: @@ -5341,7 +4410,7 @@ _08053224: beq _08053234 b _08053774 _08053234: - ldr r0, _08053248 @ =gUnknown_2031DAC + ldr r0, _08053248 @ =sTradeAnimationResourcesPtr ldr r2, [r0] adds r1, r2, 0 adds r1, 0x94 @@ -5351,7 +4420,7 @@ _08053234: b _08053774 .align 2, 0 _08053244: .4byte c3_08054588 -_08053248: .4byte gUnknown_2031DAC +_08053248: .4byte sTradeAnimationResourcesPtr _0805324C: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -5385,7 +4454,7 @@ _0805327A: movs r2, 0x50 movs r3, 0 bl CreateSprite - ldr r2, _0805329C @ =gUnknown_2031DAC + ldr r2, _0805329C @ =sTradeAnimationResourcesPtr ldr r1, [r2] adds r1, 0x91 strb r0, [r1] @@ -5396,7 +4465,7 @@ _0805327A: b _08053774 .align 2, 0 _08053298: .4byte gUnknown_826CF30 -_0805329C: .4byte gUnknown_2031DAC +_0805329C: .4byte sTradeAnimationResourcesPtr _080532A0: ldr r2, _080532DC @ =gSprites ldr r0, [r7] @@ -5470,14 +4539,14 @@ _08053320: movs r2, 0 movs r3, 0x10 bl BeginNormalPaletteFade - ldr r0, _0805333C @ =gUnknown_2031DAC + ldr r0, _0805333C @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x3C strh r1, [r0] b _08053774 .align 2, 0 -_0805333C: .4byte gUnknown_2031DAC +_0805333C: .4byte sTradeAnimationResourcesPtr _08053340: ldr r4, _08053364 @ =gPaletteFade ldrb r1, [r4, 0x7] @@ -5530,13 +4599,13 @@ _0805339C: .align 2, 0 _080533A0: .4byte gPaletteFade _080533A4: - ldr r0, _08053438 @ =gUnknown_826CDE4 + ldr r0, _08053438 @ =sTradePokeballSpriteTemplate movs r2, 0x8 negs r2, r2 movs r1, 0x78 movs r3, 0 bl CreateSprite - ldr r5, _0805343C @ =gUnknown_2031DAC + ldr r5, _0805343C @ =sTradeAnimationResourcesPtr ldr r1, [r5] adds r1, 0xD3 movs r6, 0 @@ -5558,7 +4627,7 @@ _080533A4: adds r1, r4, 0 adds r1, 0x1C adds r0, r1 - ldr r1, _08053444 @ =sub_8053A0C + ldr r1, _08053444 @ =SpriteCB_TradePokeball_Inbound str r1, [r0] ldrb r1, [r2] lsls r0, r1, 4 @@ -5600,10 +4669,10 @@ _080533A4: str r6, [r2, 0x64] b _08053774 .align 2, 0 -_08053438: .4byte gUnknown_826CDE4 -_0805343C: .4byte gUnknown_2031DAC +_08053438: .4byte sTradePokeballSpriteTemplate +_0805343C: .4byte sTradeAnimationResourcesPtr _08053440: .4byte gSprites -_08053444: .4byte sub_8053A0C +_08053444: .4byte SpriteCB_TradePokeball_Inbound _08053448: .4byte 0x0000ffff _0805344C: ldr r2, _08053478 @ =gSprites @@ -5765,7 +4834,7 @@ _08053584: adds r1, r4, 0 movs r2, 0 bl sub_8054508 - ldr r0, _080535B8 @ =gUnknown_2031DAC + ldr r0, _080535B8 @ =sTradeAnimationResourcesPtr ldr r3, [r0] adds r1, r3, 0 adds r1, 0x94 @@ -5775,7 +4844,7 @@ _08053584: .align 2, 0 _080535B0: .4byte gStringVar4 _080535B4: .4byte gUnknown_841E20D -_080535B8: .4byte gUnknown_2031DAC +_080535B8: .4byte sTradeAnimationResourcesPtr _080535BC: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -5814,14 +4883,14 @@ _080535F4: bne _08053600 b _08053774 _08053600: - ldr r0, _0805360C @ =gUnknown_2031DAC + ldr r0, _0805360C @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0x44 strh r1, [r0] b _08053774 .align 2, 0 -_0805360C: .4byte gUnknown_2031DAC +_0805360C: .4byte sTradeAnimationResourcesPtr _08053610: ldr r1, [r7] ldr r0, [r1, 0x64] @@ -5895,9 +4964,9 @@ _08053698: ldr r0, _080536DC @ =gSpecialVar_0x8005 ldrb r0, [r0] movs r1, 0 - bl sub_805080C + bl Trade_SwapPlayerAndParterMonData ldr r1, _080536E0 @ =gCB2_AfterEvolution - ldr r0, _080536E4 @ =sub_8050948 + ldr r0, _080536E4 @ =CB2_RunTradeAnim_InGameTrade str r0, [r1] ldr r7, _080536E8 @ =gUnknown_2031DA4 ldrb r0, [r7] @@ -5916,7 +4985,7 @@ _08053698: adds r0, r3, 0 muls r0, r6 adds r0, r5 - ldr r1, _080536F0 @ =gUnknown_2031DAC + ldr r1, _080536F0 @ =sTradeAnimationResourcesPtr ldr r1, [r1] adds r1, 0x8F ldrb r2, [r1] @@ -5926,10 +4995,10 @@ _08053698: .align 2, 0 _080536DC: .4byte gSpecialVar_0x8005 _080536E0: .4byte gCB2_AfterEvolution -_080536E4: .4byte sub_8050948 +_080536E4: .4byte CB2_RunTradeAnim_InGameTrade _080536E8: .4byte gUnknown_2031DA4 _080536EC: .4byte gPlayerParty -_080536F0: .4byte gUnknown_2031DAC +_080536F0: .4byte sTradeAnimationResourcesPtr _080536F4: movs r0, 0x1 negs r0, r0 @@ -5940,7 +5009,7 @@ _080536F4: _08053700: bl BeginNormalPaletteFade _08053704: - ldr r0, _08053714 @ =gUnknown_2031DAC + ldr r0, _08053714 @ =sTradeAnimationResourcesPtr ldr r1, [r0] _08053708: adds r1, 0x94 @@ -5949,7 +5018,7 @@ _08053708: strh r0, [r1] b _08053774 .align 2, 0 -_08053714: .4byte gUnknown_2031DAC +_08053714: .4byte sTradeAnimationResourcesPtr _08053718: ldr r0, _08053780 @ =gPaletteFade ldrb r1, [r0, 0x7] @@ -6044,7 +5113,7 @@ _080537B8: adds r0, r3, 0 muls r0, r6 adds r0, r5 - ldr r1, _08053804 @ =gUnknown_2031DAC + ldr r1, _08053804 @ =sTradeAnimationResourcesPtr ldr r1, [r1] adds r1, 0x8F ldrb r2, [r1] @@ -6056,7 +5125,7 @@ _080537F4: .4byte gCB2_AfterEvolution _080537F8: .4byte sub_8053E8C _080537FC: .4byte gUnknown_2031DA4 _08053800: .4byte gPlayerParty -_08053804: .4byte gUnknown_2031DAC +_08053804: .4byte sTradeAnimationResourcesPtr _08053808: mov r0, r8 bl SetMainCallback2 @@ -6108,7 +5177,7 @@ _08053864: ldr r0, _080538B4 @ =0x0000abcd cmp r1, r0 bne _08053874 - ldr r0, _080538B8 @ =gUnknown_2031DAC + ldr r0, _080538B8 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x72 strb r6, [r0] @@ -6128,7 +5197,7 @@ _0805387A: ldr r0, _080538B4 @ =0x0000abcd cmp r1, r0 bne _0805389C - ldr r0, _080538B8 @ =gUnknown_2031DAC + ldr r0, _080538B8 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x73 movs r1, 0x1 @@ -6145,11 +5214,11 @@ _080538A8: .4byte gBlockRecvBuffer _080538AC: .4byte 0x0000dcba _080538B0: .4byte sub_8053788 _080538B4: .4byte 0x0000abcd -_080538B8: .4byte gUnknown_2031DAC +_080538B8: .4byte sTradeAnimationResourcesPtr thumb_func_end sub_805383C - thumb_func_start sub_80538BC -sub_80538BC: @ 80538BC + thumb_func_start SpriteCB_TradePokeball_Default +SpriteCB_TradePokeball_Default: @ 80538BC push {r4,r5,lr} adds r5, r0, 0 movs r1, 0x2E @@ -6212,10 +5281,10 @@ _0805392E: bx r0 .align 2, 0 _08053934: .4byte SpriteCallbackDummy - thumb_func_end sub_80538BC + thumb_func_end SpriteCB_TradePokeball_Default - thumb_func_start sub_8053938 -sub_8053938: @ 8053938 + thumb_func_start SpriteCB_TradePokeball_Outbound +SpriteCB_TradePokeball_Outbound: @ 8053938 push {r4,lr} sub sp, 0x4 adds r4, r0, 0 @@ -6245,7 +5314,7 @@ _08053960: bne _08053996 movs r0, 0x85 bl PlaySE - ldr r0, _080539A4 @ =sub_80539AC + ldr r0, _080539A4 @ =SpriteCB_TradePokeball_Outbound2 str r0, [r4, 0x1C] movs r0, 0 strh r0, [r4, 0x2E] @@ -6268,12 +5337,12 @@ _08053996: bx r0 .align 2, 0 _080539A0: .4byte gUnknown_826D1E4 -_080539A4: .4byte sub_80539AC +_080539A4: .4byte SpriteCB_TradePokeball_Outbound2 _080539A8: .4byte 0x0000ffff - thumb_func_end sub_8053938 + thumb_func_end SpriteCB_TradePokeball_Outbound - thumb_func_start sub_80539AC -sub_80539AC: @ 80539AC + thumb_func_start SpriteCB_TradePokeball_Outbound2 +SpriteCB_TradePokeball_Outbound2: @ 80539AC push {r4,lr} adds r4, r0, 0 movs r1, 0x30 @@ -6309,7 +5378,7 @@ _080539C0: bne _080539FE adds r0, r4, 0 bl DestroySprite - ldr r0, _08053A08 @ =gUnknown_2031DAC + ldr r0, _08053A08 @ =sTradeAnimationResourcesPtr ldr r0, [r0] adds r0, 0x94 movs r1, 0xE @@ -6320,11 +5389,11 @@ _080539FE: bx r0 .align 2, 0 _08053A04: .4byte gUnknown_826D1E4 -_08053A08: .4byte gUnknown_2031DAC - thumb_func_end sub_80539AC +_08053A08: .4byte sTradeAnimationResourcesPtr + thumb_func_end SpriteCB_TradePokeball_Outbound2 - thumb_func_start sub_8053A0C -sub_8053A0C: @ 8053A0C + thumb_func_start SpriteCB_TradePokeball_Inbound +SpriteCB_TradePokeball_Inbound: @ 8053A0C push {r4,lr} adds r4, r0, 0 ldrh r2, [r4, 0x32] @@ -6396,7 +5465,7 @@ _08053A8C: .align 2, 0 _08053A94: .4byte gUnknown_826D1E4 _08053A98: .4byte SpriteCallbackDummy - thumb_func_end sub_8053A0C + thumb_func_end SpriteCB_TradePokeball_Inbound thumb_func_start GetInGameTradeSpeciesInfo GetInGameTradeSpeciesInfo: @ 8053A9C @@ -6610,7 +5679,7 @@ sub_8053B48: @ 8053B48 add r0, sp, 0x10 adds r1, r5, 0 bl sub_8053CD4 - ldr r0, _08053CB0 @ =gUnknown_2031CCC + ldr r0, _08053CB0 @ =gLinkPartnerMail add r1, sp, 0x10 ldm r1!, {r2,r3,r7} stm r0!, {r2,r3,r7} @@ -6632,7 +5701,7 @@ sub_8053B48: @ 8053B48 _08053CA4: .4byte gIngameTrades _08053CA8: .4byte gPlayerParty _08053CAC: .4byte gEnemyParty -_08053CB0: .4byte gUnknown_2031CCC +_08053CB0: .4byte gLinkPartnerMail _08053CB4: adds r2, r5, 0 adds r2, 0x28 @@ -6744,15 +5813,15 @@ _08053D7C: .4byte gSpecialVar_0x8005 _08053D80: .4byte gSpecialVar_0x8004 thumb_func_end CreateInGameTradePokemon - thumb_func_start sub_8053D84 -sub_8053D84: @ 8053D84 + thumb_func_start CB2_RunTradeAnim_LinkTrade +CB2_RunTradeAnim_LinkTrade: @ 8053D84 push {r4-r6,lr} bl sub_8050F14 lsls r0, 24 lsrs r6, r0, 24 cmp r6, 0x1 bne _08053DE6 - ldr r5, _08053E08 @ =gUnknown_2031DAC + ldr r5, _08053E08 @ =sTradeAnimationResourcesPtr ldr r0, [r5] adds r0, 0x8E ldrb r1, [r0] @@ -6779,7 +5848,7 @@ sub_8053D84: @ 8053D84 lsls r1, 24 lsrs r1, 24 adds r0, r4, 0 - bl sub_805080C + bl Trade_SwapPlayerAndParterMonData ldr r0, [r5] adds r2, r0, 0 adds r2, 0x74 @@ -6801,12 +5870,12 @@ _08053DE6: pop {r0} bx r0 .align 2, 0 -_08053E08: .4byte gUnknown_2031DAC +_08053E08: .4byte sTradeAnimationResourcesPtr _08053E0C: .4byte gSprites _08053E10: .4byte gUnknown_2031DA4 _08053E14: .4byte 0x0000abcd _08053E18: .4byte sub_8053E1C - thumb_func_end sub_8053D84 + thumb_func_end CB2_RunTradeAnim_LinkTrade thumb_func_start sub_8053E1C sub_8053E1C: @ 8053E1C @@ -6818,7 +5887,7 @@ sub_8053E1C: @ 8053E1C bl sub_805383C cmp r4, 0 bne _08053E68 - ldr r4, _08053E80 @ =gUnknown_2031DAC + ldr r4, _08053E80 @ =sTradeAnimationResourcesPtr ldr r2, [r4] adds r0, r2, 0 adds r0, 0x72 @@ -6853,7 +5922,7 @@ _08053E68: pop {r0} bx r0 .align 2, 0 -_08053E80: .4byte gUnknown_2031DAC +_08053E80: .4byte sTradeAnimationResourcesPtr _08053E84: .4byte 0x00000101 _08053E88: .4byte 0x0000dcba thumb_func_end sub_8053E1C @@ -7009,7 +6078,7 @@ _08054068: .align 2, 0 _0805407C: .4byte gMain _08054080: - ldr r0, _080540B4 @ =gUnknown_2031DAC + ldr r0, _080540B4 @ =sTradeAnimationResourcesPtr ldr r3, [r0] ldr r0, [r3, 0x64] adds r0, 0x1 @@ -7036,7 +6105,7 @@ _080540A8: adds r0, r2 b _080540D0 .align 2, 0 -_080540B4: .4byte gUnknown_2031DAC +_080540B4: .4byte sTradeAnimationResourcesPtr _080540B8: .4byte gMain _080540BC: bl IsLinkTaskFinished @@ -7078,16 +6147,16 @@ _08054104: bl InUnionRoom cmp r0, 0 beq _08054120 - ldr r0, _0805411C @ =gUnknown_2031DAC + ldr r0, _0805411C @ =sTradeAnimationResourcesPtr ldr r1, [r0] adds r1, 0xF8 movs r0, 0x12 bl sub_8113550 b _08054132 .align 2, 0 -_0805411C: .4byte gUnknown_2031DAC +_0805411C: .4byte sTradeAnimationResourcesPtr _08054120: - ldr r0, _08054174 @ =gUnknown_2031DAC + ldr r0, _08054174 @ =sTradeAnimationResourcesPtr ldr r1, [r0] adds r1, 0xF8 movs r0, 0xC @@ -7126,12 +6195,12 @@ _0805415A: strb r0, [r1] b _080541F2 .align 2, 0 -_08054174: .4byte gUnknown_2031DAC +_08054174: .4byte sTradeAnimationResourcesPtr _08054178: .4byte gWirelessCommType _0805417C: .4byte gLinkPlayers _08054180: .4byte gMain _08054184: - ldr r0, _0805419C @ =gUnknown_2031DAC + ldr r0, _0805419C @ =sTradeAnimationResourcesPtr ldr r1, [r0] ldr r0, [r1, 0x64] adds r0, 0x1 @@ -7145,7 +6214,7 @@ _08054194: adds r1, r2, r0 b _08054340 .align 2, 0 -_0805419C: .4byte gUnknown_2031DAC +_0805419C: .4byte sTradeAnimationResourcesPtr _080541A0: bl sub_80DA3D8 lsls r0, 24 @@ -7163,7 +6232,7 @@ _080541A0: .align 2, 0 _080541C0: .4byte gMain _080541C4: - ldr r0, _080541D8 @ =gUnknown_2031DAC + ldr r0, _080541D8 @ =sTradeAnimationResourcesPtr ldr r0, [r0] str r1, [r0, 0x64] ldr r0, _080541DC @ =gMain @@ -7174,7 +6243,7 @@ _080541C4: strb r1, [r0] b _08054396 .align 2, 0 -_080541D8: .4byte gUnknown_2031DAC +_080541D8: .4byte sTradeAnimationResourcesPtr _080541DC: .4byte gMain _080541E0: bl sub_80DA40C @@ -7187,15 +6256,15 @@ _080541E0: _080541F0: strb r1, [r0] _080541F2: - ldr r0, _08054200 @ =gUnknown_2031DAC + ldr r0, _08054200 @ =sTradeAnimationResourcesPtr ldr r0, [r0] str r2, [r0, 0x64] b _08054396 .align 2, 0 _080541FC: .4byte gMain -_08054200: .4byte gUnknown_2031DAC +_08054200: .4byte sTradeAnimationResourcesPtr _08054204: - ldr r4, _08054238 @ =gUnknown_2031DAC + ldr r4, _08054238 @ =sTradeAnimationResourcesPtr ldr r1, [r4] ldr r0, [r1, 0x64] adds r0, 0x1 @@ -7219,7 +6288,7 @@ _08054214: str r0, [r4, 0x64] b _08054242 .align 2, 0 -_08054238: .4byte gUnknown_2031DAC +_08054238: .4byte sTradeAnimationResourcesPtr _0805423C: ldr r1, [r4] movs r0, 0 @@ -7235,7 +6304,7 @@ _08054242: .align 2, 0 _08054250: .4byte gMain _08054254: - ldr r0, _08054270 @ =gUnknown_2031DAC + ldr r0, _08054270 @ =sTradeAnimationResourcesPtr ldr r1, [r0] ldr r0, [r1, 0x64] cmp r0, 0 @@ -7249,7 +6318,7 @@ _08054254: strb r1, [r0] b _08054396 .align 2, 0 -_08054270: .4byte gUnknown_2031DAC +_08054270: .4byte sTradeAnimationResourcesPtr _08054274: .4byte gMain _08054278: subs r0, 0x1 @@ -7273,7 +6342,7 @@ _0805428A: .align 2, 0 _0805429C: .4byte gMain _080542A0: - ldr r0, _080542C0 @ =gUnknown_2031DAC + ldr r0, _080542C0 @ =sTradeAnimationResourcesPtr ldr r1, [r0] ldr r0, [r1, 0x64] adds r0, 0x1 @@ -7289,7 +6358,7 @@ _080542A0: bl sub_800AB9C b _08054396 .align 2, 0 -_080542C0: .4byte gUnknown_2031DAC +_080542C0: .4byte sTradeAnimationResourcesPtr _080542C4: bl IsLinkTaskFinished lsls r0, 24 @@ -7430,7 +6499,7 @@ sub_80543C4: @ 80543C4 bl GetBgTilemapBuffer bl Free bl FreeMonSpritesGfx - ldr r4, _08054434 @ =gUnknown_2031DAC + ldr r4, _08054434 @ =sTradeAnimationResourcesPtr ldr r0, [r4] bl Free str r5, [r4] @@ -7453,7 +6522,7 @@ _0805441A: bx r0 .align 2, 0 _08054430: .4byte gPaletteFade -_08054434: .4byte gUnknown_2031DAC +_08054434: .4byte sTradeAnimationResourcesPtr _08054438: .4byte gWirelessCommType _0805443C: .4byte gMain thumb_func_end sub_80543C4 @@ -7492,7 +6561,7 @@ sub_8054470: @ 8054470 ands r0, r1 cmp r0, 0 bne _08054494 - ldr r0, _080544A0 @ =sub_80505CC + ldr r0, _080544A0 @ =CB2_InitTradeAnim_InGameTrade bl SetMainCallback2 ldr r1, _080544A4 @ =gFieldCallback ldr r0, _080544A8 @ =FieldCallback_ReturnToEventScript2 @@ -7505,7 +6574,7 @@ _08054494: bx r0 .align 2, 0 _0805449C: .4byte gPaletteFade -_080544A0: .4byte sub_80505CC +_080544A0: .4byte CB2_InitTradeAnim_InGameTrade _080544A4: .4byte gFieldCallback _080544A8: .4byte FieldCallback_ReturnToEventScript2 thumb_func_end sub_8054470 @@ -7554,7 +6623,7 @@ _080544F8: .4byte 0x0000083b thumb_func_start sub_80544FC sub_80544FC: @ 80544FC push {lr} - bl sub_80504CC + bl TradeAnimInit_LoadGfx pop {r0} bx r0 thumb_func_end sub_80544FC @@ -7575,7 +6644,7 @@ sub_8054508: @ 8054508 adds r0, r5, 0 movs r1, 0xFF bl FillWindowPixelBuffer - ldr r2, _08054580 @ =gUnknown_2031DAC + ldr r2, _08054580 @ =sTradeAnimationResourcesPtr ldr r1, [r2] movs r6, 0x82 lsls r6, 1 @@ -7619,7 +6688,7 @@ sub_8054508: @ 8054508 pop {r0} bx r0 .align 2, 0 -_08054580: .4byte gUnknown_2031DAC +_08054580: .4byte sTradeAnimationResourcesPtr _08054584: .4byte 0x00000105 thumb_func_end sub_8054508 @@ -7750,7 +6819,7 @@ c3_0805465C: @ 805465C ldrsh r4, [r7, r0] cmp r4, 0 bne _080546BC - ldr r1, _0805472C @ =gUnknown_2031DAC + ldr r1, _0805472C @ =sTradeAnimationResourcesPtr ldr r3, [r1] ldr r5, _08054730 @ =0x0000010b adds r2, r3, r5 @@ -7781,7 +6850,7 @@ c3_0805465C: @ 805465C movs r1, 0x13 bl SetGpuReg _080546BC: - ldr r4, _0805472C @ =gUnknown_2031DAC + ldr r4, _0805472C @ =sTradeAnimationResourcesPtr ldr r2, [r4] ldr r5, _08054730 @ =0x0000010b mov r8, r5 @@ -7835,7 +6904,7 @@ _0805471E: bx r0 .align 2, 0 _08054728: .4byte gTasks+0x8 -_0805472C: .4byte gUnknown_2031DAC +_0805472C: .4byte sTradeAnimationResourcesPtr _08054730: .4byte 0x0000010b thumb_func_end c3_0805465C @@ -7854,7 +6923,7 @@ sub_8054734: @ 8054734 ldrsh r0, [r6, r1] cmp r0, 0 bne _08054774 - ldr r1, _080547EC @ =gUnknown_2031DAC + ldr r1, _080547EC @ =sTradeAnimationResourcesPtr ldr r0, [r1] ldr r3, _080547F0 @ =0x00000109 adds r2, r0, r3 @@ -7872,7 +6941,7 @@ sub_8054734: @ 8054734 movs r1, 0x13 bl SetGpuReg _08054774: - ldr r5, _080547EC @ =gUnknown_2031DAC + ldr r5, _080547EC @ =sTradeAnimationResourcesPtr ldr r0, [r5] ldr r3, _080547F4 @ =0x0000010b adds r1, r0, r3 @@ -7928,7 +6997,7 @@ _08054774: b _0805480C .align 2, 0 _080547E8: .4byte gTasks+0x8 -_080547EC: .4byte gUnknown_2031DAC +_080547EC: .4byte sTradeAnimationResourcesPtr _080547F0: .4byte 0x00000109 _080547F4: .4byte 0x0000010b _080547F8: .4byte 0x0000ffff diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s index 67964b9b9..5f4d1686a 100644 --- a/data/data_83FECCC.s +++ b/data/data_83FECCC.s @@ -1739,7 +1739,15 @@ gUnknown_845A788:: @ 845A788 .incbin "baserom.gba", 0x45A788, 0x60 gUnknown_845A7E8:: @ 845A7E8 - .incbin "baserom.gba", 0x45A7E8, 0x24 + .4byte gUnknown_841718C @ Not what other player wants + .4byte gUnknown_84171CC @ Not an egg + .4byte gUnknown_84170BC @ Mon can't be traded + .4byte gUnknown_84170BC @ Mon can't be traded + .4byte gUnknown_84170FC @ Other trainer's mon can't be traded + .4byte gUnknown_84170E0 @ Egg can't be traded + .4byte gUnknown_8417130 @ Other trainer can't accept + .4byte gUnknown_8417164 @ Can't trade with trainer now + .4byte gUnknown_8417164 @ Can't trade with trainer now gUnknown_845A80C:: @ 845A80C .incbin "baserom.gba", 0x45A80C, 0x74 diff --git a/data/strings.s b/data/strings.s index 5305352b7..bd5c308a5 100644 --- a/data/strings.s +++ b/data/strings.s @@ -1052,24 +1052,29 @@ gUnknown_84170BC:: @ 84170BC gUnknown_84170E0:: @ 84170E0 .string "An EGG can't be traded now.$" + .align 2 gUnknown_84170FC:: @ 0x84170FC .string "The other TRAINER's POKéMON\n" .string "can't be traded now.$" -gUnknown_841712D:: @ 0x841712D - .string " The other TRAINER can't accept\n" + .align 2 +gUnknown_8417130:: @ 0x8417130 + .string "The other TRAINER can't accept\n" .string "that POKéMON now.$" -gUnknown_8417161:: @ 0x8417161 - .string " You can't trade with that\n" + .align 2 +gUnknown_8417164:: @ 0x8417164 + .string "You can't trade with that\n" .string "TRAINER now.$" -gUnknown_841718B:: @ 0x841718B - .string " That isn't the type of POKéMON\n" + .align 2 +gUnknown_841718C:: @ 0x841718C + .string "That isn't the type of POKéMON\n" .string "that the other TRAINER wants.$" -gUnknown_84171C9:: @ 0x84171C9 - .string " That isn't an EGG.$" + .align 2 +gUnknown_84171CC:: @ 0x84171CC + .string "That isn't an EGG.$" gUnknown_84171DF:: @ 0x84171DF .string "Choose a POKéMON.$" diff --git a/data/trade.s b/data/trade.s index d778318a1..0102b1faf 100644 --- a/data/trade.s +++ b/data/trade.s @@ -261,16 +261,16 @@ gUnknown_8261EE4:: @ 8261EE4 .4byte gUnknown_841E10A, sub_804F440 .4byte gUnknown_841E112, sub_804F464 -gUnknown_8261EF4:: @ 8261EF4 - .4byte gUnknown_841E118 - .4byte gUnknown_841E145 - .4byte gUnknown_841E16B - .4byte gUnknown_8417094 - .4byte gUnknown_841E199 - .4byte gUnknown_841E1C5 - .4byte gUnknown_84170BC - .4byte gUnknown_84170E0 - .4byte gUnknown_84170FC +sTradeErrorOrStatusMessagePtrs:: @ 8261EF4 + .4byte gUnknown_841E118 @ Communication standby + .4byte gUnknown_841E145 @ The trade has been canceled. + .4byte gUnknown_841E16B @ That's your only POKéMON for battle + .4byte gUnknown_8417094 @ That's your only POKéMON for battle + .4byte gUnknown_841E199 @ Waiting for your friend to finish + .4byte gUnknown_841E1C5 @ Your friend wants to trade POKéMON + .4byte gUnknown_84170BC @ That POKéMON can't be traded now + .4byte gUnknown_84170E0 @ An EGG can't be traded now + .4byte gUnknown_84170FC @ The other TRAINER's POKéMON can't be traded now gUnknown_8261F18:: @ 8261F18 .byte 0, 1, 2 @@ -699,8 +699,8 @@ gUnknown_826CDD4:: @ 826CDD4 gUnknown_826CDDC:: @ 826CDDC obj_pal gUnknown_826205C, 5558 -gUnknown_826CDE4:: @ 826CDE4 - spr_template 5557, 5558, gOamData_826CD00, gSpriteAnimTable_826CD80, NULL, gSpriteAffineAnimTable_826CDC8, sub_80538BC +sTradePokeballSpriteTemplate:: @ 826CDE4 + spr_template 5557, 5558, gOamData_826CD00, gSpriteAnimTable_826CD80, NULL, gSpriteAffineAnimTable_826CDC8, SpriteCB_TradePokeball_Default gOamData_826CDFC:: .4byte 0x80000500, 0x00000400 @@ -730,7 +730,7 @@ gUnknown_826CE3C:: @ 826CE3C obj_pal gUnknown_826499C, 5555 gUnknown_826CE44:: @ 826CE44 - spr_template 5550, 5551, gOamData_826CDFC, gSpriteAnimTable_826CE0C, NULL, gSpriteAffineAnimTable_826CE28, sub_804FD24 + spr_template 5550, 5551, gOamData_826CDFC, gSpriteAnimTable_826CE0C, NULL, gSpriteAffineAnimTable_826CE28, SpriteCB_TradeGlowCable gOamData_826CE5C:: .4byte 0x80008000, 0x00000400 @@ -751,7 +751,7 @@ gUnknown_826CE7C:: @ 826CE7C obj_tiles gUnknown_8264C1C, 0x0300, 5552 gUnknown_826CE84:: @ 826CE84 - spr_template 5552, 5551, gOamData_826CE5C, gSpriteAnimTable_826CE74, NULL, gDummySpriteAffineAnimTable, sub_804FD78 + spr_template 5552, 5551, gOamData_826CE5C, gSpriteAnimTable_826CE74, NULL, gDummySpriteAffineAnimTable, SpriteCB_TradeGlowCore gOamData_826CE9C:: .4byte 0x80008000, 0x00000400 @@ -766,8 +766,8 @@ gSpriteAnimTable_826CEAC:: gUnknown_826CEB0:: @ 826CEB0 obj_tiles gUnknown_8264E1C, 0x0100, 5554 -gUnknown_826CEB8:: @ 826CEB8 - spr_template 5554, 5555, gOamData_826CE9C, gSpriteAnimTable_826CEAC, NULL, gDummySpriteAffineAnimTable, sub_804FDB8 +sGameLinkCableEndSpriteTemplate:: @ 826CEB8 + spr_template 5554, 5555, gOamData_826CE9C, gSpriteAnimTable_826CEAC, NULL, gDummySpriteAffineAnimTable, SpriteCB_GameLinkCableEnd_Outbound gOamData_826CED0:: .4byte 0xc0004000, 0x00000400 diff --git a/src/trade.c b/src/trade.c index 716b74eb5..026f77db8 100644 --- a/src/trade.c +++ b/src/trade.c @@ -10,6 +10,8 @@ #include "librfu.h" #include "text_window.h" #include "pokemon_icon.h" +#include "pokedex.h" +#include "mail_data.h" #include "graphics.h" #include "link.h" #include "link_rfu.h" @@ -35,7 +37,7 @@ #include "constants/songs.h" #include "constants/moves.h" -struct TradeResources +struct TradeMenuResources { /*0x0000*/ u8 unk_0; /*0x0001*/ u8 unk_1; @@ -75,7 +77,7 @@ struct TradeResources /*0x08F0*/ u16 tilemapBuffer[BG_SCREEN_SIZE / 2]; }; -struct TradeResources2 { +struct TradeAnimationResources { /*0x00*/ struct Pokemon mon; /*0x64*/ u32 timer; /*0x68*/ u32 unk_68[2]; @@ -112,23 +114,36 @@ struct TradeResources2 { /*0xEE*/ bool8 isLinkTrade; /*0xF0*/ u16 tradeSpecies[2]; /*0xF4*/ u16 cachedMapMusic; - /*0xF6*/ u8 unk_F6[3]; - /*0xF9*/ u8 filler_F9; - /*0xFA*/ u8 unk_FA; - /*0xFB*/ u8 unk_FB; - /*0xFC*/ u8 unk_FC; - /*0xFD*/ u8 unk_FD; - /*0xFE*/ u8 unk_FE; + /*0xF6*/ u8 unk_F6; + /*0xF8*/ u16 unk_F8; + /*0xFA*/ u16 unk_FA; + /*0xFC*/ u8 unk_FC[7]; + /*0x103*/ u8 filler_103[5]; + /*0x108*/ u8 unk_108; + /*0x109*/ u8 filler_109[7]; +}; + +enum TradeStatusMsg +{ + TRADESTATMSG_COMMSTANDBY = 0, + TRADESTATMSG_CANCELED, + TRADESTATMSG_ONLYMON, + TRADESTATMSG_ONLYMON2, + TRADESTATMSG_WAITINGFORFRIEND, + TRADESTATMSG_FRIENDWANTSTOTRADE, + TRADESTATMSG_YOURMONCANTBETRADED, + TRADESTATMSG_EGGCANTBETRADED, + TRADESTATMSG_PARTNERMONCANTBETRADED }; IWRAM_DATA vu16 gUnknown_3000E78; EWRAM_DATA u8 *gUnknown_2031C90 = NULL; EWRAM_DATA u8 *gUnknown_2031C94[14] = {}; -EWRAM_DATA u8 gUnknown_2031CCC[216] = {}; +EWRAM_DATA struct MailStruct gLinkPartnerMail[6] = {}; EWRAM_DATA u8 gUnknown_2031DA4[2] = {0}; -EWRAM_DATA struct TradeResources * gUnknown_2031DA8 = NULL; -EWRAM_DATA struct TradeResources2 * gUnknown_2031DAC = NULL; +EWRAM_DATA struct TradeMenuResources * sTradeMenuResourcesPtr = NULL; +EWRAM_DATA struct TradeAnimationResources * sTradeAnimationResourcesPtr = NULL; void sub_804C728(void); void sub_804D4F8(void); @@ -137,7 +152,7 @@ void sub_804D694(u8 state); void sub_804D764(void); u8 shedinja_maker_maybe(void); void sub_804DFF0(void); -void sub_804E9E4(void); +static void RunTradeMenuCallback(void); void sub_804EAAC(u8 a0); void sub_804EAE4(u8 side); u8 sub_804EE6C(u8 *str, u8 whichParty, u8 partyIdx); @@ -148,8 +163,8 @@ void sub_804F284(u8 side); void sub_804F3B4(void); void sub_804F3C8(u8 a0); void sub_804F488(u16 a0, u8 a1); -void sub_804F4DC(void); -void sub_804F5BC(u8 str_idx); +static void sub_804F4DC(void); +void PrintTradeErrorOrStatusMessage(u8 str_idx); bool8 sub_804F610(void); void sub_804F728(const u8 *name, u8 *a1, u8 unused); void sub_804F748(u8 side); @@ -157,8 +172,17 @@ void sub_804F890(u8 side); void sub_804F964(void); void sub_804F9D8(void); u32 sub_804FA14(struct Pokemon * party, int partyCount, int cursorPos); +void CB2_InitTradeAnim_LinkTrade(void); +void sub_805049C(void); +void sub_80504B0(void); +void TradeAnimInit_LoadGfx(void); +void CB2_RunTradeAnim_InGameTrade(void); +void sub_8050968(u8 idx); +void sub_8050DE0(void); +void sub_8050E24(void); +void sub_8050F14(void); +void CB2_RunTradeAnim_LinkTrade(void); void LoadHeldItemIcons(void); -void sub_8050138(void); extern const u16 gUnknown_8260C30[]; extern const u16 gUnknown_8261430[]; @@ -180,11 +204,19 @@ extern const u8 gUnknown_8261F18[]; extern const u8 gUnknown_8261EB6[]; extern const u8 gUnknown_8261EC7[]; extern const u8 gUnknown_841E09F[]; -extern const u8 *const gUnknown_8261EF4[]; +extern const u8 *const sTradeErrorOrStatusMessagePtrs[]; extern const struct SpritePalette gUnknown_8261D00; extern const struct SpritePalette gUnknown_8261C60; extern const struct SpriteSheet gUnknown_8261C58; extern const u16 gTradeGlow2PaletteAnimTable[]; +extern const struct SpriteSheet gUnknown_826CDD4; +extern const struct SpritePalette gUnknown_826CDDC; +extern const struct BgTemplate gUnknown_826D1D4[4]; +extern const struct WindowTemplate gUnknown_826D1BC[]; +extern const u16 gUnknown_826AA5C[]; +extern const u16 gUnknown_8269A5C[]; +extern const u32 gUnknown_3379A0Bin[]; +extern const u16 gUnknown_826407C[]; void sub_804C600(void) { @@ -200,7 +232,7 @@ void sub_804C600(void) LoadPalette(gTMCaseMainWindowPalette, 0xD0, 0x14); ResetBgsAndClearDma3BusyFlags(FALSE); InitBgsFromTemplates(0, gUnknown_8261F1C, NELEMS(gUnknown_8261F1C)); - SetBgTilemapBuffer(1, gUnknown_2031DA8->tilemapBuffer); + SetBgTilemapBuffer(1, sTradeMenuResourcesPtr->tilemapBuffer); if (InitWindows(gUnknown_8261F2C)) { DeactivateAllTextPrinters(); @@ -214,14 +246,14 @@ void sub_804C600(void) 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; + sTradeMenuResourcesPtr->unk_69 = 0; + sTradeMenuResourcesPtr->unk_6F = 0; + sTradeMenuResourcesPtr->unk_70 = 0; + sTradeMenuResourcesPtr->unk_74[0] = 0; + sTradeMenuResourcesPtr->unk_74[1] = 0; + sTradeMenuResourcesPtr->unk_7A = 0; + sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_A8 = 0; } } @@ -243,7 +275,7 @@ void sub_804C728(void) switch (gMain.state) { case 0: - gUnknown_2031DA8 = AllocZeroed(sizeof(*gUnknown_2031DA8)); + sTradeMenuResourcesPtr = AllocZeroed(sizeof(*sTradeMenuResourcesPtr)); sub_804C600(); gUnknown_2031C90 = AllocZeroed(0xE00); @@ -262,13 +294,13 @@ void sub_804C728(void) CreateMon(&gEnemyParty[i], SPECIES_NONE, 0, 0x20, FALSE, 0, OT_ID_PLAYER_ID, 0); } - sub_804F5BC(0); + PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY); ShowBg(0); if (!gReceivedRemoteLinkPlayers) { gLinkType = 0x1122; - gUnknown_2031DA8->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_A8 = 0; if (gWirelessCommType) { @@ -290,10 +322,10 @@ void sub_804C728(void) } break; case 2: - gUnknown_2031DA8->unk_A8++; - if (gUnknown_2031DA8->unk_A8 > 11) + sTradeMenuResourcesPtr->unk_A8++; + if (sTradeMenuResourcesPtr->unk_A8 > 11) { - gUnknown_2031DA8->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_A8 = 0; gMain.state++; } break; @@ -302,7 +334,7 @@ void sub_804C728(void) { if (IsLinkMaster()) { - if (++gUnknown_2031DA8->unk_A8 > 30) + if (++sTradeMenuResourcesPtr->unk_A8 > 30) { CheckShouldAdvanceLinkState(); gMain.state++; @@ -320,7 +352,7 @@ void sub_804C728(void) sub_80FBB4C(); CalculatePlayerPartyCount(); gMain.state++; - gUnknown_2031DA8->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_A8 = 0; if (gWirelessCommType) { sub_80FA484(TRUE); @@ -354,13 +386,13 @@ void sub_804C728(void) CalculateEnemyPartyCount(); SetGpuReg(REG_OFFSET_DISPCNT, 0); SetGpuReg(REG_OFFSET_BLDCNT, 0); - gUnknown_2031DA8->partyCounts[0] = gPlayerPartyCount; - gUnknown_2031DA8->partyCounts[1] = gEnemyPartyCount; + sTradeMenuResourcesPtr->partyCounts[0] = gPlayerPartyCount; + sTradeMenuResourcesPtr->partyCounts[1] = gEnemyPartyCount; - for (i = 0; i < gUnknown_2031DA8->partyCounts[0]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++) { struct Pokemon *mon = &gPlayerParty[i]; - gUnknown_2031DA8->partyIcons[0][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2), + sTradeMenuResourcesPtr->partyIcons[0][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2), SpriteCB_MonIcon, (gTradeMonSpriteCoords[i][0] * 8) + 14, (gTradeMonSpriteCoords[i][1] * 8) - 12, @@ -369,10 +401,10 @@ void sub_804C728(void) TRUE); } - for (i = 0; i < gUnknown_2031DA8->partyCounts[1]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++) { struct Pokemon *mon = &gEnemyParty[i]; - gUnknown_2031DA8->partyIcons[1][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), + sTradeMenuResourcesPtr->partyIcons[1][i] = CreateMonIcon(GetMonData(mon, MON_DATA_SPECIES2, NULL), SpriteCB_MonIcon, (gTradeMonSpriteCoords[i + PARTY_SIZE][0] * 8) + 14, (gTradeMonSpriteCoords[i + PARTY_SIZE][1] * 8) - 12, @@ -384,11 +416,11 @@ void sub_804C728(void) break; case 8: LoadHeldItemIcons(); - sub_812256C(gUnknown_2031DA8->partyCounts, gUnknown_2031DA8->partyIcons, 0); + sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0); gMain.state++; break; case 9: - sub_812256C(gUnknown_2031DA8->partyCounts, gUnknown_2031DA8->partyIcons, 1); + sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1); gMain.state++; break; case 10: @@ -398,7 +430,7 @@ void sub_804C728(void) 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; + sTradeMenuResourcesPtr->unk_A8 = 0; break; case 11: if (sub_804F610()) @@ -445,16 +477,16 @@ void sub_804C728(void) 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; + sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx = CreateSprite(&gUnknown_8261CB0, gTradeMonSpriteCoords[0][0] * 8 + 32, gTradeMonSpriteCoords[0][1] * 8, 2); + sTradeMenuResourcesPtr->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; + sTradeMenuResourcesPtr->unk_0 = 0; + sTradeMenuResourcesPtr->unk_1 = 0; sub_804D764(); gMain.state++; PlayBGM(MUS_SLOT); @@ -557,7 +589,7 @@ void sub_804C728(void) "\t.4byte _0804CEB0\n" "\t.4byte _0804CED0\n" "_0804C7B0:\n" - "\tldr r4, _0804C7E8 @ =gUnknown_2031DA8\n" + "\tldr r4, _0804C7E8 @ =sTradeMenuResourcesPtr\n" "\tldr r0, _0804C7EC @ =0x000010f0\n" "\tbl AllocZeroed\n" "\tstr r0, [r4]\n" @@ -583,7 +615,7 @@ void sub_804C728(void) "\tadds r1, r3\n" "\tb _0804CEC2\n" "\t.align 2, 0\n" - "_0804C7E8: .4byte gUnknown_2031DA8\n" + "_0804C7E8: .4byte sTradeMenuResourcesPtr\n" "_0804C7EC: .4byte 0x000010f0\n" "_0804C7F0: .4byte gUnknown_2031C90\n" "_0804C7F4: .4byte gUnknown_2031C94\n" @@ -613,7 +645,7 @@ void sub_804C728(void) "\tcmp r6, 0x5\n" "\tble _0804C80A\n" "\tmovs r0, 0\n" - "\tbl sub_804F5BC\n" + "\tbl PrintTradeErrorOrStatusMessage\n" "\tmovs r0, 0\n" "\tbl ShowBg\n" "\tldr r0, _0804C86C @ =gReceivedRemoteLinkPlayers\n" @@ -624,7 +656,7 @@ void sub_804C728(void) "\tldr r5, _0804C874 @ =0x00001122\n" "\tadds r0, r5, 0\n" "\tstrh r0, [r1]\n" - "\tldr r0, _0804C878 @ =gUnknown_2031DA8\n" + "\tldr r0, _0804C878 @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r0]\n" "\tadds r0, 0xA8\n" "\tstrb r2, [r0]\n" @@ -642,7 +674,7 @@ void sub_804C728(void) "_0804C86C: .4byte gReceivedRemoteLinkPlayers\n" "_0804C870: .4byte gLinkType\n" "_0804C874: .4byte 0x00001122\n" - "_0804C878: .4byte gUnknown_2031DA8\n" + "_0804C878: .4byte sTradeMenuResourcesPtr\n" "_0804C87C: .4byte gWirelessCommType\n" "_0804C880:\n" "\tbl OpenLink\n" @@ -679,7 +711,7 @@ void sub_804C728(void) "\t.align 2, 0\n" "_0804C8C4: .4byte gMain\n" "_0804C8C8:\n" - "\tldr r2, _0804C8F0 @ =gUnknown_2031DA8\n" + "\tldr r2, _0804C8F0 @ =sTradeMenuResourcesPtr\n" "\tldr r1, [r2]\n" "\tadds r1, 0xA8\n" "\tldrb r0, [r1]\n" @@ -700,7 +732,7 @@ void sub_804C728(void) "\tadds r1, r3, r2\n" "\tb _0804CEC2\n" "\t.align 2, 0\n" - "_0804C8F0: .4byte gUnknown_2031DA8\n" + "_0804C8F0: .4byte sTradeMenuResourcesPtr\n" "_0804C8F4:\n" "\tbl GetLinkPlayerCount_2\n" "\tadds r4, r0, 0\n" @@ -715,7 +747,7 @@ void sub_804C728(void) "\tlsls r0, 24\n" "\tcmp r0, 0\n" "\tbeq _0804C940\n" - "\tldr r0, _0804C938 @ =gUnknown_2031DA8\n" + "\tldr r0, _0804C938 @ =sTradeMenuResourcesPtr\n" "\tldr r1, [r0]\n" "\tadds r1, 0xA8\n" "\tldrb r0, [r1]\n" @@ -734,7 +766,7 @@ void sub_804C728(void) "\tadds r1, r3\n" "\tb _0804CEC2\n" "\t.align 2, 0\n" - "_0804C938: .4byte gUnknown_2031DA8\n" + "_0804C938: .4byte sTradeMenuResourcesPtr\n" "_0804C93C: .4byte gMain\n" "_0804C940:\n" "\tldr r1, _0804C94C @ =gMain\n" @@ -768,7 +800,7 @@ void sub_804C728(void) "\tadds r0, 0x1\n" "\tmovs r2, 0\n" "\tstrb r0, [r1]\n" - "\tldr r0, _0804C9A8 @ =gUnknown_2031DA8\n" + "\tldr r0, _0804C9A8 @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r0]\n" "\tadds r0, 0xA8\n" "\tstrb r2, [r0]\n" @@ -785,7 +817,7 @@ void sub_804C728(void) "\t.align 2, 0\n" "_0804C9A0: .4byte gReceivedRemoteLinkPlayers\n" "_0804C9A4: .4byte gMain\n" - "_0804C9A8: .4byte gUnknown_2031DA8\n" + "_0804C9A8: .4byte sTradeMenuResourcesPtr\n" "_0804C9AC: .4byte gWirelessCommType\n" "_0804C9B0:\n" "\tldr r0, _0804C9E0 @ =gWirelessCommType\n" @@ -841,7 +873,7 @@ void sub_804C728(void) "\tmovs r0, 0x50\n" "\tmovs r1, 0\n" "\tbl SetGpuReg\n" - "\tldr r2, _0804CB2C @ =gUnknown_2031DA8\n" + "\tldr r2, _0804CB2C @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r2]\n" "\tldr r1, _0804CB30 @ =gPlayerPartyCount\n" "\tldrb r1, [r1]\n" @@ -907,7 +939,7 @@ void sub_804C728(void) "\tblt _0804CA4A\n" "_0804CAA8:\n" "\tmovs r6, 0\n" - "\tldr r1, _0804CB2C @ =gUnknown_2031DA8\n" + "\tldr r1, _0804CB2C @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r1]\n" "\tadds r0, 0x37\n" "\tldrb r0, [r0]\n" @@ -971,7 +1003,7 @@ void sub_804C728(void) "\tadds r1, r3\n" "\tb _0804CEC2\n" "\t.align 2, 0\n" - "_0804CB2C: .4byte gUnknown_2031DA8\n" + "_0804CB2C: .4byte sTradeMenuResourcesPtr\n" "_0804CB30: .4byte gPlayerPartyCount\n" "_0804CB34: .4byte gEnemyPartyCount\n" "_0804CB38: .4byte gTradeMonSpriteCoords\n" @@ -982,7 +1014,7 @@ void sub_804C728(void) "_0804CB4C: .4byte gMain\n" "_0804CB50:\n" "\tbl LoadHeldItemIcons\n" - "\tldr r0, _0804CB70 @ =gUnknown_2031DA8\n" + "\tldr r0, _0804CB70 @ =sTradeMenuResourcesPtr\n" "\tldr r1, [r0]\n" "\tadds r0, r1, 0\n" "\tadds r0, 0x36\n" @@ -995,10 +1027,10 @@ void sub_804C728(void) "\tadds r1, r5\n" "\tb _0804CEC2\n" "\t.align 2, 0\n" - "_0804CB70: .4byte gUnknown_2031DA8\n" + "_0804CB70: .4byte sTradeMenuResourcesPtr\n" "_0804CB74: .4byte gMain\n" "_0804CB78:\n" - "\tldr r0, _0804CB94 @ =gUnknown_2031DA8\n" + "\tldr r0, _0804CB94 @ =sTradeMenuResourcesPtr\n" "\tldr r1, [r0]\n" "\tadds r0, r1, 0\n" "\tadds r0, 0x36\n" @@ -1011,7 +1043,7 @@ void sub_804C728(void) "\tadds r1, r7\n" "\tb _0804CEC2\n" "\t.align 2, 0\n" - "_0804CB94: .4byte gUnknown_2031DA8\n" + "_0804CB94: .4byte sTradeMenuResourcesPtr\n" "_0804CB98: .4byte gMain\n" "_0804CB9C:\n" "\tldr r0, _0804CC14 @ =gSaveBlock2Ptr\n" @@ -1063,7 +1095,7 @@ void sub_804C728(void) "\tadds r0, 0x1\n" "\tmovs r2, 0\n" "\tstrb r0, [r1]\n" - "\tldr r0, _0804CC2C @ =gUnknown_2031DA8\n" + "\tldr r0, _0804CC2C @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r0]\n" "\tadds r0, 0xA8\n" "\tstrb r2, [r0]\n" @@ -1075,7 +1107,7 @@ void sub_804C728(void) "_0804CC20: .4byte gLinkPlayers + 8\n" "_0804CC24: .4byte gUnknown_8261ECC\n" "_0804CC28: .4byte gMain\n" - "_0804CC2C: .4byte gUnknown_2031DA8\n" + "_0804CC2C: .4byte sTradeMenuResourcesPtr\n" "_0804CC30:\n" "\tbl sub_804F610\n" "\tlsls r0, 24\n" @@ -1255,7 +1287,7 @@ void sub_804C728(void) "\tlsls r2, 3\n" "\tmovs r3, 0x2\n" "\tbl CreateSprite\n" - "\tldr r2, _0804CDD8 @ =gUnknown_2031DA8\n" + "\tldr r2, _0804CDD8 @ =sTradeMenuResourcesPtr\n" "\tldr r1, [r2]\n" "\tadds r1, 0x34\n" "\tmovs r3, 0\n" @@ -1277,14 +1309,14 @@ void sub_804C728(void) "_0804CDCC: .4byte gUnknown_8261CC8\n" "_0804CDD0: .4byte gUnknown_8261CB0\n" "_0804CDD4: .4byte gTradeMonSpriteCoords\n" - "_0804CDD8: .4byte gUnknown_2031DA8\n" + "_0804CDD8: .4byte sTradeMenuResourcesPtr\n" "_0804CDDC: .4byte gMain\n" "_0804CDE0:\n" "\tmovs r0, 0\n" "\tbl sub_804F748\n" "\tmovs r0, 0\n" "\tbl sub_804F020\n" - "\tldr r2, _0804CE14 @ =gUnknown_2031DA8\n" + "\tldr r2, _0804CE14 @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r2]\n" "\tmovs r1, 0\n" "\tstrb r1, [r0]\n" @@ -1302,7 +1334,7 @@ void sub_804C728(void) "\tbl PlayBGM\n" "\tb _0804CEE6\n" "\t.align 2, 0\n" - "_0804CE14: .4byte gUnknown_2031DA8\n" + "_0804CE14: .4byte sTradeMenuResourcesPtr\n" "_0804CE18: .4byte gMain\n" "_0804CE1C: .4byte 0x00000111\n" "_0804CE20:\n" @@ -1436,7 +1468,7 @@ void sub_804CF14(void) break; case 1: gMain.state++; - gUnknown_2031DA8->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_A8 = 0; break; case 2: gMain.state++; @@ -1461,14 +1493,14 @@ void sub_804CF14(void) break; case 7: CalculateEnemyPartyCount(); - gUnknown_2031DA8->partyCounts[0] = gPlayerPartyCount; - gUnknown_2031DA8->partyCounts[1] = gEnemyPartyCount; + sTradeMenuResourcesPtr->partyCounts[0] = gPlayerPartyCount; + sTradeMenuResourcesPtr->partyCounts[1] = gEnemyPartyCount; ClearWindowTilemap(0); sub_804F020(0); sub_804F020(1); - for (i = 0; i < gUnknown_2031DA8->partyCounts[0]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++) { - gUnknown_2031DA8->partyIcons[0][i] = CreateMonIcon( + sTradeMenuResourcesPtr->partyIcons[0][i] = CreateMonIcon( GetMonData(&gPlayerParty[i], MON_DATA_SPECIES2, NULL), SpriteCB_MonIcon, gTradeMonSpriteCoords[i][0] * 8 + 14, @@ -1478,9 +1510,9 @@ void sub_804CF14(void) TRUE ); } - for (i = 0; i < gUnknown_2031DA8->partyCounts[1]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++) { - gUnknown_2031DA8->partyIcons[1][i] = CreateMonIcon( + sTradeMenuResourcesPtr->partyIcons[1][i] = CreateMonIcon( GetMonData(&gEnemyParty[i], MON_DATA_SPECIES2, NULL), SpriteCB_MonIcon, gTradeMonSpriteCoords[i + 6][0] * 8 + 14, @@ -1494,11 +1526,11 @@ void sub_804CF14(void) break; case 8: LoadHeldItemIcons(); - sub_812256C(gUnknown_2031DA8->partyCounts, gUnknown_2031DA8->partyIcons, 0); + sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 0); gMain.state++; break; case 9: - sub_812256C(gUnknown_2031DA8->partyCounts, gUnknown_2031DA8->partyIcons, 1); + sub_812256C(sTradeMenuResourcesPtr->partyCounts, sTradeMenuResourcesPtr->partyIcons, 1); gMain.state++; break; case 10: @@ -1508,7 +1540,7 @@ void sub_804CF14(void) 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; + sTradeMenuResourcesPtr->unk_A8 = 0; break; case 11: if (sub_804F610()) @@ -1557,12 +1589,12 @@ void sub_804CF14(void) CreateSprite(&temp, (i * 32) + 24, 150, 1); } - if (gUnknown_2031DA8->tradeMenuCursorPosition < 6) - gUnknown_2031DA8->tradeMenuCursorPosition = sub_8138B20(); + if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) + sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20(); else - gUnknown_2031DA8->tradeMenuCursorPosition = sub_8138B20() + 6; + sTradeMenuResourcesPtr->tradeMenuCursorPosition = sub_8138B20() + 6; - gUnknown_2031DA8->tradeMenuCursorSpriteIdx = CreateSprite(&gUnknown_8261CB0, gTradeMonSpriteCoords[gUnknown_2031DA8->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[gUnknown_2031DA8->tradeMenuCursorPosition][1] * 8, 2); + sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx = CreateSprite(&gUnknown_8261CB0, gTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][0] * 8 + 32, gTradeMonSpriteCoords[sTradeMenuResourcesPtr->tradeMenuCursorPosition][1] * 8, 2); gMain.state = 16; break; case 16: @@ -1571,8 +1603,8 @@ void sub_804CF14(void) break; case 17: sub_804D694(1); - gUnknown_2031DA8->unk_0 = 0; - gUnknown_2031DA8->unk_1 = 0; + sTradeMenuResourcesPtr->unk_0 = 0; + sTradeMenuResourcesPtr->unk_1 = 0; sub_804D764(); gMain.state++; break; @@ -1716,7 +1748,7 @@ void sub_804CF14(void) "\tb _0804D4B4\n" "_0804D00C:\n" "\tbl CalculateEnemyPartyCount\n" - "\tldr r4, _0804D12C @ =gUnknown_2031DA8\n" + "\tldr r4, _0804D12C @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r4]\n" "\tldr r1, _0804D130 @ =gPlayerPartyCount\n" "\tldrb r1, [r1]\n" @@ -1789,7 +1821,7 @@ void sub_804CF14(void) "\tblt _0804D048\n" "_0804D0A8:\n" "\tmovs r6, 0\n" - "\tldr r1, _0804D12C @ =gUnknown_2031DA8\n" + "\tldr r1, _0804D12C @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r1]\n" "\tadds r0, 0x37\n" "\tldrb r0, [r0]\n" @@ -1853,7 +1885,7 @@ void sub_804CF14(void) "\tadds r1, r3\n" "\tb _0804D4B4\n" "\t.align 2, 0\n" - "_0804D12C: .4byte gUnknown_2031DA8\n" + "_0804D12C: .4byte sTradeMenuResourcesPtr\n" "_0804D130: .4byte gPlayerPartyCount\n" "_0804D134: .4byte gEnemyPartyCount\n" "_0804D138: .4byte gTradeMonSpriteCoords\n" @@ -1864,7 +1896,7 @@ void sub_804CF14(void) "_0804D14C: .4byte gMain\n" "_0804D150:\n" "\tbl LoadHeldItemIcons\n" - "\tldr r0, _0804D170 @ =gUnknown_2031DA8\n" + "\tldr r0, _0804D170 @ =sTradeMenuResourcesPtr\n" "\tldr r1, [r0]\n" "\tadds r0, r1, 0\n" "\tadds r0, 0x36\n" @@ -1877,10 +1909,10 @@ void sub_804CF14(void) "\tadds r1, r5\n" "\tb _0804D4B4\n" "\t.align 2, 0\n" - "_0804D170: .4byte gUnknown_2031DA8\n" + "_0804D170: .4byte sTradeMenuResourcesPtr\n" "_0804D174: .4byte gMain\n" "_0804D178:\n" - "\tldr r0, _0804D194 @ =gUnknown_2031DA8\n" + "\tldr r0, _0804D194 @ =sTradeMenuResourcesPtr\n" "\tldr r1, [r0]\n" "\tadds r0, r1, 0\n" "\tadds r0, 0x36\n" @@ -1893,7 +1925,7 @@ void sub_804CF14(void) "\tadds r1, r7\n" "\tb _0804D4B4\n" "\t.align 2, 0\n" - "_0804D194: .4byte gUnknown_2031DA8\n" + "_0804D194: .4byte sTradeMenuResourcesPtr\n" "_0804D198: .4byte gMain\n" "_0804D19C:\n" "\tldr r0, _0804D214 @ =gSaveBlock2Ptr\n" @@ -1946,7 +1978,7 @@ void sub_804CF14(void) "\tadds r0, 0x1\n" "\tmovs r2, 0\n" "\tstrb r0, [r1]\n" - "\tldr r0, _0804D22C @ =gUnknown_2031DA8\n" + "\tldr r0, _0804D22C @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r0]\n" "\tadds r0, 0xA8\n" "\tstrb r2, [r0]\n" @@ -1958,7 +1990,7 @@ void sub_804CF14(void) "_0804D220: .4byte gLinkPlayers + 8\n" "_0804D224: .4byte gUnknown_8261ECC\n" "_0804D228: .4byte gMain\n" - "_0804D22C: .4byte gUnknown_2031DA8\n" + "_0804D22C: .4byte sTradeMenuResourcesPtr\n" "_0804D230:\n" "\tbl sub_804F610\n" "\tlsls r0, 24\n" @@ -2132,7 +2164,7 @@ void sub_804CF14(void) "\tadds r6, 0x1\n" "\tcmp r6, 0x5\n" "\tble _0804D36C\n" - "\tldr r4, _0804D3B4 @ =gUnknown_2031DA8\n" + "\tldr r4, _0804D3B4 @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r4]\n" "\tadds r0, 0x35\n" "\tldrb r0, [r0]\n" @@ -2143,7 +2175,7 @@ void sub_804CF14(void) "\tb _0804D3C0\n" "\t.align 2, 0\n" "_0804D3B0: .4byte gUnknown_8261CC8\n" - "_0804D3B4: .4byte gUnknown_2031DA8\n" + "_0804D3B4: .4byte sTradeMenuResourcesPtr\n" "_0804D3B8:\n" "\tbl sub_8138B20\n" "\tldr r1, [r4]\n" @@ -2153,7 +2185,7 @@ void sub_804CF14(void) "\tstrb r0, [r1]\n" "\tldr r0, _0804D404 @ =gUnknown_8261CB0\n" "\tldr r3, _0804D408 @ =gTradeMonSpriteCoords\n" - "\tldr r4, _0804D40C @ =gUnknown_2031DA8\n" + "\tldr r4, _0804D40C @ =sTradeMenuResourcesPtr\n" "\tldr r1, [r4]\n" "\tadds r1, 0x35\n" "\tldrb r2, [r1]\n" @@ -2184,7 +2216,7 @@ void sub_804CF14(void) "\t.align 2, 0\n" "_0804D404: .4byte gUnknown_8261CB0\n" "_0804D408: .4byte gTradeMonSpriteCoords\n" - "_0804D40C: .4byte gUnknown_2031DA8\n" + "_0804D40C: .4byte sTradeMenuResourcesPtr\n" "_0804D410: .4byte gMain\n" "_0804D414:\n" "\tmovs r0, 0\n" @@ -2193,7 +2225,7 @@ void sub_804CF14(void) "_0804D41C:\n" "\tmovs r0, 0x1\n" "\tbl sub_804D694\n" - "\tldr r2, _0804D43C @ =gUnknown_2031DA8\n" + "\tldr r2, _0804D43C @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r2]\n" "\tmovs r1, 0\n" "\tstrb r1, [r0]\n" @@ -2206,7 +2238,7 @@ void sub_804CF14(void) "\tadds r1, r2\n" "\tb _0804D4B4\n" "\t.align 2, 0\n" - "_0804D43C: .4byte gUnknown_2031DA8\n" + "_0804D43C: .4byte sTradeMenuResourcesPtr\n" "_0804D440: .4byte gMain\n" "_0804D444:\n" "\tldr r2, _0804D478 @ =gPaletteFade\n" @@ -2303,10 +2335,10 @@ void sub_804D4F8(void) void sub_804D50C(void) { - if (++gUnknown_2031DA8->unk_A8 >= 16) + if (++sTradeMenuResourcesPtr->unk_A8 >= 16) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gUnknown_2031DA8->unk_6F = 10; + sTradeMenuResourcesPtr->unk_6F = 10; } } @@ -2314,16 +2346,16 @@ void sub_804D548(void) { if (!gPaletteFade.active) { - gUnknown_2031DA4[0] = gUnknown_2031DA8->tradeMenuCursorPosition; - gUnknown_2031DA4[1] = gUnknown_2031DA8->unk_7E; + gUnknown_2031DA4[0] = sTradeMenuResourcesPtr->tradeMenuCursorPosition; + gUnknown_2031DA4[1] = sTradeMenuResourcesPtr->unk_7E; if (gWirelessCommType != 0) { - gUnknown_2031DA8->unk_6F = 16; + sTradeMenuResourcesPtr->unk_6F = 16; } else { sub_800AA80(32); - gUnknown_2031DA8->unk_6F = 13; + sTradeMenuResourcesPtr->unk_6F = 13; } } } @@ -2337,10 +2369,10 @@ void sub_804D5A4(void) { Free(gUnknown_2031C90); FreeAllWindowBuffers(); - Free(gUnknown_2031DA8); + Free(sTradeMenuResourcesPtr); gMain.callback1 = NULL; DestroyWirelessStatusIndicatorSprite(); - SetMainCallback2(sub_8050138); + SetMainCallback2(CB2_InitTradeAnim_LinkTrade); } } else @@ -2349,21 +2381,21 @@ void sub_804D5A4(void) { Free(gUnknown_2031C90); FreeAllWindowBuffers(); - Free(gUnknown_2031DA8); + Free(sTradeMenuResourcesPtr); gMain.callback1 = NULL; - SetMainCallback2(sub_8050138); + SetMainCallback2(CB2_InitTradeAnim_LinkTrade); } } } void sub_804D638(void) { - sub_804E9E4(); + RunTradeMenuCallback(); sub_804F4DC(); sub_804EAE4(0); sub_804EAE4(1); - SetGpuReg(REG_OFFSET_BG2HOFS, gUnknown_2031DA8->unk_0++); - SetGpuReg(REG_OFFSET_BG3HOFS, gUnknown_2031DA8->unk_1--); + SetGpuReg(REG_OFFSET_BG2HOFS, sTradeMenuResourcesPtr->unk_0++); + SetGpuReg(REG_OFFSET_BG3HOFS, sTradeMenuResourcesPtr->unk_1--); RunTextPrinters_CheckPrinter0Active(); RunTasks(); AnimateSprites(); @@ -2408,26 +2440,26 @@ void sub_804D764(void) int i; for (i = 0; i < PARTY_SIZE; i++) { - if (i < gUnknown_2031DA8->partyCounts[0]) + if (i < sTradeMenuResourcesPtr->partyCounts[0]) { - gSprites[gUnknown_2031DA8->partyIcons[0][i]].invisible = FALSE; - gUnknown_2031DA8->tradeMenuOptionsActive[i] = TRUE; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][i]].invisible = FALSE; + sTradeMenuResourcesPtr->tradeMenuOptionsActive[i] = TRUE; } else { - gUnknown_2031DA8->tradeMenuOptionsActive[i] = FALSE; + sTradeMenuResourcesPtr->tradeMenuOptionsActive[i] = FALSE; } - if (i < gUnknown_2031DA8->partyCounts[1]) + if (i < sTradeMenuResourcesPtr->partyCounts[1]) { - gSprites[gUnknown_2031DA8->partyIcons[1][i]].invisible = FALSE; - gUnknown_2031DA8->tradeMenuOptionsActive[i + 6] = TRUE; + gSprites[sTradeMenuResourcesPtr->partyIcons[1][i]].invisible = FALSE; + sTradeMenuResourcesPtr->tradeMenuOptionsActive[i + 6] = TRUE; } else { - gUnknown_2031DA8->tradeMenuOptionsActive[i + 6] = FALSE; + sTradeMenuResourcesPtr->tradeMenuOptionsActive[i + 6] = FALSE; } } - gUnknown_2031DA8->tradeMenuOptionsActive[12] = TRUE; + sTradeMenuResourcesPtr->tradeMenuOptionsActive[12] = TRUE; } static void Trade_Memcpy(void *dest, const void *src, size_t size) @@ -2445,24 +2477,24 @@ bool8 shedinja_maker_maybe(void) int i; struct Pokemon *mon; - switch (gUnknown_2031DA8->unk_69) + switch (sTradeMenuResourcesPtr->unk_69) { case 0: Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[0], 2 * sizeof(struct Pokemon)); - gUnknown_2031DA8->unk_69++; - gUnknown_2031DA8->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_69++; + sTradeMenuResourcesPtr->unk_A8 = 0; break; case 1: if (IsLinkTaskFinished()) { if (GetBlockReceivedStatus() == 0) { - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; } else { ResetBlockReceivedFlags(); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; } } break; @@ -2471,90 +2503,90 @@ bool8 shedinja_maker_maybe(void) { sub_800A474(1); } - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 4: if (GetBlockReceivedStatus() == 3) { Trade_Memcpy(&gEnemyParty[0], gBlockRecvBuffer[id ^ 1], 2 * sizeof(struct Pokemon)); ResetBlockReceivedFlags(); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; } break; case 5: Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[2], 2 * sizeof(struct Pokemon)); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 7: if (id == 0) { sub_800A474(1); } - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 8: if (GetBlockReceivedStatus() == 3) { Trade_Memcpy(&gEnemyParty[2], gBlockRecvBuffer[id ^ 1], 200); ResetBlockReceivedFlags(); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; } break; case 9: Trade_Memcpy(gBlockSendBuffer, &gPlayerParty[4], 200); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 11: if (id == 0) { sub_800A474(1); } - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 12: if (GetBlockReceivedStatus() == 3) { Trade_Memcpy(&gEnemyParty[4], gBlockRecvBuffer[id ^ 1], 200); ResetBlockReceivedFlags(); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; } break; case 13: Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->mail, 220); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 15: if (id == 0) { sub_800A474(3); } - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 16: if (GetBlockReceivedStatus() == 3) { - Trade_Memcpy(gUnknown_2031CCC, gBlockRecvBuffer[id ^ 1], 216); + Trade_Memcpy(gLinkPartnerMail, gBlockRecvBuffer[id ^ 1], 216); ResetBlockReceivedFlags(); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; } break; case 17: Trade_Memcpy(gBlockSendBuffer, gSaveBlock1Ptr->giftRibbons, 11); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 19: if (id == 0) { sub_800A474(4); } - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; break; case 20: if (GetBlockReceivedStatus() == 3) { - Trade_Memcpy(gUnknown_2031DA8->unk_A9, gBlockRecvBuffer[id ^ 1], 11); + Trade_Memcpy(sTradeMenuResourcesPtr->unk_A9, gBlockRecvBuffer[id ^ 1], 11); ResetBlockReceivedFlags(); - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_69++; } break; case 21: @@ -2582,11 +2614,11 @@ bool8 shedinja_maker_maybe(void) case 10: case 14: case 18: - gUnknown_2031DA8->unk_A8++; - if (gUnknown_2031DA8->unk_A8 > 10) + sTradeMenuResourcesPtr->unk_A8++; + if (sTradeMenuResourcesPtr->unk_A8 > 10) { - gUnknown_2031DA8->unk_A8 = 0; - gUnknown_2031DA8->unk_69++; + sTradeMenuResourcesPtr->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_69++; } break; } @@ -2595,7 +2627,7 @@ bool8 shedinja_maker_maybe(void) void sub_804DBAC(void) { - sub_804F728(gUnknown_841E0A5, (u8 *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 0x18); + sub_804F728(gUnknown_841E0A5, (u8 *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 0x18); } void sub_804DBD4(u8 a0, u8 a1) @@ -2605,16 +2637,16 @@ void sub_804DBD4(u8 a0, u8 a1) switch (gBlockRecvBuffer[0][0]) { case 0xEEAA: - gUnknown_2031DA8->unk_78 = 2; + sTradeMenuResourcesPtr->unk_78 = 2; break; case 0xAABB: - gUnknown_2031DA8->unk_78 = 1; + sTradeMenuResourcesPtr->unk_78 = 1; break; case 0xBBBB: - gUnknown_2031DA8->unk_7A = 1; + sTradeMenuResourcesPtr->unk_7A = 1; break; case 0xBBCC: - gUnknown_2031DA8->unk_7A = 2; + sTradeMenuResourcesPtr->unk_7A = 2; break; } ResetBlockReceivedFlag(0); @@ -2625,17 +2657,17 @@ void sub_804DBD4(u8 a0, u8 a1) switch (gBlockRecvBuffer[1][0]) { case 0xEEAA: - gUnknown_2031DA8->unk_79 = 2; + sTradeMenuResourcesPtr->unk_79 = 2; break; case 0xAABB: - gUnknown_2031DA8->unk_7E = gBlockRecvBuffer[1][1] + 6; - gUnknown_2031DA8->unk_79 = 1; + sTradeMenuResourcesPtr->unk_7E = gBlockRecvBuffer[1][1] + 6; + sTradeMenuResourcesPtr->unk_79 = 1; break; case 0xBBBB: - gUnknown_2031DA8->unk_7B = 1; + sTradeMenuResourcesPtr->unk_7B = 1; break; case 0xBBCC: - gUnknown_2031DA8->unk_7B = 2; + sTradeMenuResourcesPtr->unk_7B = 2; break; } ResetBlockReceivedFlag(1); @@ -2650,27 +2682,27 @@ void sub_804DCF4(u8 a0, u8 a1) { case 0xEEBB: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - sub_804F5BC(4); - gUnknown_2031DA8->unk_6F = 11; + PrintTradeErrorOrStatusMessage(TRADESTATMSG_WAITINGFORFRIEND); + sTradeMenuResourcesPtr->unk_6F = 11; break; case 0xEECC: - sub_804F5BC(5); - gUnknown_2031DA8->unk_6F = 8; + PrintTradeErrorOrStatusMessage(TRADESTATMSG_FRIENDWANTSTOTRADE); + sTradeMenuResourcesPtr->unk_6F = 8; break; case 0xDDDD: - gUnknown_2031DA8->unk_7E = gBlockRecvBuffer[0][1] + 6; + sTradeMenuResourcesPtr->unk_7E = gBlockRecvBuffer[0][1] + 6; rbox_fill_rectangle(0); - sub_804EAAC(gUnknown_2031DA8->tradeMenuCursorPosition); - sub_804EAAC(gUnknown_2031DA8->unk_7E); - gUnknown_2031DA8->unk_6F = 7; + sub_804EAAC(sTradeMenuResourcesPtr->tradeMenuCursorPosition); + sub_804EAAC(sTradeMenuResourcesPtr->unk_7E); + sTradeMenuResourcesPtr->unk_6F = 7; break; case 0xCCDD: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gUnknown_2031DA8->unk_6F = 10; + sTradeMenuResourcesPtr->unk_6F = 10; break; case 0xDDEE: - sub_804F5BC(1); - gUnknown_2031DA8->unk_6F = 8; + PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED); + sTradeMenuResourcesPtr->unk_6F = 8; } ResetBlockReceivedFlag(0); } @@ -2681,68 +2713,68 @@ void sub_804DCF4(u8 a0, u8 a1) void sub_804DDF0(void) { - if (gUnknown_2031DA8->unk_78 && gUnknown_2031DA8->unk_79) + if (sTradeMenuResourcesPtr->unk_78 && sTradeMenuResourcesPtr->unk_79) { - if (gUnknown_2031DA8->unk_78 == 1 && gUnknown_2031DA8->unk_79 == 1) + if (sTradeMenuResourcesPtr->unk_78 == 1 && sTradeMenuResourcesPtr->unk_79 == 1) { - gUnknown_2031DA8->unk_6F = 6; - gUnknown_2031DA8->linkData[0] = 0xDDDD; - gUnknown_2031DA8->linkData[1] = gUnknown_2031DA8->tradeMenuCursorPosition; + sTradeMenuResourcesPtr->unk_6F = 6; + sTradeMenuResourcesPtr->linkData[0] = 0xDDDD; + sTradeMenuResourcesPtr->linkData[1] = sTradeMenuResourcesPtr->tradeMenuCursorPosition; sub_804F488(5, 0); - gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0; + sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0; } - else if (gUnknown_2031DA8->unk_78 == 1 && gUnknown_2031DA8->unk_79 == 2) + else if (sTradeMenuResourcesPtr->unk_78 == 1 && sTradeMenuResourcesPtr->unk_79 == 2) { - sub_804F5BC(1); - gUnknown_2031DA8->linkData[0] = 0xEECC; - gUnknown_2031DA8->linkData[1] = 0; + PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED); + sTradeMenuResourcesPtr->linkData[0] = 0xEECC; + sTradeMenuResourcesPtr->linkData[1] = 0; sub_804F488(5, 0); - gUnknown_2031DA8->unk_7A = gUnknown_2031DA8->unk_7B = 0; - gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0; - gUnknown_2031DA8->unk_6F = 8; + sTradeMenuResourcesPtr->unk_7A = sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0; + sTradeMenuResourcesPtr->unk_6F = 8; } - else if (gUnknown_2031DA8->unk_78 == 2 && gUnknown_2031DA8->unk_79 == 1) + else if (sTradeMenuResourcesPtr->unk_78 == 2 && sTradeMenuResourcesPtr->unk_79 == 1) { - sub_804F5BC(5); - gUnknown_2031DA8->linkData[0] = 0xDDEE; - gUnknown_2031DA8->linkData[1] = 0; + PrintTradeErrorOrStatusMessage(TRADESTATMSG_FRIENDWANTSTOTRADE); + sTradeMenuResourcesPtr->linkData[0] = 0xDDEE; + sTradeMenuResourcesPtr->linkData[1] = 0; sub_804F488(5, 0); - gUnknown_2031DA8->unk_7A = gUnknown_2031DA8->unk_7B = 0; - gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0; - gUnknown_2031DA8->unk_6F = 8; + sTradeMenuResourcesPtr->unk_7A = sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0; + sTradeMenuResourcesPtr->unk_6F = 8; } - else if (gUnknown_2031DA8->unk_78 == 2 && gUnknown_2031DA8->unk_79 == 2) + else if (sTradeMenuResourcesPtr->unk_78 == 2 && sTradeMenuResourcesPtr->unk_79 == 2) { - gUnknown_2031DA8->linkData[0] = 0xEEBB; - gUnknown_2031DA8->linkData[1] = 0; + sTradeMenuResourcesPtr->linkData[0] = 0xEEBB; + sTradeMenuResourcesPtr->linkData[1] = 0; sub_804F488(5, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gUnknown_2031DA8->unk_78 = gUnknown_2031DA8->unk_79 = 0; - gUnknown_2031DA8->unk_6F = 11; + sTradeMenuResourcesPtr->unk_78 = sTradeMenuResourcesPtr->unk_79 = 0; + sTradeMenuResourcesPtr->unk_6F = 11; } } - if (gUnknown_2031DA8->unk_7A && gUnknown_2031DA8->unk_7B) + if (sTradeMenuResourcesPtr->unk_7A && sTradeMenuResourcesPtr->unk_7B) { - if (gUnknown_2031DA8->unk_7A == 1 && gUnknown_2031DA8->unk_7B == 1) + if (sTradeMenuResourcesPtr->unk_7A == 1 && sTradeMenuResourcesPtr->unk_7B == 1) { - gUnknown_2031DA8->linkData[0] = 0xCCDD; - gUnknown_2031DA8->linkData[1] = 0; + sTradeMenuResourcesPtr->linkData[0] = 0xCCDD; + sTradeMenuResourcesPtr->linkData[1] = 0; sub_804F488(5, 0); - gUnknown_2031DA8->unk_7A = 0; - gUnknown_2031DA8->unk_7B = 0; - gUnknown_2031DA8->unk_6F = 9; + sTradeMenuResourcesPtr->unk_7A = 0; + sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_6F = 9; } - if (gUnknown_2031DA8->unk_7A == 2 || gUnknown_2031DA8->unk_7B == 2) + if (sTradeMenuResourcesPtr->unk_7A == 2 || sTradeMenuResourcesPtr->unk_7B == 2) { - sub_804F5BC(1); - gUnknown_2031DA8->linkData[0] = 0xDDEE; - gUnknown_2031DA8->linkData[1] = 0; + PrintTradeErrorOrStatusMessage(TRADESTATMSG_CANCELED); + sTradeMenuResourcesPtr->linkData[0] = 0xDDEE; + sTradeMenuResourcesPtr->linkData[1] = 0; sub_804F488(5, 0); - gUnknown_2031DA8->unk_7A = 0; - gUnknown_2031DA8->unk_7B = 0; - gUnknown_2031DA8->unk_6F = 8; + sTradeMenuResourcesPtr->unk_7A = 0; + sTradeMenuResourcesPtr->unk_7B = 0; + sTradeMenuResourcesPtr->unk_6F = 8; } } } @@ -2769,7 +2801,7 @@ u8 sub_804E028(u8 oldPosition, u8 direction) for (i = 0; i < PARTY_SIZE; i++) { - if (gUnknown_2031DA8->tradeMenuOptionsActive[gUnknown_8261D08[oldPosition][direction][i]] == TRUE) + if (sTradeMenuResourcesPtr->tradeMenuOptionsActive[gUnknown_8261D08[oldPosition][direction][i]] == TRUE) { newPosition = gUnknown_8261D08[oldPosition][direction][i]; break; @@ -2786,15 +2818,15 @@ void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) if (newPosition == 12) // CANCEL { - StartSpriteAnim(&gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx], 1); - gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.x = 224; - gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.y = 160; + StartSpriteAnim(&gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx], 1); + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.x = 224; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.y = 160; } else { - StartSpriteAnim(&gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx], 0); - gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32; - gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8; + StartSpriteAnim(&gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx], 0); + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.x = gTradeMonSpriteCoords[newPosition][0] * 8 + 32; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].pos1.y = gTradeMonSpriteCoords[newPosition][1] * 8; } if (*tradeMenuCursorPosition != newPosition) @@ -2807,18 +2839,18 @@ void TradeMenuMoveCursor(u8 *tradeMenuCursorPosition, u8 direction) void sub_804E134(void) { - sub_804F5BC(0); - gUnknown_2031DA8->unk_6F = 5; + PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY); + sTradeMenuResourcesPtr->unk_6F = 5; if (GetMultiplayerId() == 1) { - gUnknown_2031DA8->linkData[0] = 0xAABB; - gUnknown_2031DA8->linkData[1] = gUnknown_2031DA8->tradeMenuCursorPosition; - SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 0x14); + sTradeMenuResourcesPtr->linkData[0] = 0xAABB; + sTradeMenuResourcesPtr->linkData[1] = sTradeMenuResourcesPtr->tradeMenuCursorPosition; + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 0x14); } else { - gUnknown_2031DA8->unk_78 = 1; + sTradeMenuResourcesPtr->unk_78 = 1; } } @@ -2831,26 +2863,26 @@ void sub_804E194(void) if (JOY_REPT(DPAD_UP)) { - TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 0); + TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 0); } else if (JOY_REPT(DPAD_DOWN)) { - TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 1); + TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 1); } else if (JOY_REPT(DPAD_LEFT)) { - TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 2); + TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 2); } else if (JOY_REPT(DPAD_RIGHT)) { - TradeMenuMoveCursor(&gUnknown_2031DA8->tradeMenuCursorPosition, 3); + TradeMenuMoveCursor(&sTradeMenuResourcesPtr->tradeMenuCursorPosition, 3); } if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - if (gUnknown_2031DA8->tradeMenuCursorPosition < 6) // PlayerParty + if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) // PlayerParty { DrawTextBorderOuter(1, 1, 14); FillWindowPixelBuffer(1, PIXEL_FILL(1)); @@ -2858,34 +2890,34 @@ void sub_804E194(void) Menu_InitCursor(1, 3, 0, 0, 16, 2, 0); PutWindowTilemap(1); CopyWindowToVram(1, 3); - gUnknown_2031DA8->unk_6F = 1; + sTradeMenuResourcesPtr->unk_6F = 1; } - else if (gUnknown_2031DA8->tradeMenuCursorPosition < 12) + else if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 12) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gUnknown_2031DA8->unk_6F = 2; + sTradeMenuResourcesPtr->unk_6F = 2; } - else if (gUnknown_2031DA8->tradeMenuCursorPosition == 12) + else if (sTradeMenuResourcesPtr->tradeMenuCursorPosition == 12) { CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 0x001, 14, 0); - gUnknown_2031DA8->unk_6F = 4; - sub_804F728(gUnknown_8261ECC[4], (void *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 24); + sTradeMenuResourcesPtr->unk_6F = 4; + sub_804F728(gUnknown_8261ECC[4], (void *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 24); } } if (JOY_NEW(R_BUTTON)) { for (i = 0; i < 10; i++) - gUnknown_2031DA8->linkData[i] = i; - SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20); + sTradeMenuResourcesPtr->linkData[i] = i; + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20); } } void sub_804E330(void) { sub_804F3B4(); - gUnknown_2031DA8->unk_6F = 0; - gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = FALSE; - sub_804F728(gUnknown_8261ECC[1], (void *)OBJ_VRAM0 + gUnknown_2031DA8->unk_72 * 32, 24); + sTradeMenuResourcesPtr->unk_6F = 0; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = FALSE; + sub_804F728(gUnknown_8261ECC[1], (void *)OBJ_VRAM0 + sTradeMenuResourcesPtr->unk_72 * 32, 24); } void sub_804E388(void) @@ -2900,28 +2932,28 @@ void sub_804E388(void) break; case 0: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); - gUnknown_2031DA8->unk_6F = 2; + sTradeMenuResourcesPtr->unk_6F = 2; break; case 1: - switch (sub_804FA14(gPlayerParty, gPlayerPartyCount, gUnknown_2031DA8->tradeMenuCursorPosition)) + switch (sub_804FA14(gPlayerParty, gPlayerPartyCount, sTradeMenuResourcesPtr->tradeMenuCursorPosition)) { case 0: sub_804E134(); - gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = TRUE; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = TRUE; break; case 1: sub_804F488(3, 3); - gUnknown_2031DA8->unk_6F = 8; + sTradeMenuResourcesPtr->unk_6F = 8; break; case 2: case 4: sub_804F488(3, 6); - gUnknown_2031DA8->unk_6F = 8; + sTradeMenuResourcesPtr->unk_6F = 8; break; case 3: case 5: sub_804F488(3, 7); - gUnknown_2031DA8->unk_6F = 8; + sTradeMenuResourcesPtr->unk_6F = 8; break; } break; @@ -2941,10 +2973,10 @@ void sub_804E494(void) { if (!gPaletteFade.active) { - if (gUnknown_2031DA8->tradeMenuCursorPosition < 6) - ShowPokemonSummaryScreen(gPlayerParty, gUnknown_2031DA8->tradeMenuCursorPosition, gUnknown_2031DA8->partyCounts[0] - 1, sub_804CF14, 4); + if (sTradeMenuResourcesPtr->tradeMenuCursorPosition < 6) + ShowPokemonSummaryScreen(gPlayerParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition, sTradeMenuResourcesPtr->partyCounts[0] - 1, sub_804CF14, 4); else - ShowPokemonSummaryScreen(gEnemyParty, gUnknown_2031DA8->tradeMenuCursorPosition - 6, gUnknown_2031DA8->partyCounts[1] - 1, sub_804CF14, 4); + ShowPokemonSummaryScreen(gEnemyParty, sTradeMenuResourcesPtr->tradeMenuCursorPosition - 6, sTradeMenuResourcesPtr->partyCounts[1] - 1, sub_804CF14, 4); FreeAllWindowBuffers(); } } @@ -2959,8 +2991,8 @@ u8 sub_804E50C(u8 *a0, u8 a1, u8 a2) if (a2 != i) r4 += a0[i]; } - species = GetMonData(&gEnemyParty[gUnknown_2031DA8->unk_7E % 6], MON_DATA_SPECIES); - if ((species == SPECIES_DEOXYS || species == SPECIES_MEW) && !GetMonData(&gEnemyParty[gUnknown_2031DA8->unk_7E % 6], MON_DATA_OBEDIENCE)) + species = GetMonData(&gEnemyParty[sTradeMenuResourcesPtr->unk_7E % 6], MON_DATA_SPECIES); + if ((species == SPECIES_DEOXYS || species == SPECIES_MEW) && !GetMonData(&gEnemyParty[sTradeMenuResourcesPtr->unk_7E % 6], MON_DATA_OBEDIENCE)) return 2; if (r4 != 0) r4 = 1; @@ -2972,29 +3004,29 @@ void sub_804E5A0(void) int i; u8 arr[12]; - for (i = 0; i < gUnknown_2031DA8->partyCounts[0]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++) { - arr[i] = gUnknown_2031DA8->unk_45[0][i]; + arr[i] = sTradeMenuResourcesPtr->unk_45[0][i]; } - switch (sub_804E50C(arr, gUnknown_2031DA8->partyCounts[0], gUnknown_2031DA8->tradeMenuCursorPosition)) + switch (sub_804E50C(arr, sTradeMenuResourcesPtr->partyCounts[0], sTradeMenuResourcesPtr->tradeMenuCursorPosition)) { case 0: sub_804F488(3, 3); - gUnknown_2031DA8->linkData[0] = 0xBBCC; + sTradeMenuResourcesPtr->linkData[0] = 0xBBCC; sub_804F488(0xB4, 0); break; case 1: sub_804F488(3, 1); - gUnknown_2031DA8->linkData[0] = 0xBBBB; + sTradeMenuResourcesPtr->linkData[0] = 0xBBBB; if (IsLinkTaskFinished()) { - SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20); + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20); } break; case 2: sub_804F488(3, 8); - gUnknown_2031DA8->linkData[0] = 0xBBCC; + sTradeMenuResourcesPtr->linkData[0] = 0xBBCC; sub_804F488(0xB4, 0); break; } @@ -3006,7 +3038,7 @@ void sub_804E674(void) { case 0: sub_804E5A0(); - gUnknown_2031DA8->unk_6F = 100; + sTradeMenuResourcesPtr->unk_6F = 100; PutWindowTilemap(17); break; case 1: @@ -3014,10 +3046,10 @@ void sub_804E674(void) sub_804F488(3, 1); if (IsLinkTaskFinished()) { - gUnknown_2031DA8->linkData[0] = 0xBBCC; - SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20); + sTradeMenuResourcesPtr->linkData[0] = 0xBBCC; + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20); } - gUnknown_2031DA8->unk_6F = 100; + sTradeMenuResourcesPtr->unk_6F = 100; PutWindowTilemap(17); break; } @@ -3027,7 +3059,7 @@ void sub_804E6FC(void) { int i; - for (i = 0; i < gUnknown_2031DA8->partyCounts[1] - 4; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1] - 4; i++) { PutWindowTilemap(i + 12); CopyWindowToVram(i + 12, 1); @@ -3039,12 +3071,12 @@ void sub_804E744(void) switch (Menu_ProcessInputNoWrapClearOnChoose()) { case 0: - sub_804F5BC(4); - gUnknown_2031DA8->linkData[0] = 0xEEAA; - gUnknown_2031DA8->linkData[1] = 0; + PrintTradeErrorOrStatusMessage(TRADESTATMSG_WAITINGFORFRIEND); + sTradeMenuResourcesPtr->linkData[0] = 0xEEAA; + sTradeMenuResourcesPtr->linkData[1] = 0; sub_804F488(5, 0); - gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = TRUE; - gUnknown_2031DA8->unk_6F = 100; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = TRUE; + sTradeMenuResourcesPtr->unk_6F = 100; sub_804E6FC(); break; case 1: @@ -3060,30 +3092,30 @@ void sub_804E7C8(void) if (GetMultiplayerId() == 0) { rbox_fill_rectangle(0); - sub_804EAAC(gUnknown_2031DA8->tradeMenuCursorPosition); - sub_804EAAC(gUnknown_2031DA8->unk_7E); + sub_804EAAC(sTradeMenuResourcesPtr->tradeMenuCursorPosition); + sub_804EAAC(sTradeMenuResourcesPtr->unk_7E); } - gUnknown_2031DA8->unk_6F = 7; + sTradeMenuResourcesPtr->unk_6F = 7; } void sub_804E804(void) { - if (gUnknown_2031DA8->unk_74[0] == 5 && gUnknown_2031DA8->unk_74[1] == 5) + if (sTradeMenuResourcesPtr->unk_74[0] == 5 && sTradeMenuResourcesPtr->unk_74[1] == 5) { sub_804DBAC(); - gUnknown_2031DA8->unk_6F = 14; + sTradeMenuResourcesPtr->unk_6F = 14; } } void sub_804E830(void) { - gUnknown_2031DA8->unk_A8++; + sTradeMenuResourcesPtr->unk_A8++; - if (gUnknown_2031DA8->unk_A8 > 120) + if (sTradeMenuResourcesPtr->unk_A8 > 120) { CreateYesNoMenu(&gUnknown_8261FC4, 3, 0, 2, 1, 14, 0); - gUnknown_2031DA8->unk_A8 = 0; - gUnknown_2031DA8->unk_6F = 3; + sTradeMenuResourcesPtr->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_6F = 3; } } @@ -3105,8 +3137,8 @@ void sub_804E880(void) sub_804F3C8(0); sub_804F3C8(1); - gUnknown_2031DA8->unk_6F = 0; - gSprites[gUnknown_2031DA8->tradeMenuCursorSpriteIdx].invisible = FALSE; + sTradeMenuResourcesPtr->unk_6F = 0; + gSprites[sTradeMenuResourcesPtr->tradeMenuCursorSpriteIdx].invisible = FALSE; } } @@ -3123,7 +3155,7 @@ void sub_804E908(void) sub_800AA80(12); } - gUnknown_2031DA8->unk_6F = 12; + sTradeMenuResourcesPtr->unk_6F = 12; } } @@ -3134,7 +3166,7 @@ void sub_804E944(void) if (IsLinkTaskFinished()) { Free(gUnknown_2031C90); - Free(gUnknown_2031DA8); + Free(sTradeMenuResourcesPtr); FreeAllWindowBuffers(); DestroyWirelessStatusIndicatorSprite(); SetMainCallback2(c2_8056854); @@ -3145,7 +3177,7 @@ void sub_804E944(void) if (!gReceivedRemoteLinkPlayers) { Free(gUnknown_2031C90); - Free(gUnknown_2031DA8); + Free(sTradeMenuResourcesPtr); FreeAllWindowBuffers(); SetMainCallback2(c2_8056854); } @@ -3157,13 +3189,13 @@ void sub_804E9C0(void) if (!sub_80FA484(FALSE)) { sub_800AB9C(); - gUnknown_2031DA8->unk_6F = 13; + sTradeMenuResourcesPtr->unk_6F = 13; } } -void sub_804E9E4(void) +static void RunTradeMenuCallback(void) { - switch (gUnknown_2031DA8->unk_6F) + switch (sTradeMenuResourcesPtr->unk_6F) { case 0: sub_804E194(); @@ -3220,10 +3252,10 @@ void sub_804EAAC(u8 a0) { u8 whichParty = a0 / PARTY_SIZE; - if (gUnknown_2031DA8->unk_74[whichParty] == 0) + if (sTradeMenuResourcesPtr->unk_74[whichParty] == 0) { - gUnknown_2031DA8->unk_74[whichParty] = 1; - gUnknown_2031DA8->unk_76[whichParty] = a0; + sTradeMenuResourcesPtr->unk_74[whichParty] = 1; + sTradeMenuResourcesPtr->unk_76[whichParty] = a0; } } @@ -3235,20 +3267,20 @@ void sub_804EAE4(u8 a0) u8 i; u8 partyIdx; u8 whichParty; - u8 monIdx = gUnknown_2031DA8->unk_76[a0]; + u8 monIdx = sTradeMenuResourcesPtr->unk_76[a0]; whichParty = 1; - if (gUnknown_2031DA8->unk_76[a0] < PARTY_SIZE) + if (sTradeMenuResourcesPtr->unk_76[a0] < PARTY_SIZE) whichParty = 0; partyIdx = monIdx % PARTY_SIZE; nameStringWidth = 0; - switch (gUnknown_2031DA8->unk_74[a0]) + switch (sTradeMenuResourcesPtr->unk_74[a0]) { case 1: - for (i = 0; i < gUnknown_2031DA8->partyCounts[a0]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[a0]; i++) { - gSprites[gUnknown_2031DA8->partyIcons[0][i + (whichParty * PARTY_SIZE)]].invisible = TRUE; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][i + (whichParty * PARTY_SIZE)]].invisible = TRUE; } for (i = 0; i < 6; i++) @@ -3256,13 +3288,13 @@ void sub_804EAE4(u8 a0) ClearWindowTilemap(i + (a0 * 6 + 2)); } - gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].invisible = FALSE; - gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[0] = 20; - gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[2] = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + gTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14; - gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[4] = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12; - StoreSpriteCallbackInData6(&gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]], SpriteCB_MonIcon); - gUnknown_2031DA8->unk_74[a0]++; - sub_8075490(&gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]); + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].invisible = FALSE; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[0] = 20; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[2] = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + gTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].data[4] = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12; + StoreSpriteCallbackInData6(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]], SpriteCB_MonIcon); + sTradeMenuResourcesPtr->unk_74[a0]++; + sub_8075490(&gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]]); CopyToBgTilemapBufferRect_ChangePalette(1, gTradePartyBoxTilemap, a0 * 15, 0, 15, 17, 0); CopyBgTilemapBufferToVram(1); CopyBgTilemapBufferToVram(0); @@ -3271,16 +3303,16 @@ void sub_804EAE4(u8 a0) sub_804F3B4(); break; case 2: - if (gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].callback == SpriteCB_MonIcon) - gUnknown_2031DA8->unk_74[a0] = 3; + if (gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].callback == SpriteCB_MonIcon) + sTradeMenuResourcesPtr->unk_74[a0] = 3; break; case 3: CopyToBgTilemapBufferRect_ChangePalette(1, gTradeMovesBoxTilemap, whichParty * 15, 0, 15, 17, 0); CopyBgTilemapBufferToVram(1); - gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.x = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + gTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14; - gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.y = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12; - gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.x = 0; - gSprites[gUnknown_2031DA8->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.y = 0; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.x = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][0] + gTradeMonSpriteCoords[whichParty * PARTY_SIZE + 1][0]) / 2 * 8 + 14; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos1.y = (gTradeMonSpriteCoords[whichParty * PARTY_SIZE][1] * 8) - 12; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.x = 0; + gSprites[sTradeMenuResourcesPtr->partyIcons[0][partyIdx + (whichParty * PARTY_SIZE)]].pos2.y = 0; nameStringWidth = sub_804EE6C(nickname, whichParty, partyIdx); AddTextPrinterParameterized3((a0 * 2) + 14, 0, (80 - nameStringWidth) / 2, 4, gUnknown_8261F18, 0, nickname); sub_804EED4(movesString, whichParty, partyIdx); @@ -3289,11 +3321,11 @@ void sub_804EAE4(u8 a0) CopyWindowToVram((a0 * 2) + 14, 3); PutWindowTilemap((a0 * 2) + 15); CopyWindowToVram((a0 * 2) + 15, 3); - gUnknown_2031DA8->unk_74[a0]++; + sTradeMenuResourcesPtr->unk_74[a0]++; break; case 4: sub_804F08C(a0, partyIdx, gUnknown_8262055[a0][0] + 4, gUnknown_8262055[a0][1] + 1, gUnknown_8262055[a0][0], gUnknown_8262055[a0][1]); - gUnknown_2031DA8->unk_74[a0]++; + sTradeMenuResourcesPtr->unk_74[a0]++; break; } } @@ -3314,7 +3346,7 @@ void sub_804EED4(u8 *a0, u8 a1, u8 a2) u16 moves[MAX_MON_MOVES]; u16 i; - if (!gUnknown_2031DA8->unk_51[a1][a2]) + if (!sTradeMenuResourcesPtr->unk_51[a1][a2]) { for (i = 0; i < MAX_MON_MOVES; i++) { @@ -3365,7 +3397,7 @@ void sub_804F020(u8 whichParty) u8 nickname[30]; struct Pokemon * party = whichParty == 0 ? gPlayerParty : gEnemyParty; u8 i; - for (i = 0; i < gUnknown_2031DA8->partyCounts[whichParty]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++) { GetMonData(&party[i], MON_DATA_NICKNAME, buff); StringCopy10(nickname, buff); @@ -3388,20 +3420,20 @@ void sub_804F08C(u8 whichParty, u8 monIdx, u8 a2, u8 a3, u8 a4, u8 a5) else level = GetMonData(&gEnemyParty[monIdx], MON_DATA_LEVEL, NULL); - if (gUnknown_2031DA8->unk_51[whichParty][monIdx] == 0) + if (sTradeMenuResourcesPtr->unk_51[whichParty][monIdx] == 0) { if (level / 10 != 0) - gUnknown_2031DA8->tilemapBuffer[a2 + (a3 * 32)] = (level / 10) + 0x60; + sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32)] = (level / 10) + 0x60; - gUnknown_2031DA8->tilemapBuffer[a2 + (a3 * 32) + 1] = (level % 10) + 0x70; + sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) + 1] = (level % 10) + 0x70; } else { - gUnknown_2031DA8->tilemapBuffer[a2 + (a3 * 32) - 32] = gUnknown_2031DA8->tilemapBuffer[a2 + (a3 * 32) - 33]; - gUnknown_2031DA8->tilemapBuffer[a2 + (a3 * 32) - 31] = gUnknown_2031DA8->tilemapBuffer[a2 + (a3 * 32) - 36] | 0x400; + sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 32] = sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 33]; + sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 31] = sTradeMenuResourcesPtr->tilemapBuffer[a2 + (a3 * 32) - 36] | 0x400; } - if (gUnknown_2031DA8->unk_51[whichParty][monIdx] != 0) + if (sTradeMenuResourcesPtr->unk_51[whichParty][monIdx] != 0) { r2 = 0x480; } @@ -3431,7 +3463,7 @@ void sub_804F08C(u8 whichParty, u8 monIdx, u8 a2, u8 a3, u8 a4, u8 a5) break; } } - gUnknown_2031DA8->tilemapBuffer[(a3 - 1) * 32 + a2 + 1] = r2; + sTradeMenuResourcesPtr->tilemapBuffer[(a3 - 1) * 32 + a2 + 1] = r2; } #ifdef NONMATCHING @@ -3441,7 +3473,7 @@ void sub_804F284(u8 whichParty) s32 i; const u8 *r5; const u8 *r4; - for (i = 0; i < gUnknown_2031DA8->partyCounts[whichParty]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++) { r5 = gUnknown_8261E5A[whichParty]; r4 = gUnknown_8261E72[whichParty]; @@ -3457,7 +3489,7 @@ void sub_804F284(u8 whichParty) "\tlsls r0, 24\n" "\tlsrs r6, r0, 24\n" "\tmovs r7, 0\n" - "\tldr r0, _0804F2DC @ =gUnknown_2031DA8\n" + "\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r0]\n" "\tadds r0, 0x36\n" "\tadds r0, r6\n" @@ -3485,7 +3517,7 @@ void sub_804F284(u8 whichParty) "\tadds r5, 0x2\n" "\tadds r4, 0x2\n" "\tadds r7, 0x1\n" - "\tldr r0, _0804F2DC @ =gUnknown_2031DA8\n" + "\tldr r0, _0804F2DC @ =sTradeMenuResourcesPtr\n" "\tldr r0, [r0]\n" "\tadds r0, 0x36\n" "\tadds r0, r6\n" @@ -3498,7 +3530,7 @@ void sub_804F284(u8 whichParty) "\tpop {r0}\n" "\tbx r0\n" "\t.align 2, 0\n" - "_0804F2DC: .4byte gUnknown_2031DA8\n" + "_0804F2DC: .4byte sTradeMenuResourcesPtr\n" "_0804F2E0: .4byte gUnknown_8261E5A\n" "_0804F2E4: .4byte gUnknown_8261E72"); } @@ -3508,13 +3540,13 @@ void sub_804F2E8(u8 whichParty) { int i; - for (i = 0; i < gUnknown_2031DA8->partyCounts[whichParty]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[whichParty]; i++) { - gSprites[gUnknown_2031DA8->partyIcons[whichParty][i]].invisible = FALSE; - gSprites[gUnknown_2031DA8->partyIcons[whichParty][i]].pos1.x = gTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][0] * 8 + 14; - gSprites[gUnknown_2031DA8->partyIcons[whichParty][i]].pos1.y = gTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][1] * 8 - 12; - gSprites[gUnknown_2031DA8->partyIcons[whichParty][i]].pos2.x = 0; - gSprites[gUnknown_2031DA8->partyIcons[whichParty][i]].pos2.y = 0; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].invisible = FALSE; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos1.x = gTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][0] * 8 + 14; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos1.y = gTradeMonSpriteCoords[(whichParty * PARTY_SIZE) + i][1] * 8 - 12; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos2.x = 0; + gSprites[sTradeMenuResourcesPtr->partyIcons[whichParty][i]].pos2.y = 0; } } @@ -3531,8 +3563,8 @@ void sub_804F3C8(u8 whichParty) sub_804F284(whichParty); sub_804F020(whichParty); sub_804F2E8(whichParty); - sub_804F728(gUnknown_8261ECC[1], (void *)OBJ_VRAM0 + 32 * gUnknown_2031DA8->unk_72, 24); - gUnknown_2031DA8->unk_74[whichParty] = 0; + sub_804F728(gUnknown_8261ECC[1], (void *)OBJ_VRAM0 + 32 * sTradeMenuResourcesPtr->unk_72, 24); + sTradeMenuResourcesPtr->unk_74[whichParty] = 0; } void sub_804F440(void) @@ -3552,66 +3584,66 @@ void sub_804F488(u16 a0, u8 a1) int i; for (i = 0; i < 4; i++) { - if (!gUnknown_2031DA8->unk_8D0[i].unk_0) + if (!sTradeMenuResourcesPtr->unk_8D0[i].unk_0) { - gUnknown_2031DA8->unk_8D0[i].unk_2 = a0; - gUnknown_2031DA8->unk_8D0[i].unk_4 = a1; - gUnknown_2031DA8->unk_8D0[i].unk_0 = TRUE; + sTradeMenuResourcesPtr->unk_8D0[i].unk_2 = a0; + sTradeMenuResourcesPtr->unk_8D0[i].unk_4 = a1; + sTradeMenuResourcesPtr->unk_8D0[i].unk_0 = TRUE; break; } } } -void sub_804F4DC(void) +static void sub_804F4DC(void) { int i; for (i = 0; i < 4; i++) { - if (gUnknown_2031DA8->unk_8D0[i].unk_0) + if (sTradeMenuResourcesPtr->unk_8D0[i].unk_0) { - if (gUnknown_2031DA8->unk_8D0[i].unk_2) + if (sTradeMenuResourcesPtr->unk_8D0[i].unk_2) { - gUnknown_2031DA8->unk_8D0[i].unk_2--; + sTradeMenuResourcesPtr->unk_8D0[i].unk_2--; } else { - switch (gUnknown_2031DA8->unk_8D0[i].unk_4) + switch (sTradeMenuResourcesPtr->unk_8D0[i].unk_4) { case 0: - SendBlock(bitmask_all_link_players_but_self(), gUnknown_2031DA8->linkData, 20); + SendBlock(bitmask_all_link_players_but_self(), sTradeMenuResourcesPtr->linkData, 20); break; case 1: - sub_804F5BC(0); + PrintTradeErrorOrStatusMessage(TRADESTATMSG_COMMSTANDBY); break; case 2: - sub_804F5BC(2); + PrintTradeErrorOrStatusMessage(TRADESTATMSG_ONLYMON); break; case 3: case 4: case 5: - sub_804F5BC(3); + PrintTradeErrorOrStatusMessage(TRADESTATMSG_ONLYMON2); break; case 6: - sub_804F5BC(6); + PrintTradeErrorOrStatusMessage(TRADESTATMSG_YOURMONCANTBETRADED); break; case 7: - sub_804F5BC(7); + PrintTradeErrorOrStatusMessage(TRADESTATMSG_EGGCANTBETRADED); break; case 8: - sub_804F5BC(8); + PrintTradeErrorOrStatusMessage(TRADESTATMSG_PARTNERMONCANTBETRADED); break; } - gUnknown_2031DA8->unk_8D0[i].unk_0 = FALSE; + sTradeMenuResourcesPtr->unk_8D0[i].unk_0 = FALSE; } } } } -void sub_804F5BC(u8 idx) +void PrintTradeErrorOrStatusMessage(u8 idx) { FillWindowPixelBuffer(0, PIXEL_FILL(1)); - AddTextPrinterParameterized(0, 3, gUnknown_8261EF4[idx], 0, 2, 0xFF, NULL); + AddTextPrinterParameterized(0, 3, sTradeErrorOrStatusMessagePtrs[idx], 0, 2, 0xFF, NULL); DrawTextBorderOuter(0, 0x014, 12); PutWindowTilemap(0); CopyWindowToVram(0, 3); @@ -3621,41 +3653,41 @@ bool8 sub_804F610(void) { struct SpriteSheet sheet; - if (gUnknown_2031DA8->unk_A8 < 14) + if (sTradeMenuResourcesPtr->unk_A8 < 14) { - sheet.data = gUnknown_2031C94[gUnknown_2031DA8->unk_A8]; + sheet.data = gUnknown_2031C94[sTradeMenuResourcesPtr->unk_A8]; sheet.size = 0x100; - sheet.tag = 200 + gUnknown_2031DA8->unk_A8; + sheet.tag = 200 + sTradeMenuResourcesPtr->unk_A8; } - switch (gUnknown_2031DA8->unk_A8) + switch (sTradeMenuResourcesPtr->unk_A8) { case 0 ... 7: LoadSpriteSheet(&sheet); - gUnknown_2031DA8->unk_A8++; + sTradeMenuResourcesPtr->unk_A8++; break; case 8: - gUnknown_2031DA8->unk_72 = LoadSpriteSheet(&sheet); - gUnknown_2031DA8->unk_A8++; + sTradeMenuResourcesPtr->unk_72 = LoadSpriteSheet(&sheet); + sTradeMenuResourcesPtr->unk_A8++; break; case 9 ... 13: LoadSpriteSheet(&sheet); - gUnknown_2031DA8->unk_A8++; + sTradeMenuResourcesPtr->unk_A8++; break; case 14: LoadSpritePalette(&gUnknown_8261D00); - gUnknown_2031DA8->unk_A8++; + sTradeMenuResourcesPtr->unk_A8++; break; case 15: LoadSpritePalette(&gUnknown_8261C60); - gUnknown_2031DA8->unk_A8++; + sTradeMenuResourcesPtr->unk_A8++; break; case 16: LoadSpriteSheet(&gUnknown_8261C58); - gUnknown_2031DA8->unk_A8++; + sTradeMenuResourcesPtr->unk_A8++; break; case 17: - gUnknown_2031DA8->unk_A8 = 0; + sTradeMenuResourcesPtr->unk_A8 = 0; return TRUE; } @@ -3674,42 +3706,42 @@ void sub_804F748(u8 who) switch (who) { case 0: - for (i = 0; i < gUnknown_2031DA8->partyCounts[who]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[who]; i++) { if (GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG) == TRUE) { - gUnknown_2031DA8->unk_45[who][i] = 0; - gUnknown_2031DA8->unk_51[who][i] = 1; + sTradeMenuResourcesPtr->unk_45[who][i] = 0; + sTradeMenuResourcesPtr->unk_51[who][i] = 1; } else if (GetMonData(&gPlayerParty[i], MON_DATA_HP) == 0) { - gUnknown_2031DA8->unk_45[who][i] = 0; - gUnknown_2031DA8->unk_51[who][i] = 0; + sTradeMenuResourcesPtr->unk_45[who][i] = 0; + sTradeMenuResourcesPtr->unk_51[who][i] = 0; } else { - gUnknown_2031DA8->unk_45[who][i] = 1; - gUnknown_2031DA8->unk_51[who][i] = 0; + sTradeMenuResourcesPtr->unk_45[who][i] = 1; + sTradeMenuResourcesPtr->unk_51[who][i] = 0; } } break; case 1: - for (i = 0; i < gUnknown_2031DA8->partyCounts[who]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[who]; i++) { if (GetMonData(&gEnemyParty[i], MON_DATA_IS_EGG) == TRUE) { - gUnknown_2031DA8->unk_45[who][i] = 0; - gUnknown_2031DA8->unk_51[who][i] = 1; + sTradeMenuResourcesPtr->unk_45[who][i] = 0; + sTradeMenuResourcesPtr->unk_51[who][i] = 1; } else if (GetMonData(&gEnemyParty[i], MON_DATA_HP) == 0) { - gUnknown_2031DA8->unk_45[who][i] = 0; - gUnknown_2031DA8->unk_51[who][i] = 0; + sTradeMenuResourcesPtr->unk_45[who][i] = 0; + sTradeMenuResourcesPtr->unk_51[who][i] = 0; } else { - gUnknown_2031DA8->unk_45[who][i] = 1; - gUnknown_2031DA8->unk_51[who][i] = 0; + sTradeMenuResourcesPtr->unk_45[who][i] = 1; + sTradeMenuResourcesPtr->unk_51[who][i] = 0; } } break; @@ -3723,19 +3755,19 @@ void sub_804F890(u8 who) switch (who) { case 0: - for (i = 0; i < gUnknown_2031DA8->partyCounts[0]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[0]; i++) { curHp = GetMonData(&gPlayerParty[i], MON_DATA_HP); maxHp = GetMonData(&gPlayerParty[i], MON_DATA_MAX_HP); - gUnknown_2031DA8->unk_5D[0][i] = GetHPBarLevel(curHp, maxHp); + sTradeMenuResourcesPtr->unk_5D[0][i] = GetHPBarLevel(curHp, maxHp); } break; case 1: - for (i = 0; i < gUnknown_2031DA8->partyCounts[1]; i++) + for (i = 0; i < sTradeMenuResourcesPtr->partyCounts[1]; i++) { curHp = GetMonData(&gEnemyParty[i], MON_DATA_HP); maxHp = GetMonData(&gEnemyParty[i], MON_DATA_MAX_HP); - gUnknown_2031DA8->unk_5D[1][i] = GetHPBarLevel(curHp, maxHp); + sTradeMenuResourcesPtr->unk_5D[1][i] = GetHPBarLevel(curHp, maxHp); } break; } @@ -3746,9 +3778,9 @@ void sub_804F964(void) int i, j; for (i = 0; i < 2; i++) { - for (j = 0; j < gUnknown_2031DA8->partyCounts[i]; j++) + for (j = 0; j < sTradeMenuResourcesPtr->partyCounts[i]; j++) { - MonIcon_SetAnim(&gSprites[gUnknown_2031DA8->partyIcons[i][j]], 4 - gUnknown_2031DA8->unk_5D[i][j]); + MonIcon_SetAnim(&gSprites[sTradeMenuResourcesPtr->partyIcons[i][j]], 4 - sTradeMenuResourcesPtr->unk_5D[i][j]); } } } @@ -3758,8 +3790,8 @@ void sub_804F9D8(void) int i; for (i = 0; i < 11; i++) { - if (gSaveBlock1Ptr->giftRibbons[i] == 0 && gUnknown_2031DA8->unk_A9[i] != 0) - gSaveBlock1Ptr->giftRibbons[i] = gUnknown_2031DA8->unk_A9[i]; + if (gSaveBlock1Ptr->giftRibbons[i] == 0 && sTradeMenuResourcesPtr->unk_A9[i] != 0) + gSaveBlock1Ptr->giftRibbons[i] = sTradeMenuResourcesPtr->unk_A9[i]; } } @@ -3979,16 +4011,16 @@ int sub_804FBEC(struct UnkLinkRfuStruct_02022B14Substruct a0, struct UnkLinkRfuS return 0; } -int sub_804FCE0(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3) +int Trade_CanTradeSelectedMon(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a2, u8 a3) { - u8 unk = a0.unk_01_0; + u8 canTradeEggAndNational = a0.unk_01_0; if (IsDeoxysOrMewUntradable(a2, a3)) { return 1; } - if (unk) + if (canTradeEggAndNational) { return 0; } @@ -4007,7 +4039,7 @@ int sub_804FCE0(struct UnkLinkRfuStruct_02022B14Substruct a0, u16 species, u16 a } // Sprite callback for link cable trade glow -void sub_804FD24(struct Sprite * sprite) +void SpriteCB_TradeGlowCable(struct Sprite * sprite) { sprite->data[0]++; if (sprite->data[0] == 10) @@ -4018,7 +4050,7 @@ void sub_804FD24(struct Sprite * sprite) } // Sprite callback for wireless trade glow -void sub_804FD48(struct Sprite * sprite) +void SpriteCB_TradeGlowWireless(struct Sprite * sprite) { if (!sprite->invisible) { @@ -4032,7 +4064,7 @@ void sub_804FD48(struct Sprite * sprite) } // Palette flash for trade glow core -void sub_804FD78(struct Sprite * sprite) +void SpriteCB_TradeGlowCore(struct Sprite * sprite) { if (sprite->data[1] == 0) { @@ -4043,7 +4075,7 @@ void sub_804FD78(struct Sprite * sprite) } } -void sub_804FDB8(struct Sprite * sprite) +void SpriteCB_GameLinkCableEnd_Outbound(struct Sprite * sprite) { sprite->data[0]++; sprite->pos2.y++; @@ -4051,7 +4083,7 @@ void sub_804FDB8(struct Sprite * sprite) DestroySprite(sprite); } -void sub_804FDDC(struct Sprite * sprite) +void SpriteCB_GameLinkCableEnd_Inbound(struct Sprite * sprite) { sprite->data[0]++; sprite->pos2.y--; @@ -4069,10 +4101,10 @@ void sub_804FE00(struct Sprite * sprite) } } -void sub_804FE24(void) +void TradeAnim_UpdateBgAffine(void) { struct BgAffineDstData affine; - DoBgAffineSet(&affine, gUnknown_2031DAC->unk_D4 * 0x100, gUnknown_2031DAC->unk_D6 * 0x100, gUnknown_2031DAC->unk_DC, gUnknown_2031DAC->unk_DE, gUnknown_2031DAC->unk_E8, gUnknown_2031DAC->unk_E8, gUnknown_2031DAC->unk_EC); + DoBgAffineSet(&affine, sTradeAnimationResourcesPtr->unk_D4 * 0x100, sTradeAnimationResourcesPtr->unk_D6 * 0x100, sTradeAnimationResourcesPtr->unk_DC, sTradeAnimationResourcesPtr->unk_DE, sTradeAnimationResourcesPtr->unk_E8, sTradeAnimationResourcesPtr->unk_E8, sTradeAnimationResourcesPtr->unk_EC); SetGpuReg(REG_OFFSET_BG2PA, affine.pa); SetGpuReg(REG_OFFSET_BG2PB, affine.pb); SetGpuReg(REG_OFFSET_BG2PC, affine.pc); @@ -4081,28 +4113,28 @@ void sub_804FE24(void) SetGpuReg(REG_OFFSET_BG2Y, affine.dy); } -void sub_804FEB4(void) +static void TradeAnim_UpdateBgRegs(void) { u16 dispcnt; - SetGpuReg(REG_OFFSET_BG1VOFS, gUnknown_2031DAC->bg1vofs); - SetGpuReg(REG_OFFSET_BG1HOFS, gUnknown_2031DAC->bg1hofs); + SetGpuReg(REG_OFFSET_BG1VOFS, sTradeAnimationResourcesPtr->bg1vofs); + SetGpuReg(REG_OFFSET_BG1HOFS, sTradeAnimationResourcesPtr->bg1hofs); dispcnt = GetGpuReg(REG_OFFSET_DISPCNT); if ((dispcnt & 7) == DISPCNT_MODE_0) { - SetGpuReg(REG_OFFSET_BG2VOFS, gUnknown_2031DAC->bg2vofs); - SetGpuReg(REG_OFFSET_BG2HOFS, gUnknown_2031DAC->bg2hofs); + SetGpuReg(REG_OFFSET_BG2VOFS, sTradeAnimationResourcesPtr->bg2vofs); + SetGpuReg(REG_OFFSET_BG2HOFS, sTradeAnimationResourcesPtr->bg2hofs); } else { - sub_804FE24(); + TradeAnim_UpdateBgAffine(); } } -void sub_804FF0C(void) +static void VBlankCB_TradeAnim(void) { - sub_804FEB4(); + TradeAnim_UpdateBgRegs(); LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -4110,28 +4142,28 @@ void sub_804FF0C(void) void sub_804FF24(void) { - gUnknown_2031DAC->unk_8A = 0; - gUnknown_2031DAC->unk_88 = 0; - gUnknown_2031DAC->unk_89 = 0; + sTradeAnimationResourcesPtr->unk_8A = 0; + sTradeAnimationResourcesPtr->unk_88 = 0; + sTradeAnimationResourcesPtr->unk_89 = 0; } void sub_804FF4C(void) { - if (gUnknown_2031DAC->unk_88 == gUnknown_2031DAC->unk_89) - gUnknown_2031DAC->unk_8A++; + if (sTradeAnimationResourcesPtr->unk_88 == sTradeAnimationResourcesPtr->unk_89) + sTradeAnimationResourcesPtr->unk_8A++; else - gUnknown_2031DAC->unk_8A = 0; + sTradeAnimationResourcesPtr->unk_8A = 0; - if (gUnknown_2031DAC->unk_8A > 300) + if (sTradeAnimationResourcesPtr->unk_8A > 300) { CloseLink(); SetMainCallback2(CB2_LinkError); - gUnknown_2031DAC->unk_8A = 0; - gUnknown_2031DAC->unk_89 = 0; - gUnknown_2031DAC->unk_88 = 0; + sTradeAnimationResourcesPtr->unk_8A = 0; + sTradeAnimationResourcesPtr->unk_89 = 0; + sTradeAnimationResourcesPtr->unk_88 = 0; } - gUnknown_2031DAC->unk_89 = gUnknown_2031DAC->unk_88; + sTradeAnimationResourcesPtr->unk_89 = sTradeAnimationResourcesPtr->unk_88; } u32 sub_804FFC4(void) @@ -4172,14 +4204,411 @@ void sub_804FFE4(u8 whichParty, u8 a1) HandleLoadSpecialPokePic_DontHandleDeoxys(&gMonFrontPicTable[species], gMonSpritesGfxPtr->sprites[whichParty * 2 + 1], species, personality); LoadCompressedSpritePalette(GetMonSpritePalStruct(mon)); - gUnknown_2031DAC->tradeSpecies[whichParty] = species; - gUnknown_2031DAC->unk_68[whichParty] = personality; + sTradeAnimationResourcesPtr->tradeSpecies[whichParty] = species; + sTradeAnimationResourcesPtr->unk_68[whichParty] = personality; break; case 1: SetMultiuseSpriteTemplateToPokemon(GetMonSpritePalStruct(mon)->tag, pos); - gUnknown_2031DAC->pokePicSpriteIdxs[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6); - gSprites[gUnknown_2031DAC->pokePicSpriteIdxs[whichParty]].invisible = TRUE; - gSprites[gUnknown_2031DAC->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy; + sTradeAnimationResourcesPtr->pokePicSpriteIdxs[whichParty] = CreateSprite(&gMultiuseSpriteTemplate, 120, 60, 6); + gSprites[sTradeAnimationResourcesPtr->pokePicSpriteIdxs[whichParty]].invisible = TRUE; + gSprites[sTradeAnimationResourcesPtr->pokePicSpriteIdxs[whichParty]].callback = SpriteCallbackDummy; + break; + } +} + +void CB2_InitTradeAnim_LinkTrade(void) +{ + switch (gMain.state) + { + case 0: + if (!gReceivedRemoteLinkPlayers) + { + gLinkType = 0x1144; + CloseLink(); + } + sTradeAnimationResourcesPtr = AllocZeroed(sizeof(struct TradeAnimationResources)); + AllocateMonSpritesGfx(); + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(VBlankCB_TradeAnim); + TradeAnimInit_LoadGfx(); + sub_804FF24(); + gMain.state++; + sTradeAnimationResourcesPtr->unk_8C = 0; + sTradeAnimationResourcesPtr->state = 0; + sTradeAnimationResourcesPtr->isLinkTrade = TRUE; + sTradeAnimationResourcesPtr->unk_D4 = 64; + sTradeAnimationResourcesPtr->unk_D6 = 64; + sTradeAnimationResourcesPtr->unk_D8 = 0; + sTradeAnimationResourcesPtr->unk_DA = 0; + sTradeAnimationResourcesPtr->unk_DC = 120; + sTradeAnimationResourcesPtr->unk_DE = 80; + sTradeAnimationResourcesPtr->unk_E8 = 256; + sTradeAnimationResourcesPtr->unk_EC = 0; + break; + case 1: + if (!gReceivedRemoteLinkPlayers) + { + sTradeAnimationResourcesPtr->unk_108 = TRUE; + OpenLink(); + gMain.state++; + sTradeAnimationResourcesPtr->timer = 0; + } + else + { + gMain.state = 4; + } + break; + case 2: + sTradeAnimationResourcesPtr->timer++; + if (sTradeAnimationResourcesPtr->timer > 60) + { + sTradeAnimationResourcesPtr->timer = 0; + gMain.state++; + } + break; + case 3: + if (IsLinkMaster()) + { + if (GetLinkPlayerCount_2() >= GetSavedPlayerCount()) + { + sTradeAnimationResourcesPtr->timer++; + if (sTradeAnimationResourcesPtr->timer > 30) + { + CheckShouldAdvanceLinkState(); + gMain.state++; + } + } + else + { + sub_804FF4C(); + } + } + else + { + gMain.state++; + } + break; + case 4: + sub_804FF4C(); + if (gReceivedRemoteLinkPlayers == 1 && IsLinkPlayerDataExchangeComplete() == 1) + { + gMain.state++; + } break; + case 5: + sTradeAnimationResourcesPtr->unk_72 = 0; + sTradeAnimationResourcesPtr->unk_73 = 0; + sTradeAnimationResourcesPtr->unk_93 = 0; + sub_804FFE4(0, 0); + gMain.state++; + break; + case 6: + sub_804FFE4(0, 1); + gMain.state++; + break; + case 7: + sub_804FFE4(1, 0); + gMain.state++; + break; + case 8: + sub_804FFE4(1, 1); + sub_80504B0(); + gMain.state++; + break; + case 9: + sub_8050DE0(); + LoadSpriteSheet(&gUnknown_826CDD4); + LoadSpritePalette(&gUnknown_826CDDC); + gMain.state++; + break; + case 10: + BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); + ShowBg(0); + sTradeAnimationResourcesPtr->unk_F8 = GetMonData(&gPlayerParty[gUnknown_2031DA4[0]], MON_DATA_SPECIES2); + sTradeAnimationResourcesPtr->unk_FA = GetMonData(&gEnemyParty[gUnknown_2031DA4[1] % 6], MON_DATA_SPECIES2); + memcpy(sTradeAnimationResourcesPtr->unk_FC, gLinkPlayers[GetMultiplayerId() ^ 1].name, 7); + gMain.state++; + break; + case 11: + sub_805049C(); + sub_8050E24(); + gMain.state++; + break; + case 12: + if (!gPaletteFade.active) + { + if (gWirelessCommType != 0) + { + LoadWirelessStatusIndicatorSpriteGfx(); + CreateWirelessStatusIndicatorSprite(0, 0); + } + SetMainCallback2(CB2_RunTradeAnim_LinkTrade); + } + break; + } + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +void sub_805049C(void) +{ + sub_8050968(5); + sub_8050968(0); +} + +void sub_80504B0(void) +{ + FillWindowPixelBuffer(0, PIXEL_FILL(15)); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); +} + +void TradeAnimInit_LoadGfx(void) +{ + SetGpuReg(REG_OFFSET_DISPCNT, 0); + ResetBgsAndClearDma3BusyFlags(FALSE); + InitBgsFromTemplates(0, gUnknown_826D1D4, NELEMS(gUnknown_826D1D4)); + ChangeBgX(0, 0, 0); + ChangeBgY(0, 0, 0); + SetBgTilemapBuffer(0, Alloc(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(1, Alloc(BG_SCREEN_SIZE)); + SetBgTilemapBuffer(3, Alloc(BG_SCREEN_SIZE)); + DeactivateAllTextPrinters(); + // Doing the graphics load... + DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); + LZDecompressWram(gFile_graphics_interface_menu_map_tilemap, gDecompressionBuffer); + CopyToBgTilemapBuffer(0, gDecompressionBuffer, BG_SCREEN_SIZE, 0); + LoadCompressedPalette(gBattleTextboxPalette, 0x000, 0x20); + InitWindows(gUnknown_826D1BC); + // ... and doing the same load again + DecompressAndLoadBgGfxUsingHeap(0, gBattleTextboxTiles, 0, 0, 0); + LZDecompressWram(gFile_graphics_interface_menu_map_tilemap, gDecompressionBuffer); + CopyToBgTilemapBuffer(0, gDecompressionBuffer, BG_SCREEN_SIZE, 0); + LoadCompressedPalette(gBattleTextboxPalette, 0x000, 0x20); +} + +void CB2_InitTradeAnim_InGameTrade(void) +{ + u8 otName[11]; + + switch (gMain.state) + { + case 0: + gUnknown_2031DA4[0] = gSpecialVar_0x8005; + gUnknown_2031DA4[1] = 6; + StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName); + GetMonData(&gEnemyParty[0], MON_DATA_OT_NAME, otName); + StringCopy(gLinkPlayers[1].name, otName); + sTradeAnimationResourcesPtr = AllocZeroed(sizeof(*sTradeAnimationResourcesPtr)); + AllocateMonSpritesGfx(); + ResetTasks(); + ResetSpriteData(); + FreeAllSpritePalettes(); + SetVBlankCallback(VBlankCB_TradeAnim); + TradeAnimInit_LoadGfx(); + sTradeAnimationResourcesPtr->isLinkTrade = FALSE; + sTradeAnimationResourcesPtr->unk_8C = 0; + sTradeAnimationResourcesPtr->state = 0; + sTradeAnimationResourcesPtr->unk_D4 = 64; + sTradeAnimationResourcesPtr->unk_D6 = 64; + sTradeAnimationResourcesPtr->unk_D8 = 0; + sTradeAnimationResourcesPtr->unk_DA = 0; + sTradeAnimationResourcesPtr->unk_DC = 120; + sTradeAnimationResourcesPtr->unk_DE = 80; + sTradeAnimationResourcesPtr->unk_E8 = 256; + sTradeAnimationResourcesPtr->unk_EC = 0; + sTradeAnimationResourcesPtr->timer = 0; + gMain.state = 5; + break; + case 5: + sub_804FFE4(0, 0); + gMain.state++; + break; + case 6: + sub_804FFE4(0, 1); + gMain.state++; + break; + case 7: + sub_804FFE4(1, 0); + ShowBg(0); + gMain.state++; + break; + case 8: + sub_804FFE4(1, 1); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); + PutWindowTilemap(0); + CopyWindowToVram(0, 3); + gMain.state++; + break; + case 9: + sub_8050DE0(); + LoadSpriteSheet(&gUnknown_826CDD4); + LoadSpritePalette(&gUnknown_826CDDC); + gMain.state++; + break; + case 10: + ShowBg(0); + gMain.state++; + break; + case 11: + sub_8050968(5); + sub_8050968(0); + sub_8050E24(); + gMain.state++; + break; + case 12: + SetMainCallback2(CB2_RunTradeAnim_InGameTrade); + break; + } + + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} + +static void ReceivedMonSetPokedexFlags(u8 partyIdx) +{ + struct Pokemon *mon = &gPlayerParty[partyIdx]; + + if (!GetMonData(mon, MON_DATA_IS_EGG)) + { + u16 species = GetMonData(mon, MON_DATA_SPECIES, NULL); + u32 personality = GetMonData(mon, MON_DATA_PERSONALITY, NULL); + species = SpeciesToNationalPokedexNum(species); + GetSetPokedexFlag(species, FLAG_SET_SEEN); + HandleSetPokedexFlag(species, FLAG_SET_CAUGHT, personality); + } +} + +static void RS_TryEnableNationalPokedex(void) +{ + u8 mpId = GetMultiplayerId(); + // Originally in Ruby but commented out + /*if (gLinkPlayers[mpId ^ 1].lp_field_2 == 0x8000) + EnableNationalPokedex();*/ +} + +void Trade_SwapPlayerAndParterMonData(u8 playerPartyIdx, u8 partnerPartyIdx) +{ + u8 friendship; + + // Get whether the offered Pokemon have mail + struct Pokemon *playerMon = &gPlayerParty[playerPartyIdx]; + u16 playerMail = GetMonData(playerMon, MON_DATA_MAIL); + + struct Pokemon *partnerMon = &gEnemyParty[partnerPartyIdx]; + u16 partnerMail = GetMonData(partnerMon, MON_DATA_MAIL); + + // The mail attached to the sent Pokemon no longer exists in your file. + if (playerMail != 0xFF) + ClearMailStruct(&gSaveBlock1Ptr->mail[playerMail]); + + // This is where the actual trade happens!! + sTradeAnimationResourcesPtr->mon = *playerMon; + *playerMon = *partnerMon; + *partnerMon = sTradeAnimationResourcesPtr->mon; + + // By default, a Pokemon received from a trade will have 70 Friendship. + friendship = 70; + if (!GetMonData(playerMon, MON_DATA_IS_EGG)) + SetMonData(playerMon, MON_DATA_FRIENDSHIP, &friendship); + + // Associate your partner's mail with the Pokemon they sent over. + if (partnerMail != 0xFF) + GiveMailToMon2(playerMon, &gLinkPartnerMail[partnerMail]); + + ReceivedMonSetPokedexFlags(playerPartyIdx); + if (gReceivedRemoteLinkPlayers) + RS_TryEnableNationalPokedex(); +} + +void sub_80508F4(void) +{ + switch (sTradeAnimationResourcesPtr->unk_93) + { + case 1: + if (IsLinkTaskFinished()) + { + SendBlock(bitmask_all_link_players_but_self(), sTradeAnimationResourcesPtr->linkData, 20); + sTradeAnimationResourcesPtr->unk_93++; + } + case 2: + sTradeAnimationResourcesPtr->unk_93 = 0; + break; + } +} + +void CB2_RunTradeAnim_InGameTrade(void) +{ + sub_8050F14(); + RunTasks(); + RunTextPrinters(); + AnimateSprites(); + BuildOamBuffer(); + UpdatePaletteFade(); +} +/* + +void sub_8050968(u8 state) +{ + switch (state) + { + case 0: + sTradeAnimationResourcesPtr->bg2hofs = 0; + sTradeAnimationResourcesPtr->bg2vofs = 0xB4; + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG0_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_AFF256x256); + LoadPalette(gTradeGba2_Pal, 0x10, 0x60); + DmaCopyLarge16(3, gTradeGba_Gfx, (void *)BG_CHAR_ADDR(1), 0x1420, 0x1000); + break; + case 1: + sTradeAnimationResourcesPtr->bg1hofs = 0; + sTradeAnimationResourcesPtr->bg1vofs = 0x15C; + SetGpuReg(REG_OFFSET_BG1VOFS, 0x15C); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(0) | BGCNT_SCREENBASE(5) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(1) | BGCNT_SCREENBASE(18) | BGCNT_AFF512x512); + if (sTradeAnimationResourcesPtr->unk_108) + { + DmaCopy16(3, gUnknown_826AA5C, (void *)BG_SCREEN_ADDR(5), 0x1000); + } + else + { + DmaCopy16(3, gUnknown_8269A5C, (void *)BG_SCREEN_ADDR(5), 0x1000); + } + DmaCopyLarge16(3, gTradeGba_Gfx, (void *)BG_CHAR_ADDR(0), 0x1420, 0x1000); + break; + case 2: + sTradeAnimationResourcesPtr->bg1hofs = 0; + sTradeAnimationResourcesPtr->bg1vofs = 0; + if (sTradeAnimationResourcesPtr->unk_108 == FALSE) + { + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON); + LZ77UnCompVram(gUnknown_3379A0Bin, (void *)BG_SCREEN_ADDR(5)); + BlendPalettes(0x000000008, 0x10, RGB_BLACK); + } + else + { + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_OBJ_ON); + DmaCopy16(3, gUnknown_826407C, (void *)BG_SCREEN_ADDR(5), 0x800); + BlendPalettes(0x00000001, 0x10, RGB_BLACK); + } + break; + case 3: + LoadPalette(gUnknown_826BF5C, 0x30, 0x20); + LZ77UnCompVram(gWirelessSignal4bpp, BG_CHAR_ADDR(1)); + LZ77UnCompVram(gUnknown_826C60C, BG_SCREEN_ADDR(18)); + sTradeAnimationResourcesPtr->bg2hofs = 0x50; + SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG1_ON | DISPCNT_BG2_ON | DISPCNT_OBJ_ON); + break; + case 4: + } } +*/ |