through sub_815A5E8

This commit is contained in:
PikalaxALT 2019-05-12 15:51:22 -04:00
parent 210f875730
commit e08f10fd41
11 changed files with 631 additions and 611 deletions

View File

@ -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

View File

@ -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:

View File

@ -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

View File

@ -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:

View File

@ -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]

View File

@ -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:

View File

@ -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:

View File

@ -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;

View File

@ -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

View File

@ -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;
}

View File

@ -30,7 +30,7 @@ gUnknown_3003EBC: @ 3003EBC
gUnknown_3003EC4: @ 3003EC4
.space 0xC
gUnknown_3003ED0: @ 3003ED0
gRecvCmds: @ 3003ED0
.space 0x2
gUnknown_3003ED2: @ 3003ED2