diff options
-rw-r--r-- | asm/berry_crush_2.s | 8 | ||||
-rw-r--r-- | asm/link.s | 30 | ||||
-rw-r--r-- | asm/link_rfu_2.s | 52 | ||||
-rw-r--r-- | asm/link_rfu_3.s | 8 | ||||
-rw-r--r-- | asm/pokemon_jump.s | 4 | ||||
-rw-r--r-- | asm/pokemon_jump_2.s | 16 | ||||
-rw-r--r-- | asm/unk_8159F40.s | 548 | ||||
-rw-r--r-- | include/global.fieldmap.h | 19 | ||||
-rw-r--r-- | include/link_rfu.h | 6 | ||||
-rw-r--r-- | src/unk_8159F40.c | 549 | ||||
-rw-r--r-- | sym_common.txt | 2 |
11 files changed, 631 insertions, 611 deletions
diff --git a/asm/berry_crush_2.s b/asm/berry_crush_2.s index 7477bbf9c..16f7bff79 100644 --- a/asm/berry_crush_2.s +++ b/asm/berry_crush_2.s @@ -1046,7 +1046,7 @@ sub_814C2FC: @ 814C2FC mov r10, r3 _0814C320: lsls r0, r7, 4 - ldr r1, _0814C3C4 @ =gUnknown_3003ED0 + ldr r1, _0814C3C4 @ =gRecvCmds adds r2, r0, r1 ldrh r1, [r2] movs r0, 0xFF @@ -1127,7 +1127,7 @@ _0814C320: b _0814C3D6 .align 2, 0 _0814C3C0: .4byte gUnknown_846E2E0 -_0814C3C4: .4byte gUnknown_3003ED0 +_0814C3C4: .4byte gRecvCmds _0814C3C8: adds r0, r4, r6 adds r2, r0, 0 @@ -1671,7 +1671,7 @@ sub_814C7BC: @ 814C7BC push {r4,r5,lr} adds r5, r0, 0 movs r4, 0 - ldr r3, _0814C808 @ =gUnknown_3003ED0 + ldr r3, _0814C808 @ =gRecvCmds ldrb r0, [r5, 0x9] cmp r4, r0 bcs _0814C7E0 @@ -1710,7 +1710,7 @@ _0814C7F8: strb r0, [r2] b _0814C84A .align 2, 0 -_0814C808: .4byte gUnknown_3003ED0 +_0814C808: .4byte gRecvCmds _0814C80C: adds r4, r5, 0 adds r4, 0x4E diff --git a/asm/link.s b/asm/link.s index d2fabbd0c..6b89ed2db 100644 --- a/asm/link.s +++ b/asm/link.s @@ -870,7 +870,7 @@ _08009B7E: movs r0, 0 strh r0, [r3] lsls r4, r6, 4 - ldr r5, _08009BCC @ =gUnknown_3003ED0 + ldr r5, _08009BCC @ =gRecvCmds adds r2, r4, r5 ldrh r0, [r2] mov r12, r1 @@ -906,7 +906,7 @@ _08009BC4: b _08009E3E .align 2, 0 _08009BC8: .4byte gUnknown_3003E60 -_08009BCC: .4byte gUnknown_3003ED0 +_08009BCC: .4byte gRecvCmds _08009BD0: .4byte 0x00005fff _08009BD4: .4byte 0x00004444 _08009BD8: .4byte 0x00002222 @@ -1006,12 +1006,12 @@ _08009C94: adds r1, r0 movs r2, 0 strh r2, [r1] - ldr r0, _08009CBC @ =gUnknown_3003ED0 + ldr r0, _08009CBC @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r0, [r0] strh r0, [r1, 0x2] - ldr r0, _08009CBC @ =gUnknown_3003ED0 + ldr r0, _08009CBC @ =gRecvCmds adds r0, 0x4 adds r0, r4, r0 ldrh r0, [r0] @@ -1019,7 +1019,7 @@ _08009C94: b _08009E3E .align 2, 0 _08009CB8: .4byte gUnknown_3000E18 -_08009CBC: .4byte gUnknown_3003ED0 +_08009CBC: .4byte gRecvCmds _08009CC0: mov r3, r12 adds r0, r3, r6 @@ -1037,7 +1037,7 @@ _08009CC0: mov r8, r0 movs r2, 0 adds r5, r3, 0 - ldr r7, _08009D0C @ =gUnknown_3003ED0 + ldr r7, _08009D0C @ =gRecvCmds adds r3, r4, 0 _08009CE4: ldrh r1, [r5] @@ -1059,13 +1059,13 @@ _08009CE4: .align 2, 0 _08009D04: .4byte gUnknown_3000E18 _08009D08: .4byte gDecompressionBuffer -_08009D0C: .4byte gUnknown_3003ED0 +_08009D0C: .4byte gRecvCmds _08009D10: movs r2, 0 ldr r1, _08009DC4 @ =gBlockRecvBuffer mov r9, r1 adds r7, r3, 0 - ldr r3, _08009DC8 @ =gUnknown_3003ED0 + ldr r3, _08009DC8 @ =gRecvCmds mov r8, r3 lsls r5, r6, 8 adds r3, r4, 0 @@ -1153,7 +1153,7 @@ _08009DBC: b _08009E3E .align 2, 0 _08009DC4: .4byte gBlockRecvBuffer -_08009DC8: .4byte gUnknown_3003ED0 +_08009DC8: .4byte gRecvCmds _08009DCC: .4byte gUnknown_3003EB8 _08009DD0: .4byte gLinkPlayers _08009DD4: .4byte gUnknown_82345C0 @@ -1187,7 +1187,7 @@ _08009E08: b _08009E3E _08009E0E: ldr r3, _08009E2C @ =gUnknown_8234598 - ldr r0, _08009E30 @ =gUnknown_3003ED0 + ldr r0, _08009E30 @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r2, [r0] @@ -1202,9 +1202,9 @@ _08009E0E: b _08009E3E .align 2, 0 _08009E2C: .4byte gUnknown_8234598 -_08009E30: .4byte gUnknown_3003ED0 +_08009E30: .4byte gRecvCmds _08009E34: - ldr r0, _08009E5C @ =gUnknown_3003ED0 + ldr r0, _08009E5C @ =gRecvCmds adds r0, 0x2 adds r0, r4, r0 ldrh r0, [r0] @@ -1226,7 +1226,7 @@ _08009E4A: pop {r0} bx r0 .align 2, 0 -_08009E5C: .4byte gUnknown_3003ED0 +_08009E5C: .4byte gRecvCmds thumb_func_end sub_8009B70 thumb_func_start sub_8009E60 @@ -3779,7 +3779,7 @@ HandleLinkConnection: @ 800B178 bne _0800B1C8 ldr r0, _0800B1B4 @ =gUnknown_3003F84 ldr r1, _0800B1B8 @ =gUnknown_3003F50 - ldr r2, _0800B1BC @ =gUnknown_3003ED0 + ldr r2, _0800B1BC @ =gRecvCmds bl LinkMain1 ldr r4, _0800B1C0 @ =gUnknown_3003F20 str r0, [r4] @@ -3801,7 +3801,7 @@ _0800B1AA: _0800B1B0: .4byte gWirelessCommType _0800B1B4: .4byte gUnknown_3003F84 _0800B1B8: .4byte gUnknown_3003F50 -_0800B1BC: .4byte gUnknown_3003ED0 +_0800B1BC: .4byte gRecvCmds _0800B1C0: .4byte gUnknown_3003F20 _0800B1C4: .4byte gMain + 0x2C _0800B1C8: diff --git a/asm/link_rfu_2.s b/asm/link_rfu_2.s index e15838946..feb7c886f 100644 --- a/asm/link_rfu_2.s +++ b/asm/link_rfu_2.s @@ -77,7 +77,7 @@ _080F863E: bl CpuSet mov r0, r8 strh r5, [r0] - ldr r1, _080F86B4 @ =gUnknown_3003ED0 + ldr r1, _080F86B4 @ =gRecvCmds ldr r2, _080F86B8 @ =0x01000028 bl CpuSet mov r0, r9 @@ -99,7 +99,7 @@ _080F86A4: .4byte gUnknown_30054BC _080F86A8: .4byte 0x00000634 _080F86AC: .4byte gUnknown_3003F50 _080F86B0: .4byte 0x01000008 -_080F86B4: .4byte gUnknown_3003ED0 +_080F86B4: .4byte gRecvCmds _080F86B8: .4byte 0x01000028 _080F86BC: .4byte gLinkPlayers _080F86C0: .4byte 0x01000046 @@ -1228,7 +1228,7 @@ sub_80F8FD4: @ 80F8FD4 push {r4-r7,lr} sub sp, 0x4 movs r2, 0 - ldr r7, _080F9028 @ =gUnknown_3003ED0 + ldr r7, _080F9028 @ =gRecvCmds ldr r0, _080F902C @ =gUnknown_3005450 adds r6, r7, 0 ldr r1, _080F9030 @ =0x0000093f @@ -1268,7 +1268,7 @@ _080F8FF4: pop {r0} bx r0 .align 2, 0 -_080F9028: .4byte gUnknown_3003ED0 +_080F9028: .4byte gRecvCmds _080F902C: .4byte gUnknown_3005450 _080F9030: .4byte 0x0000093f _080F9034: .4byte 0x01000028 @@ -1278,7 +1278,7 @@ _080F9034: .4byte 0x01000028 sub_80F9038: @ 80F9038 push {lr} ldr r3, _080F9064 @ =gUnknown_3003F50 - ldr r2, _080F9068 @ =gUnknown_3003ED0 + ldr r2, _080F9068 @ =gRecvCmds movs r1, 0x6 _080F9040: ldrh r0, [r3] @@ -1301,7 +1301,7 @@ _080F9056: bx r0 .align 2, 0 _080F9064: .4byte gUnknown_3003F50 -_080F9068: .4byte gUnknown_3003ED0 +_080F9068: .4byte gRecvCmds thumb_func_end sub_80F9038 thumb_func_start sub_80F906C @@ -1375,7 +1375,7 @@ _080F90E8: _080F90EC: .4byte gUnknown_3007460 _080F90F0: movs r3, 0 - ldr r4, _080F9118 @ =gUnknown_3003ED0 + ldr r4, _080F9118 @ =gRecvCmds _080F90F4: movs r2, 0 lsls r0, r3, 4 @@ -1397,7 +1397,7 @@ _080F9110: pop {r1} bx r1 .align 2, 0 -_080F9118: .4byte gUnknown_3003ED0 +_080F9118: .4byte gRecvCmds thumb_func_end sub_80F90DC thumb_func_start sub_80F911C @@ -1664,7 +1664,7 @@ _080F9304: str r2, [sp, 0x4] adds r5, 0x1 str r5, [sp] - ldr r1, _080F9450 @ =gUnknown_3003ED0 + ldr r1, _080F9450 @ =gRecvCmds mov r9, r1 adds r5, r3, 0 adds r7, r4, 0 @@ -1791,7 +1791,7 @@ _080F93FA: _080F9444: .4byte gUnknown_3005450 _080F9448: .4byte 0x000009a6 _080F944C: .4byte gUnknown_3005DE6 -_080F9450: .4byte gUnknown_3003ED0 +_080F9450: .4byte gRecvCmds _080F9454: .4byte 0x0000099d _080F9458: .4byte 0x00000991 _080F945C: .4byte gUnknown_203AC08 @@ -1904,7 +1904,7 @@ sub_80F9514: @ 80F9514 mov r1, sp bl sub_80FC6E8 movs r1, 0 - ldr r0, _080F963C @ =gUnknown_3003ED0 + ldr r0, _080F963C @ =gRecvCmds mov r12, r0 _080F952A: movs r4, 0 @@ -2038,7 +2038,7 @@ _080F9628: bx r1 .align 2, 0 _080F9638: .4byte gUnknown_3005574 -_080F963C: .4byte gUnknown_3003ED0 +_080F963C: .4byte gRecvCmds _080F9640: .4byte gUnknown_3005E10 _080F9644: .4byte gUnknown_3005450 _080F9648: .4byte 0x0000099c @@ -2348,7 +2348,7 @@ sub_80F9868: @ 80F9868 _080F9876: mov r1, r8 lsls r5, r1, 4 - ldr r2, _080F98B4 @ =gUnknown_3003ED0 + ldr r2, _080F98B4 @ =gRecvCmds adds r0, r5, r2 ldrh r7, [r0] movs r3, 0xFF @@ -2379,7 +2379,7 @@ _080F98A2: _080F98B0: b _080F9BF4 .align 2, 0 -_080F98B4: .4byte gUnknown_3003ED0 +_080F98B4: .4byte gRecvCmds _080F98B8: movs r0, 0xEE lsls r0, 7 @@ -2562,7 +2562,7 @@ _080F99FE: adds r2, r4, 0x1 lsls r0, r2, 1 adds r0, r3 - ldr r4, _080F9A90 @ =gUnknown_3003ED0 + ldr r4, _080F9A90 @ =gRecvCmds adds r0, r4 ldrh r0, [r0] strh r0, [r1] @@ -2623,7 +2623,7 @@ _080F9A80: .align 2, 0 _080F9A88: .4byte gUnknown_3005450 _080F9A8C: .4byte gBlockRecvBuffer -_080F9A90: .4byte gUnknown_3003ED0 +_080F9A90: .4byte gRecvCmds _080F9A94: .4byte gUnknown_843EBD4 _080F9A98: .4byte gReceivedRemoteLinkPlayers _080F9A9C: @@ -2703,7 +2703,7 @@ _080F9B00: adds r0, r7, r2 strb r1, [r0] _080F9B38: - ldr r0, _080F9B64 @ =gUnknown_3003ED0 + ldr r0, _080F9B64 @ =gRecvCmds adds r0, 0x6 adds r0, r5, r0 ldrh r0, [r0] @@ -2718,7 +2718,7 @@ _080F9B54: .4byte gUnknown_3003ED2 _080F9B58: .4byte gUnknown_3007460 _080F9B5C: .4byte gUnknown_3003ED4 _080F9B60: .4byte 0x0000099c -_080F9B64: .4byte gUnknown_3003ED0 +_080F9B64: .4byte gRecvCmds _080F9B68: movs r0, 0xEE lsls r0, 8 @@ -2732,7 +2732,7 @@ _080F9B68: adds r0, r5, r4 ldrh r0, [r0] strh r0, [r1, 0x4] - ldr r0, _080F9B9C @ =gUnknown_3003ED0 + ldr r0, _080F9B9C @ =gRecvCmds adds r0, 0x6 adds r0, r5, r0 ldrh r0, [r0] @@ -2742,7 +2742,7 @@ _080F9B68: _080F9B90: .4byte gUnknown_3003F50 _080F9B94: .4byte gUnknown_3003ED2 _080F9B98: .4byte gUnknown_3003ED4 -_080F9B9C: .4byte gUnknown_3003ED0 +_080F9B9C: .4byte gRecvCmds _080F9BA0: ldr r4, _080F9BD0 @ =gUnknown_3005450 ldrb r0, [r4, 0xC] @@ -3267,7 +3267,7 @@ _080F9F74: .4byte gUnknown_3003F50 _080F9F78: .4byte gUnknown_3005450 _080F9F7C: bl GetMultiplayerId - ldr r1, _080F9FA0 @ =gUnknown_3003ED0 + ldr r1, _080F9FA0 @ =gRecvCmds lsls r0, 24 lsrs r0, 20 adds r0, r1 @@ -3285,7 +3285,7 @@ _080F9F98: pop {r0} bx r0 .align 2, 0 -_080F9FA0: .4byte gUnknown_3003ED0 +_080F9FA0: .4byte gRecvCmds _080F9FA4: .4byte sub_80F9FA8 thumb_func_end rfufunc_80F9F44 @@ -3378,7 +3378,7 @@ rfufunc_80FA020: @ 80FA020 strh r0, [r3] movs r4, 0 mov r9, r5 - ldr r0, _080FA0D4 @ =gUnknown_3003ED0 + ldr r0, _080FA0D4 @ =gRecvCmds mov r12, r0 lsls r5, r6, 4 adds r7, r2, 0 @@ -3441,7 +3441,7 @@ _080FA05C: _080FA0C8: .4byte gUnknown_3005450 _080FA0CC: .4byte gUnknown_3003F50 _080FA0D0: .4byte 0xffff8900 -_080FA0D4: .4byte gUnknown_3003ED0 +_080FA0D4: .4byte gRecvCmds _080FA0D8: .4byte gUnknown_843EBD4 _080FA0DC: .4byte gUnknown_203AC08 _080FA0E0: @@ -6835,7 +6835,7 @@ sub_80FBA44: @ 80FBA44 sub sp, 0x4 movs r0, 0 str r0, [sp] - ldr r1, _080FBA5C @ =gUnknown_3003ED0 + ldr r1, _080FBA5C @ =gRecvCmds ldr r2, _080FBA60 @ =0x05000014 mov r0, sp bl CpuSet @@ -6843,7 +6843,7 @@ sub_80FBA44: @ 80FBA44 pop {r0} bx r0 .align 2, 0 -_080FBA5C: .4byte gUnknown_3003ED0 +_080FBA5C: .4byte gRecvCmds _080FBA60: .4byte 0x05000014 thumb_func_end sub_80FBA44 diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s index 388c871d9..f2e88b619 100644 --- a/asm/link_rfu_3.s +++ b/asm/link_rfu_3.s @@ -7477,7 +7477,7 @@ _08119900: .4byte gSpecialVar_Result sub_8119904: @ 8119904 push {r4,r5,lr} adds r2, r0, 0 - ldr r3, _08119940 @ =gUnknown_3003ED0 + ldr r3, _08119940 @ =gRecvCmds ldrh r5, [r3, 0x12] adds r4, r5, 0 cmp r4, 0 @@ -7506,7 +7506,7 @@ _08119938: pop {r0} bx r0 .align 2, 0 -_08119940: .4byte gUnknown_3003ED0 +_08119940: .4byte gRecvCmds thumb_func_end sub_8119904 thumb_func_start sub_8119944 @@ -10578,7 +10578,7 @@ _0811B0A0: .4byte gUnknown_8457E0C sub_811B0A4: @ 811B0A4 push {lr} adds r2, r0, 0 - ldr r0, _0811B0C4 @ =gUnknown_3003ED0 + ldr r0, _0811B0C4 @ =gRecvCmds ldrh r1, [r0, 0x2] cmp r1, 0 beq _0811B0C8 @@ -10593,7 +10593,7 @@ _0811B0B8: movs r0, 0x1 b _0811B0CA .align 2, 0 -_0811B0C4: .4byte gUnknown_3003ED0 +_0811B0C4: .4byte gRecvCmds _0811B0C8: movs r0, 0 _0811B0CA: diff --git a/asm/pokemon_jump.s b/asm/pokemon_jump.s index 1af1fd10b..c00c08f20 100644 --- a/asm/pokemon_jump.s +++ b/asm/pokemon_jump.s @@ -596,7 +596,7 @@ sub_8147A34: @ 8147A34 ldrb r0, [r0] cmp r0, 0 beq _08147A98 - ldr r1, _08147A90 @ =gUnknown_3003ED0 + ldr r1, _08147A90 @ =gRecvCmds ldrh r0, [r1, 0x2] ldr r5, _08147A94 @ =0x00007fff cmp r0, r5 @@ -626,7 +626,7 @@ _08147A5C: .align 2, 0 _08147A88: .4byte gTasks+0x8 _08147A8C: .4byte gReceivedRemoteLinkPlayers -_08147A90: .4byte gUnknown_3003ED0 +_08147A90: .4byte gRecvCmds _08147A94: .4byte 0x00007fff _08147A98: ldrh r0, [r4, 0x16] diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s index f47e312ff..dcdf8ad3b 100644 --- a/asm/pokemon_jump_2.s +++ b/asm/pokemon_jump_2.s @@ -4313,7 +4313,7 @@ sub_8149A90: @ 8149A90 push {r4,lr} sub sp, 0xC adds r4, r1, 0 - ldr r3, _08149AC4 @ =gUnknown_3003ED0 + ldr r3, _08149AC4 @ =gRecvCmds lsls r2, r0, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -4337,7 +4337,7 @@ _08149AC0: movs r0, 0 b _08149AD8 .align 2, 0 -_08149AC4: .4byte gUnknown_3003ED0 +_08149AC4: .4byte gRecvCmds _08149AC8: mov r0, sp ldrh r0, [r0, 0x2] @@ -4443,7 +4443,7 @@ sub_8149B7C: @ 8149B7C sub sp, 0xC adds r5, r0, 0 adds r4, r1, 0 - ldr r2, _08149BE4 @ =gUnknown_3003ED0 + ldr r2, _08149BE4 @ =gRecvCmds ldrh r0, [r2] movs r1, 0xFF lsls r1, 8 @@ -4491,7 +4491,7 @@ sub_8149B7C: @ 8149B7C movs r0, 0x1 b _08149BEA .align 2, 0 -_08149BE4: .4byte gUnknown_3003ED0 +_08149BE4: .4byte gRecvCmds _08149BE8: movs r0, 0 _08149BEA: @@ -4534,7 +4534,7 @@ sub_8149C24: @ 8149C24 adds r4, r0, 0 adds r5, r2, 0 adds r6, r3, 0 - ldr r3, _08149C80 @ =gUnknown_3003ED0 + ldr r3, _08149C80 @ =gRecvCmds lsls r2, r1, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -4575,7 +4575,7 @@ sub_8149C24: @ 8149C24 movs r0, 0x1 b _08149C86 .align 2, 0 -_08149C80: .4byte gUnknown_3003ED0 +_08149C80: .4byte gRecvCmds _08149C84: movs r0, 0 _08149C86: @@ -4590,7 +4590,7 @@ sub_8149C90: @ 8149C90 push {r4,lr} sub sp, 0xC adds r4, r0, 0 - ldr r3, _08149CDC @ =gUnknown_3003ED0 + ldr r3, _08149CDC @ =gRecvCmds lsls r2, r1, 4 adds r0, r2, r3 ldrh r1, [r0] @@ -4625,7 +4625,7 @@ sub_8149C90: @ 8149C90 movs r0, 0x1 b _08149CE2 .align 2, 0 -_08149CDC: .4byte gUnknown_3003ED0 +_08149CDC: .4byte gRecvCmds _08149CE0: movs r0, 0 _08149CE2: diff --git a/asm/unk_8159F40.s b/asm/unk_8159F40.s index c511dee99..792dc4b0f 100644 --- a/asm/unk_8159F40.s +++ b/asm/unk_8159F40.s @@ -5,542 +5,6 @@ .text - thumb_func_start sub_815A1F8 -sub_815A1F8: @ 815A1F8 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - str r1, [sp, 0x4] - adds r0, 0x8 - str r0, [sp, 0x8] - mov r1, sp - movs r0, 0 - strh r0, [r1] - ldr r4, _0815A480 @ =gMapObjects - ldr r2, _0815A484 @ =0x01000120 - mov r0, sp - adds r1, r4, 0 - bl CpuSet - movs r0, 0 - mov r12, r0 - movs r1, 0x1 - mov r10, r1 -_0815A224: - mov r2, r12 - lsls r7, r2, 3 - adds r5, r7, r2 - lsls r5, 2 - ldr r0, _0815A480 @ =gMapObjects - adds r5, r0 - lsls r6, r2, 2 - add r6, r12 - lsls r6, 2 - ldr r1, [sp, 0x8] - adds r6, r1 - ldrb r0, [r6] - lsls r0, 31 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - ldrb r2, [r5] - movs r1, 0x2 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r6] - lsls r0, 30 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - lsls r0, 3 - movs r2, 0x9 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5] - ldrb r0, [r6] - lsls r0, 29 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - lsls r0, 4 - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r6] - lsls r0, 28 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - lsls r0, 5 - movs r4, 0x21 - negs r4, r4 - ands r1, r4 - orrs r1, r0 - strb r1, [r5] - ldrb r0, [r6] - lsls r0, 27 - lsrs r0, 31 - ands r0, r2 - ldrb r1, [r5, 0x1] - movs r2, 0x2 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x1] - ldrb r0, [r6] - lsls r0, 26 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - lsls r0, 1 - movs r1, 0x3 - negs r1, r1 - mov r8, r1 - mov r3, r8 - ands r3, r2 - orrs r3, r0 - strb r3, [r5, 0x1] - ldrb r0, [r6] - lsls r0, 25 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - lsls r0, 2 - subs r1, 0x2 - mov r9, r1 - ands r1, r3 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r6] - lsrs r0, 7 - ands r0, r2 - lsls r0, 3 - movs r2, 0x9 - negs r2, r2 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 31 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - lsls r0, 4 - movs r1, 0x11 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 30 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - lsls r0, 5 - ands r4, r1 - orrs r4, r0 - strb r4, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 29 - lsrs r0, 31 - ands r0, r2 - lsls r0, 6 - movs r2, 0x41 - negs r2, r2 - adds r1, r2, 0 - ands r4, r1 - orrs r4, r0 - strb r4, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 28 - lsrs r0, 31 - lsls r0, 7 - movs r3, 0x7F - ands r4, r3 - orrs r4, r0 - strb r4, [r5, 0x1] - ldrb r0, [r6, 0x1] - lsls r0, 27 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - ldrb r2, [r5, 0x2] - movs r1, 0x2 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x2] - ldrb r0, [r6, 0x1] - lsls r0, 26 - lsrs r0, 31 - lsls r0, 7 - ands r1, r3 - orrs r1, r0 - strb r1, [r5, 0x2] - ldrb r0, [r6, 0x1] - lsls r0, 25 - lsrs r0, 31 - mov r2, r10 - ands r0, r2 - ldrb r2, [r5, 0x3] - movs r1, 0x2 - negs r1, r1 - ands r1, r2 - orrs r1, r0 - strb r1, [r5, 0x3] - ldrb r0, [r6, 0x1] - lsrs r0, 7 - mov r2, r10 - ands r0, r2 - lsls r0, 1 - mov r2, r8 - ands r2, r1 - orrs r2, r0 - mov r8, r2 - strb r2, [r5, 0x3] - ldrb r0, [r6, 0x2] - lsls r0, 31 - lsrs r0, 31 - mov r1, r10 - ands r0, r1 - lsls r0, 2 - mov r1, r9 - ands r2, r1 - orrs r2, r0 - strb r2, [r5, 0x3] - ldrb r1, [r6, 0x2] - lsls r1, 27 - lsrs r1, 28 - ldrb r2, [r5, 0x18] - movs r4, 0x10 - negs r4, r4 - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x18] - ldrb r1, [r6, 0x3] - lsls r1, 28 - movs r3, 0xF - lsrs r1, 28 - ldrb r2, [r5, 0xB] - adds r0, r4, 0 - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0xB] - ldrb r1, [r6, 0x3] - lsrs r1, 4 - lsls r1, 4 - ands r0, r3 - orrs r0, r1 - strb r0, [r5, 0xB] - ldrb r0, [r6, 0x4] - strb r0, [r5, 0x5] - ldrb r0, [r6, 0x5] - strb r0, [r5, 0x6] - ldrb r0, [r6, 0x6] - strb r0, [r5, 0x7] - ldrb r0, [r6, 0x7] - strb r0, [r5, 0x8] - ldrb r0, [r6, 0x8] - strb r0, [r5, 0x9] - ldrb r0, [r6, 0x9] - strb r0, [r5, 0xA] - ldrh r0, [r6, 0xA] - strh r0, [r5, 0x10] - ldrh r0, [r6, 0xC] - strh r0, [r5, 0x12] - ldrb r0, [r6, 0xE] - strb r0, [r5, 0x1D] - ldrb r0, [r6, 0xF] - strb r0, [r5, 0x1F] - ldrb r0, [r6, 0x10] - adds r1, r5, 0 - adds r1, 0x21 - strb r0, [r1] - ldrb r0, [r6, 0x11] - adds r1, 0x1 - strb r0, [r1] - movs r6, 0 - mov r8, r7 - mov r2, r12 - adds r2, 0x1 - str r2, [sp, 0xC] - ldrb r7, [r5, 0x8] - ldr r3, [sp, 0x4] - movs r0, 0xF - mov r9, r0 -_0815A412: - ldrb r1, [r3] - cmp r7, r1 - bne _0815A444 - ldrh r0, [r3, 0x4] - adds r0, 0x7 - strh r0, [r5, 0xC] - ldrh r0, [r3, 0x6] - adds r0, 0x7 - strh r0, [r5, 0xE] - ldrb r1, [r3, 0xA] - lsls r1, 28 - lsrs r1, 28 - mov r2, r9 - ands r1, r2 - ldrb r0, [r5, 0x19] - ands r0, r4 - orrs r0, r1 - strb r0, [r5, 0x19] - ldrb r1, [r3, 0xA] - lsrs r1, 4 - lsls r1, 4 - movs r2, 0xF - ands r0, r2 - orrs r0, r1 - strb r0, [r5, 0x19] -_0815A444: - adds r3, 0x18 - adds r6, 0x1 - cmp r6, 0x3F - bls _0815A412 - mov r0, r8 - add r0, r12 - lsls r0, 2 - ldr r1, _0815A480 @ =gMapObjects - adds r6, r0, r1 - movs r2, 0x10 - ldrsh r0, [r6, r2] - movs r2, 0x12 - ldrsh r1, [r6, r2] - bl MapGridGetMetatileBehaviorAt - strb r0, [r6, 0x1E] - ldrb r4, [r6, 0x1F] - movs r1, 0x10 - ldrsh r0, [r6, r1] - movs r2, 0x12 - ldrsh r1, [r6, r2] - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A488 - ldrh r0, [r6, 0x10] - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - b _0815A506 - .align 2, 0 -_0815A480: .4byte gMapObjects -_0815A484: .4byte 0x01000120 -_0815A488: - ldrb r4, [r6, 0x1F] - ldrh r0, [r6, 0x10] - subs r0, 0x1 - lsls r0, 16 - asrs r0, 16 - movs r2, 0x12 - ldrsh r1, [r6, r2] - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A4A8 - ldrh r0, [r6, 0x10] - subs r0, 0x1 - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - b _0815A506 -_0815A4A8: - ldrb r4, [r6, 0x1F] - ldrh r0, [r6, 0x10] - adds r0, 0x1 - lsls r0, 16 - asrs r0, 16 - movs r2, 0x12 - ldrsh r1, [r6, r2] - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A4C8 - ldrh r0, [r6, 0x10] - adds r0, 0x1 - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - b _0815A506 -_0815A4C8: - ldrb r4, [r6, 0x1F] - movs r1, 0x10 - ldrsh r0, [r6, r1] - ldrh r1, [r6, 0x12] - subs r1, 0x1 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A4E8 - ldrh r0, [r6, 0x10] - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - subs r0, 0x1 - b _0815A506 -_0815A4E8: - ldrb r4, [r6, 0x1F] - movs r2, 0x10 - ldrsh r0, [r6, r2] - ldrh r1, [r6, 0x12] - adds r1, 0x1 - lsls r1, 16 - asrs r1, 16 - bl MapGridGetMetatileBehaviorAt - cmp r4, r0 - bne _0815A508 - ldrh r0, [r6, 0x10] - strh r0, [r6, 0x14] - ldrh r0, [r6, 0x12] - adds r0, 0x1 -_0815A506: - strh r0, [r6, 0x16] -_0815A508: - ldr r0, [sp, 0xC] - mov r12, r0 - cmp r0, 0xF - bhi _0815A512 - b _0815A224 -_0815A512: - ldr r0, _0815A538 @ =gMapObjects - ldr r1, _0815A53C @ =gSaveBlock1Ptr - ldr r1, [r1] - movs r2, 0xD4 - lsls r2, 3 - adds r1, r2 - movs r2, 0x90 - lsls r2, 1 - bl CpuSet - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0815A538: .4byte gMapObjects -_0815A53C: .4byte gSaveBlock1Ptr - thumb_func_end sub_815A1F8 - - thumb_func_start sub_815A540 -sub_815A540: @ 815A540 - push {r4,lr} - sub sp, 0x4 - ldr r0, _0815A5AC @ =gUnknown_203ADFA - ldrb r0, [r0] - cmp r0, 0x2 - bne _0815A5A4 - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - bl MapGridGetMetatileBehaviorAt - lsls r0, 24 - lsrs r0, 24 - bl MetatileBehavior_IsSurfable - lsls r0, 24 - cmp r0, 0 - bne _0815A5A4 - movs r0, 0x8 - bl TestPlayerAvatarFlags - lsls r0, 24 - cmp r0, 0 - beq _0815A5A4 - ldr r0, _0815A5B0 @ =gPlayerAvatar - ldrb r0, [r0, 0x5] - lsls r4, r0, 3 - adds r4, r0 - lsls r4, 2 - ldr r0, _0815A5B4 @ =gMapObjects - adds r4, r0 - movs r0, 0x1 - bl SetPlayerAvatarTransitionFlags - ldrb r1, [r4, 0x1A] - lsls r0, r1, 4 - adds r0, r1 - lsls r0, 2 - ldr r1, _0815A5B8 @ =gSprites - adds r0, r1 - bl DestroySprite -_0815A5A4: - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0815A5AC: .4byte gUnknown_203ADFA -_0815A5B0: .4byte gPlayerAvatar -_0815A5B4: .4byte gMapObjects -_0815A5B8: .4byte gSprites - thumb_func_end sub_815A540 - - thumb_func_start sub_815A5BC -sub_815A5BC: @ 815A5BC - push {lr} - sub sp, 0x8 - ldr r3, _0815A5E4 @ =0xffffff00 - ldr r1, [sp] - ands r1, r3 - movs r2, 0x1 - orrs r1, r2 - str r1, [sp] - lsls r0, 24 - lsrs r0, 24 - ldr r1, [sp, 0x4] - ands r1, r3 - orrs r1, r0 - str r1, [sp, 0x4] - mov r0, sp - bl sub_80F9E2C - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_0815A5E4: .4byte 0xffffff00 - thumb_func_end sub_815A5BC - - thumb_func_start sub_815A5E8 -sub_815A5E8: @ 815A5E8 - push {lr} - adds r2, r0, 0 - ldr r3, _0815A610 @ =gUnknown_3003ED0 - ldrh r0, [r3] - movs r1, 0xFF - lsls r1, 8 - ands r1, r0 - movs r0, 0xBC - lsls r0, 6 - cmp r1, r0 - bne _0815A60A - lsls r0, r2, 4 - adds r1, r3, 0x2 - adds r1, r0, r1 - ldrb r0, [r1] - cmp r0, 0x1 - beq _0815A614 -_0815A60A: - movs r0, 0 - b _0815A616 - .align 2, 0 -_0815A610: .4byte gUnknown_3003ED0 -_0815A614: - ldrb r0, [r1, 0x4] -_0815A616: - pop {r1} - bx r1 - thumb_func_end sub_815A5E8 - thumb_func_start sub_815A61C sub_815A61C: @ 815A61C push {r4-r7,lr} @@ -971,7 +435,7 @@ sub_815A950: @ 815A950 mov r9, r0 adds r2, r7, 0 adds r2, 0x14 - ldr r4, _0815A98C @ =gUnknown_3003ED0 + ldr r4, _0815A98C @ =gRecvCmds ldrh r0, [r4] movs r1, 0xFF lsls r1, 8 @@ -988,7 +452,7 @@ _0815A988: movs r0, 0 b _0815AACA .align 2, 0 -_0815A98C: .4byte gUnknown_3003ED0 +_0815A98C: .4byte gRecvCmds _0815A990: ldrb r0, [r3, 0x1] lsls r0, 28 @@ -1186,7 +650,7 @@ sub_815AB04: @ 815AB04 push {r4,lr} adds r2, r0, 0 adds r4, r1, 0 - ldr r3, _0815AB2C @ =gUnknown_3003ED0 + ldr r3, _0815AB2C @ =gRecvCmds ldrh r0, [r3] movs r1, 0xFF lsls r1, 8 @@ -1205,7 +669,7 @@ _0815AB28: movs r0, 0 b _0815AB36 .align 2, 0 -_0815AB2C: .4byte gUnknown_3003ED0 +_0815AB2C: .4byte gRecvCmds _0815AB30: ldrb r0, [r1, 0x4] strb r0, [r4] @@ -1240,7 +704,7 @@ _0815AB5C: .4byte 0xffffff00 sub_815AB60: @ 815AB60 push {lr} adds r2, r0, 0 - ldr r3, _0815AB88 @ =gUnknown_3003ED0 + ldr r3, _0815AB88 @ =gRecvCmds ldrh r0, [r3] movs r1, 0xFF lsls r1, 8 @@ -1259,7 +723,7 @@ _0815AB82: movs r0, 0 b _0815AB8E .align 2, 0 -_0815AB88: .4byte gUnknown_3003ED0 +_0815AB88: .4byte gRecvCmds _0815AB8C: ldr r0, [r1, 0x4] _0815AB8E: diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h index b602741a6..801606d50 100644 --- a/include/global.fieldmap.h +++ b/include/global.fieldmap.h @@ -74,6 +74,14 @@ struct BackupMapData u16 *map; }; +union __attribute__((packed)) MapObjectRange { + u8 as_byte; + struct __attribute__((packed)) { + u8 x:4; + u8 y:4; + } __attribute__((aligned (1))) as_nybbles; +} __attribute__((aligned (1))); + struct MapObjectTemplate { /*0x00*/ u8 localId; @@ -83,8 +91,7 @@ struct MapObjectTemplate /*0x06*/ s16 y; /*0x08*/ u8 elevation; /*0x09*/ u8 movementType; - /*0x0A*/ u8 unkA_0:4; - u8 unkA_4:4; + /*0x0A*/ union MapObjectRange range; ///*0x0B*/ u8 fillerB[1]; /*0x0C*/ u16 unkC; /*0x0E*/ u16 unkE; @@ -228,13 +235,7 @@ struct MapObject /*0x14*/ struct Coords16 coords3; /*0x18*/ u8 mapobj_unk_18:4; //current direction? /*0x18*/ u8 placeholder18:4; - /*0x19*/ union __attribute__((packed)) { - u8 as_byte; - struct __attribute__((packed)) { - u8 x:4; - u8 y:4; - } __attribute__((aligned (1))) as_nybbles; - } __attribute__((aligned (1))) range; + /*0x19*/ union MapObjectRange range; /*0x1A*/ u8 mapobj_unk_1A; /*0x1B*/ u8 mapobj_unk_1B; /*0x1C*/ u8 mapobj_unk_1C; diff --git a/include/link_rfu.h b/include/link_rfu.h index d076efae6..8d02577a5 100644 --- a/include/link_rfu.h +++ b/include/link_rfu.h @@ -1,6 +1,11 @@ #ifndef GUARD_LINK_RFU_H #define GUARD_LINK_RFU_H +struct Padded_U8 +{ + u8 value; +}; + void AddTextPrinterToWindow1(const u8 *str); bool32 MG_PrintTextOnWindow1AndWaitButton(u8 * cmdPtr, const u8 * src); void sub_80FA190(void); @@ -11,5 +16,6 @@ void DestroyWirelessStatusIndicatorSprite(void); void MEvent_CreateTask_CardOrNewsWithFriend(u8); void MEvent_CreateTask_CardOrNewsOverWireless(u8); void MEvent_CreateTask_Leader(u8); +void sub_80F9E2C(void * data); #endif //GUARD_LINK_RFU_H diff --git a/src/unk_8159F40.c b/src/unk_8159F40.c index 0a231e498..45139152e 100644 --- a/src/unk_8159F40.c +++ b/src/unk_8159F40.c @@ -2,6 +2,11 @@ #include "battle.h" #include "event_data.h" #include "quest_log.h" +#include "fieldmap.h" +#include "field_player_avatar.h" +#include "metatile_behavior.h" +#include "link.h" +#include "link_rfu.h" struct UnkStruct_84792D0 { @@ -90,3 +95,547 @@ void sub_815A008(struct QuestLog * questLog) questLog->unk_008[i].animId = gMapObjects[i].animId; } } + +#ifdef NONMATCHING +void sub_815A1F8(const struct QuestLog * questLog, const struct MapObjectTemplate * templates) +{ + u32 i, j; + const struct QuestLogMapObject * questLogMapObjects = questLog->unk_008; + + CpuFill16(0, gMapObjects, sizeof(gMapObjects)); + + for (i = 0; i < MAP_OBJECTS_COUNT; i++) + { + gMapObjects[i].active = questLogMapObjects[i].active; + gMapObjects[i].mapobj_bit_3 = questLogMapObjects[i].mapobj_bit_3; + gMapObjects[i].mapobj_bit_4 = questLogMapObjects[i].mapobj_bit_4; + gMapObjects[i].mapobj_bit_5 = questLogMapObjects[i].mapobj_bit_5; + gMapObjects[i].mapobj_bit_8 = questLogMapObjects[i].mapobj_bit_8; + gMapObjects[i].mapobj_bit_9 = questLogMapObjects[i].mapobj_bit_9; + gMapObjects[i].mapobj_bit_10 = questLogMapObjects[i].mapobj_bit_10; + gMapObjects[i].mapobj_bit_11 = questLogMapObjects[i].mapobj_bit_11; + gMapObjects[i].mapobj_bit_12 = questLogMapObjects[i].mapobj_bit_12; + gMapObjects[i].mapobj_bit_13 = questLogMapObjects[i].mapobj_bit_13; + gMapObjects[i].mapobj_bit_14 = questLogMapObjects[i].mapobj_bit_14; + gMapObjects[i].mapobj_bit_15 = questLogMapObjects[i].mapobj_bit_15; + gMapObjects[i].mapobj_bit_16 = questLogMapObjects[i].mapobj_bit_16; + gMapObjects[i].mapobj_bit_23 = questLogMapObjects[i].mapobj_bit_23; + gMapObjects[i].mapobj_bit_24 = questLogMapObjects[i].mapobj_bit_24; + gMapObjects[i].mapobj_bit_25 = questLogMapObjects[i].mapobj_bit_25; + gMapObjects[i].mapobj_bit_26 = questLogMapObjects[i].mapobj_bit_26; + gMapObjects[i].mapobj_unk_18 = questLogMapObjects[i].mapobj_unk_18; + gMapObjects[i].mapobj_unk_0B_0 = questLogMapObjects[i].mapobj_unk_0B_0; + gMapObjects[i].elevation = questLogMapObjects[i].elevation; + gMapObjects[i].graphicsId = questLogMapObjects[i].graphicsId; + gMapObjects[i].animPattern = questLogMapObjects[i].animPattern; + gMapObjects[i].trainerType = questLogMapObjects[i].trainerType; + gMapObjects[i].localId = questLogMapObjects[i].localId; + gMapObjects[i].mapNum = questLogMapObjects[i].mapNum; + gMapObjects[i].mapGroup = questLogMapObjects[i].mapGroup; + gMapObjects[i].coords2.x = questLogMapObjects[i].x; + gMapObjects[i].coords2.y = questLogMapObjects[i].y; + gMapObjects[i].trainerRange_berryTreeId = questLogMapObjects[i].trainerRange_berryTreeId; + gMapObjects[i].mapobj_unk_1F = questLogMapObjects[i].mapobj_unk_1F; + gMapObjects[i].mapobj_unk_21 = questLogMapObjects[i].mapobj_unk_21; + gMapObjects[i].animId = questLogMapObjects[i].animId; + + for (j = 0; j < 0x40; j++) + { + if (gMapObjects[i].localId == templates[j].localId) + { + gMapObjects[i].coords1.x = templates[j].x + 7; + gMapObjects[i].coords1.y = templates[j].y + 7; + gMapObjects[i].range.as_nybbles.x = templates[j].range.as_nybbles.x; + gMapObjects[i].range.as_nybbles.y = templates[j].range.as_nybbles.y; + } + } + + gMapObjects[i].mapobj_unk_1E = MapGridGetMetatileBehaviorAt(gMapObjects[i].coords2.x, gMapObjects[i].coords2.y); + if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x), (s16)(gMapObjects[i].coords2.y))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y; + } + else if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x - 1), (s16)(gMapObjects[i].coords2.y))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x - 1; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y; + } + else if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x + 1), (s16)(gMapObjects[i].coords2.y))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x + 1; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y; + } + else if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x), (s16)(gMapObjects[i].coords2.y - 1))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y - 1; + } + else if (gMapObjects[i].mapobj_unk_1F == MapGridGetMetatileBehaviorAt((s16)(gMapObjects[i].coords2.x), (s16)(gMapObjects[i].coords2.y + 1))) + { + gMapObjects[i].coords3.x = gMapObjects[i].coords2.x; + gMapObjects[i].coords3.y = gMapObjects[i].coords2.y + 1; + } + } + + CpuCopy16(gMapObjects, gSaveBlock1Ptr->mapObjects, sizeof(gMapObjects)); +} +#else +NAKED +void sub_815A1F8(const struct QuestLog * questLog, const struct MapObjectTemplate * templates) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r10\n" + "\tmov r6, r9\n" + "\tmov r5, r8\n" + "\tpush {r5-r7}\n" + "\tsub sp, 0x10\n" + "\tstr r1, [sp, 0x4]\n" + "\tadds r0, 0x8\n" + "\tstr r0, [sp, 0x8]\n" + "\tmov r1, sp\n" + "\tmovs r0, 0\n" + "\tstrh r0, [r1]\n" + "\tldr r4, _0815A480 @ =gMapObjects\n" + "\tldr r2, _0815A484 @ =0x01000120\n" + "\tmov r0, sp\n" + "\tadds r1, r4, 0\n" + "\tbl CpuSet\n" + "\tmovs r0, 0\n" + "\tmov r12, r0\n" + "\tmovs r1, 0x1\n" + "\tmov r10, r1\n" + "_0815A224:\n" + "\tmov r2, r12\n" + "\tlsls r7, r2, 3\n" + "\tadds r5, r7, r2\n" + "\tlsls r5, 2\n" + "\tldr r0, _0815A480 @ =gMapObjects\n" + "\tadds r5, r0\n" + "\tlsls r6, r2, 2\n" + "\tadd r6, r12\n" + "\tlsls r6, 2\n" + "\tldr r1, [sp, 0x8]\n" + "\tadds r6, r1\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 31\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tldrb r2, [r5]\n" + "\tmovs r1, 0x2\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 30\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 3\n" + "\tmovs r2, 0x9\n" + "\tnegs r2, r2\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstrb r2, [r5]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 29\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 4\n" + "\tmovs r1, 0x11\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 28\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 5\n" + "\tmovs r4, 0x21\n" + "\tnegs r4, r4\n" + "\tands r1, r4\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 27\n" + "\tlsrs r0, 31\n" + "\tands r0, r2\n" + "\tldrb r1, [r5, 0x1]\n" + "\tmovs r2, 0x2\n" + "\tnegs r2, r2\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstrb r2, [r5, 0x1]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 26\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 1\n" + "\tmovs r1, 0x3\n" + "\tnegs r1, r1\n" + "\tmov r8, r1\n" + "\tmov r3, r8\n" + "\tands r3, r2\n" + "\torrs r3, r0\n" + "\tstrb r3, [r5, 0x1]\n" + "\tldrb r0, [r6]\n" + "\tlsls r0, 25\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 2\n" + "\tsubs r1, 0x2\n" + "\tmov r9, r1\n" + "\tands r1, r3\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x1]\n" + "\tldrb r0, [r6]\n" + "\tlsrs r0, 7\n" + "\tands r0, r2\n" + "\tlsls r0, 3\n" + "\tmovs r2, 0x9\n" + "\tnegs r2, r2\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstrb r2, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 31\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 4\n" + "\tmovs r1, 0x11\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 30\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 5\n" + "\tands r4, r1\n" + "\torrs r4, r0\n" + "\tstrb r4, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 29\n" + "\tlsrs r0, 31\n" + "\tands r0, r2\n" + "\tlsls r0, 6\n" + "\tmovs r2, 0x41\n" + "\tnegs r2, r2\n" + "\tadds r1, r2, 0\n" + "\tands r4, r1\n" + "\torrs r4, r0\n" + "\tstrb r4, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 28\n" + "\tlsrs r0, 31\n" + "\tlsls r0, 7\n" + "\tmovs r3, 0x7F\n" + "\tands r4, r3\n" + "\torrs r4, r0\n" + "\tstrb r4, [r5, 0x1]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 27\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tldrb r2, [r5, 0x2]\n" + "\tmovs r1, 0x2\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x2]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 26\n" + "\tlsrs r0, 31\n" + "\tlsls r0, 7\n" + "\tands r1, r3\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x2]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsls r0, 25\n" + "\tlsrs r0, 31\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tldrb r2, [r5, 0x3]\n" + "\tmovs r1, 0x2\n" + "\tnegs r1, r1\n" + "\tands r1, r2\n" + "\torrs r1, r0\n" + "\tstrb r1, [r5, 0x3]\n" + "\tldrb r0, [r6, 0x1]\n" + "\tlsrs r0, 7\n" + "\tmov r2, r10\n" + "\tands r0, r2\n" + "\tlsls r0, 1\n" + "\tmov r2, r8\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tmov r8, r2\n" + "\tstrb r2, [r5, 0x3]\n" + "\tldrb r0, [r6, 0x2]\n" + "\tlsls r0, 31\n" + "\tlsrs r0, 31\n" + "\tmov r1, r10\n" + "\tands r0, r1\n" + "\tlsls r0, 2\n" + "\tmov r1, r9\n" + "\tands r2, r1\n" + "\torrs r2, r0\n" + "\tstrb r2, [r5, 0x3]\n" + "\tldrb r1, [r6, 0x2]\n" + "\tlsls r1, 27\n" + "\tlsrs r1, 28\n" + "\tldrb r2, [r5, 0x18]\n" + "\tmovs r4, 0x10\n" + "\tnegs r4, r4\n" + "\tadds r0, r4, 0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0x18]\n" + "\tldrb r1, [r6, 0x3]\n" + "\tlsls r1, 28\n" + "\tmovs r3, 0xF\n" + "\tlsrs r1, 28\n" + "\tldrb r2, [r5, 0xB]\n" + "\tadds r0, r4, 0\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0xB]\n" + "\tldrb r1, [r6, 0x3]\n" + "\tlsrs r1, 4\n" + "\tlsls r1, 4\n" + "\tands r0, r3\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0xB]\n" + "\tldrb r0, [r6, 0x4]\n" + "\tstrb r0, [r5, 0x5]\n" + "\tldrb r0, [r6, 0x5]\n" + "\tstrb r0, [r5, 0x6]\n" + "\tldrb r0, [r6, 0x6]\n" + "\tstrb r0, [r5, 0x7]\n" + "\tldrb r0, [r6, 0x7]\n" + "\tstrb r0, [r5, 0x8]\n" + "\tldrb r0, [r6, 0x8]\n" + "\tstrb r0, [r5, 0x9]\n" + "\tldrb r0, [r6, 0x9]\n" + "\tstrb r0, [r5, 0xA]\n" + "\tldrh r0, [r6, 0xA]\n" + "\tstrh r0, [r5, 0x10]\n" + "\tldrh r0, [r6, 0xC]\n" + "\tstrh r0, [r5, 0x12]\n" + "\tldrb r0, [r6, 0xE]\n" + "\tstrb r0, [r5, 0x1D]\n" + "\tldrb r0, [r6, 0xF]\n" + "\tstrb r0, [r5, 0x1F]\n" + "\tldrb r0, [r6, 0x10]\n" + "\tadds r1, r5, 0\n" + "\tadds r1, 0x21\n" + "\tstrb r0, [r1]\n" + "\tldrb r0, [r6, 0x11]\n" + "\tadds r1, 0x1\n" + "\tstrb r0, [r1]\n" + "\tmovs r6, 0\n" + "\tmov r8, r7\n" + "\tmov r2, r12\n" + "\tadds r2, 0x1\n" + "\tstr r2, [sp, 0xC]\n" + "\tldrb r7, [r5, 0x8]\n" + "\tldr r3, [sp, 0x4]\n" + "\tmovs r0, 0xF\n" + "\tmov r9, r0\n" + "_0815A412:\n" + "\tldrb r1, [r3]\n" + "\tcmp r7, r1\n" + "\tbne _0815A444\n" + "\tldrh r0, [r3, 0x4]\n" + "\tadds r0, 0x7\n" + "\tstrh r0, [r5, 0xC]\n" + "\tldrh r0, [r3, 0x6]\n" + "\tadds r0, 0x7\n" + "\tstrh r0, [r5, 0xE]\n" + "\tldrb r1, [r3, 0xA]\n" + "\tlsls r1, 28\n" + "\tlsrs r1, 28\n" + "\tmov r2, r9\n" + "\tands r1, r2\n" + "\tldrb r0, [r5, 0x19]\n" + "\tands r0, r4\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0x19]\n" + "\tldrb r1, [r3, 0xA]\n" + "\tlsrs r1, 4\n" + "\tlsls r1, 4\n" + "\tmovs r2, 0xF\n" + "\tands r0, r2\n" + "\torrs r0, r1\n" + "\tstrb r0, [r5, 0x19]\n" + "_0815A444:\n" + "\tadds r3, 0x18\n" + "\tadds r6, 0x1\n" + "\tcmp r6, 0x3F\n" + "\tbls _0815A412\n" + "\tmov r0, r8\n" + "\tadd r0, r12\n" + "\tlsls r0, 2\n" + "\tldr r1, _0815A480 @ =gMapObjects\n" + "\tadds r6, r0, r1\n" + "\tmovs r2, 0x10\n" + "\tldrsh r0, [r6, r2]\n" + "\tmovs r2, 0x12\n" + "\tldrsh r1, [r6, r2]\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tstrb r0, [r6, 0x1E]\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tmovs r1, 0x10\n" + "\tldrsh r0, [r6, r1]\n" + "\tmovs r2, 0x12\n" + "\tldrsh r1, [r6, r2]\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A488\n" + "\tldrh r0, [r6, 0x10]\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tb _0815A506\n" + "\t.align 2, 0\n" + "_0815A480: .4byte gMapObjects\n" + "_0815A484: .4byte 0x01000120\n" + "_0815A488:\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tldrh r0, [r6, 0x10]\n" + "\tsubs r0, 0x1\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tmovs r2, 0x12\n" + "\tldrsh r1, [r6, r2]\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A4A8\n" + "\tldrh r0, [r6, 0x10]\n" + "\tsubs r0, 0x1\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tb _0815A506\n" + "_0815A4A8:\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tldrh r0, [r6, 0x10]\n" + "\tadds r0, 0x1\n" + "\tlsls r0, 16\n" + "\tasrs r0, 16\n" + "\tmovs r2, 0x12\n" + "\tldrsh r1, [r6, r2]\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A4C8\n" + "\tldrh r0, [r6, 0x10]\n" + "\tadds r0, 0x1\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tb _0815A506\n" + "_0815A4C8:\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tmovs r1, 0x10\n" + "\tldrsh r0, [r6, r1]\n" + "\tldrh r1, [r6, 0x12]\n" + "\tsubs r1, 0x1\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A4E8\n" + "\tldrh r0, [r6, 0x10]\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tsubs r0, 0x1\n" + "\tb _0815A506\n" + "_0815A4E8:\n" + "\tldrb r4, [r6, 0x1F]\n" + "\tmovs r2, 0x10\n" + "\tldrsh r0, [r6, r2]\n" + "\tldrh r1, [r6, 0x12]\n" + "\tadds r1, 0x1\n" + "\tlsls r1, 16\n" + "\tasrs r1, 16\n" + "\tbl MapGridGetMetatileBehaviorAt\n" + "\tcmp r4, r0\n" + "\tbne _0815A508\n" + "\tldrh r0, [r6, 0x10]\n" + "\tstrh r0, [r6, 0x14]\n" + "\tldrh r0, [r6, 0x12]\n" + "\tadds r0, 0x1\n" + "_0815A506:\n" + "\tstrh r0, [r6, 0x16]\n" + "_0815A508:\n" + "\tldr r0, [sp, 0xC]\n" + "\tmov r12, r0\n" + "\tcmp r0, 0xF\n" + "\tbhi _0815A512\n" + "\tb _0815A224\n" + "_0815A512:\n" + "\tldr r0, _0815A538 @ =gMapObjects\n" + "\tldr r1, _0815A53C @ =gSaveBlock1Ptr\n" + "\tldr r1, [r1]\n" + "\tmovs r2, 0xD4\n" + "\tlsls r2, 3\n" + "\tadds r1, r2\n" + "\tmovs r2, 0x90\n" + "\tlsls r2, 1\n" + "\tbl CpuSet\n" + "\tadd sp, 0x10\n" + "\tpop {r3-r5}\n" + "\tmov r8, r3\n" + "\tmov r9, r4\n" + "\tmov r10, r5\n" + "\tpop {r4-r7}\n" + "\tpop {r0}\n" + "\tbx r0\n" + "\t.align 2, 0\n" + "_0815A538: .4byte gMapObjects\n" + "_0815A53C: .4byte gSaveBlock1Ptr"); +} +#endif // NONMATCHING + +void sub_815A540(void) +{ + if (gUnknown_203ADFA == 2) + { + s16 x, y; + + PlayerGetDestCoords(&x, &y); + if (!MetatileBehavior_IsSurfable(MapGridGetMetatileBehaviorAt(x, y)) && TestPlayerAvatarFlags(0x08)) + { + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + SetPlayerAvatarTransitionFlags(0x01); + DestroySprite(&gSprites[mapObject->mapobj_unk_1A]); + } + } +} + +void sub_815A5BC(s32 a0) +{ + struct Padded_U8 data[2]; + data[0].value = 1; + data[1].value = a0; + sub_80F9E2C(data); +} + +u8 sub_815A5E8(s32 a0) +{ + u8 * r1; + if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + return 0; + r1 = (u8 *)&gRecvCmds[a0][1]; + if (r1[0] == 1) + return r1[4]; + return 0; +} diff --git a/sym_common.txt b/sym_common.txt index 6f47cb531..56536bda2 100644 --- a/sym_common.txt +++ b/sym_common.txt @@ -30,7 +30,7 @@ gUnknown_3003EBC: @ 3003EBC gUnknown_3003EC4: @ 3003EC4 .space 0xC -gUnknown_3003ED0: @ 3003ED0 +gRecvCmds: @ 3003ED0 .space 0x2 gUnknown_3003ED2: @ 3003ED2 |