code_0805F9A0

This commit is contained in:
theo3 2020-11-23 22:18:05 -08:00
parent d2d35118bc
commit 0b52f80e4d
5 changed files with 99 additions and 381 deletions

View File

@ -414,18 +414,22 @@ _0800425C:
pop {r4}
bx lr
thumb_func_start InitializeAnimation
thumb_func_start InitializeAnimation @ r0 = Entity*, r1 = Frame*
InitializeAnimation: @ 0x08004260
movs r2, #0x58
movs r2, #0x58 @ anim idx
strb r1, [r0, r2]
ldrh r3, [r0, #0x12]
lsls r3, r3, #4
ldr r2, _0800439C @ =gUnk_080029B4
ldr r2, [r2, r3]
lsls r1, r1, #2
ldr r1, [r2, r1]
ldrh r3, [r0, #0x12] @ Sprite idx
lsls r3, r3, #4 @ *= 16
ldr r2, _0800439C @ =gSpritePtrs
ldr r2, [r2, r3] @ Load AnimData
lsls r1, r1, #2 @ *= 4
ldr r1, [r2, r1] @ AnimData->???
str r1, [r0, #0x5c]
b _0800432A
b FrameZero
thumb_func_start GetNextFrame
GetNextFrame: @ 0x08004274
@ -434,31 +438,43 @@ GetNextFrame: @ 0x08004274
non_word_aligned_thumb_func_start UpdateAnimationVariableFrames
UpdateAnimationVariableFrames: @ 0x08004276
movs r3, #0x59
ldrb r2, [r0, r3]
ldrb r2, [r0, r3] @ Decrease frame timer
subs r2, r2, r1
beq _0800432A
ble _08004284
beq FrameZero @ Frame timer is 0
ble FrameNeg @ Frame timer is below 0
strb r2, [r0, r3]
bx lr
_08004284:
ldr r1, [r0, #0x5c]
FrameNeg:
ldr r1, [r0, #0x5c] @ Load frame data
_08004286:
ldrb r3, [r1, #1]
adds r2, r2, r3
bgt _0800429C
bgt _0800429C @ Frame idx greater (?)
ldrb r3, [r1, #3]
adds r1, #4
lsrs r3, r3, #8
lsrs r3, r3, #8 @ Branch if != 0xFF
blo _08004286
ldrb r3, [r1]
lsls r3, r3, #2
subs r1, r1, r3
b _08004286
_0800429C:
str r1, [r0, #0x5c]
push {r2, lr}
bl _0800432A
bl FrameZero
pop {r2, r3}
movs r1, #0x59
strb r2, [r0, r1]
bx r3
@ -479,27 +495,34 @@ UpdateAnimationSingleFrame: @ 0x080042B8
sub_080042BA: @ 0x080042BA
push {lr}
bl UpdateAnimationVariableFrames
_080042C0:
pop {r1}
mov lr, r1
ldrb r1, [r0, #0x1e]
ldrb r3, [r0, #0x1f]
strb r1, [r0, #0x1f]
cmp r1, r3
beq _08004328
ldrh r2, [r0, #0x12]
thumb_func_start sub_080042D0
sub_080042D0: @ 0x080042D0
cmp r1, #0xff
beq _08004328
lsls r2, r2, #4
lsls r3, r1, #2
ldr r1, _080043A0 @ =gUnk_080029B4
ldr r1, _080043A0 @ =gSpritePtrs
adds r1, r1, r2
ldr r2, [r1, #4]
cmp r2, #0
beq _08004328
ldr r1, [r1, #8]
adds r2, r2, r3
ldrb r3, [r2]
@ -538,31 +561,41 @@ _08004326:
pop {r4, r5}
_08004328:
bx lr
_0800432A:
ldrb r3, [r0, #0x1e]
strb r3, [r0, #0x1f]
FrameZero: @ r0 = Entity*
ldrb r3, [r0, #0x1e] @ Get frame idx
strb r3, [r0, #0x1f] @ Set it to last frame idx
ldr r1, [r0, #0x5c]
ldrb r3, [r1]
ldrb r3, [r1] @ Store new frame idx
strb r3, [r0, #0x1e]
ldrb r3, [r1, #1]
movs r2, #0x59
strb r3, [r0, r2]
ldrb r3, [r1, #2]
movs r2, #0x5b
strb r3, [r0, r2]
ldrb r3, [r1, #3]
movs r2, #0x5a
strb r3, [r0, r2]
adds r1, #4
lsrs r3, r3, #8
blo _08004352
ldrb r3, [r1]
lsls r3, r3, #2
subs r1, r1, r3
_08004352:
str r1, [r0, #0x5c]
bx lr
.align 2, 0
_08004358: .4byte gUnk_081326EC
_0800435C: .4byte gUnk_02024048
_08004360: .4byte gUnk_02021F20
@ -580,8 +613,8 @@ _0800438C: .4byte 0x0000EE00
_08004390: .4byte 0x00001FFF
_08004394: .4byte gUnk_08000228
_08004398: .4byte 0x00004000
_0800439C: .4byte gUnk_080029B4
_080043A0: .4byte gUnk_080029B4
_0800439C: .4byte gSpritePtrs
_080043A0: .4byte gSpritePtrs
_080043A4: .4byte gUnk_02024494
thumb_func_start sub_080043A8
@ -589,8 +622,8 @@ sub_080043A8: @ 0x080043A8
movs r1, #0xb
b _080043B6
thumb_func_start sub_080043AC
sub_080043AC: @ 0x080043AC
thumb_func_start CreateChestSpawner
CreateChestSpawner: @ 0x080043AC
movs r1, #0xc
b _080043B6
@ -599,31 +632,42 @@ sub_080043B0: @ 0x080043AC
movs r1, #0x52
b _080043B6
thumb_func_start sub_080043B4
sub_080043B4: @ 0x080043B4
thumb_func_start CreateItemOnGround
CreateItemOnGround: @ 0x080043B4
movs r1, #0
_080043B6:
push {r4, lr}
adds r4, r0, #0
movs r0, #0xf
movs r2, #0
bl CreateObject
cmp r0, #0
beq _080043E0
beq _080043E0 @ Branch if entity could not be created
movs r1, #0x48
ldr r1, [r4, r1]
ldr r1, [r4, r1] @ Unused?
ldrh r3, [r4, #0x2e]
strh r3, [r0, #0x2e]
ldrh r3, [r4, #0x32]
strh r3, [r0, #0x32]
ldrh r3, [r4, #0x36]
strh r3, [r0, #0x36]
ldrb r3, [r4, #8]
cmp r3, #3
cmp r3, #3 @ Is the spawner an enemy?
bne _080043E0
movs r1, #1
strb r1, [r0, #0xb]
strb r1, [r0, #0xb] @ Set base parameter
_080043E0:
adds r0, r4, #0
bl DeleteEntity
pop {r4, pc}

View File

@ -1,295 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_080041E8
sub_080041E8: @ 0x080041E8
subs r0, r0, r2
subs r1, r1, r3
thumb_func_start sub_080041EC
sub_080041EC: @ 0x080041EC
adds r2, r0, #0
muls r0, r2, r0
adds r3, r1, #0
muls r1, r3, r1
push {lr}
adds r0, r0, r1
lsls r0, r0, #8
bl Sqrt
pop {r3}
bx r3
non_word_aligned_thumb_func_start sub_08004202
sub_08004202: @ 0x08004202
push {r1, lr}
ldrb r1, [r0, #0x14]
bl sub_08004212
pop {r0}
str r1, [r0]
adds r0, r2, #0
pop {pc}
non_word_aligned_thumb_func_start sub_08004212
sub_08004212: @ 0x08004212
push {r4}
adds r4, r1, #0
movs r3, #3
tst r4, r3
beq _08004226
movs r3, #2
lsrs r4, r4, #3
blo _08004224
rsbs r3, r3, #0
_08004224:
adds r2, r2, r3
_08004226:
adds r4, r1, #0
movs r3, #3
ands r4, r3
cmp r4, #2
beq _0800423C
movs r3, #0x80
adds r1, #1
lsrs r1, r1, #3
bhs _0800423A
rsbs r3, r3, #0
_0800423A:
adds r2, r2, r3
_0800423C:
ldr r3, _08004390 @ =0x00001FFF
ands r2, r3
movs r4, #0x38
ldrb r4, [r0, r4]
lsls r4, r4, #3
ldr r3, _08004394 @ =gUnk_08000228
adds r3, r3, r4
ldr r4, [r3]
ldrh r1, [r4, r2]
ldr r4, _08004398 @ =0x00004000
tst r1, r4
bne _0800425C
lsls r1, r1, #0x11
lsrs r1, r1, #0x10
ldr r4, [r3, #4]
ldrh r1, [r4, r1]
_0800425C:
pop {r4}
bx lr
thumb_func_start InitializeAnimation
InitializeAnimation: @ 0x08004260
movs r2, #0x58
strb r1, [r0, r2]
ldrh r3, [r0, #0x12]
lsls r3, r3, #4
ldr r2, _0800439C @ =gUnk_080029B4
ldr r2, [r2, r3]
lsls r1, r1, #2
ldr r1, [r2, r1]
str r1, [r0, #0x5c]
b _0800432A
thumb_func_start GetNextFrame
GetNextFrame: @ 0x08004274
movs r1, #1
non_word_aligned_thumb_func_start UpdateAnimationVariableFrames
UpdateAnimationVariableFrames: @ 0x08004276
movs r3, #0x59
ldrb r2, [r0, r3]
subs r2, r2, r1
beq _0800432A
ble _08004284
strb r2, [r0, r3]
bx lr
_08004284:
ldr r1, [r0, #0x5c]
_08004286:
ldrb r3, [r1, #1]
adds r2, r2, r3
bgt _0800429C
ldrb r3, [r1, #3]
adds r1, #4
lsrs r3, r3, #8
blo _08004286
ldrb r3, [r1]
lsls r3, r3, #2
subs r1, r1, r3
b _08004286
_0800429C:
str r1, [r0, #0x5c]
push {r2, lr}
bl _0800432A
pop {r2, r3}
movs r1, #0x59
strb r2, [r0, r1]
bx r3
thumb_func_start InitAnimationForceUpdate
InitAnimationForceUpdate: @ 0x080042AC
push {lr}
bl InitializeAnimation
movs r2, #0xff
strb r2, [r0, #0x1f]
b _080042C0
thumb_func_start UpdateAnimationSingleFrame
UpdateAnimationSingleFrame: @ 0x080042B8
movs r1, #1
non_word_aligned_thumb_func_start sub_080042BA
sub_080042BA: @ 0x080042BA
push {lr}
bl UpdateAnimationVariableFrames
_080042C0:
pop {r1}
mov lr, r1
ldrb r1, [r0, #0x1e]
ldrb r3, [r0, #0x1f]
strb r1, [r0, #0x1f]
cmp r1, r3
beq _08004328
ldrh r2, [r0, #0x12]
thumb_func_start sub_080042D0
sub_080042D0: @ 0x080042D0
cmp r1, #0xff
beq _08004328
lsls r2, r2, #4
lsls r3, r1, #2
ldr r1, _080043A0 @ =gUnk_080029B4
adds r1, r1, r2
ldr r2, [r1, #4]
cmp r2, #0
beq _08004328
ldr r1, [r1, #8]
adds r2, r2, r3
ldrb r3, [r2]
cmp r3, #0
beq _08004328
push {r4, r5}
movs r3, #0x26
ldrb r3, [r0, r3]
movs r4, #0xc
muls r3, r4, r3
ldr r4, _080043A4 @ =gUnk_02024494
adds r4, r4, r3
ldrb r3, [r4]
movs r5, #0xf
ands r3, r5
cmp r3, #5
blo _08004326
ldrb r5, [r4, #6]
ldrb r3, [r2]
strb r3, [r4, #6]
subs r5, r5, r3
ldrh r3, [r2, #2]
lsls r3, r3, #5
adds r1, r1, r3
ldr r2, [r4, #8]
str r1, [r4, #8]
subs r2, r2, r1
orrs r5, r2
beq _08004326
movs r2, #0xf0
ldrb r1, [r4]
bics r1, r2
adds r1, #0x30
strb r1, [r4]
_08004326:
pop {r4, r5}
_08004328:
bx lr
_0800432A:
ldrb r3, [r0, #0x1e]
strb r3, [r0, #0x1f]
ldr r1, [r0, #0x5c]
ldrb r3, [r1]
strb r3, [r0, #0x1e]
ldrb r3, [r1, #1]
movs r2, #0x59
strb r3, [r0, r2]
ldrb r3, [r1, #2]
movs r2, #0x5b
strb r3, [r0, r2]
ldrb r3, [r1, #3]
movs r2, #0x5a
strb r3, [r0, r2]
adds r1, #4
lsrs r3, r3, #8
blo _08004352
ldrb r3, [r1]
lsls r3, r3, #2
subs r1, r1, r3
_08004352:
str r1, [r0, #0x5c]
bx lr
.align 2, 0
_08004358: .4byte gUnk_081326EC
_0800435C: .4byte gUnk_02024048
_08004360: .4byte gUnk_02021F20
_08004364: .4byte gUnk_02024048
_08004368: .4byte gRoomControls
_0800436C: .4byte 0x0000016E
_08004370: .4byte 0x0000011E
_08004374: .4byte gUnk_03000BF6
_08004378: .4byte gUnk_03000BF8
_0800437C: .4byte 0x000003F0
_08004380: .4byte gUnk_08000248
_08004384: .4byte 0x000FFFFF
_08004388: .4byte 0x00080000
_0800438C: .4byte 0x0000EE00
_08004390: .4byte 0x00001FFF
_08004394: .4byte gUnk_08000228
_08004398: .4byte 0x00004000
_0800439C: .4byte gUnk_080029B4
_080043A0: .4byte gUnk_080029B4
_080043A4: .4byte gUnk_02024494
thumb_func_start sub_080043A8
sub_080043A8: @ 0x080043A8
movs r1, #0xb
b _080043B6
thumb_func_start sub_080043AC
sub_080043AC: @ 0x080043AC
movs r1, #0xc
b _080043B6
thumb_func_start sub_080043B0
sub_080043B0: @ 0x080043AC
movs r1, #0x52
b _080043B6
thumb_func_start sub_080043B4
sub_080043B4: @ 0x080043B4
movs r1, #0
_080043B6:
push {r4, lr}
adds r4, r0, #0
movs r0, #0xf
movs r2, #0
bl CreateObject
cmp r0, #0
beq _080043E0
movs r1, #0x48
ldr r1, [r4, r1]
ldrh r3, [r4, #0x2e]
strh r3, [r0, #0x2e]
ldrh r3, [r4, #0x32]
strh r3, [r0, #0x32]
ldrh r3, [r4, #0x36]
strh r3, [r0, #0x36]
ldrb r3, [r4, #8]
cmp r3, #3
bne _080043E0
movs r1, #1
strb r1, [r0, #0xb]
_080043E0:
adds r0, r4, #0
bl DeleteEntity
pop {r4, pc}

View File

@ -4,56 +4,6 @@
.syntax unified
.text
thumb_func_start sub_0805EC04
sub_0805EC04: @ 0x0805EC04
push {r4, r5, r6, r7, lr}
adds r3, r0, #0
movs r2, #1
ldr r0, _0805EC4C @ =gUnk_03000000
movs r5, #1
movs r6, #0x3f
rsbs r6, r6, #0
movs r7, #4
rsbs r7, r7, #0
adds r4, r0, #0
adds r4, #8
_0805EC1A:
ldr r0, _0805EC50 @ =0x00000426
adds r1, r4, r0
ldrb r0, [r1]
cmp r0, #0
bne _0805EC54
strb r5, [r1]
movs r0, #0x1f
ands r2, r0
lsls r2, r2, #1
ldrb r1, [r3, #0x1b]
adds r0, r6, #0
ands r0, r1
orrs r0, r2
strb r0, [r3, #0x1b]
ldrb r2, [r3, #0x19]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
orrs r1, r5
adds r0, r7, #0
ands r0, r2
orrs r0, r1
strb r0, [r3, #0x19]
movs r0, #1
b _0805EC5E
.align 2, 0
_0805EC4C: .4byte gUnk_03000000
_0805EC50: .4byte 0x00000426
_0805EC54:
adds r4, #8
adds r2, #1
cmp r2, #0x1f
bls _0805EC1A
movs r0, #0
_0805EC5E:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_0805EC60
sub_0805EC60: @ 0x0805EC60
@ -1877,7 +1827,7 @@ sub_0805FA04: @ 0x0805FA04
push {r4, r5, lr}
movs r0, #1
bl sub_0801DA90
ldr r0, _0805FA78 @ =gUnk_02034CB0
ldr r0, _0805FA78 @ =gBG0Buffer
movs r1, #0x80
lsls r1, r1, #4
bl _DmaZero
@ -1922,7 +1872,7 @@ sub_0805FA04: @ 0x0805FA04
bl sub_08050008
pop {r4, r5, pc}
.align 2, 0
_0805FA78: .4byte gUnk_02034CB0
_0805FA78: .4byte gBG0Buffer
_0805FA7C: .4byte gUnk_02001A40
_0805FA80: .4byte gScreen
_0805FA84: .4byte 0x00001E0F

View File

@ -79,7 +79,7 @@ SECTIONS {
. = 0x00021EE0; gUnk_02021EE0 = .;
. = 0x00021F00; gUnk_02021F00 = .;
. = 0x00021F20; gUnk_02021F20 = .;
. = 0x00021F30; gUnk_02021F30 = .;
. = 0x00021F30; gBG1Buffer = .;
. = 0x00021F70; gUnk_02021F70 = .;
. = 0x00022030; gUnk_02022030 = .;
. = 0x00022130; gUnk_02022130 = .;
@ -126,7 +126,7 @@ SECTIONS {
. = 0x000344A0; gUnk_020344A0 = .;
. = 0x000344B0; gUnk_020344B0 = .;
. = 0x000344F0; gUnk_020344F0 = .;
. = 0x00034CB0; gUnk_02034CB0 = .;
. = 0x00034CB0; gBG0Buffer = .;
. = 0x00034CB2; gUnk_02034CB2 = .;
. = 0x00034CF0; gUnk_02034CF0 = .;
. = 0x00034D30; gUnk_02034D30 = .;
@ -534,6 +534,7 @@ SECTIONS {
asm/code_0805E3B0.o(.text);
asm/getEmptyEntity.o(.text);
src/entity.o(.text);
src/code_0805EC04.o(.text);
asm/code_0805EC04.o(.text);
/* npcs */
src/npc/gentari.o(.text);

18
src/code_0805EC04.c Normal file
View File

@ -0,0 +1,18 @@
#include "entity.h"
extern u8 gUnk_03000000;
bool32 sub_0805EC04(Entity* this) {
u32 i = 1;
u8* l = &gUnk_03000000;
u32 j = 1;
for (; i < 0x20; i++) {
if (l[(i * 8) + 0x426] == 0) {
l[(i * 8) + 0x426] = j;
this->spriteSet.b1 = i;
this->spriteSet.b0 |= j;
return TRUE;
}
}
return FALSE;
}