mirror of
https://github.com/zeldaret/tmc
synced 2026-09-07 03:19:39 -04:00
room entity funcs partially decomped
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
#include "global.h"
|
||||
#include "room.h"
|
||||
|
||||
extern void sub_0805E5A8();
|
||||
|
||||
extern RoomControls gRoomControls;
|
||||
extern u32 gUnk_0200B650;
|
||||
extern u32 gUnk_02025EB0;
|
||||
extern u8 gUnk_030010A0[10];
|
||||
|
||||
extern void DoExitTransition(Entity*);
|
||||
extern void sub_080809D4();
|
||||
|
||||
void sub_0808091C(Entity* param_1, u32 param_2)
|
||||
|
||||
{
|
||||
DoExitTransition(param_1);
|
||||
gUnk_030010A0[9] = param_2;
|
||||
return;
|
||||
}
|
||||
|
||||
void sub_08080930(void)
|
||||
|
||||
{
|
||||
gRoomControls.unk3 = 5;
|
||||
gRoomControls.unk4 = 0;
|
||||
gRoomControls.unk2 = 2;
|
||||
gRoomControls.filler[0] = 0;
|
||||
sub_0805E5A8();
|
||||
return;
|
||||
}
|
||||
|
||||
u32* GetLayerByIndex(u32 param_1)
|
||||
|
||||
{
|
||||
|
||||
if (param_1 == 2) {
|
||||
return &gUnk_0200B650;
|
||||
} else {
|
||||
return &gUnk_02025EB0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08080964(u16 time, u32 magnitude)
|
||||
|
||||
{
|
||||
gRoomControls.screenShakeTime = time;
|
||||
gRoomControls.screenShakeMagnitude = magnitude & 7;
|
||||
return;
|
||||
}
|
||||
+458
-34
@@ -1,50 +1,474 @@
|
||||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "area.h"
|
||||
#include "room.h"
|
||||
#include "functions.h"
|
||||
#include "flags.h"
|
||||
#include "link.h"
|
||||
|
||||
extern void sub_0805E5A8();
|
||||
typedef struct {
|
||||
u8 field_0x0[8];
|
||||
u8 field_0x8;
|
||||
u8 field_0x9;
|
||||
u8 field_0xa[8];
|
||||
u16 field_0x12;
|
||||
} struct_030010A0;
|
||||
|
||||
extern RoomControls gRoomControls;
|
||||
extern u32 gUnk_0200B650;
|
||||
extern u32 gUnk_02025EB0;
|
||||
extern u8 gUnk_030010A0[10];
|
||||
typedef struct {
|
||||
u8 filler[8];
|
||||
u8 field_0x8;
|
||||
} struct_02002A40;
|
||||
|
||||
extern void DoExitTransition(Entity*);
|
||||
extern void sub_080809D4();
|
||||
extern struct_030010A0 gUnk_030010A0;
|
||||
extern struct_02002A40 gUnk_02002A40;
|
||||
|
||||
void sub_0808091C(Entity* param_1, u32 param_2)
|
||||
|
||||
{
|
||||
DoExitTransition(param_1);
|
||||
gUnk_030010A0[9] = param_2;
|
||||
return;
|
||||
void sub_0804B3C4(u32 arg0) {
|
||||
sub_0804B29C(arg0);
|
||||
}
|
||||
|
||||
void sub_08080930(void)
|
||||
|
||||
{
|
||||
gRoomControls.unk3 = 5;
|
||||
gRoomControls.unk4 = 0;
|
||||
gRoomControls.unk2 = 2;
|
||||
gRoomControls.filler[0] = 0;
|
||||
sub_0805E5A8();
|
||||
return;
|
||||
u32 sub_0804B3CC(u32 arg0) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
u32* GetLayerByIndex(u32 param_1)
|
||||
void sub_0804B3D0() {
|
||||
sub_08030118(0);
|
||||
}
|
||||
|
||||
{
|
||||
u32 sub_0804B3DC() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (param_1 == 2) {
|
||||
return &gUnk_0200B650;
|
||||
} else {
|
||||
return &gUnk_02025EB0;
|
||||
void sub_0804B3E0() {
|
||||
sub_08030118(1);
|
||||
}
|
||||
|
||||
u32 sub_0804B3EC() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B3F0() {
|
||||
sub_08030118(2);
|
||||
}
|
||||
|
||||
u32 sub_0804B3FC() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B400() {
|
||||
sub_08030118(3);
|
||||
}
|
||||
|
||||
u32 sub_0804B40C() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B410() {
|
||||
sub_08030118(4);
|
||||
}
|
||||
|
||||
u32 sub_0804B41C() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B420() {
|
||||
sub_08030118(5);
|
||||
}
|
||||
|
||||
u32 sub_0804B42C() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B430() {
|
||||
sub_08030118(6);
|
||||
}
|
||||
|
||||
u32 sub_0804B43C() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B440() {
|
||||
sub_08030118(7);
|
||||
}
|
||||
|
||||
u32 sub_0804B44C() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B450() {
|
||||
sub_08030118(8);
|
||||
}
|
||||
|
||||
u32 sub_0804B45C() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B460() {
|
||||
Area* a;
|
||||
|
||||
sub_08030118(9);
|
||||
a = &gArea;
|
||||
*((u8*)&a->localFlagOffset - 1) = 3;
|
||||
a->areaMetadata = 0x4e;
|
||||
}
|
||||
|
||||
u32 sub_0804B478() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B47C() {
|
||||
Area* a;
|
||||
|
||||
sub_08030118(10);
|
||||
a = &gArea;
|
||||
*((u8*)&a->localFlagOffset - 1) = 3;
|
||||
a->areaMetadata = 0x4e;
|
||||
}
|
||||
|
||||
u32 sub_0804B494() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B498() {
|
||||
sub_080575C8(35);
|
||||
sub_08057688();
|
||||
}
|
||||
|
||||
u32 sub_0804B4A8() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B4AC() {
|
||||
sub_080575C8(35);
|
||||
}
|
||||
|
||||
void sub_0804B4B8() {
|
||||
sub_080575C8(35);
|
||||
}
|
||||
|
||||
u32 sub_0804B4C4() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B4C8() {
|
||||
sub_080580B0(34);
|
||||
}
|
||||
|
||||
void sub_0804B4D4() {
|
||||
sub_080580B0(34);
|
||||
}
|
||||
|
||||
u32 sub_0804B4E0() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B4E4(void) {
|
||||
sub_080580B0(0x22);
|
||||
// white sword
|
||||
if (GetInventoryValue(0x2))
|
||||
SetGlobalFlag(0x56);
|
||||
}
|
||||
|
||||
void sub_0804B500() {
|
||||
sub_080580B0(34);
|
||||
}
|
||||
|
||||
u32 sub_0804B50C() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B510() {
|
||||
sub_080575C8(30);
|
||||
}
|
||||
|
||||
void sub_0804B51C() {
|
||||
sub_080575C8(30);
|
||||
}
|
||||
|
||||
u32 sub_0804B528() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B52C() {
|
||||
sub_080575C8(33);
|
||||
}
|
||||
|
||||
void sub_0804B538() {
|
||||
sub_080575C8(33);
|
||||
}
|
||||
|
||||
u32 sub_0804B544() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B548() {
|
||||
sub_080575C8(31);
|
||||
}
|
||||
|
||||
void sub_0804B554() {
|
||||
sub_080575C8(31);
|
||||
}
|
||||
|
||||
u32 sub_0804B560() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B564() {
|
||||
sub_080575C8(32);
|
||||
}
|
||||
|
||||
void sub_0804B570() {
|
||||
sub_080575C8(32);
|
||||
}
|
||||
|
||||
u32 sub_0804B57C() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern EntityData* gUnk_080D6138;
|
||||
|
||||
void sub_0804B580(void) {
|
||||
sub_080575C8(0x20);
|
||||
if (gLinkEntity.y.HALF.HI - gRoomControls.roomOriginY > 0x40) {
|
||||
LoadRoomEntityList(&gUnk_080D6138);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08080964(u16 time, u32 magnitude)
|
||||
|
||||
{
|
||||
gRoomControls.screenShakeTime = time;
|
||||
gRoomControls.screenShakeMagnitude = magnitude & 7;
|
||||
return;
|
||||
void sub_0804B5AC() {
|
||||
sub_080575C8(32);
|
||||
}
|
||||
|
||||
u32 sub_0804B5B8() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern EntityData* gUnk_080D6210;
|
||||
|
||||
void sub_0804B5BC(void) {
|
||||
if (gUnk_030010A0.field_0x12 > 0x40) {
|
||||
LoadRoomEntityList(&gUnk_080D6210);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_0804B5D8() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern EntityData* gUnk_080D6340;
|
||||
extern EntityData* gUnk_080D6360;
|
||||
extern EntityData* gUnk_080D6380;
|
||||
extern EntityData* gUnk_080D63A0;
|
||||
extern EntityData* gUnk_080D63C0;
|
||||
extern EntityData* gUnk_080D63E0;
|
||||
extern EntityData* gUnk_080D6400;
|
||||
extern EntityData* gUnk_080D6420;
|
||||
extern EntityData* gUnk_080D6440;
|
||||
|
||||
extern u16 gUnk_080D64F8;
|
||||
extern u16 gUnk_080D6508;
|
||||
|
||||
void sub_0804B5DC(void) {
|
||||
u16 itemID;
|
||||
s32 i;
|
||||
u16* itemArr;
|
||||
u16* flagArr;
|
||||
s32 j;
|
||||
|
||||
if (CheckKinstoneFused(0x2c)) {
|
||||
LoadRoomEntityList(&gUnk_080D6340);
|
||||
}
|
||||
j = 0;
|
||||
itemArr = &gUnk_080D64F8;
|
||||
for (i = 7; i >= 0; i--) {
|
||||
itemID = *itemArr;
|
||||
itemArr++;
|
||||
if (GetInventoryValue(itemID)) {
|
||||
j++;
|
||||
}
|
||||
}
|
||||
if (CheckLocalFlag(0x8b)) {
|
||||
flagArr = &gUnk_080D6508;
|
||||
i = 0;
|
||||
while (i < j) {
|
||||
if (CheckLocalFlag(*flagArr) == 0) {
|
||||
SetLocalFlag(*flagArr);
|
||||
ClearLocalFlag(0x8b);
|
||||
SetLocalFlag(0x8c);
|
||||
break;
|
||||
}
|
||||
i++;
|
||||
flagArr++;
|
||||
}
|
||||
}
|
||||
if (CheckLocalFlag(0x1f)) {
|
||||
LoadRoomEntityList(&gUnk_080D6360);
|
||||
}
|
||||
if (CheckLocalFlag(0x20)) {
|
||||
LoadRoomEntityList(&gUnk_080D6380);
|
||||
}
|
||||
if (CheckLocalFlag(0x21)) {
|
||||
LoadRoomEntityList(&gUnk_080D63A0);
|
||||
}
|
||||
if (CheckLocalFlag(0x22)) {
|
||||
LoadRoomEntityList(&gUnk_080D63C0);
|
||||
}
|
||||
if (CheckLocalFlag(0x23)) {
|
||||
LoadRoomEntityList(&gUnk_080D63E0);
|
||||
}
|
||||
if (CheckLocalFlag(0x24)) {
|
||||
LoadRoomEntityList(&gUnk_080D6400);
|
||||
}
|
||||
if (CheckLocalFlag(0x25)) {
|
||||
LoadRoomEntityList(&gUnk_080D6420);
|
||||
}
|
||||
if (CheckLocalFlag(0x26)) {
|
||||
LoadRoomEntityList(&gUnk_080D6440);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_0804B6EC() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern EntityData* gUnk_080D6578;
|
||||
extern EntityData* gUnk_080D6638;
|
||||
extern EntityData* gUnk_080D6558;
|
||||
extern EntityData* gUnk_080D6618;
|
||||
|
||||
void sub_0804B6F0(void) {
|
||||
// flippers
|
||||
if (GetInventoryValue(0x46) == 0) {
|
||||
LoadRoomEntityList(&gUnk_080D6578);
|
||||
if (CheckLocalFlag(0x73) == 0) {
|
||||
LoadRoomEntityList(&gUnk_080D6638);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
LoadRoomEntityList(&gUnk_080D6558);
|
||||
}
|
||||
LoadRoomEntityList(&gUnk_080D6618);
|
||||
}
|
||||
|
||||
u32 sub_0804B734() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern EntityData* gUnk_080D6714;
|
||||
extern EntityData* gUnk_080D6734;
|
||||
extern EntityData* gUnk_080D66F4;
|
||||
|
||||
void sub_0804B738(void) {
|
||||
if (gUnk_02002A40.field_0x8 > 4) {
|
||||
LoadRoomEntityList(&gUnk_080D6714);
|
||||
}
|
||||
// flippers
|
||||
if (!GetInventoryValue(0x46) && CheckGlobalFlag(0x29) && CheckLocalFlag(0x6a)) {
|
||||
LoadRoomEntityList(&gUnk_080D6734);
|
||||
} else {
|
||||
LoadRoomEntityList(&gUnk_080D66F4);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_0804B788() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern EntityData* gUnk_080D6924;
|
||||
|
||||
void sub_0804B78C(void) {
|
||||
if (gUnk_02002A40.field_0x8 > 7) {
|
||||
LoadRoomEntityList(&gUnk_080D6924);
|
||||
}
|
||||
}
|
||||
|
||||
extern u32 gUnk_080D6A74[];
|
||||
|
||||
u32 sub_0804B7A8(void) {
|
||||
u32 index;
|
||||
|
||||
if (CheckLocalFlag(0x91) != 0) {
|
||||
index = (s32)Random() % 3;
|
||||
ClearLocalFlag(1);
|
||||
} else {
|
||||
index = 0;
|
||||
SetLocalFlag(1);
|
||||
}
|
||||
gRoomVars.field_0x78 = gUnk_080D6A74[index];
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern void* gUnk_08010A5C[];
|
||||
|
||||
void sub_0804B7E8(void)
|
||||
{
|
||||
if (CheckLocalFlag(0x91)) {
|
||||
ClearLocalFlag(0x91);
|
||||
DoFade(5, 0x100);
|
||||
gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50;
|
||||
gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38;
|
||||
sub_080751E8(1, 2, &gUnk_08010A5C);
|
||||
}
|
||||
}
|
||||
|
||||
extern u32 gUnk_080D6B18[];
|
||||
|
||||
u32 sub_0804B82C(void)
|
||||
{
|
||||
u32 index;
|
||||
|
||||
if (CheckLocalFlag(0x91) != 0) {
|
||||
index = Random() & 1;
|
||||
ClearLocalFlag(2);
|
||||
}
|
||||
else {
|
||||
index = 0;
|
||||
SetLocalFlag(2);
|
||||
}
|
||||
gRoomVars.field_0x78 = gUnk_080D6B18[index];
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_0804B86C(void)
|
||||
{
|
||||
if (CheckLocalFlag(0x91) != 0) {
|
||||
ClearLocalFlag(0x91);
|
||||
DoFade(5, 0x100);
|
||||
gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x50;
|
||||
gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38;
|
||||
sub_080751E8(1, 2, &gUnk_08010A5C);
|
||||
}
|
||||
}
|
||||
|
||||
extern u32 gUnk_080D6BB8[];
|
||||
|
||||
u32 sub_0804B8B0(void)
|
||||
{
|
||||
s32 index;
|
||||
|
||||
if (CheckLocalFlag(0x91) != 0) {
|
||||
index = (s32)Random() % 3;
|
||||
ClearLocalFlag(3);
|
||||
}
|
||||
else {
|
||||
index = 0;
|
||||
SetLocalFlag(3);
|
||||
}
|
||||
gRoomVars.field_0x78 = gUnk_080D6BB8[index];
|
||||
return 1;
|
||||
}
|
||||
|
||||
extern void* gUnk_08010A5C[];
|
||||
|
||||
void sub_0804B8F0(void)
|
||||
{
|
||||
if (CheckLocalFlag(0x91)) {
|
||||
ClearLocalFlag(0x91);
|
||||
DoFade(5 ,0x100);
|
||||
gLinkEntity.x.HALF.HI = gRoomControls.roomOriginX + 0x60;
|
||||
gLinkEntity.y.HALF.HI = gRoomControls.roomOriginY + 0x38;
|
||||
sub_080751E8(1,2, &gUnk_08010A5C);
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_0804B934() {
|
||||
return 1;
|
||||
}
|
||||
Reference in New Issue
Block a user