Merge pull request #367 from hatal175/roominit

This commit is contained in:
notyourav 2022-02-11 16:40:43 -08:00 committed by GitHub
commit 8c964eedd0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 215 additions and 570 deletions

View File

@ -1,105 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sl
mov r6, sb
mov r5, r8
push {r5, r6, r7}
ldr r0, [r1, #4]
lsls r0, r0, #4
ldr r1, _0804C000 @ =gUnk_080D8E50
adds r4, r0, r1
ldr r0, [r4]
ldrh r1, [r4, #4]
lsrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
ldrh r2, [r4, #6]
lsrs r2, r2, #4
ands r2, r3
lsls r2, r2, #6
orrs r1, r2
movs r2, #1
bl sub_0807BB68
ldrh r0, [r4, #8]
mov r8, r0
movs r5, #0
cmp r5, r8
bhs _0804BFE8
ldr r7, _0804C004 @ =gRoomControls
movs r1, #0
mov sl, r1
movs r6, #0
movs r3, #1
mov sb, r3
_0804BF7A:
movs r0, #0xf
movs r1, #0xf
movs r2, #0
bl CreateObject
adds r2, r0, #0
cmp r2, #0
beq _0804BFA6
ldrh r0, [r7, #6]
ldrh r1, [r4, #4]
adds r0, r0, r1
adds r0, r0, r6
strh r0, [r2, #0x2e]
ldrh r1, [r7, #8]
ldrh r3, [r4, #6]
adds r1, r1, r3
adds r0, r5, #0
mov r3, sb
ands r0, r3
lsls r0, r0, #3
adds r1, r1, r0
strh r1, [r2, #0x32]
_0804BFA6:
movs r0, #0xf
movs r1, #0x54
movs r2, #0
bl CreateObject
adds r2, r0, #0
cmp r2, #0
beq _0804BFE0
ldrh r0, [r7, #6]
ldrh r1, [r4, #4]
adds r0, r0, r1
adds r0, r0, r6
strh r0, [r2, #0x2e]
ldrh r1, [r7, #8]
ldrh r3, [r4, #6]
adds r1, r1, r3
ldr r0, _0804C008 @ =0x0000FFF4
adds r1, r1, r0
adds r0, r5, #0
mov r3, sb
ands r0, r3
lsls r0, r0, #3
adds r1, r1, r0
strh r1, [r2, #0x32]
mov r0, sl
strb r0, [r2, #0x15]
movs r0, #0x80
lsls r0, r0, #1
strh r0, [r2, #0x24]
_0804BFE0:
adds r6, #0x10
adds r5, #1
cmp r5, r8
blo _0804BF7A
_0804BFE8:
ldrh r0, [r4, #0xa]
ldrh r1, [r4, #0xc]
bl InitScreenShake
ldrh r0, [r4, #0xe]
bl SoundReq
pop {r3, r4, r5}
mov r8, r3
mov sb, r4
mov sl, r5
pop {r4, r5, r6, r7, pc}
.align 2, 0
_0804C000: .4byte gUnk_080D8E50
_0804C004: .4byte gRoomControls
_0804C008: .4byte 0x0000FFF4
.syntax divided

View File

@ -1,160 +0,0 @@
.syntax unified
push {r4, r5, lr}
movs r0, #0
bl sub_080AF250
ldr r0, _0804C15C @ =gRoomVars
ldrb r0, [r0]
cmp r0, #0
bne _0804C13A
b _0804C24C
_0804C13A:
ldr r1, _0804C160 @ =gArea
ldrb r3, [r1, #0xd]
movs r0, #0xe
ands r0, r3
adds r5, r1, #0
cmp r0, #0
bne _0804C164
movs r0, #0xf0
ands r0, r3
cmp r0, #0
bne _0804C19C
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r3
movs r1, #2
orrs r0, r1
b _0804C19A
.align 2, 0
_0804C15C: .4byte gRoomVars
_0804C160: .4byte gArea
_0804C164:
ldr r2, _0804C18C @ =gRoomControls
ldr r1, _0804C190 @ =gUnk_080D9338
lsls r4, r3, #0x1c
lsrs r0, r4, #0x1d
adds r0, r0, r1
ldrb r1, [r2, #0x10]
ldrb r0, [r0]
cmp r1, r0
bne _0804C194
lsrs r0, r4, #0x1d
adds r0, #1
movs r1, #7
ands r0, r1
lsls r0, r0, #1
movs r1, #0xf
rsbs r1, r1, #0
ands r1, r3
orrs r1, r0
strb r1, [r5, #0xd]
b _0804C19C
.align 2, 0
_0804C18C: .4byte gRoomControls
_0804C190: .4byte gUnk_080D9338
_0804C194:
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r3
_0804C19A:
strb r0, [r5, #0xd]
_0804C19C:
ldrb r3, [r5, #0xd]
movs r0, #0xe
ands r0, r3
cmp r0, #0
bne _0804C1DE
ldr r2, _0804C1D0 @ =gRoomControls
ldr r1, _0804C1D4 @ =gUnk_080D9340
lsls r4, r3, #0x18
lsrs r0, r4, #0x1c
adds r0, r0, r1
ldrb r1, [r2, #0x10]
ldrb r0, [r0]
cmp r1, r0
bne _0804C1D8
lsrs r0, r4, #0x1c
adds r0, #1
lsls r0, r0, #4
movs r1, #0xf
ands r1, r3
orrs r1, r0
movs r0, #0xf
rsbs r0, r0, #0
ands r1, r0
strb r1, [r5, #0xd]
b _0804C1DE
.align 2, 0
_0804C1D0: .4byte gRoomControls
_0804C1D4: .4byte gUnk_080D9340
_0804C1D8:
movs r0, #0xf
ands r0, r3
strb r0, [r5, #0xd]
_0804C1DE:
adds r4, r5, #0
ldrb r1, [r4, #0xd]
movs r0, #0xe
ands r0, r1
cmp r0, #0xc
bne _0804C206
movs r0, #1
bl sub_080AF250
movs r0, #0x62
bl SetGlobalFlag
bl sub_0804C290
ldrb r1, [r4, #0xd]
movs r0, #0xf
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0xd]
b _0804C254
_0804C206:
movs r0, #0xf0
ands r0, r1
cmp r0, #0x60
bne _0804C250
movs r0, #1
bl sub_080AF250
.ifdef JP
movs r0, #0x5a
.else
.ifdef EU
movs r0, #0x5a
.else
.ifdef DEMO_JP
movs r0, #0x5a @ TODO deduplicate
.else
movs r0, #0x5c
.endif
.endif
.endif
bl CheckLocalFlag
cmp r0, #0
bne _0804C228
ldr r1, _0804C244 @ =0x00000107
movs r0, #0x73
movs r2, #1
bl SetTileType
_0804C228:
ldr r0, _0804C248 @ =gUnk_080D9328
bl LoadRoomTileEntities
movs r0, #0x62
bl SetGlobalFlag
bl sub_0804C290
ldrb r1, [r5, #0xd]
movs r0, #0xf
ands r0, r1
strb r0, [r5, #0xd]
b _0804C254
.align 2, 0
_0804C244: .4byte 0x00000107
_0804C248: .4byte gUnk_080D9328
_0804C24C:
bl sub_0804C258
_0804C250:
bl sub_0804C290
_0804C254:
pop {r4, r5, pc}
.align 2, 0
.syntax divided

View File

@ -1,28 +0,0 @@
.syntax unified
push {lr}
ldr r3, _0804C288 @ =gArea
ldrb r0, [r3, #0xd]
movs r2, #0xf
rsbs r2, r2, #0
ands r2, r0
movs r0, #2
orrs r2, r0
movs r0, #0xf
ands r2, r0
strb r2, [r3, #0xd]
ldr r0, _0804C28C @ =gRoomTransition
ldrb r0, [r0, #0xe]
cmp r0, #4
bne _0804C284
movs r1, #0xe
adds r0, r2, #0
orrs r0, r1
strb r0, [r3, #0xd]
movs r0, #1
bl sub_080AF250
_0804C284:
pop {pc}
.align 2, 0
_0804C288: .4byte gArea
_0804C28C: .4byte gRoomTransition
.syntax divided

View File

@ -1,23 +0,0 @@
.syntax unified
push {lr}
ldr r0, _0804C2B4 @ =gArea
ldrb r1, [r0, #0xd]
movs r0, #0xe
ands r0, r1
cmp r0, #0
beq _0804C2B2
lsls r1, r1, #0x1c
lsrs r1, r1, #0x1d
lsls r1, r1, #2
ldr r0, _0804C2B8 @ =gUnk_080D9348
adds r1, r1, r0
ldrh r0, [r1]
ldrh r1, [r1, #2]
movs r2, #1
bl SetTileType
_0804C2B2:
pop {pc}
.align 2, 0
_0804C2B4: .4byte gArea
_0804C2B8: .4byte gUnk_080D9348
.syntax divided

View File

@ -1,98 +0,0 @@
.syntax unified
push {r4, r5, lr}
ldr r4, _0804E160 @ =gUnk_080EED2C
ldr r0, _0804E164 @ =gSave
movs r5, #1
ldrb r0, [r0, #8]
lsls r5, r0
b _0804E17C
.align 2, 0
_0804E160: .4byte gUnk_080EED2C
_0804E164: .4byte gSave
_0804E168:
ldrh r0, [r4]
ands r0, r5
cmp r0, #0
beq _0804E17A
ldrh r0, [r4, #4]
ldrh r1, [r4, #2]
movs r2, #1
bl SetTile
_0804E17A:
adds r4, #6
_0804E17C:
ldrh r0, [r4, #2]
cmp r0, #0
bne _0804E168
.ifdef JP
movs r0, #0xce
.else
.ifdef EU
movs r0, #0xce
.else
.ifdef DEMO_JP
movs r0, #0xce @ TODO deduplicate
.else
movs r0, #0xd1
.endif
.endif
.endif
bl CheckLocalFlag
cmp r0, #0
bne _0804E1BA
ldr r4, _0804E198 @ =gUnk_080EED7A
ldr r0, _0804E19C @ =gSave
movs r5, #1
ldrb r0, [r0, #8]
lsls r5, r0
b _0804E1B4
.align 2, 0
_0804E198: .4byte gUnk_080EED7A
_0804E19C: .4byte gSave
_0804E1A0:
ldrh r0, [r4]
ands r0, r5
cmp r0, #0
beq _0804E1B2
ldrh r0, [r4, #4]
ldrh r1, [r4, #2]
movs r2, #1
bl SetTile
_0804E1B2:
adds r4, #6
_0804E1B4:
ldrh r0, [r4]
cmp r0, #0
bne _0804E1A0
_0804E1BA:
movs r0, #0x29
bl CheckGlobalFlag
cmp r0, #0
bne _0804E1F2
ldr r4, _0804E1D0 @ =gUnk_080EED8C
ldr r0, _0804E1D4 @ =gSave
movs r5, #1
ldrb r0, [r0, #8]
lsls r5, r0
b _0804E1EC
.align 2, 0
_0804E1D0: .4byte gUnk_080EED8C
_0804E1D4: .4byte gSave
_0804E1D8:
ldrh r0, [r4]
ands r0, r5
cmp r0, #0
beq _0804E1EA
ldrh r0, [r4, #4]
ldrh r1, [r4, #2]
movs r2, #1
bl SetTile
_0804E1EA:
adds r4, #6
_0804E1EC:
ldrh r0, [r4]
cmp r0, #0
bne _0804E1D8
_0804E1F2:
pop {r4, r5, pc}
.syntax divided

View File

@ -1,103 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
bl UpdateGlobalProgress
movs r0, #0xb
bl CheckKinstoneFused
cmp r0, #0
beq _0804DE32
movs r0, #0x19
bl CheckGlobalFlag
cmp r0, #0
bne _0804DE22
movs r0, #0x19
bl SetGlobalFlag
b _0804DE32
_0804DE22:
movs r0, #0x18
bl CheckGlobalFlag
cmp r0, #0
bne _0804DE32
movs r0, #0x18
bl SetGlobalFlag
_0804DE32:
ldr r5, _0804DE50 @ =Area_HyruleTown
ldr r4, _0804DE54 @ =gSave
ldrb r0, [r4, #8]
lsls r0, r0, #2
adds r0, r0, r5
ldr r0, [r0]
bl sub_0804AFB0
ldrb r0, [r4, #8]
cmp r0, #1
beq _0804DE5C
ldr r1, _0804DE58 @ =gCurrentRoomProperties
ldr r0, [r5]
str r0, [r1]
b _0804DECC
.align 2, 0
_0804DE50: .4byte Area_HyruleTown
_0804DE54: .4byte gSave
_0804DE58: .4byte gCurrentRoomProperties
_0804DE5C:
movs r0, #0x1c
bl SetGlobalFlag
ldr r4, _0804DEB4 @ =gArea
ldr r0, _0804DEB8 @ =0x0000085C
adds r4, r4, r0
ldr r0, [r4]
ldrh r5, [r0, #4]
ldrh r6, [r0, #6]
ldr r1, _0804DEBC @ =gRoomControls
movs r2, #0
movs r0, #0x15
strb r0, [r1, #4]
strb r2, [r1, #5]
bl InitRoom
ldr r0, [r4]
movs r1, #0x98
lsls r1, r1, #1
adds r5, r5, r1
strh r5, [r0, #4]
ldr r0, [r4]
strh r6, [r0, #6]
ldr r1, _0804DEC0 @ =gRoomTransition
ldr r0, [r4]
ldrh r0, [r0]
lsrs r0, r0, #1
strh r0, [r1, #0x10]
bl sub_08052EA0
bl sub_0804AF90
.ifdef JP
movs r0, #0xca
.else
.ifdef EU
movs r0, #0xca
.else
.ifdef DEMO_JP
movs r0, #0xca @ TODO deduplicate
.else
movs r0, #0xcd
.endif
.endif
.endif
bl CheckLocalFlag
cmp r0, #0
bne _0804DEC4
movs r1, #0x80
lsls r1, r1, #1
movs r0, #7
bl SetFade
b _0804DECC
.align 2, 0
_0804DEB4: .4byte gArea
_0804DEB8: .4byte 0x0000085C
_0804DEBC: .4byte gRoomControls
_0804DEC0: .4byte gRoomTransition
_0804DEC4:
movs r0, #6
movs r1, #0x10
bl SetFade
_0804DECC:
movs r0, #1
pop {r4, r5, r6, pc}
.syntax divided

View File

@ -28,7 +28,9 @@ typedef struct {
u8 filler[4];
u16 lightLevel;
u8 unk_0b;
u8 unk_0c;
u8 unk_0c_0 : 1;
u8 unk_0c_1 : 3;
u8 unk_0c_4 : 4;
u8 filler3[2];
u16 field_0x10;
u16 curPortalX;

View File

@ -54,7 +54,7 @@ extern void sub_0805BC4C(void);
extern void sub_0807BB68(u32*, u32, u32);
extern void sub_08054570(void);
extern void sub_08059278(void);
extern void sub_0804C128(u32);
extern void sub_0804C128();
extern void sub_08058324(u32);
extern void sub_0801AFE4(void);
extern void sub_0807AABC(Entity*);

View File

@ -5,7 +5,7 @@
typedef struct ScriptExecutionContext {
/*0x00*/ u16* scriptInstructionPointer;
/*0x03*/ u32 intVariable;
/*0x04*/ u32 intVariable;
/*0x08*/ u32 postScriptActions;
/*0x0C*/ u8 unk_0C[0x4]; // unused
/*0x10*/ u16 wait;

View File

@ -1412,7 +1412,7 @@ static void UpdateFakeScroll(void) {
LinkedList* ll;
Entity* e;
if ((gArea.unk_0c & 1) == 0 || !gRoomVars.field_0x0)
if (gArea.unk_0c_0 == 0 || !gRoomVars.field_0x0)
return;
y = 0;

View File

@ -12,6 +12,7 @@
#include "game.h"
#include "npc.h"
#include "kinstone.h"
#include "object.h"
extern u32 sub_08060354(void);
extern void sub_08057E64(void);
@ -27,6 +28,14 @@ static void sub_0804D0B4(void);
static void sub_0804D9B0(void);
static void sub_0804ED18(void);
static void sub_0804F578(void);
extern void sub_080AF250(u32);
extern void sub_0804AFB0(void**);
extern void sub_0804AF90(void);
void sub_080AF250();
void sub_0804C290();
void sub_0804C258();
extern void** gCurrentRoomProperties;
u32 sub_unk3_ArmosInteriors_RuinsEntranceNorth(u32 arg0) {
return 1;
@ -470,8 +479,6 @@ extern EntityData UpperInn_Nayru;
extern EntityData UpperInn_Din;
void sub_StateChange_HouseInteriors1_InnWest2F(void) {
int iVar1;
if (gSave.global_progress < 4)
return;
@ -966,59 +973,51 @@ void sub_StateChange_GoronCave_Main(void) {
sub_0807BB68(&gUnk_080D8C68, 0x281, 1);
}
#if 0
typedef struct {
u32 a;
u32* a;
u16 x, y;
u16 entCnt;
u16 shakeTime, shakeMag, sfx;
} struct_080D8E54;
typedef struct {
u32 field_0x0;
u32 field_0x4;
} struct_0804BF38;
extern struct_080D8E54 gUnk_080D8E50[];
void sub_0804BF38(u32 arg0, struct_0804BF38* arg1)
{
u32 numEnts;
u32 iVar2;
u32 iVar3;
Entity *fx;
u32 entCnt;
u32 xOff;
iVar2 = arg1->field_0x4;
iVar3 = iVar2 * 0x10;
sub_0807BB68(gUnk_080D8E50[iVar2].a, ((gUnk_080D8E50[iVar3].x >> 4) & 0x3f | (gUnk_080D8E50[iVar3].y >> 4) & 0x3f) << 6, 1);
numEnts = gUnk_080D8E50[iVar3].entCnt;
entCnt = 0;
void sub_0804BF38(Entity* this, ScriptExecutionContext* context) {
u32 numEnts;
u32 iVar2;
Entity* fx;
u32 entCnt;
u32 xOff;
struct_080D8E54* ptr;
u32 xtile, ytile;
u32* a;
if (numEnts != 0) {
for (xOff = 0; entCnt < numEnts; xOff += 0x10, entCnt++) {
fx = CreateObject(SPECIAL_FX, 0xf, 0);
if (fx != NULL) {
fx->x.HALF.HI = gUnk_080D8E50[iVar3].x + gRoomControls.origin_x + xOff;
fx->y.HALF.HI = gUnk_080D8E50[iVar3].y + gRoomControls.origin_y + (entCnt & 1) * 8;
}
fx = CreateObject(SPECIAL_FX, 0x54, 0);
if (fx != NULL) {
fx->x.HALF.HI = gUnk_080D8E50[iVar3].x + gRoomControls.origin_x + xOff;
fx->y.HALF.HI = gUnk_080D8E50[iVar3].y + gRoomControls.origin_y + -0xc + (entCnt & 1) * 8;
fx->direction = 0;
fx->speed = 0x100;
}
iVar2 = context->intVariable;
ptr = &gUnk_080D8E50[iVar2];
a = ptr->a;
xtile = (ptr->x >> 4) & 0x3f;
ytile = ((ptr->y >> 4) & 0x3f) << 6;
sub_0807BB68(a, xtile | ytile, 1);
numEnts = ptr->entCnt;
for (entCnt = 0; entCnt < numEnts; entCnt++) {
fx = CreateObject(SPECIAL_FX, 0xf, 0);
if (fx != NULL) {
fx->x.HALF.HI = ptr->x + gRoomControls.origin_x + entCnt * 0x10;
fx->y.HALF.HI = ptr->y + gRoomControls.origin_y + (entCnt & 1) * 8;
}
fx = CreateObject(SPECIAL_FX, 0x54, 0);
if (fx != NULL) {
fx->x.HALF.HI = ptr->x + gRoomControls.origin_x + entCnt * 0x10;
fx->y.HALF.HI = ptr->y + gRoomControls.origin_y + -0xc + (entCnt & 1) * 8;
fx->direction = 0;
fx->speed = 0x100;
}
}
}
InitScreenShake(gUnk_080D8E50[iVar3].shakeTime, gUnk_080D8E50[iVar3].shakeMag);
SoundReq(gUnk_080D8E50[iVar2].sfx);
InitScreenShake(ptr->shakeTime, ptr->shakeMag);
SoundReq(ptr->sfx);
}
#else
ASM_FUNC("asm/non_matching/sub_0804BF38.inc", void sub_0804BF38(Entity* this, ScriptExecutionContext* context))
#endif
u32 sub_unk3_EzloAuxCutscene_Main(void) {
return 1;
@ -1070,14 +1069,91 @@ u32 sub_unk3_RoyalValley_ForestMaze(void) {
void sub_StateChange_RoyalValley_ForestMaze(void) {
gArea.areaMetadata |= 0x40;
sub_0804C128(gArea.filler[7] |= 1);
gArea.unk_0c_0 = 1;
sub_0804C128();
}
ASM_FUNC("asm/non_matching/sub_0804C128.inc", void sub_0804C128(u32 arg0))
extern u8 gUnk_080D9338[];
extern u8 gUnk_080D9340[];
extern TileEntity gUnk_080D9328[];
ASM_FUNC("asm/non_matching/sub_0804C258.inc", void sub_0804C258(void))
void sub_0804C128() {
sub_080AF250(0);
if (gRoomVars.field_0x0 != 0) {
if ((gArea.unk_0c_1) == 0) {
if ((gArea.unk_0c_4) == 0) {
gArea.unk_0c_1 = 1;
}
} else {
if (gRoomControls.scroll_direction == gUnk_080D9338[gArea.unk_0c_1]) {
gArea.unk_0c_1++;
} else {
gArea.unk_0c_1 = 0;
}
}
ASM_FUNC("asm/non_matching/sub_0804C290.inc", void sub_0804C290(void))
if (gArea.unk_0c_1 == 0) {
if (gRoomControls.scroll_direction == gUnk_080D9340[gArea.unk_0c_4]) {
gArea.unk_0c_4++;
gArea.unk_0c_1 = 0;
} else {
gArea.unk_0c_4 = 0;
}
}
if (gArea.unk_0c_1 == 6) {
sub_080AF250(1);
SetGlobalFlag(0x62);
sub_0804C290();
gArea.unk_0c_1 = 0;
return;
}
if (gArea.unk_0c_4 == 6) {
sub_080AF250(1);
#if defined(EU) || defined(JP) || defined(DEMO_JP)
if (CheckLocalFlag(0x5a) == 0) {
#else
if (CheckLocalFlag(0x5c) == 0) {
#endif
SetTileType(0x73, 0x107, 1);
}
LoadRoomTileEntities(gUnk_080D9328);
SetGlobalFlag(0x62);
sub_0804C290();
gArea.unk_0c_4 = 0;
return;
}
} else {
sub_0804C258();
}
sub_0804C290();
}
void sub_0804C258(void) {
gArea.unk_0c_1 = 1;
gArea.unk_0c_4 = 0;
if (gRoomTransition.player_status.start_anim == 4) {
gArea.unk_0c_1 = 7;
sub_080AF250(1);
}
}
typedef struct {
u16 unk0;
u16 unk2;
} gUnk_080D9348_struct;
extern gUnk_080D9348_struct gUnk_080D9348[];
void sub_0804C290(void) {
int iVar1;
if (gArea.unk_0c_1) {
iVar1 = gArea.unk_0c_1;
SetTileType((gUnk_080D9348 + iVar1)->unk0, (gUnk_080D9348 + iVar1)->unk2, 1);
}
}
u32 sub_unk3_RoyalValleyGraves_HeartPiece(void) {
return 1;
@ -4233,7 +4309,54 @@ u32 sub_unk3_DarkHyruleCastle_58(void) {
void sub_StateChange_Ruins_Beanstalk4(void) {
}
ASM_FUNC("asm/non_matching/sub_unk3_HyruleTown_0.inc", u32 sub_unk3_HyruleTown_0(void))
extern u32 Area_HyruleTown[];
u32 sub_unk3_HyruleTown_0(void) {
u32 uVar1;
u32 uVar2;
int iVar3;
UpdateGlobalProgress();
iVar3 = CheckKinstoneFused(0xb);
if (iVar3 != 0) {
iVar3 = CheckGlobalFlag(0x19);
if (iVar3 == 0) {
SetGlobalFlag(0x19);
} else {
iVar3 = CheckGlobalFlag(0x18);
if (iVar3 == 0) {
SetGlobalFlag(0x18);
}
}
}
sub_0804AFB0((void**)(Area_HyruleTown[gSave.global_progress]));
if (gSave.global_progress != 1) {
gCurrentRoomProperties = (void**)*Area_HyruleTown;
} else {
SetGlobalFlag(0x1c);
uVar1 = gArea.pCurrentRoomInfo->map_x;
uVar2 = gArea.pCurrentRoomInfo->map_y;
gRoomControls.area = 0x15;
gRoomControls.room = 0;
InitRoom();
gArea.pCurrentRoomInfo->map_x = uVar1 + 0x130;
gArea.pCurrentRoomInfo->map_y = uVar2;
gRoomTransition.player_status.start_pos_x = (gArea.pCurrentRoomInfo->pixel_width) >> 1;
sub_08052EA0();
sub_0804AF90();
#if defined(JP) || defined(EU) || defined(DEMO_JP)
if (CheckLocalFlag(0xca) == 0) {
#else
if (CheckLocalFlag(0xcd) == 0) {
#endif
SetFade(7, 0x100);
} else {
SetFade(6, 0x10);
}
}
return 1;
}
extern EntityData gUnk_080EEB6C;
extern EntityData gUnk_080EEB8C;
@ -4345,7 +4468,44 @@ void sub_unk1_HyruleTown_8(void) {
}
}
ASM_FUNC("asm/non_matching/sub_0804E150.inc", void sub_0804E150(void))
extern u16 gUnk_080EED2C[];
extern u16 gUnk_080EED7A[];
extern u16 gUnk_080EED8C[];
void sub_0804E150(void) {
u16* pTileData;
u32 uVar3;
pTileData = gUnk_080EED2C;
uVar3 = 1 << gSave.global_progress;
for (; pTileData[1] != 0; pTileData += 3) {
if ((pTileData[0] & uVar3) != 0) {
SetTile(pTileData[2], pTileData[1], 1);
}
}
#if defined(JP) || defined(DEMO_JP) || defined(EU)
if (CheckLocalFlag(0xce) == 0) {
#else
if (CheckLocalFlag(0xd1) == 0) {
#endif
pTileData = gUnk_080EED7A;
uVar3 = 1 << gSave.global_progress;
for (; pTileData[0] != 0; pTileData += 3) {
if ((pTileData[0] & uVar3) != 0) {
SetTile(pTileData[2], pTileData[1], 1);
}
}
}
if (CheckGlobalFlag(0x29) == 0) {
pTileData = gUnk_080EED8C;
uVar3 = 1 << gSave.global_progress;
for (; pTileData[0] != 0; pTileData += 3) {
if ((pTileData[0] & uVar3) != 0) {
SetTile(pTileData[2], pTileData[1], 1);
}
}
}
}
u32 sub_unk3_HyruleTownMinishCaves_Entrance(void) {
return 1;