Decompile minishLight.c

This commit is contained in:
Kevin Tavukciyan 2020-08-04 16:52:06 -05:00
parent e2bbe039de
commit 778577d6eb
3 changed files with 41 additions and 82 deletions

View File

@ -1,81 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start MinishLight
MinishLight: @ 0x0809F828
push {lr}
ldr r2, _0809F83C @ =gUnk_081247F8
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809F83C: .4byte gUnk_081247F8
thumb_func_start sub_0809F840
sub_0809F840: @ 0x0809F840
push {lr}
adds r2, r0, #0
movs r1, #0
movs r0, #1
strb r0, [r2, #0xc]
strb r1, [r2, #0x1e]
movs r0, #0x20
strb r0, [r2, #0xe]
strb r1, [r2, #0xf]
ldrb r0, [r2, #0xb]
cmp r0, #0
beq _0809F860
ldrb r0, [r2, #0x18]
movs r1, #0x40
orrs r0, r1
strb r0, [r2, #0x18]
_0809F860:
adds r0, r2, #0
bl UpdateSpriteForCollisionLayer
pop {pc}
thumb_func_start sub_0809F868
sub_0809F868: @ 0x0809F868
push {lr}
adds r1, r0, #0
ldrb r0, [r1, #0xe]
subs r0, #1
strb r0, [r1, #0xe]
movs r2, #0xff
lsls r0, r0, #0x18
cmp r0, #0
bne _0809F8A2
ldrb r0, [r1, #0xf]
cmp r0, #0
bne _0809F890
ldrb r0, [r1, #0x1e]
adds r0, #1
strb r0, [r1, #0x1e]
ands r0, r2
cmp r0, #3
bne _0809F89E
movs r0, #1
b _0809F89C
_0809F890:
ldrb r0, [r1, #0x1e]
subs r0, #1
strb r0, [r1, #0x1e]
ands r0, r2
cmp r0, #0
bne _0809F89E
_0809F89C:
strb r0, [r1, #0xf]
_0809F89E:
movs r0, #0x20
strb r0, [r1, #0xe]
_0809F8A2:
pop {pc}

View File

@ -839,7 +839,7 @@ SECTIONS {
src/object/palaceArchway.o(.text);
asm/objectA2.o(.text);
src/object/cloud.o(.text);
asm/minishLight.o(.text);
src/object/minishLight.o(.text);
asm/objectA5.o(.text);
asm/objectA6.o(.text);
asm/objectA7.o(.text);

40
src/object/minishLight.c Normal file
View File

@ -0,0 +1,40 @@
#include "global.h"
#include "entity.h"
extern void (* const gUnk_081247F8[])(Entity*);
void MinishLight(Entity* this)
{
gUnk_081247F8[this->action](this);
}
void sub_0809F840(Entity* this)
{
this->action = 1;
this->frameIndex = 0;
this->actionDelay = 0x20;
this->field_0xf = 0;
if (this->entityType.parameter != 0)
{
this->spriteSettings.b.flipX = 1;
}
UpdateSpriteForCollisionLayer(this);
}
void sub_0809F868(Entity* this)
{
if (--this->actionDelay == 0) {
if (this->field_0xf == 0) {
if (++this->frameIndex == 3) {
this->field_0xf = 1;
}
} else {
if (--this->frameIndex == 0) {
this->field_0xf = 0;
}
}
this->actionDelay = 32;
}
}