mirror of https://github.com/zeldaret/tmc.git
loadRoom.c
This commit is contained in:
parent
db02fad00a
commit
6328c148d2
|
@ -592,7 +592,7 @@ _0801DBF0:
|
||||||
ldrb r0, [r6]
|
ldrb r0, [r6]
|
||||||
ldrb r1, [r6, #1]
|
ldrb r1, [r6, #1]
|
||||||
movs r2, #3
|
movs r2, #3
|
||||||
bl sub_0804B0FC
|
bl GetRoomProperty
|
||||||
adds r4, r0, #0
|
adds r4, r0, #0
|
||||||
cmp r4, #0
|
cmp r4, #0
|
||||||
bne _0801DC04
|
bne _0801DC04
|
||||||
|
@ -845,7 +845,7 @@ _0801DDE4:
|
||||||
ldrb r0, [r4]
|
ldrb r0, [r4]
|
||||||
ldrb r1, [r4, #1]
|
ldrb r1, [r4, #1]
|
||||||
movs r2, #3
|
movs r2, #3
|
||||||
bl sub_0804B0FC
|
bl GetRoomProperty
|
||||||
adds r6, r0, #0
|
adds r6, r0, #0
|
||||||
adds r0, r4, #0
|
adds r0, r4, #0
|
||||||
bl sub_0801DF10
|
bl sub_0801DF10
|
||||||
|
|
|
@ -2,124 +2,6 @@
|
||||||
.text
|
.text
|
||||||
.syntax unified
|
.syntax unified
|
||||||
|
|
||||||
thumb_func_start sub_0804B058
|
|
||||||
sub_0804B058: @ 0x0804B058
|
|
||||||
push {r4, r5, lr}
|
|
||||||
adds r4, r0, #0
|
|
||||||
cmp r4, #0
|
|
||||||
beq _0804B0AE
|
|
||||||
ldrb r0, [r4]
|
|
||||||
cmp r0, #0xff
|
|
||||||
beq _0804B0AE
|
|
||||||
movs r5, #0
|
|
||||||
_0804B068:
|
|
||||||
cmp r5, #0x1f
|
|
||||||
bhi _0804B09E
|
|
||||||
ldrb r1, [r4]
|
|
||||||
movs r0, #0xf
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, #3
|
|
||||||
bne _0804B09E
|
|
||||||
adds r0, r5, #0
|
|
||||||
bl sub_08049D1C
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0804B0A4
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl CreateEntity
|
|
||||||
adds r2, r0, #0
|
|
||||||
cmp r2, #0
|
|
||||||
beq _0804B0A4
|
|
||||||
ldrb r0, [r2, #8]
|
|
||||||
cmp r0, #3
|
|
||||||
bne _0804B0A4
|
|
||||||
movs r0, #0x80
|
|
||||||
adds r2, #0x6c
|
|
||||||
adds r1, r5, #0
|
|
||||||
orrs r1, r0
|
|
||||||
strb r1, [r2]
|
|
||||||
b _0804B0A4
|
|
||||||
_0804B09E:
|
|
||||||
adds r0, r4, #0
|
|
||||||
bl CreateEntity
|
|
||||||
_0804B0A4:
|
|
||||||
adds r5, #1
|
|
||||||
adds r4, #0x10
|
|
||||||
ldrb r0, [r4]
|
|
||||||
cmp r0, #0xff
|
|
||||||
bne _0804B068
|
|
||||||
_0804B0AE:
|
|
||||||
pop {r4, r5, pc}
|
|
||||||
|
|
||||||
thumb_func_start sub_0804B0B0
|
|
||||||
sub_0804B0B0: @ 0x0804B0B0
|
|
||||||
push {lr}
|
|
||||||
movs r2, #1
|
|
||||||
bl sub_0804B0FC
|
|
||||||
bl LoadRoomEntityList
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0804B0C0
|
|
||||||
sub_0804B0C0: @ 0x0804B0C0
|
|
||||||
push {lr}
|
|
||||||
adds r2, r1, #0
|
|
||||||
ldr r3, _0804B0E0 @ =gUnk_02017654
|
|
||||||
movs r1, #0
|
|
||||||
str r1, [r3]
|
|
||||||
ldr r1, _0804B0E4 @ =gUnk_080D50FC
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r1, [r0]
|
|
||||||
cmp r1, #0
|
|
||||||
beq _0804B0DE
|
|
||||||
lsls r0, r2, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
str r0, [r3]
|
|
||||||
_0804B0DE:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0804B0E0: .4byte gUnk_02017654
|
|
||||||
_0804B0E4: .4byte gUnk_080D50FC
|
|
||||||
|
|
||||||
thumb_func_start sub_0804B0E8
|
|
||||||
sub_0804B0E8: @ 0x0804B0E8
|
|
||||||
push {lr}
|
|
||||||
movs r2, #4
|
|
||||||
bl sub_0804B0FC
|
|
||||||
cmp r0, #0
|
|
||||||
beq _0804B0F8
|
|
||||||
bl _call_via_r0
|
|
||||||
_0804B0F8:
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
|
|
||||||
thumb_func_start sub_0804B0FC
|
|
||||||
sub_0804B0FC: @ 0x0804B0FC
|
|
||||||
push {r4, lr}
|
|
||||||
adds r3, r1, #0
|
|
||||||
adds r4, r2, #0
|
|
||||||
movs r2, #0
|
|
||||||
ldr r1, _0804B124 @ =gUnk_080D50FC
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r1, [r0]
|
|
||||||
cmp r1, #0
|
|
||||||
beq _0804B120
|
|
||||||
lsls r0, r3, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r2, [r0]
|
|
||||||
cmp r2, #0
|
|
||||||
beq _0804B120
|
|
||||||
lsls r0, r4, #2
|
|
||||||
adds r0, r0, r2
|
|
||||||
ldr r2, [r0]
|
|
||||||
_0804B120:
|
|
||||||
adds r0, r2, #0
|
|
||||||
pop {r4, pc}
|
|
||||||
.align 2, 0
|
|
||||||
_0804B124: .4byte gUnk_080D50FC
|
|
||||||
|
|
||||||
thumb_func_start GetCurrentRoomProperty
|
thumb_func_start GetCurrentRoomProperty
|
||||||
GetCurrentRoomProperty: @ 0x0804B128
|
GetCurrentRoomProperty: @ 0x0804B128
|
||||||
push {lr}
|
push {lr}
|
||||||
|
|
|
@ -3807,7 +3807,7 @@ sub_08051E84: @ 0x08051E84
|
||||||
strh r0, [r1, #4]
|
strh r0, [r1, #4]
|
||||||
ldrb r0, [r4]
|
ldrb r0, [r4]
|
||||||
ldrb r1, [r4, #1]
|
ldrb r1, [r4, #1]
|
||||||
bl sub_0804B0C0
|
bl SetCurrentRoomPropertyList
|
||||||
ldrb r0, [r4]
|
ldrb r0, [r4]
|
||||||
ldrb r1, [r4, #1]
|
ldrb r1, [r4, #1]
|
||||||
bl sub_08052FD8
|
bl sub_08052FD8
|
||||||
|
|
|
@ -2815,12 +2815,12 @@ sub_08053CC8: @ 0x08053CC8
|
||||||
ldrb r0, [r4, #4]
|
ldrb r0, [r4, #4]
|
||||||
ldrb r1, [r4, #5]
|
ldrb r1, [r4, #5]
|
||||||
movs r2, #1
|
movs r2, #1
|
||||||
bl sub_0804B0FC
|
bl GetRoomProperty
|
||||||
bl LoadRoomEntityList
|
bl LoadRoomEntityList
|
||||||
ldrb r0, [r4, #4]
|
ldrb r0, [r4, #4]
|
||||||
ldrb r1, [r4, #5]
|
ldrb r1, [r4, #5]
|
||||||
movs r2, #2
|
movs r2, #2
|
||||||
bl sub_0804B0FC
|
bl GetRoomProperty
|
||||||
bl LoadRoomEntityList
|
bl LoadRoomEntityList
|
||||||
movs r5, #1
|
movs r5, #1
|
||||||
strb r5, [r6, #6]
|
strb r5, [r6, #6]
|
||||||
|
@ -2946,12 +2946,12 @@ sub_08053DB4: @ 0x08053DB4
|
||||||
ldrb r0, [r4, #4]
|
ldrb r0, [r4, #4]
|
||||||
ldrb r1, [r4, #5]
|
ldrb r1, [r4, #5]
|
||||||
movs r2, #1
|
movs r2, #1
|
||||||
bl sub_0804B0FC
|
bl GetRoomProperty
|
||||||
bl LoadRoomEntityList
|
bl LoadRoomEntityList
|
||||||
ldrb r0, [r4, #4]
|
ldrb r0, [r4, #4]
|
||||||
ldrb r1, [r4, #5]
|
ldrb r1, [r4, #5]
|
||||||
movs r2, #2
|
movs r2, #2
|
||||||
bl sub_0804B0FC
|
bl GetRoomProperty
|
||||||
bl LoadRoomEntityList
|
bl LoadRoomEntityList
|
||||||
movs r0, #0x78
|
movs r0, #0x78
|
||||||
strh r0, [r5, #8]
|
strh r0, [r5, #8]
|
||||||
|
|
|
@ -123,7 +123,7 @@ sub_08054974: @ 0x08054974
|
||||||
adds r6, r1, r0
|
adds r6, r1, r0
|
||||||
ldrb r0, [r6, #2]
|
ldrb r0, [r6, #2]
|
||||||
ldrb r1, [r6, #3]
|
ldrb r1, [r6, #3]
|
||||||
bl sub_0804B0C0
|
bl SetCurrentRoomPropertyList
|
||||||
ldr r4, _080549B4 @ =gRoomControls
|
ldr r4, _080549B4 @ =gRoomControls
|
||||||
ldrb r0, [r6, #2]
|
ldrb r0, [r6, #2]
|
||||||
strb r0, [r4, #4]
|
strb r0, [r4, #4]
|
||||||
|
|
|
@ -5,22 +5,6 @@
|
||||||
.syntax unified
|
.syntax unified
|
||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start sub_080A5574
|
|
||||||
sub_080A5574: @ 0x080A5574
|
|
||||||
push {lr}
|
|
||||||
ldr r1, _080A558C @ =gUnk_08128BF8
|
|
||||||
ldr r0, _080A5590 @ =gMenu
|
|
||||||
ldrb r0, [r0, #5]
|
|
||||||
lsls r0, r0, #2
|
|
||||||
adds r0, r0, r1
|
|
||||||
ldr r0, [r0]
|
|
||||||
bl _call_via_r0
|
|
||||||
bl sub_080A57F4
|
|
||||||
pop {pc}
|
|
||||||
.align 2, 0
|
|
||||||
_080A558C: .4byte gUnk_08128BF8
|
|
||||||
_080A5590: .4byte gMenu
|
|
||||||
|
|
||||||
thumb_func_start sub_080A5594
|
thumb_func_start sub_080A5594
|
||||||
sub_080A5594: @ 0x080A5594
|
sub_080A5594: @ 0x080A5594
|
||||||
|
|
|
@ -105,4 +105,5 @@ extern void sub_080AD9B0(void);
|
||||||
extern void sub_080AD918(void);
|
extern void sub_080AD918(void);
|
||||||
extern void sub_0801E104(void);
|
extern void sub_0801E104(void);
|
||||||
extern void MenuFadeIn(u32, u32);
|
extern void MenuFadeIn(u32, u32);
|
||||||
|
extern void sub_080A57F4(void);
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,27 +1,93 @@
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
/* called when loading any room */
|
#include "room.h"
|
||||||
|
|
||||||
void LoadRoomEntityList();
|
void LoadRoomEntityList(EntityData* dat);
|
||||||
s32 CheckGlobalFlag(u32 flag);
|
s32 CheckGlobalFlag(u32 flag);
|
||||||
extern s32* GetCurrentRoomProperty(u8 unk);
|
extern EntityData* GetCurrentRoomProperty(u32 unk);
|
||||||
extern void sub_0804B058(s32* unk);
|
extern void sub_0804B058(EntityData* dat);
|
||||||
extern void sub_0804B1AC();
|
extern void sub_0804B1AC(EntityData* dat);
|
||||||
extern void sub_0801AC98();
|
extern void sub_0801AC98();
|
||||||
|
extern u32 sub_08049D1C(u32);
|
||||||
|
extern Entity* CreateEntity(EntityData*);
|
||||||
|
extern void* GetRoomProperty(u32, u32, u32);
|
||||||
|
|
||||||
void LoadRoom(void)
|
extern u32 gUnk_02017654;
|
||||||
|
extern u32* gUnk_080D50FC;
|
||||||
{
|
|
||||||
|
|
||||||
|
void LoadRoom(void) {
|
||||||
s32 iVar1;
|
s32 iVar1;
|
||||||
s32* dat;
|
s32* dat;
|
||||||
|
|
||||||
GetCurrentRoomProperty(1);
|
LoadRoomEntityList(GetCurrentRoomProperty(1));
|
||||||
LoadRoomEntityList();
|
LoadRoomEntityList(GetCurrentRoomProperty(0));
|
||||||
GetCurrentRoomProperty(0);
|
|
||||||
LoadRoomEntityList();
|
|
||||||
|
|
||||||
if (CheckGlobalFlag(21)) sub_0804B058(GetCurrentRoomProperty(2));
|
if (CheckGlobalFlag(21))
|
||||||
GetCurrentRoomProperty(3);
|
sub_0804B058(GetCurrentRoomProperty(2));
|
||||||
sub_0804B1AC();
|
|
||||||
|
sub_0804B1AC(GetCurrentRoomProperty(3));
|
||||||
sub_0801AC98();
|
sub_0801AC98();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_0804B058(EntityData* dat) {
|
||||||
|
Entity* ent;
|
||||||
|
u32 uVar2;
|
||||||
|
|
||||||
|
if ((dat != NULL) && (dat->entityType != 0xff)) {
|
||||||
|
uVar2 = 0;
|
||||||
|
do {
|
||||||
|
if ((uVar2 < 0x20) && ((dat->entityType & 0xf) == 3)) {
|
||||||
|
if (sub_08049D1C(uVar2) != 0) {
|
||||||
|
ent = CreateEntity(dat);
|
||||||
|
if ((ent != NULL) && ((ent->entityType).type == 3)) {
|
||||||
|
ent->field_0x6c = uVar2 | 0x80;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
CreateEntity(dat);
|
||||||
|
}
|
||||||
|
uVar2++;
|
||||||
|
dat++;
|
||||||
|
} while (dat->entityType != 0xff);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0804B0B0(u32 arg0, u32 arg1)
|
||||||
|
{
|
||||||
|
LoadRoomEntityList(GetRoomProperty(arg0, arg1, 1));
|
||||||
|
}
|
||||||
|
|
||||||
|
void SetCurrentRoomPropertyList(u32 arg0, u32 arg1)
|
||||||
|
{
|
||||||
|
u32** arr;
|
||||||
|
gUnk_02017654 = 0;
|
||||||
|
arr = &gUnk_080D50FC;
|
||||||
|
if (arr[arg0] != 0) {
|
||||||
|
gUnk_02017654 = arr[arg0][arg1];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void sub_0804B0E8(u32 arg0, u32 arg1)
|
||||||
|
{
|
||||||
|
void (* func)();
|
||||||
|
|
||||||
|
func = (void (*)())GetRoomProperty(arg0, arg1, 4);
|
||||||
|
if (func != NULL) {
|
||||||
|
func();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// returns multiple types of data?
|
||||||
|
void* GetRoomProperty(u32 arg0, u32 arg1, u32 arg2)
|
||||||
|
{
|
||||||
|
u32 temp;
|
||||||
|
u32** arr;
|
||||||
|
temp = 0;
|
||||||
|
arr = &gUnk_080D50FC;
|
||||||
|
if (arr[arg0] != NULL) {
|
||||||
|
temp = arr[arg0][arg1];
|
||||||
|
if (temp != 0) {
|
||||||
|
temp = *(u32 *)(arg2 * 4 + temp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return (void*)temp;
|
||||||
|
}
|
|
@ -1,20 +1,26 @@
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
|
#include "menu.h"
|
||||||
|
#include "functions.h"
|
||||||
|
|
||||||
|
extern void (*const gUnk_08128BF8[])(void);
|
||||||
|
|
||||||
extern u8 gUnk_02000090;
|
extern u8 gUnk_02000090;
|
||||||
|
|
||||||
u32 sub_080A554C(u32 param_1)
|
u32 sub_080A554C(u32 arg0)
|
||||||
|
|
||||||
{
|
{
|
||||||
u32 uVar1;
|
u32 i;
|
||||||
|
|
||||||
if (param_1 != 0) {
|
if (arg0 != 0) {
|
||||||
uVar1 = 0;
|
for (i = 0; i < 17; i++) {
|
||||||
do {
|
if (arg0 == (&gUnk_02000090)[i])
|
||||||
if (param_1 == (&gUnk_02000090)[uVar1]) {
|
return i;
|
||||||
return uVar1;
|
}
|
||||||
}
|
|
||||||
uVar1 = uVar1 + 1;
|
|
||||||
} while (uVar1 < 17);
|
|
||||||
}
|
}
|
||||||
return 17;
|
return 17;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void sub_080A5574(void)
|
||||||
|
{
|
||||||
|
gUnk_08128BF8[gMenu.secret]();
|
||||||
|
sub_080A57F4();
|
||||||
|
}
|
Loading…
Reference in New Issue