mirror of https://github.com/zeldaret/tmc.git
Merge pull request #367 from hatal175/roominit
This commit is contained in:
commit
8c964eedd0
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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*);
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
258
src/roomInit.c
258
src/roomInit.c
|
|
@ -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;
|
||||
|
|
|
|||
Loading…
Reference in New Issue