mirror of
https://github.com/pret/pmd-red.git
synced 2026-08-20 07:45:13 -05:00
sub_80A6EFC
This commit is contained in:
@@ -7,776 +7,6 @@
|
||||
|
||||
|
||||
|
||||
thumb_func_start GroundSprite_ExtendPaletteAdd
|
||||
GroundSprite_ExtendPaletteAdd:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x14
|
||||
mov r10, r0
|
||||
lsls r1, 16
|
||||
lsrs r2, r1, 16
|
||||
adds r5, r2, 0
|
||||
movs r0, 0xC0
|
||||
lsls r0, 2
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
bne _080A6AB0
|
||||
b _080A6C6C
|
||||
_080A6AB0:
|
||||
movs r0, 0x80
|
||||
lsls r0, 3
|
||||
ands r0, r2
|
||||
cmp r0, 0
|
||||
beq _080A6AD8
|
||||
ldr r0, _080A6AD4
|
||||
ldr r1, [r0]
|
||||
movs r3, 0x86
|
||||
lsls r3, 1
|
||||
adds r4, r1, r3
|
||||
ldrh r1, [r4]
|
||||
adds r3, r0, 0
|
||||
cmp r1, r2
|
||||
bne _080A6B36
|
||||
ldrh r0, [r4, 0x2]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x2]
|
||||
b _080A6C78
|
||||
.align 2, 0
|
||||
_080A6AD4: .4byte gUnknown_3001B7C
|
||||
_080A6AD8:
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
ldr r1, _080A6B1C
|
||||
ldr r0, [r1]
|
||||
movs r2, 0x84
|
||||
lsls r2, 1
|
||||
adds r4, r0, r2
|
||||
adds r3, r1, 0
|
||||
movs r1, 0xE8
|
||||
lsls r1, 13
|
||||
_080A6AEC:
|
||||
ldrh r0, [r4]
|
||||
cmp r0, r5
|
||||
bne _080A6B24
|
||||
lsrs r1, 16
|
||||
adds r3, r1, 0
|
||||
ldrh r0, [r4, 0x2]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x2]
|
||||
mov r0, r10
|
||||
cmp r0, 0
|
||||
beq _080A6B08
|
||||
subs r1, 0x10
|
||||
adds r0, 0x68
|
||||
strh r1, [r0]
|
||||
_080A6B08:
|
||||
adds r0, r3, 0
|
||||
subs r0, 0x10
|
||||
str r0, [sp]
|
||||
str r5, [sp, 0x4]
|
||||
movs r0, 0
|
||||
ldr r1, _080A6B20
|
||||
mov r2, r8
|
||||
bl Log
|
||||
b _080A6C78
|
||||
.align 2, 0
|
||||
_080A6B1C: .4byte gUnknown_3001B7C
|
||||
_080A6B20: .4byte gUnknown_81177F4
|
||||
_080A6B24:
|
||||
movs r2, 0x80
|
||||
lsls r2, 9
|
||||
adds r1, r2
|
||||
movs r0, 0x1
|
||||
add r8, r0
|
||||
adds r4, 0x4
|
||||
mov r2, r8
|
||||
cmp r2, 0x1
|
||||
ble _080A6AEC
|
||||
_080A6B36:
|
||||
movs r0, 0x80
|
||||
lsls r0, 3
|
||||
ands r0, r5
|
||||
cmp r0, 0
|
||||
beq _080A6B68
|
||||
movs r0, 0x1
|
||||
mov r8, r0
|
||||
ldr r0, [r3]
|
||||
movs r1, 0x86
|
||||
lsls r1, 1
|
||||
adds r4, r0, r1
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, 0
|
||||
ble _080A6BA8
|
||||
ldr r0, _080A6B60
|
||||
ldr r1, _080A6B64
|
||||
adds r2, r5, 0
|
||||
bl FatalError
|
||||
.align 2, 0
|
||||
_080A6B60: .4byte gUnknown_8117858
|
||||
_080A6B64: .4byte gUnknown_8117864
|
||||
_080A6B68:
|
||||
movs r0, 0
|
||||
mov r8, r0
|
||||
ldr r0, [r3]
|
||||
movs r1, 0x84
|
||||
lsls r1, 1
|
||||
adds r4, r0, r1
|
||||
movs r2, 0x2
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, 0
|
||||
ble _080A6B90
|
||||
_080A6B7C:
|
||||
movs r3, 0x1
|
||||
add r8, r3
|
||||
adds r4, 0x4
|
||||
mov r0, r8
|
||||
cmp r0, 0x1
|
||||
bgt _080A6B96
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0
|
||||
bgt _080A6B7C
|
||||
_080A6B90:
|
||||
mov r2, r8
|
||||
cmp r2, 0x1
|
||||
ble _080A6BA8
|
||||
_080A6B96:
|
||||
ldr r0, _080A6BA0
|
||||
ldr r1, _080A6BA4
|
||||
adds r2, r5, 0
|
||||
bl FatalError
|
||||
.align 2, 0
|
||||
_080A6BA0: .4byte gUnknown_8117888
|
||||
_080A6BA4: .4byte gUnknown_8117864
|
||||
_080A6BA8:
|
||||
mov r0, r8
|
||||
adds r0, 0x1D
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
str r0, [sp, 0xC]
|
||||
mov r3, r8
|
||||
lsls r0, r3, 20
|
||||
movs r1, 0xE8
|
||||
lsls r1, 17
|
||||
adds r0, r1
|
||||
lsrs r0, 16
|
||||
str r0, [sp, 0x10]
|
||||
movs r0, 0x80
|
||||
lsls r0, 2
|
||||
ands r0, r5
|
||||
cmp r0, 0
|
||||
beq _080A6BE8
|
||||
ldr r0, _080A6BE0
|
||||
ldr r1, _080A6BE4
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
mov r9, r0
|
||||
ldr r7, [r0, 0x4]
|
||||
movs r0, 0xFF
|
||||
ands r0, r5
|
||||
lsls r0, 6
|
||||
adds r7, r0
|
||||
b _080A6BFE
|
||||
.align 2, 0
|
||||
_080A6BE0: .4byte gUnknown_81177EC
|
||||
_080A6BE4: .4byte gMonsterFileArchive
|
||||
_080A6BE8:
|
||||
movs r0, 0xFF
|
||||
ands r0, r5
|
||||
lsls r0, 2
|
||||
ldr r1, _080A6C60
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
ldr r1, _080A6C64
|
||||
bl OpenFileAndGetFileDataPtr
|
||||
mov r9, r0
|
||||
ldr r7, [r0, 0x4]
|
||||
_080A6BFE:
|
||||
movs r0, 0x80
|
||||
lsls r0, 5
|
||||
ands r0, r5
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
negs r0, r0
|
||||
lsrs r6, r0, 31
|
||||
movs r0, 0x80
|
||||
lsls r0, 6
|
||||
ands r0, r5
|
||||
cmp r0, 0
|
||||
beq _080A6C1A
|
||||
movs r0, 0x2
|
||||
orrs r6, r0
|
||||
_080A6C1A:
|
||||
ldr r0, [sp, 0xC]
|
||||
adds r1, r6, 0
|
||||
bl sub_80997F4
|
||||
ldr r0, [sp, 0x10]
|
||||
adds r1, r7, 0
|
||||
movs r2, 0x10
|
||||
bl sub_809971C
|
||||
strh r5, [r4]
|
||||
movs r0, 0x1
|
||||
strh r0, [r4, 0x2]
|
||||
ldr r2, [sp, 0xC]
|
||||
subs r2, 0x10
|
||||
mov r3, r10
|
||||
cmp r3, 0
|
||||
beq _080A6C42
|
||||
mov r0, r10
|
||||
adds r0, 0x68
|
||||
strh r2, [r0]
|
||||
_080A6C42:
|
||||
ldr r1, _080A6C68
|
||||
str r2, [sp]
|
||||
str r5, [sp, 0x4]
|
||||
str r6, [sp, 0x8]
|
||||
movs r0, 0
|
||||
mov r2, r8
|
||||
ldr r3, [sp, 0xC]
|
||||
bl Log
|
||||
mov r0, r9
|
||||
cmp r0, 0
|
||||
beq _080A6C78
|
||||
bl CloseFile
|
||||
b _080A6C78
|
||||
.align 2, 0
|
||||
_080A6C60: .4byte gUnknown_81178F4
|
||||
_080A6C64: .4byte gOrnamentFileArchive
|
||||
_080A6C68: .4byte gUnknown_8117894
|
||||
_080A6C6C:
|
||||
mov r1, r10
|
||||
cmp r1, 0
|
||||
beq _080A6C78
|
||||
mov r0, r10
|
||||
adds r0, 0x68
|
||||
strh r5, [r0]
|
||||
_080A6C78:
|
||||
add sp, 0x14
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end GroundSprite_ExtendPaletteAdd
|
||||
|
||||
thumb_func_start GroundSprite_ExtendPaletteDelete
|
||||
GroundSprite_ExtendPaletteDelete:
|
||||
push {r4-r6,lr}
|
||||
adds r2, r0, 0
|
||||
cmp r2, 0
|
||||
beq _080A6C9E
|
||||
adds r0, 0x68
|
||||
ldrh r0, [r0]
|
||||
adds r5, r0, 0
|
||||
subs r5, 0xD
|
||||
cmp r5, 0
|
||||
blt _080A6CE6
|
||||
b _080A6CA0
|
||||
_080A6C9E:
|
||||
movs r5, 0x1
|
||||
_080A6CA0:
|
||||
ldr r0, _080A6CEC
|
||||
lsls r1, r5, 2
|
||||
movs r3, 0x84
|
||||
lsls r3, 1
|
||||
adds r1, r3
|
||||
ldr r0, [r0]
|
||||
adds r4, r0, r1
|
||||
cmp r2, 0
|
||||
beq _080A6CBA
|
||||
adds r1, r2, 0
|
||||
adds r1, 0x68
|
||||
movs r0, 0
|
||||
strh r0, [r1]
|
||||
_080A6CBA:
|
||||
ldrh r0, [r4, 0x2]
|
||||
subs r0, 0x1
|
||||
movs r6, 0
|
||||
strh r0, [r4, 0x2]
|
||||
lsls r0, 16
|
||||
cmp r0, 0
|
||||
bgt _080A6CE6
|
||||
ldr r1, _080A6CF0
|
||||
ldrh r3, [r4]
|
||||
movs r0, 0
|
||||
adds r2, r5, 0
|
||||
bl Log
|
||||
strh r6, [r4]
|
||||
strh r6, [r4, 0x2]
|
||||
adds r0, r5, 0
|
||||
adds r0, 0x1D
|
||||
lsls r0, 16
|
||||
lsrs r0, 16
|
||||
movs r1, 0
|
||||
bl sub_80997F4
|
||||
_080A6CE6:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A6CEC: .4byte gUnknown_3001B7C
|
||||
_080A6CF0: .4byte gUnknown_81178C0
|
||||
thumb_func_end GroundSprite_ExtendPaletteDelete
|
||||
|
||||
thumb_func_start sub_80A6CF4
|
||||
sub_80A6CF4:
|
||||
push {r4-r7,lr}
|
||||
mov r7, r10
|
||||
mov r6, r9
|
||||
mov r5, r8
|
||||
push {r5-r7}
|
||||
sub sp, 0x68
|
||||
movs r1, 0
|
||||
mov r8, r1
|
||||
movs r1, 0
|
||||
ldrsh r2, [r0, r1]
|
||||
mov r9, r2
|
||||
movs r2, 0
|
||||
mov r10, r2
|
||||
movs r0, 0x1
|
||||
negs r0, r0
|
||||
str r0, [sp, 0x60]
|
||||
str r0, [sp, 0x64]
|
||||
add r4, sp, 0x58
|
||||
adds r0, r4, 0
|
||||
bl sub_809D248
|
||||
movs r7, 0
|
||||
ldr r0, _080A6D70
|
||||
ldr r3, [r0]
|
||||
movs r1, 0x80
|
||||
lsls r1, 6
|
||||
mov r12, r1
|
||||
mov r4, sp
|
||||
_080A6D2C:
|
||||
ldr r0, [r3]
|
||||
cmp r0, 0x1
|
||||
bne _080A6DB4
|
||||
ldr r2, [r3, 0x8]
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x50
|
||||
ldrh r1, [r0]
|
||||
mov r0, r12
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080A6DB4
|
||||
ldr r0, [r2, 0x7C]
|
||||
cmp r0, 0
|
||||
blt _080A6DB4
|
||||
ldr r1, [r2, 0x74]
|
||||
cmp r1, 0
|
||||
bge _080A6D50
|
||||
adds r1, 0xFF
|
||||
_080A6D50:
|
||||
asrs r1, 8
|
||||
ldr r0, [sp, 0x58]
|
||||
subs r5, r1, r0
|
||||
ldr r1, [r2, 0x78]
|
||||
cmp r1, 0
|
||||
bge _080A6D5E
|
||||
adds r1, 0xFF
|
||||
_080A6D5E:
|
||||
asrs r1, 8
|
||||
ldr r0, [sp, 0x5C]
|
||||
subs r1, r0
|
||||
adds r6, r1, 0
|
||||
cmp r1, 0
|
||||
ble _080A6D74
|
||||
adds r0, r6, 0
|
||||
adds r0, 0x28
|
||||
b _080A6D78
|
||||
.align 2, 0
|
||||
_080A6D70: .4byte gUnknown_3001B7C
|
||||
_080A6D74:
|
||||
movs r0, 0x28
|
||||
subs r0, r6
|
||||
_080A6D78:
|
||||
str r0, [r2, 0x7C]
|
||||
cmp r5, 0
|
||||
ble _080A6D88
|
||||
ldr r0, [r2, 0x7C]
|
||||
cmp r5, r0
|
||||
ble _080A6D92
|
||||
str r5, [r2, 0x7C]
|
||||
b _080A6D92
|
||||
_080A6D88:
|
||||
negs r1, r5
|
||||
ldr r0, [r2, 0x7C]
|
||||
cmp r1, r0
|
||||
ble _080A6D92
|
||||
str r1, [r2, 0x7C]
|
||||
_080A6D92:
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x48
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
add r10, r0
|
||||
cmp r0, r9
|
||||
blt _080A6DAE
|
||||
ldr r0, [r2, 0x7C]
|
||||
ldr r1, [sp, 0x64]
|
||||
cmp r1, r0
|
||||
bge _080A6DAE
|
||||
mov r1, r8
|
||||
str r1, [sp, 0x60]
|
||||
str r0, [sp, 0x64]
|
||||
_080A6DAE:
|
||||
stm r4!, {r2}
|
||||
movs r2, 0x1
|
||||
add r8, r2
|
||||
_080A6DB4:
|
||||
adds r0, r7, 0x1
|
||||
lsls r0, 16
|
||||
asrs r7, r0, 16
|
||||
adds r3, 0xC
|
||||
cmp r7, 0x15
|
||||
ble _080A6D2C
|
||||
cmp r10, r9
|
||||
blt _080A6E54
|
||||
ldr r0, [sp, 0x60]
|
||||
cmp r0, 0
|
||||
blt _080A6DD8
|
||||
lsls r0, 2
|
||||
add r0, sp
|
||||
ldr r0, [r0]
|
||||
bl sub_80A69FC
|
||||
movs r0, 0x1
|
||||
b _080A6E56
|
||||
_080A6DD8:
|
||||
mov r1, r8
|
||||
cmp r1, 0
|
||||
ble _080A6E54
|
||||
_080A6DDE:
|
||||
movs r5, 0x1
|
||||
negs r5, r5
|
||||
adds r3, r5, 0
|
||||
movs r6, 0
|
||||
mov r7, r8
|
||||
subs r7, 0x1
|
||||
mov r2, r8
|
||||
cmp r2, 0
|
||||
ble _080A6E08
|
||||
mov r2, sp
|
||||
mov r1, r8
|
||||
_080A6DF4:
|
||||
ldr r0, [r2]
|
||||
ldr r0, [r0, 0x7C]
|
||||
cmp r3, r0
|
||||
bge _080A6E00
|
||||
mov r5, r8
|
||||
adds r3, r0, 0
|
||||
_080A6E00:
|
||||
adds r2, 0x4
|
||||
subs r1, 0x1
|
||||
cmp r1, 0
|
||||
bne _080A6DF4
|
||||
_080A6E08:
|
||||
lsls r0, r5, 2
|
||||
mov r1, sp
|
||||
adds r4, r1, r0
|
||||
ldr r0, [r4]
|
||||
bl sub_80A69FC
|
||||
mov r8, r7
|
||||
adds r1, r5, 0
|
||||
cmp r1, r8
|
||||
bge _080A6E28
|
||||
adds r2, r4, 0
|
||||
_080A6E1E:
|
||||
ldr r0, [r2, 0x4]
|
||||
stm r2!, {r0}
|
||||
adds r1, 0x1
|
||||
cmp r1, r8
|
||||
blt _080A6E1E
|
||||
_080A6E28:
|
||||
movs r1, 0
|
||||
ldr r0, _080A6E40
|
||||
ldr r3, [r0]
|
||||
_080A6E2E:
|
||||
ldr r0, [r3]
|
||||
cmp r0, 0
|
||||
bne _080A6E44
|
||||
adds r6, 0x1
|
||||
cmp r6, r9
|
||||
blt _080A6E46
|
||||
movs r0, 0x1
|
||||
b _080A6E56
|
||||
.align 2, 0
|
||||
_080A6E40: .4byte gUnknown_3001B7C
|
||||
_080A6E44:
|
||||
movs r6, 0
|
||||
_080A6E46:
|
||||
adds r1, 0x1
|
||||
adds r3, 0xC
|
||||
cmp r1, 0x15
|
||||
ble _080A6E2E
|
||||
mov r2, r8
|
||||
cmp r2, 0
|
||||
bgt _080A6DDE
|
||||
_080A6E54:
|
||||
movs r0, 0
|
||||
_080A6E56:
|
||||
add sp, 0x68
|
||||
pop {r3-r5}
|
||||
mov r8, r3
|
||||
mov r9, r4
|
||||
mov r10, r5
|
||||
pop {r4-r7}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_80A6CF4
|
||||
|
||||
thumb_func_start sub_80A6E68
|
||||
sub_80A6E68:
|
||||
push {lr}
|
||||
movs r0, 0
|
||||
bl ResetSprites
|
||||
movs r0, 0
|
||||
bl nullsub_10
|
||||
bl sub_800E970
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A6E68
|
||||
|
||||
thumb_func_start sub_80A6E80
|
||||
sub_80A6E80:
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
ldr r4, _080A6EC4
|
||||
adds r0, r4, 0
|
||||
bl sub_809D248
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0
|
||||
bne _080A6E98
|
||||
str r0, [r4]
|
||||
str r0, [r4, 0x4]
|
||||
_080A6E98:
|
||||
bl sub_80ABA7C
|
||||
bl sub_80ACAD4
|
||||
bl sub_80AD7AC
|
||||
ldrh r1, [r4, 0x4]
|
||||
lsls r1, 16
|
||||
ldrh r0, [r4]
|
||||
orrs r0, r1
|
||||
str r0, [sp]
|
||||
mov r0, sp
|
||||
bl sub_800E90C
|
||||
bl sub_8005180
|
||||
bl nullsub_12
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080A6EC4: .4byte gUnknown_2039DD8
|
||||
thumb_func_end sub_80A6E80
|
||||
|
||||
thumb_func_start sub_80A6EC8
|
||||
sub_80A6EC8:
|
||||
push {lr}
|
||||
adds r2, r0, 0
|
||||
adds r0, 0x52
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
cmp r0, 0
|
||||
ble _080A6EF6
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x48
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
cmp r1, r0
|
||||
bgt _080A6EE4
|
||||
adds r1, r0, 0
|
||||
_080A6EE4:
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x64
|
||||
movs r3, 0
|
||||
ldrsh r0, [r0, r3]
|
||||
cmp r0, r1
|
||||
beq _080A6EF6
|
||||
adds r0, r2, 0
|
||||
adds r0, 0x66
|
||||
strh r1, [r0]
|
||||
_080A6EF6:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A6EC8
|
||||
|
||||
thumb_func_start sub_80A6EFC
|
||||
sub_80A6EFC:
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0xC
|
||||
adds r4, r0, 0
|
||||
lsls r1, 16
|
||||
asrs r7, r1, 16
|
||||
lsls r2, 24
|
||||
asrs r6, r2, 24
|
||||
adds r0, 0x52
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
cmp r0, 0
|
||||
bge _080A6F48
|
||||
adds r5, r4, 0
|
||||
adds r5, 0x66
|
||||
movs r2, 0
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r0, 0
|
||||
blt _080A6F28
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x48
|
||||
adds r2, r0, 0
|
||||
b _080A6F62
|
||||
_080A6F28:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x48
|
||||
movs r2, 0
|
||||
ldrsh r0, [r1, r2]
|
||||
cmp r0, 0
|
||||
bgt _080A6F36
|
||||
b _080A7038
|
||||
_080A6F36:
|
||||
movs r2, 0x1
|
||||
negs r2, r2
|
||||
adds r0, r4, 0
|
||||
bl sub_80A68F8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080A7038
|
||||
b _080A6F72
|
||||
_080A6F48:
|
||||
adds r5, r4, 0
|
||||
adds r5, 0x66
|
||||
movs r1, 0
|
||||
ldrsh r0, [r5, r1]
|
||||
cmp r0, 0
|
||||
blt _080A6F72
|
||||
adds r0, r4, 0
|
||||
bl sub_80A69FC
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x48
|
||||
movs r0, 0
|
||||
ldrsh r2, [r5, r0]
|
||||
_080A6F62:
|
||||
adds r0, r4, 0
|
||||
bl sub_80A68F8
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
beq _080A7038
|
||||
ldr r0, _080A6F8C
|
||||
strh r0, [r5]
|
||||
_080A6F72:
|
||||
movs r0, 0x80
|
||||
lsls r0, 3
|
||||
ands r0, r7
|
||||
lsls r0, 16
|
||||
asrs r3, r0, 16
|
||||
cmp r3, 0
|
||||
beq _080A6F94
|
||||
ldrh r1, [r4]
|
||||
ldr r0, _080A6F90
|
||||
ands r0, r1
|
||||
strh r0, [r4]
|
||||
b _080A7038
|
||||
.align 2, 0
|
||||
_080A6F8C: .4byte 0x0000ffff
|
||||
_080A6F90: .4byte 0x0000efff
|
||||
_080A6F94:
|
||||
ldr r2, _080A6FE0
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x52
|
||||
movs r5, 0
|
||||
ldrsh r1, [r0, r5]
|
||||
lsls r0, r1, 1
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
ldr r1, [r2]
|
||||
adds r1, r0
|
||||
mov r12, r1
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x70
|
||||
movs r0, 0x1
|
||||
strb r0, [r1]
|
||||
subs r0, 0x2
|
||||
str r0, [r4, 0x7C]
|
||||
movs r1, 0xE0
|
||||
lsls r1, 3
|
||||
ands r1, r7
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
cmp r1, r0
|
||||
beq _080A6FE4
|
||||
cmp r1, r0
|
||||
ble _080A6FEE
|
||||
movs r0, 0x80
|
||||
lsls r0, 2
|
||||
cmp r1, r0
|
||||
beq _080A6FFA
|
||||
movs r0, 0xC0
|
||||
lsls r0, 2
|
||||
cmp r1, r0
|
||||
bne _080A6FEE
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x6C
|
||||
strh r3, [r0]
|
||||
b _080A7000
|
||||
.align 2, 0
|
||||
_080A6FE0: .4byte gUnknown_3001B7C
|
||||
_080A6FE4:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x6C
|
||||
movs r0, 0x80
|
||||
strh r0, [r1]
|
||||
b _080A7000
|
||||
_080A6FEE:
|
||||
adds r1, r4, 0
|
||||
adds r1, 0x6C
|
||||
movs r0, 0x80
|
||||
lsls r0, 1
|
||||
strh r0, [r1]
|
||||
b _080A7000
|
||||
_080A6FFA:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x6C
|
||||
strh r1, [r0]
|
||||
_080A7000:
|
||||
adds r0, r4, 0
|
||||
adds r0, 0x6E
|
||||
movs r1, 0
|
||||
strh r1, [r0]
|
||||
ldr r5, [r4, 0x4C]
|
||||
movs r0, 0xFF
|
||||
ands r0, r7
|
||||
adds r2, r6, 0
|
||||
cmp r6, 0
|
||||
bge _080A7016
|
||||
adds r2, r6, 0x7
|
||||
_080A7016:
|
||||
asrs r2, 3
|
||||
adds r2, r0, r2
|
||||
movs r3, 0x7
|
||||
ands r3, r6
|
||||
mov r6, r12
|
||||
ldr r0, [r6, 0x4]
|
||||
str r0, [sp]
|
||||
str r1, [sp, 0x4]
|
||||
lsls r0, r7, 16
|
||||
lsrs r0, 27
|
||||
movs r1, 0x1
|
||||
ands r0, r1
|
||||
str r0, [sp, 0x8]
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl AxResInit
|
||||
_080A7038:
|
||||
add sp, 0xC
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80A6EFC
|
||||
|
||||
thumb_func_start sub_80A7040
|
||||
sub_80A7040:
|
||||
|
||||
@@ -25,7 +25,7 @@ struct UnkGroundSpriteStruct
|
||||
u8 unk5A;
|
||||
s32 unk5C;
|
||||
s32 unk60;
|
||||
u16 unk64;
|
||||
s16 unk64;
|
||||
s16 unk66;
|
||||
u16 unk68;
|
||||
u16 unk6A;
|
||||
|
||||
@@ -24,10 +24,16 @@ EWRAM_DATA u32 gUnknown_2039DD4 = {0};
|
||||
EWRAM_INIT OpenedFile *gUnknown_203B4B4 = {NULL};
|
||||
|
||||
// data_8115F5C.s
|
||||
extern const u8 gUnknown_81177CC[];
|
||||
extern const u8 gUnknown_81177D8[];
|
||||
extern const u8 gUnknown_81177EC[];
|
||||
extern const u8 *gUnknown_81178F4[];
|
||||
extern const char gUnknown_81177CC[];
|
||||
extern const char gUnknown_81177D8[];
|
||||
extern const char gUnknown_81177F4[];
|
||||
extern const char gUnknown_8117864[];
|
||||
extern const char gUnknown_81177EC[];
|
||||
extern const char gUnknown_8117894[];
|
||||
extern const char gUnknown_81178C0[];
|
||||
extern const char *gUnknown_81178F4[];
|
||||
extern const DebugLocation gUnknown_8117858;
|
||||
extern const DebugLocation gUnknown_8117888;
|
||||
|
||||
// code_8098BDC.s
|
||||
extern void sub_809971C(u16, const u8 *, s16);
|
||||
@@ -160,7 +166,8 @@ void sub_80A64A4(void)
|
||||
r2 = file->data + (r5 & 0xFF) * 0x40;
|
||||
}
|
||||
else {
|
||||
file = OpenFileAndGetFileDataPtr((r5 & 0xFF)[gUnknown_81178F4], &gOrnamentFileArchive);
|
||||
u32 id = r5 & 0xFF;
|
||||
file = OpenFileAndGetFileDataPtr(id[gUnknown_81178F4], &gOrnamentFileArchive);
|
||||
r2 = file->data;
|
||||
}
|
||||
|
||||
@@ -452,28 +459,21 @@ void sub_80A69FC(struct UnkGroundSpriteStruct *ptr)
|
||||
}
|
||||
}
|
||||
|
||||
extern const char gUnknown_81177F4[];
|
||||
extern const char gUnknown_8117864[];
|
||||
extern const char gUnknown_81177EC[];
|
||||
extern const char *gUnknown_81178F4[];
|
||||
extern const DebugLocation gUnknown_8117858;
|
||||
extern const DebugLocation gUnknown_8117888;
|
||||
|
||||
void GroundSprite_ExtendPaletteAdd(struct UnkGroundSpriteStruct *ptr, u16 a1)
|
||||
{
|
||||
OpenedFile *file;
|
||||
s32 r1, r8;
|
||||
s32 r8;
|
||||
unkStruct_3001B7C_sub108 *sub108Ptr;
|
||||
s32 var_24;
|
||||
s32 var_28;
|
||||
s32 r6;
|
||||
u16 var_28;
|
||||
u16 var_24;
|
||||
u16 r6;
|
||||
const void *r7;
|
||||
s32 r2;
|
||||
|
||||
if (a1 & (0x100 | 0x200)) {
|
||||
if (a1 & 0x400) {
|
||||
sub108Ptr = &gUnknown_3001B7C->unk108[0];
|
||||
if (sub108Ptr->unk0 != a1) {
|
||||
sub108Ptr = &gUnknown_3001B7C->unk108[1];
|
||||
if (sub108Ptr->unk0 == a1) {
|
||||
sub108Ptr->unk2++;
|
||||
return;
|
||||
}
|
||||
@@ -481,14 +481,14 @@ void GroundSprite_ExtendPaletteAdd(struct UnkGroundSpriteStruct *ptr, u16 a1)
|
||||
else {
|
||||
r8 = 0;
|
||||
sub108Ptr = &gUnknown_3001B7C->unk108[0];
|
||||
r1 = 29;
|
||||
for (; r8 < UNK_3001B7C_SUB108_COUNT; r1 = (s16)(r1 + 1), r8++, sub108Ptr++) {
|
||||
for (; r8 < UNK_3001B7C_SUB108_COUNT; r8++, sub108Ptr++) {
|
||||
if (sub108Ptr->unk0 == a1) {
|
||||
u16 r1 = r8 + 29;
|
||||
sub108Ptr->unk2++;
|
||||
if (ptr != NULL) {
|
||||
ptr->unk68 = id - 16;
|
||||
ptr->unk68 = r1 - 16;
|
||||
}
|
||||
Log(0, gUnknown_81177F4, r8, r1 - 16, a1);
|
||||
Log(0, gUnknown_81177F4, r8, r1, r1 - 16, a1);
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -496,8 +496,8 @@ void GroundSprite_ExtendPaletteAdd(struct UnkGroundSpriteStruct *ptr, u16 a1)
|
||||
|
||||
if (a1 & 0x400) {
|
||||
r8 = 1;
|
||||
sub108Ptr = &gUnknown_3001B7C->unk108[0];
|
||||
if (sub108Ptr.unk2 < 0) {
|
||||
sub108Ptr = &gUnknown_3001B7C->unk108[1];
|
||||
if (sub108Ptr->unk2 > 0) {
|
||||
FatalError(&gUnknown_8117858, gUnknown_8117864, a1);
|
||||
}
|
||||
}
|
||||
@@ -505,25 +505,26 @@ void GroundSprite_ExtendPaletteAdd(struct UnkGroundSpriteStruct *ptr, u16 a1)
|
||||
r8 = 0;
|
||||
sub108Ptr = &gUnknown_3001B7C->unk108[0];
|
||||
for (; r8 < UNK_3001B7C_SUB108_COUNT; r8++, sub108Ptr++) {
|
||||
if (sub108Ptr.unk2 < 0) {
|
||||
if (sub108Ptr->unk2 <= 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (r8 >= UNK_3001B7C_SUB0_COUNT) {
|
||||
if (r8 >= UNK_3001B7C_SUB108_COUNT) {
|
||||
FatalError(&gUnknown_8117888, gUnknown_8117864, a1);
|
||||
}
|
||||
}
|
||||
|
||||
var_28 = (u16)(r8 + 29);
|
||||
var_24 = (u16)((r8 * 16) + 29);
|
||||
var_28 = r8 + 29;
|
||||
var_24 = (r8 * 16) + 464;
|
||||
if (a1 & 0x200) {
|
||||
file = OpenFileAndGetFileDataPtr(gUnknown_81177EC, &gMonsterFileArchive);
|
||||
r7 = file->data;
|
||||
r7 += (a1 & 0xFF) * 32;
|
||||
r7 += (a1 & 0xFF) * 64;
|
||||
}
|
||||
else {
|
||||
file = OpenFileAndGetFileDataPtr(gUnknown_81178F4[a1 & 0xFF], &gMonsterFileArchive);
|
||||
u32 id = a1 & 0xff;
|
||||
file = OpenFileAndGetFileDataPtr(id[gUnknown_81178F4], &gOrnamentFileArchive);
|
||||
r7 = file->data;
|
||||
}
|
||||
|
||||
@@ -557,3 +558,226 @@ void GroundSprite_ExtendPaletteAdd(struct UnkGroundSpriteStruct *ptr, u16 a1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void GroundSprite_ExtendPaletteDelete(struct UnkGroundSpriteStruct *ptr)
|
||||
{
|
||||
s32 r5;
|
||||
unkStruct_3001B7C_sub108 *sub108Ptr;
|
||||
|
||||
if (ptr != NULL) {
|
||||
r5 = ptr->unk68 - 13;
|
||||
if (r5 < 0)
|
||||
return;
|
||||
}
|
||||
else {
|
||||
r5 = 1;
|
||||
}
|
||||
|
||||
sub108Ptr = &gUnknown_3001B7C->unk108[r5];
|
||||
if (ptr != NULL) {
|
||||
ptr->unk68 = 0;
|
||||
}
|
||||
|
||||
if (--sub108Ptr->unk2 <= 0) {
|
||||
Log(0, gUnknown_81178C0, r5, sub108Ptr->unk0);
|
||||
sub108Ptr->unk0 = 0;
|
||||
sub108Ptr->unk2 = 0;
|
||||
sub_80997F4(r5 + 29, 0);
|
||||
}
|
||||
}
|
||||
|
||||
bool8 sub_80A6CF4(struct UnkGroundSpriteSubStructx48 *a0)
|
||||
{
|
||||
struct UnkGroundSpriteStruct *spArray[UNK_3001B7C_SUB0_COUNT];
|
||||
s32 i;
|
||||
unkStruct_3001B7C_sub0 *sub0Ptr;
|
||||
PixelPos pixelPos;
|
||||
s32 count = 0;
|
||||
s32 r9 = a0->unk0;
|
||||
s32 r10 = 0;
|
||||
s32 var_28 = -1;
|
||||
s32 var_24 = -1;
|
||||
|
||||
sub_809D248(&pixelPos);
|
||||
for (i = 0, sub0Ptr = &gUnknown_3001B7C->unk0[0]; i < UNK_3001B7C_SUB0_COUNT; i = (s16)(i+1), sub0Ptr++) {
|
||||
if (sub0Ptr->unk0 == 1) {
|
||||
struct UnkGroundSpriteStruct *ptr = sub0Ptr->unk8;
|
||||
|
||||
if (!(ptr->unk50 & 0x2000) && ptr->unk7C >= 0) {
|
||||
PixelPos resultPos;
|
||||
resultPos.x = (sub0Ptr->unk8->unk74 / 256) - pixelPos.x;
|
||||
resultPos.y = (sub0Ptr->unk8->unk78 / 256) - pixelPos.y;
|
||||
|
||||
if (resultPos.y > 0) {
|
||||
ptr->unk7C = 0x28 + resultPos.y;
|
||||
}
|
||||
else {
|
||||
ptr->unk7C = 0x28 - resultPos.y;
|
||||
}
|
||||
|
||||
if (resultPos.x > 0) {
|
||||
if (resultPos.x > ptr->unk7C) {
|
||||
ptr->unk7C = resultPos.x;
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (-resultPos.x > ptr->unk7C) {
|
||||
ptr->unk7C = -resultPos.x;
|
||||
}
|
||||
}
|
||||
|
||||
r10 += ptr->unk48.unk0;
|
||||
if (ptr->unk48.unk0 >= r9 && var_24 < ptr->unk7C) {
|
||||
var_28 = count;
|
||||
var_24 = ptr->unk7C;
|
||||
}
|
||||
spArray[count++] = ptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (r10 < r9)
|
||||
return FALSE;
|
||||
if (var_28 >= 0) {
|
||||
sub_80A69FC(spArray[var_28]);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
while (count > 0) {
|
||||
s32 i;
|
||||
s32 r5 = -1;
|
||||
s32 r3 = -1;
|
||||
s32 r6 = 0;
|
||||
|
||||
for (i = 0; i < count; i++) {
|
||||
if (r3 < spArray[i]->unk7C) {
|
||||
r5 = count; // This looks like a mistake to me? I believe it should be r5 = i instead, however I cannot verify the behavior in-game as I can't find where, if anywhere, this function runs.
|
||||
r3 = spArray[i]->unk7C;
|
||||
}
|
||||
}
|
||||
sub_80A69FC(spArray[r5]);
|
||||
|
||||
count--;
|
||||
for (i = r5; i < count; i++) {
|
||||
spArray[i] = spArray[i + 1];
|
||||
}
|
||||
|
||||
for (i = 0, sub0Ptr = &gUnknown_3001B7C->unk0[0]; i < UNK_3001B7C_SUB0_COUNT; i++, sub0Ptr++) {
|
||||
if (sub0Ptr->unk0 == 0) {
|
||||
if (++r6 >= r9) {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
r6 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
extern void sub_800E970(void);
|
||||
|
||||
extern PixelPos gUnknown_2039DD8;
|
||||
|
||||
void sub_80A6E68(void)
|
||||
{
|
||||
ResetSprites(FALSE);
|
||||
nullsub_10(FALSE);
|
||||
sub_800E970();
|
||||
}
|
||||
|
||||
void sub_80ABA7C(void);
|
||||
void sub_80ACAD4(void);
|
||||
void sub_80AD7AC(void);
|
||||
|
||||
void sub_80A6E80(void)
|
||||
{
|
||||
DungeonPos pos;
|
||||
|
||||
if (!sub_809D248(&gUnknown_2039DD8)) {
|
||||
gUnknown_2039DD8.x = 0;
|
||||
gUnknown_2039DD8.y = 0;
|
||||
}
|
||||
sub_80ABA7C();
|
||||
sub_80ACAD4();
|
||||
sub_80AD7AC();
|
||||
pos.x = gUnknown_2039DD8.x;
|
||||
pos.y = gUnknown_2039DD8.y;
|
||||
sub_800E90C(&pos);
|
||||
sub_8005180();
|
||||
nullsub_12();
|
||||
}
|
||||
|
||||
void sub_80A6EC8(struct UnkGroundSpriteStruct *ptr, s32 a1)
|
||||
{
|
||||
if (ptr->unk52 > 0) {
|
||||
if (a1 <= ptr->unk48.unk0) {
|
||||
a1 = ptr->unk48.unk0;
|
||||
}
|
||||
if (ptr->unk64 != a1) {
|
||||
ptr->unk66 = a1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80A6EFC(struct UnkGroundSpriteStruct *ptr, s32 a1_, s32 a2_)
|
||||
{
|
||||
s32 flagResult;
|
||||
unkStruct_3001B7C_sub0 *sub0Ptr;
|
||||
s32 a1 = (s16) a1_;
|
||||
s32 a2 = (s8) a2_;
|
||||
|
||||
if (ptr->unk52 < 0) {
|
||||
if (ptr->unk66 >= 0) {
|
||||
if (!sub_80A68F8(ptr, &ptr->unk48, ptr->unk66))
|
||||
return;
|
||||
ptr->unk66 = -1;
|
||||
}
|
||||
else {
|
||||
if (ptr->unk48.unk0 <= 0)
|
||||
return;
|
||||
if (!sub_80A68F8(ptr, &ptr->unk48, -1))
|
||||
return;
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (ptr->unk66 >= 0) {
|
||||
sub_80A69FC(ptr);
|
||||
if (!sub_80A68F8(ptr, &ptr->unk48, ptr->unk66))
|
||||
return;
|
||||
ptr->unk66 = -1;
|
||||
}
|
||||
}
|
||||
|
||||
// s16 memes...
|
||||
flagResult = a1 & 0x400;
|
||||
if ((s16)flagResult) {
|
||||
ptr->unk0 &= ~(0x1000);
|
||||
return;
|
||||
}
|
||||
|
||||
sub0Ptr = &gUnknown_3001B7C->unk0[ptr->unk52];
|
||||
ptr->unk70 = 1;
|
||||
ptr->unk7C = -1;
|
||||
switch ((a1 & 0x700)) {
|
||||
case 0x300:
|
||||
ptr->unk6C = 0;
|
||||
break;
|
||||
case 0x100:
|
||||
ptr->unk6C = 0x80;
|
||||
break;
|
||||
case 0:
|
||||
default:
|
||||
ptr->unk6C = 0x100;
|
||||
break;
|
||||
case 0x200:
|
||||
ptr->unk6C = 0x200;
|
||||
break;
|
||||
}
|
||||
|
||||
ptr->unk6E = 0;
|
||||
AxResInit((void *)ptr, (void *) ptr->unk48.unk4, (a1 & 0xFF) + a2 / 8, a2 & 7, sub0Ptr->unk4, 0, ((u16)a1 & 0x800) != 0); // TODO: fix...
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user