structures.h

This commit is contained in:
theo3 2020-07-22 23:05:12 -07:00
parent cb24f8f9b1
commit 67da19b92c
10 changed files with 188 additions and 303 deletions

View File

@ -5,157 +5,6 @@
.text
thumb_func_start sub_08050038
sub_08050038: @ 0x08050038
push {lr}
adds r3, r0, #0
ldr r2, _0805004C @ =gUnk_03000FD0
ldrh r1, [r2, #8]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08050050
strh r3, [r2, #0xe]
b _08050052
.align 2, 0
_0805004C: .4byte gUnk_03000FD0
_08050050:
strh r3, [r2, #0xc]
_08050052:
pop {pc}
thumb_func_start DoFade
DoFade: @ 0x08050054
push {r4, r5, lr}
adds r5, r0, #0
ldr r2, _08050078 @ =gUnk_03000FD0
movs r3, #0
strh r1, [r2, #0xa]
strh r5, [r2, #8]
movs r0, #1
strb r0, [r2]
adds r0, #0xff
strh r0, [r2, #0xc]
strh r3, [r2, #0xe]
movs r0, #2
ands r0, r5
adds r4, r2, #0
cmp r0, #0
beq _0805007C
movs r0, #0xf8
b _0805007E
.align 2, 0
_08050078: .4byte gUnk_03000FD0
_0805007C:
movs r0, #0
_0805007E:
strb r0, [r4, #2]
movs r0, #8
ands r0, r5
cmp r0, #0
beq _080500A4
ldr r1, _080500E4 @ =gUnk_03000000
movs r0, #1
strb r0, [r1, #2]
ldr r2, _080500E8 @ =gScreen
ldrh r0, [r2, #0x14]
movs r1, #0x40
orrs r0, r1
strh r0, [r2, #0x14]
ldrh r0, [r2, #0x20]
orrs r0, r1
strh r0, [r2, #0x20]
ldrh r0, [r2, #0x2c]
orrs r1, r0
strh r1, [r2, #0x2c]
_080500A4:
movs r0, #0x10
ands r0, r5
cmp r0, #0
beq _080500E0
ldrh r0, [r4, #0x16]
ldrh r1, [r4, #0x18]
bl sub_0801E1B8
movs r1, #0x12
ldrsh r0, [r4, r1]
movs r2, #0x14
ldrsh r1, [r4, r2]
movs r3, #0x10
ldrsh r2, [r4, r3]
bl sub_0801E1EC
movs r0, #1
ands r0, r5
cmp r0, #0
bne _080500E0
ldrh r1, [r4, #8]
ldr r0, _080500EC @ =0x0000FFFB
ands r0, r1
strh r0, [r4, #8]
bl sub_08050008
ldr r1, _080500F0 @ =gUnk_0200B644
movs r0, #1
rsbs r0, r0, #0
str r0, [r1]
_080500E0:
pop {r4, r5, pc}
.align 2, 0
_080500E4: .4byte gUnk_03000000
_080500E8: .4byte gScreen
_080500EC: .4byte 0x0000FFFB
_080500F0: .4byte gUnk_0200B644
thumb_func_start sub_080500F4
sub_080500F4: @ 0x080500F4
ldr r1, _0805010C @ =gUnk_03000FD0
strh r0, [r1, #0xa]
ldrh r0, [r1, #8]
movs r2, #1
eors r0, r2
strh r0, [r1, #8]
strb r2, [r1]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r1, #0xc]
bx lr
.align 2, 0
_0805010C: .4byte gUnk_03000FD0
thumb_func_start sub_08050110
sub_08050110: @ 0x08050110
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r6, r1, #0
adds r4, r2, #0
movs r1, #1
ands r1, r4
cmp r1, #0
beq _08050130
ldr r1, _0805012C @ =gUnk_03000FD0
movs r0, #0x96
strh r0, [r1, #0x10]
adds r2, r1, #0
b _08050136
.align 2, 0
_0805012C: .4byte gUnk_03000FD0
_08050130:
ldr r0, _0805014C @ =gUnk_03000FD0
strh r1, [r0, #0x10]
adds r2, r0, #0
_08050136:
movs r1, #0
strh r5, [r2, #0x12]
strh r6, [r2, #0x14]
ldr r0, _08050150 @ =0x00003F3F
strh r0, [r2, #0x16]
strh r1, [r2, #0x18]
adds r0, r4, #0
adds r1, r3, #0
bl DoFade
pop {r4, r5, r6, pc}
.align 2, 0
_0805014C: .4byte gUnk_03000FD0
_08050150: .4byte 0x00003F3F
thumb_func_start sub_08050154
sub_08050154: @ 0x08050154
push {r4, r5, r6, lr}

View File

@ -1,37 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start sub_080A3B84
sub_080A3B84: @ 0x080A3B84
push {r4, r5, lr}
ldr r4, _080A3BC4 @ =gUnk_030010A0
adds r4, #0x2c
movs r5, #0
movs r0, #2
strb r0, [r4]
bl sub_080AD90C
ldr r1, _080A3BC8 @ =gUnk_081280C4
ldr r0, _080A3BCC @ =gMenu
ldrb r0, [r0, #5]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
bl _call_via_r0
bl sub_080A3B74
bl sub_080A4054
bl sub_0801C1D4
bl sub_0801C208
bl sub_0805E5C0
bl sub_080AD9B0
bl sub_080AD918
strb r5, [r4]
pop {r4, r5, pc}
.align 2, 0
_080A3BC4: .4byte gUnk_030010A0
_080A3BC8: .4byte gUnk_081280C4
_080A3BCC: .4byte gMenu

View File

@ -1,69 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PalaceArchway
PalaceArchway: @ 0x0809F288
push {lr}
ldr r2, _0809F29C @ =gUnk_081246EC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809F29C: .4byte gUnk_081246EC
thumb_func_start sub_0809F2A0
sub_0809F2A0: @ 0x0809F2A0
push {r4, r5, r6, lr}
movs r1, #1
strb r1, [r0, #0xc]
ldrb r1, [r0, #0xb]
strb r1, [r0, #0x1e]
ldrb r1, [r0, #0x19]
movs r2, #0xc0
orrs r1, r2
strb r1, [r0, #0x19]
adds r3, r0, #0
adds r3, #0x29
ldrb r1, [r3]
movs r2, #7
orrs r1, r2
strb r1, [r3]
ldr r5, _0809F2EC @ =0x00004069
movs r2, #0x2e
ldrsh r1, [r0, r2]
ldr r3, _0809F2F0 @ =gRoomControls
ldrh r2, [r3, #6]
subs r1, r1, r2
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r6, #0x32
ldrsh r2, [r0, r6]
ldrh r3, [r3, #8]
subs r2, r2, r3
asrs r2, r2, #4
ands r2, r4
lsls r2, r2, #6
orrs r1, r2
adds r0, #0x38
ldrb r2, [r0]
adds r0, r5, #0
bl SetTile
pop {r4, r5, r6, pc}
.align 2, 0
_0809F2EC: .4byte 0x00004069
_0809F2F0: .4byte gRoomControls
thumb_func_start nullsub_537
nullsub_537: @ 0x0809F2F4
bx lr
.align 2, 0

View File

@ -169,4 +169,11 @@ extern void sub_080AD76C();
extern void sub_080AD644();
extern void sub_080ADA14(u32, u32);
extern void sub_080AD89C();
extern void sub_0801E1B8(u32, u32);
extern void sub_0801E1EC(s32, s32, s32);
extern void sub_08050008(void);
extern void sub_080A3B74(void);
extern void sub_080A4054(void);
extern void sub_0801C1D4(void);
extern void sub_0801C208(void);
#endif

43
include/structures.h Normal file
View File

@ -0,0 +1,43 @@
#ifndef STRUCTURES_H
#define STRUCTURES_H
#include "global.h"
#include "entity.h"
#include "link.h"
typedef struct {
u8 filler[8];
u8 field_0x8;
u8 field_0x9[0x34];
u32 windcrests;
u8 field_0x44[0x64];
Stats stats;
} struct_02002A40;
extern struct_02002A40 gUnk_02002A40;
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;
extern struct_030010A0 gUnk_030010A0;
#endif

View File

@ -832,7 +832,7 @@ SECTIONS {
src/object/fan.o(.text);
asm/fan.o(.text);
asm/objectA0.o(.text);
asm/palaceArchway.o(.text);
src/object/palaceArchway.o(.text);
asm/objectA2.o(.text);
src/object/cloud.o(.text);
asm/minishLight.o(.text);
@ -878,7 +878,7 @@ SECTIONS {
asm/code_080A29BC.o(.text);
asm/playSFX.o(.text);
asm/code_080A3480.o(.text);
asm/drawKinstoneMenu.o(.text);
src/sub_080A3B84.o(.text);
asm/code_080A3BD0.o(.text);
src/sub_080A554C.o(.text);
asm/code_080A5574.o(.text);

View File

@ -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() {}

View 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);

View File

@ -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);
}

21
src/sub_080A3B84.c Normal file
View File

@ -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;
}