mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-12-26 19:54:21 +01:00
Merge pull request #391 from DizzyEggg/frontier
Clean up bss/common/ewram symbols and decompile mossdeep
This commit is contained in:
commit
6acf6aed04
@ -1,111 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_81BF2B8
|
||||
sub_81BF2B8: @ 81BF2B8
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x8
|
||||
str r0, [sp]
|
||||
mov r10, r1
|
||||
adds r6, r2, 0
|
||||
mov r8, r3
|
||||
ldr r0, [sp, 0x28]
|
||||
mov r9, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
mov r10, r1
|
||||
lsls r6, 24
|
||||
lsrs r6, 24
|
||||
mov r0, r8
|
||||
lsls r0, 24
|
||||
mov r8, r0
|
||||
lsrs r7, r0, 24
|
||||
mov r1, r9
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
mov r9, r1
|
||||
mov r0, r10
|
||||
adds r1, r7, 0
|
||||
bl __divsi3
|
||||
adds r5, r0, 0
|
||||
lsls r5, 24
|
||||
lsrs r4, r5, 24
|
||||
ldr r3, =gUnknown_030012A8
|
||||
strh r4, [r3]
|
||||
mov r0, r10
|
||||
adds r1, r7, 0
|
||||
str r3, [sp, 0x4]
|
||||
bl __modsi3
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
ldr r3, [sp, 0x4]
|
||||
strh r2, [r3, 0x2]
|
||||
movs r1, 0x7
|
||||
ands r4, r1
|
||||
ands r2, r1
|
||||
strh r4, [r3, 0x4]
|
||||
strh r2, [r3, 0x6]
|
||||
lsrs r0, 27
|
||||
lsrs r5, 27
|
||||
strh r0, [r3, 0x8]
|
||||
strh r5, [r3, 0xA]
|
||||
mov r1, r8
|
||||
lsrs r1, 27
|
||||
lsls r1, 6
|
||||
mov r8, r1
|
||||
mov r1, r8
|
||||
muls r1, r5
|
||||
lsls r0, 6
|
||||
adds r1, r0
|
||||
lsls r1, 16
|
||||
lsrs r1, 16
|
||||
strh r1, [r3, 0xC]
|
||||
lsls r4, 3
|
||||
adds r4, r2
|
||||
adds r1, r4
|
||||
lsls r4, r1, 16
|
||||
lsrs r4, 17
|
||||
strh r1, [r3, 0xE]
|
||||
movs r1, 0x1
|
||||
mov r0, r10
|
||||
ands r1, r0
|
||||
movs r2, 0x1
|
||||
eors r1, r2
|
||||
lsls r0, r1, 2
|
||||
lsls r6, r0
|
||||
eors r1, r2
|
||||
lsls r1, 2
|
||||
movs r0, 0xF
|
||||
lsls r0, r1
|
||||
orrs r6, r0
|
||||
lsls r6, 24
|
||||
lsrs r6, 24
|
||||
mov r1, r9
|
||||
lsls r1, 5
|
||||
mov r9, r1
|
||||
add r9, r4
|
||||
ldr r1, [sp]
|
||||
add r1, r9
|
||||
ldrb r0, [r1]
|
||||
ands r6, r0
|
||||
strb r6, [r1]
|
||||
add sp, 0x8
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_81BF2B8
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
@ -1,701 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_81A8934
|
||||
@ void sub_81A8934(u8)
|
||||
sub_81A8934: @ 81A8934
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
ldr r4, =gUnknown_0203CE50
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
bne _081A894A
|
||||
movs r0, 0x44
|
||||
bl AllocZeroed
|
||||
str r0, [r4]
|
||||
_081A894A:
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x41
|
||||
strb r5, [r0]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_81A8934
|
||||
|
||||
thumb_func_start sub_81A895C
|
||||
sub_81A895C: @ 81A895C
|
||||
push {r4,lr}
|
||||
ldr r4, =gUnknown_0203CE50
|
||||
ldr r0, [r4]
|
||||
cmp r0, 0
|
||||
beq _081A896E
|
||||
bl Free
|
||||
movs r0, 0
|
||||
str r0, [r4]
|
||||
_081A896E:
|
||||
movs r0, 0xFF
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
bl GetEventObjectIdByLocalIdAndMap
|
||||
adds r1, r0, 0
|
||||
lsls r1, 24
|
||||
lsrs r1, 24
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, =gEventObjects
|
||||
adds r0, r1
|
||||
bl EventObjectClearHeldMovementIfFinished
|
||||
bl sub_80D338C
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_81A895C
|
||||
|
||||
thumb_func_start sub_81A89A0
|
||||
sub_81A89A0: @ 81A89A0
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x4
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [sp]
|
||||
ldr r0, =gSaveBlock1Ptr
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xC7
|
||||
lsls r1, 4
|
||||
adds r1, r0
|
||||
mov r9, r1
|
||||
movs r3, 0
|
||||
mov r10, r3
|
||||
mov r8, r3
|
||||
_081A89C4:
|
||||
mov r0, r8
|
||||
lsls r4, r0, 1
|
||||
adds r1, r4, r0
|
||||
lsls r1, 3
|
||||
add r1, r9
|
||||
ldrh r0, [r1, 0x4]
|
||||
adds r0, 0x7
|
||||
ldrh r1, [r1, 0x6]
|
||||
adds r1, 0x7
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
bl MapGridGetMetatileIdAt
|
||||
lsls r0, 16
|
||||
lsrs r1, r0, 16
|
||||
ldr r0, =gUnknown_0203CE50
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x41
|
||||
ldrb r0, [r0]
|
||||
movs r2, 0xA6
|
||||
lsls r2, 2
|
||||
cmp r0, 0
|
||||
bne _081A89F8
|
||||
subs r2, 0x48
|
||||
_081A89F8:
|
||||
ldr r0, =0x0000024f
|
||||
cmp r1, r0
|
||||
bls _081A8AD4
|
||||
subs r1, r2
|
||||
adds r0, r1, 0
|
||||
cmp r1, 0
|
||||
bge _081A8A08
|
||||
adds r0, r1, 0x7
|
||||
_081A8A08:
|
||||
asrs r2, r0, 3
|
||||
lsls r0, r2, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x4
|
||||
bhi _081A8AD4
|
||||
ldr r3, [sp]
|
||||
cmp r0, r3
|
||||
bne _081A8AD4
|
||||
lsls r0, r2, 3
|
||||
subs r0, r1, r0
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
cmp r5, 0x3
|
||||
bhi _081A8AD4
|
||||
movs r1, 0
|
||||
movs r2, 0
|
||||
cmp r5, 0x1
|
||||
beq _081A8A58
|
||||
cmp r5, 0x1
|
||||
bgt _081A8A44
|
||||
cmp r5, 0
|
||||
beq _081A8A4E
|
||||
b _081A8AD4
|
||||
.pool
|
||||
_081A8A44:
|
||||
cmp r5, 0x2
|
||||
beq _081A8A64
|
||||
cmp r5, 0x3
|
||||
beq _081A8A70
|
||||
b _081A8AD4
|
||||
_081A8A4E:
|
||||
ldr r7, =gUnknown_08612698
|
||||
movs r1, 0x1
|
||||
b _081A8A74
|
||||
.pool
|
||||
_081A8A58:
|
||||
ldr r7, =gUnknown_0861269C
|
||||
movs r2, 0x1
|
||||
b _081A8A74
|
||||
.pool
|
||||
_081A8A64:
|
||||
ldr r7, =gUnknown_086126A0
|
||||
movs r1, 0xFF
|
||||
b _081A8A74
|
||||
.pool
|
||||
_081A8A70:
|
||||
ldr r7, =gUnknown_086126A4
|
||||
movs r2, 0xFF
|
||||
_081A8A74:
|
||||
mov r3, r8
|
||||
adds r0, r4, r3
|
||||
lsls r0, 3
|
||||
mov r3, r9
|
||||
adds r4, r0, r3
|
||||
lsls r0, r1, 24
|
||||
asrs r0, 24
|
||||
ldrh r1, [r4, 0x4]
|
||||
adds r0, r1
|
||||
strh r0, [r4, 0x4]
|
||||
lsls r0, r2, 24
|
||||
asrs r0, 24
|
||||
ldrh r3, [r4, 0x6]
|
||||
adds r0, r3
|
||||
strh r0, [r4, 0x6]
|
||||
ldrb r0, [r4]
|
||||
ldr r6, =gSaveBlock1Ptr
|
||||
ldr r2, [r6]
|
||||
ldrb r1, [r2, 0x5]
|
||||
ldrb r2, [r2, 0x4]
|
||||
bl GetEventObjectIdByLocalIdAndMap
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x10
|
||||
beq _081A8ACC
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
bl sub_81A8D60
|
||||
ldrb r4, [r4]
|
||||
mov r10, r4
|
||||
mov r0, r10
|
||||
ldr r2, [r6]
|
||||
ldrb r1, [r2, 0x5]
|
||||
ldrb r2, [r2, 0x4]
|
||||
adds r3, r7, 0
|
||||
bl ScriptMovement_StartObjectMovementScript
|
||||
b _081A8AD4
|
||||
.pool
|
||||
_081A8ACC:
|
||||
mov r0, r8
|
||||
adds r1, r5, 0
|
||||
bl sub_81A8D94
|
||||
_081A8AD4:
|
||||
mov r0, r8
|
||||
adds r0, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r8, r0
|
||||
cmp r0, 0x3F
|
||||
bhi _081A8AE4
|
||||
b _081A89C4
|
||||
_081A8AE4:
|
||||
mov r0, r10
|
||||
add sp, 0x4
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_81A89A0
|
||||
|
||||
thumb_func_start sub_81A8AF8
|
||||
sub_81A8AF8: @ 81A8AF8
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
ldr r1, =gUnknown_0203CE50
|
||||
ldr r2, [r1]
|
||||
cmp r2, 0
|
||||
bne _081A8B0C
|
||||
b _081A8D4A
|
||||
_081A8B0C:
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x41
|
||||
ldrb r0, [r0]
|
||||
movs r3, 0xA6
|
||||
lsls r3, 2
|
||||
mov r10, r3
|
||||
cmp r0, 0
|
||||
bne _081A8B22
|
||||
movs r0, 0x94
|
||||
lsls r0, 2
|
||||
mov r10, r0
|
||||
_081A8B22:
|
||||
ldr r0, =gSaveBlock1Ptr
|
||||
ldr r0, [r0]
|
||||
movs r3, 0xC7
|
||||
lsls r3, 4
|
||||
adds r7, r0, r3
|
||||
movs r0, 0
|
||||
mov r9, r0
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r9, r0
|
||||
bcc _081A8B3C
|
||||
b _081A8D4A
|
||||
_081A8B3C:
|
||||
mov r8, r1
|
||||
_081A8B3E:
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
mov r2, r9
|
||||
lsls r4, r2, 2
|
||||
adds r0, r4
|
||||
ldrb r0, [r0, 0x1]
|
||||
lsls r1, r0, 1
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r7
|
||||
ldrh r0, [r1, 0x4]
|
||||
adds r0, 0x7
|
||||
ldrh r1, [r1, 0x6]
|
||||
adds r1, 0x7
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
bl MapGridGetMetatileIdAt
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
mov r3, r10
|
||||
subs r1, r0, r3
|
||||
adds r0, r1, 0
|
||||
cmp r1, 0
|
||||
bge _081A8B76
|
||||
adds r0, r1, 0x7
|
||||
_081A8B76:
|
||||
asrs r0, 3
|
||||
lsls r0, 3
|
||||
subs r0, r1, r0
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r2, r8
|
||||
ldr r1, [r2]
|
||||
adds r1, r4
|
||||
ldrb r1, [r1]
|
||||
subs r0, r1
|
||||
lsls r0, 24
|
||||
asrs r1, r0, 24
|
||||
cmp r1, 0
|
||||
blt _081A8B96
|
||||
cmp r1, 0x3
|
||||
bne _081A8BAC
|
||||
_081A8B96:
|
||||
movs r0, 0x3
|
||||
negs r0, r0
|
||||
movs r6, 0
|
||||
cmp r1, r0
|
||||
bne _081A8BB4
|
||||
b _081A8BB2
|
||||
.pool
|
||||
_081A8BAC:
|
||||
movs r6, 0x2
|
||||
cmp r1, 0
|
||||
ble _081A8BB4
|
||||
_081A8BB2:
|
||||
movs r6, 0x1
|
||||
_081A8BB4:
|
||||
ldr r5, =gUnknown_0203CE50
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
ldrb r0, [r0]
|
||||
ldr r1, =gSaveBlock1Ptr
|
||||
ldr r2, [r1]
|
||||
ldrb r1, [r2, 0x5]
|
||||
ldrb r2, [r2, 0x4]
|
||||
bl GetEventObjectIdByLocalIdAndMap
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x10
|
||||
bne _081A8BDC
|
||||
b _081A8D32
|
||||
_081A8BDC:
|
||||
ldr r0, =gEventObjects
|
||||
lsls r1, r2, 3
|
||||
adds r1, r2
|
||||
lsls r1, 2
|
||||
adds r1, r0
|
||||
ldrb r0, [r1, 0x18]
|
||||
lsls r0, 28
|
||||
lsrs r0, 28
|
||||
adds r1, r0, 0
|
||||
cmp r6, 0
|
||||
bne _081A8C9C
|
||||
cmp r0, 0x2
|
||||
beq _081A8C60
|
||||
cmp r0, 0x2
|
||||
bgt _081A8C0C
|
||||
cmp r0, 0x1
|
||||
beq _081A8C30
|
||||
b _081A8D32
|
||||
.pool
|
||||
_081A8C0C:
|
||||
cmp r0, 0x3
|
||||
beq _081A8C48
|
||||
cmp r0, 0x4
|
||||
beq _081A8C16
|
||||
b _081A8D32
|
||||
_081A8C16:
|
||||
ldr r3, =gUnknown_086126AE
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
movs r1, 0x7
|
||||
b _081A8C72
|
||||
.pool
|
||||
_081A8C30:
|
||||
ldr r3, =gUnknown_086126A8
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
movs r1, 0xA
|
||||
b _081A8C72
|
||||
.pool
|
||||
_081A8C48:
|
||||
ldr r3, =gUnknown_086126AA
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
movs r1, 0x8
|
||||
b _081A8C72
|
||||
.pool
|
||||
_081A8C60:
|
||||
ldr r3, =gUnknown_086126AC
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
movs r1, 0x9
|
||||
_081A8C72:
|
||||
strb r1, [r0, 0x9]
|
||||
mov r1, r8
|
||||
ldr r0, [r1]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
ldrb r0, [r0]
|
||||
ldr r1, =gSaveBlock1Ptr
|
||||
ldr r2, [r1]
|
||||
ldrb r1, [r2, 0x5]
|
||||
ldrb r2, [r2, 0x4]
|
||||
bl ScriptMovement_StartObjectMovementScript
|
||||
b _081A8D32
|
||||
.pool
|
||||
_081A8C9C:
|
||||
cmp r6, 0x1
|
||||
bne _081A8D32
|
||||
cmp r0, 0x2
|
||||
beq _081A8D00
|
||||
cmp r0, 0x2
|
||||
bgt _081A8CAE
|
||||
cmp r0, 0x1
|
||||
beq _081A8CD0
|
||||
b _081A8D32
|
||||
_081A8CAE:
|
||||
cmp r1, 0x3
|
||||
beq _081A8CE8
|
||||
cmp r1, 0x4
|
||||
bne _081A8D32
|
||||
ldr r3, =gUnknown_086126AA
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
movs r1, 0x8
|
||||
b _081A8D12
|
||||
.pool
|
||||
_081A8CD0:
|
||||
ldr r3, =gUnknown_086126AC
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
movs r1, 0x9
|
||||
b _081A8D12
|
||||
.pool
|
||||
_081A8CE8:
|
||||
ldr r3, =gUnknown_086126AE
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
movs r1, 0x7
|
||||
b _081A8D12
|
||||
.pool
|
||||
_081A8D00:
|
||||
ldr r3, =gUnknown_086126A8
|
||||
ldr r0, [r5]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
movs r1, 0xA
|
||||
_081A8D12:
|
||||
strb r1, [r0, 0x9]
|
||||
mov r2, r8
|
||||
ldr r0, [r2]
|
||||
adds r0, r4
|
||||
ldrb r1, [r0, 0x1]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 3
|
||||
adds r0, r7
|
||||
ldrb r0, [r0]
|
||||
ldr r1, =gSaveBlock1Ptr
|
||||
ldr r2, [r1]
|
||||
ldrb r1, [r2, 0x5]
|
||||
ldrb r2, [r2, 0x4]
|
||||
bl ScriptMovement_StartObjectMovementScript
|
||||
_081A8D32:
|
||||
mov r0, r9
|
||||
adds r0, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
mov r9, r0
|
||||
mov r3, r8
|
||||
ldr r0, [r3]
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
cmp r9, r0
|
||||
bcs _081A8D4A
|
||||
b _081A8B3E
|
||||
_081A8D4A:
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_81A8AF8
|
||||
|
||||
thumb_func_start sub_81A8D60
|
||||
sub_81A8D60: @ 81A8D60
|
||||
push {r4,lr}
|
||||
ldr r4, =gUnknown_0203CE50
|
||||
ldr r3, [r4]
|
||||
adds r2, r3, 0
|
||||
adds r2, 0x40
|
||||
ldrb r2, [r2]
|
||||
lsls r2, 2
|
||||
adds r3, r2
|
||||
strb r0, [r3, 0x1]
|
||||
ldr r2, [r4]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x40
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 2
|
||||
adds r2, r0
|
||||
strb r1, [r2]
|
||||
ldr r1, [r4]
|
||||
adds r1, 0x40
|
||||
ldrb r0, [r1]
|
||||
adds r0, 0x1
|
||||
strb r0, [r1]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.pool
|
||||
thumb_func_end sub_81A8D60
|
||||
|
||||
thumb_func_start sub_81A8D94
|
||||
sub_81A8D94: @ 81A8D94
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
lsls r1, 24
|
||||
lsrs r6, r1, 24
|
||||
ldr r0, =gSaveBlock1Ptr
|
||||
ldr r0, [r0]
|
||||
movs r1, 0xC7
|
||||
lsls r1, 4
|
||||
adds r5, r0, r1
|
||||
lsls r1, r4, 1
|
||||
adds r1, r4
|
||||
lsls r1, 3
|
||||
adds r1, r5
|
||||
ldrh r0, [r1, 0x4]
|
||||
adds r0, 0x7
|
||||
ldrh r1, [r1, 0x6]
|
||||
adds r1, 0x7
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
lsls r1, 16
|
||||
asrs r1, 16
|
||||
bl MapGridGetMetatileIdAt
|
||||
lsls r0, 16
|
||||
lsrs r2, r0, 16
|
||||
ldr r0, =gUnknown_0203CE50
|
||||
ldr r0, [r0]
|
||||
adds r0, 0x41
|
||||
ldrb r0, [r0]
|
||||
movs r1, 0xA6
|
||||
lsls r1, 2
|
||||
cmp r0, 0
|
||||
bne _081A8DDA
|
||||
subs r1, 0x48
|
||||
_081A8DDA:
|
||||
subs r1, r2, r1
|
||||
adds r0, r1, 0
|
||||
cmp r1, 0
|
||||
bge _081A8DE4
|
||||
adds r0, r1, 0x7
|
||||
_081A8DE4:
|
||||
asrs r0, 3
|
||||
lsls r0, 3
|
||||
subs r0, r1, r0
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
subs r0, r6
|
||||
lsls r0, 24
|
||||
asrs r1, r0, 24
|
||||
cmp r1, 0
|
||||
blt _081A8DFC
|
||||
cmp r1, 0x3
|
||||
bne _081A8E08
|
||||
_081A8DFC:
|
||||
movs r2, 0
|
||||
b _081A8E1A
|
||||
.pool
|
||||
_081A8E08:
|
||||
cmp r1, 0
|
||||
bgt _081A8E14
|
||||
movs r0, 0x3
|
||||
negs r0, r0
|
||||
cmp r1, r0
|
||||
bne _081A8E18
|
||||
_081A8E14:
|
||||
movs r2, 0x1
|
||||
b _081A8E1A
|
||||
_081A8E18:
|
||||
movs r2, 0x2
|
||||
_081A8E1A:
|
||||
lsls r0, r4, 1
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
adds r1, r0, r5
|
||||
ldrb r0, [r1, 0x9]
|
||||
adds r3, r0, 0
|
||||
cmp r2, 0
|
||||
bne _081A8E4C
|
||||
cmp r0, 0x8
|
||||
beq _081A8E72
|
||||
cmp r0, 0x8
|
||||
bgt _081A8E38
|
||||
cmp r0, 0x7
|
||||
beq _081A8E48
|
||||
b _081A8E76
|
||||
_081A8E38:
|
||||
cmp r0, 0x9
|
||||
beq _081A8E44
|
||||
cmp r0, 0xA
|
||||
bne _081A8E76
|
||||
movs r0, 0x7
|
||||
b _081A8E74
|
||||
_081A8E44:
|
||||
movs r0, 0x8
|
||||
b _081A8E74
|
||||
_081A8E48:
|
||||
movs r0, 0x9
|
||||
b _081A8E74
|
||||
_081A8E4C:
|
||||
cmp r2, 0x1
|
||||
bne _081A8E76
|
||||
cmp r0, 0x8
|
||||
beq _081A8E6A
|
||||
cmp r0, 0x8
|
||||
bgt _081A8E5E
|
||||
cmp r0, 0x7
|
||||
beq _081A8E72
|
||||
b _081A8E76
|
||||
_081A8E5E:
|
||||
cmp r3, 0x9
|
||||
beq _081A8E6E
|
||||
cmp r3, 0xA
|
||||
bne _081A8E76
|
||||
movs r0, 0x8
|
||||
b _081A8E74
|
||||
_081A8E6A:
|
||||
movs r0, 0x9
|
||||
b _081A8E74
|
||||
_081A8E6E:
|
||||
movs r0, 0x7
|
||||
b _081A8E74
|
||||
_081A8E72:
|
||||
movs r0, 0xA
|
||||
_081A8E74:
|
||||
strb r0, [r1, 0x9]
|
||||
_081A8E76:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_81A8D94
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
3
common_syms/apprentice.txt
Normal file
3
common_syms/apprentice.txt
Normal file
@ -0,0 +1,3 @@
|
||||
gUnknown_030062EC
|
||||
gUnknown_030062F0
|
||||
gUnknown_030062F4
|
1
common_syms/battle_factory_screen.txt
Normal file
1
common_syms/battle_factory_screen.txt
Normal file
@ -0,0 +1 @@
|
||||
gUnknown_030062E8
|
1
common_syms/battle_tower.txt
Normal file
1
common_syms/battle_tower.txt
Normal file
@ -0,0 +1 @@
|
||||
gUnknown_03006298
|
1
common_syms/berry_blender.txt
Normal file
1
common_syms/berry_blender.txt
Normal file
@ -0,0 +1 @@
|
||||
gInGameOpponentsNo
|
@ -1,3 +1,6 @@
|
||||
gBGTilemapBuffers1
|
||||
gBGTilemapBuffers2
|
||||
gBGTilemapBuffers3
|
||||
gUnknown_03005DA8
|
||||
gFieldCallback
|
||||
gFieldCallback2
|
||||
|
2
common_syms/pokedex.txt
Normal file
2
common_syms/pokedex.txt
Normal file
@ -0,0 +1,2 @@
|
||||
gUnknown_030060B0
|
||||
gUnknown_030060B4
|
1
common_syms/start_menu.txt
Normal file
1
common_syms/start_menu.txt
Normal file
@ -0,0 +1 @@
|
||||
gMenuCallback
|
@ -664,6 +664,18 @@ struct MonSpritesGfx
|
||||
};
|
||||
|
||||
// All battle variables are declared in battle_main.c
|
||||
extern u16 gBattle_BG0_X;
|
||||
extern u16 gBattle_BG0_Y;
|
||||
extern u16 gBattle_BG1_X;
|
||||
extern u16 gBattle_BG1_Y;
|
||||
extern u16 gBattle_BG2_X;
|
||||
extern u16 gBattle_BG2_Y;
|
||||
extern u16 gBattle_BG3_X;
|
||||
extern u16 gBattle_BG3_Y;
|
||||
extern u16 gBattle_WIN0H;
|
||||
extern u16 gBattle_WIN0V;
|
||||
extern u16 gBattle_WIN1H;
|
||||
extern u16 gBattle_WIN1V;
|
||||
extern u8 gDisplayedStringBattle[300];
|
||||
extern u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT];
|
||||
extern u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT];
|
||||
@ -769,17 +781,4 @@ extern u8 gMultiUsePlayerCursor;
|
||||
extern u8 gNumberOfMovesToChoose;
|
||||
extern u8 gUnknown_03005D7C[MAX_BATTLERS_COUNT];
|
||||
|
||||
extern u16 gBattle_WIN0H;
|
||||
extern u16 gBattle_WIN0V;
|
||||
extern u16 gBattle_WIN1H;
|
||||
extern u16 gBattle_WIN1V;
|
||||
extern u16 gBattle_BG0_X;
|
||||
extern u16 gBattle_BG0_Y;
|
||||
extern u16 gBattle_BG1_X;
|
||||
extern u16 gBattle_BG1_Y;
|
||||
extern u16 gBattle_BG2_X;
|
||||
extern u16 gBattle_BG2_Y;
|
||||
extern u16 gBattle_BG3_X;
|
||||
extern u16 gBattle_BG3_Y;
|
||||
|
||||
#endif // GUARD_BATTLE_H
|
||||
|
@ -38,6 +38,8 @@ extern const u8 gTowerMaleTrainerGfxIds[30];
|
||||
extern const u8 gTowerFemaleFacilityClasses[20];
|
||||
extern const u8 gTowerFemaleTrainerGfxIds[20];
|
||||
|
||||
extern u16 gUnknown_03006298[];
|
||||
|
||||
extern const struct BattleFrontierTrainer *gFacilityTrainers;
|
||||
extern const struct FacilityMon *gFacilityTrainerMons;
|
||||
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef GUARD_BERRY_BLENDER_H
|
||||
#define GUARD_BERRY_BLENDER_H
|
||||
|
||||
extern u8 gInGameOpponentsNo;
|
||||
|
||||
void DoBerryBlending(void);
|
||||
u16 GetBlenderArrowPosition(void);
|
||||
void ShowBerryBlenderRecordWindow(void);
|
||||
|
@ -61,11 +61,6 @@
|
||||
#define min(a, b) ((a) < (b) ? (a) : (b))
|
||||
#define max(a, b) ((a) >= (b) ? (a) : (b))
|
||||
|
||||
extern u8 gStringVar1[];
|
||||
extern u8 gStringVar2[];
|
||||
extern u8 gStringVar3[];
|
||||
extern u8 gStringVar4[];
|
||||
|
||||
// There are many quirks in the source code which have overarching behavioral differences from
|
||||
// a number of other files. For example, diploma.c seems to declare rodata before each use while
|
||||
// other files declare out of order and must be at the beginning. There are also a number of
|
||||
|
9
include/mossdeep_gym.h
Normal file
9
include/mossdeep_gym.h
Normal file
@ -0,0 +1,9 @@
|
||||
#ifndef GUARD_MOSSDEEP_GYM_H
|
||||
#define GUARD_MOSSDEEP_GYM_H
|
||||
|
||||
void InitMossdeepGymTiles(bool8 arg0);
|
||||
void FinishMossdeepGymTiles(void);
|
||||
u16 MossdeepGym_MoveEvents(u8 arg0);
|
||||
void MossdeepGym_TurnEvents(void);
|
||||
|
||||
#endif // GUARD_MOSSDEEP_GYM_H
|
@ -1,6 +1,9 @@
|
||||
#ifndef GUARD_NEW_GAME_H
|
||||
#define GUARD_NEW_GAME_H
|
||||
|
||||
extern bool8 gDifferentSaveFile;
|
||||
extern bool8 gUnknown_020322D5; // The purpose of this variable is unknown as it's read only 3 times(2 times in contest.c and 1 time in berry_blender.c), never written to.
|
||||
|
||||
void SetTrainerId(u32 trainerId, u8 *dst);
|
||||
u32 GetTrainerId(u8 *trainerId);
|
||||
void CopyTrainerId(u8 *dst, u8 *src);
|
||||
|
@ -22,9 +22,9 @@ extern struct LinkPlayerEventObject gLinkPlayerEventObjects[4];
|
||||
extern u16 *gBGTilemapBuffers1;
|
||||
extern u16 *gBGTilemapBuffers2;
|
||||
extern u16 *gBGTilemapBuffers3;
|
||||
|
||||
extern u16 gUnknown_03005DA8;
|
||||
extern void (*gFieldCallback)(void);
|
||||
|
||||
extern bool8 (*gFieldCallback2)(void);
|
||||
extern u8 gUnknown_03005DB4;
|
||||
extern u8 gFieldLinkPlayerCount;
|
||||
|
||||
|
@ -1,6 +1,9 @@
|
||||
#ifndef GUARD_POKEDEX_H
|
||||
#define GUARD_POKEDEX_H
|
||||
|
||||
extern u8 gUnknown_030060B0;
|
||||
extern void (*gUnknown_030060B4)(void);
|
||||
|
||||
void ResetPokedex(void);
|
||||
void CopyMonCategoryText(u32 species, u8 *dst);
|
||||
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
|
||||
|
@ -1,7 +1,7 @@
|
||||
#ifndef GUARD_START_MENU_H
|
||||
#define GUARD_START_MENU_H
|
||||
|
||||
extern bool8 (*gMenuCallback)(void); // Defined in sym_common.txt
|
||||
extern bool8 (*gMenuCallback)(void);
|
||||
|
||||
void sub_809FA18(void);
|
||||
void sub_809FA34(u8 taskId);
|
||||
|
@ -1,6 +1,11 @@
|
||||
#ifndef GUARD_STRING_UTIL_H
|
||||
#define GUARD_STRING_UTIL_H
|
||||
|
||||
extern u8 gStringVar1[];
|
||||
extern u8 gStringVar2[];
|
||||
extern u8 gStringVar3[];
|
||||
extern u8 gStringVar4[];
|
||||
|
||||
enum StringConvertMode
|
||||
{
|
||||
STR_CONV_MODE_LEFT_ALIGN,
|
||||
|
@ -188,6 +188,7 @@ SECTIONS {
|
||||
asm/cute_sketch.o(.text);
|
||||
src/decoration.o(.text);
|
||||
src/slot_machine.o(.text);
|
||||
src/contest_painting.o(.text);
|
||||
asm/contest_painting.o(.text);
|
||||
src/battle_ai_script_commands.o(.text);
|
||||
src/trader.o(.text);
|
||||
@ -268,7 +269,7 @@ SECTIONS {
|
||||
src/battle_arena.o(.text);
|
||||
src/battle_factory.o(.text);
|
||||
src/battle_pike.o(.text);
|
||||
asm/mossdeep_gym.o(.text);
|
||||
src/mossdeep_gym.o(.text);
|
||||
src/battle_pyramid.o(.text);
|
||||
src/item_menu.o(.text);
|
||||
src/list_menu.o(.text);
|
||||
@ -283,7 +284,6 @@ SECTIONS {
|
||||
src/battle_controller_player_partner.o(.text);
|
||||
src/fldeff_groundshake.o(.text);
|
||||
src/fossil_specials.o(.text);
|
||||
asm/fossil_specials.o(.text);
|
||||
src/berry_fix_program.o(.text);
|
||||
src/pokemon_summary_screen.o(.text);
|
||||
src/unk_pokedex_area_screen_helper.o(.text);
|
||||
|
@ -340,9 +340,10 @@ extern const u8 gText_082B7185[];
|
||||
extern const u8 gText_082B71C1[];
|
||||
extern const u8 gText_082B71F9[];
|
||||
|
||||
extern struct Unk030062ECStruct *gUnknown_030062EC;
|
||||
extern struct Unk030062F0Struct *gUnknown_030062F0;
|
||||
extern void (*gUnknown_030062F4)(void);
|
||||
// IWRAM common
|
||||
struct Unk030062ECStruct *gUnknown_030062EC;
|
||||
struct Unk030062F0Struct *gUnknown_030062F0;
|
||||
void (*gUnknown_030062F4)(void);
|
||||
|
||||
// This file's functions.
|
||||
static u16 sub_819FF98(u8 arg0);
|
||||
|
@ -13,8 +13,6 @@
|
||||
#include "constants/trainers.h"
|
||||
#include "constants/moves.h"
|
||||
|
||||
extern u16 gUnknown_03006298[];
|
||||
|
||||
extern const struct FacilityMon gBattleFrontierMons[];
|
||||
extern const struct FacilityMon gSlateportBattleTentMons[];
|
||||
extern const struct BattleFrontierTrainer gBattleFrontierTrainers[];
|
||||
|
@ -131,7 +131,6 @@ struct FactorySwapMonsStruct
|
||||
bool8 unk30;
|
||||
};
|
||||
|
||||
extern u8 (*gUnknown_030062E8)(void);
|
||||
extern u8 gUnknown_0203CF20;
|
||||
|
||||
extern const u16 gBattleFrontierHeldItems[];
|
||||
@ -237,6 +236,9 @@ static IWRAM_DATA struct FactorySelectMonsStruct *sFactorySelectScreen;
|
||||
static IWRAM_DATA void (*sSwap_CurrentTableFunc)(u8 taskId);
|
||||
static IWRAM_DATA struct FactorySwapMonsStruct *sFactorySwapScreen;
|
||||
|
||||
// IWRAM common
|
||||
u8 (*gUnknown_030062E8)(void);
|
||||
|
||||
// Const rom data.
|
||||
static const u16 gUnknown_0860F13C[] = INCBIN_U16("graphics/unknown/unknown_60F13C.gbapal");
|
||||
static const u16 gUnknown_0860F15C[] = INCBIN_U16("graphics/unknown/unknown_60F15C.gbapal");
|
||||
|
@ -173,6 +173,18 @@ static void HandleAction_NothingIsFainted(void);
|
||||
static void HandleAction_ActionFinished(void);
|
||||
|
||||
// EWRAM vars
|
||||
EWRAM_DATA u16 gBattle_BG0_X = 0;
|
||||
EWRAM_DATA u16 gBattle_BG0_Y = 0;
|
||||
EWRAM_DATA u16 gBattle_BG1_X = 0;
|
||||
EWRAM_DATA u16 gBattle_BG1_Y = 0;
|
||||
EWRAM_DATA u16 gBattle_BG2_X = 0;
|
||||
EWRAM_DATA u16 gBattle_BG2_Y = 0;
|
||||
EWRAM_DATA u16 gBattle_BG3_X = 0;
|
||||
EWRAM_DATA u16 gBattle_BG3_Y = 0;
|
||||
EWRAM_DATA u16 gBattle_WIN0H = 0;
|
||||
EWRAM_DATA u16 gBattle_WIN0V = 0;
|
||||
EWRAM_DATA u16 gBattle_WIN1H = 0;
|
||||
EWRAM_DATA u16 gBattle_WIN1V = 0;
|
||||
EWRAM_DATA u8 gDisplayedStringBattle[300] = {0};
|
||||
EWRAM_DATA u8 gBattleTextBuff1[TEXT_BUFF_ARRAY_COUNT] = {0};
|
||||
EWRAM_DATA u8 gBattleTextBuff2[TEXT_BUFF_ARRAY_COUNT] = {0};
|
||||
|
@ -6,6 +6,7 @@
|
||||
#include "battle_tower.h"
|
||||
#include "frontier_util.h"
|
||||
#include "item.h"
|
||||
#include "string_util.h"
|
||||
#include "constants/items.h"
|
||||
|
||||
// This file's functions.
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "sound.h"
|
||||
#include "task.h"
|
||||
#include "start_menu.h"
|
||||
#include "string_util.h"
|
||||
#include "trainer_see.h"
|
||||
#include "main.h"
|
||||
#include "load_save.h"
|
||||
|
@ -10,6 +10,7 @@
|
||||
#include "item.h"
|
||||
#include "battle_factory_screen.h"
|
||||
#include "frontier_util.h"
|
||||
#include "string_util.h"
|
||||
#include "constants/items.h"
|
||||
#include "constants/region_map_sections.h"
|
||||
|
||||
@ -17,10 +18,6 @@ extern const struct BattleFrontierTrainer gSlateportBattleTentTrainers[];
|
||||
extern const struct FacilityMon gSlateportBattleTentMons[];
|
||||
extern const u16 gBattleFrontierHeldItems[];
|
||||
|
||||
extern u16 gUnknown_03006298[];
|
||||
|
||||
extern void sub_81A4C30(void);
|
||||
|
||||
// This file's functions.
|
||||
static void sub_81B99D4(void);
|
||||
static void sub_81B9A28(void);
|
||||
|
@ -28,8 +28,6 @@
|
||||
#include "constants/moves.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern u16 gUnknown_03006298[];
|
||||
|
||||
extern void sub_81A4C30(void);
|
||||
|
||||
extern const u8 *const *const gUnknown_085DD690[];
|
||||
@ -68,6 +66,9 @@ extern const u8 MossdeepCity_SpaceCenter_2F_EventScript_224166[];
|
||||
EWRAM_DATA const struct BattleFrontierTrainer *gFacilityTrainers = NULL;
|
||||
EWRAM_DATA const struct FacilityMon *gFacilityTrainerMons = NULL;
|
||||
|
||||
// IWRAM common
|
||||
u16 gUnknown_03006298[4];
|
||||
|
||||
// This file's functions.
|
||||
static void sub_8161F94(void);
|
||||
static void sub_8162054(void);
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "item_menu.h"
|
||||
#include "battle_records.h"
|
||||
#include "graphics.h"
|
||||
#include "new_game.h"
|
||||
|
||||
#define BLENDER_SCORE_BEST 0
|
||||
#define BLENDER_SCORE_GOOD 1
|
||||
@ -132,8 +133,6 @@ struct BerryBlenderData
|
||||
|
||||
extern struct MusicPlayerInfo gMPlayInfo_SE2;
|
||||
extern struct MusicPlayerInfo gMPlayInfo_BGM;
|
||||
extern u8 gInGameOpponentsNo;
|
||||
extern u8 gUnknown_020322D5;
|
||||
|
||||
// text
|
||||
extern const u8 gText_SavingDontTurnOff2[];
|
||||
@ -195,18 +194,21 @@ static void sub_8083170(u16 a0, u16 a1);
|
||||
static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst);
|
||||
static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *a1);
|
||||
|
||||
// ewram
|
||||
// EWRAM
|
||||
EWRAM_DATA static struct BerryBlenderData *sBerryBlenderData = NULL;
|
||||
EWRAM_DATA static s32 sUnknown_020322A8[5] = {0};
|
||||
EWRAM_DATA static s32 sUnknown_020322BC[5] = {0};
|
||||
EWRAM_DATA static u32 sUnknown_020322D0 = 0;
|
||||
|
||||
// iwram
|
||||
// IWRAM bss
|
||||
IWRAM_DATA static s16 sUnknown_03000DE8[8];
|
||||
IWRAM_DATA static s16 sUnknown_03000DF8[6];
|
||||
IWRAM_DATA static s16 sUnknown_03000E04;
|
||||
IWRAM_DATA static s16 sUnknown_03000E06;
|
||||
|
||||
// IWRAM common
|
||||
u8 gInGameOpponentsNo;
|
||||
|
||||
// rom
|
||||
|
||||
static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal");
|
||||
|
8
src/contest_painting.c
Normal file
8
src/contest_painting.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include "global.h"
|
||||
|
||||
// IWRAM bss
|
||||
IWRAM_DATA u8 gUnknown_030011F0;
|
||||
IWRAM_DATA u16 gUnknown_030011F2;
|
||||
IWRAM_DATA u16 gUnknown_030011F4;
|
||||
IWRAM_DATA u8 gUnknown_030011F6;
|
||||
IWRAM_DATA u8 gUnknown_030011F7;
|
@ -13,6 +13,7 @@
|
||||
#include "palette.h"
|
||||
#include "event_data.h"
|
||||
#include "easy_chat.h"
|
||||
#include "string_util.h"
|
||||
|
||||
// Static type declarations
|
||||
|
||||
|
@ -5,6 +5,7 @@
|
||||
#include "party_menu.h"
|
||||
#include "rom6.h"
|
||||
#include "script.h"
|
||||
#include "string_util.h"
|
||||
#include "task.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/field_effects.h"
|
||||
|
@ -17,29 +17,32 @@
|
||||
#include "task.h"
|
||||
#include "window.h"
|
||||
|
||||
#define MIRAGE_TOWER_GFX_LENGTH (sizeof(gUnknown_08617274) + sizeof(gMirageTower_Gfx))
|
||||
#define MIRAGE_TOWER_GFX_LENGTH (32 + sizeof(gMirageTower_Gfx))
|
||||
#define MIRAGE_TOWER_PALETTE_LENGTH 0x800
|
||||
#define ROOT_FOSSIL_GFX_LENGTH sizeof(gRootFossil_Gfx)
|
||||
#define ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH 0x100
|
||||
|
||||
//struct
|
||||
struct Struct8617DA4 {
|
||||
struct Struct8617DA4
|
||||
{
|
||||
u8 x;
|
||||
u8 y;
|
||||
u16 tileId;
|
||||
};
|
||||
|
||||
struct Struct203CF10 {
|
||||
struct Struct203CF10
|
||||
{
|
||||
u8 *buffer;
|
||||
u8 curr_buffer_index;
|
||||
u8 currIndex;
|
||||
};
|
||||
|
||||
struct DynamicSpriteFrameImage{
|
||||
struct DynamicSpriteFrameImage
|
||||
{
|
||||
u8 *data;
|
||||
u16 size;
|
||||
};
|
||||
|
||||
struct Struct203CF0C {
|
||||
struct Struct203CF0C
|
||||
{
|
||||
u8 *frameImageTiles;
|
||||
struct DynamicSpriteFrameImage *frameImage;
|
||||
u8 spriteId;
|
||||
@ -52,10 +55,10 @@ static void sub_81BED50(u8 taskId);
|
||||
static void sub_81BEBF4(u8 taskId);
|
||||
static void sub_81BF028(u8 taskId);
|
||||
static void sub_81BF248(struct Sprite *);
|
||||
/*static*/ void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
|
||||
static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e);
|
||||
|
||||
// .rodata
|
||||
static const u8 gUnknown_08617274[] = {00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00, 00};
|
||||
static const u8 gUnknown_08617274[32] = {0};
|
||||
static const u8 gMirageTower_Gfx[] = INCBIN_U8("graphics/misc/mirage_tower.4bpp");
|
||||
static const u16 gUnknown_08617B94[] = INCBIN_U16("graphics/misc/mirage_tower.bin");
|
||||
static const u16 gRootFossil_Pal[] = INCBIN_U16("graphics/misc/fossil.gbapal");
|
||||
@ -64,16 +67,16 @@ static const u8 gMirageTowerCrumbles_Gfx[] = INCBIN_U8("graphics/misc/mirage_tow
|
||||
static const u16 gMirageTowerCrumbles_Palette[] = INCBIN_U16("graphics/misc/mirage_tower_crumbles.gbapal");
|
||||
|
||||
const s16 gUnknown_08617D64[][3] =
|
||||
{
|
||||
{ 0, 10, 65},
|
||||
{ 17, 3, 50},
|
||||
{-12, 0, 75},
|
||||
{ 10, 15, 90},
|
||||
{ 7, 8, 65},
|
||||
{-18, 5, 75},
|
||||
{ 22, -10, 55},
|
||||
{-24, -4, 65},
|
||||
};
|
||||
{
|
||||
{ 0, 10, 65},
|
||||
{ 17, 3, 50},
|
||||
{-12, 0, 75},
|
||||
{ 10, 15, 90},
|
||||
{ 7, 8, 65},
|
||||
{-18, 5, 75},
|
||||
{ 22, -10, 55},
|
||||
{-24, -4, 65},
|
||||
};
|
||||
|
||||
const struct SpriteSheet gUnknown_08617D94[] =
|
||||
{
|
||||
@ -82,26 +85,26 @@ const struct SpriteSheet gUnknown_08617D94[] =
|
||||
};
|
||||
|
||||
static const struct Struct8617DA4 gUnknown_08617DA4[] =
|
||||
{
|
||||
{0x12, 0x35, 0x251},
|
||||
{0x13, 0x35, 0x251},
|
||||
{0x14, 0x35, 0x251},
|
||||
{0x12, 0x36, 0x251},
|
||||
{0x13, 0x36, 0x251},
|
||||
{0x14, 0x36, 0x251},
|
||||
{0x12, 0x37, 0x251},
|
||||
{0x13, 0x37, 0x251},
|
||||
{0x14, 0x37, 0x251},
|
||||
{0x12, 0x38, 0x251},
|
||||
{0x13, 0x38, 0x251},
|
||||
{0x14, 0x38, 0x251},
|
||||
{0x12, 0x39, 0x259},
|
||||
{0x13, 0x39, 0x259},
|
||||
{0x14, 0x39, 0x259},
|
||||
{0x12, 0x3A, 0x121},
|
||||
{0x13, 0x3A, 0x121},
|
||||
{0x14, 0x3A, 0x121},
|
||||
};
|
||||
{
|
||||
{0x12, 0x35, 0x251},
|
||||
{0x13, 0x35, 0x251},
|
||||
{0x14, 0x35, 0x251},
|
||||
{0x12, 0x36, 0x251},
|
||||
{0x13, 0x36, 0x251},
|
||||
{0x14, 0x36, 0x251},
|
||||
{0x12, 0x37, 0x251},
|
||||
{0x13, 0x37, 0x251},
|
||||
{0x14, 0x37, 0x251},
|
||||
{0x12, 0x38, 0x251},
|
||||
{0x13, 0x38, 0x251},
|
||||
{0x14, 0x38, 0x251},
|
||||
{0x12, 0x39, 0x259},
|
||||
{0x13, 0x39, 0x259},
|
||||
{0x14, 0x39, 0x259},
|
||||
{0x12, 0x3A, 0x121},
|
||||
{0x13, 0x3A, 0x121},
|
||||
{0x14, 0x3A, 0x121},
|
||||
};
|
||||
|
||||
static const union AnimCmd gSpriteAnim_8617DEC[] =
|
||||
{
|
||||
@ -131,67 +134,70 @@ static const union AnimCmd *const gSpriteAnimTable_8617DFC[] =
|
||||
gSpriteAnim_8617DEC,
|
||||
};
|
||||
|
||||
static const struct SpriteTemplate gUnknown_08617E00 = {
|
||||
static const struct SpriteTemplate gUnknown_08617E00 =
|
||||
{
|
||||
0xFFFF, 0xFFFF, &gOamData_8617DF4, gSpriteAnimTable_8617DFC, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
|
||||
};
|
||||
|
||||
// ewram
|
||||
EWRAM_DATA u8* gUnknown_0203CF04 = NULL;
|
||||
EWRAM_DATA u8* gUnknown_0203CF08 = NULL;
|
||||
EWRAM_DATA struct Struct203CF0C *gUnknown_0203CF0C = NULL;
|
||||
EWRAM_DATA struct Struct203CF10 *gUnknown_0203CF10 = NULL;
|
||||
EWRAM_DATA u16 *gUnknown_0203CF14 = NULL;
|
||||
// EWRAM
|
||||
EWRAM_DATA static u8* sUnknown_0203CF04 = NULL;
|
||||
EWRAM_DATA static u8* sUnknown_0203CF08 = NULL;
|
||||
EWRAM_DATA static struct Struct203CF0C *sUnknown_0203CF0C = NULL;
|
||||
EWRAM_DATA static struct Struct203CF10 *sUnknown_0203CF10 = NULL;
|
||||
EWRAM_DATA static u16 *sUnknown_0203CF14 = NULL;
|
||||
|
||||
// iwram
|
||||
IWRAM_DATA u16 gUnknown_030012A8[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||
// IWRAM bss
|
||||
IWRAM_DATA static u16 gUnknown_030012A8[8];
|
||||
|
||||
// text
|
||||
void sub_81BEB24(void)
|
||||
{
|
||||
u8 i;
|
||||
for(i = 0; i < (sizeof(gUnknown_08617DA4)/sizeof(gUnknown_08617DA4[0])); i++)
|
||||
for (i = 0; i < (sizeof(gUnknown_08617DA4)/sizeof(gUnknown_08617DA4[0])); i++)
|
||||
MapGridSetMetatileIdAt(gUnknown_08617DA4[i].x + 7, gUnknown_08617DA4[i].y + 7, gUnknown_08617DA4[i].tileId);
|
||||
DrawWholeMapView();
|
||||
}
|
||||
|
||||
void sub_81BEB54(void)
|
||||
{
|
||||
CreateTask(sub_81BED50, 0x9);
|
||||
CreateTask(sub_81BED50, 9);
|
||||
}
|
||||
|
||||
void sub_81BEB68(void)
|
||||
{
|
||||
CreateTask(sub_81BEBF4, 0x9);
|
||||
CreateTask(sub_81BEBF4, 9);
|
||||
}
|
||||
|
||||
void sub_81BEB7C(void)
|
||||
{
|
||||
CreateTask(sub_81BF028, 0x9);
|
||||
CreateTask(sub_81BF028, 9);
|
||||
}
|
||||
|
||||
void sub_81BEB90(void)
|
||||
{
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, gUnknown_0203CF14[0]);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, gUnknown_0203CF14[1]);
|
||||
SetGpuReg(REG_OFFSET_BG0HOFS, sUnknown_0203CF14[0]);
|
||||
SetGpuReg(REG_OFFSET_BG0VOFS, sUnknown_0203CF14[1]);
|
||||
}
|
||||
|
||||
void sub_81BEBB4(u8 taskId)
|
||||
{
|
||||
if(!(gTasks[taskId].data[0]))
|
||||
if (!(gTasks[taskId].data[0]))
|
||||
{
|
||||
gUnknown_0203CF14[0] = -gUnknown_0203CF14[0];
|
||||
sUnknown_0203CF14[0] = -sUnknown_0203CF14[0];
|
||||
gTasks[taskId].data[0] = 2;
|
||||
sub_81BEB90();
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]--;
|
||||
}
|
||||
}
|
||||
|
||||
static void sub_81BEBF4(u8 taskId)
|
||||
{
|
||||
u8 zero;
|
||||
|
||||
switch(gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 0:
|
||||
FreeAllWindowBuffers();
|
||||
@ -199,19 +205,19 @@ static void sub_81BEBF4(u8 taskId)
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 1:
|
||||
gUnknown_0203CF04 = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
|
||||
gUnknown_0203CF08 = (u8 *)AllocZeroed(MIRAGE_TOWER_PALETTE_LENGTH);
|
||||
sUnknown_0203CF04 = (u8 *)AllocZeroed(MIRAGE_TOWER_GFX_LENGTH);
|
||||
sUnknown_0203CF08 = (u8 *)AllocZeroed(MIRAGE_TOWER_PALETTE_LENGTH);
|
||||
ChangeBgX(0, 0, 0);
|
||||
ChangeBgY(0, 0, 0);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 2:
|
||||
CpuSet(gUnknown_08617274, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH / 2);
|
||||
LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||
CpuSet(gUnknown_08617274, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH / 2);
|
||||
LoadBgTiles(0, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 3:
|
||||
SetBgTilemapBuffer(0, gUnknown_0203CF08);
|
||||
SetBgTilemapBuffer(0, sUnknown_0203CF08);
|
||||
CopyToBgTilemapBufferRect_ChangePalette(0, &gUnknown_08617B94, 12, 29, 6, 12, 17);
|
||||
CopyBgTilemapBufferToVram(0);
|
||||
gTasks[taskId].data[0]++;
|
||||
@ -225,10 +231,10 @@ static void sub_81BEBF4(u8 taskId)
|
||||
gTasks[taskId].data[0]++;
|
||||
break;
|
||||
case 6:
|
||||
gUnknown_0203CF14 = (u16 *)Alloc(4);
|
||||
sUnknown_0203CF14 = Alloc(4);
|
||||
zero = 0;
|
||||
gUnknown_0203CF14[0] = 2;
|
||||
gUnknown_0203CF14[1] = zero;
|
||||
sUnknown_0203CF14[0] = 2;
|
||||
sUnknown_0203CF14[1] = zero;
|
||||
CreateTask(sub_81BEBB4, 0xA);
|
||||
DestroyTask(taskId);
|
||||
EnableBothScriptContexts();
|
||||
@ -236,86 +242,76 @@ static void sub_81BEBF4(u8 taskId)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
#define OUTER_BUFFER_LENGTH 0x60
|
||||
#define INNER_BUFFER_LENGTH 0x30
|
||||
static void sub_81BED50(u8 taskId)
|
||||
{
|
||||
u8 anotherTaskId, j;
|
||||
u16 i;
|
||||
u8 index;
|
||||
|
||||
|
||||
switch(gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 1:
|
||||
gUnknown_0203CF10 = (struct Struct203CF10 *)AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
|
||||
sUnknown_0203CF10 = AllocZeroed(OUTER_BUFFER_LENGTH * sizeof(struct Struct203CF10));
|
||||
break;
|
||||
case 3:
|
||||
if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
|
||||
{
|
||||
u16 i;
|
||||
u16 left;
|
||||
u32 index, next;
|
||||
|
||||
index = (u16)gTasks[taskId].data[3];
|
||||
if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
|
||||
if (gTasks[taskId].data[1] > 1)
|
||||
{
|
||||
if(gTasks[taskId].data[1] > 1)
|
||||
index = gTasks[taskId].data[3];
|
||||
sUnknown_0203CF10[index].buffer = Alloc(INNER_BUFFER_LENGTH);
|
||||
for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
|
||||
sUnknown_0203CF10[index].buffer[i] = i;
|
||||
for (i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
|
||||
{
|
||||
index = (u8)index;
|
||||
gUnknown_0203CF10[index].buffer = (u8 *)Alloc(INNER_BUFFER_LENGTH);
|
||||
for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
|
||||
gUnknown_0203CF10[index].buffer[i] = i;
|
||||
for(i = 0; i <= (INNER_BUFFER_LENGTH - 1); i++)
|
||||
{
|
||||
u16 rand1, rand2, temp;
|
||||
u16 rand1, rand2, temp;
|
||||
|
||||
rand1 = Random() % 0x30;
|
||||
rand2 = Random() % 0x30;
|
||||
temp = gUnknown_0203CF10[index].buffer[rand2];
|
||||
gUnknown_0203CF10[index].buffer[rand2] = gUnknown_0203CF10[index].buffer[rand1];
|
||||
gUnknown_0203CF10[index].buffer[rand1] = temp;
|
||||
}
|
||||
if(gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
|
||||
gTasks[taskId].data[3]++;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
rand1 = Random() % 0x30;
|
||||
rand2 = Random() % 0x30;
|
||||
SWAP(sUnknown_0203CF10[index].buffer[rand2], sUnknown_0203CF10[index].buffer[rand1], temp);
|
||||
}
|
||||
gTasks[taskId].data[1]++;
|
||||
if (gTasks[taskId].data[3] <= (OUTER_BUFFER_LENGTH - 1))
|
||||
gTasks[taskId].data[3]++;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
}
|
||||
index = (u8)gTasks[taskId].data[3];
|
||||
for(left = (u8)gTasks[taskId].data[2]; left < (u16)index; left = next)
|
||||
{
|
||||
j = 0;
|
||||
next = left + 1;
|
||||
while(!j)
|
||||
{
|
||||
sub_81BF2B8(gUnknown_0203CF04, ((((OUTER_BUFFER_LENGTH - 1) - left) * INNER_BUFFER_LENGTH) + gUnknown_0203CF10[left].buffer[(gUnknown_0203CF10[left].curr_buffer_index)++]), 0, INNER_BUFFER_LENGTH, 1);
|
||||
j++;
|
||||
}
|
||||
if(gUnknown_0203CF10[left].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
|
||||
{
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF10[left].buffer);
|
||||
gTasks[taskId].data[2]++;
|
||||
if((left % 2) == 1)
|
||||
gUnknown_0203CF14[1]--;
|
||||
}
|
||||
}
|
||||
LoadBgTiles(0, gUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||
if(gUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].curr_buffer_index > (INNER_BUFFER_LENGTH - 1))
|
||||
break;
|
||||
return;
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
index = gTasks[taskId].data[3];
|
||||
for (i = (u8)(gTasks[taskId].data[2]); i < index; i++)
|
||||
{
|
||||
for (j = 0; j < 1; j++)
|
||||
{
|
||||
sub_81BF2B8(sUnknown_0203CF04,
|
||||
((((OUTER_BUFFER_LENGTH - 1) - i) * INNER_BUFFER_LENGTH) + sUnknown_0203CF10[i].buffer[(sUnknown_0203CF10[i].currIndex)++]),
|
||||
0, INNER_BUFFER_LENGTH, 1);
|
||||
}
|
||||
if (sUnknown_0203CF10[i].currIndex > (INNER_BUFFER_LENGTH - 1))
|
||||
{
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF10[i].buffer);
|
||||
gTasks[taskId].data[2]++;
|
||||
if ((i % 2) == 1)
|
||||
sUnknown_0203CF14[1]--;
|
||||
}
|
||||
}
|
||||
LoadBgTiles(0, sUnknown_0203CF04, MIRAGE_TOWER_GFX_LENGTH, 0);
|
||||
if (sUnknown_0203CF10[OUTER_BUFFER_LENGTH - 1].currIndex > (INNER_BUFFER_LENGTH - 1))
|
||||
break;
|
||||
return;
|
||||
case 4:
|
||||
UnsetBgTilemapBuffer(0);
|
||||
anotherTaskId = FindTaskIdByFunc(sub_81BEBB4);
|
||||
if(anotherTaskId != 0xFF)
|
||||
if (anotherTaskId != 0xFF)
|
||||
DestroyTask(anotherTaskId);
|
||||
gUnknown_0203CF14[1] = gUnknown_0203CF14[0] = 0;
|
||||
sUnknown_0203CF14[1] = sUnknown_0203CF14[0] = 0;
|
||||
sub_81BEB90();
|
||||
break;
|
||||
case 5:
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF14);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF10);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF04);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF08);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF14);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF10);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF04);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF08);
|
||||
break;
|
||||
case 6:
|
||||
SetGpuRegBits(REG_OFFSET_BG2CNT, 0x2);
|
||||
@ -334,423 +330,75 @@ static void sub_81BED50(u8 taskId)
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
|
||||
#else
|
||||
NAKED
|
||||
static void sub_81BED50(u8 taskId)
|
||||
{
|
||||
asm("\n\
|
||||
.syntax unified\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
sub sp, 0x10\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
mov r10, r0\n\
|
||||
ldr r1, =gTasks\n\
|
||||
lsls r0, 2\n\
|
||||
add r0, r10\n\
|
||||
lsls r0, 3\n\
|
||||
adds r0, r1\n\
|
||||
ldrh r0, [r0, 0x8]\n\
|
||||
subs r0, 0x1\n\
|
||||
lsls r0, 16\n\
|
||||
asrs r0, 16\n\
|
||||
adds r6, r1, 0\n\
|
||||
cmp r0, 0x7\n\
|
||||
bls _081BED7C\n\
|
||||
b _081BF002\n\
|
||||
_081BED7C:\n\
|
||||
lsls r0, 2\n\
|
||||
ldr r1, =_081BED90\n\
|
||||
adds r0, r1\n\
|
||||
ldr r0, [r0]\n\
|
||||
mov pc, r0\n\
|
||||
.pool\n\
|
||||
.align 2, 0\n\
|
||||
_081BED90:\n\
|
||||
.4byte _081BEDB0\n\
|
||||
.4byte _081BF002\n\
|
||||
.4byte _081BEDC4\n\
|
||||
.4byte _081BEF64\n\
|
||||
.4byte _081BEF94\n\
|
||||
.4byte _081BEFD0\n\
|
||||
.4byte _081BEFF0\n\
|
||||
.4byte _081BEFF8\n\
|
||||
_081BEDB0:\n\
|
||||
ldr r4, =gUnknown_0203CF10\n\
|
||||
movs r0, 0xC0\n\
|
||||
lsls r0, 2\n\
|
||||
bl AllocZeroed\n\
|
||||
str r0, [r4]\n\
|
||||
b _081BF002\n\
|
||||
.pool\n\
|
||||
_081BEDC4:\n\
|
||||
mov r1, r10\n\
|
||||
lsls r0, r1, 2\n\
|
||||
adds r1, r0, r1\n\
|
||||
lsls r1, 3\n\
|
||||
adds r2, r1, r6\n\
|
||||
ldrh r3, [r2, 0xE]\n\
|
||||
movs r4, 0xE\n\
|
||||
ldrsh r1, [r2, r4]\n\
|
||||
str r0, [sp, 0x8]\n\
|
||||
cmp r1, 0x5F\n\
|
||||
bgt _081BEE8A\n\
|
||||
movs r1, 0xA\n\
|
||||
ldrsh r0, [r2, r1]\n\
|
||||
cmp r0, 0x1\n\
|
||||
ble _081BEE7C\n\
|
||||
lsls r0, r3, 24\n\
|
||||
lsrs r4, r0, 24\n\
|
||||
movs r0, 0x30\n\
|
||||
bl Alloc\n\
|
||||
ldr r3, =gUnknown_0203CF10\n\
|
||||
ldr r1, [r3]\n\
|
||||
lsls r2, r4, 3\n\
|
||||
adds r1, r2, r1\n\
|
||||
str r0, [r1]\n\
|
||||
movs r5, 0\n\
|
||||
adds r4, r2, 0\n\
|
||||
_081BEDFA:\n\
|
||||
ldr r0, [r3]\n\
|
||||
adds r0, r4, r0\n\
|
||||
ldr r0, [r0]\n\
|
||||
adds r0, r5\n\
|
||||
strb r5, [r0]\n\
|
||||
adds r0, r5, 0x1\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
cmp r5, 0x2F\n\
|
||||
bls _081BEDFA\n\
|
||||
movs r5, 0\n\
|
||||
ldr r7, =gUnknown_0203CF10\n\
|
||||
adds r6, r2, 0\n\
|
||||
_081BEE14:\n\
|
||||
bl Random\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
movs r1, 0x30\n\
|
||||
bl __umodsi3\n\
|
||||
adds r4, r0, 0\n\
|
||||
lsls r4, 16\n\
|
||||
lsrs r4, 16\n\
|
||||
bl Random\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
movs r1, 0x30\n\
|
||||
bl __umodsi3\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r0, 16\n\
|
||||
ldr r1, [r7]\n\
|
||||
adds r1, r6, r1\n\
|
||||
ldr r1, [r1]\n\
|
||||
adds r0, r1, r0\n\
|
||||
ldrb r2, [r0]\n\
|
||||
adds r1, r4 \n\
|
||||
ldrb r1, [r1]\n\
|
||||
strb r1, [r0]\n\
|
||||
ldr r0, [r7]\n\
|
||||
adds r0, r6, r0\n\
|
||||
ldr r0, [r0]\n\
|
||||
adds r0, r4\n\
|
||||
strb r2, [r0]\n\
|
||||
adds r0, r5, 0x1\n\
|
||||
lsls r0, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
cmp r5, 0x2F\n\
|
||||
bls _081BEE14\n\
|
||||
ldr r0, =gTasks\n\
|
||||
ldr r1, [sp, 0x8]\n\
|
||||
add r1, r10\n\
|
||||
lsls r1, 3\n\
|
||||
adds r2, r1, r0\n\
|
||||
ldrh r3, [r2, 0xE]\n\
|
||||
movs r4, 0xE\n\
|
||||
ldrsh r1, [r2, r4]\n\
|
||||
adds r6, r0, 0\n\
|
||||
cmp r1, 0x5F\n\
|
||||
bgt _081BEE78\n\
|
||||
adds r0, r3, 0x1\n\
|
||||
strh r0, [r2, 0xE]\n\
|
||||
_081BEE78:\n\
|
||||
movs r0, 0\n\
|
||||
strh r0, [r2, 0xA]\n\
|
||||
_081BEE7C:\n\
|
||||
ldr r1, [sp, 0x8]\n\
|
||||
add r1, r10\n\
|
||||
lsls r1, 3\n\
|
||||
adds r1, r6\n\
|
||||
ldrh r0, [r1, 0xA]\n\
|
||||
adds r0, 0x1\n\
|
||||
strh r0, [r1, 0xA]\n\
|
||||
_081BEE8A:\n\
|
||||
ldr r0, [sp, 0x8]\n\
|
||||
add r0, r10\n\
|
||||
lsls r0, 3\n\
|
||||
adds r0, r6\n\
|
||||
ldrb r4, [r0, 0xE]\n\
|
||||
ldrb r5, [r0, 0xC]\n\
|
||||
lsls r0, r4, 16\n\
|
||||
cmp r5, r4\n\
|
||||
bcs _081BEF32\n\
|
||||
str r0, [sp, 0xC]\n\
|
||||
_081BEE9E:\n\
|
||||
movs r6, 0\n\
|
||||
adds r0, r5, 0x1\n\
|
||||
str r0, [sp, 0x4]\n\
|
||||
lsls r4, r5, 3\n\
|
||||
movs r2, 0x5F\n\
|
||||
subs r1, r2, r5\n\
|
||||
lsls r0, r1, 1\n\
|
||||
adds r0, r1\n\
|
||||
lsls r0, 4\n\
|
||||
mov r9, r0\n\
|
||||
_081BEEB2:\n\
|
||||
ldr r0, =gUnknown_0203CF04\n\
|
||||
ldr r0, [r0]\n\
|
||||
ldr r7, =gUnknown_0203CF10\n\
|
||||
ldr r3, [r7]\n\
|
||||
adds r3, r4, r3\n\
|
||||
ldrb r2, [r3, 0x4]\n\
|
||||
adds r1, r2, 0x1\n\
|
||||
strb r1, [r3, 0x4]\n\
|
||||
lsls r2, 24\n\
|
||||
lsrs r2, 24\n\
|
||||
ldr r1, [r3]\n\
|
||||
adds r1, r2\n\
|
||||
ldrb r1, [r1]\n\
|
||||
add r1, r9\n\
|
||||
lsls r1, 16\n\
|
||||
lsrs r1, 16\n\
|
||||
movs r2, 0x1\n\
|
||||
mov r8, r2\n\
|
||||
str r2, [sp]\n\
|
||||
movs r2, 0\n\
|
||||
movs r3, 0x30\n\
|
||||
bl sub_81BF2B8\n\
|
||||
adds r0, r6, 0x1\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r6, r0, 24\n\
|
||||
cmp r6, 0\n\
|
||||
beq _081BEEB2\n\
|
||||
ldr r0, [r7]\n\
|
||||
adds r1, r4, r0\n\
|
||||
ldrb r0, [r1, 0x4]\n\
|
||||
cmp r0, 0x2F\n\
|
||||
bls _081BEF24\n\
|
||||
ldr r0, [r1]\n\
|
||||
bl Free\n\
|
||||
ldr r0, [r7]\n\
|
||||
adds r0, r4, r0\n\
|
||||
movs r1, 0\n\
|
||||
str r1, [r0]\n\
|
||||
ldr r1, [sp, 0x8]\n\
|
||||
add r1, r10\n\
|
||||
lsls r1, 3\n\
|
||||
ldr r4, =gTasks\n\
|
||||
adds r1, r4\n\
|
||||
ldrh r0, [r1, 0xC]\n\
|
||||
adds r0, 0x1\n\
|
||||
strh r0, [r1, 0xC]\n\
|
||||
mov r0, r8\n\
|
||||
ands r5, r0\n\
|
||||
cmp r5, 0x1\n\
|
||||
bne _081BEF24\n\
|
||||
ldr r0, =gUnknown_0203CF14\n\
|
||||
ldr r1, [r0]\n\
|
||||
ldrh r0, [r1, 0x2]\n\
|
||||
subs r0, 0x1\n\
|
||||
strh r0, [r1, 0x2]\n\
|
||||
_081BEF24:\n\
|
||||
ldr r1, [sp, 0x4]\n\
|
||||
lsls r0, r1, 16\n\
|
||||
lsrs r5, r0, 16\n\
|
||||
ldr r2, [sp, 0xC]\n\
|
||||
lsrs r0, r2, 16\n\
|
||||
cmp r5, r0\n\
|
||||
bcc _081BEE9E\n\
|
||||
_081BEF32:\n\
|
||||
ldr r0, =gUnknown_0203CF04\n\
|
||||
ldr r1, [r0]\n\
|
||||
movs r2, 0x92\n\
|
||||
lsls r2, 4\n\
|
||||
movs r0, 0\n\
|
||||
movs r3, 0\n\
|
||||
bl LoadBgTiles\n\
|
||||
ldr r0, =gUnknown_0203CF10\n\
|
||||
ldr r0, [r0]\n\
|
||||
movs r4, 0xBE\n\
|
||||
lsls r4, 2\n\
|
||||
adds r0, r4\n\
|
||||
ldrb r0, [r0, 0x4]\n\
|
||||
cmp r0, 0x2F\n\
|
||||
bhi _081BF002\n\
|
||||
b _081BF014\n\
|
||||
.pool\n\
|
||||
_081BEF64:\n\
|
||||
movs r0, 0\n\
|
||||
bl UnsetBgTilemapBuffer\n\
|
||||
ldr r0, =sub_81BEBB4\n\
|
||||
bl FindTaskIdByFunc\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r0, 24\n\
|
||||
cmp r0, 0xFF\n\
|
||||
beq _081BEF7C\n\
|
||||
bl DestroyTask\n\
|
||||
_081BEF7C:\n\
|
||||
ldr r0, =gUnknown_0203CF14\n\
|
||||
ldr r1, [r0]\n\
|
||||
movs r0, 0\n\
|
||||
strh r0, [r1]\n\
|
||||
strh r0, [r1, 0x2]\n\
|
||||
bl sub_81BEB90\n\
|
||||
b _081BF002\n\
|
||||
.pool\n\
|
||||
_081BEF94:\n\
|
||||
ldr r4, =gUnknown_0203CF14\n\
|
||||
ldr r0, [r4]\n\
|
||||
bl Free\n\
|
||||
movs r5, 0\n\
|
||||
str r5, [r4]\n\
|
||||
ldr r4, =gUnknown_0203CF10\n\
|
||||
ldr r0, [r4]\n\
|
||||
bl Free\n\
|
||||
str r5, [r4]\n\
|
||||
ldr r4, =gUnknown_0203CF04\n\
|
||||
ldr r0, [r4]\n\
|
||||
bl Free\n\
|
||||
str r5, [r4]\n\
|
||||
ldr r4, =gUnknown_0203CF08\n\
|
||||
ldr r0, [r4]\n\
|
||||
bl Free\n\
|
||||
str r5, [r4]\n\
|
||||
b _081BF002\n\
|
||||
.pool\n\
|
||||
_081BEFD0:\n\
|
||||
movs r0, 0xC\n\
|
||||
movs r1, 0x2\n\
|
||||
bl SetGpuRegBits\n\
|
||||
movs r0, 0x8\n\
|
||||
movs r1, 0\n\
|
||||
bl SetGpuRegBits\n\
|
||||
movs r0, 0\n\
|
||||
movs r1, 0x7\n\
|
||||
movs r2, 0\n\
|
||||
bl SetBgAttribute\n\
|
||||
bl sub_81971D0\n\
|
||||
b _081BF002\n\
|
||||
_081BEFF0:\n\
|
||||
movs r0, 0\n\
|
||||
bl ShowBg\n\
|
||||
b _081BF002\n\
|
||||
_081BEFF8:\n\
|
||||
mov r0, r10\n\
|
||||
bl DestroyTask\n\
|
||||
bl EnableBothScriptContexts\n\
|
||||
_081BF002:\n\
|
||||
ldr r0, =gTasks\n\
|
||||
mov r2, r10\n\
|
||||
lsls r1, r2, 2\n\
|
||||
add r1, r10\n\
|
||||
lsls r1, 3\n\
|
||||
adds r1, r0\n\
|
||||
ldrh r0, [r1, 0x8]\n\
|
||||
adds r0, 0x1\n\
|
||||
strh r0, [r1, 0x8]\n\
|
||||
_081BF014:\n\
|
||||
add sp, 0x10\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\n\
|
||||
.syntax divided");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
||||
static void sub_81BF028(u8 taskId)
|
||||
{
|
||||
u16 i;
|
||||
u8 *buffer;
|
||||
|
||||
switch(gTasks[taskId].data[0])
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 1:
|
||||
gUnknown_0203CF0C = (struct Struct203CF0C *)AllocZeroed(sizeof(struct Struct203CF0C));
|
||||
gUnknown_0203CF0C->frameImageTiles = (u8 *)AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
|
||||
gUnknown_0203CF0C->frameImage = (struct DynamicSpriteFrameImage *) AllocZeroed(sizeof(struct DynamicSpriteFrameImage));
|
||||
gUnknown_0203CF0C->unkC = (u16 *)AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
|
||||
gUnknown_0203CF0C->unk10 = 0;
|
||||
sUnknown_0203CF0C = AllocZeroed(sizeof(*sUnknown_0203CF0C));
|
||||
sUnknown_0203CF0C->frameImageTiles = AllocZeroed(ROOT_FOSSIL_GFX_LENGTH);
|
||||
sUnknown_0203CF0C->frameImage = AllocZeroed(sizeof(*sUnknown_0203CF0C->frameImage));
|
||||
sUnknown_0203CF0C->unkC = AllocZeroed(ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16));
|
||||
sUnknown_0203CF0C->unk10 = 0;
|
||||
break;
|
||||
case 2:
|
||||
{
|
||||
u8 *buffer;
|
||||
buffer = gUnknown_0203CF0C->frameImageTiles;
|
||||
for(i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
|
||||
*buffer = gRootFossil_Gfx[i];
|
||||
}
|
||||
buffer = sUnknown_0203CF0C->frameImageTiles;
|
||||
for (i = 0; i < ROOT_FOSSIL_GFX_LENGTH; i++, buffer++)
|
||||
*buffer = gRootFossil_Gfx[i];
|
||||
break;
|
||||
case 3:
|
||||
gUnknown_0203CF0C->frameImage->data = gUnknown_0203CF0C->frameImageTiles;
|
||||
gUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
|
||||
sUnknown_0203CF0C->frameImage->data = sUnknown_0203CF0C->frameImageTiles;
|
||||
sUnknown_0203CF0C->frameImage->size = ROOT_FOSSIL_GFX_LENGTH;
|
||||
break;
|
||||
case 4:
|
||||
{
|
||||
u8 spriteId, zero;
|
||||
struct SpriteTemplate fossilTemplate;
|
||||
|
||||
fossilTemplate = gUnknown_08617E00;
|
||||
fossilTemplate.images = (struct SpriteFrameImage *)(gUnknown_0203CF0C->frameImage);
|
||||
spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
|
||||
gUnknown_0203CF0C->spriteId = spriteId;
|
||||
zero = 0;
|
||||
gSprites[gUnknown_0203CF0C->spriteId].centerToCornerVecX = zero;
|
||||
gSprites[gUnknown_0203CF0C->spriteId].data[0] = gSprites[gUnknown_0203CF0C->spriteId].pos1.x;
|
||||
gSprites[gUnknown_0203CF0C->spriteId].data[1] = 1;
|
||||
fossilTemplate.images = (struct SpriteFrameImage *)(sUnknown_0203CF0C->frameImage);
|
||||
sUnknown_0203CF0C->spriteId = CreateSprite(&fossilTemplate, 128, -16, 1);
|
||||
gSprites[sUnknown_0203CF0C->spriteId].centerToCornerVecX = 0;
|
||||
gSprites[sUnknown_0203CF0C->spriteId].data[0] = gSprites[sUnknown_0203CF0C->spriteId].pos1.x;
|
||||
gSprites[sUnknown_0203CF0C->spriteId].data[1] = 1;
|
||||
}
|
||||
case 5:
|
||||
for(i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
|
||||
gUnknown_0203CF0C->unkC[i] = i;
|
||||
for (i = 0; i < ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH; i++)
|
||||
sUnknown_0203CF0C->unkC[i] = i;
|
||||
break;
|
||||
case 6:
|
||||
for (i = 0; i < (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)); i++)
|
||||
{
|
||||
u16 rand1, rand2, temp, j;
|
||||
j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
|
||||
for(i = 0; i <= j; i++)
|
||||
{
|
||||
rand1 = Random() % 0x100;
|
||||
rand2 = Random() % 0x100;
|
||||
j = (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH * sizeof(u16)) - 1;
|
||||
temp = gUnknown_0203CF0C->unkC[rand2];
|
||||
gUnknown_0203CF0C->unkC[rand2] = gUnknown_0203CF0C->unkC[rand1];
|
||||
gUnknown_0203CF0C->unkC[rand1] = temp;
|
||||
}
|
||||
gSprites[gUnknown_0203CF0C->spriteId].callback = sub_81BF248;
|
||||
break;
|
||||
u16 rand1, rand2, temp;
|
||||
|
||||
rand1 = Random() % 0x100;
|
||||
rand2 = Random() % 0x100;
|
||||
SWAP(sUnknown_0203CF0C->unkC[rand2], sUnknown_0203CF0C->unkC[rand1], temp);
|
||||
}
|
||||
gSprites[sUnknown_0203CF0C->spriteId].callback = sub_81BF248;
|
||||
break;
|
||||
case 7:
|
||||
if(gSprites[gUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
|
||||
if (gSprites[sUnknown_0203CF0C->spriteId].callback != SpriteCallbackDummy)
|
||||
return;
|
||||
DestroySprite(&gSprites[gUnknown_0203CF0C->spriteId]);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF0C->unkC);;
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImage);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF0C->frameImageTiles);
|
||||
FREE_AND_SET_NULL(gUnknown_0203CF0C);
|
||||
DestroySprite(&gSprites[sUnknown_0203CF0C->spriteId]);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF0C->unkC);;
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImage);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF0C->frameImageTiles);
|
||||
FREE_AND_SET_NULL(sUnknown_0203CF0C);
|
||||
break;
|
||||
case 8:
|
||||
EnableBothScriptContexts();
|
||||
break;
|
||||
}
|
||||
++gTasks[taskId].data[0];
|
||||
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
|
||||
static void sub_81BF248(struct Sprite *sprite)
|
||||
{
|
||||
if (gUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
|
||||
if (sUnknown_0203CF0C->unk10 >= (ROOT_FOSSIL_GFX_RANDOMIZER_LENGTH))
|
||||
{
|
||||
sprite->callback = SpriteCallbackDummy;
|
||||
}
|
||||
@ -759,7 +407,7 @@ static void sub_81BF248(struct Sprite *sprite)
|
||||
u8 i;
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
sub_81BF2B8(gUnknown_0203CF0C->frameImageTiles, gUnknown_0203CF0C->unkC[gUnknown_0203CF0C->unk10++], 0, 16, 0);
|
||||
sub_81BF2B8(sUnknown_0203CF0C->frameImageTiles, sUnknown_0203CF0C->unkC[sUnknown_0203CF0C->unk10++], 0, 16, 0);
|
||||
}
|
||||
StartSpriteAnim(sprite, 0);
|
||||
}
|
||||
@ -768,3 +416,146 @@ static void sub_81BF248(struct Sprite *sprite)
|
||||
sprite->pos1.y++;
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NONMATCHING
|
||||
static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
|
||||
{
|
||||
u8 r5, r4, r0, r2;
|
||||
u16 var;
|
||||
|
||||
r4 = r5 = b / d;
|
||||
gUnknown_030012A8[0] = r4;
|
||||
|
||||
r0 = r2 = b % d;
|
||||
gUnknown_030012A8[1] = r2;
|
||||
|
||||
r4 &= 7;
|
||||
r2 &= 7;
|
||||
gUnknown_030012A8[2] = r4;
|
||||
gUnknown_030012A8[3] = r2;
|
||||
|
||||
r0 /= 8;
|
||||
r5 /= 8;
|
||||
gUnknown_030012A8[4] = r0;
|
||||
gUnknown_030012A8[5] = r5;
|
||||
|
||||
var = ((d / 8) * (r5 * 64)) + (r0 * 64);
|
||||
gUnknown_030012A8[6] = var;
|
||||
|
||||
var += (r4 * 8) + r2;
|
||||
gUnknown_030012A8[7] = var;
|
||||
|
||||
// This part is non-matching. 99% sure it IS functionally equivalent, though.
|
||||
b = (b & 1) ^ 1;
|
||||
c = (c << ((b) << 2)) | (15 << ((b ^ 1) << 2));
|
||||
|
||||
a[(var / 2) + (e * 32)] &= c;
|
||||
}
|
||||
|
||||
#else
|
||||
NAKED
|
||||
static void sub_81BF2B8(u8* a, u16 b, u8 c, u8 d, u8 e)
|
||||
{
|
||||
asm_unified("\n\
|
||||
push {r4-r7,lr}\n\
|
||||
mov r7, r10\n\
|
||||
mov r6, r9\n\
|
||||
mov r5, r8\n\
|
||||
push {r5-r7}\n\
|
||||
sub sp, 0x8\n\
|
||||
str r0, [sp]\n\
|
||||
mov r10, r1\n\
|
||||
adds r6, r2, 0\n\
|
||||
mov r8, r3\n\
|
||||
ldr r0, [sp, 0x28]\n\
|
||||
mov r9, r0\n\
|
||||
lsls r1, 16\n\
|
||||
lsrs r1, 16\n\
|
||||
mov r10, r1\n\
|
||||
lsls r6, 24\n\
|
||||
lsrs r6, 24\n\
|
||||
mov r0, r8\n\
|
||||
lsls r0, 24\n\
|
||||
mov r8, r0\n\
|
||||
lsrs r7, r0, 24\n\
|
||||
mov r1, r9\n\
|
||||
lsls r1, 24\n\
|
||||
lsrs r1, 24\n\
|
||||
mov r9, r1\n\
|
||||
mov r0, r10\n\
|
||||
adds r1, r7, 0\n\
|
||||
bl __divsi3\n\
|
||||
adds r5, r0, 0\n\
|
||||
lsls r5, 24\n\
|
||||
lsrs r4, r5, 24\n\
|
||||
ldr r3, =gUnknown_030012A8\n\
|
||||
strh r4, [r3]\n\
|
||||
mov r0, r10\n\
|
||||
adds r1, r7, 0\n\
|
||||
str r3, [sp, 0x4]\n\
|
||||
bl __modsi3\n\
|
||||
lsls r0, 24\n\
|
||||
lsrs r2, r0, 24\n\
|
||||
ldr r3, [sp, 0x4]\n\
|
||||
strh r2, [r3, 0x2]\n\
|
||||
movs r1, 0x7\n\
|
||||
ands r4, r1\n\
|
||||
ands r2, r1\n\
|
||||
strh r4, [r3, 0x4]\n\
|
||||
strh r2, [r3, 0x6]\n\
|
||||
lsrs r0, 27\n\
|
||||
lsrs r5, 27\n\
|
||||
strh r0, [r3, 0x8]\n\
|
||||
strh r5, [r3, 0xA]\n\
|
||||
mov r1, r8\n\
|
||||
lsrs r1, 27\n\
|
||||
lsls r1, 6\n\
|
||||
mov r8, r1\n\
|
||||
mov r1, r8\n\
|
||||
muls r1, r5\n\
|
||||
lsls r0, 6\n\
|
||||
adds r1, r0\n\
|
||||
lsls r1, 16\n\
|
||||
lsrs r1, 16\n\
|
||||
strh r1, [r3, 0xC]\n\
|
||||
lsls r4, 3\n\
|
||||
adds r4, r2\n\
|
||||
adds r1, r4\n\
|
||||
lsls r4, r1, 16\n\
|
||||
lsrs r4, 17\n\
|
||||
strh r1, [r3, 0xE]\n\
|
||||
movs r1, 0x1\n\
|
||||
mov r0, r10\n\
|
||||
ands r1, r0\n\
|
||||
movs r2, 0x1\n\
|
||||
eors r1, r2\n\
|
||||
lsls r0, r1, 2\n\
|
||||
lsls r6, r0\n\
|
||||
eors r1, r2\n\
|
||||
lsls r1, 2\n\
|
||||
movs r0, 0xF\n\
|
||||
lsls r0, r1\n\
|
||||
orrs r6, r0\n\
|
||||
lsls r6, 24\n\
|
||||
lsrs r6, 24\n\
|
||||
mov r1, r9\n\
|
||||
lsls r1, 5\n\
|
||||
mov r9, r1\n\
|
||||
add r9, r4\n\
|
||||
ldr r1, [sp]\n\
|
||||
add r1, r9\n\
|
||||
ldrb r0, [r1]\n\
|
||||
ands r6, r0\n\
|
||||
strb r6, [r1]\n\
|
||||
add sp, 0x8\n\
|
||||
pop {r3-r5}\n\
|
||||
mov r8, r3\n\
|
||||
mov r9, r4\n\
|
||||
mov r10, r5\n\
|
||||
pop {r4-r7}\n\
|
||||
pop {r0}\n\
|
||||
bx r0\n\
|
||||
.pool\n\
|
||||
");
|
||||
}
|
||||
#endif // NONMATCHING
|
||||
|
313
src/mossdeep_gym.c
Normal file
313
src/mossdeep_gym.c
Normal file
@ -0,0 +1,313 @@
|
||||
#include "global.h"
|
||||
#include "event_object_movement.h"
|
||||
#include "fieldmap.h"
|
||||
#include "malloc.h"
|
||||
#include "mossdeep_gym.h"
|
||||
#include "script_movement.h"
|
||||
#include "constants/event_object_movement_constants.h"
|
||||
|
||||
// Movement scripts.
|
||||
extern const u8 gUnknown_08612698[];
|
||||
extern const u8 gUnknown_0861269C[];
|
||||
extern const u8 gUnknown_086126A0[];
|
||||
extern const u8 gUnknown_086126A4[];
|
||||
extern const u8 gUnknown_086126A8[];
|
||||
extern const u8 gUnknown_086126AA[];
|
||||
extern const u8 gUnknown_086126AC[];
|
||||
extern const u8 gUnknown_086126AE[];
|
||||
|
||||
struct MossdeepSubStruct
|
||||
{
|
||||
u8 unk0;
|
||||
u8 eventTemplateId;
|
||||
};
|
||||
|
||||
struct MossdeepStruct
|
||||
{
|
||||
struct MossdeepSubStruct objects[EVENT_OBJECTS_COUNT];
|
||||
u8 count;
|
||||
bool8 unk41;
|
||||
};
|
||||
|
||||
// This file's functions.
|
||||
static void AddEventObject(u8 eventTemplateId, u8 arg1);
|
||||
static void sub_81A8D94(u8 eventTemplateId, u8 arg1);
|
||||
|
||||
// EWRAM vars
|
||||
EWRAM_DATA static struct MossdeepStruct *gUnknown_0203CE50 = NULL;
|
||||
|
||||
// code
|
||||
void InitMossdeepGymTiles(bool8 arg0)
|
||||
{
|
||||
if (gUnknown_0203CE50 == NULL)
|
||||
gUnknown_0203CE50 = AllocZeroed(sizeof(*gUnknown_0203CE50));
|
||||
|
||||
gUnknown_0203CE50->unk41 = arg0;
|
||||
}
|
||||
|
||||
void FinishMossdeepGymTiles(void)
|
||||
{
|
||||
u8 id;
|
||||
|
||||
if (gUnknown_0203CE50 != NULL)
|
||||
FREE_AND_SET_NULL(gUnknown_0203CE50);
|
||||
|
||||
id = GetEventObjectIdByLocalIdAndMap(0xFF, 0, 0);
|
||||
EventObjectClearHeldMovementIfFinished(&gEventObjects[id]);
|
||||
sub_80D338C();
|
||||
}
|
||||
|
||||
u16 MossdeepGym_MoveEvents(u8 arg0)
|
||||
{
|
||||
u8 i;
|
||||
struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
|
||||
u16 localId = 0;
|
||||
|
||||
for (i = 0; i < EVENT_OBJECT_TEMPLATES_COUNT; i++)
|
||||
{
|
||||
s32 var;
|
||||
u8 r5;
|
||||
s16 x = events[i].x + 7;
|
||||
s16 y = events[i].y + 7;
|
||||
u16 metatile = MapGridGetMetatileIdAt(x, y);
|
||||
|
||||
if (!gUnknown_0203CE50->unk41)
|
||||
var = 0x250;
|
||||
else
|
||||
var = 0x298;
|
||||
|
||||
if (metatile < 0x250)
|
||||
continue;
|
||||
|
||||
if ((u8)((metatile - var) / 8) >= 5)
|
||||
continue;
|
||||
if ((u8)((metatile - var) / 8) != arg0)
|
||||
continue;
|
||||
|
||||
r5 = (u8)((metatile - var) % 8);
|
||||
if (r5 < 4)
|
||||
{
|
||||
s8 x = 0;
|
||||
s8 y = 0;
|
||||
const u8 *movementScript;
|
||||
|
||||
switch (r5)
|
||||
{
|
||||
case 0:
|
||||
movementScript = gUnknown_08612698;
|
||||
x = 1;
|
||||
break;
|
||||
case 1:
|
||||
movementScript = gUnknown_0861269C;
|
||||
y = 1;
|
||||
break;
|
||||
case 2:
|
||||
movementScript = gUnknown_086126A0;
|
||||
x = -1;
|
||||
break;
|
||||
case 3:
|
||||
movementScript = gUnknown_086126A4;
|
||||
y = -1;
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
|
||||
events[i].x += x;
|
||||
events[i].y += y;
|
||||
if (GetEventObjectIdByLocalIdAndMap(events[i].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup) != EVENT_OBJECTS_COUNT)
|
||||
{
|
||||
AddEventObject(i, r5);
|
||||
localId = events[i].localId;
|
||||
ScriptMovement_StartObjectMovementScript(localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, movementScript);
|
||||
}
|
||||
else
|
||||
{
|
||||
sub_81A8D94(i, r5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return localId;
|
||||
}
|
||||
|
||||
void MossdeepGym_TurnEvents(void)
|
||||
{
|
||||
u8 i;
|
||||
s32 var;
|
||||
struct EventObjectTemplate *events;
|
||||
|
||||
if (gUnknown_0203CE50 == NULL)
|
||||
return;
|
||||
|
||||
if (!gUnknown_0203CE50->unk41)
|
||||
var = 0x250;
|
||||
else
|
||||
var = 0x298;
|
||||
|
||||
events = gSaveBlock1Ptr->eventObjectTemplates;
|
||||
for (i = 0; i < gUnknown_0203CE50->count; i++)
|
||||
{
|
||||
s32 r6;
|
||||
s8 r0;
|
||||
u8 eventObjectId;
|
||||
s16 x = events[gUnknown_0203CE50->objects[i].eventTemplateId].x + 7;
|
||||
s16 y = events[gUnknown_0203CE50->objects[i].eventTemplateId].y + 7;
|
||||
u16 metatile = MapGridGetMetatileIdAt(x, y);
|
||||
|
||||
r0 = (u8)((metatile - var) % 8);
|
||||
r0 -= (gUnknown_0203CE50->objects[i].unk0);
|
||||
if (r0 < 0 || r0 == 3)
|
||||
{
|
||||
if (r0 == -3)
|
||||
r6 = 1;
|
||||
else
|
||||
r6 = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (r0 > 0)
|
||||
r6 = 1;
|
||||
else
|
||||
r6 = 2;
|
||||
}
|
||||
|
||||
eventObjectId = GetEventObjectIdByLocalIdAndMap(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup);
|
||||
if (eventObjectId != EVENT_OBJECTS_COUNT)
|
||||
{
|
||||
const u8 *movementScript;
|
||||
u8 direction = gEventObjects[eventObjectId].facingDirection;
|
||||
if (r6 == 0)
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case DIR_EAST:
|
||||
movementScript = gUnknown_086126AE;
|
||||
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
|
||||
break;
|
||||
case DIR_SOUTH:
|
||||
movementScript = gUnknown_086126A8;
|
||||
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
|
||||
break;
|
||||
case DIR_WEST:
|
||||
movementScript = gUnknown_086126AA;
|
||||
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
|
||||
break;
|
||||
case DIR_NORTH:
|
||||
movementScript = gUnknown_086126AC;
|
||||
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
ScriptMovement_StartObjectMovementScript(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId,
|
||||
gSaveBlock1Ptr->location.mapNum,
|
||||
gSaveBlock1Ptr->location.mapGroup,
|
||||
movementScript);
|
||||
}
|
||||
else if (r6 == 1)
|
||||
{
|
||||
switch (direction)
|
||||
{
|
||||
case DIR_EAST:
|
||||
movementScript = gUnknown_086126AA;
|
||||
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
|
||||
break;
|
||||
case DIR_SOUTH:
|
||||
movementScript = gUnknown_086126AC;
|
||||
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
|
||||
break;
|
||||
case DIR_WEST:
|
||||
movementScript = gUnknown_086126AE;
|
||||
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
|
||||
break;
|
||||
case DIR_NORTH:
|
||||
movementScript = gUnknown_086126A8;
|
||||
events[gUnknown_0203CE50->objects[i].eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
|
||||
break;
|
||||
default:
|
||||
continue;
|
||||
}
|
||||
ScriptMovement_StartObjectMovementScript(events[gUnknown_0203CE50->objects[i].eventTemplateId].localId,
|
||||
gSaveBlock1Ptr->location.mapNum,
|
||||
gSaveBlock1Ptr->location.mapGroup,
|
||||
movementScript);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void AddEventObject(u8 eventTemplateId, u8 arg1)
|
||||
{
|
||||
gUnknown_0203CE50->objects[gUnknown_0203CE50->count].eventTemplateId = eventTemplateId;
|
||||
gUnknown_0203CE50->objects[gUnknown_0203CE50->count].unk0 = arg1;
|
||||
gUnknown_0203CE50->count++;
|
||||
}
|
||||
|
||||
static void sub_81A8D94(u8 eventTemplateId, u8 arg1)
|
||||
{
|
||||
s8 r0;
|
||||
s32 r6;
|
||||
s32 var;
|
||||
u16 movementType;
|
||||
struct EventObjectTemplate *events = gSaveBlock1Ptr->eventObjectTemplates;
|
||||
s16 x = events[eventTemplateId].x + 7;
|
||||
s16 y = events[eventTemplateId].y + 7;
|
||||
u16 metatile = MapGridGetMetatileIdAt(x, y);
|
||||
|
||||
if (!gUnknown_0203CE50->unk41)
|
||||
var = 0x250;
|
||||
else
|
||||
var = 0x298;
|
||||
|
||||
r0 = (u8)((metatile - var) % 8);
|
||||
r0 -= arg1;
|
||||
if (r0 < 0 || r0 == 3)
|
||||
r6 = 0;
|
||||
else if (r0 > 0 || r0 == -3)
|
||||
r6 = 1;
|
||||
else
|
||||
r6 = 2;
|
||||
|
||||
movementType = events[eventTemplateId].movementType;
|
||||
if (r6 == 0)
|
||||
{
|
||||
switch (movementType)
|
||||
{
|
||||
case MOVEMENT_TYPE_FACE_RIGHT:
|
||||
events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
|
||||
break;
|
||||
case MOVEMENT_TYPE_FACE_DOWN:
|
||||
events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
|
||||
break;
|
||||
case MOVEMENT_TYPE_FACE_LEFT:
|
||||
events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
|
||||
break;
|
||||
case MOVEMENT_TYPE_FACE_UP:
|
||||
events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
else if (r6 == 1)
|
||||
{
|
||||
switch (movementType)
|
||||
{
|
||||
case MOVEMENT_TYPE_FACE_RIGHT:
|
||||
events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_DOWN;
|
||||
break;
|
||||
case MOVEMENT_TYPE_FACE_DOWN:
|
||||
events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_LEFT;
|
||||
break;
|
||||
case MOVEMENT_TYPE_FACE_LEFT:
|
||||
events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_UP;
|
||||
break;
|
||||
case MOVEMENT_TYPE_FACE_UP:
|
||||
events[eventTemplateId].movementType = MOVEMENT_TYPE_FACE_RIGHT;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
#include "gba/gba.h"
|
||||
#include "multiboot.h"
|
||||
|
||||
static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
|
||||
IWRAM_DATA static u16 MultiBoot_required_data[MULTIBOOT_NCHILD];
|
||||
|
||||
static int MultiBootSend(struct MultiBootParam *mp, u16 data);
|
||||
static int MultiBootHandShake(struct MultiBootParam *mp);
|
||||
|
@ -18,7 +18,6 @@
|
||||
#include "pokemon_storage_system.h"
|
||||
|
||||
extern void sub_811EFC0(u8);
|
||||
extern void ValidateEReaderTrainer(void);
|
||||
|
||||
extern ScrCmdFunc gMysteryEventScriptCmdTable[];
|
||||
extern ScrCmdFunc gMysteryEventScriptCmdTableEnd[];
|
||||
|
@ -28,7 +28,6 @@
|
||||
#include "apprentice.h"
|
||||
#include "frontier_util.h"
|
||||
|
||||
extern u8 gDifferentSaveFile;
|
||||
extern u16 gSaveFileStatus;
|
||||
extern u8 gUnknown_030060B0;
|
||||
|
||||
@ -61,6 +60,10 @@ static void ClearFrontierRecord(void);
|
||||
static void WarpToTruck(void);
|
||||
static void ResetMiniGamesResults(void);
|
||||
|
||||
// EWRAM vars
|
||||
EWRAM_DATA bool8 gDifferentSaveFile = FALSE;
|
||||
EWRAM_DATA bool8 gUnknown_020322D5 = FALSE;
|
||||
|
||||
// const rom data
|
||||
static const struct ContestWinner sContestWinnerPicDummy =
|
||||
{
|
||||
|
@ -88,12 +88,6 @@ extern const struct MapHeader *const *const gMapGroups[];
|
||||
extern const s32 gMaxFlashLevel;
|
||||
extern const u16 gUnknown_82EC7C4[];
|
||||
|
||||
u16 gUnknown_03005DA8;
|
||||
MainCallback gFieldCallback;
|
||||
bool8 (*gFieldCallback2)(void);
|
||||
u8 gUnknown_03005DB4;
|
||||
u8 gFieldLinkPlayerCount;
|
||||
|
||||
// functions
|
||||
extern void HealPlayerParty(void);
|
||||
extern void move_tilemap_camera_to_upper_left_corner(void);
|
||||
@ -256,6 +250,16 @@ IWRAM_DATA static u8 sUnknown_03000E18;
|
||||
IWRAM_DATA static u8 sUnknown_03000E19;
|
||||
IWRAM_DATA static u32 sUnusedVar;
|
||||
|
||||
// IWRAM common
|
||||
u16 *gBGTilemapBuffers1;
|
||||
u16 *gBGTilemapBuffers2;
|
||||
u16 *gBGTilemapBuffers3;
|
||||
u16 gUnknown_03005DA8;
|
||||
void (*gFieldCallback)(void);
|
||||
bool8 (*gFieldCallback2)(void);
|
||||
u8 gUnknown_03005DB4;
|
||||
u8 gFieldLinkPlayerCount;
|
||||
|
||||
// EWRAM vars
|
||||
EWRAM_DATA static u8 sUnknown_020322D8 = 0;
|
||||
EWRAM_DATA struct WarpData gLastUsedWarp = {0};
|
||||
|
@ -29,14 +29,17 @@
|
||||
#include "constants/songs.h"
|
||||
#include "constants/species.h"
|
||||
|
||||
extern u8 gUnknown_030061EC;
|
||||
|
||||
// EWRAM
|
||||
static EWRAM_DATA struct PokedexView *gUnknown_02039B4C = NULL;
|
||||
static EWRAM_DATA u16 gUnknown_02039B50 = 0;
|
||||
static EWRAM_DATA u8 gUnknown_02039B52 = 0;
|
||||
static EWRAM_DATA struct PokedexListItem *gUnknown_02039B54 = NULL;
|
||||
|
||||
// IWRAM common
|
||||
u8 gUnknown_030060B0;
|
||||
MainCallback gUnknown_030060B4;
|
||||
u8 gUnknown_030061EC;
|
||||
void (*gUnknown_030060B4)(void);
|
||||
|
||||
struct PokedexEntry
|
||||
{
|
||||
|
@ -94,6 +94,7 @@ u16 gSaveUnusedVar2;
|
||||
u16 gUnknown_03006294;
|
||||
|
||||
EWRAM_DATA struct SaveSection gSaveDataBuffer = {0};
|
||||
EWRAM_DATA static u8 sUnusedVar = 0;
|
||||
|
||||
void ClearSaveData(void)
|
||||
{
|
||||
|
19
src/scrcmd.c
19
src/scrcmd.c
@ -4,6 +4,7 @@
|
||||
#include "berry.h"
|
||||
#include "clock.h"
|
||||
#include "coins.h"
|
||||
#include "contest.h"
|
||||
#include "contest_link_80F57C4.h"
|
||||
#include "contest_painting.h"
|
||||
#include "data2.h"
|
||||
@ -27,6 +28,7 @@
|
||||
#include "event_obj_lock.h"
|
||||
#include "menu.h"
|
||||
#include "money.h"
|
||||
#include "mossdeep_gym.h"
|
||||
#include "mystery_event_script.h"
|
||||
#include "palette.h"
|
||||
#include "party_menu.h"
|
||||
@ -49,11 +51,6 @@
|
||||
#include "tv.h"
|
||||
#include "window.h"
|
||||
|
||||
extern u16 sub_81A89A0(u8);
|
||||
extern void sub_81A8AF8(void);
|
||||
extern void sub_81A895C(void);
|
||||
extern void sub_81A8934(u8);
|
||||
|
||||
typedef u16 (*SpecialFunc)(void);
|
||||
typedef void (*NativeFunc)(void);
|
||||
|
||||
@ -66,8 +63,6 @@ static EWRAM_DATA u16 sMovingNpcMapBank = 0;
|
||||
static EWRAM_DATA u16 sMovingNpcMapId = 0;
|
||||
static EWRAM_DATA u16 sFieldEffectScriptId = 0;
|
||||
|
||||
extern u16 gSpecialVar_ContestCategory;
|
||||
|
||||
IWRAM_DATA u8 gUnknown_03000F30;
|
||||
|
||||
extern const SpecialFunc gSpecials[];
|
||||
@ -2157,13 +2152,13 @@ bool8 ScrCmd_mossdeepgym1(struct ScriptContext *ctx)
|
||||
{
|
||||
u16 v1 = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
sMovingNpcId = sub_81A89A0(v1);
|
||||
sMovingNpcId = MossdeepGym_MoveEvents(v1);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 ScrCmd_mossdeepgym2(struct ScriptContext *ctx)
|
||||
{
|
||||
sub_81A8AF8();
|
||||
MossdeepGym_TurnEvents();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -2171,13 +2166,13 @@ bool8 ScrCmd_mossdeepgym3(struct ScriptContext *ctx)
|
||||
{
|
||||
u16 v1 = VarGet(ScriptReadHalfword(ctx));
|
||||
|
||||
sub_81A8934(v1);
|
||||
InitMossdeepGymTiles(v1);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 ScrCmd_mossdeepgym4(struct ScriptContext *ctx)
|
||||
{
|
||||
sub_81A895C();
|
||||
FinishMossdeepGymTiles();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ -2204,7 +2199,7 @@ bool8 ScrCmd_cmdD9(struct ScriptContext *ctx)
|
||||
}
|
||||
}
|
||||
|
||||
// This command will force the Pokémon to be obedient, you don't get to make it disobedient
|
||||
// This command will force the Pokémon to be obedient, you don't get to make it disobedient.
|
||||
bool8 ScrCmd_setmonobedient(struct ScriptContext *ctx)
|
||||
{
|
||||
bool8 obedient = TRUE;
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "field_player_avatar.h"
|
||||
#include "battle_pyramid_bag.h"
|
||||
#include "battle_pike.h"
|
||||
#include "new_game.h"
|
||||
|
||||
// Menu actions
|
||||
enum
|
||||
@ -63,6 +64,10 @@ enum
|
||||
SAVE_ERROR
|
||||
};
|
||||
|
||||
// IWRAM common
|
||||
bool8 (*gMenuCallback)(void);
|
||||
|
||||
// EWRAM
|
||||
EWRAM_DATA static u8 sSafariBallsWindowId = 0;
|
||||
EWRAM_DATA static u8 sBattlePyramidFloorWindowId = 0;
|
||||
EWRAM_DATA static u8 sStartMenuCursorPos = 0;
|
||||
@ -76,7 +81,6 @@ EWRAM_DATA static bool8 sSavingComplete = FALSE;
|
||||
EWRAM_DATA static u8 sSaveInfoWindowId = 0;
|
||||
|
||||
// Extern variables.
|
||||
extern u8 gDifferentSaveFile;
|
||||
extern u8 gUnknown_03005DB4;
|
||||
|
||||
// Extern functions in not decompiled files.
|
||||
|
@ -2,7 +2,11 @@
|
||||
#include "string_util.h"
|
||||
#include "text.h"
|
||||
|
||||
EWRAM_DATA u8 gUnknownStringVar[16] = {0};
|
||||
EWRAM_DATA u8 gStringVar1[0x100] = {0};
|
||||
EWRAM_DATA u8 gStringVar2[0x100] = {0};
|
||||
EWRAM_DATA u8 gStringVar3[0x100] = {0};
|
||||
EWRAM_DATA u8 gStringVar4[0x3E8] = {0};
|
||||
EWRAM_DATA static u8 sUnknownStringVar[16] = {0};
|
||||
|
||||
static const u8 sDigits[] = __("0123456789ABCDEF");
|
||||
|
||||
@ -421,7 +425,7 @@ u8 *StringBraille(u8 *dest, const u8 *src)
|
||||
|
||||
static const u8 *ExpandPlaceholder_UnknownStringVar(void)
|
||||
{
|
||||
return gUnknownStringVar;
|
||||
return sUnknownStringVar;
|
||||
}
|
||||
|
||||
static const u8 *ExpandPlaceholder_PlayerName(void)
|
||||
|
25
sym_bss.txt
25
sym_bss.txt
@ -32,22 +32,7 @@
|
||||
.include "src/menu_helpers.o"
|
||||
.include "src/region_map.o"
|
||||
.include "src/slot_machine.o"
|
||||
|
||||
gUnknown_030011F0: @ 30011F0
|
||||
.space 0x2
|
||||
|
||||
gUnknown_030011F2: @ 30011F2
|
||||
.space 0x2
|
||||
|
||||
gUnknown_030011F4: @ 30011F4
|
||||
.space 0x2
|
||||
|
||||
gUnknown_030011F6: @ 30011F6
|
||||
.space 0x1
|
||||
|
||||
gUnknown_030011F7: @ 30011F7
|
||||
.space 0x1
|
||||
|
||||
.include "src/contest_painting.o"
|
||||
.include "src/starter_choose.o"
|
||||
|
||||
.align 0x2
|
||||
@ -75,13 +60,7 @@ gUnknown_03001204: @ 3001204
|
||||
.include "src/battle_pike.o"
|
||||
.include "src/battle_tent.o"
|
||||
.include "src/multiboot.o"
|
||||
|
||||
.space 0x4 @ XXX: why is this needed?
|
||||
|
||||
.align 2
|
||||
gUnknown_030012A8: @ 30012A8
|
||||
.space 0x10
|
||||
|
||||
.include "src/fossil_specials.o"
|
||||
.include "src/berry_fix_program.o"
|
||||
|
||||
gUnknown_030012BC: @ 30012BC
|
||||
|
134
sym_common.txt
134
sym_common.txt
@ -1,157 +1,125 @@
|
||||
.space 0x8
|
||||
.include "main.o"
|
||||
.include "bg.o"
|
||||
.include "window.o"
|
||||
.include "text.o"
|
||||
.include "sprite.o"
|
||||
.include "link.o"
|
||||
.include "link_rfu.o"
|
||||
.space 0x8
|
||||
.include "main.o"
|
||||
.include "bg.o"
|
||||
.include "window.o"
|
||||
.include "text.o"
|
||||
.include "sprite.o"
|
||||
.include "link.o"
|
||||
.include "link_rfu.o"
|
||||
.include "rtc.o"
|
||||
.include "battle_main.o"
|
||||
.include "random.o"
|
||||
.include "load_save.o"
|
||||
|
||||
gInGameOpponentsNo: @ 3005D98
|
||||
.space 0x4
|
||||
|
||||
gBGTilemapBuffers1: @ 3005D9C
|
||||
.space 0x4
|
||||
|
||||
gBGTilemapBuffers2: @ 3005DA0
|
||||
.space 0x4
|
||||
|
||||
gBGTilemapBuffers3: @ 3005DA4
|
||||
.space 0x4
|
||||
|
||||
.include "berry_blender.o"
|
||||
.include "overworld.o"
|
||||
.include "fieldmap.o"
|
||||
.include "field_camera.o"
|
||||
.include "field_control_avatar.o"
|
||||
|
||||
gMenuCallback: @ 3005DF4
|
||||
.space 0x4
|
||||
|
||||
.include "start_menu.o"
|
||||
.include "sound.o"
|
||||
.include "task.o"
|
||||
.include "trainer_see.o"
|
||||
|
||||
gUnknown_030060B0: @ 30060B0
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030060B4: @ 30060B4
|
||||
.space 0x4
|
||||
|
||||
.include "contest.o"
|
||||
.include "task.o"
|
||||
.include "trainer_see.o"
|
||||
.include "pokedex.o"
|
||||
.include "contest.o"
|
||||
.include "tv.o"
|
||||
.include "mauville_old_man.o"
|
||||
|
||||
gUnknown_03006164: @ 3006164
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03006168: @ 3006168
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_0300616C: @ 300616C
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03006170: @ 3006170
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03006174: @ 3006174
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03006178: @ 3006178
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_0300617C: @ 300617C
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03006180: @ 3006180
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03006184: @ 3006184
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03006188: @ 3006188
|
||||
.space 0x8
|
||||
.space 0x8
|
||||
|
||||
gUnknown_03006190: @ 3006190
|
||||
.space 0x10
|
||||
.space 0x10
|
||||
|
||||
gUnknown_030061A0: @ 30061A0
|
||||
.space 0x20
|
||||
.space 0x20
|
||||
|
||||
gUnknown_030061C0: @ 30061C0
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030061C4: @ 30061C4
|
||||
.space 0xC
|
||||
.space 0xC
|
||||
|
||||
.include "field_specials.o"
|
||||
|
||||
gCB2_AfterEvolution: @ 30061E8
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030061EC: @ 30061EC
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
.include "save.o"
|
||||
|
||||
gUnknown_03006298: @ 3006298
|
||||
.space 0x8
|
||||
|
||||
.include "battle_tower.o"
|
||||
.include "intro.o"
|
||||
|
||||
gUnknown_030062DC: @ 30062DC
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030062E0: @ 30062E0
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030062E4: @ 30062E4
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030062E8: @ 30062E8
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030062EC: @ 30062EC
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030062F0: @ 30062F0
|
||||
.space 0x4
|
||||
|
||||
gUnknown_030062F4: @ 30062F4
|
||||
.space 0xC
|
||||
|
||||
.include "list_menu.o"
|
||||
.include "battle_factory_screen.o"
|
||||
.include "apprentice.o"
|
||||
|
||||
.space 0x8
|
||||
|
||||
.include "list_menu.o"
|
||||
|
||||
gUnknown_03006328: @ 3006328
|
||||
.space 0x48
|
||||
.space 0x48
|
||||
|
||||
gUnknown_03006370: @ 3006370
|
||||
.space 0x10
|
||||
.space 0x10
|
||||
|
||||
.include "m4a_2.o"
|
||||
|
||||
.include "agb_flash.o"
|
||||
.include "m4a_2.o"
|
||||
.include "agb_flash.o"
|
||||
|
||||
gRfuState: @ 3007868
|
||||
.space 0x8
|
||||
.space 0x8
|
||||
|
||||
gUnknown_03007870: @ 3007870
|
||||
.space 0x10
|
||||
.space 0x10
|
||||
|
||||
gUnknown_03007880: @ 3007880
|
||||
.space 0x10
|
||||
.space 0x10
|
||||
|
||||
gUnknown_03007890: @ 3007890
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03007894: @ 3007894
|
||||
.space 0x4
|
||||
.space 0x4
|
||||
|
||||
gUnknown_03007898: @ 3007898
|
||||
.space 0x8
|
||||
.space 0x8
|
||||
|
||||
gUnknown_030078A0: @ 30078A0
|
||||
.space 0xC
|
||||
.space 0xC
|
||||
|
@ -3,20 +3,6 @@
|
||||
.include "src/window.o"
|
||||
.include "src/text.o"
|
||||
.include "src/sprite.o"
|
||||
.align 2
|
||||
|
||||
gStringVar1: @ 2021CC4
|
||||
.space 0x100
|
||||
|
||||
gStringVar2: @ 2021DC4
|
||||
.space 0x100
|
||||
|
||||
gStringVar3: @ 2021EC4
|
||||
.space 0x100
|
||||
|
||||
gStringVar4: @ 2021FC4
|
||||
.space 0x3E8
|
||||
|
||||
.include "src/string_util.o"
|
||||
.include "src/link.o"
|
||||
.include "src/link_rfu.o"
|
||||
@ -117,8 +103,6 @@ gUnknown_02022CFC: @ 2022CFC
|
||||
gUnknown_02022D00: @ 2022D00
|
||||
.space 0x4
|
||||
|
||||
@ src/main_menu.c
|
||||
gUnknown_02022D04: @ 2022D04
|
||||
.include "src/main_menu.o"
|
||||
|
||||
gUnknown_02022D08: @ 2022D08
|
||||
@ -138,42 +122,6 @@ gUnknown_02022D0C: @ 2022D0C
|
||||
gUnknown_02022E10: @ 2022E10
|
||||
.space 0x4
|
||||
|
||||
gBattle_BG0_X: @ 2022E14
|
||||
.space 0x2
|
||||
|
||||
gBattle_BG0_Y: @ 2022E16
|
||||
.space 0x2
|
||||
|
||||
gBattle_BG1_X: @ 2022E18
|
||||
.space 0x2
|
||||
|
||||
gBattle_BG1_Y: @ 2022E1A
|
||||
.space 0x2
|
||||
|
||||
gBattle_BG2_X: @ 2022E1C
|
||||
.space 0x2
|
||||
|
||||
gBattle_BG2_Y: @ 2022E1E
|
||||
.space 0x2
|
||||
|
||||
gBattle_BG3_X: @ 2022E20
|
||||
.space 0x2
|
||||
|
||||
gBattle_BG3_Y: @ 2022E22
|
||||
.space 0x2
|
||||
|
||||
gBattle_WIN0H: @ 2022E24
|
||||
.space 0x2
|
||||
|
||||
gBattle_WIN0V: @ 2022E26
|
||||
.space 0x2
|
||||
|
||||
gBattle_WIN1H: @ 2022E28
|
||||
.space 0x2
|
||||
|
||||
gBattle_WIN1V: @ 2022E2A
|
||||
.space 0x2
|
||||
|
||||
.include "src/battle_main.o"
|
||||
.include "src/pokemon.o"
|
||||
.include "src/random.o"
|
||||
@ -199,13 +147,7 @@ gUnknown_020322A0: @ 20322A0
|
||||
.space 0x4
|
||||
|
||||
.include "src/berry_blender.o"
|
||||
|
||||
gDifferentSaveFile: @ 20322D4
|
||||
.space 0x1
|
||||
|
||||
gUnknown_020322D5: @ 20322D5
|
||||
.space 0x3
|
||||
|
||||
.include "src/new_game.o"
|
||||
.include "src/overworld.o"
|
||||
.include "src/fieldmap.o"
|
||||
.include "src/field_camera.o"
|
||||
@ -394,6 +336,7 @@ gUnknown_0203A11C: @ 203A11C
|
||||
|
||||
gUnknown_0203A120: @ 203A120
|
||||
.space 0x4
|
||||
|
||||
.include "src/mon_markings.o"
|
||||
.include "src/mauville_old_man.o"
|
||||
.include "src/mail.o"
|
||||
@ -458,9 +401,6 @@ gUnknown_0203ABB5: @ 203ABB5
|
||||
|
||||
.include "src/rom_81520A8.o"
|
||||
.include "src/save.o"
|
||||
|
||||
.space 0x4 /*unused var?*/
|
||||
|
||||
.include "src/mystery_event_script.o"
|
||||
.include "src/learn_move.o"
|
||||
.include "src/decoration_inventory.o"
|
||||
@ -493,13 +433,7 @@ gUnknown_0203CD88: @ 203CD88
|
||||
|
||||
.include "src/menu.o"
|
||||
.include "src/battle_factory_screen.o"
|
||||
|
||||
gUnknown_0203CE50: @ 203CE50
|
||||
.space 0x4
|
||||
|
||||
gUnknown_0203CE54: @ 203CE54
|
||||
.align 2
|
||||
|
||||
.include "src/mossdeep_gym.o"
|
||||
.include "src/item_menu.o"
|
||||
.include "src/list_menu.o"
|
||||
.include "src/dynamic_placeholder_text_util.o"
|
||||
|
Loading…
Reference in New Issue
Block a user