Merge pull request #55 from PikalaxALT/unk_8159F40

Some more decomp and porting
This commit is contained in:
PikalaxALT
2019-05-14 16:20:43 -04:00
committed by GitHub
24 changed files with 1981 additions and 3032 deletions
+4 -4
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
+3 -3
View File
@@ -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
+734
View File
@@ -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
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:
+26 -26
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
+4 -4
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:
+2 -2
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]
+8 -8
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:
-1623
View File
File diff suppressed because it is too large Load Diff
-1314
View File
File diff suppressed because it is too large Load Diff
+5 -2
View File
@@ -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
+1
View File
@@ -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
+10 -9
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;
+44 -7
View File
@@ -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))
+6
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
+24
View File
@@ -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
View File
@@ -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);
+23
View File
@@ -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;
}
+622
View File
@@ -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]);
}
}
}
+436
View File
@@ -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
View File
@@ -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
View File
@@ -30,7 +30,7 @@ gUnknown_3003EBC: @ 3003EBC
gUnknown_3003EC4: @ 3003EC4
.space 0xC
gUnknown_3003ED0: @ 3003ED0
gRecvCmds: @ 3003ED0
.space 0x2
gUnknown_3003ED2: @ 3003ED2
+3 -3
View File
@@ -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