summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author21aslade <andrewmslade@gmail.com>2020-06-15 16:23:10 -0600
committer21aslade <andrewmslade@gmail.com>2020-06-15 16:23:10 -0600
commit06f2cd289d3b00b47d15d8f3c596024bd136a952 (patch)
tree38b369f54723f70d511d0b5da80ae614a61ede7e
parenta54ec31a5664728b6a5d65f713809d86ccaf7fbc (diff)
Two functions in townMinish.c OK
Also created npc.h and format.sh'd various files. A third function is outlined in townMinish.c, but currently non-matching.
-rw-r--r--asm/townMinish.s62
-rw-r--r--include/npc.h13
-rw-r--r--linker.ld1
-rw-r--r--src/enemy.c2
-rw-r--r--src/object1C.c2
-rw-r--r--src/object1D.c2
-rw-r--r--src/objectA8.c2
-rw-r--r--src/smallPesto.c2
-rw-r--r--src/townMinish.c84
9 files changed, 103 insertions, 67 deletions
diff --git a/asm/townMinish.s b/asm/townMinish.s
index 0375a822..ccd5f25a 100644
--- a/asm/townMinish.s
+++ b/asm/townMinish.s
@@ -6,68 +6,6 @@
.text
-
- thumb_func_start sub_0806ABC8
-sub_0806ABC8: @ 0x0806ABC8
- push {r4, lr}
- adds r4, r0, #0
- ldrb r1, [r4, #0x10]
- movs r0, #2
- ands r0, r1
- cmp r0, #0
- bne _0806ABF4
- ldr r0, _0806ABF0 @ =gUnk_081126E8
- ldrb r1, [r4, #0xc]
- lsls r1, r1, #2
- adds r1, r1, r0
- ldr r1, [r1]
- adds r0, r4, #0
- bl _call_via_r1
- adds r0, r4, #0
- bl sub_0806ED78
- b _0806ABFA
- .align 2, 0
-_0806ABF0: .4byte gUnk_081126E8
-_0806ABF4:
- adds r0, r4, #0
- bl sub_0806ACC4
-_0806ABFA:
- pop {r4, pc}
-
- thumb_func_start sub_0806ABFC
-sub_0806ABFC: @ 0x0806ABFC
- push {r4, lr}
- adds r4, r0, #0
- ldrb r1, [r4, #0xa]
- lsls r1, r1, #4
- ldr r0, _0806AC38 @ =gUnk_08112674
- adds r1, r1, r0
- adds r0, r4, #0
- bl sub_0806FDEC
- cmp r0, #0
- beq _0806AC36
- adds r0, r4, #0
- movs r1, #2
- bl InitializeAnimation
- movs r1, #0
- movs r0, #1
- strb r0, [r4, #0xc]
- ldrb r0, [r4, #0xe]
- adds r2, r4, #0
- adds r2, #0x6a
- strb r0, [r2]
- lsls r0, r0, #1
- strb r0, [r4, #0x14]
- ldrb r0, [r4, #0x14]
- lsls r0, r0, #2
- subs r2, #1
- strb r0, [r2]
- strb r1, [r4, #0xe]
-_0806AC36:
- pop {r4, pc}
- .align 2, 0
-_0806AC38: .4byte gUnk_08112674
-
thumb_func_start sub_0806AC3C
sub_0806AC3C: @ 0x0806AC3C
push {r4, r5, lr}
diff --git a/include/npc.h b/include/npc.h
new file mode 100644
index 00000000..0dbd696c
--- /dev/null
+++ b/include/npc.h
@@ -0,0 +1,13 @@
+#include "global.h"
+#include "entity.h"
+
+#ifndef NPC_H
+#define NPC_H
+
+typedef struct {
+ u16 palette;
+ u8 animIndex;
+ u8 unk;
+} SpriteLoadThing;
+
+#endif \ No newline at end of file
diff --git a/linker.ld b/linker.ld
index fbfed575..fc1a1e1e 100644
--- a/linker.ld
+++ b/linker.ld
@@ -519,6 +519,7 @@ SECTIONS {
asm/dog.o(.text);
asm/syrup.o(.text);
asm/rem.o(.text);
+ src/townMinish.o(.text);
asm/townMinish.o(.text);
asm/librari.o(.text);
asm/percy.o(.text);
diff --git a/src/enemy.c b/src/enemy.c
index a1179c95..e2f621ae 100644
--- a/src/enemy.c
+++ b/src/enemy.c
@@ -108,4 +108,4 @@ void (*const gEnemyFunctions[])(Entity* ent) = {
TreeItem,
Enemy66
};
-// clang-format on \ No newline at end of file
+// clang-format on
diff --git a/src/object1C.c b/src/object1C.c
index 333420b6..a72ec3b2 100644
--- a/src/object1C.c
+++ b/src/object1C.c
@@ -16,4 +16,4 @@ void Object1C(Entity *this)
this->parent->field_0x20 &= ~(1 << this->entityType.parameter2);
DeleteThisEntity();
}
-} \ No newline at end of file
+}
diff --git a/src/object1D.c b/src/object1D.c
index a31c355a..e7294703 100644
--- a/src/object1D.c
+++ b/src/object1D.c
@@ -15,4 +15,4 @@ void sub_080874F8(Entity* this)
DeleteThisEntity();
}
-void nullsub_117(){} \ No newline at end of file
+void nullsub_117(){}
diff --git a/src/objectA8.c b/src/objectA8.c
index b1fdc6a7..9cdcd5c0 100644
--- a/src/objectA8.c
+++ b/src/objectA8.c
@@ -33,4 +33,4 @@ void ObjectA8(Entity *this)
}
gUnk_08124824[this->action](this);
sub_08080CB4(this);
-} \ No newline at end of file
+}
diff --git a/src/smallPesto.c b/src/smallPesto.c
index 0fe534a2..1dde39d2 100644
--- a/src/smallPesto.c
+++ b/src/smallPesto.c
@@ -66,4 +66,4 @@ void sub_08031704(Entity *this)
{
sub_0804A720(this);
sub_080317F8(this);
-} \ No newline at end of file
+}
diff --git a/src/townMinish.c b/src/townMinish.c
new file mode 100644
index 00000000..14a87904
--- /dev/null
+++ b/src/townMinish.c
@@ -0,0 +1,84 @@
+#include "global.h"
+#include "entity.h"
+#include "npc.h"
+
+extern void InitializeAnimation(Entity *, u32);
+
+extern void sub_0806ED78(Entity *);
+
+extern void (*gUnk_081126E8[])();
+extern void sub_0806ACC4(Entity *);
+
+extern u32 sub_0806FDEC(Entity *, SpriteLoadThing *);
+extern SpriteLoadThing gUnk_08112674[];
+
+void sub_0806ABC8(Entity *this)
+{
+ if ((this->flags & 2) == 0) {
+ (*gUnk_081126E8[this->action])(this);
+ sub_0806ED78(this);
+ }
+ else {
+ sub_0806ACC4(this);
+ }
+}
+
+void sub_0806ABFC(Entity *this)
+{
+ u8 animationState;
+
+ SpriteLoadThing* spriteLoadThing = &gUnk_08112674[this->entityType.parameter1 << 2];
+ if (!sub_0806FDEC(this, spriteLoadThing))
+ {
+ return;
+ }
+
+ InitializeAnimation(this, 2);
+ this->action = 1;
+ this->field_0x6a.HALF.LO = this->parameter3;
+
+ this->animationState = this->field_0x6a.HALF.LO << 1;
+ animationState = this->animationState;
+ this->field_0x69 = animationState << 2;
+
+ this->parameter3 = 0;
+}
+
+// Not matching yet, not 100% sure it's functionally identical
+/*void sub_0806AC3C(Entity *this) {
+ if (this->field_0x58 <= 3) {
+ s32 unk;
+ u8 field_0x69;
+
+ Entity *link = &gLinkEntity;
+ if (sub_080041A0(this, link, 0x18, 0x18)) {
+ unk = sub_080045C4(this, link) & (u8)0x1e;
+ }
+ else {
+ unk = this->animationState << 2;
+ }
+
+ field_0x69 = this->field_0x69;
+
+ if (unk != field_0x69) {
+ s32 temp;
+
+ if (((unk - field_0x69) & 0x1f) <= 0xf) {
+ field_0x69--;
+ }
+ else {
+ field_0x69++;
+ }
+
+ temp = field_0x69;
+ this->field_0x69 = temp & 0x1f;
+ }
+
+ if (!(this->field_0x69 & 7)) {
+ this->animationState = sub_0806F5B0(this->field_0x69);
+ UpdateSprite(this, (this->animationState >> 1) ^ 2);
+ }
+ }
+
+ sub_080042B8(this);
+}*/