diff options
| author | theo3 <arisstephenson2@gmail.com> | 2020-07-22 23:05:12 -0700 |
|---|---|---|
| committer | theo3 <arisstephenson2@gmail.com> | 2020-07-22 23:05:12 -0700 |
| commit | 67da19b92c320c282ad9857da4bc41cd042b2b8f (patch) | |
| tree | d6b8b48da1c9be590c429a5bae5cc64e2f1d1684 /src | |
| parent | cb24f8f9b14128f67335f8c4dfe65fa345039e3d (diff) | |
structures.h
Diffstat (limited to 'src')
| -rw-r--r-- | src/object/palaceArchway.c | 21 | ||||
| -rw-r--r-- | src/room.c | 34 | ||||
| -rw-r--r-- | src/sub_08050024.c | 104 | ||||
| -rw-r--r-- | src/sub_080A3B84.c | 21 |
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 @@ -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 |
