Merge pull request #30 from notyouraveragehooman/master

room loading funcs partially decomped
This commit is contained in:
notyouraveragehooman 2020-07-18 01:11:48 -07:00 committed by GitHub
commit f816d08720
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 518 additions and 835 deletions

View File

@ -350,803 +350,3 @@ _0804B3BA:
rsbs r0, r0, #0
bl sub_080526F8
pop {r4, r5, pc}
thumb_func_start sub_0804B3C4
sub_0804B3C4: @ 0x0804B3C4
push {lr}
bl sub_0804B29C
pop {pc}
thumb_func_start sub_0804B3CC
sub_0804B3CC: @ 0x0804B3CC
movs r0, #1
bx lr
thumb_func_start sub_0804B3D0
sub_0804B3D0: @ 0x0804B3D0
push {lr}
movs r0, #0
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B3DC
sub_0804B3DC: @ 0x0804B3DC
movs r0, #1
bx lr
thumb_func_start sub_0804B3E0
sub_0804B3E0: @ 0x0804B3E0
push {lr}
movs r0, #1
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B3EC
sub_0804B3EC: @ 0x0804B3EC
movs r0, #1
bx lr
thumb_func_start sub_0804B3F0
sub_0804B3F0: @ 0x0804B3F0
push {lr}
movs r0, #2
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B3FC
sub_0804B3FC: @ 0x0804B3FC
movs r0, #1
bx lr
thumb_func_start sub_0804B400
sub_0804B400: @ 0x0804B400
push {lr}
movs r0, #3
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B40C
sub_0804B40C: @ 0x0804B40C
movs r0, #1
bx lr
thumb_func_start sub_0804B410
sub_0804B410: @ 0x0804B410
push {lr}
movs r0, #4
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B41C
sub_0804B41C: @ 0x0804B41C
movs r0, #1
bx lr
thumb_func_start sub_0804B420
sub_0804B420: @ 0x0804B420
push {lr}
movs r0, #5
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B42C
sub_0804B42C: @ 0x0804B42C
movs r0, #1
bx lr
thumb_func_start sub_0804B430
sub_0804B430: @ 0x0804B430
push {lr}
movs r0, #6
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B43C
sub_0804B43C: @ 0x0804B43C
movs r0, #1
bx lr
thumb_func_start sub_0804B440
sub_0804B440: @ 0x0804B440
push {lr}
movs r0, #7
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B44C
sub_0804B44C: @ 0x0804B44C
movs r0, #1
bx lr
thumb_func_start sub_0804B450
sub_0804B450: @ 0x0804B450
push {lr}
movs r0, #8
bl sub_08030118
pop {pc}
.align 2, 0
thumb_func_start sub_0804B45C
sub_0804B45C: @ 0x0804B45C
movs r0, #1
bx lr
thumb_func_start sub_0804B460
sub_0804B460: @ 0x0804B460
push {lr}
movs r0, #9
bl sub_08030118
ldr r0, _0804B474 @ =gArea
movs r1, #3
strb r1, [r0, #3]
movs r1, #0x4e
strb r1, [r0]
pop {pc}
.align 2, 0
_0804B474: .4byte gArea
thumb_func_start sub_0804B478
sub_0804B478: @ 0x0804B478
movs r0, #1
bx lr
thumb_func_start sub_0804B47C
sub_0804B47C: @ 0x0804B47C
push {lr}
movs r0, #0xa
bl sub_08030118
ldr r0, _0804B490 @ =gArea
movs r1, #3
strb r1, [r0, #3]
movs r1, #0x4e
strb r1, [r0]
pop {pc}
.align 2, 0
_0804B490: .4byte gArea
thumb_func_start sub_0804B494
sub_0804B494: @ 0x0804B494
movs r0, #1
bx lr
thumb_func_start sub_0804B498
sub_0804B498: @ 0x0804B498
push {lr}
movs r0, #0x23
bl sub_080575C8
bl sub_08057688
pop {pc}
.align 2, 0
thumb_func_start sub_0804B4A8
sub_0804B4A8: @ 0x0804B4A8
movs r0, #1
bx lr
thumb_func_start sub_0804B4AC
sub_0804B4AC: @ 0x0804B4AC
push {lr}
movs r0, #0x23
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B4B8
sub_0804B4B8: @ 0x0804B4B8
push {lr}
movs r0, #0x23
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B4C4
sub_0804B4C4: @ 0x0804B4C4
movs r0, #1
bx lr
thumb_func_start sub_0804B4C8
sub_0804B4C8: @ 0x0804B4C8
push {lr}
movs r0, #0x22
bl sub_080580B0
pop {pc}
.align 2, 0
thumb_func_start sub_0804B4D4
sub_0804B4D4: @ 0x0804B4D4
push {lr}
movs r0, #0x22
bl sub_080580B0
pop {pc}
.align 2, 0
thumb_func_start sub_0804B4E0
sub_0804B4E0: @ 0x0804B4E0
movs r0, #1
bx lr
thumb_func_start sub_0804B4E4
sub_0804B4E4: @ 0x0804B4E4
push {lr}
movs r0, #0x22
bl sub_080580B0
movs r0, #2
bl GetInventoryValue
cmp r0, #0
beq _0804B4FC
movs r0, #0x56
bl SetGlobalFlag
_0804B4FC:
pop {pc}
.align 2, 0
thumb_func_start sub_0804B500
sub_0804B500: @ 0x0804B500
push {lr}
movs r0, #0x22
bl sub_080580B0
pop {pc}
.align 2, 0
thumb_func_start sub_0804B50C
sub_0804B50C: @ 0x0804B50C
movs r0, #1
bx lr
thumb_func_start sub_0804B510
sub_0804B510: @ 0x0804B510
push {lr}
movs r0, #0x1e
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B51C
sub_0804B51C: @ 0x0804B51C
push {lr}
movs r0, #0x1e
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B528
sub_0804B528: @ 0x0804B528
movs r0, #1
bx lr
thumb_func_start sub_0804B52C
sub_0804B52C: @ 0x0804B52C
push {lr}
movs r0, #0x21
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B538
sub_0804B538: @ 0x0804B538
push {lr}
movs r0, #0x21
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B544
sub_0804B544: @ 0x0804B544
movs r0, #1
bx lr
thumb_func_start sub_0804B548
sub_0804B548: @ 0x0804B548
push {lr}
movs r0, #0x1f
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B554
sub_0804B554: @ 0x0804B554
push {lr}
movs r0, #0x1f
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B560
sub_0804B560: @ 0x0804B560
movs r0, #1
bx lr
thumb_func_start sub_0804B564
sub_0804B564: @ 0x0804B564
push {lr}
movs r0, #0x20
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B570
sub_0804B570: @ 0x0804B570
push {lr}
movs r0, #0x20
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B57C
sub_0804B57C: @ 0x0804B57C
movs r0, #1
bx lr
thumb_func_start sub_0804B580
sub_0804B580: @ 0x0804B580
push {lr}
movs r0, #0x20
bl sub_080575C8
ldr r0, _0804B5A0 @ =gLinkEntity
movs r1, #0x32
ldrsh r0, [r0, r1]
ldr r1, _0804B5A4 @ =gRoomControls
ldrh r1, [r1, #8]
subs r0, r0, r1
cmp r0, #0x40
ble _0804B59E
ldr r0, _0804B5A8 @ =gUnk_080D6138
bl LoadRoomEntityList
_0804B59E:
pop {pc}
.align 2, 0
_0804B5A0: .4byte gLinkEntity
_0804B5A4: .4byte gRoomControls
_0804B5A8: .4byte gUnk_080D6138
thumb_func_start sub_0804B5AC
sub_0804B5AC: @ 0x0804B5AC
push {lr}
movs r0, #0x20
bl sub_080575C8
pop {pc}
.align 2, 0
thumb_func_start sub_0804B5B8
sub_0804B5B8: @ 0x0804B5B8
movs r0, #1
bx lr
thumb_func_start sub_0804B5BC
sub_0804B5BC: @ 0x0804B5BC
push {lr}
ldr r0, _0804B5D0 @ =gUnk_030010A0
ldrh r0, [r0, #0x12]
cmp r0, #0x40
bls _0804B5CC
ldr r0, _0804B5D4 @ =gUnk_080D6210
bl LoadRoomEntityList
_0804B5CC:
pop {pc}
.align 2, 0
_0804B5D0: .4byte gUnk_030010A0
_0804B5D4: .4byte gUnk_080D6210
thumb_func_start sub_0804B5D8
sub_0804B5D8: @ 0x0804B5D8
movs r0, #1
bx lr
thumb_func_start sub_0804B5DC
sub_0804B5DC: @ 0x0804B5DC
push {r4, r5, r6, lr}
movs r0, #0x2c
bl CheckKinstoneFused
cmp r0, #0
beq _0804B5EE
ldr r0, _0804B618 @ =gUnk_080D6340
bl LoadRoomEntityList
_0804B5EE:
movs r6, #0
ldr r4, _0804B61C @ =gUnk_080D64F8
movs r5, #7
_0804B5F4:
ldrh r0, [r4]
adds r4, #2
bl GetInventoryValue
cmp r0, #0
beq _0804B602
adds r6, #1
_0804B602:
subs r5, #1
cmp r5, #0
bge _0804B5F4
movs r0, #0x8b
bl CheckLocalFlag
cmp r0, #0
beq _0804B648
ldr r4, _0804B620 @ =gUnk_080D6508
movs r5, #0
b _0804B628
.align 2, 0
_0804B618: .4byte gUnk_080D6340
_0804B61C: .4byte gUnk_080D64F8
_0804B620: .4byte gUnk_080D6508
_0804B624:
adds r5, #1
adds r4, #2
_0804B628:
cmp r5, r6
bge _0804B648
ldrh r0, [r4]
bl CheckLocalFlag
cmp r0, #0
bne _0804B624
ldrh r0, [r4]
bl SetLocalFlag
movs r0, #0x8b
bl ClearLocalFlag
movs r0, #0x8c
bl SetLocalFlag
_0804B648:
movs r0, #0x1f
bl CheckLocalFlag
cmp r0, #0
beq _0804B658
ldr r0, _0804B6CC @ =gUnk_080D6360
bl LoadRoomEntityList
_0804B658:
movs r0, #0x20
bl CheckLocalFlag
cmp r0, #0
beq _0804B668
ldr r0, _0804B6D0 @ =gUnk_080D6380
bl LoadRoomEntityList
_0804B668:
movs r0, #0x21
bl CheckLocalFlag
cmp r0, #0
beq _0804B678
ldr r0, _0804B6D4 @ =gUnk_080D63A0
bl LoadRoomEntityList
_0804B678:
movs r0, #0x22
bl CheckLocalFlag
cmp r0, #0
beq _0804B688
ldr r0, _0804B6D8 @ =gUnk_080D63C0
bl LoadRoomEntityList
_0804B688:
movs r0, #0x23
bl CheckLocalFlag
cmp r0, #0
beq _0804B698
ldr r0, _0804B6DC @ =gUnk_080D63E0
bl LoadRoomEntityList
_0804B698:
movs r0, #0x24
bl CheckLocalFlag
cmp r0, #0
beq _0804B6A8
ldr r0, _0804B6E0 @ =gUnk_080D6400
bl LoadRoomEntityList
_0804B6A8:
movs r0, #0x25
bl CheckLocalFlag
cmp r0, #0
beq _0804B6B8
ldr r0, _0804B6E4 @ =gUnk_080D6420
bl LoadRoomEntityList
_0804B6B8:
movs r0, #0x26
bl CheckLocalFlag
cmp r0, #0
beq _0804B6C8
ldr r0, _0804B6E8 @ =gUnk_080D6440
bl LoadRoomEntityList
_0804B6C8:
pop {r4, r5, r6, pc}
.align 2, 0
_0804B6CC: .4byte gUnk_080D6360
_0804B6D0: .4byte gUnk_080D6380
_0804B6D4: .4byte gUnk_080D63A0
_0804B6D8: .4byte gUnk_080D63C0
_0804B6DC: .4byte gUnk_080D63E0
_0804B6E0: .4byte gUnk_080D6400
_0804B6E4: .4byte gUnk_080D6420
_0804B6E8: .4byte gUnk_080D6440
thumb_func_start sub_0804B6EC
sub_0804B6EC: @ 0x0804B6EC
movs r0, #1
bx lr
thumb_func_start sub_0804B6F0
sub_0804B6F0: @ 0x0804B6F0
push {lr}
movs r0, #0x46
bl GetInventoryValue
cmp r0, #0
bne _0804B71C
ldr r0, _0804B714 @ =gUnk_080D6578
bl LoadRoomEntityList
movs r0, #0x73
bl CheckLocalFlag
cmp r0, #0
bne _0804B722
ldr r0, _0804B718 @ =gUnk_080D6638
bl LoadRoomEntityList
b _0804B728
.align 2, 0
_0804B714: .4byte gUnk_080D6578
_0804B718: .4byte gUnk_080D6638
_0804B71C:
ldr r0, _0804B72C @ =gUnk_080D6558
bl LoadRoomEntityList
_0804B722:
ldr r0, _0804B730 @ =gUnk_080D6618
bl LoadRoomEntityList
_0804B728:
pop {pc}
.align 2, 0
_0804B72C: .4byte gUnk_080D6558
_0804B730: .4byte gUnk_080D6618
thumb_func_start sub_0804B734
sub_0804B734: @ 0x0804B734
movs r0, #1
bx lr
thumb_func_start sub_0804B738
sub_0804B738: @ 0x0804B738
push {lr}
ldr r0, _0804B770 @ =gUnk_02002A40
ldrb r0, [r0, #8]
cmp r0, #4
bls _0804B748
ldr r0, _0804B774 @ =gUnk_080D6714
bl LoadRoomEntityList
_0804B748:
movs r0, #0x46
bl GetInventoryValue
cmp r0, #0
bne _0804B77C
movs r0, #0x29
bl CheckGlobalFlag
cmp r0, #0
beq _0804B77C
movs r0, #0x6a
bl CheckLocalFlag
cmp r0, #0
beq _0804B77C
ldr r0, _0804B778 @ =gUnk_080D6734
bl LoadRoomEntityList
b _0804B782
.align 2, 0
_0804B770: .4byte gUnk_02002A40
_0804B774: .4byte gUnk_080D6714
_0804B778: .4byte gUnk_080D6734
_0804B77C:
ldr r0, _0804B784 @ =gUnk_080D66F4
bl LoadRoomEntityList
_0804B782:
pop {pc}
.align 2, 0
_0804B784: .4byte gUnk_080D66F4
thumb_func_start sub_0804B788
sub_0804B788: @ 0x0804B788
movs r0, #1
bx lr
thumb_func_start sub_0804B78C
sub_0804B78C: @ 0x0804B78C
push {lr}
ldr r0, _0804B7A0 @ =gUnk_02002A40
ldrb r0, [r0, #8]
cmp r0, #7
bls _0804B79C
ldr r0, _0804B7A4 @ =gUnk_080D6924
bl LoadRoomEntityList
_0804B79C:
pop {pc}
.align 2, 0
_0804B7A0: .4byte gUnk_02002A40
_0804B7A4: .4byte gUnk_080D6924
thumb_func_start sub_0804B7A8
sub_0804B7A8: @ 0x0804B7A8
push {r4, lr}
movs r0, #0x91
bl CheckLocalFlag
cmp r0, #0
beq _0804B7C8
bl Random
movs r1, #3
bl __modsi3
adds r4, r0, #0
movs r0, #1
bl ClearLocalFlag
b _0804B7D0
_0804B7C8:
movs r4, #0
movs r0, #1
bl SetLocalFlag
_0804B7D0:
ldr r2, _0804B7E0 @ =gRoomVars
ldr r1, _0804B7E4 @ =gUnk_080D6A74
lsls r0, r4, #2
adds r0, r0, r1
ldr r0, [r0]
str r0, [r2, #0x78]
movs r0, #1
pop {r4, pc}
.align 2, 0
_0804B7E0: .4byte gRoomVars
_0804B7E4: .4byte gUnk_080D6A74
thumb_func_start sub_0804B7E8
sub_0804B7E8: @ 0x0804B7E8
push {lr}
movs r0, #0x91
bl CheckLocalFlag
cmp r0, #0
beq _0804B81E
movs r0, #0x91
bl ClearLocalFlag
movs r1, #0x80
lsls r1, r1, #1
movs r0, #5
bl DoFade
ldr r2, _0804B820 @ =gLinkEntity
ldr r1, _0804B824 @ =gRoomControls
ldrh r0, [r1, #6]
adds r0, #0x50
strh r0, [r2, #0x2e]
ldrh r0, [r1, #8]
adds r0, #0x38
strh r0, [r2, #0x32]
ldr r2, _0804B828 @ =gUnk_08010A5C
movs r0, #1
movs r1, #2
bl sub_080751E8
_0804B81E:
pop {pc}
.align 2, 0
_0804B820: .4byte gLinkEntity
_0804B824: .4byte gRoomControls
_0804B828: .4byte gUnk_08010A5C
thumb_func_start sub_0804B82C
sub_0804B82C: @ 0x0804B82C
push {r4, lr}
movs r0, #0x91
bl CheckLocalFlag
cmp r0, #0
beq _0804B84A
bl Random
adds r4, r0, #0
movs r0, #1
ands r4, r0
movs r0, #2
bl ClearLocalFlag
b _0804B852
_0804B84A:
movs r4, #0
movs r0, #2
bl SetLocalFlag
_0804B852:
ldr r2, _0804B864 @ =gRoomVars
ldr r1, _0804B868 @ =gUnk_080D6B18
lsls r0, r4, #2
adds r0, r0, r1
ldr r0, [r0]
str r0, [r2, #0x78]
movs r0, #1
pop {r4, pc}
.align 2, 0
_0804B864: .4byte gRoomVars
_0804B868: .4byte gUnk_080D6B18
thumb_func_start sub_0804B86C
sub_0804B86C: @ 0x0804B86C
push {lr}
movs r0, #0x91
bl CheckLocalFlag
cmp r0, #0
beq _0804B8A2
movs r0, #0x91
bl ClearLocalFlag
movs r1, #0x80
lsls r1, r1, #1
movs r0, #5
bl DoFade
ldr r2, _0804B8A4 @ =gLinkEntity
ldr r1, _0804B8A8 @ =gRoomControls
ldrh r0, [r1, #6]
adds r0, #0x50
strh r0, [r2, #0x2e]
ldrh r0, [r1, #8]
adds r0, #0x38
strh r0, [r2, #0x32]
ldr r2, _0804B8AC @ =gUnk_08010A5C
movs r0, #1
movs r1, #2
bl sub_080751E8
_0804B8A2:
pop {pc}
.align 2, 0
_0804B8A4: .4byte gLinkEntity
_0804B8A8: .4byte gRoomControls
_0804B8AC: .4byte gUnk_08010A5C
thumb_func_start sub_0804B8B0
sub_0804B8B0: @ 0x0804B8B0
push {r4, lr}
movs r0, #0x91
bl CheckLocalFlag
cmp r0, #0
beq _0804B8D0
bl Random
movs r1, #3
bl __modsi3
adds r4, r0, #0
movs r0, #3
bl ClearLocalFlag
b _0804B8D8
_0804B8D0:
movs r4, #0
movs r0, #3
bl SetLocalFlag
_0804B8D8:
ldr r2, _0804B8E8 @ =gRoomVars
ldr r1, _0804B8EC @ =gUnk_080D6BB8
lsls r0, r4, #2
adds r0, r0, r1
ldr r0, [r0]
str r0, [r2, #0x78]
movs r0, #1
pop {r4, pc}
.align 2, 0
_0804B8E8: .4byte gRoomVars
_0804B8EC: .4byte gUnk_080D6BB8
thumb_func_start sub_0804B8F0
sub_0804B8F0: @ 0x0804B8F0
push {lr}
movs r0, #0x91
bl CheckLocalFlag
cmp r0, #0
beq _0804B926
movs r0, #0x91
bl ClearLocalFlag
movs r1, #0x80
lsls r1, r1, #1
movs r0, #5
bl DoFade
ldr r2, _0804B928 @ =gLinkEntity
ldr r1, _0804B92C @ =gRoomControls
ldrh r0, [r1, #6]
adds r0, #0x60
strh r0, [r2, #0x2e]
ldrh r0, [r1, #8]
adds r0, #0x38
strh r0, [r2, #0x32]
ldr r2, _0804B930 @ =gUnk_08010A5C
movs r0, #1
movs r1, #2
bl sub_080751E8
_0804B926:
pop {pc}
.align 2, 0
_0804B928: .4byte gLinkEntity
_0804B92C: .4byte gRoomControls
_0804B930: .4byte gUnk_08010A5C
thumb_func_start sub_0804B934
sub_0804B934: @ 0x0804B934
movs r0, #1
bx lr

View File

@ -106,4 +106,10 @@ extern void sub_080AD918(void);
extern void sub_0801E104(void);
extern void MenuFadeIn(u32, u32);
extern void sub_080A57F4(void);
extern void sub_0804B29C(u32);
extern void sub_08030118(u32);
extern void sub_080575C8(u32);
extern void sub_08057688(void);
extern void sub_080580B0(u32);
extern void sub_080751E8(u32, u32, void*);
#endif

View File

@ -44,6 +44,8 @@ typedef struct {
u8 filler4[48];
u8 filler5[28];
u32 greatFairyState;
u8 field_0x68[9];
u32 field_0x78;
} RoomVars;
//Packets used to store which entities to load in a room

View File

@ -441,6 +441,7 @@ SECTIONS {
src/sub_0804AFF4.o(.text);
src/loadRoom.o(.text);
asm/code_0804B058.o(.text);
src/room.o(.text);
asm/upperInn.o(.text);
asm/code_0804B9F8.o(.text);
src/sub_08050008.o(.text);
@ -661,7 +662,7 @@ SECTIONS {
asm/code_0807CAA0.o(.text);
src/flags.o(.text);
asm/code_0807CC3C.o(.text);
src/room.o(.text);
src/code_0808091C.o(.text);
/* objects */
asm/itemOnGround.o(.text);
asm/deathFx.o(.text);

50
src/code_0808091C.c Normal file
View File

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

View File

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