Merge pull request #55 from PikalaxALT/unk_8159F40
Some more decomp and porting
This commit is contained in:
+4
-4
@@ -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
|
||||
|
||||
+3
-3
@@ -722,8 +722,8 @@ _0800F0BA:
|
||||
bx r1
|
||||
thumb_func_end sub_800F078
|
||||
|
||||
thumb_func_start sub_800F0C4
|
||||
sub_800F0C4: @ 800F0C4
|
||||
thumb_func_start GetDecompressedDataSize
|
||||
GetDecompressedDataSize: @ 800F0C4
|
||||
sub sp, 0x4
|
||||
mov r3, sp
|
||||
ldrb r2, [r0, 0x1]
|
||||
@@ -738,7 +738,7 @@ sub_800F0C4: @ 800F0C4
|
||||
ldr r0, [sp]
|
||||
add sp, 0x4
|
||||
bx lr
|
||||
thumb_func_end sub_800F0C4
|
||||
thumb_func_end GetDecompressedDataSize
|
||||
|
||||
thumb_func_start DecompressPicFromTable_DontHandleDeoxys
|
||||
DecompressPicFromTable_DontHandleDeoxys: @ 800F0E0
|
||||
|
||||
@@ -0,0 +1,734 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_815A61C
|
||||
sub_815A61C: @ 815A61C
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x20
|
||||
ldr r4, [sp, 0x48]
|
||||
lsls r4, 24
|
||||
str r4, [sp, 0x1C]
|
||||
movs r4, 0x14
|
||||
adds r4, r0
|
||||
mov r9, r4
|
||||
mov r5, sp
|
||||
movs r4, 0x2
|
||||
strb r4, [r5]
|
||||
mov r10, sp
|
||||
mov r5, r9
|
||||
ldrb r4, [r5, 0xB]
|
||||
movs r7, 0xF
|
||||
adds r5, r7, 0
|
||||
ands r5, r4
|
||||
mov r6, r10
|
||||
ldrb r6, [r6, 0x1]
|
||||
mov r8, r6
|
||||
movs r4, 0x10
|
||||
negs r4, r4
|
||||
mov r6, r8
|
||||
ands r4, r6
|
||||
orrs r4, r5
|
||||
mov r5, r10
|
||||
strb r4, [r5, 0x1]
|
||||
mov r8, sp
|
||||
mov r6, r9
|
||||
ldrb r5, [r6, 0xC]
|
||||
lsls r5, 4
|
||||
ands r4, r7
|
||||
orrs r4, r5
|
||||
mov r5, r8
|
||||
strb r4, [r5, 0x1]
|
||||
ldrb r5, [r6, 0xD]
|
||||
movs r6, 0xF
|
||||
ands r5, r6
|
||||
mov r4, r10
|
||||
ldrb r4, [r4, 0x2]
|
||||
mov r8, r4
|
||||
movs r4, 0x10
|
||||
negs r4, r4
|
||||
mov r6, r8
|
||||
ands r4, r6
|
||||
orrs r4, r5
|
||||
mov r5, r10
|
||||
strb r4, [r5, 0x2]
|
||||
mov r8, sp
|
||||
mov r6, r9
|
||||
ldrb r5, [r6, 0xE]
|
||||
lsls r5, 4
|
||||
ands r4, r7
|
||||
orrs r4, r5
|
||||
mov r5, r8
|
||||
strb r4, [r5, 0x2]
|
||||
ldrb r5, [r6, 0xF]
|
||||
movs r6, 0xF
|
||||
ands r5, r6
|
||||
mov r4, r10
|
||||
ldrb r4, [r4, 0x3]
|
||||
mov r8, r4
|
||||
movs r4, 0x10
|
||||
negs r4, r4
|
||||
mov r6, r8
|
||||
ands r4, r6
|
||||
orrs r4, r5
|
||||
mov r5, r10
|
||||
strb r4, [r5, 0x3]
|
||||
mov r8, sp
|
||||
mov r6, r9
|
||||
ldrb r5, [r6, 0x10]
|
||||
lsls r5, 4
|
||||
ands r4, r7
|
||||
orrs r4, r5
|
||||
mov r5, r8
|
||||
strb r4, [r5, 0x3]
|
||||
ldrb r5, [r6, 0x11]
|
||||
movs r6, 0xF
|
||||
ands r5, r6
|
||||
mov r4, r10
|
||||
ldrb r4, [r4, 0x4]
|
||||
mov r8, r4
|
||||
movs r4, 0x10
|
||||
negs r4, r4
|
||||
mov r6, r8
|
||||
ands r4, r6
|
||||
orrs r4, r5
|
||||
mov r5, r10
|
||||
strb r4, [r5, 0x4]
|
||||
mov r8, sp
|
||||
mov r6, r9
|
||||
ldrb r5, [r6, 0x12]
|
||||
lsls r5, 4
|
||||
ands r4, r7
|
||||
orrs r4, r5
|
||||
mov r5, r8
|
||||
strb r4, [r5, 0x4]
|
||||
ldrb r4, [r6, 0x13]
|
||||
movs r6, 0xF
|
||||
ands r4, r6
|
||||
mov r6, r8
|
||||
ldrb r5, [r6, 0x5]
|
||||
movs r6, 0x10
|
||||
negs r6, r6
|
||||
ands r6, r5
|
||||
orrs r6, r4
|
||||
str r6, [sp, 0xC]
|
||||
mov r4, r8
|
||||
strb r6, [r4, 0x5]
|
||||
mov r5, sp
|
||||
mov r6, r9
|
||||
ldrb r4, [r6, 0x14]
|
||||
lsls r4, 4
|
||||
ldr r6, [sp, 0xC]
|
||||
ands r6, r7
|
||||
orrs r6, r4
|
||||
strb r6, [r5, 0x5]
|
||||
mov r7, sp
|
||||
movs r4, 0x3
|
||||
mov r8, r4
|
||||
ldrb r0, [r0, 0x14]
|
||||
mov r5, r8
|
||||
ands r0, r5
|
||||
ldrb r5, [r7, 0x6]
|
||||
movs r6, 0x4
|
||||
negs r6, r6
|
||||
mov r10, r6
|
||||
mov r4, r10
|
||||
ands r4, r5
|
||||
orrs r4, r0
|
||||
strb r4, [r7, 0x6]
|
||||
mov r5, r9
|
||||
ldrb r0, [r5, 0x1]
|
||||
mov r6, r8
|
||||
ands r0, r6
|
||||
lsls r0, 2
|
||||
movs r5, 0xD
|
||||
negs r5, r5
|
||||
ands r5, r4
|
||||
orrs r5, r0
|
||||
strb r5, [r7, 0x6]
|
||||
mov r0, r9
|
||||
ldrb r4, [r0, 0x2]
|
||||
ands r4, r6
|
||||
lsls r4, 4
|
||||
movs r0, 0x31
|
||||
negs r0, r0
|
||||
ands r0, r5
|
||||
orrs r0, r4
|
||||
strb r0, [r7, 0x6]
|
||||
mov r5, sp
|
||||
mov r6, r9
|
||||
ldrb r4, [r6, 0x3]
|
||||
lsls r4, 6
|
||||
movs r6, 0x3F
|
||||
ands r0, r6
|
||||
orrs r0, r4
|
||||
strb r0, [r5, 0x6]
|
||||
mov r4, r9
|
||||
ldrb r0, [r4, 0x4]
|
||||
mov r5, r8
|
||||
ands r0, r5
|
||||
ldrb r5, [r7, 0x7]
|
||||
mov r4, r10
|
||||
ands r4, r5
|
||||
orrs r4, r0
|
||||
strb r4, [r7, 0x7]
|
||||
mov r6, r9
|
||||
ldrb r0, [r6, 0x5]
|
||||
mov r5, r8
|
||||
ands r0, r5
|
||||
lsls r0, 2
|
||||
movs r5, 0xD
|
||||
negs r5, r5
|
||||
ands r5, r4
|
||||
orrs r5, r0
|
||||
strb r5, [r7, 0x7]
|
||||
ldrb r4, [r6, 0x6]
|
||||
mov r6, r8
|
||||
ands r4, r6
|
||||
lsls r4, 4
|
||||
movs r0, 0x31
|
||||
negs r0, r0
|
||||
ands r0, r5
|
||||
orrs r0, r4
|
||||
strb r0, [r7, 0x7]
|
||||
mov r5, sp
|
||||
mov r6, r9
|
||||
ldrb r4, [r6, 0x7]
|
||||
lsls r4, 6
|
||||
movs r6, 0x3F
|
||||
ands r0, r6
|
||||
orrs r0, r4
|
||||
strb r0, [r5, 0x7]
|
||||
mov r8, sp
|
||||
mov r0, r9
|
||||
ldrb r4, [r0, 0x8]
|
||||
movs r7, 0x3
|
||||
adds r0, r7, 0
|
||||
ands r0, r4
|
||||
mov r4, r8
|
||||
ldrb r5, [r4, 0x8]
|
||||
mov r4, r10
|
||||
ands r4, r5
|
||||
orrs r4, r0
|
||||
mov r5, r8
|
||||
strb r4, [r5, 0x8]
|
||||
mov r6, r9
|
||||
ldrb r5, [r6, 0x9]
|
||||
adds r0, r7, 0
|
||||
ands r0, r5
|
||||
lsls r0, 2
|
||||
movs r5, 0xD
|
||||
negs r5, r5
|
||||
ands r5, r4
|
||||
orrs r5, r0
|
||||
mov r0, r8
|
||||
strb r5, [r0, 0x8]
|
||||
ldrb r0, [r1]
|
||||
adds r4, r7, 0
|
||||
ands r4, r0
|
||||
lsls r4, 4
|
||||
movs r0, 0x31
|
||||
negs r0, r0
|
||||
ands r0, r5
|
||||
orrs r0, r4
|
||||
mov r4, r8
|
||||
strb r0, [r4, 0x8]
|
||||
mov r5, sp
|
||||
ldrb r4, [r2]
|
||||
lsls r4, 6
|
||||
movs r6, 0x3F
|
||||
ands r0, r6
|
||||
orrs r0, r4
|
||||
strb r0, [r5, 0x8]
|
||||
ldrb r4, [r3]
|
||||
adds r0, r7, 0
|
||||
ands r0, r4
|
||||
ldrb r4, [r5, 0x9]
|
||||
mov r6, r10
|
||||
ands r6, r4
|
||||
orrs r6, r0
|
||||
mov r10, r6
|
||||
strb r6, [r5, 0x9]
|
||||
ldr r0, [sp, 0x40]
|
||||
ldrb r4, [r0]
|
||||
adds r0, r7, 0
|
||||
ands r0, r4
|
||||
lsls r0, 2
|
||||
movs r4, 0xD
|
||||
negs r4, r4
|
||||
ands r6, r4
|
||||
orrs r6, r0
|
||||
str r6, [sp, 0x10]
|
||||
strb r6, [r5, 0x9]
|
||||
mov r4, sp
|
||||
ldr r5, [sp, 0x44]
|
||||
ldrb r0, [r5]
|
||||
adds r6, r7, 0
|
||||
ands r6, r0
|
||||
lsls r0, r6, 4
|
||||
subs r7, 0x34
|
||||
ldr r5, [sp, 0x10]
|
||||
ands r7, r5
|
||||
orrs r7, r0
|
||||
strb r7, [r4, 0x9]
|
||||
mov r5, sp
|
||||
ldrb r0, [r1, 0x4]
|
||||
movs r6, 0x1
|
||||
mov r12, r6
|
||||
mov r4, r12
|
||||
ands r4, r0
|
||||
lsls r4, 6
|
||||
movs r0, 0x41
|
||||
negs r0, r0
|
||||
mov r10, r0
|
||||
ands r0, r7
|
||||
orrs r0, r4
|
||||
strb r0, [r5, 0x9]
|
||||
ldrb r4, [r2, 0x4]
|
||||
lsls r4, 7
|
||||
movs r5, 0x7F
|
||||
ands r0, r5
|
||||
orrs r0, r4
|
||||
mov r4, r8
|
||||
strb r0, [r4, 0x9]
|
||||
ldrb r4, [r3, 0x4]
|
||||
mov r0, r12
|
||||
ands r0, r4
|
||||
mov r5, r8
|
||||
ldrb r4, [r5, 0xA]
|
||||
movs r7, 0x2
|
||||
negs r7, r7
|
||||
adds r5, r7, 0
|
||||
ands r5, r4
|
||||
orrs r5, r0
|
||||
mov r6, r8
|
||||
strb r5, [r6, 0xA]
|
||||
mov r9, sp
|
||||
ldr r4, [sp, 0x40]
|
||||
ldrb r0, [r4, 0x4]
|
||||
mov r4, r12
|
||||
ands r4, r0
|
||||
lsls r4, 1
|
||||
movs r6, 0x3
|
||||
negs r6, r6
|
||||
mov r8, r6
|
||||
mov r0, r8
|
||||
ands r0, r5
|
||||
orrs r0, r4
|
||||
mov r4, r9
|
||||
strb r0, [r4, 0xA]
|
||||
ldr r6, [sp, 0x44]
|
||||
ldrb r5, [r6, 0x4]
|
||||
mov r4, r12
|
||||
ands r4, r5
|
||||
lsls r4, 2
|
||||
movs r5, 0x5
|
||||
negs r5, r5
|
||||
ands r0, r5
|
||||
orrs r0, r4
|
||||
mov r4, r9
|
||||
strb r0, [r4, 0xA]
|
||||
mov r4, sp
|
||||
ldrb r1, [r1, 0x8]
|
||||
mov r0, r12
|
||||
ands r0, r1
|
||||
lsls r0, 2
|
||||
ldrb r1, [r4, 0xB]
|
||||
ands r5, r1
|
||||
orrs r5, r0
|
||||
strb r5, [r4, 0xB]
|
||||
ldrb r1, [r2, 0x8]
|
||||
mov r0, r12
|
||||
ands r0, r1
|
||||
lsls r0, 3
|
||||
movs r1, 0x9
|
||||
negs r1, r1
|
||||
ands r1, r5
|
||||
orrs r1, r0
|
||||
strb r1, [r4, 0xB]
|
||||
ldrb r2, [r3, 0x8]
|
||||
mov r0, r12
|
||||
ands r0, r2
|
||||
lsls r0, 4
|
||||
movs r2, 0x11
|
||||
negs r2, r2
|
||||
ands r2, r1
|
||||
orrs r2, r0
|
||||
strb r2, [r4, 0xB]
|
||||
mov r3, sp
|
||||
ldr r5, [sp, 0x40]
|
||||
ldrb r0, [r5, 0x8]
|
||||
mov r1, r12
|
||||
ands r1, r0
|
||||
lsls r1, 5
|
||||
movs r0, 0x21
|
||||
negs r0, r0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r3, 0xB]
|
||||
mov r2, sp
|
||||
ldrb r1, [r6, 0x8]
|
||||
mov r6, r12
|
||||
ands r6, r1
|
||||
lsls r1, r6, 6
|
||||
mov r3, r10
|
||||
ands r0, r3
|
||||
orrs r0, r1
|
||||
strb r0, [r2, 0xB]
|
||||
ldr r4, [sp, 0x1C]
|
||||
lsrs r3, r4, 21
|
||||
ldrb r1, [r2, 0xA]
|
||||
movs r0, 0x7
|
||||
ands r0, r1
|
||||
orrs r0, r3
|
||||
strb r0, [r2, 0xA]
|
||||
mov r1, sp
|
||||
ldr r5, [sp, 0x4C]
|
||||
movs r6, 0x1
|
||||
ands r5, r6
|
||||
lsls r2, r5, 1
|
||||
ldrb r0, [r1, 0xB]
|
||||
mov r3, r8
|
||||
ands r3, r0
|
||||
orrs r3, r2
|
||||
mov r8, r3
|
||||
strb r3, [r1, 0xB]
|
||||
mov r0, sp
|
||||
ldr r4, [sp, 0x50]
|
||||
ands r4, r6
|
||||
mov r5, r8
|
||||
ands r5, r7
|
||||
orrs r5, r4
|
||||
strb r5, [r0, 0xB]
|
||||
bl sub_80F9E2C
|
||||
add sp, 0x20
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_815A61C
|
||||
|
||||
thumb_func_start sub_815A950
|
||||
sub_815A950: @ 815A950
|
||||
push {r4-r7,lr}
|
||||
mov r7, r9
|
||||
mov r6, r8
|
||||
push {r6,r7}
|
||||
adds r7, r1, 0
|
||||
adds r5, r2, 0
|
||||
adds r6, r3, 0
|
||||
ldr r0, [sp, 0x1C]
|
||||
mov r12, r0
|
||||
ldr r1, [sp, 0x20]
|
||||
mov r8, r1
|
||||
ldr r0, [sp, 0x24]
|
||||
mov r9, r0
|
||||
adds r2, r7, 0
|
||||
adds r2, 0x14
|
||||
ldr r4, _0815A98C @ =gRecvCmds
|
||||
ldrh r0, [r4]
|
||||
movs r1, 0xFF
|
||||
lsls r1, 8
|
||||
ands r1, r0
|
||||
movs r0, 0xBC
|
||||
lsls r0, 6
|
||||
cmp r1, r0
|
||||
bne _0815A988
|
||||
adds r3, r4, 0x2
|
||||
ldrb r0, [r4, 0x2]
|
||||
cmp r0, 0x2
|
||||
beq _0815A990
|
||||
_0815A988:
|
||||
movs r0, 0
|
||||
b _0815AACA
|
||||
.align 2, 0
|
||||
_0815A98C: .4byte gRecvCmds
|
||||
_0815A990:
|
||||
ldrb r0, [r3, 0x1]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
strb r0, [r2, 0xB]
|
||||
ldrb r0, [r3, 0x1]
|
||||
lsrs r0, 4
|
||||
strb r0, [r2, 0xC]
|
||||
ldrb r0, [r3, 0x2]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
strb r0, [r2, 0xD]
|
||||
ldrb r0, [r3, 0x2]
|
||||
lsrs r0, 4
|
||||
strb r0, [r2, 0xE]
|
||||
ldrb r0, [r3, 0x3]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
strb r0, [r2, 0xF]
|
||||
ldrb r0, [r3, 0x3]
|
||||
lsrs r0, 4
|
||||
strb r0, [r2, 0x10]
|
||||
ldrb r0, [r3, 0x4]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
strb r0, [r2, 0x11]
|
||||
ldrb r0, [r3, 0x4]
|
||||
lsrs r0, 4
|
||||
strb r0, [r2, 0x12]
|
||||
ldrb r0, [r3, 0x5]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
strb r0, [r2, 0x13]
|
||||
ldrb r0, [r3, 0x5]
|
||||
lsrs r0, 4
|
||||
strb r0, [r2, 0x14]
|
||||
ldrb r0, [r3, 0x1]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
strb r0, [r2, 0x15]
|
||||
ldrb r0, [r3, 0x6]
|
||||
lsls r0, 30
|
||||
lsrs r0, 30
|
||||
strb r0, [r7, 0x14]
|
||||
ldrb r0, [r3, 0x6]
|
||||
lsls r0, 28
|
||||
lsrs r0, 30
|
||||
strb r0, [r2, 0x1]
|
||||
ldrb r0, [r3, 0x6]
|
||||
lsls r0, 26
|
||||
lsrs r0, 30
|
||||
strb r0, [r2, 0x2]
|
||||
ldrb r0, [r3, 0x6]
|
||||
lsrs r0, 6
|
||||
strb r0, [r2, 0x3]
|
||||
ldrb r0, [r3, 0x7]
|
||||
lsls r0, 30
|
||||
lsrs r0, 30
|
||||
strb r0, [r2, 0x4]
|
||||
ldrb r0, [r3, 0x7]
|
||||
lsls r0, 28
|
||||
lsrs r0, 30
|
||||
strb r0, [r2, 0x5]
|
||||
ldrb r0, [r3, 0x7]
|
||||
lsls r0, 26
|
||||
lsrs r0, 30
|
||||
strb r0, [r2, 0x6]
|
||||
ldrb r0, [r3, 0x7]
|
||||
lsrs r0, 6
|
||||
strb r0, [r2, 0x7]
|
||||
ldrb r0, [r3, 0x8]
|
||||
lsls r0, 30
|
||||
lsrs r0, 30
|
||||
strb r0, [r2, 0x8]
|
||||
ldrb r0, [r3, 0x8]
|
||||
lsls r0, 28
|
||||
lsrs r0, 30
|
||||
strb r0, [r2, 0x9]
|
||||
ldrb r0, [r3, 0x6]
|
||||
lsls r0, 30
|
||||
lsrs r0, 30
|
||||
strb r0, [r2, 0xA]
|
||||
ldrb r0, [r3, 0x8]
|
||||
lsls r0, 26
|
||||
lsrs r0, 30
|
||||
strb r0, [r5]
|
||||
ldrb r0, [r3, 0x9]
|
||||
lsls r0, 25
|
||||
lsrs r0, 31
|
||||
strb r0, [r5, 0x4]
|
||||
ldrb r0, [r3, 0xB]
|
||||
lsls r0, 29
|
||||
lsrs r0, 31
|
||||
strb r0, [r5, 0x8]
|
||||
ldrb r0, [r3, 0x8]
|
||||
lsrs r0, 6
|
||||
strb r0, [r6]
|
||||
ldrb r0, [r3, 0x9]
|
||||
lsrs r0, 7
|
||||
strb r0, [r6, 0x4]
|
||||
ldrb r0, [r3, 0xB]
|
||||
lsls r0, 28
|
||||
lsrs r0, 31
|
||||
strb r0, [r6, 0x8]
|
||||
ldrb r0, [r3, 0x9]
|
||||
lsls r0, 30
|
||||
lsrs r0, 30
|
||||
mov r1, r12
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r3, 0xA]
|
||||
lsls r0, 31
|
||||
lsrs r0, 31
|
||||
strb r0, [r1, 0x4]
|
||||
ldrb r0, [r3, 0xB]
|
||||
lsls r0, 27
|
||||
lsrs r0, 31
|
||||
strb r0, [r1, 0x8]
|
||||
ldrb r0, [r3, 0x9]
|
||||
lsls r0, 28
|
||||
lsrs r0, 30
|
||||
mov r1, r8
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r3, 0xA]
|
||||
lsls r0, 30
|
||||
lsrs r0, 31
|
||||
strb r0, [r1, 0x4]
|
||||
ldrb r0, [r3, 0xB]
|
||||
lsls r0, 26
|
||||
lsrs r0, 31
|
||||
strb r0, [r1, 0x8]
|
||||
ldrb r0, [r3, 0x9]
|
||||
lsls r0, 26
|
||||
lsrs r0, 30
|
||||
mov r1, r9
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r3, 0xA]
|
||||
lsls r0, 29
|
||||
lsrs r0, 31
|
||||
strb r0, [r1, 0x4]
|
||||
ldrb r0, [r3, 0xB]
|
||||
lsls r0, 25
|
||||
lsrs r0, 31
|
||||
strb r0, [r1, 0x8]
|
||||
ldrb r0, [r3, 0xA]
|
||||
lsrs r0, 3
|
||||
ldr r1, [sp, 0x28]
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r3, 0xB]
|
||||
lsls r0, 30
|
||||
lsrs r0, 31
|
||||
ldr r1, [sp, 0x2C]
|
||||
str r0, [r1]
|
||||
ldrb r0, [r3, 0xB]
|
||||
lsls r0, 31
|
||||
lsrs r0, 31
|
||||
ldr r1, [sp, 0x30]
|
||||
str r0, [r1]
|
||||
movs r0, 0x1
|
||||
_0815AACA:
|
||||
pop {r3,r4}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_815A950
|
||||
|
||||
thumb_func_start sub_815AAD8
|
||||
sub_815AAD8: @ 815AAD8
|
||||
push {lr}
|
||||
sub sp, 0x8
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r3, _0815AB00 @ =0xffffff00
|
||||
ldr r1, [sp]
|
||||
ands r1, r3
|
||||
movs r2, 0x3
|
||||
orrs r1, r2
|
||||
str r1, [sp]
|
||||
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
|
||||
_0815AB00: .4byte 0xffffff00
|
||||
thumb_func_end sub_815AAD8
|
||||
|
||||
thumb_func_start sub_815AB04
|
||||
sub_815AB04: @ 815AB04
|
||||
push {r4,lr}
|
||||
adds r2, r0, 0
|
||||
adds r4, r1, 0
|
||||
ldr r3, _0815AB2C @ =gRecvCmds
|
||||
ldrh r0, [r3]
|
||||
movs r1, 0xFF
|
||||
lsls r1, 8
|
||||
ands r1, r0
|
||||
movs r0, 0xBC
|
||||
lsls r0, 6
|
||||
cmp r1, r0
|
||||
bne _0815AB28
|
||||
lsls r0, r2, 4
|
||||
adds r1, r3, 0x2
|
||||
adds r1, r0, r1
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x3
|
||||
beq _0815AB30
|
||||
_0815AB28:
|
||||
movs r0, 0
|
||||
b _0815AB36
|
||||
.align 2, 0
|
||||
_0815AB2C: .4byte gRecvCmds
|
||||
_0815AB30:
|
||||
ldrb r0, [r1, 0x4]
|
||||
strb r0, [r4]
|
||||
movs r0, 0x1
|
||||
_0815AB36:
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_815AB04
|
||||
|
||||
thumb_func_start sub_815AB3C
|
||||
sub_815AB3C: @ 815AB3C
|
||||
push {lr}
|
||||
sub sp, 0x8
|
||||
ldr r2, _0815AB5C @ =0xffffff00
|
||||
ldr r1, [sp]
|
||||
ands r1, r2
|
||||
movs r2, 0x4
|
||||
orrs r1, r2
|
||||
str r1, [sp]
|
||||
str r0, [sp, 0x4]
|
||||
mov r0, sp
|
||||
bl sub_80F9E2C
|
||||
add sp, 0x8
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0815AB5C: .4byte 0xffffff00
|
||||
thumb_func_end sub_815AB3C
|
||||
|
||||
thumb_func_start sub_815AB60
|
||||
sub_815AB60: @ 815AB60
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
ldr r3, _0815AB88 @ =gRecvCmds
|
||||
ldrh r0, [r3]
|
||||
movs r1, 0xFF
|
||||
lsls r1, 8
|
||||
ands r1, r0
|
||||
movs r0, 0xBC
|
||||
lsls r0, 6
|
||||
cmp r1, r0
|
||||
bne _0815AB82
|
||||
lsls r0, r2, 4
|
||||
adds r1, r3, 0x2
|
||||
adds r1, r0, r1
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0x4
|
||||
beq _0815AB8C
|
||||
_0815AB82:
|
||||
movs r0, 0
|
||||
b _0815AB8E
|
||||
.align 2, 0
|
||||
_0815AB88: .4byte gRecvCmds
|
||||
_0815AB8C:
|
||||
ldr r0, [r1, 0x4]
|
||||
_0815AB8E:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_815AB60
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
+15
-15
@@ -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:
|
||||
|
||||
+26
-26
@@ -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
|
||||
|
||||
|
||||
+4
-4
@@ -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:
|
||||
|
||||
+2
-2
@@ -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]
|
||||
|
||||
@@ -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:
|
||||
|
||||
-1623
File diff suppressed because it is too large
Load Diff
-1314
File diff suppressed because it is too large
Load Diff
+5
-2
@@ -256,8 +256,11 @@ gUnknown_84795B8:: @ 84795B8
|
||||
gUnknown_84795C8:: @ 84795C8
|
||||
.incbin "baserom.gba", 0x4795C8, 0x90
|
||||
|
||||
gUnknown_8479658:: @ 8479658
|
||||
.incbin "baserom.gba", 0x479658, 0x600
|
||||
.section .rodata.8479668
|
||||
|
||||
.align 2
|
||||
gUnknown_8479668:: @ 8479668
|
||||
.incbin "baserom.gba", 0x479668, 0x5F0
|
||||
|
||||
gUnknown_8479C58:: @ 8479C58
|
||||
.incbin "baserom.gba", 0x479C58, 0x30
|
||||
|
||||
@@ -36,5 +36,6 @@ void LoadSpecialPokePic_DontHandleDeoxys(const struct CompressedSpriteSheet *src
|
||||
u32 sub_8034974(const u8 *ptr);
|
||||
|
||||
void sub_800F034(const struct CompressedSpriteSheet *src);
|
||||
u32 GetDecompressedDataSize(const u8 *ptr);
|
||||
|
||||
#endif // GUARD_DECOMPRESS_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;
|
||||
|
||||
+44
-7
@@ -565,6 +565,12 @@ typedef union QuestLogScene QuestLogScene;
|
||||
|
||||
// This name is a complete guess and may change.
|
||||
|
||||
#define MAP_OBJECTS_COUNT 16
|
||||
#define BERRY_TREES_COUNT 128
|
||||
#define FLAGS_COUNT 288 // 300
|
||||
#define VARS_COUNT 256
|
||||
#define MAIL_COUNT 16
|
||||
|
||||
// Declare here so that it can be recursively referenced.
|
||||
union QuestLogMovement;
|
||||
|
||||
@@ -578,6 +584,43 @@ union QuestLogMovement
|
||||
} ident_struct;
|
||||
};
|
||||
|
||||
struct QuestLogMapObject
|
||||
{
|
||||
/*0x00*/ u8 active:1;
|
||||
/*0x00*/ u8 mapobj_bit_3:1;
|
||||
/*0x00*/ u8 mapobj_bit_4:1;
|
||||
/*0x00*/ u8 mapobj_bit_5:1;
|
||||
/*0x00*/ u8 mapobj_bit_8:1;
|
||||
/*0x00*/ u8 mapobj_bit_9:1;
|
||||
/*0x00*/ u8 mapobj_bit_10:1;
|
||||
/*0x00*/ u8 mapobj_bit_11:1;
|
||||
/*0x01*/ u8 mapobj_bit_12:1;
|
||||
/*0x01*/ u8 mapobj_bit_13:1;
|
||||
/*0x01*/ u8 mapobj_bit_14:1;
|
||||
/*0x01*/ u8 mapobj_bit_15:1;
|
||||
/*0x01*/ u8 mapobj_bit_16:1;
|
||||
/*0x01*/ u8 mapobj_bit_23:1;
|
||||
/*0x01*/ u8 mapobj_bit_24:1;
|
||||
/*0x01*/ u8 mapobj_bit_25:1;
|
||||
/*0x02*/ u8 mapobj_bit_26:1;
|
||||
/*0x02*/ u8 mapobj_unk_18:4;
|
||||
/*0x02*/ u8 unused_02_5:3;
|
||||
/*0x03*/ u8 mapobj_unk_0B_0:4;
|
||||
/*0x03*/ u8 elevation:4;
|
||||
/*0x04*/ u8 graphicsId;
|
||||
/*0x05*/ u8 animPattern;
|
||||
/*0x06*/ u8 trainerType;
|
||||
/*0x07*/ u8 localId;
|
||||
/*0x08*/ u8 mapNum;
|
||||
/*0x09*/ u8 mapGroup;
|
||||
/*0x0a*/ s16 x;
|
||||
/*0x0c*/ s16 y;
|
||||
/*0x0e*/ u8 trainerRange_berryTreeId;
|
||||
/*0x0f*/ u8 mapobj_unk_1F;
|
||||
/*0x10*/ u8 mapobj_unk_21;
|
||||
/*0x11*/ u8 animId;
|
||||
};
|
||||
|
||||
struct QuestLog
|
||||
{
|
||||
/*0x0000*/ u8 unk_000;
|
||||
@@ -586,7 +629,7 @@ struct QuestLog
|
||||
/*0x0003*/ s8 unk_003;
|
||||
/*0x0004*/ s16 unk_004;
|
||||
/*0x0006*/ s16 unk_006;
|
||||
/*0x0008*/ u8 filler_008[0x140];
|
||||
/*0x0008*/ struct QuestLogMapObject unk_008[MAP_OBJECTS_COUNT];
|
||||
|
||||
// These arrays hold the game state for
|
||||
// playing back the quest log
|
||||
@@ -606,12 +649,6 @@ struct FameCheckerSaveData
|
||||
u16 unk_0_E:2;
|
||||
};
|
||||
|
||||
#define MAP_OBJECTS_COUNT 16
|
||||
#define BERRY_TREES_COUNT 128
|
||||
#define FLAGS_COUNT 288 // 300
|
||||
#define VARS_COUNT 256
|
||||
#define MAIL_COUNT 16
|
||||
|
||||
#define NUM_EASY_CHAT_EXTRA_PHRASES 33
|
||||
#define EASY_CHAT_EXTRA_PHRASES_SIZE ((NUM_EASY_CHAT_EXTRA_PHRASES >> 3) + (NUM_EASY_CHAT_EXTRA_PHRASES % 8 ? 1 : 0))
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -0,0 +1,24 @@
|
||||
#ifndef GUARD_UNK_815C980_H
|
||||
#define GUARD_UNK_815C980_H
|
||||
|
||||
struct UnkStruct3
|
||||
{
|
||||
u8 field_0_0:2;
|
||||
u8 shape:2;
|
||||
u8 size:2;
|
||||
u8 priority:2;
|
||||
u8 field_1;
|
||||
u8 xDelta;
|
||||
s16 x;
|
||||
s16 y;
|
||||
const struct SpriteSheet *spriteSheet;
|
||||
const struct SpritePalette *spritePal;
|
||||
};
|
||||
|
||||
void sub_815C9F4(void);
|
||||
void sub_815D108(u32 id);
|
||||
void sub_815CD70(u32 id, s32 arg1);
|
||||
u8 sub_815D324(u32 shape, u32 size);
|
||||
bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2);
|
||||
|
||||
#endif //GUARD_UNK_815C980_H
|
||||
+7
-3
@@ -257,10 +257,12 @@ SECTIONS {
|
||||
src/quest_log_8150454.o(.text);
|
||||
asm/dodrio_berry_picking.o(.text);
|
||||
asm/battle_controller_pokedude.o(.text);
|
||||
asm/unk_8159F40.o(.text);
|
||||
src/unk_8159F40.o(.text);
|
||||
src/dodrio_berry_picking_2.o(.text);
|
||||
asm/dodrio_berry_picking_2.o(.text);
|
||||
asm/teachy_tv.o(.text);
|
||||
asm/unk_815C27C.o(.text);
|
||||
asm/unk_815C980.o(.text);
|
||||
asm/ereader_helpers.o(.text);
|
||||
src/unk_815C980.o(.text);
|
||||
asm/ss_anne.o(.text);
|
||||
asm/cereader_tool.o(.text);
|
||||
src/trainer_tower.o(.text);
|
||||
@@ -426,6 +428,8 @@ SECTIONS {
|
||||
data/data_8468C98.o(.rodata);
|
||||
src/quest_log_8150454.o(.rodata);
|
||||
data/data_8471F00.o(.rodata);
|
||||
src/unk_815C980.o(.rodata);
|
||||
data/data_8471F00.o(.rodata.8479668);
|
||||
src/trainer_tower.o(.rodata);
|
||||
data/data_8471F00.o(.rodata.after_trainer_tower);
|
||||
src/mystery_event_msg.o(.rodata);
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
#include "global.h"
|
||||
#include "link.h"
|
||||
#include "link_rfu.h"
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,622 @@
|
||||
#include "global.h"
|
||||
#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
|
||||
{
|
||||
u8 field_0;
|
||||
u8 field_1;
|
||||
u16 field_2;
|
||||
u16 field_4[4];
|
||||
u8 field_C;
|
||||
u8 field_D;
|
||||
};
|
||||
|
||||
extern const struct UnkStruct_84792D0 *const gUnknown_84792D0[];
|
||||
|
||||
void sub_8159F40(void)
|
||||
{
|
||||
s32 i, j;
|
||||
struct Pokemon *mon;
|
||||
s32 myIdx = 0;
|
||||
s32 opIdx = 0;
|
||||
const struct UnkStruct_84792D0 * data;
|
||||
|
||||
gBattleTypeFlags = BATTLE_TYPE_DOME;
|
||||
ZeroPlayerPartyMons();
|
||||
ZeroEnemyPartyMons();
|
||||
data = gUnknown_84792D0[gSpecialVar_0x8004];
|
||||
|
||||
i = 0;
|
||||
do
|
||||
{
|
||||
if (data[i].field_0 == 0)
|
||||
{
|
||||
mon = &gPlayerParty[myIdx];
|
||||
myIdx++;
|
||||
}
|
||||
else
|
||||
{
|
||||
mon = &gEnemyParty[opIdx];
|
||||
opIdx++;
|
||||
}
|
||||
CreateMonWithGenderNatureLetter(mon, data[i].field_2, data[i].field_1, 0, data[i].field_D, data[i].field_C, 0);
|
||||
for (j = 0; j < 4; j++)
|
||||
{
|
||||
SetMonMoveSlot(mon, data[i].field_4[j], j);
|
||||
}
|
||||
i++;
|
||||
} while (data[i].field_0 != 0xFF);
|
||||
}
|
||||
|
||||
void sub_815A008(struct QuestLog * questLog)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < MAP_OBJECTS_COUNT; i++)
|
||||
{
|
||||
questLog->unk_008[i].active = gMapObjects[i].active;
|
||||
questLog->unk_008[i].mapobj_bit_3 = gMapObjects[i].mapobj_bit_3;
|
||||
questLog->unk_008[i].mapobj_bit_4 = gMapObjects[i].mapobj_bit_4;
|
||||
questLog->unk_008[i].mapobj_bit_5 = gMapObjects[i].mapobj_bit_5;
|
||||
questLog->unk_008[i].mapobj_bit_8 = gMapObjects[i].mapobj_bit_8;
|
||||
questLog->unk_008[i].mapobj_bit_9 = gMapObjects[i].mapobj_bit_9;
|
||||
questLog->unk_008[i].mapobj_bit_10 = gMapObjects[i].mapobj_bit_10;
|
||||
questLog->unk_008[i].mapobj_bit_11 = gMapObjects[i].mapobj_bit_11;
|
||||
questLog->unk_008[i].mapobj_bit_12 = gMapObjects[i].mapobj_bit_12;
|
||||
questLog->unk_008[i].mapobj_bit_13 = gMapObjects[i].mapobj_bit_13;
|
||||
questLog->unk_008[i].mapobj_bit_14 = gMapObjects[i].mapobj_bit_14;
|
||||
questLog->unk_008[i].mapobj_bit_15 = gMapObjects[i].mapobj_bit_15;
|
||||
questLog->unk_008[i].mapobj_bit_16 = gMapObjects[i].mapobj_bit_16;
|
||||
questLog->unk_008[i].mapobj_bit_23 = gMapObjects[i].mapobj_bit_23;
|
||||
questLog->unk_008[i].mapobj_bit_24 = gMapObjects[i].mapobj_bit_24;
|
||||
questLog->unk_008[i].mapobj_bit_25 = gMapObjects[i].mapobj_bit_25;
|
||||
questLog->unk_008[i].mapobj_bit_26 = gMapObjects[i].mapobj_bit_26;
|
||||
questLog->unk_008[i].mapobj_unk_18 = gMapObjects[i].mapobj_unk_18;
|
||||
questLog->unk_008[i].mapobj_unk_0B_0 = gMapObjects[i].mapobj_unk_0B_0;
|
||||
questLog->unk_008[i].elevation = gMapObjects[i].elevation;
|
||||
questLog->unk_008[i].graphicsId = gMapObjects[i].graphicsId;
|
||||
questLog->unk_008[i].animPattern = gMapObjects[i].animPattern;
|
||||
questLog->unk_008[i].trainerType = gMapObjects[i].trainerType;
|
||||
questLog->unk_008[i].localId = gMapObjects[i].localId;
|
||||
questLog->unk_008[i].mapNum = gMapObjects[i].mapNum;
|
||||
questLog->unk_008[i].mapGroup = gMapObjects[i].mapGroup;
|
||||
questLog->unk_008[i].x = gMapObjects[i].coords2.x;
|
||||
questLog->unk_008[i].y = gMapObjects[i].coords2.y;
|
||||
questLog->unk_008[i].trainerRange_berryTreeId = gMapObjects[i].trainerRange_berryTreeId;
|
||||
questLog->unk_008[i].mapobj_unk_1F = gMapObjects[i].mapobj_unk_1F;
|
||||
questLog->unk_008[i].mapobj_unk_21 = gMapObjects[i].mapobj_unk_21;
|
||||
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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,436 @@
|
||||
#include "global.h"
|
||||
#include "malloc.h"
|
||||
#include "decompress.h"
|
||||
#include "unk_815C980.h"
|
||||
#include "main.h"
|
||||
#include "battle.h"
|
||||
|
||||
struct UnkStruct2
|
||||
{
|
||||
bool8 isActive;
|
||||
u8 firstOamId;
|
||||
u8 field_2;
|
||||
u8 oamCount;
|
||||
u8 palTagIndex;
|
||||
u8 size;
|
||||
u8 shape;
|
||||
u8 priority;
|
||||
u8 xDelta;
|
||||
u8 field_9;
|
||||
u16 tileStart;
|
||||
s16 x;
|
||||
s16 y;
|
||||
u16 tileTag;
|
||||
u16 palTag;
|
||||
u32 field_14;
|
||||
s32 field_18;
|
||||
};
|
||||
|
||||
struct UnkStruct1
|
||||
{
|
||||
u32 count;
|
||||
struct UnkStruct2 *array;
|
||||
};
|
||||
|
||||
// this file's functions
|
||||
static u8 sub_815D244(u8 arg0);;
|
||||
static void sub_815CC28(struct UnkStruct2 *arg0);
|
||||
static void sub_815CDDC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2);
|
||||
static void sub_815CE90(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2);
|
||||
static void sub_815CFEC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2);
|
||||
static bool32 SharesTileWithAnyActive(u32 id);
|
||||
static bool32 SharesPalWithAnyActive(u32 id);
|
||||
static void sub_8035648(void);
|
||||
|
||||
// ewram
|
||||
static EWRAM_DATA struct UnkStruct1 *gUnknown_203F454 = {0};
|
||||
|
||||
// const rom data
|
||||
static const u8 gUnknown_8479658[][4] =
|
||||
{
|
||||
{0x01, 0x04, 0x10, 0x40},
|
||||
{0x02, 0x04, 0x08, 0x20},
|
||||
{0x02, 0x04, 0x08, 0x20},
|
||||
{0x00, 0x00, 0x00, 0x00}
|
||||
};
|
||||
|
||||
// code
|
||||
bool32 sub_815C980(u32 count)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
if (gUnknown_203F454 != NULL)
|
||||
sub_815C9F4();
|
||||
|
||||
gUnknown_203F454 = Alloc(sizeof(*gUnknown_203F454));
|
||||
if (gUnknown_203F454 == NULL)
|
||||
return FALSE;
|
||||
|
||||
gUnknown_203F454->array = Alloc(sizeof(struct UnkStruct2) * count);
|
||||
if (gUnknown_203F454->array == NULL)
|
||||
{
|
||||
Free(gUnknown_203F454);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gUnknown_203F454->count = count;
|
||||
for (i = 0; i < count; i++)
|
||||
{
|
||||
gUnknown_203F454->array[i].isActive = FALSE;
|
||||
gUnknown_203F454->array[i].firstOamId = 0xFF;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_815C9F4(void)
|
||||
{
|
||||
if (gUnknown_203F454 != NULL)
|
||||
{
|
||||
if (gUnknown_203F454->array != NULL)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < gUnknown_203F454->count; i++)
|
||||
sub_815D108(i);
|
||||
|
||||
Free(gUnknown_203F454->array);
|
||||
}
|
||||
|
||||
FREE_AND_SET_NULL(gUnknown_203F454);
|
||||
}
|
||||
}
|
||||
|
||||
bool32 sub_815CA40(u32 id, s32 arg1, const struct UnkStruct3 *arg2)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
if (gUnknown_203F454 == NULL)
|
||||
return FALSE;
|
||||
if (gUnknown_203F454->array[id].isActive)
|
||||
return FALSE;
|
||||
|
||||
gUnknown_203F454->array[id].firstOamId = sub_815D244(arg2->field_1);
|
||||
if (gUnknown_203F454->array[id].firstOamId == 0xFF)
|
||||
return FALSE;
|
||||
|
||||
gUnknown_203F454->array[id].tileStart = GetSpriteTileStartByTag(arg2->spriteSheet->tag);
|
||||
if (gUnknown_203F454->array[id].tileStart == 0xFFFF)
|
||||
{
|
||||
if (arg2->spriteSheet->size != 0)
|
||||
{
|
||||
gUnknown_203F454->array[id].tileStart = LoadSpriteSheet(arg2->spriteSheet);
|
||||
}
|
||||
else
|
||||
{
|
||||
struct CompressedSpriteSheet compObjectPic;
|
||||
|
||||
compObjectPic = *(struct CompressedSpriteSheet*)(arg2->spriteSheet);
|
||||
compObjectPic.size = GetDecompressedDataSize(arg2->spriteSheet->data);
|
||||
gUnknown_203F454->array[id].tileStart = LoadCompressedObjectPic(&compObjectPic);
|
||||
}
|
||||
|
||||
if (gUnknown_203F454->array[id].tileStart == 0xFFFF)
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
gUnknown_203F454->array[id].palTagIndex = IndexOfSpritePaletteTag(arg2->spritePal->tag);
|
||||
if (gUnknown_203F454->array[id].palTagIndex == 0xFF)
|
||||
gUnknown_203F454->array[id].palTagIndex = LoadSpritePalette(arg2->spritePal);
|
||||
|
||||
gUnknown_203F454->array[id].field_2 = arg2->field_0_0;
|
||||
gUnknown_203F454->array[id].oamCount = arg2->field_1;
|
||||
gUnknown_203F454->array[id].x = arg2->x;
|
||||
gUnknown_203F454->array[id].y = arg2->y;
|
||||
gUnknown_203F454->array[id].shape = arg2->shape;
|
||||
gUnknown_203F454->array[id].size = arg2->size;
|
||||
gUnknown_203F454->array[id].priority = arg2->priority;
|
||||
gUnknown_203F454->array[id].xDelta = arg2->xDelta;
|
||||
gUnknown_203F454->array[id].field_9 = sub_815D324(arg2->shape, arg2->size);
|
||||
gUnknown_203F454->array[id].tileTag = arg2->spriteSheet->tag;
|
||||
gUnknown_203F454->array[id].palTag = arg2->spritePal->tag;
|
||||
gUnknown_203F454->array[id].isActive = TRUE;
|
||||
gUnknown_203F454->array[id].field_14 = 1;
|
||||
|
||||
for (i = 1; i < arg2->field_1; i++)
|
||||
gUnknown_203F454->array[id].field_14 *= 10;
|
||||
|
||||
sub_815CC28(&gUnknown_203F454->array[id]);
|
||||
sub_815CD70(id, arg1);
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void sub_815CC28(struct UnkStruct2 *arg0)
|
||||
{
|
||||
u32 i;
|
||||
u32 oamId = arg0->firstOamId;
|
||||
u32 x = arg0->x;
|
||||
u32 oamCount = arg0->oamCount + 1;
|
||||
|
||||
CpuFill16(0, &gMain.oamBuffer[oamId], sizeof(struct OamData) * oamCount);
|
||||
for (i = 0, oamId = arg0->firstOamId; i < oamCount; i++, oamId++)
|
||||
{
|
||||
gMain.oamBuffer[oamId].y = arg0->y;
|
||||
gMain.oamBuffer[oamId].x = x;
|
||||
gMain.oamBuffer[oamId].shape = arg0->shape;
|
||||
gMain.oamBuffer[oamId].size = arg0->size;
|
||||
gMain.oamBuffer[oamId].tileNum = arg0->tileStart;
|
||||
gMain.oamBuffer[oamId].priority = arg0->priority;
|
||||
gMain.oamBuffer[oamId].paletteNum = arg0->palTagIndex;
|
||||
|
||||
x += arg0->xDelta;
|
||||
}
|
||||
|
||||
oamId--;
|
||||
gMain.oamBuffer[oamId].x = arg0->x - arg0->xDelta;
|
||||
gMain.oamBuffer[oamId].affineMode = 2;
|
||||
gMain.oamBuffer[oamId].tileNum = arg0->tileStart + (arg0->field_9 * 10);
|
||||
}
|
||||
|
||||
void sub_815CD70(u32 id, s32 arg1)
|
||||
{
|
||||
bool32 r2;
|
||||
|
||||
if (gUnknown_203F454 == NULL)
|
||||
return;
|
||||
if (!gUnknown_203F454->array[id].isActive)
|
||||
return;
|
||||
|
||||
gUnknown_203F454->array[id].field_18 = arg1;
|
||||
if (arg1 < 0)
|
||||
{
|
||||
r2 = TRUE;
|
||||
arg1 *= -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
r2 = FALSE;
|
||||
}
|
||||
|
||||
switch (gUnknown_203F454->array[id].field_2)
|
||||
{
|
||||
case 0:
|
||||
default:
|
||||
sub_815CDDC(&gUnknown_203F454->array[id], arg1, r2);
|
||||
break;
|
||||
case 1:
|
||||
sub_815CE90(&gUnknown_203F454->array[id], arg1, r2);
|
||||
break;
|
||||
case 2:
|
||||
sub_815CFEC(&gUnknown_203F454->array[id], arg1, r2);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_815CDDC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2)
|
||||
{
|
||||
u32 r5 = arg0->field_14;
|
||||
u32 oamId = arg0->firstOamId;
|
||||
|
||||
while (r5 != 0)
|
||||
{
|
||||
u32 r4 = arg1 / r5;
|
||||
arg1 -= (r4 * r5);
|
||||
r5 /= 10;
|
||||
|
||||
gMain.oamBuffer[oamId].tileNum = (r4 * arg0->field_9) + arg0->tileStart;
|
||||
oamId++;
|
||||
}
|
||||
|
||||
if (arg2)
|
||||
gMain.oamBuffer[oamId].affineMode = 0;
|
||||
else
|
||||
gMain.oamBuffer[oamId].affineMode = 2;
|
||||
}
|
||||
|
||||
static void sub_815CE90(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2)
|
||||
{
|
||||
u32 r5 = arg0->field_14;
|
||||
static int gUnknown_3002078;
|
||||
static int gUnknown_300207C;
|
||||
static int gUnknown_3002080;
|
||||
|
||||
gUnknown_3002078 = arg0->firstOamId;
|
||||
gUnknown_300207C = 0;
|
||||
gUnknown_3002080 = -1;
|
||||
|
||||
while (r5 != 0)
|
||||
{
|
||||
u32 r4 = arg1 / r5;
|
||||
arg1 -= (r4 * r5);
|
||||
r5 /= 10;
|
||||
|
||||
if (r4 != 0 || gUnknown_3002080 != -1 || r5 == 0)
|
||||
{
|
||||
gMain.oamBuffer[gUnknown_3002078].tileNum = (r4 * arg0->field_9) + arg0->tileStart;
|
||||
gMain.oamBuffer[gUnknown_3002078].affineMode = 0;
|
||||
|
||||
if (gUnknown_3002080 == -1)
|
||||
gUnknown_3002080 = gUnknown_300207C;
|
||||
}
|
||||
else
|
||||
{
|
||||
gMain.oamBuffer[gUnknown_3002078].affineMode = 2;
|
||||
}
|
||||
|
||||
gUnknown_3002078++;
|
||||
gUnknown_300207C++;
|
||||
}
|
||||
|
||||
if (arg2)
|
||||
{
|
||||
gMain.oamBuffer[gUnknown_3002078].affineMode = 0;
|
||||
gMain.oamBuffer[gUnknown_3002078].x = arg0->x + ((gUnknown_3002080 - 1) * arg0->xDelta);
|
||||
}
|
||||
else
|
||||
{
|
||||
gMain.oamBuffer[gUnknown_3002078].affineMode = 2;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_815CFEC(struct UnkStruct2 *arg0, s32 arg1, bool32 arg2)
|
||||
{
|
||||
u32 r5 = arg0->field_14;
|
||||
u32 oamId = arg0->firstOamId;
|
||||
u32 var_28 = 0;
|
||||
s32 r9 = 0;
|
||||
|
||||
while (r5 != 0)
|
||||
{
|
||||
u32 r4 = arg1 / r5;
|
||||
arg1 -= (r4 * r5);
|
||||
r5 /= 10;
|
||||
|
||||
if (r4 != 0 || var_28 != 0 || r5 == 0)
|
||||
{
|
||||
var_28 = 1;
|
||||
gMain.oamBuffer[oamId].tileNum = (r4 * arg0->field_9) + arg0->tileStart;
|
||||
gMain.oamBuffer[oamId].affineMode = 0;
|
||||
|
||||
oamId++;
|
||||
r9++;
|
||||
}
|
||||
}
|
||||
|
||||
while (r9 < arg0->oamCount)
|
||||
{
|
||||
gMain.oamBuffer[oamId].affineMode = 2;
|
||||
oamId++;
|
||||
r9++;
|
||||
}
|
||||
|
||||
if (arg2)
|
||||
gMain.oamBuffer[oamId].affineMode = 0;
|
||||
else
|
||||
gMain.oamBuffer[oamId].affineMode = 2;
|
||||
}
|
||||
|
||||
void sub_815D108(u32 id)
|
||||
{
|
||||
s32 oamId, oamCount, i;
|
||||
|
||||
if (gUnknown_203F454 == NULL)
|
||||
return;
|
||||
if (!gUnknown_203F454->array[id].isActive)
|
||||
return;
|
||||
|
||||
oamCount = gUnknown_203F454->array[id].oamCount + 1;
|
||||
oamId = gUnknown_203F454->array[id].firstOamId;
|
||||
|
||||
for (i = 0; i < oamCount; i++, oamId++)
|
||||
gMain.oamBuffer[oamId].affineMode = 2;
|
||||
|
||||
if (!SharesTileWithAnyActive(id))
|
||||
FreeSpriteTilesByTag(gUnknown_203F454->array[id].tileTag);
|
||||
if (!SharesPalWithAnyActive(id))
|
||||
FreeSpritePaletteByTag(gUnknown_203F454->array[id].palTag);
|
||||
|
||||
gUnknown_203F454->array[id].isActive = FALSE;
|
||||
}
|
||||
|
||||
void sub_815D1A8(u32 id, bool32 arg1)
|
||||
{
|
||||
s32 oamId, oamCount, i;
|
||||
|
||||
if (gUnknown_203F454 == NULL)
|
||||
return;
|
||||
if (!gUnknown_203F454->array[id].isActive)
|
||||
return;
|
||||
|
||||
oamCount = gUnknown_203F454->array[id].oamCount + 1;
|
||||
oamId = gUnknown_203F454->array[id].firstOamId;
|
||||
if (arg1)
|
||||
{
|
||||
for (i = 0; i < oamCount; i++, oamId++)
|
||||
gMain.oamBuffer[oamId].affineMode = 2;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (i = 0; i < oamCount; i++, oamId++)
|
||||
gMain.oamBuffer[oamId].affineMode = 0;
|
||||
|
||||
sub_815CD70(id, gUnknown_203F454->array[id].field_18);
|
||||
}
|
||||
}
|
||||
|
||||
static u8 sub_815D244(u8 arg0)
|
||||
{
|
||||
u32 i;
|
||||
u16 oamCount = 64;
|
||||
|
||||
for (i = 0; i < gUnknown_203F454->count; i++)
|
||||
{
|
||||
if (!gUnknown_203F454->array[i].isActive)
|
||||
{
|
||||
if (gUnknown_203F454->array[i].firstOamId != 0xFF && gUnknown_203F454->array[i].oamCount <= arg0)
|
||||
return gUnknown_203F454->array[i].firstOamId;
|
||||
}
|
||||
else
|
||||
{
|
||||
oamCount += 1 + gUnknown_203F454->array[i].oamCount;
|
||||
}
|
||||
}
|
||||
|
||||
if (oamCount + arg0 + 1 > 128)
|
||||
return 0xFF;
|
||||
else
|
||||
return oamCount;
|
||||
}
|
||||
|
||||
static bool32 SharesTileWithAnyActive(u32 id)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < gUnknown_203F454->count; i++)
|
||||
{
|
||||
if (gUnknown_203F454->array[i].isActive && i != id
|
||||
&& gUnknown_203F454->array[i].tileTag == gUnknown_203F454->array[id].tileTag)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static bool32 SharesPalWithAnyActive(u32 id)
|
||||
{
|
||||
u32 i;
|
||||
|
||||
for (i = 0; i < gUnknown_203F454->count; i++)
|
||||
{
|
||||
if (gUnknown_203F454->array[i].isActive && i != id
|
||||
&& gUnknown_203F454->array[i].palTag == gUnknown_203F454->array[id].palTag)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
u8 sub_815D324(u32 shape, u32 size)
|
||||
{
|
||||
return gUnknown_8479658[shape][size];
|
||||
}
|
||||
+3
-8
@@ -230,15 +230,10 @@ gUnknown_3002072: @ 3002072
|
||||
gUnknown_3002074: @ 3002074
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3002078: @ 3002078
|
||||
.space 0x4
|
||||
|
||||
gUnknown_300207C: @ 300207C
|
||||
.space 0x4
|
||||
|
||||
gUnknown_3002080: @ 3002080
|
||||
.space 0x8
|
||||
.align 3
|
||||
.include "src/unk_815C980.o"
|
||||
|
||||
.align 3
|
||||
.include "asm/m4a_1.o"
|
||||
.include "src/agb_flash.o"
|
||||
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ gUnknown_3003EBC: @ 3003EBC
|
||||
gUnknown_3003EC4: @ 3003EC4
|
||||
.space 0xC
|
||||
|
||||
gUnknown_3003ED0: @ 3003ED0
|
||||
gRecvCmds: @ 3003ED0
|
||||
.space 0x2
|
||||
|
||||
gUnknown_3003ED2: @ 3003ED2
|
||||
|
||||
+3
-3
@@ -1647,9 +1647,9 @@ gUnknown_203F44A: @ 203F44A
|
||||
gUnknown_203F450: @ 203F450
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203F454: @ 203F454
|
||||
.space 0x4
|
||||
|
||||
.align 2
|
||||
.include "src/unk_815C980.o"
|
||||
.align 2
|
||||
.include "src/trainer_tower.o"
|
||||
|
||||
gUnknown_203F460: @ 203F460
|
||||
|
||||
Reference in New Issue
Block a user