summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authortheo3 <arisstephenson2@gmail.com>2020-07-22 23:05:12 -0700
committertheo3 <arisstephenson2@gmail.com>2020-07-22 23:05:12 -0700
commit67da19b92c320c282ad9857da4bc41cd042b2b8f (patch)
treed6b8b48da1c9be590c429a5bae5cc64e2f1d1684 /src
parentcb24f8f9b14128f67335f8c4dfe65fa345039e3d (diff)
structures.h
Diffstat (limited to 'src')
-rw-r--r--src/object/palaceArchway.c21
-rw-r--r--src/room.c34
-rw-r--r--src/sub_08050024.c104
-rw-r--r--src/sub_080A3B84.c21
4 files changed, 136 insertions, 44 deletions
diff --git a/src/object/palaceArchway.c b/src/object/palaceArchway.c
new file mode 100644
index 00000000..1580c20b
--- /dev/null
+++ b/src/object/palaceArchway.c
@@ -0,0 +1,21 @@
+#include "global.h"
+#include "entity.h"
+#include "room.h"
+#include "functions.h"
+
+extern void (*const gUnk_081246EC[])(Entity*);
+
+void PalaceArchway(Entity* this) {
+ gUnk_081246EC[this->action](this);
+}
+
+void sub_0809F2A0(Entity *this)
+{
+ this->action = 1;
+ this->frameIndex = this->entityType.parameter;
+ this->spriteRendering.b3 = 3;
+ this->spritePriority.b0 = 7;
+ SetTile(0x4069, COORD_TO_TILE(this), this->collisionLayer);
+}
+
+void nullsub_537() {} \ No newline at end of file
diff --git a/src/room.c b/src/room.c
index f17aca03..0bef2ef3 100644
--- a/src/room.c
+++ b/src/room.c
@@ -7,39 +7,7 @@
#include "link.h"
#include "screen.h"
#include "main.h"
-
-typedef struct {
- u8 field_0x0[8];
- u8 field_0x8;
- u8 field_0x9;
- u8 field_0xa[6];
- union SplitWord field_0x10;
- u8 field_0x14[0xc];
- u16 field_0x20;
- u16 field_0x22;
- u8 field_0x24[0x14];
- u8 field_0x38;
- u8 field_0x39;
- u16 field_0x3a;
- u8 field_0x3c;
- u8 filler[6];
- u16 field_0x44;
- u16 field_0x46;
- u16 field_0x48;
- u16 field_0x4a;
-} struct_030010A0;
-
-typedef struct {
- u8 filler[8];
- u8 field_0x8;
- u8 field_0x9[0x34];
- u32 windcrests;
- u8 field_0x44[0x64];
- Stats stats;
-} struct_02002A40;
-
-extern struct_030010A0 gUnk_030010A0;
-extern struct_02002A40 gUnk_02002A40;
+#include "structures.h"
void sub_0804B3C4(u32 arg0) {
sub_0804B29C(arg0);
diff --git a/src/sub_08050024.c b/src/sub_08050024.c
index 23f50e01..59601810 100644
--- a/src/sub_08050024.c
+++ b/src/sub_08050024.c
@@ -1,4 +1,35 @@
#include "global.h"
+#include "functions.h"
+#include "screen.h"
+
+typedef struct {
+ u8 field_0x0;
+ u8 field_0x1;
+ u8 field_0x2;
+ u8 field_0x3;
+ u32 field_0x4;
+ u16 fadeType; // fade in or out, are there others?
+ u16 fadeSpeed; // subtracted from duration
+ u16 fadeDuration;
+ u16 field_0xe;
+ s16 field_0x10;
+ s16 field_0x12;
+ s16 field_0x14;
+ u16 field_0x16;
+ u16 field_0x18;
+} struct_03000FD0;
+
+extern struct_03000FD0 gUnk_03000FD0;
+
+typedef struct {
+ u8 field_0x0;
+ u8 field_0x1;
+ u8 spritesOffset;
+} struct_03000000;
+
+extern struct_03000000 gUnk_03000000;
+
+extern u32 gUnk_0200B644;
extern void sub_0801E104();
extern void DoFade(u32, u32);
@@ -9,14 +40,65 @@ void sub_08050024() {
return;
}
-/* thumb_func_start sub_08050024
-sub_08050024: @ 0x08050024
- push {lr}
- bl sub_0801E104
- movs r1, #0x80
- lsls r1, r1, #1
- movs r0, #5
- bl DoFade
- pop {pc}
- .align 2, 0
- */
+void sub_08050038(u32 arg0)
+{
+ if ((gUnk_03000FD0.fadeType & 1) != 0) {
+ gUnk_03000FD0.field_0xe = arg0;
+ }
+ else {
+ gUnk_03000FD0.fadeDuration = arg0;
+ }
+}
+
+void DoFade(u32 fadeType, u32 fadeSpeed)
+{
+ gUnk_03000FD0.fadeSpeed = fadeSpeed;
+ gUnk_03000FD0.fadeType = fadeType;
+ gUnk_03000FD0.field_0x0 = 1;
+ gUnk_03000FD0.fadeDuration = 0x100;
+ gUnk_03000FD0.field_0xe = 0;
+ if ((gUnk_03000FD0.fadeType & 2) != 0) {
+ gUnk_03000FD0.field_0x2 = 0xf8;
+ }
+ else {
+ gUnk_03000FD0.field_0x2 = 0;
+ }
+ if ((fadeType & 8) != 0) {
+ gUnk_03000000.spritesOffset = 1;
+ gScreen.bg1.unk |= 0x40;
+ gScreen.bg2.unk |= 0x40;
+ gScreen.affine.unk2 |= 0x40;
+ }
+ if ((fadeType & 0x10) != 0) {
+ sub_0801E1B8(gUnk_03000FD0.field_0x16, gUnk_03000FD0.field_0x18);
+ sub_0801E1EC(gUnk_03000FD0.field_0x12, gUnk_03000FD0.field_0x14, gUnk_03000FD0.field_0x10);
+ if ((fadeType & 1) == 0) {
+ gUnk_03000FD0.fadeType &= 0xfffb;
+ sub_08050008();
+ gUnk_0200B644 = 0xffffffff;
+ }
+ }
+}
+
+void sub_080500F4(u32 arg0)
+{
+ gUnk_03000FD0.fadeSpeed = arg0;
+ gUnk_03000FD0.fadeType ^= 1;
+ gUnk_03000FD0.field_0x0 = 1;
+ gUnk_03000FD0.fadeDuration = 0x100;
+}
+
+void sub_08050110(u32 param_1, u32 param_2, u32 fadeType, u32 fadeSpeed)
+{
+ if ((fadeType & 1) != 0) {
+ gUnk_03000FD0.field_0x10 = 0x96;
+ }
+ else {
+ gUnk_03000FD0.field_0x10 = 0;
+ }
+ gUnk_03000FD0.field_0x12 = param_1;
+ gUnk_03000FD0.field_0x14 = param_2;
+ gUnk_03000FD0.field_0x16 = 0x3f3f;
+ gUnk_03000FD0.field_0x18 = 0;
+ DoFade(fadeType, fadeSpeed);
+} \ No newline at end of file
diff --git a/src/sub_080A3B84.c b/src/sub_080A3B84.c
new file mode 100644
index 00000000..1a605c2a
--- /dev/null
+++ b/src/sub_080A3B84.c
@@ -0,0 +1,21 @@
+#include "global.h"
+#include "functions.h"
+#include "menu.h"
+#include "structures.h"
+
+extern void (*const gUnk_081280C4[])();
+
+void DrawKinstoneMenu(void)
+{
+ gUnk_030010A0.field_0x24[8] = 2;
+ sub_080AD90C();
+ gUnk_081280C4[gMenu.menuType]();
+ sub_080A3B74();
+ sub_080A4054();
+ sub_0801C1D4();
+ sub_0801C208();
+ sub_0805E5C0();
+ sub_080AD9B0();
+ sub_080AD918();
+ gUnk_030010A0.field_0x24[8] = 0;
+} \ No newline at end of file