mirror of
https://github.com/zeldaret/tmc
synced 2026-06-06 19:51:53 -04:00
Merge remote-tracking branch 'upstream/master' into enumasm
This commit is contained in:
-946
@@ -1,946 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_08018500
|
||||
sub_08018500: @ 0x08018500
|
||||
push {r4, lr}
|
||||
ldr r4, _08018550 @ =gUnk_02033AB8
|
||||
adds r3, r4, #4
|
||||
ldr r0, _08018554 @ =gUnk_080B3D14
|
||||
ldrb r1, [r4]
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r0
|
||||
ldrb r2, [r4, #1]
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r2
|
||||
ldrh r1, [r1]
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
_0801851A:
|
||||
strh r0, [r3]
|
||||
adds r0, #1
|
||||
adds r3, #2
|
||||
adds r2, #1
|
||||
cmp r2, #2
|
||||
bls _0801851A
|
||||
ldrb r1, [r4]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, _08018558 @ =0x00000C81
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
adds r1, r4, #0
|
||||
adds r1, #0xa
|
||||
_08018536:
|
||||
strh r0, [r3]
|
||||
adds r0, #1
|
||||
adds r3, #2
|
||||
adds r2, #1
|
||||
cmp r2, #4
|
||||
bls _08018536
|
||||
movs r0, #5
|
||||
bl sub_08018690
|
||||
movs r0, #0
|
||||
strb r0, [r4, #2]
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08018550: .4byte gUnk_02033AB8
|
||||
_08018554: .4byte gUnk_080B3D14
|
||||
_08018558: .4byte 0x00000C81
|
||||
|
||||
thumb_func_start sub_0801855C
|
||||
sub_0801855C: @ 0x0801855C
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r4, _08018570 @ =gUnk_02033AB8
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x14
|
||||
bl MemClear
|
||||
adds r5, r4, #0
|
||||
ldr r4, _08018574 @ =gUnk_080B3D20
|
||||
movs r6, #0
|
||||
b _0801858C
|
||||
.align 2, 0
|
||||
_08018570: .4byte gUnk_02033AB8
|
||||
_08018574: .4byte gUnk_080B3D20
|
||||
_08018578:
|
||||
adds r0, r4, #0
|
||||
bl sub_080185B4
|
||||
cmp r0, #0
|
||||
beq _08018584
|
||||
ldrb r6, [r5, #3]
|
||||
_08018584:
|
||||
ldrb r0, [r5, #3]
|
||||
adds r0, #1
|
||||
strb r0, [r5, #3]
|
||||
adds r4, #4
|
||||
_0801858C:
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #0xff
|
||||
bne _08018578
|
||||
strb r6, [r5, #3]
|
||||
ldrb r0, [r5, #3]
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _080185B0 @ =gUnk_080B3D20
|
||||
adds r4, r0, r1
|
||||
ldrb r0, [r4, #2]
|
||||
strb r0, [r5]
|
||||
ldrb r0, [r4, #3]
|
||||
strb r0, [r5, #1]
|
||||
adds r0, r6, #1
|
||||
strb r0, [r5, #3]
|
||||
bl sub_08018500
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_080185B0: .4byte gUnk_080B3D20
|
||||
|
||||
thumb_func_start sub_080185B4
|
||||
sub_080185B4: @ 0x080185B4
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #0xff
|
||||
bne _080185C2
|
||||
movs r0, #0
|
||||
b _080185F6
|
||||
_080185C2:
|
||||
cmp r0, #0xfe
|
||||
bne _080185D4
|
||||
ldrb r0, [r2, #1]
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
beq _080185F6
|
||||
movs r0, #1
|
||||
b _080185F6
|
||||
_080185D4:
|
||||
cmp r0, #0xfd
|
||||
beq _080185F0
|
||||
ldr r1, _080185EC @ =gLocalFlagBanks
|
||||
ldrb r0, [r2]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
ldrb r1, [r2, #1]
|
||||
bl CheckLocalFlagByBank
|
||||
b _080185F6
|
||||
.align 2, 0
|
||||
_080185EC: .4byte gLocalFlagBanks
|
||||
_080185F0:
|
||||
ldrb r0, [r2, #1]
|
||||
bl CheckKinstoneFused
|
||||
_080185F6:
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_080185F8
|
||||
sub_080185F8: @ 0x080185F8
|
||||
push {r4, r5, lr}
|
||||
ldr r5, _08018624 @ =gUnk_02033AB8
|
||||
ldrb r0, [r5, #3]
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08018628 @ =gUnk_080B3D20
|
||||
adds r4, r0, r1
|
||||
adds r0, r4, #0
|
||||
bl sub_080185B4
|
||||
cmp r0, #0
|
||||
beq _08018620
|
||||
ldrb r0, [r4, #2]
|
||||
strb r0, [r5]
|
||||
ldrb r0, [r4, #3]
|
||||
strb r0, [r5, #1]
|
||||
ldrb r0, [r5, #3]
|
||||
adds r0, #1
|
||||
strb r0, [r5, #3]
|
||||
bl sub_08018500
|
||||
_08018620:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08018624: .4byte gUnk_02033AB8
|
||||
_08018628: .4byte gUnk_080B3D20
|
||||
|
||||
thumb_func_start GenerateAreaHint
|
||||
GenerateAreaHint: @ 0x0801862C
|
||||
push {r4, r5, lr}
|
||||
ldr r1, _0801864C @ =gPlayerState
|
||||
movs r2, #0
|
||||
movs r0, #0x16
|
||||
strb r0, [r1, #0xc]
|
||||
ldr r5, _08018650 @ =gRoomTransition
|
||||
adds r0, r5, #0
|
||||
.ifdef JP
|
||||
adds r0, #0x34
|
||||
.else
|
||||
.ifdef EU
|
||||
adds r0, #0x34
|
||||
.else
|
||||
adds r0, #0x35
|
||||
.endif
|
||||
.endif
|
||||
strb r2, [r0]
|
||||
ldr r4, _08018654 @ =gUnk_02033AB8
|
||||
ldrb r0, [r4]
|
||||
cmp r0, #0xff
|
||||
bne _08018658
|
||||
ldrh r0, [r4, #4]
|
||||
strh r0, [r5, #0x36]
|
||||
b _0801868C
|
||||
.align 2, 0
|
||||
_0801864C: .4byte gPlayerState
|
||||
_08018650: .4byte gRoomTransition
|
||||
_08018654: .4byte gUnk_02033AB8
|
||||
_08018658:
|
||||
ldrb r0, [r4, #2]
|
||||
lsls r0, r0, #1
|
||||
adds r1, r4, #4
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r5, #0x36]
|
||||
ldrb r0, [r4, #2]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #2]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #7
|
||||
bls _0801868C
|
||||
movs r0, #0
|
||||
strb r0, [r4, #2]
|
||||
movs r0, #8
|
||||
bl sub_08018690
|
||||
ldrh r0, [r4, #4]
|
||||
ldrh r5, [r5, #0x36]
|
||||
cmp r0, r5
|
||||
bne _0801868C
|
||||
adds r1, r0, #0
|
||||
ldrh r0, [r4, #0x12]
|
||||
strh r0, [r4, #4]
|
||||
strh r1, [r4, #0x12]
|
||||
_0801868C:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08018690
|
||||
sub_08018690: @ 0x08018690
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r1, #0
|
||||
subs r4, r0, #1
|
||||
cmp r4, #0
|
||||
beq _080186BC
|
||||
lsls r0, r4, #1
|
||||
adds r5, r0, r6
|
||||
_0801869E:
|
||||
bl Random
|
||||
adds r1, r4, #1
|
||||
bl __modsi3
|
||||
ldrh r2, [r5]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r6
|
||||
ldrh r1, [r0]
|
||||
strh r1, [r5]
|
||||
strh r2, [r0]
|
||||
subs r5, #2
|
||||
subs r4, #1
|
||||
cmp r4, #0
|
||||
bne _0801869E
|
||||
_080186BC:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_080186C0
|
||||
sub_080186C0: @ 0x080186C0
|
||||
ldr r3, _080186D0 @ =gArea
|
||||
adds r2, r3, #0
|
||||
adds r2, #0x28
|
||||
movs r1, #0xff
|
||||
strb r1, [r2]
|
||||
strh r0, [r3, #0x2c]
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080186D0: .4byte gArea
|
||||
|
||||
thumb_func_start sub_080186D4
|
||||
sub_080186D4: @ 0x080186D4
|
||||
push {lr}
|
||||
ldr r0, _080186E8 @ =gArea
|
||||
adds r0, #0x28
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0xff
|
||||
bne _080186E4
|
||||
bl sub_0801855C
|
||||
_080186E4:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080186E8: .4byte gArea
|
||||
|
||||
thumb_func_start sub_080186EC
|
||||
sub_080186EC: @ 0x080186EC
|
||||
push {r4, r5, lr}
|
||||
movs r5, #0
|
||||
ldr r4, _0801870C @ =gUnk_080C9CBC
|
||||
_080186F2:
|
||||
ldrb r0, [r4, #3]
|
||||
cmp r0, #8
|
||||
bne _08018700
|
||||
ldrb r1, [r4, #4]
|
||||
adds r0, r5, #0
|
||||
bl sub_08018738
|
||||
_08018700:
|
||||
adds r4, #8
|
||||
adds r5, #1
|
||||
cmp r5, #0x64
|
||||
bls _080186F2
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_0801870C: .4byte gUnk_080C9CBC
|
||||
|
||||
thumb_func_start sub_08018710
|
||||
sub_08018710: @ 0x08018710
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
movs r5, #0
|
||||
ldr r4, _08018734 @ =gUnk_080C9CBC
|
||||
_08018718:
|
||||
ldrb r0, [r4, #3]
|
||||
cmp r0, #8
|
||||
bne _0801872A
|
||||
ldrb r1, [r4, #4]
|
||||
cmp r6, r1
|
||||
beq _0801872A
|
||||
adds r0, r5, #0
|
||||
bl sub_08018738
|
||||
_0801872A:
|
||||
adds r4, #8
|
||||
adds r5, #1
|
||||
cmp r5, #0x64
|
||||
bls _08018718
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08018734: .4byte gUnk_080C9CBC
|
||||
|
||||
thumb_func_start sub_08018738
|
||||
sub_08018738: @ 0x08018738
|
||||
push {r4, lr}
|
||||
adds r2, r0, #0
|
||||
adds r4, r1, #0
|
||||
lsls r0, r4, #2
|
||||
adds r0, r0, r4
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08018764 @ =gUnk_080FE320
|
||||
adds r0, r0, r1
|
||||
ldr r1, _08018768 @ =gRoomControls
|
||||
ldrh r0, [r0, #2]
|
||||
ldrh r1, [r1, #4]
|
||||
cmp r0, r1
|
||||
bne _08018760
|
||||
adds r0, r2, #0
|
||||
bl CheckKinstoneFused
|
||||
adds r1, r0, #0
|
||||
adds r0, r4, #0
|
||||
bl sub_0801876C
|
||||
_08018760:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08018764: .4byte gUnk_080FE320
|
||||
_08018768: .4byte gRoomControls
|
||||
|
||||
thumb_func_start sub_0801876C
|
||||
sub_0801876C: @ 0x0801876C
|
||||
push {r4, r5, lr}
|
||||
adds r2, r0, #0
|
||||
adds r4, r1, #0
|
||||
lsls r0, r2, #2
|
||||
adds r0, r0, r2
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08018790 @ =gUnk_080FE320
|
||||
adds r5, r0, r1
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0x1c
|
||||
bls _08018784
|
||||
b _080189E4
|
||||
_08018784:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08018794 @ =_08018798
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08018790: .4byte gUnk_080FE320
|
||||
_08018794: .4byte _08018798
|
||||
_08018798: @ jump table
|
||||
.4byte _080189E4 @ case 0
|
||||
.4byte _08018838 @ case 1
|
||||
.4byte _0801882A @ case 2
|
||||
.4byte _08018858 @ case 3
|
||||
.4byte _08018878 @ case 4
|
||||
.4byte _08018886 @ case 5
|
||||
.4byte _0801880C @ case 6
|
||||
.4byte _08018894 @ case 7
|
||||
.4byte _080188E0 @ case 8
|
||||
.4byte _08018930 @ case 9
|
||||
.4byte _080189E4 @ case 10
|
||||
.4byte _080188FE @ case 11
|
||||
.4byte _080189E4 @ case 12
|
||||
.4byte _080189E4 @ case 13
|
||||
.4byte _080189E4 @ case 14
|
||||
.4byte _080189B4 @ case 15
|
||||
.4byte _080189E4 @ case 16
|
||||
.4byte _080189D0 @ case 17
|
||||
.4byte _080189E4 @ case 18
|
||||
.4byte _080189E4 @ case 19
|
||||
.4byte _080189E4 @ case 20
|
||||
.4byte _080189E4 @ case 21
|
||||
.4byte _080189E4 @ case 22
|
||||
.4byte _080189E4 @ case 23
|
||||
.4byte _080189A4 @ case 24
|
||||
.4byte _080188B8 @ case 25
|
||||
.4byte _080189E4 @ case 26
|
||||
.4byte _080189E4 @ case 27
|
||||
.4byte _080189E4 @ case 28
|
||||
_0801880C:
|
||||
cmp r4, #0
|
||||
beq _08018812
|
||||
b _080189E4
|
||||
_08018812:
|
||||
ldrh r0, [r5, #8]
|
||||
lsrs r0, r0, #4
|
||||
movs r2, #0x3f
|
||||
ands r0, r2
|
||||
ldrh r1, [r5, #0xa]
|
||||
lsrs r1, r1, #4
|
||||
ands r1, r2
|
||||
lsls r1, r1, #6
|
||||
orrs r0, r1
|
||||
bl sub_08018AB4
|
||||
b _080189E4
|
||||
_0801882A:
|
||||
cmp r4, #0
|
||||
bne _08018830
|
||||
b _080189E4
|
||||
_08018830:
|
||||
adds r0, r2, #0
|
||||
bl sub_08018BB4
|
||||
b _080189E4
|
||||
_08018838:
|
||||
cmp r4, #0
|
||||
bne _0801883E
|
||||
b _080189E4
|
||||
_0801883E:
|
||||
ldrh r0, [r5, #0x12]
|
||||
bl CheckGlobalFlag
|
||||
cmp r0, #0
|
||||
beq _0801884A
|
||||
b _080189E4
|
||||
_0801884A:
|
||||
ldrb r0, [r5, #1]
|
||||
lsls r0, r0, #4
|
||||
ldr r1, _08018854 @ =gUnk_080FEC28
|
||||
b _080188A4
|
||||
.align 2, 0
|
||||
_08018854: .4byte gUnk_080FEC28
|
||||
_08018858:
|
||||
cmp r4, #0
|
||||
bne _0801885E
|
||||
b _080189E4
|
||||
_0801885E:
|
||||
ldrh r0, [r5, #0x12]
|
||||
bl GetInventoryValue
|
||||
cmp r0, #0
|
||||
beq _0801886A
|
||||
b _080189E4
|
||||
_0801886A:
|
||||
ldrb r0, [r5, #1]
|
||||
lsls r0, r0, #4
|
||||
ldr r1, _08018874 @ =gUnk_080FEBE8
|
||||
b _080188A4
|
||||
.align 2, 0
|
||||
_08018874: .4byte gUnk_080FEBE8
|
||||
_08018878:
|
||||
cmp r4, #0
|
||||
beq _0801887E
|
||||
b _080189E4
|
||||
_0801887E:
|
||||
adds r0, r2, #0
|
||||
bl sub_08018A58
|
||||
b _080189E4
|
||||
_08018886:
|
||||
cmp r4, #0
|
||||
bne _0801888C
|
||||
b _080189E4
|
||||
_0801888C:
|
||||
adds r0, r2, #0
|
||||
bl sub_08018B50
|
||||
b _080189E4
|
||||
_08018894:
|
||||
cmp r4, #0
|
||||
beq _0801889A
|
||||
b _080189E4
|
||||
_0801889A:
|
||||
ldrb r0, [r5, #1]
|
||||
cmp r0, #0x80
|
||||
beq _080188B0
|
||||
lsls r0, r0, #4
|
||||
ldr r1, _080188AC @ =gUnk_080FECC8
|
||||
_080188A4:
|
||||
adds r0, r0, r1
|
||||
bl LoadRoomEntity
|
||||
b _080189E4
|
||||
.align 2, 0
|
||||
_080188AC: .4byte gUnk_080FECC8
|
||||
_080188B0:
|
||||
adds r0, r2, #0
|
||||
bl sub_080189EC
|
||||
b _080189E4
|
||||
_080188B8:
|
||||
ldrb r0, [r5, #1]
|
||||
lsls r0, r0, #4
|
||||
ldr r1, _080188DC @ =gUnk_080FED18
|
||||
adds r0, r0, r1
|
||||
bl LoadRoomEntity
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
bne _080188CC
|
||||
b _080189E4
|
||||
_080188CC:
|
||||
rsbs r0, r4, #0
|
||||
orrs r0, r4
|
||||
asrs r0, r0, #0x1f
|
||||
movs r1, #2
|
||||
ands r0, r1
|
||||
strb r0, [r2, #0xa]
|
||||
b _080189E4
|
||||
.align 2, 0
|
||||
_080188DC: .4byte gUnk_080FED18
|
||||
_080188E0:
|
||||
cmp r4, #0
|
||||
bne _080188E6
|
||||
b _080189E4
|
||||
_080188E6:
|
||||
movs r0, #0xb4
|
||||
lsls r0, r0, #1
|
||||
ldrh r1, [r5, #8]
|
||||
lsrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
ldrh r2, [r5, #0xa]
|
||||
lsrs r2, r2, #4
|
||||
ands r2, r3
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
b _0801899C
|
||||
_080188FE:
|
||||
cmp r4, #0
|
||||
beq _080189E4
|
||||
ldrb r0, [r5, #1]
|
||||
lsls r0, r0, #4
|
||||
ldr r1, _08018924 @ =gUnk_080FED58
|
||||
adds r0, r0, r1
|
||||
bl LoadRoomEntity
|
||||
ldr r2, _08018928 @ =gRoomVars
|
||||
ldrb r0, [r5, #1]
|
||||
lsls r0, r0, #2
|
||||
adds r2, #0x8c
|
||||
adds r2, r0, r2
|
||||
ldr r1, _0801892C @ =gUnk_080FED98
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
str r0, [r2]
|
||||
b _080189E4
|
||||
.align 2, 0
|
||||
_08018924: .4byte gUnk_080FED58
|
||||
_08018928: .4byte gRoomVars
|
||||
_0801892C: .4byte gUnk_080FED98
|
||||
_08018930:
|
||||
cmp r4, #0
|
||||
beq _080189E4
|
||||
ldrb r0, [r5, #1]
|
||||
lsls r0, r0, #4
|
||||
ldr r1, _08018974 @ =gUnk_080FEE78
|
||||
adds r0, r0, r1
|
||||
bl LoadRoomEntity
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _08018958
|
||||
ldr r0, _08018978 @ =gRoomControls
|
||||
ldrh r1, [r0, #6]
|
||||
ldrh r3, [r5, #8]
|
||||
adds r1, r1, r3
|
||||
strh r1, [r2, #0x38]
|
||||
ldrh r0, [r0, #8]
|
||||
ldrh r1, [r5, #0xa]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r2, #0x3a]
|
||||
_08018958:
|
||||
ldrb r0, [r5, #1]
|
||||
cmp r0, #0
|
||||
bne _0801897C
|
||||
ldrh r1, [r5, #8]
|
||||
lsrs r1, r1, #4
|
||||
movs r2, #0x3f
|
||||
ands r1, r2
|
||||
ldrh r0, [r5, #0xa]
|
||||
lsrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
movs r0, #0x8d
|
||||
b _0801899C
|
||||
.align 2, 0
|
||||
_08018974: .4byte gUnk_080FEE78
|
||||
_08018978: .4byte gRoomControls
|
||||
_0801897C:
|
||||
ldrh r4, [r5, #8]
|
||||
lsrs r4, r4, #4
|
||||
movs r1, #0x3f
|
||||
ands r4, r1
|
||||
ldrh r0, [r5, #0xa]
|
||||
lsrs r0, r0, #4
|
||||
ands r0, r1
|
||||
lsls r0, r0, #6
|
||||
orrs r4, r0
|
||||
subs r1, r4, #1
|
||||
movs r0, #0x8c
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
movs r0, #0x8e
|
||||
adds r1, r4, #0
|
||||
_0801899C:
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
b _080189E4
|
||||
_080189A4:
|
||||
cmp r4, #0
|
||||
beq _080189E4
|
||||
ldr r0, _080189B0 @ =gUnk_080FEE18
|
||||
bl LoadRoomEntityList
|
||||
b _080189E4
|
||||
.align 2, 0
|
||||
_080189B0: .4byte gUnk_080FEE18
|
||||
_080189B4:
|
||||
cmp r4, #0
|
||||
beq _080189C4
|
||||
ldr r0, _080189C0 @ =gUnk_080FEE58
|
||||
bl LoadRoomEntity
|
||||
b _080189E4
|
||||
.align 2, 0
|
||||
_080189C0: .4byte gUnk_080FEE58
|
||||
_080189C4:
|
||||
ldr r0, _080189CC @ =gUnk_080FEE48
|
||||
bl LoadRoomEntity
|
||||
b _080189E4
|
||||
.align 2, 0
|
||||
_080189CC: .4byte gUnk_080FEE48
|
||||
_080189D0:
|
||||
cmp r4, #0
|
||||
beq _080189E4
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
.ifdef JP
|
||||
movs r1, #0x77
|
||||
.else
|
||||
.ifdef EU
|
||||
movs r1, #0x77
|
||||
.else
|
||||
.ifdef DEMO_JP
|
||||
movs r1, #0x77 @ TODO deduplicate
|
||||
.else
|
||||
movs r1, #0x79
|
||||
.endif
|
||||
.endif
|
||||
.endif
|
||||
bl SetLocalFlagByBank
|
||||
ldr r0, _080189E8 @ =gUnk_080FEE38
|
||||
bl LoadRoomEntityList
|
||||
_080189E4:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080189E8: .4byte gUnk_080FEE38
|
||||
|
||||
thumb_func_start sub_080189EC
|
||||
sub_080189EC: @ 0x080189EC
|
||||
push {r4, r5, r6, lr}
|
||||
lsls r1, r0, #2
|
||||
adds r1, r1, r0
|
||||
lsls r1, r1, #2
|
||||
ldr r0, _08018A48 @ =gUnk_080FE320
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1, #8]
|
||||
lsrs r6, r0, #4
|
||||
movs r2, #0x3f
|
||||
ands r6, r2
|
||||
ldrh r0, [r1, #0xa]
|
||||
lsrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r6, r0
|
||||
subs r6, #0x42
|
||||
movs r5, #0
|
||||
_08018A0E:
|
||||
ldr r1, _08018A4C @ =0x000001DF
|
||||
adds r0, r5, r1
|
||||
adds r1, r6, r5
|
||||
movs r2, #2
|
||||
bl SetTileType
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
bls _08018A0E
|
||||
adds r6, #0x40
|
||||
movs r5, #0
|
||||
_08018A24:
|
||||
ldr r1, _08018A50 @ =0x000001E3
|
||||
adds r0, r5, r1
|
||||
adds r4, r6, r5
|
||||
adds r1, r4, #0
|
||||
movs r2, #2
|
||||
bl SetTileType
|
||||
ldr r1, _08018A54 @ =0x000001DB
|
||||
adds r0, r5, r1
|
||||
adds r1, r4, #0
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
bls _08018A24
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08018A48: .4byte gUnk_080FE320
|
||||
_08018A4C: .4byte 0x000001DF
|
||||
_08018A50: .4byte 0x000001E3
|
||||
_08018A54: .4byte 0x000001DB
|
||||
|
||||
thumb_func_start sub_08018A58
|
||||
sub_08018A58: @ 0x08018A58
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
lsls r1, r0, #2
|
||||
adds r1, r1, r0
|
||||
lsls r1, r1, #2
|
||||
ldr r0, _08018AAC @ =gUnk_080FE320
|
||||
adds r1, r1, r0
|
||||
ldrh r0, [r1, #8]
|
||||
lsrs r5, r0, #4
|
||||
movs r2, #0x3f
|
||||
ands r5, r2
|
||||
ldrh r0, [r1, #0xa]
|
||||
lsrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r5, r0
|
||||
subs r5, #0x43
|
||||
ldr r6, _08018AB0 @ =0x00000232
|
||||
movs r0, #0
|
||||
_08018A80:
|
||||
movs r4, #0
|
||||
movs r1, #0x40
|
||||
adds r1, r1, r5
|
||||
mov r8, r1
|
||||
adds r7, r0, #1
|
||||
_08018A8A:
|
||||
adds r0, r6, #0
|
||||
adds r6, #1
|
||||
adds r1, r5, r4
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
adds r4, #1
|
||||
cmp r4, #6
|
||||
bls _08018A8A
|
||||
mov r5, r8
|
||||
adds r0, r7, #0
|
||||
cmp r0, #3
|
||||
bls _08018A80
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08018AAC: .4byte gUnk_080FE320
|
||||
_08018AB0: .4byte 0x00000232
|
||||
|
||||
thumb_func_start sub_08018AB4
|
||||
sub_08018AB4: @ 0x08018AB4
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
sub sp, #4
|
||||
adds r5, r0, #0
|
||||
movs r3, #0xf4
|
||||
lsls r3, r3, #1
|
||||
movs r7, #0xfa
|
||||
lsls r7, r7, #1
|
||||
movs r0, #0
|
||||
_08018ACA:
|
||||
movs r6, #0
|
||||
movs r1, #0x40
|
||||
adds r1, r1, r5
|
||||
mov r8, r1
|
||||
adds r0, #1
|
||||
mov sb, r0
|
||||
adds r4, r5, #0
|
||||
subs r4, #0x40
|
||||
_08018ADA:
|
||||
adds r0, r3, #0
|
||||
adds r3, #1
|
||||
adds r1, r5, r6
|
||||
movs r2, #1
|
||||
str r3, [sp]
|
||||
bl SetTileType
|
||||
adds r0, r7, #0
|
||||
adds r7, #1
|
||||
adds r1, r4, #0
|
||||
movs r2, #2
|
||||
bl SetTileType
|
||||
adds r4, #1
|
||||
adds r6, #1
|
||||
ldr r3, [sp]
|
||||
cmp r6, #3
|
||||
bls _08018ADA
|
||||
mov r5, r8
|
||||
mov r0, sb
|
||||
cmp r0, #2
|
||||
bls _08018ACA
|
||||
add sp, #4
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
thumb_func_start sub_08018B10
|
||||
sub_08018B10: @ 0x08018B10
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r6, r0, #0
|
||||
movs r0, #0xf8
|
||||
lsls r0, r0, #1
|
||||
mov r8, r0
|
||||
movs r7, #0xfe
|
||||
lsls r7, r7, #1
|
||||
movs r5, #0
|
||||
adds r4, r6, #0
|
||||
subs r4, #0x40
|
||||
_08018B28:
|
||||
mov r0, r8
|
||||
movs r1, #1
|
||||
add r8, r1
|
||||
adds r1, r6, r5
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
adds r0, r7, #0
|
||||
adds r7, #1
|
||||
adds r1, r4, #0
|
||||
movs r2, #2
|
||||
bl SetTileType
|
||||
adds r4, #1
|
||||
adds r5, #1
|
||||
cmp r5, #3
|
||||
bls _08018B28
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
||||
thumb_func_start sub_08018B50
|
||||
sub_08018B50: @ 0x08018B50
|
||||
push {r4, r5, r6, r7, lr}
|
||||
sub sp, #4
|
||||
lsls r1, r0, #2
|
||||
adds r1, r1, r0
|
||||
lsls r1, r1, #2
|
||||
ldr r0, _08018BAC @ =gUnk_080FE320
|
||||
adds r2, r1, r0
|
||||
ldrb r1, [r2, #1]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
ldr r3, _08018BB0 @ =0x00000219
|
||||
cmp r0, #0
|
||||
bne _08018B6C
|
||||
subs r3, #0x19
|
||||
_08018B6C:
|
||||
ldrh r0, [r2, #8]
|
||||
lsrs r5, r0, #4
|
||||
movs r1, #0x3f
|
||||
ands r5, r1
|
||||
ldrh r0, [r2, #0xa]
|
||||
lsrs r0, r0, #4
|
||||
ands r0, r1
|
||||
lsls r0, r0, #6
|
||||
orrs r5, r0
|
||||
subs r5, #0x82
|
||||
movs r0, #0
|
||||
_08018B82:
|
||||
movs r4, #0
|
||||
adds r6, r5, #0
|
||||
adds r6, #0x40
|
||||
adds r7, r0, #1
|
||||
_08018B8A:
|
||||
adds r0, r3, #0
|
||||
adds r3, #1
|
||||
adds r1, r5, r4
|
||||
movs r2, #1
|
||||
str r3, [sp]
|
||||
bl SetTileType
|
||||
adds r4, #1
|
||||
ldr r3, [sp]
|
||||
cmp r4, #4
|
||||
bls _08018B8A
|
||||
adds r5, r6, #0
|
||||
adds r0, r7, #0
|
||||
cmp r0, #4
|
||||
bls _08018B82
|
||||
add sp, #4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08018BAC: .4byte gUnk_080FE320
|
||||
_08018BB0: .4byte 0x00000219
|
||||
|
||||
thumb_func_start sub_08018BB4
|
||||
sub_08018BB4: @ 0x08018BB4
|
||||
push {r4, r5, lr}
|
||||
sub sp, #8
|
||||
adds r4, r0, #0
|
||||
lsls r0, r4, #3
|
||||
ldr r1, _08018C14 @ =gUnk_080FEAC8
|
||||
adds r0, r0, r1
|
||||
mov r5, sp
|
||||
mov r1, sp
|
||||
movs r2, #8
|
||||
bl MemCopy
|
||||
lsls r0, r4, #2
|
||||
adds r0, r0, r4
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08018C18 @ =gUnk_080FE320
|
||||
adds r0, r0, r1
|
||||
ldrh r1, [r0, #8]
|
||||
lsrs r1, r1, #4
|
||||
movs r2, #0x3f
|
||||
ands r1, r2
|
||||
ldrh r0, [r0, #0xa]
|
||||
lsrs r0, r0, #4
|
||||
ands r0, r2
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
strh r1, [r5, #4]
|
||||
mov r0, sp
|
||||
bl sub_0804B3C4
|
||||
ldrb r0, [r5, #1]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _08018C10
|
||||
ldrh r3, [r5, #4]
|
||||
ldrb r1, [r5, #6]
|
||||
movs r0, #1
|
||||
ands r0, r1
|
||||
movs r2, #2
|
||||
cmp r0, #0
|
||||
bne _08018C08
|
||||
movs r2, #1
|
||||
_08018C08:
|
||||
movs r0, #0x73
|
||||
adds r1, r3, #0
|
||||
bl SetTileType
|
||||
_08018C10:
|
||||
add sp, #8
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08018C14: .4byte gUnk_080FEAC8
|
||||
_08018C18: .4byte gUnk_080FE320
|
||||
@@ -1,129 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
mov r8, r2
|
||||
mov sb, r3
|
||||
movs r7, #0
|
||||
movs r6, #0
|
||||
ldrh r0, [r4, #0x2a]
|
||||
movs r1, #0xe
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
movs r2, #0xe0
|
||||
lsls r2, r2, #8
|
||||
ands r2, r0
|
||||
adds r3, r2, #0
|
||||
cmp r1, #0
|
||||
beq _080AE904
|
||||
cmp r2, #0
|
||||
bne _080AE99E
|
||||
_080AE904:
|
||||
orrs r1, r2
|
||||
cmp r1, #0
|
||||
bne _080AE928
|
||||
ldr r1, _080AE924 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r7, r0, #0
|
||||
muls r7, r5, r7
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
b _080AE98A
|
||||
.align 2, 0
|
||||
_080AE924: .4byte gSineTable
|
||||
_080AE928:
|
||||
mov r2, ip
|
||||
cmp r2, #2
|
||||
bne _080AE942
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
b _080AE95C
|
||||
_080AE942:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #7
|
||||
cmp r3, r0
|
||||
bne _080AE95C
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
_080AE95C:
|
||||
ldrh r2, [r4, #0x2a]
|
||||
movs r0, #0xe
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AE97E
|
||||
ldr r1, _080AE9B4 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r6
|
||||
str r0, [r4, #0x30]
|
||||
_080AE97E:
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #8
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AE99E
|
||||
ldr r1, _080AE9B4 @ =gSineTable
|
||||
_080AE98A:
|
||||
mov r2, r8
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r6
|
||||
str r0, [r4, #0x2c]
|
||||
_080AE99E:
|
||||
ldr r2, _080AE9B8 @ =0x00003333
|
||||
adds r0, r7, r2
|
||||
ldr r1, _080AE9BC @ =0x00006665
|
||||
cmp r0, r1
|
||||
bhi _080AE9C0
|
||||
ldr r2, _080AE9B8 @ =0x00003333
|
||||
adds r0, r6, r2
|
||||
cmp r0, r1
|
||||
bhi _080AE9C0
|
||||
movs r0, #0
|
||||
b _080AE9C2
|
||||
.align 2, 0
|
||||
_080AE9B4: .4byte gSineTable
|
||||
_080AE9B8: .4byte 0x00003333
|
||||
_080AE9BC: .4byte 0x00006665
|
||||
_080AE9C0:
|
||||
movs r0, #1
|
||||
_080AE9C2:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,129 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
mov r8, r2
|
||||
mov sb, r3
|
||||
movs r7, #0
|
||||
movs r6, #0
|
||||
ldrh r0, [r4, #0x2a]
|
||||
movs r1, #0xe
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
movs r2, #0xe0
|
||||
lsls r2, r2, #4
|
||||
ands r2, r0
|
||||
adds r3, r2, #0
|
||||
cmp r1, #0
|
||||
beq _080AEEC0
|
||||
cmp r2, #0
|
||||
bne _080AEF5A
|
||||
_080AEEC0:
|
||||
orrs r1, r2
|
||||
cmp r1, #0
|
||||
bne _080AEEE4
|
||||
ldr r1, _080AEEE0 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r7, r0, #0
|
||||
muls r7, r5, r7
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
b _080AEF46
|
||||
.align 2, 0
|
||||
_080AEEE0: .4byte gSineTable
|
||||
_080AEEE4:
|
||||
mov r2, ip
|
||||
cmp r2, #4
|
||||
bne _080AEEFE
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x2c]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
b _080AEF18
|
||||
_080AEEFE:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #3
|
||||
cmp r3, r0
|
||||
bne _080AEF18
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
_080AEF18:
|
||||
ldrh r2, [r4, #0x2a]
|
||||
movs r0, #0xe
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AEF3A
|
||||
ldr r1, _080AEF70 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r6
|
||||
str r0, [r4, #0x30]
|
||||
_080AEF3A:
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #4
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AEF5A
|
||||
ldr r1, _080AEF70 @ =gSineTable
|
||||
_080AEF46:
|
||||
mov r2, r8
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r6
|
||||
str r0, [r4, #0x2c]
|
||||
_080AEF5A:
|
||||
ldr r2, _080AEF74 @ =0x00003333
|
||||
adds r0, r7, r2
|
||||
ldr r1, _080AEF78 @ =0x00006665
|
||||
cmp r0, r1
|
||||
bhi _080AEF7C
|
||||
ldr r2, _080AEF74 @ =0x00003333
|
||||
adds r0, r6, r2
|
||||
cmp r0, r1
|
||||
bhi _080AEF7C
|
||||
movs r0, #0
|
||||
b _080AEF7E
|
||||
.align 2, 0
|
||||
_080AEF70: .4byte gSineTable
|
||||
_080AEF74: .4byte 0x00003333
|
||||
_080AEF78: .4byte 0x00006665
|
||||
_080AEF7C:
|
||||
movs r0, #1
|
||||
_080AEF7E:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,129 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
mov r8, r2
|
||||
mov sb, r3
|
||||
movs r7, #0
|
||||
movs r6, #0
|
||||
ldrh r0, [r4, #0x2a]
|
||||
movs r1, #0xe0
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
movs r2, #0xe0
|
||||
lsls r2, r2, #8
|
||||
ands r2, r0
|
||||
adds r3, r2, #0
|
||||
cmp r1, #0
|
||||
beq _080AEAEC
|
||||
cmp r2, #0
|
||||
bne _080AEB86
|
||||
_080AEAEC:
|
||||
orrs r1, r2
|
||||
cmp r1, #0
|
||||
bne _080AEB10
|
||||
ldr r1, _080AEB0C @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r7, r0, #0
|
||||
muls r7, r5, r7
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
b _080AEB72
|
||||
.align 2, 0
|
||||
_080AEB0C: .4byte gSineTable
|
||||
_080AEB10:
|
||||
mov r2, ip
|
||||
cmp r2, #0x20
|
||||
bne _080AEB2A
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xc
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
b _080AEB44
|
||||
_080AEB2A:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #6
|
||||
cmp r3, r0
|
||||
bne _080AEB44
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x30]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0xc
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
_080AEB44:
|
||||
ldrh r2, [r4, #0x2a]
|
||||
movs r0, #0xe0
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AEB66
|
||||
ldr r1, _080AEB9C @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r6
|
||||
str r0, [r4, #0x30]
|
||||
_080AEB66:
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #8
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AEB86
|
||||
ldr r1, _080AEB9C @ =gSineTable
|
||||
_080AEB72:
|
||||
mov r2, r8
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r6
|
||||
str r0, [r4, #0x2c]
|
||||
_080AEB86:
|
||||
ldr r2, _080AEBA0 @ =0x00003333
|
||||
adds r0, r7, r2
|
||||
ldr r1, _080AEBA4 @ =0x00006665
|
||||
cmp r0, r1
|
||||
bhi _080AEBA8
|
||||
ldr r2, _080AEBA0 @ =0x00003333
|
||||
adds r0, r6, r2
|
||||
cmp r0, r1
|
||||
bhi _080AEBA8
|
||||
movs r0, #0
|
||||
b _080AEBAA
|
||||
.align 2, 0
|
||||
_080AEB9C: .4byte gSineTable
|
||||
_080AEBA0: .4byte 0x00003333
|
||||
_080AEBA4: .4byte 0x00006665
|
||||
_080AEBA8:
|
||||
movs r0, #1
|
||||
_080AEBAA:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,129 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
adds r4, r0, #0
|
||||
adds r5, r1, #0
|
||||
mov r8, r2
|
||||
mov sb, r3
|
||||
movs r7, #0
|
||||
movs r6, #0
|
||||
ldrh r0, [r4, #0x2a]
|
||||
movs r1, #0xe0
|
||||
ands r1, r0
|
||||
mov ip, r1
|
||||
movs r2, #0xe0
|
||||
lsls r2, r2, #4
|
||||
ands r2, r0
|
||||
adds r3, r2, #0
|
||||
cmp r1, #0
|
||||
beq _080AECD8
|
||||
cmp r2, #0
|
||||
bne _080AED72
|
||||
_080AECD8:
|
||||
orrs r1, r2
|
||||
cmp r1, #0
|
||||
bne _080AECFC
|
||||
ldr r1, _080AECF8 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r2, #0
|
||||
ldrsh r0, [r0, r2]
|
||||
adds r7, r0, #0
|
||||
muls r7, r5, r7
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
b _080AED5E
|
||||
.align 2, 0
|
||||
_080AECF8: .4byte gSineTable
|
||||
_080AECFC:
|
||||
mov r2, ip
|
||||
cmp r2, #0x40
|
||||
bne _080AED16
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x2c]
|
||||
subs r0, r0, r7
|
||||
str r0, [r4, #0x2c]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x14
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
b _080AED30
|
||||
_080AED16:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #2
|
||||
cmp r3, r0
|
||||
bne _080AED30
|
||||
lsls r7, r5, #8
|
||||
ldr r0, [r4, #0x30]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x14
|
||||
mov r2, sb
|
||||
bl CalculateEntityTileCollisions
|
||||
_080AED30:
|
||||
ldrh r2, [r4, #0x2a]
|
||||
movs r0, #0xe0
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AED52
|
||||
ldr r1, _080AED88 @ =gSineTable
|
||||
mov r0, r8
|
||||
adds r0, #0x40
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x30]
|
||||
subs r0, r0, r6
|
||||
str r0, [r4, #0x30]
|
||||
_080AED52:
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #4
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080AED72
|
||||
ldr r1, _080AED88 @ =gSineTable
|
||||
_080AED5E:
|
||||
mov r2, r8
|
||||
lsls r0, r2, #1
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsh r0, [r0, r1]
|
||||
adds r6, r0, #0
|
||||
muls r6, r5, r6
|
||||
ldr r0, [r4, #0x2c]
|
||||
adds r0, r0, r6
|
||||
str r0, [r4, #0x2c]
|
||||
_080AED72:
|
||||
ldr r2, _080AED8C @ =0x00003333
|
||||
adds r0, r7, r2
|
||||
ldr r1, _080AED90 @ =0x00006665
|
||||
cmp r0, r1
|
||||
bhi _080AED94
|
||||
ldr r2, _080AED8C @ =0x00003333
|
||||
adds r0, r6, r2
|
||||
cmp r0, r1
|
||||
bhi _080AED94
|
||||
movs r0, #0
|
||||
b _080AED96
|
||||
.align 2, 0
|
||||
_080AED88: .4byte gSineTable
|
||||
_080AED8C: .4byte 0x00003333
|
||||
_080AED90: .4byte 0x00006665
|
||||
_080AED94:
|
||||
movs r0, #1
|
||||
_080AED96:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,40 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
adds r6, r1, #0
|
||||
subs r0, r4, #1
|
||||
cmp r0, #0x1e
|
||||
bhi _080778C0
|
||||
lsls r0, r4, #1
|
||||
adds r0, r0, r4
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _080778C4 @ =gUnk_0811BE48
|
||||
adds r5, r0, r1
|
||||
ldr r1, _080778C8 @ =gPlayerState + 0x90
|
||||
ldrb r0, [r5]
|
||||
cmp r0, #0
|
||||
beq _080778A0
|
||||
adds r1, #2
|
||||
_080778A0:
|
||||
ldrh r0, [r1]
|
||||
ands r0, r6
|
||||
cmp r0, #0
|
||||
bne _080778AC
|
||||
cmp r2, #0
|
||||
beq _080778C0
|
||||
_080778AC:
|
||||
adds r0, r4, #0
|
||||
bl sub_0807794C
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _080778C0
|
||||
ldrb r0, [r5, #1]
|
||||
strb r0, [r1, #9]
|
||||
strb r4, [r1, #1]
|
||||
strb r6, [r1, #3]
|
||||
_080778C0:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_080778C4: .4byte gUnk_0811BE48
|
||||
_080778C8: .4byte gPlayerState + 0x90
|
||||
.syntax divided
|
||||
@@ -1,123 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
sub sp, #4
|
||||
adds r5, r0, #0
|
||||
movs r6, #6
|
||||
movs r7, #0
|
||||
movs r4, #0
|
||||
movs r0, #0x32
|
||||
ldrsh r2, [r5, r0]
|
||||
ldr r1, _080AB818 @ =gRoomControls
|
||||
ldrh r0, [r1, #8]
|
||||
adds r0, #0xd4
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
mov r8, r1
|
||||
cmp r2, r0
|
||||
bhi _080AB7B4
|
||||
movs r3, #7
|
||||
_080AB77E:
|
||||
adds r0, r4, #0
|
||||
ands r0, r3
|
||||
cmp r0, #7
|
||||
bne _080AB798
|
||||
adds r0, r5, #0
|
||||
movs r1, #4
|
||||
adds r2, r6, #0
|
||||
str r3, [sp]
|
||||
bl sub_080AB844
|
||||
adds r6, #0x3e
|
||||
adds r7, #0x3e
|
||||
ldr r3, [sp]
|
||||
_080AB798:
|
||||
adds r4, #1
|
||||
ands r4, r3
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r0, r0, r7
|
||||
lsls r1, r4, #3
|
||||
adds r2, r0, r1
|
||||
ldr r0, _080AB818 @ =gRoomControls
|
||||
ldrh r0, [r0, #8]
|
||||
adds r0, #0xd4
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r2, r0
|
||||
bls _080AB77E
|
||||
_080AB7B4:
|
||||
movs r4, #0
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r2, r0, r7
|
||||
mov r1, r8
|
||||
ldrh r0, [r1, #8]
|
||||
adds r0, #0xd4
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r2, r0
|
||||
bhi _080AB802
|
||||
movs r3, #3
|
||||
_080AB7CC:
|
||||
adds r0, r4, #0
|
||||
ands r0, r3
|
||||
cmp r0, #3
|
||||
bne _080AB7E6
|
||||
adds r0, r5, #0
|
||||
movs r1, #3
|
||||
adds r2, r6, #0
|
||||
str r3, [sp]
|
||||
bl sub_080AB844
|
||||
adds r6, #0x1e
|
||||
adds r7, #0x1e
|
||||
ldr r3, [sp]
|
||||
_080AB7E6:
|
||||
adds r4, #1
|
||||
ands r4, r3
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r0, r0, r7
|
||||
lsls r1, r4, #3
|
||||
adds r2, r0, r1
|
||||
ldr r0, _080AB818 @ =gRoomControls
|
||||
ldrh r0, [r0, #8]
|
||||
adds r0, #0xd4
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
cmp r2, r0
|
||||
bls _080AB7CC
|
||||
_080AB802:
|
||||
movs r0, #2
|
||||
ands r0, r4
|
||||
cmp r0, #0
|
||||
beq _080AB81C
|
||||
adds r0, r5, #0
|
||||
movs r1, #2
|
||||
adds r2, r6, #0
|
||||
bl sub_080AB844
|
||||
adds r6, #0xe
|
||||
b _080AB830
|
||||
.align 2, 0
|
||||
_080AB818: .4byte gRoomControls
|
||||
_080AB81C:
|
||||
movs r0, #1
|
||||
ands r4, r0
|
||||
cmp r4, #0
|
||||
beq _080AB830
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
adds r2, r6, #0
|
||||
bl sub_080AB844
|
||||
adds r6, #6
|
||||
_080AB830:
|
||||
adds r0, r5, #0
|
||||
movs r1, #6
|
||||
adds r2, r6, #0
|
||||
bl sub_080AB844
|
||||
add sp, #4
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,211 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start sub_0808C964
|
||||
sub_0808C964: @ 0x0808C964
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4, #0xa]
|
||||
strb r1, [r4, #0x1e]
|
||||
ldrb r0, [r4, #9]
|
||||
cmp r0, #0x76
|
||||
bne _0808C982
|
||||
ldr r0, _0808CA08 @ =gUI
|
||||
adds r0, #0x20
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #2
|
||||
beq _0808C982
|
||||
adds r0, r1, #0
|
||||
subs r0, #9
|
||||
strb r0, [r4, #0xa]
|
||||
_0808C982:
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #4
|
||||
bls _0808C996
|
||||
ldr r0, _0808CA0C @ =gArea
|
||||
ldrb r0, [r0, #0x16]
|
||||
ldrb r1, [r4, #0xb]
|
||||
cmp r0, r1
|
||||
beq _0808C996
|
||||
bl DeleteThisEntity
|
||||
_0808C996:
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r2, [r4, #0x1b]
|
||||
movs r1, #0x3f
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
movs r2, #0x80
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x1b]
|
||||
ldrb r0, [r4, #0x19]
|
||||
ands r1, r0
|
||||
orrs r1, r2
|
||||
strb r1, [r4, #0x19]
|
||||
ldrb r0, [r4, #0xb]
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x29
|
||||
movs r1, #7
|
||||
ands r1, r0
|
||||
ldrb r2, [r3]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
ldrb r0, [r4, #9]
|
||||
cmp r0, #0x75
|
||||
beq _0808CA04
|
||||
ldrb r2, [r4, #0xa]
|
||||
subs r0, r2, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #2
|
||||
bhi _0808CA04
|
||||
ldrb r0, [r4, #0x19]
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x19]
|
||||
lsls r0, r2, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #1
|
||||
cmp r0, #1
|
||||
bne _0808C9FA
|
||||
movs r2, #0xe0
|
||||
_0808C9FA:
|
||||
adds r0, r4, #0
|
||||
adds r1, r2, #0
|
||||
movs r3, #0
|
||||
bl SetAffineInfo
|
||||
_0808CA04:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0808CA08: .4byte gUI
|
||||
_0808CA0C: .4byte gArea
|
||||
|
||||
thumb_func_start sub_0808CA10
|
||||
sub_0808CA10: @ 0x0808CA10
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xa]
|
||||
cmp r0, #2
|
||||
beq _0808CA40
|
||||
cmp r0, #2
|
||||
bgt _0808CA24
|
||||
cmp r0, #1
|
||||
beq _0808CA2A
|
||||
b _0808CA78
|
||||
_0808CA24:
|
||||
cmp r0, #3
|
||||
beq _0808CA60
|
||||
b _0808CA78
|
||||
_0808CA2A:
|
||||
ldr r2, _0808CA3C @ =gUnk_02018EB0
|
||||
ldrb r0, [r2, #0x18]
|
||||
cmp r0, #0
|
||||
beq _0808CA78
|
||||
movs r0, #0
|
||||
movs r1, #0x20
|
||||
strb r1, [r4, #0xe]
|
||||
strb r0, [r2, #0x18]
|
||||
b _0808CA50
|
||||
.align 2, 0
|
||||
_0808CA3C: .4byte gUnk_02018EB0
|
||||
_0808CA40:
|
||||
ldr r2, _0808CA5C @ =gUnk_02018EB0
|
||||
ldrb r0, [r2, #0x19]
|
||||
cmp r0, #0
|
||||
beq _0808CA78
|
||||
movs r0, #0
|
||||
movs r1, #0x20
|
||||
strb r1, [r4, #0xe]
|
||||
strb r0, [r2, #0x19]
|
||||
_0808CA50:
|
||||
movs r0, #0x97
|
||||
lsls r0, r0, #1
|
||||
bl SoundReq
|
||||
b _0808CA78
|
||||
.align 2, 0
|
||||
_0808CA5C: .4byte gUnk_02018EB0
|
||||
_0808CA60:
|
||||
ldr r2, _0808CABC @ =gUnk_02018EB0
|
||||
ldrb r0, [r2, #0x1a]
|
||||
cmp r0, #0
|
||||
beq _0808CA78
|
||||
movs r0, #0
|
||||
movs r1, #0x20
|
||||
strb r1, [r4, #0xe]
|
||||
strb r0, [r2, #0x1a]
|
||||
movs r0, #0x97
|
||||
lsls r0, r0, #1
|
||||
bl SoundReq
|
||||
_0808CA78:
|
||||
ldrb r0, [r4, #9]
|
||||
cmp r0, #0x75
|
||||
beq _0808CAE0
|
||||
ldrb r1, [r4, #0xa]
|
||||
subs r0, r1, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
adds r5, r1, #0
|
||||
cmp r0, #2
|
||||
bhi _0808CAE0
|
||||
ldrb r1, [r4, #0xe]
|
||||
cmp r1, #0
|
||||
beq _0808CAE0
|
||||
subs r1, #1
|
||||
strb r1, [r4, #0xe]
|
||||
ldrb r0, [r4, #0xf]
|
||||
adds r2, r0, #1
|
||||
strb r2, [r4, #0xf]
|
||||
lsls r1, r1, #0x18
|
||||
cmp r1, #0
|
||||
beq _0808CAC4
|
||||
ldr r0, _0808CAC0 @ =gUnk_08121648
|
||||
movs r1, #0xe
|
||||
ands r1, r2
|
||||
lsls r2, r1, #1
|
||||
adds r2, r2, r0
|
||||
movs r6, #0
|
||||
ldrsh r3, [r2, r6]
|
||||
adds r1, #1
|
||||
lsls r1, r1, #1
|
||||
adds r1, r1, r0
|
||||
movs r0, #0
|
||||
ldrsh r2, [r1, r0]
|
||||
b _0808CACA
|
||||
.align 2, 0
|
||||
_0808CABC: .4byte gUnk_02018EB0
|
||||
_0808CAC0: .4byte gUnk_08121648
|
||||
_0808CAC4:
|
||||
movs r2, #0x80
|
||||
lsls r2, r2, #1
|
||||
adds r3, r2, #0
|
||||
_0808CACA:
|
||||
lsls r0, r5, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #1
|
||||
bne _0808CAD6
|
||||
subs r3, #0x20
|
||||
subs r2, #0x20
|
||||
_0808CAD6:
|
||||
adds r0, r4, #0
|
||||
adds r1, r3, #0
|
||||
movs r3, #0
|
||||
bl SetAffineInfo
|
||||
_0808CAE0:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
+11
-3
@@ -20,6 +20,15 @@ typedef struct {
|
||||
} RoomResInfo;
|
||||
static_assert(sizeof(RoomResInfo) == 0x20);
|
||||
|
||||
typedef struct {
|
||||
u8 inventoryGfxIdx;
|
||||
u8 unk29;
|
||||
u8 unk2a;
|
||||
u8 unk2b;
|
||||
u16 unk2C[7];
|
||||
u16 unk3E;
|
||||
} struct_area_28;
|
||||
|
||||
typedef struct {
|
||||
u8 areaMetadata;
|
||||
u8 locationIndex;
|
||||
@@ -43,14 +52,13 @@ typedef struct {
|
||||
bool8 portal_in_use;
|
||||
u8 unk1A;
|
||||
u8 filler2[13];
|
||||
u8 inventoryGfxIdx;
|
||||
u8 filler4[0x13];
|
||||
struct_area_28 unk28;
|
||||
RoomResInfo roomResInfos[MAX_ROOMS];
|
||||
RoomResInfo currentRoomInfo;
|
||||
RoomResInfo* pCurrentRoomInfo;
|
||||
u32 bgm;
|
||||
u32 queued_bgm;
|
||||
u8 filler5[0x20];
|
||||
u8 filler6[0x20];
|
||||
void* transitionManager;
|
||||
void (*onEnter)();
|
||||
void (*onExit)();
|
||||
|
||||
+2
-2
@@ -20,8 +20,8 @@ extern Input gInput; /**< Input instance. */
|
||||
typedef struct {
|
||||
u8 evt_type;
|
||||
u8 entity_idx;
|
||||
u8 _2;
|
||||
u8 _3;
|
||||
u8 area;
|
||||
u8 room;
|
||||
u16 _4;
|
||||
u16 _6;
|
||||
u16 x;
|
||||
|
||||
+1
-1
@@ -289,7 +289,7 @@ void Object37();
|
||||
void JarPortal();
|
||||
void BossDoor();
|
||||
void Object3A();
|
||||
void MacroMushromStalks();
|
||||
void MacroMushroomStalks();
|
||||
void MacroPlayer();
|
||||
void Object3D();
|
||||
void Object3E();
|
||||
|
||||
+7
-4
@@ -190,15 +190,17 @@ typedef struct {
|
||||
|
||||
typedef struct {
|
||||
u8 type;
|
||||
u8 _1;
|
||||
u8 localFlag;
|
||||
u8 _2;
|
||||
u8 _3;
|
||||
u16 _4;
|
||||
u16 tilePos;
|
||||
u8 _6;
|
||||
u8 _7;
|
||||
} TileEntity;
|
||||
extern TileEntity gSmallChests[8];
|
||||
|
||||
extern TileEntity gUnk_080FEAC8[];
|
||||
|
||||
typedef enum {
|
||||
NONE,
|
||||
ROOM_VISIT_MARKER,
|
||||
@@ -226,11 +228,12 @@ void LoadRoom(void);
|
||||
void SetCurrentRoomPropertyList(u32 area, u32 room);
|
||||
void* GetCurrentRoomProperty(u32);
|
||||
void LoadRoomTileEntities();
|
||||
void LoadRoomEntityList(EntityData* listPtr);
|
||||
Entity* LoadRoomEntity(const EntityData*);
|
||||
void LoadRoomEntityList(const EntityData* listPtr);
|
||||
|
||||
bool32 LoadFixedGFX(Entity*, u32);
|
||||
void UnloadGFXSlots(Entity*);
|
||||
void sub_0804B3C4(void*);
|
||||
void sub_0804B3C4(TileEntity*);
|
||||
void sub_0804B0B0(u32 arg0, u32 arg1);
|
||||
|
||||
void DoExitTransition(const ScreenTransitionData* data);
|
||||
|
||||
@@ -107,8 +107,6 @@ SECTIONS {
|
||||
. = 0x00033280; gActiveScriptInfo = .;
|
||||
. = 0x00033290; gUnk_02033290 = .;
|
||||
. = 0x00033A90; gArea = .;
|
||||
. = 0x00033AB8; gUnk_02033AB8 = .;
|
||||
. = 0x00033ACC; gUnk_02033ACC = .;
|
||||
. = 0x000342F8; gUnk_020342F8 = .;
|
||||
. = 0x00034330; gUnk_02034330 = .;
|
||||
. = 0x00034350; gRoomVars = .;
|
||||
@@ -305,7 +303,6 @@ SECTIONS {
|
||||
src/npc.o(.text);
|
||||
src/collision.o(.text);
|
||||
/* C source compiled without interworking */
|
||||
asm/kinstone.o(.text);
|
||||
src/kinstone.o(.text);
|
||||
src/playerItem/playerItemGustBig.o(.text);
|
||||
src/playerItem/playerItemBow.o(.text);
|
||||
@@ -680,9 +677,6 @@ SECTIONS {
|
||||
src/object/bossDoor.o(.text);
|
||||
src/object/object3A.o(.text);
|
||||
src/object/macroMushroomStalks.o(.text);
|
||||
src/object/object75.o(.text); /* 75 and 76 are mislocated in object table */
|
||||
src/object/object76.o(.text);
|
||||
asm/object/code_0808C964.o(.text);
|
||||
src/object/macroPlayer.o(.text);
|
||||
src/object/object3D.o(.text);
|
||||
src/object/object3E.o(.text);
|
||||
@@ -1408,8 +1402,6 @@ SECTIONS {
|
||||
data/animations/object/bossDoor.o(.rodata);
|
||||
src/object/object3A.o(.rodata);
|
||||
src/object/macroMushroomStalks.o(.rodata);
|
||||
src/object/object75.o(.rodata);
|
||||
src/object/object76.o(.rodata);
|
||||
src/object/macroPlayer.o(.rodata);
|
||||
src/object/object3D.o(.rodata);
|
||||
src/object/object3E.o(.rodata);
|
||||
|
||||
+5
-10
@@ -324,28 +324,23 @@ void sub_0803981C(StalfosEntity* this) {
|
||||
EnqueueSFX(SFX_12B);
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/stalfos/sub_08039858.inc", void sub_08039858(StalfosEntity* this)) {
|
||||
void sub_08039858(StalfosEntity* this) {
|
||||
s32 iVar1;
|
||||
u32 uVar2;
|
||||
u32 uVar3;
|
||||
u32 tmp;
|
||||
|
||||
iVar1 = sub_080398C0(this);
|
||||
uVar2 = (u32)super->animationState;
|
||||
tmp = uVar2 * 8;
|
||||
if (((iVar1 + 4U) & 0x18) == tmp) {
|
||||
uVar2 = (u32)super->animationState * 8;
|
||||
if (((iVar1 + 4U) & 0x18) == uVar2) {
|
||||
if (this->unk_7b != 3) {
|
||||
return;
|
||||
}
|
||||
this->unk_7b = 0;
|
||||
uVar3 = Random();
|
||||
iVar1 += ((uVar3 & 2) - 1) * 8;
|
||||
iVar1 += ((Random() & 2) - 1) * 8;
|
||||
}
|
||||
uVar2 = ((iVar1 + uVar2 * -8) & 0x1f) >> 4 ^ 1;
|
||||
uVar2 = ((iVar1 - uVar2) & 0x1f) >> 4 ^ 1;
|
||||
InitAnimationForceUpdate(super, gUnk_080CF8F8[(u32)super->animationState * 2 + uVar2]);
|
||||
super->animationState = ((uVar2 * 2 + super->animationState) - 1) & 3;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
u32 sub_080398C0(StalfosEntity* this) {
|
||||
u32 rand = Random();
|
||||
|
||||
+11
-11
@@ -374,7 +374,7 @@ static void GameMain_ChangeRoom(void) {
|
||||
SetPlayerControl(0);
|
||||
gPauseMenuOptions.disabled = 0;
|
||||
#if defined(USA) || defined(DEMO_USA)
|
||||
if (gArea.inventoryGfxIdx != 0xff) {
|
||||
if (gArea.unk28.inventoryGfxIdx != 0xff) {
|
||||
sub_0801855C();
|
||||
}
|
||||
CreateManagerF();
|
||||
@@ -384,13 +384,13 @@ static void GameMain_ChangeRoom(void) {
|
||||
sub_0801855C();
|
||||
#elif defined(JP)
|
||||
CheckAreaDiscovery();
|
||||
if (gArea.inventoryGfxIdx != 0xff) {
|
||||
if (gArea.unk28.inventoryGfxIdx != 0xff) {
|
||||
sub_0801855C();
|
||||
}
|
||||
#elif defined(DEMO_JP)
|
||||
if (gRoomTransition.field_0x2c[4])
|
||||
CheckAreaDiscovery();
|
||||
if (gArea.inventoryGfxIdx != 0xff) {
|
||||
if (gArea.unk28.inventoryGfxIdx != 0xff) {
|
||||
sub_0801855C();
|
||||
}
|
||||
CreateManagerF();
|
||||
@@ -2105,10 +2105,10 @@ void sub_08053CC8(void) {
|
||||
void sub_08053D34(void) {
|
||||
if (gMenu.field_0xa != 0) {
|
||||
gMenu.field_0xa = 0;
|
||||
if (CheckLocalFlagByBank(0x680, 0x3d)) {
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_7, 0x3d)) {
|
||||
SetTileType(0x74, 0xc4, 1);
|
||||
}
|
||||
if (CheckLocalFlagByBank(0x680, 0x3e)) {
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_7, 0x3e)) {
|
||||
SetTileType(0x74, 0xcc, 1);
|
||||
}
|
||||
}
|
||||
@@ -2682,22 +2682,22 @@ void sub_08054968(void) {
|
||||
|
||||
void sub_08054974(s32 param_1, s32 param_2) {
|
||||
struct_080FE320* ptr = &gUnk_080FE320[param_1];
|
||||
SetCurrentRoomPropertyList(ptr->_2, ptr->_3);
|
||||
gRoomControls.area = ptr->_2;
|
||||
gRoomControls.room = ptr->_3;
|
||||
SetCurrentRoomPropertyList(ptr->area, ptr->room);
|
||||
gRoomControls.area = ptr->area;
|
||||
gRoomControls.room = ptr->room;
|
||||
LoadGfxGroups();
|
||||
gArea.localFlagOffset = GetFlagBankOffset(gRoomControls.area);
|
||||
if (param_2 != 0) {
|
||||
LoadAuxiliaryRoom(ptr->_2, ptr->_3);
|
||||
LoadAuxiliaryRoom(ptr->area, ptr->room);
|
||||
} else {
|
||||
sub_08052FF4(ptr->_2, ptr->_3);
|
||||
sub_08052FF4(ptr->area, ptr->room);
|
||||
InitializeCamera();
|
||||
gUpdateVisibleTiles = 1;
|
||||
}
|
||||
gScreen.lcd.displayControl &= 0x1fff;
|
||||
gRoomControls.scroll_x = gRoomControls.origin_x + ptr->_4;
|
||||
gRoomControls.scroll_y = gRoomControls.origin_y + ptr->_6;
|
||||
if (ptr->_2 == 2) {
|
||||
if (ptr->area == AREA_HYRULE_TOWN) {
|
||||
TryLoadPrologueHyruleTown();
|
||||
}
|
||||
sub_08018710(gUI.field_0x3);
|
||||
|
||||
+456
@@ -1,5 +1,461 @@
|
||||
#include "global.h"
|
||||
#include "room.h"
|
||||
#include "subtask.h"
|
||||
#include "common.h"
|
||||
#include "flags.h"
|
||||
#include "player.h"
|
||||
#include "kinstone.h"
|
||||
#include "area.h"
|
||||
#include "manager.h"
|
||||
#include "asm.h"
|
||||
|
||||
typedef struct {
|
||||
u8 unk0;
|
||||
u8 unk1;
|
||||
u8 unk2;
|
||||
u8 unk3;
|
||||
} struct_gUnk_080B3D20;
|
||||
|
||||
extern struct_gUnk_080B3D20 gUnk_080B3D20[];
|
||||
extern EntityData gUnk_080FEC28[];
|
||||
extern EntityData gUnk_080FEBE8[];
|
||||
extern EntityData gUnk_080FECC8[];
|
||||
extern EntityData gUnk_080FEE78[];
|
||||
extern EntityData gUnk_080FED58[];
|
||||
extern const EntityData gUnk_080FED18[];
|
||||
extern const EntityData gUnk_080FEE38[];
|
||||
extern const EntityData gUnk_080FEE18[];
|
||||
extern const EntityData gUnk_080FEE48[];
|
||||
extern const EntityData gUnk_080FEE58[];
|
||||
extern const void* gUnk_080FED98[];
|
||||
extern const u16 gUnk_080B3D14[];
|
||||
|
||||
void sub_08018AB4(int);
|
||||
void sub_08018BB4(int);
|
||||
void sub_08018A58(int);
|
||||
void sub_08018B50(int);
|
||||
void sub_080189EC(int);
|
||||
void sub_0801876C(int, int);
|
||||
void sub_08018738(u32, int);
|
||||
void sub_08018690(int param_1, u16* param_2);
|
||||
void sub_08018500();
|
||||
bool32 sub_080185B4(const struct_gUnk_080B3D20* param_1);
|
||||
|
||||
void sub_08018500(void) {
|
||||
s32 sVar1;
|
||||
u32 i;
|
||||
u16* puVar3;
|
||||
u16* puVar4;
|
||||
struct_area_28* ptr = &gArea.unk28;
|
||||
|
||||
puVar3 = ptr->unk2C;
|
||||
sVar1 = gUnk_080B3D14[ptr->inventoryGfxIdx] + ptr->unk29 * 3;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
*puVar3 = sVar1;
|
||||
sVar1++;
|
||||
puVar3++;
|
||||
}
|
||||
|
||||
sVar1 = ptr->inventoryGfxIdx * 5 + 0xc81;
|
||||
for (i = 0, puVar4 = &ptr->unk2C[3]; i < 5; i++) {
|
||||
*puVar3 = sVar1;
|
||||
sVar1++;
|
||||
puVar3++;
|
||||
}
|
||||
sub_08018690(5, puVar4);
|
||||
ptr->unk2a = 0;
|
||||
}
|
||||
|
||||
void sub_0801855C(void) {
|
||||
u32 bVar3;
|
||||
struct_area_28* ptr;
|
||||
// TODO: Figure out what is up with the pointer assignment
|
||||
struct_gUnk_080B3D20* pcVar2 = (struct_gUnk_080B3D20*)&gArea.unk28;
|
||||
|
||||
MemClear(pcVar2, 0x14);
|
||||
ptr = (struct_area_28*)pcVar2;
|
||||
for (pcVar2 = gUnk_080B3D20, bVar3 = 0; pcVar2->unk0 != 0xff; pcVar2++) {
|
||||
if (sub_080185B4(pcVar2)) {
|
||||
bVar3 = ptr->unk2b;
|
||||
}
|
||||
ptr->unk2b++;
|
||||
}
|
||||
ptr->unk2b = bVar3;
|
||||
pcVar2 = &gUnk_080B3D20[ptr->unk2b];
|
||||
ptr->inventoryGfxIdx = pcVar2->unk2;
|
||||
ptr->unk29 = pcVar2->unk3;
|
||||
ptr->unk2b = bVar3 + 1;
|
||||
sub_08018500();
|
||||
}
|
||||
|
||||
bool32 sub_080185B4(const struct_gUnk_080B3D20* param_1) {
|
||||
if (param_1->unk0 == 0xff)
|
||||
return 0;
|
||||
|
||||
if (param_1->unk0 == 0xfe) {
|
||||
return GetInventoryValue(param_1->unk1) != 0;
|
||||
}
|
||||
|
||||
if (param_1->unk0 == 0xfd) {
|
||||
return CheckKinstoneFused(param_1->unk1);
|
||||
}
|
||||
return CheckLocalFlagByBank(gLocalFlagBanks[param_1->unk0], param_1->unk1);
|
||||
}
|
||||
|
||||
void sub_080185F8(void) {
|
||||
struct_area_28* ptr2 = &gArea.unk28;
|
||||
struct_gUnk_080B3D20* ptr = &gUnk_080B3D20[ptr2->unk2b];
|
||||
|
||||
if (sub_080185B4(ptr)) {
|
||||
ptr2->inventoryGfxIdx = ptr->unk2;
|
||||
ptr2->unk29 = ptr->unk3;
|
||||
ptr2->unk2b++;
|
||||
sub_08018500();
|
||||
}
|
||||
}
|
||||
|
||||
void GenerateAreaHint(void) {
|
||||
u16 uVar1;
|
||||
struct_area_28* ptr;
|
||||
|
||||
gPlayerState.queued_action = 0x16;
|
||||
#if defined(EU) || defined(JP)
|
||||
// TODO what fields of the room transition are switched in these variants?
|
||||
gRoomTransition.field_0x2c[7] = 0;
|
||||
#else
|
||||
gRoomTransition.hint_height = 0;
|
||||
#endif
|
||||
ptr = &gArea.unk28;
|
||||
if (ptr->inventoryGfxIdx == 0xff) {
|
||||
gRoomTransition.hint_idx = ptr->unk2C[0];
|
||||
} else {
|
||||
gRoomTransition.hint_idx = ptr->unk2C[ptr->unk2a];
|
||||
ptr->unk2a++;
|
||||
if (ptr->unk2a > 7) {
|
||||
ptr->unk2a = 0;
|
||||
sub_08018690(8, ptr->unk2C);
|
||||
if (ptr->unk2C[0] == gRoomTransition.hint_idx) {
|
||||
uVar1 = ptr->unk2C[0];
|
||||
ptr->unk2C[0] = ptr->unk3E;
|
||||
ptr->unk3E = uVar1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018690(int param_1, u16* param_2) {
|
||||
u32 uVar1;
|
||||
s32 uVar4;
|
||||
s32 uVar2;
|
||||
s32 iVar3;
|
||||
u16* puVar4;
|
||||
u16* puVar5;
|
||||
|
||||
uVar4 = param_1 - 1;
|
||||
if (uVar4 != 0) {
|
||||
puVar5 = (u16*)(uVar4 * 2 + (int)param_2);
|
||||
do {
|
||||
uVar2 = Random();
|
||||
iVar3 = uVar2 % (uVar4 + 1);
|
||||
uVar1 = *puVar5;
|
||||
puVar4 = (u16*)(iVar3 * 2 + (int)param_2);
|
||||
*puVar5 = *puVar4;
|
||||
*puVar4 = uVar1;
|
||||
puVar5--;
|
||||
uVar4--;
|
||||
} while (uVar4 != 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080186C0(u32 param_1) {
|
||||
gArea.unk28.inventoryGfxIdx = 0xff;
|
||||
gArea.unk28.unk2C[0] = param_1;
|
||||
}
|
||||
|
||||
void sub_080186D4(void) {
|
||||
if (gArea.unk28.inventoryGfxIdx == 0xff) {
|
||||
sub_0801855C();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080186EC(u32 param_1) {
|
||||
struct_080C9CBC* psVar1;
|
||||
u32 i;
|
||||
|
||||
for (i = 0, psVar1 = gUnk_080C9CBC; i <= 100; psVar1++, i++) {
|
||||
if (psVar1->unk3 == 8) {
|
||||
sub_08018738(i, psVar1->evt_type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018710(u32 param_1) {
|
||||
struct_080C9CBC* psVar1;
|
||||
u32 i;
|
||||
|
||||
for (i = 0, psVar1 = gUnk_080C9CBC; i <= 100; psVar1++, i++) {
|
||||
if (psVar1->unk3 == 8 && param_1 != psVar1->evt_type) {
|
||||
sub_08018738(i, psVar1->evt_type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018738(u32 param_1, int param_2) {
|
||||
struct_080FE320* ptr = &gUnk_080FE320[param_2];
|
||||
|
||||
if (ptr->area == gRoomControls.area && ptr->room == gRoomControls.room) {
|
||||
sub_0801876C(param_2, CheckKinstoneFused(param_1));
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801876C(int param_1, int param_2) {
|
||||
Entity* roomEnt;
|
||||
Entity* ent;
|
||||
u32 uVar3;
|
||||
u32 tmp;
|
||||
u8* puVar4;
|
||||
u32 uVar5;
|
||||
struct_080FE320* ptr;
|
||||
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
switch (ptr->evt_type) {
|
||||
case 6:
|
||||
if (param_2 == 0) {
|
||||
sub_08018AB4((ptr->x >> 4 & 0x3f) | (ptr->y >> 4 & 0x3f) << 6);
|
||||
}
|
||||
break;
|
||||
case 0:
|
||||
break;
|
||||
case 2:
|
||||
if (param_2 != 0) {
|
||||
sub_08018BB4(param_1);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (param_2 == 0) {
|
||||
return;
|
||||
}
|
||||
if (CheckGlobalFlag(ptr->flag)) {
|
||||
return;
|
||||
}
|
||||
LoadRoomEntity(gUnk_080FEC28 + ptr->entity_idx);
|
||||
break;
|
||||
case 3:
|
||||
if (param_2 == 0) {
|
||||
return;
|
||||
}
|
||||
if (GetInventoryValue(ptr->flag)) {
|
||||
return;
|
||||
}
|
||||
LoadRoomEntity(gUnk_080FEBE8 + ptr->entity_idx);
|
||||
break;
|
||||
case 4:
|
||||
if (param_2 == 0) {
|
||||
sub_08018A58(param_1);
|
||||
}
|
||||
break;
|
||||
case 5:
|
||||
if (param_2 != 0) {
|
||||
sub_08018B50(param_1);
|
||||
}
|
||||
break;
|
||||
|
||||
case 7:
|
||||
if (param_2 != 0) {
|
||||
return;
|
||||
}
|
||||
if (ptr->entity_idx != 0x80) {
|
||||
LoadRoomEntity(gUnk_080FECC8 + ptr->entity_idx);
|
||||
} else {
|
||||
sub_080189EC(param_1);
|
||||
}
|
||||
break;
|
||||
case 0x19:
|
||||
roomEnt = LoadRoomEntity(&gUnk_080FED18[ptr->entity_idx]);
|
||||
if (roomEnt != 0) {
|
||||
roomEnt->type = param_2 ? 2 : 0;
|
||||
}
|
||||
break;
|
||||
case 8:
|
||||
if (param_2 == 0) {
|
||||
return;
|
||||
}
|
||||
SetTileType(0x168, (ptr->x >> 4 & 0x3f) | (ptr->y >> 4 & 0x3f) << 6, 1);
|
||||
break;
|
||||
case 0xb:
|
||||
if (param_2 != 0) {
|
||||
LoadRoomEntity(&gUnk_080FED58[ptr->entity_idx]);
|
||||
gRoomVars.field_0x8c[ptr->entity_idx] = (void*)gUnk_080FED98[ptr->entity_idx];
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
if (param_2 == 0) {
|
||||
return;
|
||||
}
|
||||
ent = LoadRoomEntity(&gUnk_080FEE78[ptr->entity_idx]);
|
||||
if (ent != 0) {
|
||||
*(u16*)&ent->collisionLayer = ptr->x + gRoomControls.origin_x;
|
||||
*(u16*)&ent->gustJarState = ptr->y + gRoomControls.origin_y;
|
||||
}
|
||||
if (ptr->entity_idx == 0) {
|
||||
SetTileType(0x8d, (ptr->x >> 4 & 0x3f) | (ptr->y >> 4 & 0x3f) << 6, 1);
|
||||
} else {
|
||||
uVar5 = (ptr->x >> 4 & 0x3f) | (ptr->y >> 4 & 0x3f) << 6;
|
||||
SetTileType(0x8c, uVar5 - 1, 1);
|
||||
uVar3 = 0x8e;
|
||||
SetTileType(uVar3, uVar5, 1);
|
||||
}
|
||||
break;
|
||||
case 0x18:
|
||||
if (param_2 != 0) {
|
||||
LoadRoomEntityList(gUnk_080FEE18);
|
||||
}
|
||||
break;
|
||||
case 0xf:
|
||||
if (param_2 != 0) {
|
||||
LoadRoomEntity(gUnk_080FEE58);
|
||||
} else {
|
||||
LoadRoomEntity(gUnk_080FEE48);
|
||||
}
|
||||
break;
|
||||
case 0x11:
|
||||
if (param_2 != 0) {
|
||||
SetLocalFlagByBank(FLAG_BANK_1, SOUGEN_05_BOMB_00);
|
||||
LoadRoomEntityList(gUnk_080FEE38);
|
||||
}
|
||||
break;
|
||||
case 0x1a:
|
||||
case 0x1b:
|
||||
case 0x1c:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080189EC(int param_1) {
|
||||
u32 i;
|
||||
int iVar1;
|
||||
int tilePosition;
|
||||
struct_080FE320* ptr;
|
||||
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
|
||||
tilePosition = (ptr->x >> 4) & 0x3f;
|
||||
tilePosition |= ((ptr->y >> 4) & 0x3f) << 6;
|
||||
tilePosition -= 0x42;
|
||||
|
||||
for (i = 0; i < 4; i++) {
|
||||
SetTileType(i + 0x1df, tilePosition + i, 2);
|
||||
}
|
||||
|
||||
tilePosition += 0x40;
|
||||
for (i = 0; i < 4; i++) {
|
||||
SetTileType(i + 0x1e3, tilePosition + i, 2);
|
||||
SetTileType(i + 0x1db, tilePosition + i, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018A58(int param_1) {
|
||||
u32 i;
|
||||
int iVar2;
|
||||
u32 j;
|
||||
int tilePosition;
|
||||
struct_080FE320* ptr;
|
||||
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
|
||||
tilePosition = (ptr->x >> 4) & 0x3f;
|
||||
tilePosition |= ((ptr->y >> 4) & 0x3f) << 6;
|
||||
tilePosition -= 0x43;
|
||||
iVar2 = 0x232;
|
||||
|
||||
for (i = 0; i < 4; tilePosition += 0x40, i++) {
|
||||
for (j = 0; j < 7; j++) {
|
||||
SetTileType(iVar2++, tilePosition + j, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018AB4(int param_1) {
|
||||
u32 i;
|
||||
int iVar2;
|
||||
u32 j;
|
||||
int iVar6;
|
||||
|
||||
iVar2 = 0x1e8;
|
||||
iVar6 = 500;
|
||||
|
||||
for (i = 0; i < 3; i++) {
|
||||
j = 0;
|
||||
for (; j < 4; j++) {
|
||||
SetTileType(iVar2++, param_1 + j, 1);
|
||||
SetTileType(iVar6++, param_1 - 0x40 + j, 2);
|
||||
}
|
||||
param_1 += 0x40;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018B10(int param_1) {
|
||||
int iVar1;
|
||||
u32 index;
|
||||
int iVar3;
|
||||
int iVar4;
|
||||
|
||||
iVar4 = 0x1f0;
|
||||
iVar3 = 0x1fc;
|
||||
index = 0;
|
||||
iVar1 = param_1 - 0x40;
|
||||
for (; index < 4; iVar1++, index++) {
|
||||
SetTileType(iVar4++, param_1 + index, 1);
|
||||
SetTileType(iVar3++, iVar1, 2);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018B50(int param_1) {
|
||||
u32 i;
|
||||
int iVar2;
|
||||
u32 j;
|
||||
int tilePosition;
|
||||
struct_080FE320* ptr;
|
||||
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
if ((ptr->entity_idx & 0x80) == 0) {
|
||||
iVar2 = 0x200;
|
||||
} else {
|
||||
iVar2 = 0x219;
|
||||
}
|
||||
|
||||
tilePosition = (ptr->x >> 4) & 0x3f;
|
||||
tilePosition |= ((ptr->y >> 4) & 0x3f) << 6;
|
||||
tilePosition -= 0x82;
|
||||
|
||||
for (i = 0; i < 5; tilePosition += 0x40, i++) {
|
||||
for (j = 0; j < 5; j++) {
|
||||
SetTileType(iVar2++, tilePosition + j, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08018BB4(int param_1) {
|
||||
u32 layer;
|
||||
TileEntity tile;
|
||||
struct_080FE320* ptr;
|
||||
u32 position;
|
||||
|
||||
MemCopy(gUnk_080FEAC8 + param_1, &tile, sizeof(TileEntity));
|
||||
ptr = &gUnk_080FE320[param_1];
|
||||
tile.tilePos = (ptr->x >> 4 & 0x3f) | (((ptr->y) >> 4 & 0x3f) << 6);
|
||||
sub_0804B3C4(&tile);
|
||||
if (CheckLocalFlag(tile.localFlag) == 0) {
|
||||
position = tile.tilePos;
|
||||
if ((tile._6 & 1) == 0) {
|
||||
layer = 1;
|
||||
} else {
|
||||
layer = 2;
|
||||
}
|
||||
SetTileType(0x73, position, layer);
|
||||
}
|
||||
}
|
||||
|
||||
void CreateMinishEntrance(u32 tilePos) {
|
||||
u32 x, y;
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
#include "entity.h"
|
||||
#include "room.h"
|
||||
|
||||
extern Entity* LoadRoomEntity(EntityData*);
|
||||
|
||||
void sub_0805E0C0(Entity*);
|
||||
void sub_0805E0F4(Entity*);
|
||||
|
||||
|
||||
@@ -147,7 +147,7 @@ static void sub_08058514(ManagerA* this) {
|
||||
}
|
||||
|
||||
static void sub_080585B0(ManagerA* this) {
|
||||
if (gArea.inventoryGfxIdx != 0xFF) {
|
||||
if (gArea.unk28.inventoryGfxIdx != 0xFF) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if (CheckFlags(this->flag1)) {
|
||||
|
||||
@@ -81,8 +81,6 @@ void ManagerB_WaitForDone(ManagerB* this) {
|
||||
ManagerBHelper* CreateHelper(Manager*);
|
||||
void ManagerBHelper_Monitor(ManagerBHelper*, Entity*, u32);
|
||||
|
||||
extern Entity* LoadRoomEntity(EntityData*);
|
||||
|
||||
void ManagerB_LoadFight(Manager* this) {
|
||||
ManagerBHelper* monitor;
|
||||
EntityData* prop;
|
||||
|
||||
@@ -414,7 +414,7 @@ void sub_080594DC(ManagerF* this) {
|
||||
break;
|
||||
case 2:
|
||||
default:
|
||||
if (gArea.inventoryGfxIdx != 0xFF) {
|
||||
if (gArea.unk28.inventoryGfxIdx != 0xFF) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
if (CheckLocalFlagByBank(FLAG_BANK_10, 0x85)) {
|
||||
|
||||
+73
-63
@@ -1775,25 +1775,26 @@ bool32 MoveNorth(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/movement/MoveNorthEast.inc",
|
||||
bool32 MoveNorthEast(Entity* this, s32 radius, s32 angle, u32 collisionType))
|
||||
/*NONMATCH("asm/non_matching/movement/MoveNorthEast.inc",
|
||||
bool32 MoveNorthEast(Entity* this, s32 radius, s32 angle, u32 collisionType)) {
|
||||
bool32 MoveNorthEast(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
s32 moveA = 0;
|
||||
s32 moveB = 0;
|
||||
if (((this->collisions & COL_NORTH_ANY) == COL_NONE) || ((this->collisions & COL_EAST_ANY) == COL_NONE)) {
|
||||
if ((this->collisions & (COL_NORTH_ANY | COL_EAST_ANY)) == COL_NONE) {
|
||||
moveA = radius * gSineTable[angle + 0x40];
|
||||
s32 northCollision = (this->collisions & COL_NORTH_ANY);
|
||||
u32 northCollision2 = northCollision;
|
||||
s32 eastCollision = (this->collisions & COL_EAST_ANY);
|
||||
u32 eastCollision2 = eastCollision;
|
||||
if ((northCollision == COL_NONE) || (eastCollision == COL_NONE)) {
|
||||
if ((northCollision | eastCollision) == COL_NONE) {
|
||||
moveA = gSineTable[angle + 0x40] * radius;
|
||||
this->y.WORD -= moveA;
|
||||
moveB = radius * gSineTable[angle];
|
||||
moveB = gSineTable[angle] * radius;
|
||||
this->x.WORD += moveB;
|
||||
} else {
|
||||
if ((this->collisions & COL_NORTH_ANY) == COL_NORTH_WEST) {
|
||||
if (northCollision2 == COL_NORTH_WEST) {
|
||||
moveA = radius * 0x100;
|
||||
this->x.WORD += moveA;
|
||||
CalculateEntityTileCollisions(this, DirectionNorthEast, collisionType);
|
||||
} else {
|
||||
if ((this->collisions & COL_EAST_ANY) == COL_EAST_NORTH) {
|
||||
if (eastCollision2 == COL_EAST_NORTH) {
|
||||
moveA = radius * 0x100;
|
||||
this->y.WORD -= moveA;
|
||||
CalculateEntityTileCollisions(this, DirectionNorthEast, collisionType);
|
||||
@@ -1809,13 +1810,14 @@ ASM_FUNC("asm/non_matching/movement/MoveNorthEast.inc",
|
||||
}
|
||||
}
|
||||
}
|
||||
if (((moveA >= -0x3333) && (moveA < 0x3333)) && ((moveB >= -0x3333) && (moveB < 0x3333))) {
|
||||
return FALSE;
|
||||
} else {
|
||||
if (((moveA < -0x3333) || (moveA >= 0x3333))) {
|
||||
return TRUE;
|
||||
} else if ((moveB < -0x3333) || (moveB >= 0x3333)) {
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
END_NONMATCH*/
|
||||
|
||||
bool32 MoveEast(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
s32 moveA = 0;
|
||||
@@ -1855,24 +1857,25 @@ bool32 MoveEast(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/movement/MoveSouthEast.inc",
|
||||
bool32 MoveSouthEast(Entity* this, s32 radius, s32 angle, u32 collisionType))
|
||||
/*NONMATCH("asm/non_matching/movement/MoveSouthEast.inc",
|
||||
bool32 MoveSouthEast(Entity* this, s32 radius, s32 angle, u32 collisionType)) {
|
||||
bool32 MoveSouthEast(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
s32 moveA = 0;
|
||||
s32 moveB = 0;
|
||||
if (((this->collisions & COL_SOUTH_ANY) == COL_NONE) || ((this->collisions & COL_EAST_ANY) == COL_NONE)) {
|
||||
if ((this->collisions & (COL_SOUTH_ANY | COL_EAST_ANY)) == COL_NONE) {
|
||||
s32 anySouth = this->collisions & COL_SOUTH_ANY;
|
||||
s32 anySouth2 = anySouth;
|
||||
s32 anyEast = this->collisions & COL_EAST_ANY;
|
||||
s32 anyEast2 = anyEast;
|
||||
if ((anySouth == COL_NONE) || (anyEast == COL_NONE)) {
|
||||
if ((anySouth | anyEast) == COL_NONE) {
|
||||
moveA = gSineTable[angle + 0x40] * radius;
|
||||
this->y.WORD -= moveA;
|
||||
moveB = gSineTable[angle] * radius;
|
||||
this->x.WORD += moveB;
|
||||
} else {
|
||||
if ((this->collisions & COL_SOUTH_ANY) == COL_SOUTH_WEST) {
|
||||
if (anySouth2 == COL_SOUTH_WEST) {
|
||||
moveA = radius * 0x100;
|
||||
this->x.WORD += moveA;
|
||||
CalculateEntityTileCollisions(this, DirectionSouthEast, collisionType);
|
||||
} else if ((this->collisions & COL_EAST_ANY) == COL_EAST_SOUTH) {
|
||||
} else if (anyEast2 == COL_EAST_SOUTH) {
|
||||
moveA = radius * 0x100;
|
||||
this->y.WORD += moveA;
|
||||
CalculateEntityTileCollisions(this, DirectionSouthEast, collisionType);
|
||||
@@ -1887,13 +1890,16 @@ ASM_FUNC("asm/non_matching/movement/MoveSouthEast.inc",
|
||||
}
|
||||
}
|
||||
}
|
||||
if (((moveA >= -0x3333) && (moveA < 0x3333)) && ((moveB >= -0x3333) && (moveB < 0x3333))) {
|
||||
return FALSE;
|
||||
} else {
|
||||
if (moveA < -0x3333 || moveA >= 0x3333) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (moveB < -0x3333 || moveB >= 0x3333) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
END_NONMATCH*/
|
||||
|
||||
bool32 MoveSouth(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
s32 moveA = 0;
|
||||
@@ -1934,47 +1940,49 @@ bool32 MoveSouth(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/movement/MoveSouthWest.inc",
|
||||
bool32 MoveSouthWest(Entity* this, s32 radius, s32 angle, u32 collisionType))
|
||||
/*NONMATCH("asm/non_matching/movement/MoveSouthWest.inc",
|
||||
bool32 MoveSouthWest(Entity* this, s32 radius, s32 angle, u32 collisionType)) {
|
||||
bool32 MoveSouthWest(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
s32 moveA = 0;
|
||||
s32 moveB = 0;
|
||||
if (((this->collisions & COL_SOUTH_ANY) == COL_NONE) || ((this->collisions & COL_WEST_ANY) == COL_NONE)) {
|
||||
if ((this->collisions & (COL_SOUTH_ANY | COL_WEST_ANY)) == COL_NONE) {
|
||||
moveB = gSineTable[angle + 0x40] * radius;
|
||||
this->y.WORD -= moveB;
|
||||
moveA = gSineTable[angle] * radius;
|
||||
this->x.WORD += moveA;
|
||||
s32 anySouth = this->collisions & COL_SOUTH_ANY;
|
||||
s32 anySouth2 = anySouth;
|
||||
s32 anyWest = this->collisions & COL_WEST_ANY;
|
||||
s32 anyWest2 = anyWest;
|
||||
if ((anySouth == COL_NONE) || (anyWest == COL_NONE)) {
|
||||
if ((anySouth | anyWest) == COL_NONE) {
|
||||
moveA = gSineTable[angle + 0x40] * radius;
|
||||
this->y.WORD -= moveA;
|
||||
moveB = gSineTable[angle] * radius;
|
||||
this->x.WORD += moveB;
|
||||
} else {
|
||||
if ((this->collisions & COL_SOUTH_ANY) == COL_SOUTH_EAST) {
|
||||
moveB = radius * 0x100;
|
||||
this->x.WORD -= moveB;
|
||||
if (anySouth2 == COL_SOUTH_EAST) {
|
||||
moveA = radius * 0x100;
|
||||
this->x.WORD -= moveA;
|
||||
CalculateEntityTileCollisions(this, DirectionSouthWest, collisionType);
|
||||
} else if (anyWest2 == COL_WEST_SOUTH) {
|
||||
moveA = radius * 0x100;
|
||||
this->y.WORD += moveA;
|
||||
CalculateEntityTileCollisions(this, DirectionSouthWest, collisionType);
|
||||
} else {
|
||||
if ((this->collisions & COL_WEST_ANY) == COL_WEST_SOUTH) {
|
||||
moveB = radius * 0x100;
|
||||
this->y.WORD += moveB;
|
||||
CalculateEntityTileCollisions(this, DirectionSouthWest, collisionType);
|
||||
}
|
||||
}
|
||||
if ((this->collisions & COL_SOUTH_ANY) == COL_NONE) {
|
||||
moveA = gSineTable[angle + 0x40] * radius;
|
||||
this->y.WORD -= moveA;
|
||||
moveB = gSineTable[angle + 0x40] * radius;
|
||||
this->y.WORD -= moveB;
|
||||
}
|
||||
if ((this->collisions & COL_WEST_ANY) == COL_NONE) {
|
||||
moveA = gSineTable[angle] * radius;
|
||||
this->x.WORD += moveA;
|
||||
moveB = gSineTable[angle] * radius;
|
||||
this->x.WORD += moveB;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (((moveA >= -0x3333) && (moveA < 0x3333)) && ((moveB >= -0x3333) && (moveB < 0x3333))) {
|
||||
return FALSE;
|
||||
} else {
|
||||
if (moveA < -0x3333 || moveA >= 0x3333) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (moveB < -0x3333 || moveB >= 0x3333) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
END_NONMATCH*/
|
||||
|
||||
bool32 MoveWest(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
s32 moveA = 0;
|
||||
@@ -2018,14 +2026,13 @@ bool32 MoveWest(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/movement/MoveNorthWest.inc",
|
||||
bool32 MoveNorthWest(Entity* this, s32 radius, s32 angle, u32 collisionType))
|
||||
/*NONMATCH("asm/non_matching/movement/MoveNorthWest.inc",
|
||||
bool32 MoveNorthWest(Entity* this, s32 radius, s32 angle, u32 collisionType)) {
|
||||
bool32 MoveNorthWest(Entity* this, s32 radius, s32 angle, u32 collisionType) {
|
||||
s32 moveA = 0;
|
||||
s32 moveB = 0;
|
||||
u32 colNorthAny = (this->collisions & COL_NORTH_ANY);
|
||||
u32 colNorthAny2 = colNorthAny;
|
||||
u32 colWestAny = (this->collisions & COL_WEST_ANY);
|
||||
u32 colWestAny2 = colWestAny;
|
||||
if ((colNorthAny == COL_NONE) || (colWestAny == COL_NONE)) {
|
||||
if ((colNorthAny | colWestAny) == COL_NONE) {
|
||||
moveA = gSineTable[angle + 0x40] * radius;
|
||||
@@ -2033,12 +2040,12 @@ ASM_FUNC("asm/non_matching/movement/MoveNorthWest.inc",
|
||||
moveB = gSineTable[angle] * radius;
|
||||
this->x.WORD += moveB;
|
||||
} else {
|
||||
if (colNorthAny == COL_NORTH_EAST) {
|
||||
if (colNorthAny2 == COL_NORTH_EAST) {
|
||||
moveA = radius * 0x100;
|
||||
this->x.WORD -= moveA;
|
||||
CalculateEntityTileCollisions(this, DirectionNorthWest, collisionType);
|
||||
} else {
|
||||
if (colWestAny == COL_WEST_NORTH) {
|
||||
if (colWestAny2 == COL_WEST_NORTH) {
|
||||
moveA = radius * 0x100;
|
||||
this->y.WORD -= moveA;
|
||||
CalculateEntityTileCollisions(this, DirectionNorthWest, collisionType);
|
||||
@@ -2054,13 +2061,16 @@ ASM_FUNC("asm/non_matching/movement/MoveNorthWest.inc",
|
||||
}
|
||||
}
|
||||
}
|
||||
if (((moveA >= -0x3333) && (moveA < 0x3333)) && ((moveB >= -0x3333) && (moveB < 0x3333))) {
|
||||
return FALSE;
|
||||
} else {
|
||||
if (moveA < -0x3333 || moveA >= 0x3333) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
if (moveB < -0x3333 || moveB >= 0x3333) {
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
END_NONMATCH*/
|
||||
|
||||
bool32 ProcessMovement0(Entity* this) {
|
||||
bool32 result;
|
||||
|
||||
+1
-1
@@ -61,7 +61,7 @@ void (*const gObjectFunctions[])(Entity*) = {
|
||||
[JAR_PORTAL] = JarPortal,
|
||||
[BOSS_DOOR] = BossDoor,
|
||||
[OBJECT_3A] = Object3A,
|
||||
[PORTAL_MUSHROOM_STALKS] = MacroMushromStalks,
|
||||
[PORTAL_MUSHROOM_STALKS] = MacroMushroomStalks,
|
||||
[PORTAL_FALLING_PLAYER] = MacroPlayer,
|
||||
[OBJECT_3D] = Object3D,
|
||||
[OBJECT_3E] = Object3E,
|
||||
|
||||
@@ -1,12 +1,112 @@
|
||||
#include "entity.h"
|
||||
#include "area.h"
|
||||
#include "main.h"
|
||||
#include "sound.h"
|
||||
#include "object.h"
|
||||
|
||||
void sub_0808C964(Entity*);
|
||||
void sub_0808CA10(Entity*);
|
||||
|
||||
void MacroMushromStalks(Entity* this) {
|
||||
static const s16 gUnk_08121648[] = { 264, 252, 256, 256, 248, 260, 240, 264, 248, 260, 256, 256, 264, 252, 272, 248 };
|
||||
|
||||
void MacroMushroomStalks(Entity* this) {
|
||||
static void (*const actionFuncs[])(Entity*) = {
|
||||
sub_0808C964,
|
||||
sub_0808CA10,
|
||||
};
|
||||
actionFuncs[this->action](this);
|
||||
}
|
||||
|
||||
void Object75(Entity* this) {
|
||||
static void (*const actionFuncs[])(Entity*) = {
|
||||
sub_0808C964,
|
||||
sub_0808CA10,
|
||||
};
|
||||
|
||||
actionFuncs[this->action](this);
|
||||
}
|
||||
|
||||
void Object76(Entity* this) {
|
||||
static void (*const actionFuncs[])(Entity*) = {
|
||||
sub_0808C964,
|
||||
sub_0808CA10,
|
||||
};
|
||||
|
||||
actionFuncs[this->action](this);
|
||||
}
|
||||
|
||||
void sub_0808C964(Entity* this) {
|
||||
u32 uVar1;
|
||||
|
||||
this->frameIndex = this->type;
|
||||
if ((this->id == OBJECT_76) && (gUI.roomControls.area != AREA_HYRULE_TOWN)) {
|
||||
this->type -= 9;
|
||||
}
|
||||
if (4 < this->type) {
|
||||
if (gArea.portal_exit_dir != this->type2) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
this->action = 1;
|
||||
this->spriteSettings.draw = 1;
|
||||
this->spriteOrientation.flipY = 2;
|
||||
this->spriteRendering.b3 = 2;
|
||||
;
|
||||
this->spritePriority.b0 = this->type2;
|
||||
if (this->id != OBJECT_75 && (u8)(this->type - 1) < 3) {
|
||||
this->spriteRendering.b0 = 3;
|
||||
if (this->type == 1) {
|
||||
uVar1 = 0xe0;
|
||||
} else {
|
||||
uVar1 = 0x100;
|
||||
}
|
||||
SetAffineInfo(this, uVar1, uVar1, 0);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0808CA10(Entity* this) {
|
||||
s32 sVar3;
|
||||
s32 sVar5;
|
||||
|
||||
switch (this->type) {
|
||||
case 1:
|
||||
if (gUnk_02018EB0.unk_18 != 0) {
|
||||
this->timer = 0x20;
|
||||
gUnk_02018EB0.unk_18 = 0;
|
||||
SoundReq(SFX_12E);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
if (gUnk_02018EB0.unk_19 != 0) {
|
||||
this->timer = 0x20;
|
||||
gUnk_02018EB0.unk_19 = 0;
|
||||
SoundReq(SFX_12E);
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (gUnk_02018EB0.unk_1a != 0) {
|
||||
this->timer = 0x20;
|
||||
gUnk_02018EB0.unk_1a = 0;
|
||||
SoundReq(SFX_12E);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if ((this->id != OBJECT_75 && ((u8)(this->type - 1) < 3)) && this->timer != 0) {
|
||||
this->timer--;
|
||||
this->subtimer++;
|
||||
if (this->timer != 0) {
|
||||
sVar5 = gUnk_08121648[this->subtimer & 0xe];
|
||||
sVar3 = gUnk_08121648[(this->subtimer & 0xe) + 1];
|
||||
} else {
|
||||
sVar3 = 0x100;
|
||||
sVar5 = sVar3;
|
||||
}
|
||||
|
||||
if (this->type == 1) {
|
||||
sVar5 = sVar5 - 0x20;
|
||||
sVar3 = sVar3 - 0x20;
|
||||
}
|
||||
SetAffineInfo(this, sVar5, sVar3, 0);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -160,5 +160,3 @@ void sub_0808C8B8(Object3AEntity* this) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
}
|
||||
|
||||
const u16 gUnk_08121648[] = { 264, 252, 256, 256, 248, 260, 240, 264, 248, 260, 256, 256, 264, 252, 272, 248 };
|
||||
|
||||
@@ -808,7 +808,7 @@ void sub_0809584C(Object6AEntity* this) {
|
||||
u32 tmp, idx;
|
||||
|
||||
idx = super->health;
|
||||
if ((idx & 0x7F) != 0 && !ReadBit((u32*)gArea.filler5, idx - 1))
|
||||
if ((idx & 0x7F) != 0 && !ReadBit((u32*)gArea.filler6, idx - 1))
|
||||
DeleteThisEntity();
|
||||
if (super->timer != 0 && CheckKinstoneFused(super->type2))
|
||||
DeleteThisEntity();
|
||||
@@ -1178,9 +1178,9 @@ void sub_08095F38(Object6AEntity* this) {
|
||||
|
||||
void sub_08096028(Object6AEntity* this) {
|
||||
u32 type2 = 6;
|
||||
if (!CheckLocalFlagByBank(768, 123))
|
||||
if (!CheckLocalFlagByBank(FLAG_BANK_3, 123))
|
||||
type2 = 4;
|
||||
if (!CheckLocalFlagByBank(768, 122))
|
||||
if (!CheckLocalFlagByBank(FLAG_BANK_3, 122))
|
||||
type2 = 3;
|
||||
CreateObject(OBJECT_6A, 0x1F, type2);
|
||||
}
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
|
||||
extern void sub_0808C964(Entity*);
|
||||
extern void sub_0808CA10(Entity*);
|
||||
|
||||
void Object75(Entity* this) {
|
||||
static void (*const actionFuncs[])(Entity*) = {
|
||||
sub_0808C964,
|
||||
sub_0808CA10,
|
||||
};
|
||||
|
||||
actionFuncs[this->action](this);
|
||||
}
|
||||
@@ -1,14 +0,0 @@
|
||||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
|
||||
extern void sub_0808C964(Entity*);
|
||||
extern void sub_0808CA10(Entity*);
|
||||
|
||||
void Object76(Entity* this) {
|
||||
static void (*const actionFuncs[])(Entity*) = {
|
||||
sub_0808C964,
|
||||
sub_0808CA10,
|
||||
};
|
||||
|
||||
actionFuncs[this->action](this);
|
||||
}
|
||||
@@ -283,8 +283,8 @@ typedef struct {
|
||||
} struct_gUnk_08122898;
|
||||
|
||||
const struct_gUnk_08122898 gUnk_08122898[] = {
|
||||
{ 0x200, 0xa1, 0xa2 },
|
||||
{ 0x8c0, 0x6f, 0x70 },
|
||||
{ FLAG_BANK_2, 0xa1, 0xa2 },
|
||||
{ FLAG_BANK_10, 0x6f, 0x70 },
|
||||
};
|
||||
|
||||
u32 sub_080932D8(u32 param_1) {
|
||||
|
||||
@@ -294,9 +294,9 @@ void sub_080971E0(ObjectOnPillarEntity* this) {
|
||||
bool32 sub_08097348(u32 tilePosition) {
|
||||
u32 index;
|
||||
TileEntity* tileEntity = gSmallChests;
|
||||
for (index = 0; index < 8; index++, tileEntity++) {
|
||||
if (tileEntity->_4 == tilePosition) {
|
||||
return CheckLocalFlag(tileEntity->_1);
|
||||
for (index = 0; index < ARRAY_COUNT(gSmallChests); index++, tileEntity++) {
|
||||
if (tileEntity->tilePos == tilePosition) {
|
||||
return CheckLocalFlag(tileEntity->localFlag);
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
||||
@@ -23,7 +23,7 @@ void Whirlwind(Entity* this) {
|
||||
Whirlwind_Action2,
|
||||
};
|
||||
u32 tmp = this->health;
|
||||
if (((tmp & 0x7f) != 0) && (ReadBit(gArea.filler5, tmp - 1) == 0)) {
|
||||
if (((tmp & 0x7f) != 0) && (ReadBit(gArea.filler6, tmp - 1) == 0)) {
|
||||
DeleteThisEntity();
|
||||
}
|
||||
Whirlwind_Actions[this->action](this);
|
||||
|
||||
+1
-1
@@ -26,7 +26,7 @@ static bool32 sub_0807007C(struct_gUnk_020000C0*, u32);
|
||||
|
||||
void sub_0806F364(void) {
|
||||
gArea.filler[2] ^= 0x80;
|
||||
MemClear(&gArea.filler5[(gArea.filler[2] + 7) / 8], 16);
|
||||
MemClear(&gArea.filler6[(gArea.filler[2] + 7) / 8], 16);
|
||||
}
|
||||
|
||||
void sub_0806F38C(void) {
|
||||
|
||||
@@ -56,14 +56,14 @@ void sub_080A7C8C(u32 pos, u32 layer) {
|
||||
u32 found = 0;
|
||||
u32 i;
|
||||
for (i = 0; i < 8; ++i, ++t) {
|
||||
if (*(u16*)&t->_4 == pos) {
|
||||
if (*(u16*)&t->tilePos == pos) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ((layer >> 1) == ((u32)(t->_6 << 31) >> 31)) {
|
||||
if (found) {
|
||||
SetLocalFlag(t->_1);
|
||||
SetLocalFlag(t->localFlag);
|
||||
CreateItemEntity(t->_2, t->_3, 0);
|
||||
} else {
|
||||
CreateItemEntity(0x60, 0, 0);
|
||||
@@ -81,7 +81,7 @@ u32 sub_080A7CFC(u32 a1) {
|
||||
TileEntity* t = GetCurrentRoomProperty(3);
|
||||
if (t != 0) {
|
||||
do {
|
||||
if (t->_4 == a1) {
|
||||
if (t->tilePos == a1) {
|
||||
switch (t->type) {
|
||||
case SIGN:
|
||||
hint = FALSE;
|
||||
@@ -95,7 +95,7 @@ u32 sub_080A7CFC(u32 a1) {
|
||||
break;
|
||||
}
|
||||
t++;
|
||||
} while (t->_4 != 0);
|
||||
} while (t->tilePos != 0);
|
||||
}
|
||||
InitTileMessage(msg, hint);
|
||||
}
|
||||
|
||||
+20
-20
@@ -215,27 +215,27 @@ bool32 sub_080777A0(void) {
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/playerUtils/sub_08077880.inc", void sub_08077880(u32 param_1, u32 param_2, u32 param_3)) {
|
||||
void sub_08077880(Item itemId, u32 param_2, u32 param_3) {
|
||||
ItemBehavior* item;
|
||||
u16* puVar2;
|
||||
|
||||
if (param_1 - 1 < 0x1f) {
|
||||
if (gUnk_0811BE48[param_1].unk0[0] != 0) {
|
||||
if (itemId - 1 < 0x1f) {
|
||||
struct_0811BE48* ptr = &gUnk_0811BE48[itemId];
|
||||
puVar2 = &gPlayerState.field_0x90;
|
||||
if (ptr->unk0[0] != 0) {
|
||||
puVar2 = &gPlayerState.field_0x92;
|
||||
} else {
|
||||
puVar2 = &gPlayerState.field_0x90;
|
||||
}
|
||||
|
||||
if (((*puVar2 & param_2) != 0) || (param_3 != 0)) {
|
||||
item = sub_0807794C(param_1);
|
||||
item = sub_0807794C(itemId);
|
||||
if (item != NULL) {
|
||||
item->field_0x5[4] = gUnk_0811BE48[param_1].unk0[1];
|
||||
item->behaviorID = (u8)param_1;
|
||||
item->field_0x2[1] = (u8)param_2;
|
||||
item->field_0x5[4] = gUnk_0811BE48[itemId].unk0[1];
|
||||
item->behaviorID = itemId;
|
||||
item->field_0x2[1] = param_2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
bool32 sub_080778CC(void) {
|
||||
ItemBehavior* item;
|
||||
@@ -246,9 +246,9 @@ bool32 sub_080778CC(void) {
|
||||
(((sub_080789A8() != 0 || ((gPlayerState.field_0x90 & 0xf03) == 0)))))) {
|
||||
return FALSE;
|
||||
}
|
||||
item = sub_0807794C(0x1b);
|
||||
item = sub_0807794C(ITEM_TRAP);
|
||||
if (item != NULL) {
|
||||
item->behaviorID = 0x1b;
|
||||
item->behaviorID = ITEM_TRAP;
|
||||
item->field_0x5[4] = gUnk_0811BE48[0].unk0[0x145];
|
||||
return TRUE;
|
||||
} else {
|
||||
@@ -256,16 +256,16 @@ bool32 sub_080778CC(void) {
|
||||
}
|
||||
}
|
||||
|
||||
ItemBehavior* sub_0807794C(u32 param_1) {
|
||||
if (((((gPlayerState.queued_action == PLAYER_ROLL) && (param_1 != 0x1b)) ||
|
||||
(((gPlayerState.flags & (PL_ROLLING | PL_CLONING)) != 0 && (6 < param_1)))) ||
|
||||
((((gPlayerState.jump_status != 0 || (gPlayerEntity.z.WORD != 0)) && (6 < param_1)) ||
|
||||
(((gPlayerState.flags & PL_MINISH) != 0 && (gUnk_0811BE48[param_1].unk6[2] == 0)))))) ||
|
||||
((gPlayerState.floor_type == SURFACE_SWAMP && ((gPlayerState.field_0x37 != 0 && (1 < param_1 - 0x14)))))) {
|
||||
ItemBehavior* sub_0807794C(Item itemId) {
|
||||
if (((((gPlayerState.queued_action == PLAYER_ROLL) && (itemId != ITEM_TRAP)) ||
|
||||
(((gPlayerState.flags & (PL_ROLLING | PL_CLONING)) != 0 && (ITEM_FOURSWORD < itemId)))) ||
|
||||
((((gPlayerState.jump_status != 0 || (gPlayerEntity.z.WORD != 0)) && (ITEM_FOURSWORD < itemId)) ||
|
||||
(((gPlayerState.flags & PL_MINISH) != 0 && (gUnk_0811BE48[itemId].unk6[2] == 0)))))) ||
|
||||
((gPlayerState.floor_type == SURFACE_SWAMP && ((gPlayerState.field_0x37 != 0 && (1 < itemId - 0x14)))))) {
|
||||
return NULL;
|
||||
} else {
|
||||
u32 tmp = gUnk_0811BE48[param_1].unk0[2];
|
||||
return gUnk_0811BFC8[tmp](param_1);
|
||||
u32 tmp = gUnk_0811BE48[itemId].unk0[2];
|
||||
return gUnk_0811BFC8[tmp](itemId);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,7 +5,6 @@
|
||||
#include "object.h"
|
||||
|
||||
extern u32 sub_080B1AE0(u16, u8);
|
||||
extern Entity* LoadRoomEntity(EntityData*);
|
||||
|
||||
extern void (*const RemovableDust_Functions[])(Entity*);
|
||||
extern const u16 gUnk_08129FD0[];
|
||||
|
||||
+18
-22
@@ -51,32 +51,29 @@ void V1EyeLaser_Action2(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/v1EyeLaser/sub_080AB758.inc", void sub_080AB758(Entity* this)) {
|
||||
void sub_080AB758(Entity* this) {
|
||||
s32 r6 = 6;
|
||||
u32 r7 = 0;
|
||||
u32 index = 0;
|
||||
if (((u32)this->y.HALF.HI) <= (u16)(gRoomControls.origin_y + 0xd4)) {
|
||||
u32 tmp = 7;
|
||||
do {
|
||||
if ((index & tmp) == 7) {
|
||||
sub_080AB844(this, 4, r6);
|
||||
r6 += 0x3e;
|
||||
r7 += 0x3e;
|
||||
}
|
||||
index = (index + 1) & tmp;
|
||||
} while (this->y.HALF.HI + r7 + (index << 3) <= (u16)(gRoomControls.origin_y + 0xd4));
|
||||
u32 tmp = this->y.HALF.HI + r7 + (index << 3);
|
||||
for (; tmp <= (u16)(gRoomControls.origin_y + 0xd4);
|
||||
index = (index + 1) & 7, tmp = this->y.HALF.HI + r7 + (index << 3)) {
|
||||
if ((index & 7) == 7) {
|
||||
sub_080AB844(this, 4, r6);
|
||||
r6 += 0x3e;
|
||||
r7 += 0x3e;
|
||||
}
|
||||
}
|
||||
|
||||
index = 0;
|
||||
if (this->y.HALF.HI + r7 <= (u16)(gRoomControls.origin_y + 0xd4)) {
|
||||
u32 tmp = 3;
|
||||
do {
|
||||
if ((index & tmp) == 3) {
|
||||
sub_080AB844(this, 3, r6);
|
||||
r6 += 0x1e;
|
||||
r7 += 0x1e;
|
||||
}
|
||||
index = (index + 1) & tmp;
|
||||
} while (this->y.HALF.HI + r7 + (index << 3) <= (u16)(gRoomControls.origin_y + 0xd4));
|
||||
tmp = this->y.HALF.HI + r7 + (index << 3);
|
||||
for (; tmp <= (u16)(gRoomControls.origin_y + 0xd4);
|
||||
index = (index + 1) & 3, tmp = this->y.HALF.HI + r7 + (index << 3)) {
|
||||
if ((index & 3) == 3) {
|
||||
sub_080AB844(this, 3, r6);
|
||||
r6 += 0x1e;
|
||||
r7 += 0x1e;
|
||||
}
|
||||
}
|
||||
|
||||
if (index & 0x2) {
|
||||
@@ -89,7 +86,6 @@ NONMATCH("asm/non_matching/v1EyeLaser/sub_080AB758.inc", void sub_080AB758(Entit
|
||||
|
||||
sub_080AB844(this, 6, r6);
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_080AB844(Entity* this, s32 param_1, s32 param_2) {
|
||||
Entity* entity;
|
||||
|
||||
+21
-21
@@ -10,7 +10,7 @@
|
||||
static void sub_0804B058(EntityData* dat);
|
||||
extern void sub_0801AC98(void);
|
||||
extern u32 sub_08049D1C(u32);
|
||||
extern Entity* LoadRoomEntity(EntityData*);
|
||||
extern Entity* LoadRoomEntity(const EntityData*);
|
||||
extern void* GetRoomProperty(u32, u32, u32);
|
||||
|
||||
extern void** gCurrentRoomProperties;
|
||||
@@ -22,8 +22,8 @@ extern void sub_0804B16C(void);
|
||||
extern void ClearSmallChests(void);
|
||||
extern Entity* GetEmptyEntityByKind(u32 kind);
|
||||
|
||||
void RegisterRoomEntity(Entity*, EntityData*);
|
||||
void sub_0804AF0C(Entity*, EntityData*);
|
||||
void RegisterRoomEntity(Entity*, const EntityData*);
|
||||
void sub_0804AF0C(Entity*, const EntityData*);
|
||||
void sub_0804AFB0(void** properties);
|
||||
|
||||
void sub_08054524(void);
|
||||
@@ -39,7 +39,7 @@ static void LoadDestructibleTile(TileEntity*);
|
||||
static void LoadGrassDropTile(TileEntity*);
|
||||
static void LoadLocationTile(TileEntity*);
|
||||
|
||||
void LoadRoomEntityList(EntityData* listPtr) {
|
||||
void LoadRoomEntityList(const EntityData* listPtr) {
|
||||
if (listPtr != NULL) {
|
||||
while (listPtr->kind != 0xFF) {
|
||||
LoadRoomEntity(listPtr++);
|
||||
@@ -47,7 +47,7 @@ void LoadRoomEntityList(EntityData* listPtr) {
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/LoadRoomEntity.inc", Entity* LoadRoomEntity(EntityData* dat)) {
|
||||
NONMATCH("asm/non_matching/LoadRoomEntity.inc", Entity* LoadRoomEntity(const EntityData* dat)) {
|
||||
int kind;
|
||||
Entity* v4;
|
||||
Entity* v5;
|
||||
@@ -86,7 +86,7 @@ NONMATCH("asm/non_matching/LoadRoomEntity.inc", Entity* LoadRoomEntity(EntityDat
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void RegisterRoomEntity(Entity* ent, EntityData* dat) {
|
||||
void RegisterRoomEntity(Entity* ent, const EntityData* dat) {
|
||||
u32 list;
|
||||
u32 kind;
|
||||
void* offset;
|
||||
@@ -108,7 +108,7 @@ void RegisterRoomEntity(Entity* ent, EntityData* dat) {
|
||||
MemCopy(dat, offset, sizeof(EntityData));
|
||||
}
|
||||
|
||||
void sub_0804AF0C(Entity* ent, EntityData* dat) {
|
||||
void sub_0804AF0C(Entity* ent, const EntityData* dat) {
|
||||
switch (dat->flags & 0xf0) {
|
||||
case 0x0:
|
||||
ent->x.HALF.HI = dat->xPos + gRoomControls.origin_x;
|
||||
@@ -251,8 +251,8 @@ void* GetCurrentRoomProperty(u32 idx) {
|
||||
void sub_0804B16C(void) {
|
||||
TileEntity* tile = gSmallChests;
|
||||
do {
|
||||
if (tile->_4 != 0 && CheckLocalFlag(tile->_1)) {
|
||||
SetTileType(0x74, tile->_4, tile->_6 & 1 ? 2 : 1);
|
||||
if (tile->tilePos != 0 && CheckLocalFlag(tile->localFlag)) {
|
||||
SetTileType(0x74, tile->tilePos, tile->_6 & 1 ? 2 : 1);
|
||||
}
|
||||
} while (++tile < gSmallChests + 8);
|
||||
}
|
||||
@@ -297,28 +297,28 @@ void LoadRoomTileEntities(TileEntity* list) {
|
||||
}
|
||||
|
||||
static void LoadGrassDropTile(TileEntity* tile) {
|
||||
MemCopy(&gAreaDroptables[tile->_1], &gRoomVars.currentAreaDroptable, 0x20);
|
||||
MemCopy(&gAreaDroptables[tile->localFlag], &gRoomVars.currentAreaDroptable, 0x20);
|
||||
}
|
||||
|
||||
static void LoadLocationTile(TileEntity* tile) {
|
||||
gArea.locationIndex = tile->_1;
|
||||
gArea.locationIndex = tile->localFlag;
|
||||
sub_08054524();
|
||||
}
|
||||
|
||||
static void LoadRoomVisitTile(TileEntity* tile) {
|
||||
SetLocalFlag(tile->_1);
|
||||
SetLocalFlag(tile->localFlag);
|
||||
}
|
||||
|
||||
static void LoadSmallChestTile(TileEntity* tile) {
|
||||
TileEntity* t = gSmallChests;
|
||||
u32 i = 0;
|
||||
for (i = 0; i < 8; ++i, ++t) {
|
||||
if (!t->_4) {
|
||||
if (!t->tilePos) {
|
||||
MemCopy(tile, t, sizeof(TileEntity));
|
||||
if ((t->_6 & 1) && (gRoomControls.scroll_flags & 2) && !CheckLocalFlag(t->_1)) {
|
||||
Entity* e = CreateObject(OBJECT_52, t->_1, 0);
|
||||
if ((t->_6 & 1) && (gRoomControls.scroll_flags & 2) && !CheckLocalFlag(t->localFlag)) {
|
||||
Entity* e = CreateObject(OBJECT_52, t->localFlag, 0);
|
||||
if (e != NULL) {
|
||||
sub_0806F704(e, t->_4);
|
||||
sub_0806F704(e, t->tilePos);
|
||||
}
|
||||
}
|
||||
return;
|
||||
@@ -331,10 +331,10 @@ static void LoadBombableWallTile(TileEntity* tile) {
|
||||
if (mgr != NULL) {
|
||||
mgr->manager.type = 9;
|
||||
mgr->manager.subtype = 0x24;
|
||||
mgr->x = tile->_4;
|
||||
mgr->x = tile->tilePos;
|
||||
mgr->y = *(u16*)&tile->_6;
|
||||
mgr->field_0x35 = tile->_2;
|
||||
mgr->field_0x3e = tile->_1;
|
||||
mgr->field_0x3e = tile->localFlag;
|
||||
AppendEntityToList((Entity*)mgr, 6);
|
||||
}
|
||||
}
|
||||
@@ -345,7 +345,7 @@ static void LoadDarknessTile(TileEntity* tile) {
|
||||
|
||||
static void LoadDestructibleTile(TileEntity* tile) {
|
||||
if (CheckLocalFlag(*(u16*)&tile->_2)) {
|
||||
SetTileType(*(u16*)&tile->_6, tile->_4, tile->_1);
|
||||
SetTileType(*(u16*)&tile->_6, tile->tilePos, tile->localFlag);
|
||||
} else if (!gRoomVars.filler_0x1) {
|
||||
Manager* mgr;
|
||||
gRoomVars.filler_0x1 = 1;
|
||||
@@ -369,6 +369,6 @@ void sub_0804B388(u32 a1, u32 a2) {
|
||||
sub_080526F8(-1);
|
||||
}
|
||||
|
||||
void sub_0804B3C4(void* arg0) {
|
||||
LoadSmallChestTile(arg0);
|
||||
void sub_0804B3C4(TileEntity* tile) {
|
||||
LoadSmallChestTile(tile);
|
||||
}
|
||||
|
||||
+3
-6
@@ -4633,10 +4633,7 @@ u32 sub_unk3_SimonsSimulation_Main(void) {
|
||||
extern u8* gUnk_080F0D58[4];
|
||||
extern Entity* gUnk_080F0CB8[15];
|
||||
extern u8* gUnk_080F0E08[];
|
||||
extern struct {
|
||||
u32 unk_00;
|
||||
u32 unk_04;
|
||||
} gUnk_080F0E1C[];
|
||||
extern TileEntity gUnk_080F0E1C[];
|
||||
|
||||
void sub_StateChange_SimonsSimulation_Main(void) {
|
||||
u32 r;
|
||||
@@ -5356,7 +5353,7 @@ extern EntityData gUnk_080F5788;
|
||||
|
||||
void sub_StateChange_HouseInteriors3_StockwellShop(void) {
|
||||
LoadRoomEntityList(&gUnk_080F5758);
|
||||
if (!GetInventoryValue(ITEM_QST_DOGFOOD) && CheckLocalFlagByBank(0x200, 0x8f)) {
|
||||
if (!GetInventoryValue(ITEM_QST_DOGFOOD) && CheckLocalFlagByBank(FLAG_BANK_2, 0x8f)) {
|
||||
LoadRoomEntityList(&gUnk_080F57E8);
|
||||
}
|
||||
if (!CheckLocalFlag(0x55)) {
|
||||
@@ -5549,7 +5546,7 @@ extern EntityData gUnk_080F66AC;
|
||||
|
||||
void sub_StateChange_WindTribeTowerRoof_Main(void) {
|
||||
sub_0805B4D0(5);
|
||||
if (CheckGlobalFlag(LV5_CLEAR) && !CheckLocalFlagByBank(0x100, 5)) {
|
||||
if (CheckGlobalFlag(LV5_CLEAR) && !CheckLocalFlagByBank(FLAG_BANK_1, 5)) {
|
||||
LoadRoomEntityList(&gUnk_080F66AC);
|
||||
}
|
||||
SetWorldMapPos(8, 0, 0x1e8, 0x158);
|
||||
|
||||
+2
-10
@@ -69,7 +69,6 @@ extern const EntityData gUnk_080FF264[];
|
||||
|
||||
extern void (*const gUnk_080FF28C[])(void);
|
||||
|
||||
extern Entity* LoadRoomEntity(EntityData*);
|
||||
extern void sub_08054A14(u32);
|
||||
|
||||
extern const EntityData gUnk_080FEE48[];
|
||||
@@ -90,13 +89,6 @@ extern void (*const gUnk_080FF330[])(void);
|
||||
|
||||
void sub_08055994(void);
|
||||
|
||||
typedef struct {
|
||||
u8 unk_0[6];
|
||||
u8 unk_6;
|
||||
u8 unk_7;
|
||||
} struct_080FEAC8;
|
||||
extern struct_080FEAC8 gUnk_080FEAC8[];
|
||||
|
||||
extern void (*const gUnk_080FF35C[])(void);
|
||||
|
||||
extern const EntityData gUnk_080FF33C[];
|
||||
@@ -676,8 +668,8 @@ void sub_08055978(void) {
|
||||
|
||||
void sub_08055994(void) {
|
||||
u32 layer;
|
||||
struct_080FEAC8* ptr = &gUnk_080FEAC8[gMenu.field_0x4];
|
||||
if ((ptr->unk_6 & 1) != 0) {
|
||||
TileEntity* ptr = &gUnk_080FEAC8[gMenu.field_0x4];
|
||||
if ((ptr->_6 & 1) != 0) {
|
||||
layer = 2;
|
||||
} else {
|
||||
layer = 1;
|
||||
|
||||
+1
-1
@@ -765,7 +765,7 @@ void sub_080A5D1C(void) {
|
||||
|
||||
bool32 sub_080A5F24(void) {
|
||||
bool32 result = TRUE;
|
||||
if ((gArea.dungeon_idx == 6) && CheckLocalFlagByBank(0x8c0, 0x7b)) {
|
||||
if ((gArea.dungeon_idx == 6) && CheckLocalFlagByBank(FLAG_BANK_10, 0x7b)) {
|
||||
result = 0;
|
||||
}
|
||||
return result;
|
||||
|
||||
Reference in New Issue
Block a user