summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2020-08-16 15:39:30 -0700
committertheo3 <arisstephenson2@gmail.com>2020-08-16 15:39:30 -0700
commitf2aeda134dbfce82ced4d91d86f7db0b62e4af28 (patch)
treecfd8034c832a8a9f175692af6c39b7636629e7c0
parent3dc1506bcb8b7a3ca041dfd9ffd67f38644ff9ed (diff)
tektiteGolden.c OK
-rw-r--r--asm/tektiteGolden.s189
-rw-r--r--include/functions.h4
-rw-r--r--linker.ld1
-rw-r--r--src/enemy/tektiteGolden.c216
4 files changed, 142 insertions, 268 deletions
diff --git a/asm/tektiteGolden.s b/asm/tektiteGolden.s
deleted file mode 100644
index d51c9728..00000000
--- a/asm/tektiteGolden.s
+++ /dev/null
@@ -1,189 +0,0 @@
- .include "asm/macros.inc"
-
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_08038048
-sub_08038048: @ 0x08038048
- push {r4, r5, r6, lr}
- adds r4, r0, #0
- movs r1, #2
- bl UpdateAnimationVariableFrames
- adds r0, r4, #0
- bl sub_080AEF88
- movs r0, #0x36
- ldrsh r6, [r4, r0]
- bl Random
- adds r5, r0, #0
- movs r0, #0xf
- ands r5, r0
- movs r1, #0xc0
- lsls r1, r1, #6
- adds r0, r4, #0
- bl sub_080044EC
- cmp r0, #1
- bne _08038088
- movs r0, #0
- movs r1, #3
- strb r1, [r4, #0xc]
- strb r0, [r4, #0xd]
- movs r0, #0x14
- strb r0, [r4, #0xe]
- adds r0, r4, #0
- bl InitializeAnimation
- b _0803810C
-_08038088:
- ldrh r0, [r4, #0x2a]
- cmp r0, #0
- beq _08038098
- adds r1, r0, #0
- adds r0, r4, #0
- bl sub_0800417E
- b _080380B0
-_08038098:
- adds r0, r4, #0
- bl sub_080002B8
- movs r1, #0xf0
- ands r1, r0
- cmp r1, #0x50
- bne _080380B0
- ldrb r0, [r4, #0x15]
- adds r0, #0x10
- movs r1, #0x1f
- ands r0, r1
- strb r0, [r4, #0x15]
-_080380B0:
- ldrb r0, [r4, #0xe]
- subs r0, #1
- strb r0, [r4, #0xe]
- lsls r0, r0, #0x18
- cmp r0, #0
- bne _080380C8
- adds r0, r5, #0
- adds r0, #0x10
- strb r0, [r4, #0xe]
- adds r0, r4, #0
- bl sub_08038168
-_080380C8:
- ldrb r0, [r4, #0xd]
- cmp r0, #0
- bne _080380E2
- movs r1, #0x36
- ldrsh r0, [r4, r1]
- cmp r6, r0
- bge _080380E2
- adds r0, r4, #0
- movs r1, #4
- bl InitializeAnimation
- movs r0, #1
- strb r0, [r4, #0xd]
-_080380E2:
- movs r0, #0xc
- rsbs r0, r0, #0
- cmp r6, r0
- bge _080380F6
- ldrb r2, [r4, #0x19]
- movs r1, #0x3f
- adds r0, r1, #0
- ands r0, r2
- movs r2, #0x40
- b _08038100
-_080380F6:
- ldrb r2, [r4, #0x19]
- movs r1, #0x3f
- adds r0, r1, #0
- ands r0, r2
- movs r2, #0x80
-_08038100:
- orrs r0, r2
- strb r0, [r4, #0x19]
- ldrb r0, [r4, #0x1b]
- ands r1, r0
- orrs r1, r2
- strb r1, [r4, #0x1b]
-_0803810C:
- pop {r4, r5, r6, pc}
- .align 2, 0
-
- thumb_func_start sub_08038110
-sub_08038110: @ 0x08038110
- push {r4, lr}
- adds r4, r0, #0
- movs r1, #2
- bl UpdateAnimationVariableFrames
- adds r0, r4, #0
- adds r0, #0x5a
- ldrb r1, [r0]
- movs r0, #0x80
- ands r0, r1
- cmp r0, #0
- beq _08038164
- adds r2, r4, #0
- adds r2, #0x80
- ldrb r0, [r2]
- cmp r0, #4
- bhi _08038150
- movs r0, #2
- strb r0, [r4, #0xc]
- movs r0, #8
- strb r0, [r4, #0xe]
- movs r0, #0xe0
- lsls r0, r0, #0xa
- str r0, [r4, #0x20]
- adds r0, r4, #0
- bl sub_08038168
- adds r0, r4, #0
- movs r1, #2
- bl InitializeAnimation
- b _08038164
-_08038150:
- movs r0, #0
- movs r1, #1
- strb r1, [r4, #0xc]
- strb r0, [r2]
- movs r0, #0xc0
- strb r0, [r4, #0xe]
- adds r0, r4, #0
- movs r1, #0
- bl InitializeAnimation
-_08038164:
- pop {r4, pc}
- .align 2, 0
-
- thumb_func_start sub_08038168
-sub_08038168: @ 0x08038168
- push {r4, lr}
- adds r4, r0, #0
- bl sub_08049FA0
- cmp r0, #0
- bne _0803817E
- adds r0, r4, #0
- bl sub_08049EE4
- strb r0, [r4, #0x15]
- b _080381AA
-_0803817E:
- adds r0, r4, #0
- movs r1, #1
- bl sub_08049FDC
- cmp r0, #0
- beq _08038196
- adds r0, r4, #0
- movs r1, #1
- bl sub_08049F84
- strb r0, [r4, #0x15]
- b _080381AA
-_08038196:
- bl Random
- movs r1, #0xf
- ands r1, r0
- adds r1, #0x18
- ldrb r0, [r4, #0x15]
- adds r1, r1, r0
- movs r0, #0x1f
- ands r1, r0
- strb r1, [r4, #0x15]
-_080381AA:
- pop {r4, pc}
diff --git a/include/functions.h b/include/functions.h
index 45837388..5739c880 100644
--- a/include/functions.h
+++ b/include/functions.h
@@ -251,4 +251,8 @@ extern u32 sub_08079F8C(void);
extern void sub_080787CC(Entity*);
extern void sub_080526F8(s32);
extern int sub_0807CF28(u32, SaveFile*);
+extern u32 sub_080044EC(Entity*, u32);
+extern u32 sub_080002B8(Entity*);
+extern u32 sub_08049F84(Entity*, u32);
+
#endif \ No newline at end of file
diff --git a/linker.ld b/linker.ld
index fda209e8..e9a89f97 100644
--- a/linker.ld
+++ b/linker.ld
@@ -391,7 +391,6 @@ SECTIONS {
asm/gibdo.o(.text);
asm/octorokGolden.o(.text);
src/enemy/tektiteGolden.o(.text);
- asm/tektiteGolden.o(.text);
asm/ropeGolden.o(.text);
asm/cloudPiranha.o(.text);
asm/scissorsBeetle.o(.text);
diff --git a/src/enemy/tektiteGolden.c b/src/enemy/tektiteGolden.c
index 90483b71..221732eb 100644
--- a/src/enemy/tektiteGolden.c
+++ b/src/enemy/tektiteGolden.c
@@ -9,100 +9,160 @@ extern void sub_08038168(Entity*);
extern void (*const gUnk_080CF4A0)(Entity*);
extern void (*const gUnk_080CF4B8[])(Entity*);
-void TektiteGolden(Entity *this)
-{
- EnemyFunctionHandler(this, &gUnk_080CF4A0);
- SetChildOffset(this, 0, 1, -0x10);
+void TektiteGolden(Entity* this) {
+ EnemyFunctionHandler(this, &gUnk_080CF4A0);
+ SetChildOffset(this, 0, 1, -0x10);
}
-void sub_08037EE8(Entity* this)
-{
- gUnk_080CF4B8[this->action](this);
+void sub_08037EE8(Entity* this) {
+ gUnk_080CF4B8[this->action](this);
}
-void sub_08037F00(Entity *this)
-{
- u32 uVar1;
-
- if (this->field_0x43 != 0) {
- sub_0804A9FC(this,0x1c);
- }
- sub_0804AA30(this, &gUnk_080CF4A0);
- if (this->bitfield == 0x94) {
- this->action = 1;
- this->previousActionFlag = 0;
- this->actionDelay = 0x14;
- this->field_0xf = 0;
- this->field_0x80.HALF.LO = 0;
- uVar1 = this->height.HALF.HI;
- if (uVar1 != 0) {
- this->field_0x20 >>= 2;
+void sub_08037F00(Entity* this) {
+ u32 uVar1;
+
+ if (this->field_0x43 != 0) {
+ sub_0804A9FC(this, 0x1c);
}
- else {
- this->field_0x20 = uVar1;
+ sub_0804AA30(this, &gUnk_080CF4A0);
+ if (this->bitfield == 0x94) {
+ this->action = 1;
+ this->previousActionFlag = 0;
+ this->actionDelay = 0x14;
+ this->field_0xf = 0;
+ this->field_0x80.HALF.LO = 0;
+ uVar1 = this->height.HALF.HI;
+ if (uVar1 != 0) {
+ this->field_0x20 >>= 2;
+ } else {
+ this->field_0x20 = uVar1;
+ }
+
+ InitializeAnimation(this, 0);
}
+}
- InitializeAnimation(this,0);
- }
+void sub_08037F58(Entity* this) {
+ u32 uVar1;
+
+ if ((this->field_0x3a & 2) == 0) {
+ SetGlobalFlag(this->entityType.parameter);
+ }
+ if ((this->entityType).form != 0) {
+ uVar1 = 0x59;
+ } else {
+ uVar1 = 0x58;
+ }
+ CreateDeathFx(this, 0xff, uVar1);
}
-void sub_08037F58(Entity *this)
-{
- u32 uVar1;
-
- if ((this->field_0x3a & 2) == 0) {
- SetGlobalFlag(this->entityType.parameter);
- }
- if ((this->entityType).form != 0) {
- uVar1 = 0x59;
- }
- else {
- uVar1 = 0x58;
- }
- CreateDeathFx(this, 0xff, uVar1);
+void sub_08037F84(Entity* this) {
+ sub_08001242();
+ if (this->height.HALF.HI != 0) {
+ sub_08003FC4(this, 0x3000);
+ }
}
-void sub_08037F84(Entity *this)
-{
- sub_08001242();
- if (this->height.HALF.HI != 0) {
- sub_08003FC4(this, 0x3000);
- }
+void sub_08037FA0(Entity* this) {
+
+ if (CheckGlobalFlag(this->entityType.parameter)) {
+ DeleteThisEntity();
+ }
+ sub_0804A720(this);
+ this->action = 1;
+ this->previousActionFlag = 0;
+ this->actionDelay = (Random() & 0x1f) + 0x20;
+ this->field_0xf = 0;
+ this->field_0x80.HALF.LO = 0;
+ InitializeAnimation(this, 0);
}
-void sub_08037FA0(Entity *this)
-{
-
- if (CheckGlobalFlag(this->entityType.parameter)) {
- DeleteThisEntity();
- }
- sub_0804A720(this);
- this->action = 1;
- this->previousActionFlag = 0;
- this->actionDelay = (Random() & 0x1f) + 0x20;
- this->field_0xf = 0;
- this->field_0x80.HALF.LO = 0;
- InitializeAnimation(this,0);
+void sub_08037Fe0(Entity* this) {
+ UpdateAnimationVariableFrames(this, 2);
+ if (this->actionDelay != 0) {
+ this->actionDelay--;
+ } else if (this->field_0xf != 0) {
+ if ((this->frames.b.f3) != 0) {
+ this->action = 2;
+ this->actionDelay = 6;
+ this->field_0xf = 0;
+ this->field_0x20 = 0x38000;
+ sub_08038168(this);
+ InitializeAnimation(this, 2);
+ }
+ } else if ((this->frames.b.f3) != 0) {
+ this->field_0xf = 0x40;
+ InitializeAnimation(this, 1);
+ }
}
-void sub_08037Fe0(Entity *this)
-{
- UpdateAnimationVariableFrames(this, 2);
- if (this->actionDelay != 0) {
- this->actionDelay--;
- }
- else if (this->field_0xf != 0) {
- if ((this->frames.b.f3) != 0) {
- this->action = 2;
- this->actionDelay = 6;
- this->field_0xf = 0;
- this->field_0x20 = 0x38000;
+void sub_08038048(Entity* this) {
+ s32 temp;
+ u32 rand;
+
+ UpdateAnimationVariableFrames(this, 2);
+ sub_080AEF88(this);
+ temp = this->height.HALF.HI;
+ rand = Random() & 0xf;
+
+ if (sub_080044EC(this, 0x3000) == 1) {
+ this->action = 3;
+ this->previousActionFlag = 0;
+ this->actionDelay = 0x14;
+ InitializeAnimation(this, 3);
+ return;
+ } else if (this->collisions != 0) {
+ sub_0800417E(this, this->collisions);
+ } else if ((sub_080002B8(this) & 0xf0) == 0x50) {
+ this->direction = (this->direction + 0x10) & 0x1f;
+ }
+
+ if (--this->actionDelay == 0) {
+ this->actionDelay = rand + 0x10;
sub_08038168(this);
- InitializeAnimation(this, 2);
- }
}
- else if ((this->frames.b.f3) != 0) {
- this->field_0xf = 0x40;
- InitializeAnimation(this, 1);
+
+ if ((this->previousActionFlag == 0) && (temp < this->height.HALF.HI)) {
+ InitializeAnimation(this, 4);
+ this->previousActionFlag = 1;
+ }
+
+ if (temp < -0xc) {
+ this->spriteRendering.b3 = 1;
+ this->spriteOrientation.flipY = 1;
+ } else {
+ this->spriteRendering.b3 = 2;
+ this->spriteOrientation.flipY = 2;
+ }
+}
+
+void sub_08038110(Entity* this) {
+ UpdateAnimationVariableFrames(this, 2);
+ if ((this->frames.b.f3) != 0) {
+ if (this->field_0x80.HALF.LO < 5) {
+ this->action = 2;
+ this->actionDelay = 8;
+ this->field_0x20 = 0x38000;
+ sub_08038168(this);
+ InitializeAnimation(this, 2);
+ } else {
+ this->action = 1;
+ this->field_0x80.HALF.LO = 0;
+ this->actionDelay = 0xc0;
+ InitializeAnimation(this, 0);
+ }
+ }
+}
+
+void sub_08038168(Entity* this) {
+ u32 temp;
+
+ if (sub_08049FA0(this) == 0) {
+ this->direction = sub_08049EE4(this);
+ } else if (sub_08049FDC(this, 1) != 0) {
+ this->direction = sub_08049F84(this, 1);
+ } else {
+ temp = (Random() & 0xf) + 0x18;
+ this->direction = (temp + this->direction) & 0x1f;
}
} \ No newline at end of file