chestSpawner

This commit is contained in:
theo3 2020-06-19 22:36:36 -07:00
parent 82ee1318aa
commit 4240e9e42d
5 changed files with 75 additions and 138 deletions

View File

@ -6,69 +6,6 @@
.text
thumb_func_start ChestSpawner
ChestSpawner: @ 0x08083DD8
push {lr}
ldr r2, _08083DEC @ =gUnk_0811F7E8
ldrb r1, [r0, #0xa]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08083DEC: .4byte gUnk_0811F7E8
thumb_func_start sub_08083DF0
sub_08083DF0: @ 0x08083DF0
push {lr}
ldr r2, _08083E04 @ =gUnk_0811F808
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08083E04: .4byte gUnk_0811F808
thumb_func_start sub_08083E08
sub_08083E08: @ 0x08083E08
push {lr}
ldr r2, _08083E1C @ =gUnk_0811F818
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08083E1C: .4byte gUnk_0811F818
thumb_func_start sub_08083E20
sub_08083E20: @ 0x08083E20
push {r4, lr}
adds r4, r0, #0
movs r0, #3
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #7
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r1, [r4, #0x19]
movs r0, #0xd
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x19]
adds r0, r4, #0
bl sub_080842D8
adds r0, r4, #0
bl sub_08078828
pop {r4, pc}
thumb_func_start sub_08083E4C
sub_08083E4C: @ 0x08083E4C
push {r4, lr}

View File

@ -6,81 +6,6 @@
.text
thumb_func_start HeartContainer
HeartContainer: @ 0x0808E688
push {lr}
ldr r2, _0808E69C @ =gUnk_08121C48
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808E69C: .4byte gUnk_08121C48
thumb_func_start sub_0808E6A0
sub_0808E6A0: @ 0x0808E6A0
push {r4, lr}
adds r4, r0, #0
adds r0, #0x84
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _0808E6B4
bl DeleteThisEntity
_0808E6B4:
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x62
strb r0, [r4, #0xa]
ldrb r1, [r4, #0x18]
subs r0, #0x66
ands r0, r1
strb r0, [r4, #0x18]
ldr r0, _0808E6E0 @ =gUnk_08121C58
str r0, [r4, #0x48]
adds r1, r4, #0
adds r1, #0x38
movs r2, #3
movs r0, #3
strb r0, [r1]
ldrb r1, [r4, #0x11]
subs r0, #0x13
ands r0, r1
orrs r0, r2
strb r0, [r4, #0x11]
pop {r4, pc}
.align 2, 0
_0808E6E0: .4byte gUnk_08121C58
thumb_func_start sub_0808E6E4
sub_0808E6E4: @ 0x0808E6E4
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _0808E712
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x18]
subs r0, #6
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
ldrb r0, [r4, #0x19]
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x19]
adds r0, r4, #0
bl sub_0808E714
_0808E712:
pop {r4, pc}
thumb_func_start sub_0808E714
sub_0808E714: @ 0x0808E714
push {r4, lr}

View File

@ -600,6 +600,7 @@ SECTIONS {
asm/object9.o(.text);
asm/objectA.o(.text);
asm/objectB.o(.text);
src/chestSpawner.o(.text);
asm/chestSpawner.o(.text);
asm/objectD.o(.text);
asm/objectE.o(.text);
@ -663,6 +664,7 @@ SECTIONS {
asm/object44.o(.text);
asm/object45.o(.text);
asm/giantBookLadder.o(.text);
src/heartContainer.o(.text);
asm/heartContainer.o(.text);
asm/object48.o(.text);
asm/object49.o(.text);

37
src/chestSpawner.c Normal file
View File

@ -0,0 +1,37 @@
#include "global.h"
#include "entity.h"
extern void sub_080842D8(Entity*);
extern void sub_08078828(Entity*);
extern u32 CheckLocalFlag(u32);
extern void InitializeAnimation(Entity*, u32);
extern u32 CheckFlags(u32);
extern void sub_08083E20(Entity*);
extern void (*const gUnk_0811F7E8[])(Entity*);
extern void (*const gUnk_0811F808[])(Entity*);
extern void (*const gUnk_0811F818[])(Entity*);
extern u32 gUnk_0811F8B0;
void ChestSpawner(Entity* this)
{
gUnk_0811F7E8[this->entityType.form](this);
}
void sub_08083DF0(Entity* this) {
gUnk_0811F808[this->action](this);
}
void sub_08083E08(Entity *this)
{
gUnk_0811F818[this->action](this);
}
void sub_08083E20(Entity *this)
{
this->action = 3;
this->spriteSettings.b.ss0 = 1;
this->spriteOrder.b1 = 0;
sub_080842D8(this);
sub_08078828(this);
}

36
src/heartContainer.c Normal file
View File

@ -0,0 +1,36 @@
#include "global.h"
#include "entity.h"
extern u32 CheckFlags(u32);
extern void DeleteThisEntity();
extern void sub_0808E714(Entity*);
extern void (*const gUnk_08121C48[])(Entity*);
extern u32 gUnk_08121C58;
void HeartContainer(Entity* this) {
gUnk_08121C48[this->action](this);
}
void sub_0808E6A0(Entity* this) {
if (CheckFlags(*(u16*)&this->cutsceneBeh)) {
DeleteThisEntity();
}
this->action = 1;
this->entityType.form = 0x62;
this->spriteSettings.b.ss0 = 0;
this->boundingBox = &gUnk_08121C58;
this->collisionLayer = 3;
this->scriptedScene = 3;
}
void sub_0808E6E4(Entity* this) {
if (CheckFlags(this->field_0x86)) {
this->action = 2;
this->spriteSettings.b.ss0 = 1;
this->spriteOrder.b0 = 3;
sub_0808E714(this);
}
}