mineralWaterSource.c OK

Also modified entity.h to include BoundingBox
This commit is contained in:
21aslade 2020-06-20 21:45:19 -06:00
parent 94d3564e5f
commit 933417209a
7 changed files with 60 additions and 78 deletions

View File

@ -1,72 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start MineralWaterSource
MineralWaterSource: @ 0x08097370
push {lr}
ldr r2, _08097384 @ =gUnk_08123298
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08097384: .4byte gUnk_08123298
thumb_func_start sub_08097388
sub_08097388: @ 0x08097388
push {r4, lr}
adds r4, r0, #0
bl sub_0806FBD8
cmp r0, #0
beq _080973D4
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
ldr r1, _080973D8 @ =gUnk_081232A0
adds r0, r0, r1
ldrb r1, [r0]
strb r1, [r4, #0xb]
ldrb r2, [r0, #3]
adds r1, r4, #0
adds r1, #0x40
strb r2, [r1]
ldr r2, [r4, #0x48]
ldrb r1, [r0, #1]
strb r1, [r2, #6]
ldr r1, [r4, #0x48]
ldrb r0, [r0, #2]
strb r0, [r1, #7]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #3
movs r0, #0x91
strb r0, [r1]
subs r1, #4
movs r0, #2
strb r0, [r1]
movs r0, #1
strb r0, [r4, #0xc]
_080973D4:
pop {r4, pc}
.align 2, 0
_080973D8: .4byte gUnk_081232A0
thumb_func_start sub_080973DC
sub_080973DC: @ 0x080973DC
adds r0, #0x41
movs r1, #0
strb r1, [r0]
bx lr

View File

@ -1828,10 +1828,10 @@ gUnk_08123274:: @ 08123274
gUnk_0812327C:: @ 0812327C
.incbin "baserom.gba", 0x12327C, 0x000001C
gUnk_08123298:: @ 08123298
MineralWaterSourceActionFuncs:: @ 08123298
.incbin "baserom.gba", 0x123298, 0x0000008
gUnk_081232A0:: @ 081232A0
MineralWaterSourceParameters:: @ 081232A0
.incbin "baserom.gba", 0x1232A0, 0x0000004
gUnk_081232A4:: @ 081232A4

View File

@ -17,6 +17,13 @@ typedef struct {
u8 parameter;
} EntityType;
typedef struct {
u8 unknown[6];
u8 field_0x6;
u8 field_0x7;
u8 unknown2[4];
} BoundingBox;
union SplitWord {
s32 WORD;
struct {
@ -103,7 +110,7 @@ typedef struct Entity {
u8 field_0x44;
u8 currentHealth;
s16 field_0x46;
u32* boundingBox;
BoundingBox* boundingBox;
u8 field_0x4c;
u8 field_0x4d;
u8 field_0x4e;

View File

@ -704,7 +704,7 @@ SECTIONS {
asm/crenalBeanSprout.o(.text);
asm/minecartDoor.o(.text);
asm/objectOnPillar.o(.text);
asm/mineralWaterSource.o(.text);
src/mineralWaterSource.o(.text);
asm/minishSizedArchway.o(.text);
asm/object70.o(.text);
asm/pushableGrave.o(.text);

View File

@ -7,7 +7,7 @@ extern void sub_0808E714(Entity*);
extern void (*const gUnk_08121C48[])(Entity*);
extern u32 gUnk_08121C58;
extern BoundingBox gUnk_08121C58;
void HeartContainer(Entity* this) {
gUnk_08121C48[this->action](this);

47
src/mineralWaterSource.c Normal file
View File

@ -0,0 +1,47 @@
#include "global.h"
#include "entity.h"
extern void (*MineralWaterSourceActionFuncs[])(Entity *);
typedef struct {
u8 field_0x00;
u8 field_0x01;
u8 field_0x02;
u8 field_0x03;
} UnkStruct_MineralWater;
extern UnkStruct_MineralWater MineralWaterSourceParameters[];
extern bool32 sub_0806FBD8(Entity *);
void MineralWaterSource(Entity *this) {
MineralWaterSourceActionFuncs[this->action](this);
}
void MineralWaterSource_Init(Entity *this) {
UnkStruct_MineralWater *unknownParameters;
if (!sub_0806FBD8(this)) {
return;
}
unknownParameters = &MineralWaterSourceParameters[this->entityType.form];
this->entityType.parameter = unknownParameters->field_0x00;
this->field_0x40 = unknownParameters->field_0x03;
this->boundingBox->field_0x6 = unknownParameters->field_0x01;
this->boundingBox->field_0x7 = unknownParameters->field_0x02;
this->flags |= 0x80;
this->field_0x3c = 7;
this->damageType = 145;
this->flags2 = 2;
this->action = 1;
}
void sub_080973DC(Entity *this) {
this->bitfield = 0;
}

View File

@ -11,7 +11,7 @@ extern u32 Random(void);
extern void (*gUnk_081206C4[99])(Entity*);
extern u32 gUnk_080FD1A8;
extern BoundingBox gUnk_080FD1A8;
// Main
void Object1A(Entity* ent) {