mirror of
https://github.com/zeldaret/tmc
synced 2026-05-26 15:46:05 -04:00
Merge pull request #491 from octorock/patch
This commit is contained in:
@@ -1,63 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
ldr r4, _0801A538 @ =gPlayerState
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r5, #0x80
|
||||
ands r0, r5
|
||||
cmp r0, #0
|
||||
beq _0801A544
|
||||
movs r0, #0x45
|
||||
bl GetInventoryValue
|
||||
cmp r0, #1
|
||||
bne _0801A564
|
||||
ldrb r1, [r4, #0xd]
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801A564
|
||||
ldr r2, _0801A53C @ =gPlayerEntity
|
||||
ldrb r0, [r2, #0x15]
|
||||
cmp r1, r0
|
||||
bne _0801A564
|
||||
ldrb r0, [r2, #0x15]
|
||||
adds r0, #4
|
||||
movs r1, #0x18
|
||||
ands r0, r1
|
||||
ldr r1, _0801A540 @ =gUnk_080B44A0
|
||||
lsrs r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldrh r1, [r0]
|
||||
ldrh r0, [r2, #0x2a]
|
||||
b _0801A55E
|
||||
.align 2, 0
|
||||
_0801A538: .4byte gPlayerState
|
||||
_0801A53C: .4byte gPlayerEntity
|
||||
_0801A540: .4byte gUnk_080B44A0
|
||||
_0801A544:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x35
|
||||
ldrb r0, [r0]
|
||||
ldrb r1, [r4, #0xd]
|
||||
orrs r0, r1
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801A564
|
||||
ldr r0, _0801A568 @ =gPlayerEntity
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #1
|
||||
_0801A55E:
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0801A56C
|
||||
_0801A564:
|
||||
movs r0, #0
|
||||
b _0801A56E
|
||||
.align 2, 0
|
||||
_0801A568: .4byte gPlayerEntity
|
||||
_0801A56C:
|
||||
movs r0, #1
|
||||
_0801A56E:
|
||||
pop {r4, r5, pc}
|
||||
.syntax divided
|
||||
@@ -1,28 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
lsrs r4, r1, #3
|
||||
lsls r4, r4, #4
|
||||
lsrs r3, r0, #3
|
||||
adds r4, r4, r3
|
||||
lsls r4, r4, #5
|
||||
ldr r3, _0801DF58 @ =gUnk_0201AEE0
|
||||
adds r4, r4, r3
|
||||
movs r3, #7
|
||||
ands r1, r3
|
||||
lsls r1, r1, #2
|
||||
adds r4, r4, r1
|
||||
ands r0, r3
|
||||
lsls r0, r0, #2
|
||||
lsls r2, r0
|
||||
ldr r1, _0801DF5C @ =gUnk_080C9460
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r4]
|
||||
ldr r0, [r0]
|
||||
ands r1, r0
|
||||
orrs r1, r2
|
||||
str r1, [r4]
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0801DF58: .4byte gUnk_0201AEE0
|
||||
_0801DF5C: .4byte gUnk_080C9460
|
||||
.syntax divided
|
||||
@@ -1,51 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_0801E82C
|
||||
adds r0, r4, #0
|
||||
subs r0, #0x65
|
||||
cmp r0, #0x10
|
||||
bhi _0801E790
|
||||
adds r0, r4, #0
|
||||
bl sub_0801E8B0
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
bge _0801E76E
|
||||
movs r1, #0
|
||||
ldr r0, _0801E794 @ =gSave
|
||||
movs r3, #0x8c
|
||||
lsls r3, r3, #1
|
||||
adds r2, r0, r3
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #0
|
||||
beq _0801E76E
|
||||
_0801E764:
|
||||
adds r1, #1
|
||||
adds r0, r1, r2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0801E764
|
||||
_0801E76E:
|
||||
cmp r1, #0x11
|
||||
bhi _0801E790
|
||||
ldr r2, _0801E794 @ =gSave
|
||||
movs r3, #0x8c
|
||||
lsls r3, r3, #1
|
||||
adds r0, r2, r3
|
||||
adds r0, r1, r0
|
||||
strb r4, [r0]
|
||||
adds r3, #0x13
|
||||
adds r0, r2, r3
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r1]
|
||||
adds r0, #1
|
||||
cmp r0, #0x63
|
||||
ble _0801E78E
|
||||
movs r0, #0x63
|
||||
_0801E78E:
|
||||
strb r0, [r1]
|
||||
_0801E790:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0801E794: .4byte gSave
|
||||
.syntax divided
|
||||
@@ -1,57 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
ldr r0, _080538B4 @ =gFadeControl
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080538F8
|
||||
ldr r1, _080538B8 @ =gMenu
|
||||
ldrh r0, [r1, #8]
|
||||
subs r0, #1
|
||||
strh r0, [r1, #8]
|
||||
ldrh r0, [r1, #0xa]
|
||||
adds r4, r1, #0
|
||||
cmp r0, #0
|
||||
beq _080538BC
|
||||
subs r0, #1
|
||||
strh r0, [r4, #0xa]
|
||||
b _080538E4
|
||||
.align 2, 0
|
||||
_080538B4: .4byte gFadeControl
|
||||
_080538B8: .4byte gMenu
|
||||
_080538BC:
|
||||
ldr r0, _080538FC @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080538E4
|
||||
ldrb r1, [r4, #7]
|
||||
cmp r1, #0xf
|
||||
bhi _080538E4
|
||||
adds r1, #1
|
||||
strb r1, [r4, #7]
|
||||
lsls r1, r1, #0x18
|
||||
ldr r3, _08053900 @ =gScreen
|
||||
lsrs r2, r1, #0x10
|
||||
lsrs r1, r1, #0x19
|
||||
movs r0, #0x10
|
||||
subs r0, r0, r1
|
||||
orrs r2, r0
|
||||
adds r3, #0x68
|
||||
strh r2, [r3]
|
||||
_080538E4:
|
||||
ldrh r0, [r4, #8]
|
||||
cmp r0, #0
|
||||
bne _080538F8
|
||||
ldrb r0, [r4, #6]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #6]
|
||||
movs r0, #5
|
||||
movs r1, #8
|
||||
bl SetFade
|
||||
_080538F8:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080538FC: .4byte gRoomTransition
|
||||
_08053900: .4byte gScreen
|
||||
.syntax divided
|
||||
@@ -1,57 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
ldr r0, _08053924 @ =gFadeControl
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _08053968
|
||||
ldr r1, _08053928 @ =gMenu
|
||||
ldrh r0, [r1, #8]
|
||||
subs r0, #1
|
||||
strh r0, [r1, #8]
|
||||
ldrh r0, [r1, #0xa]
|
||||
adds r4, r1, #0
|
||||
cmp r0, #0
|
||||
beq _0805392C
|
||||
subs r0, #1
|
||||
strh r0, [r4, #0xa]
|
||||
b _08053954
|
||||
.align 2, 0
|
||||
_08053924: .4byte gFadeControl
|
||||
_08053928: .4byte gMenu
|
||||
_0805392C:
|
||||
ldr r0, _0805396C @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #1
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08053954
|
||||
ldrb r1, [r4, #7]
|
||||
cmp r1, #0xf
|
||||
bhi _08053954
|
||||
adds r1, #1
|
||||
strb r1, [r4, #7]
|
||||
lsls r1, r1, #0x18
|
||||
ldr r3, _08053970 @ =gScreen
|
||||
lsrs r2, r1, #0x10
|
||||
lsrs r1, r1, #0x19
|
||||
movs r0, #0x10
|
||||
subs r0, r0, r1
|
||||
orrs r2, r0
|
||||
adds r3, #0x68
|
||||
strh r2, [r3]
|
||||
_08053954:
|
||||
ldrh r0, [r4, #8]
|
||||
cmp r0, #0
|
||||
bne _08053968
|
||||
ldrb r0, [r4, #6]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #6]
|
||||
movs r0, #5
|
||||
movs r1, #1
|
||||
bl SetFade
|
||||
_08053968:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0805396C: .4byte gRoomTransition
|
||||
_08053970: .4byte gScreen
|
||||
.syntax divided
|
||||
@@ -1,47 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r6, _08053D20 @ =gMenu
|
||||
ldrb r4, [r6, #3]
|
||||
lsls r4, r4, #4
|
||||
ldr r0, _08053D24 @ =gUnk_080FCF04
|
||||
adds r4, r4, r0
|
||||
adds r0, r4, #0
|
||||
adds r0, #8
|
||||
str r0, [r6, #0xc]
|
||||
ldr r0, [r4]
|
||||
bl LoadRoomEntityList
|
||||
ldrb r0, [r4, #4]
|
||||
ldrb r1, [r4, #5]
|
||||
movs r2, #1
|
||||
bl GetRoomProperty
|
||||
bl LoadRoomEntityList
|
||||
ldrb r0, [r4, #4]
|
||||
ldrb r1, [r4, #5]
|
||||
movs r2, #2
|
||||
bl GetRoomProperty
|
||||
bl LoadRoomEntityList
|
||||
movs r5, #1
|
||||
strb r5, [r6, #6]
|
||||
ldr r2, _08053D28 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _08053D2C @ =0x0000FEFF
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
ldr r0, _08053D30 @ =gUpdateVisibleTiles
|
||||
strb r5, [r0]
|
||||
movs r0, #4
|
||||
movs r1, #0x10
|
||||
bl SetFade
|
||||
ldrb r0, [r4, #5]
|
||||
cmp r0, #0x1d
|
||||
bne _08053D1E
|
||||
strh r5, [r6, #0xa]
|
||||
_08053D1E:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08053D20: .4byte gMenu
|
||||
_08053D24: .4byte gUnk_080FCF04
|
||||
_08053D28: .4byte gScreen
|
||||
_08053D2C: .4byte 0x0000FEFF
|
||||
_08053D30: .4byte gUpdateVisibleTiles
|
||||
.syntax divided
|
||||
@@ -1,40 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
ldr r4, _080548DC @ =gUI
|
||||
ldrb r1, [r4, #3]
|
||||
lsls r0, r1, #2
|
||||
adds r0, r0, r1
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _080548E0 @ =gUnk_080FE320
|
||||
adds r0, r0, r1
|
||||
ldr r2, _080548E4 @ =gMenu
|
||||
ldrb r1, [r0]
|
||||
movs r3, #0
|
||||
strb r1, [r2]
|
||||
ldrb r1, [r0, #1]
|
||||
strb r1, [r2, #3]
|
||||
ldrb r1, [r4, #3]
|
||||
strb r1, [r2, #4]
|
||||
str r0, [r2, #0xc]
|
||||
ldrb r0, [r2, #5]
|
||||
adds r0, #1
|
||||
strb r0, [r2, #5]
|
||||
strb r3, [r2, #6]
|
||||
movs r0, #0x96
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r2, #8]
|
||||
movs r0, #0
|
||||
bl DispReset
|
||||
ldrb r0, [r4, #3]
|
||||
movs r1, #1
|
||||
bl sub_08054974
|
||||
bl sub_0806F364
|
||||
movs r0, #0xff
|
||||
bl ClearRoomFlag
|
||||
bl sub_080548E8
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080548DC: .4byte gUI
|
||||
_080548E0: .4byte gUnk_080FE320
|
||||
_080548E4: .4byte gMenu
|
||||
.syntax divided
|
||||
@@ -1,33 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
bl MessageInitialize
|
||||
bl sub_0806F38C
|
||||
ldr r1, _08054948 @ =gUnk_080C9CBC
|
||||
ldr r0, _0805494C @ =gFuseInfo
|
||||
ldrb r0, [r0, #3]
|
||||
lsls r0, r0, #3
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0, #7]
|
||||
cmp r0, #0
|
||||
beq _08054954
|
||||
ldr r0, _08054950 @ =gUI
|
||||
ldrb r1, [r0, #3]
|
||||
movs r0, #0xa
|
||||
bl MenuFadeIn
|
||||
b _08054962
|
||||
.align 2, 0
|
||||
_08054948: .4byte gUnk_080C9CBC
|
||||
_0805494C: .4byte gFuseInfo
|
||||
_08054950: .4byte gUI
|
||||
_08054954:
|
||||
ldr r1, _08054964 @ =gUI
|
||||
movs r0, #3
|
||||
strb r0, [r1]
|
||||
movs r0, #7
|
||||
movs r1, #0x10
|
||||
bl SetFade
|
||||
_08054962:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08054964: .4byte gUI
|
||||
.syntax divided
|
||||
@@ -1,70 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r1, #0
|
||||
lsls r1, r0, #2
|
||||
adds r1, r1, r0
|
||||
lsls r1, r1, #2
|
||||
ldr r0, _080549B0 @ =gUnk_080FE320
|
||||
adds r6, r1, r0
|
||||
ldrb r0, [r6, #2]
|
||||
ldrb r1, [r6, #3]
|
||||
bl SetCurrentRoomPropertyList
|
||||
ldr r4, _080549B4 @ =gRoomControls
|
||||
ldrb r0, [r6, #2]
|
||||
strb r0, [r4, #4]
|
||||
ldrb r0, [r6, #3]
|
||||
strb r0, [r4, #5]
|
||||
bl LoadGfxGroups
|
||||
ldrb r0, [r4, #4]
|
||||
bl GetFlagBankOffset
|
||||
ldr r1, _080549B8 @ =gArea
|
||||
strh r0, [r1, #4]
|
||||
cmp r5, #0
|
||||
beq _080549BC
|
||||
ldrb r0, [r6, #2]
|
||||
ldrb r1, [r6, #3]
|
||||
bl LoadAuxiliaryRoom
|
||||
b _080549CE
|
||||
.align 2, 0
|
||||
_080549B0: .4byte gUnk_080FE320
|
||||
_080549B4: .4byte gRoomControls
|
||||
_080549B8: .4byte gArea
|
||||
_080549BC:
|
||||
ldrb r0, [r6, #2]
|
||||
ldrb r1, [r6, #3]
|
||||
bl sub_08052FF4
|
||||
bl InitializeCamera
|
||||
ldr r1, _08054A00 @ =gUpdateVisibleTiles
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
_080549CE:
|
||||
ldr r2, _08054A04 @ =gScreen
|
||||
ldrh r1, [r2]
|
||||
ldr r0, _08054A08 @ =0x00001FFF
|
||||
ands r0, r1
|
||||
strh r0, [r2]
|
||||
ldr r1, _08054A0C @ =gRoomControls
|
||||
ldrh r0, [r6, #4]
|
||||
ldrh r2, [r1, #6]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1, #0xa]
|
||||
ldrh r0, [r6, #6]
|
||||
ldrh r2, [r1, #8]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1, #0xc]
|
||||
ldrb r0, [r6, #2]
|
||||
cmp r0, #2
|
||||
bne _080549F4
|
||||
bl TryLoadPrologueHyruleTown
|
||||
_080549F4:
|
||||
ldr r0, _08054A10 @ =gUI
|
||||
ldrb r0, [r0, #3]
|
||||
bl sub_08018710
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08054A00: .4byte gUpdateVisibleTiles
|
||||
_08054A04: .4byte gScreen
|
||||
_08054A08: .4byte 0x00001FFF
|
||||
_08054A0C: .4byte gRoomControls
|
||||
_08054A10: .4byte gUI
|
||||
.syntax divided
|
||||
@@ -1,22 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
lsls r1, r0, #2
|
||||
adds r1, r1, r0
|
||||
lsls r1, r1, #2
|
||||
ldr r0, _08054A38 @ =gUnk_080FE320
|
||||
adds r2, r1, r0
|
||||
ldrb r0, [r2, #0x11]
|
||||
cmp r0, #0xd
|
||||
bhi _08054A34
|
||||
ldr r1, _08054A3C @ =gLocalFlagBanks
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r2, #0x12]
|
||||
bl SetLocalFlagByBank
|
||||
_08054A34:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08054A38: .4byte gUnk_080FE320
|
||||
_08054A3C: .4byte gLocalFlagBanks
|
||||
.syntax divided
|
||||
@@ -1,69 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
adds r4, r1, #0
|
||||
bl Random
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
adds r0, #0x3c
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x68
|
||||
movs r3, #0
|
||||
strb r0, [r1]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x69
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
lsls r1, r1, #2
|
||||
ldr r0, _0806999C @ =gUnk_08111C5C
|
||||
adds r1, r1, r0
|
||||
ldr r2, _080699A0 @ =gRoomControls
|
||||
ldrh r0, [r1]
|
||||
ldrh r6, [r2, #6]
|
||||
adds r0, r0, r6
|
||||
strh r0, [r4, #0x1e]
|
||||
ldrh r0, [r1, #2]
|
||||
ldrh r2, [r2, #8]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r4, #0x22]
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0x19]
|
||||
ldr r0, [r4, #8]
|
||||
movs r1, #2
|
||||
orrs r0, r1
|
||||
str r0, [r4, #8]
|
||||
str r3, [r4, #0x14]
|
||||
movs r1, #0x1e
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r5, r2]
|
||||
subs r0, r0, r1
|
||||
movs r3, #0x22
|
||||
ldrsh r1, [r4, r3]
|
||||
movs r6, #0x32
|
||||
ldrsh r2, [r5, r6]
|
||||
subs r1, r1, r2
|
||||
bl sub_080045DA
|
||||
strb r0, [r5, #0x15]
|
||||
ldrb r2, [r5, #0x14]
|
||||
movs r1, #0x80
|
||||
ands r1, r2
|
||||
ldr r2, _080699A4 @ =gUnk_08111C74
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x1c
|
||||
adds r0, r0, r2
|
||||
ldrb r0, [r0]
|
||||
orrs r1, r0
|
||||
strb r1, [r5, #0x14]
|
||||
ldr r2, _080699A8 @ =gActiveScriptInfo
|
||||
ldrb r1, [r2, #7]
|
||||
movs r0, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #7]
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0806999C: .4byte gUnk_08111C5C
|
||||
_080699A0: .4byte gRoomControls
|
||||
_080699A4: .4byte gUnk_08111C74
|
||||
_080699A8: .4byte gActiveScriptInfo
|
||||
.syntax divided
|
||||
@@ -1,69 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
adds r4, r1, #0
|
||||
bl Random
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
adds r0, #0x3c
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x68
|
||||
movs r3, #0
|
||||
strb r0, [r1]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x69
|
||||
movs r1, #0
|
||||
ldrsb r1, [r0, r1]
|
||||
lsls r1, r1, #2
|
||||
ldr r0, _08069A2C @ =gUnk_08111C84
|
||||
adds r1, r1, r0
|
||||
ldr r2, _08069A30 @ =gRoomControls
|
||||
ldrh r0, [r1]
|
||||
ldrh r6, [r2, #6]
|
||||
adds r0, r0, r6
|
||||
strh r0, [r4, #0x1e]
|
||||
ldrh r0, [r1, #2]
|
||||
ldrh r2, [r2, #8]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r4, #0x22]
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0x19]
|
||||
ldr r0, [r4, #8]
|
||||
movs r1, #2
|
||||
orrs r0, r1
|
||||
str r0, [r4, #8]
|
||||
str r3, [r4, #0x14]
|
||||
movs r1, #0x1e
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r5, r2]
|
||||
subs r0, r0, r1
|
||||
movs r3, #0x22
|
||||
ldrsh r1, [r4, r3]
|
||||
movs r6, #0x32
|
||||
ldrsh r2, [r5, r6]
|
||||
subs r1, r1, r2
|
||||
bl sub_080045DA
|
||||
strb r0, [r5, #0x15]
|
||||
ldrb r2, [r5, #0x14]
|
||||
movs r1, #0x80
|
||||
ands r1, r2
|
||||
ldr r2, _08069A34 @ =gUnk_08111C8C
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x1c
|
||||
adds r0, r0, r2
|
||||
ldrb r0, [r0]
|
||||
orrs r1, r0
|
||||
strb r1, [r5, #0x14]
|
||||
ldr r2, _08069A38 @ =gActiveScriptInfo
|
||||
ldrb r1, [r2, #7]
|
||||
movs r0, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #7]
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08069A2C: .4byte gUnk_08111C84
|
||||
_08069A30: .4byte gRoomControls
|
||||
_08069A34: .4byte gUnk_08111C8C
|
||||
_08069A38: .4byte gActiveScriptInfo
|
||||
.syntax divided
|
||||
@@ -1,59 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
ldr r4, [r6, #0x54]
|
||||
ldrb r0, [r4, #0x15]
|
||||
ldrb r3, [r6, #0x15]
|
||||
subs r2, r0, r3
|
||||
movs r1, #0xff
|
||||
ands r2, r1
|
||||
adds r0, r2, #0
|
||||
adds r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0x10
|
||||
ble _080AC78A
|
||||
cmp r2, #0x80
|
||||
ble _080AC784
|
||||
adds r0, r3, #0
|
||||
subs r0, #8
|
||||
b _080AC788
|
||||
_080AC784:
|
||||
adds r0, r3, #0
|
||||
adds r0, #8
|
||||
_080AC788:
|
||||
strb r0, [r4, #0x15]
|
||||
_080AC78A:
|
||||
ldr r5, [r4, #0x54]
|
||||
ldr r0, [r5, #0x54]
|
||||
cmp r0, #0
|
||||
bne _080AC79C
|
||||
ldr r0, [r6, #0x50]
|
||||
ldrb r0, [r0, #0x14]
|
||||
movs r1, #0x80
|
||||
eors r0, r1
|
||||
b _080AC7BE
|
||||
_080AC79C:
|
||||
ldrb r0, [r5, #0x15]
|
||||
ldrb r3, [r4, #0x15]
|
||||
subs r2, r0, r3
|
||||
movs r1, #0xff
|
||||
ands r2, r1
|
||||
adds r0, r2, #0
|
||||
adds r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0x10
|
||||
ble _080AC7C0
|
||||
cmp r2, #0x80
|
||||
ble _080AC7BA
|
||||
adds r0, r3, #0
|
||||
subs r0, #8
|
||||
b _080AC7BE
|
||||
_080AC7BA:
|
||||
adds r0, r3, #0
|
||||
adds r0, #8
|
||||
_080AC7BE:
|
||||
strb r0, [r5, #0x15]
|
||||
_080AC7C0:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,98 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r4, r0, #0
|
||||
mov r8, r1
|
||||
bl PlayerTryDropObject
|
||||
cmp r0, #0
|
||||
beq _080765D4
|
||||
ldr r5, _0807655C @ =gPlayerState
|
||||
adds r1, r5, #0
|
||||
adds r1, #0xa8
|
||||
movs r0, #4
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r5, #2]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080765D4
|
||||
ldrb r0, [r5, #0x1f]
|
||||
cmp r0, #0
|
||||
bne _080765D4
|
||||
ldr r6, _08076560 @ =gPlayerEntity
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x42
|
||||
ldrb r7, [r0]
|
||||
cmp r7, #0
|
||||
beq _08076564
|
||||
adds r0, r4, #0
|
||||
mov r1, r8
|
||||
bl PlayerCancelHoldItem
|
||||
b _080765D4
|
||||
.align 2, 0
|
||||
_0807655C: .4byte gPlayerState
|
||||
_08076560: .4byte gPlayerEntity
|
||||
_08076564:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _080765B0 @ =0x00008018
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080765D4
|
||||
adds r0, r6, #0
|
||||
bl sub_0806F948
|
||||
movs r0, #5
|
||||
strb r0, [r5, #5]
|
||||
ldr r1, [r4, #0x18]
|
||||
movs r0, #2
|
||||
strb r0, [r1, #0xd]
|
||||
ldr r2, [r4, #0x18]
|
||||
ldrb r1, [r6, #0x14]
|
||||
movs r0, #0xe
|
||||
ands r0, r1
|
||||
lsls r0, r0, #2
|
||||
strb r0, [r2, #0x15]
|
||||
str r7, [r4, #0x18]
|
||||
ldrb r0, [r4, #4]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #4]
|
||||
movs r0, #0xf
|
||||
strb r0, [r4, #0xf]
|
||||
ldr r0, [r5, #0x30]
|
||||
movs r1, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080765B4
|
||||
movs r1, #0x93
|
||||
lsls r1, r1, #4
|
||||
adds r0, r4, #0
|
||||
bl sub_08077DF4
|
||||
b _080765BE
|
||||
.align 2, 0
|
||||
_080765B0: .4byte 0x00008018
|
||||
_080765B4:
|
||||
movs r1, #0xd1
|
||||
lsls r1, r1, #2
|
||||
adds r0, r4, #0
|
||||
bl sub_08077DF4
|
||||
_080765BE:
|
||||
ldr r2, _080765DC @ =gPlayerState
|
||||
movs r1, #8
|
||||
mov r0, r8
|
||||
asrs r1, r0
|
||||
ldrb r3, [r2, #0xa]
|
||||
adds r0, r1, #0
|
||||
orrs r0, r3
|
||||
strb r0, [r2, #0xa]
|
||||
ldrb r0, [r2, #0xb]
|
||||
orrs r1, r0
|
||||
strb r1, [r2, #0xb]
|
||||
_080765D4:
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_080765DC: .4byte gPlayerState
|
||||
.syntax divided
|
||||
@@ -1,24 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
movs r1, #0
|
||||
ldr r0, _080A3B6C @ =gSave
|
||||
ldr r3, _080A3B70 @ =0x0000012B
|
||||
adds r2, r0, r3
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #0
|
||||
beq _080A3B66
|
||||
_080A3B58:
|
||||
adds r1, #1
|
||||
cmp r1, #0x12
|
||||
bhi _080A3B66
|
||||
adds r0, r1, r2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080A3B58
|
||||
_080A3B66:
|
||||
adds r0, r1, #0
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080A3B6C: .4byte gSave
|
||||
_080A3B70: .4byte 0x0000012B
|
||||
.syntax divided
|
||||
@@ -1,54 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x5b
|
||||
ldrb r1, [r0]
|
||||
movs r0, #4
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08063006
|
||||
movs r6, #1
|
||||
movs r5, #0
|
||||
b _0806300A
|
||||
_08063006:
|
||||
movs r6, #0
|
||||
movs r5, #1
|
||||
_0806300A:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5b
|
||||
ldrb r1, [r0]
|
||||
movs r0, #8
|
||||
ands r0, r1
|
||||
movs r7, #0x8e
|
||||
lsls r7, r7, #1
|
||||
cmp r0, #0
|
||||
beq _0806301E
|
||||
movs r7, #0x16
|
||||
_0806301E:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r2, [r0]
|
||||
movs r0, #0x81
|
||||
rsbs r0, r0, #0
|
||||
ands r2, r0
|
||||
subs r2, #1
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
bl SetExtraSpriteFrame
|
||||
ldrb r2, [r4, #0x1e]
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
bl SetExtraSpriteFrame
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
adds r2, r7, #0
|
||||
bl sub_0806FF10
|
||||
adds r0, r4, #0
|
||||
adds r1, r5, #0
|
||||
adds r2, r6, #0
|
||||
bl SetSpriteSubEntryOffsetData1
|
||||
adds r0, r4, #0
|
||||
bl sub_0807000C
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,88 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
mov r8, r2
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
adds r0, r0, r6
|
||||
ldr r2, _0807A288 @ =gRoomControls
|
||||
ldrh r1, [r2, #6]
|
||||
subs r1, r0, r1
|
||||
lsrs r4, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r4, r3
|
||||
movs r7, #0x32
|
||||
ldrsh r1, [r5, r7]
|
||||
add r1, r8
|
||||
ldrh r2, [r2, #8]
|
||||
subs r2, r1, r2
|
||||
asrs r2, r2, #4
|
||||
ands r2, r3
|
||||
lsls r2, r2, #6
|
||||
orrs r4, r2
|
||||
ldr r2, _0807A28C @ =gPlayerEntity
|
||||
adds r2, #0x38
|
||||
ldrb r2, [r2]
|
||||
bl GetTileTypeByPos
|
||||
adds r2, r0, #0
|
||||
ldr r1, _0807A290 @ =gPlayerState
|
||||
ldrh r0, [r1, #0x24]
|
||||
cmp r2, r0
|
||||
beq _0807A23A
|
||||
adds r3, r1, #0
|
||||
adds r3, #0x37
|
||||
movs r0, #0
|
||||
strb r0, [r3]
|
||||
ldrh r7, [r1, #0x24]
|
||||
cmp r2, r7
|
||||
bne _0807A242
|
||||
_0807A23A:
|
||||
adds r3, r1, #0
|
||||
ldrh r0, [r3, #0x22]
|
||||
cmp r4, r0
|
||||
beq _0807A24E
|
||||
_0807A242:
|
||||
ldr r0, _0807A290 @ =gPlayerState
|
||||
movs r1, #0
|
||||
strh r4, [r0, #0x22]
|
||||
strh r2, [r0, #0x24]
|
||||
strb r1, [r0, #0x11]
|
||||
adds r3, r0, #0
|
||||
_0807A24E:
|
||||
adds r2, r3, #0
|
||||
ldrb r1, [r2, #0x11]
|
||||
adds r0, r1, #0
|
||||
cmp r0, #0xff
|
||||
beq _0807A25C
|
||||
adds r0, r1, #1
|
||||
strb r0, [r2, #0x11]
|
||||
_0807A25C:
|
||||
adds r2, #0x37
|
||||
ldrb r1, [r2]
|
||||
adds r0, r1, #0
|
||||
cmp r0, #0xff
|
||||
beq _0807A26A
|
||||
adds r0, r1, #1
|
||||
strb r0, [r2]
|
||||
_0807A26A:
|
||||
ldrb r0, [r3, #0x12]
|
||||
strb r0, [r3, #0x13]
|
||||
adds r0, r5, #0
|
||||
adds r1, r6, #0
|
||||
mov r2, r8
|
||||
bl GetRelativeCollisionTile
|
||||
adds r2, r0, #0
|
||||
ldr r1, _0807A294 @ =gUnk_08007CAC
|
||||
bl sub_08007DD6
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0807A288: .4byte gRoomControls
|
||||
_0807A28C: .4byte gPlayerEntity
|
||||
_0807A290: .4byte gPlayerState
|
||||
_0807A294: .4byte gUnk_08007CAC
|
||||
.syntax divided
|
||||
@@ -1,238 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
ldr r1, _080782D8 @ =gPlayerState
|
||||
adds r2, r1, #0
|
||||
adds r2, #0xa8
|
||||
ldrb r0, [r2]
|
||||
adds r4, r1, #0
|
||||
cmp r0, #0
|
||||
bne _080782DC
|
||||
adds r0, r4, #0
|
||||
adds r0, #0xa9
|
||||
ldrb r0, [r0]
|
||||
b _080782DE
|
||||
.align 2, 0
|
||||
_080782D8: .4byte gPlayerState
|
||||
_080782DC:
|
||||
ldrb r0, [r2]
|
||||
_080782DE:
|
||||
subs r0, #2
|
||||
cmp r0, #0x14
|
||||
bhi _08078348
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _080782F0 @ =_080782F4
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080782F0: .4byte _080782F4
|
||||
_080782F4: @ jump table
|
||||
.4byte _080784AC @ case 0
|
||||
.4byte _080784AC @ case 1
|
||||
.4byte _08078348 @ case 2
|
||||
.4byte _08078348 @ case 3
|
||||
.4byte _08078348 @ case 4
|
||||
.4byte _08078348 @ case 5
|
||||
.4byte _08078348 @ case 6
|
||||
.4byte _08078348 @ case 7
|
||||
.4byte _08078348 @ case 8
|
||||
.4byte _08078348 @ case 9
|
||||
.4byte _080784AC @ case 10
|
||||
.4byte _08078348 @ case 11
|
||||
.4byte _08078348 @ case 12
|
||||
.4byte _08078348 @ case 13
|
||||
.4byte _08078348 @ case 14
|
||||
.4byte _08078348 @ case 15
|
||||
.4byte _080784AC @ case 16
|
||||
.4byte _08078348 @ case 17
|
||||
.4byte _08078348 @ case 18
|
||||
.4byte _080784AC @ case 19
|
||||
.4byte _080784AC @ case 20
|
||||
_08078348:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x27
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x26
|
||||
ldrb r1, [r0]
|
||||
ldrb r0, [r2]
|
||||
orrs r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807835C
|
||||
b _080784AC
|
||||
_0807835C:
|
||||
ldrb r0, [r4, #0x12]
|
||||
cmp r0, #1
|
||||
bne _08078376
|
||||
ldrb r0, [r4, #0x14]
|
||||
cmp r0, #0
|
||||
bne _0807836A
|
||||
b _080784AC
|
||||
_0807836A:
|
||||
bl CanDispEzloMessage
|
||||
cmp r0, #0
|
||||
beq _08078374
|
||||
b _080784C4
|
||||
_08078374:
|
||||
b _080784AC
|
||||
_08078376:
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08078384
|
||||
b _080784AC
|
||||
_08078384:
|
||||
bl CanDispEzloMessage
|
||||
cmp r0, #0
|
||||
beq _0807838E
|
||||
b _080784C4
|
||||
_0807838E:
|
||||
bl sub_080784E4
|
||||
ldr r6, [r0, #8]
|
||||
cmp r6, #0
|
||||
bne _0807839A
|
||||
b _080784AC
|
||||
_0807839A:
|
||||
ldrb r0, [r4, #5]
|
||||
cmp r0, #0
|
||||
beq _080783B6
|
||||
cmp r0, #4
|
||||
beq _080783A6
|
||||
b _080784AC
|
||||
_080783A6:
|
||||
ldr r0, _08078400 @ =gPlayerEntity
|
||||
ldr r0, [r0, #0x74]
|
||||
ldr r0, [r0, #0x54]
|
||||
ldrh r1, [r0, #8]
|
||||
ldr r0, _08078404 @ =0x00000206
|
||||
cmp r1, r0
|
||||
beq _080783B6
|
||||
b _080784AC
|
||||
_080783B6:
|
||||
ldr r2, _08078408 @ =gPlayerState
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #5
|
||||
ands r0, r1
|
||||
adds r4, r2, #0
|
||||
cmp r0, #0
|
||||
beq _0807842C
|
||||
ldr r5, _0807840C @ =gUnk_03003DF0
|
||||
ldr r0, [r5, #4]
|
||||
ldrb r0, [r0, #3]
|
||||
subs r0, #1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0x63
|
||||
bhi _0807842C
|
||||
movs r0, #0
|
||||
bl sub_0801E738
|
||||
ldr r0, _08078410 @ =gSave
|
||||
ldr r1, _08078414 @ =0x0000012B
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08078418
|
||||
ldr r1, [r5, #4]
|
||||
ldrb r0, [r1, #3]
|
||||
strb r0, [r5, #2]
|
||||
ldr r0, [r1, #8]
|
||||
adds r0, #0x39
|
||||
movs r1, #2
|
||||
strb r1, [r0]
|
||||
movs r0, #7
|
||||
strb r0, [r4, #0xc]
|
||||
b _08078420
|
||||
.align 2, 0
|
||||
_08078400: .4byte gPlayerEntity
|
||||
_08078404: .4byte 0x00000206
|
||||
_08078408: .4byte gPlayerState
|
||||
_0807840C: .4byte gUnk_03003DF0
|
||||
_08078410: .4byte gSave
|
||||
_08078414: .4byte 0x0000012B
|
||||
_08078418:
|
||||
ldr r0, _08078428 @ =0x00000B65
|
||||
movs r1, #0
|
||||
bl CreateEzloHint
|
||||
_08078420:
|
||||
movs r0, #0x13
|
||||
bl ForceSetPlayerState
|
||||
b _080784C4
|
||||
.align 2, 0
|
||||
_08078428: .4byte 0x00000B65
|
||||
_0807842C:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x88
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080784AC
|
||||
ldr r0, _08078450 @ =gUnk_03003DF0
|
||||
ldr r0, [r0, #4]
|
||||
ldrb r0, [r0, #1]
|
||||
cmp r0, #0xa
|
||||
bhi _080784C4
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08078454 @ =_08078458
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08078450: .4byte gUnk_03003DF0
|
||||
_08078454: .4byte _08078458
|
||||
_08078458: @ jump table
|
||||
.4byte _080784C4 @ case 0
|
||||
.4byte _08078484 @ case 1
|
||||
.4byte _080784C4 @ case 2
|
||||
.4byte _0807848E @ case 3
|
||||
.4byte _080784C4 @ case 4
|
||||
.4byte _0807848E @ case 5
|
||||
.4byte _08078484 @ case 6
|
||||
.4byte _0807848E @ case 7
|
||||
.4byte _080784A4 @ case 8
|
||||
.4byte _08078484 @ case 9
|
||||
.4byte _08078484 @ case 10
|
||||
_08078484:
|
||||
movs r0, #7
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x13
|
||||
bl ForceSetPlayerState
|
||||
_0807848E:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x39
|
||||
movs r2, #0
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
ldr r0, _080784A0 @ =gUnk_03003DF0
|
||||
strb r2, [r0, #2]
|
||||
b _080784C4
|
||||
.align 2, 0
|
||||
_080784A0: .4byte gUnk_03003DF0
|
||||
_080784A4:
|
||||
ldr r2, _080784B0 @ =gRoomVars
|
||||
ldrb r0, [r2, #6]
|
||||
cmp r0, #0
|
||||
beq _080784B4
|
||||
_080784AC:
|
||||
movs r0, #0
|
||||
b _080784C6
|
||||
.align 2, 0
|
||||
_080784B0: .4byte gRoomVars
|
||||
_080784B4:
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x39
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r6, #0xa]
|
||||
strb r0, [r2, #6]
|
||||
ldrb r0, [r6, #0xb]
|
||||
strb r0, [r2, #7]
|
||||
_080784C4:
|
||||
movs r0, #1
|
||||
_080784C6:
|
||||
pop {r4, r5, r6, pc}
|
||||
.syntax divided
|
||||
@@ -1,57 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r0, _080793FC @ =gPlayerState
|
||||
adds r0, #0x26
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _08079408
|
||||
ldr r1, _08079400 @ =gUnk_0811C0F8
|
||||
ldr r0, _08079404 @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
b _08079410
|
||||
.align 2, 0
|
||||
_080793FC: .4byte gPlayerState
|
||||
_08079400: .4byte gUnk_0811C0F8
|
||||
_08079404: .4byte gPlayerEntity
|
||||
_08079408:
|
||||
ldr r1, _08079448 @ =gUnk_0811C0F8
|
||||
ldr r0, _0807944C @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x15]
|
||||
lsrs r0, r0, #2
|
||||
_08079410:
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r4, [r0]
|
||||
bl sub_08079778
|
||||
cmp r0, #0
|
||||
beq _08079454
|
||||
ldr r0, _08079450 @ =gPlayerState
|
||||
adds r0, #0x90
|
||||
ldrh r0, [r0]
|
||||
ands r0, r4
|
||||
cmp r0, #0
|
||||
beq _08079454
|
||||
cmp r5, #0
|
||||
beq _08079442
|
||||
bl sub_0807A500
|
||||
ldr r1, _0807944C @ =gPlayerEntity
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
adds r2, r5, #0
|
||||
bl sub_080B1BA4
|
||||
cmp r0, #0
|
||||
beq _08079454
|
||||
_08079442:
|
||||
movs r0, #1
|
||||
b _08079456
|
||||
.align 2, 0
|
||||
_08079448: .4byte gUnk_0811C0F8
|
||||
_0807944C: .4byte gPlayerEntity
|
||||
_08079450: .4byte gPlayerState
|
||||
_08079454:
|
||||
movs r0, #0
|
||||
_08079456:
|
||||
pop {r4, r5, pc}
|
||||
.syntax divided
|
||||
@@ -1,38 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
ldr r0, _08079790 @ =gPlayerState
|
||||
adds r0, #0x26
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0807979C
|
||||
ldr r2, _08079794 @ =gUnk_0811C108
|
||||
ldr r1, _08079798 @ =gPlayerEntity
|
||||
ldrb r0, [r1, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
b _080797A4
|
||||
.align 2, 0
|
||||
_08079790: .4byte gPlayerState
|
||||
_08079794: .4byte gUnk_0811C108
|
||||
_08079798: .4byte gPlayerEntity
|
||||
_0807979C:
|
||||
ldr r2, _080797BC @ =gUnk_0811C108
|
||||
ldr r1, _080797C0 @ =gPlayerEntity
|
||||
ldrb r0, [r1, #0x15]
|
||||
lsrs r0, r0, #2
|
||||
_080797A4:
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r2
|
||||
ldrh r2, [r0]
|
||||
movs r3, #0
|
||||
ldrh r0, [r1, #0x2a]
|
||||
ands r0, r2
|
||||
cmp r2, r0
|
||||
bne _080797B6
|
||||
movs r3, #1
|
||||
_080797B6:
|
||||
adds r0, r3, #0
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080797BC: .4byte gUnk_0811C108
|
||||
_080797C0: .4byte gPlayerEntity
|
||||
.syntax divided
|
||||
@@ -1,22 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
ldr r1, _080797E4 @ =gUnk_0811C110
|
||||
ldr r2, _080797E8 @ =gPlayerEntity
|
||||
ldrb r0, [r2, #0x15]
|
||||
lsrs r0, r0, #3
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r1, [r0]
|
||||
movs r3, #0
|
||||
ldrh r0, [r2, #0x2a]
|
||||
ands r0, r1
|
||||
cmp r1, r0
|
||||
bne _080797E0
|
||||
movs r3, #1
|
||||
_080797E0:
|
||||
adds r0, r3, #0
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_080797E4: .4byte gUnk_0811C110
|
||||
_080797E8: .4byte gPlayerEntity
|
||||
.syntax divided
|
||||
@@ -1,92 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
ldr r2, _08079B60 @ =gPlayerEntity
|
||||
ldrb r0, [r2, #0xc]
|
||||
cmp r0, #0xa
|
||||
beq _08079BD4
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x45
|
||||
ldrb r3, [r0]
|
||||
cmp r3, #0
|
||||
bne _08079BD4
|
||||
ldr r4, _08079B64 @ =gPlayerState
|
||||
ldr r1, [r4, #0x30]
|
||||
ldr r0, _08079B68 @ =0xFEFFFFFF
|
||||
ands r1, r0
|
||||
str r1, [r4, #0x30]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x42
|
||||
strb r3, [r0]
|
||||
ldrb r0, [r4, #7]
|
||||
cmp r0, #0
|
||||
bne _08079BD4
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x26
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08079B6C
|
||||
bl RespawnPlayer
|
||||
b _08079BC0
|
||||
.align 2, 0
|
||||
_08079B60: .4byte gPlayerEntity
|
||||
_08079B64: .4byte gPlayerState
|
||||
_08079B68: .4byte 0xFEFFFFFF
|
||||
_08079B6C:
|
||||
ldrb r0, [r4, #0x14]
|
||||
cmp r0, #0
|
||||
bne _08079BC0
|
||||
movs r3, #0x80
|
||||
lsls r3, r3, #5
|
||||
ands r3, r1
|
||||
cmp r3, #0
|
||||
bne _08079BC0
|
||||
movs r5, #0x36
|
||||
ldrsh r0, [r2, r5]
|
||||
cmp r0, #0
|
||||
bge _08079BA6
|
||||
ldr r0, [r2, #0x20]
|
||||
cmp r0, #0
|
||||
ble _08079B8C
|
||||
str r3, [r2, #0x20]
|
||||
_08079B8C:
|
||||
ldrb r1, [r4, #2]
|
||||
movs r3, #0x41
|
||||
adds r0, r3, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08079BD4
|
||||
strb r3, [r4, #2]
|
||||
movs r0, #0xff
|
||||
strb r0, [r2, #0x15]
|
||||
movs r0, #1
|
||||
rsbs r0, r0, #0
|
||||
strb r0, [r4, #0xd]
|
||||
b _08079BD4
|
||||
_08079BA6:
|
||||
movs r0, #2
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
bne _08079BC0
|
||||
bl sub_08079D48
|
||||
cmp r0, #0
|
||||
bne _08079BC0
|
||||
ldrb r0, [r4, #0xa]
|
||||
movs r1, #0x10
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0xa]
|
||||
b _08079BD4
|
||||
_08079BC0:
|
||||
ldr r2, _08079BD0 @ =gPlayerEntity
|
||||
ldrb r1, [r2, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r2, #0x10]
|
||||
movs r0, #0
|
||||
b _08079BD6
|
||||
.align 2, 0
|
||||
_08079BD0: .4byte gPlayerEntity
|
||||
_08079BD4:
|
||||
movs r0, #1
|
||||
_08079BD6:
|
||||
pop {r4, r5, pc}
|
||||
.syntax divided
|
||||
@@ -1,73 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, _0808085C @ =gRoomTransition
|
||||
movs r1, #1
|
||||
strb r1, [r0, #8]
|
||||
adds r2, r0, #0
|
||||
adds r2, #0xc
|
||||
ldrh r1, [r4, #6]
|
||||
ldr r0, _08080860 @ =0x000003FF
|
||||
cmp r1, r0
|
||||
bhi _08080864
|
||||
strh r1, [r2, #4]
|
||||
b _08080872
|
||||
.align 2, 0
|
||||
_0808085C: .4byte gRoomTransition
|
||||
_08080860: .4byte 0x000003FF
|
||||
_08080864:
|
||||
ldr r0, _08080880 @ =gRoomControls
|
||||
ldr r0, [r0, #0x30]
|
||||
ldrh r1, [r0, #0x2e]
|
||||
ldr r3, _08080884 @ =0xFFFF8000
|
||||
adds r0, r3, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r2, #4]
|
||||
_08080872:
|
||||
ldrh r1, [r4, #8]
|
||||
ldr r0, _08080888 @ =0x000003FF
|
||||
cmp r1, r0
|
||||
bhi _0808088C
|
||||
strh r1, [r2, #6]
|
||||
b _0808089A
|
||||
.align 2, 0
|
||||
_08080880: .4byte gRoomControls
|
||||
_08080884: .4byte 0xFFFF8000
|
||||
_08080888: .4byte 0x000003FF
|
||||
_0808088C:
|
||||
ldr r0, _080808CC @ =gRoomControls
|
||||
ldr r0, [r0, #0x30]
|
||||
ldrh r1, [r0, #0x32]
|
||||
ldr r3, _080808D0 @ =0xFFFF8000
|
||||
adds r0, r3, #0
|
||||
orrs r0, r1
|
||||
strh r0, [r2, #6]
|
||||
_0808089A:
|
||||
ldrb r0, [r4, #0xb]
|
||||
strb r0, [r2]
|
||||
ldrb r0, [r4, #0xc]
|
||||
strb r0, [r2, #1]
|
||||
ldrb r0, [r4, #0xd]
|
||||
strb r0, [r2, #8]
|
||||
ldrb r0, [r4, #0xe]
|
||||
strb r0, [r2, #3]
|
||||
ldrb r0, [r4, #0xf]
|
||||
strb r0, [r2, #2]
|
||||
ldrh r0, [r4, #0x10]
|
||||
cmp r0, #0
|
||||
beq _080808B8
|
||||
bl SoundReq
|
||||
_080808B8:
|
||||
ldr r0, _080808D4 @ =gUnk_0811E7C4
|
||||
ldrh r1, [r4]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r0
|
||||
ldrb r0, [r4, #0xa]
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_080808CC: .4byte gRoomControls
|
||||
_080808D0: .4byte 0xFFFF8000
|
||||
_080808D4: .4byte gUnk_0811E7C4
|
||||
.syntax divided
|
||||
+4
-1
@@ -20,7 +20,10 @@ extern Input gInput; /**< Input instance. */
|
||||
typedef struct {
|
||||
u8 evt_type;
|
||||
u8 entity_idx;
|
||||
u8 _2[6];
|
||||
u8 _2;
|
||||
u8 _3;
|
||||
u16 _4;
|
||||
u16 _6;
|
||||
u16 x;
|
||||
u16 y;
|
||||
u16 _c;
|
||||
|
||||
+1
-1
@@ -376,7 +376,7 @@ void sub_08077728(u32);
|
||||
void PutAwayItems(void);
|
||||
void sub_08079E58(s32 speed, u32 direction);
|
||||
void RespawnPlayer(void);
|
||||
u32 GetSurfaceCalcType(Entity*, u32, u32);
|
||||
u32 GetSurfaceCalcType(Entity*, s32, s32);
|
||||
void UpdatePlayerMovement(void);
|
||||
void EnablePlayerDraw(Entity*);
|
||||
void sub_080797EC(void);
|
||||
|
||||
@@ -255,10 +255,8 @@ bool32 sub_0801A458(LayerStruct* layer, u32 position, u32 collisionType) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc", bool32 sub_0801A4F8(void)) {
|
||||
u32 uVar1;
|
||||
u32 uVar3;
|
||||
|
||||
bool32 sub_0801A4F8(void) {
|
||||
u32 tmp;
|
||||
if ((gPlayerState.flags & PL_MINISH) != 0) {
|
||||
if (GetInventoryValue(ITEM_POWER_BRACELETS) != 1) {
|
||||
return FALSE;
|
||||
@@ -269,7 +267,8 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc", bool32 sub_0801A4
|
||||
if (gPlayerState.field_0xd != gPlayerEntity.direction) {
|
||||
return FALSE;
|
||||
}
|
||||
if ((gPlayerEntity.collisions & gUnk_080B44A0[(((gPlayerEntity.direction + 4) & 0x18) >> 2)]) == 0) {
|
||||
tmp = (((gPlayerEntity.direction + 4) & 0x18) >> 3);
|
||||
if ((gUnk_080B44A0[tmp] & gPlayerEntity.collisions) == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
} else {
|
||||
@@ -282,7 +281,6 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801A4F8.inc", bool32 sub_0801A4
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
ASM_FUNC("asm/non_matching/beanstalkSubtask/sub_0801A570.inc", void sub_0801A570())
|
||||
|
||||
@@ -387,7 +385,7 @@ NONMATCH("asm/non_matching/beanstalkSubtask/sub_0801AA58.inc",
|
||||
object->collisionLayer = this->collisionLayer;
|
||||
gPlayerState.pushedObject = 0xa0;
|
||||
gPlayerState.queued_action = 5;
|
||||
gPlayerState.flags |= 1;
|
||||
gPlayerState.flags |= PL_BUSY;
|
||||
this->x.HALF.LO = 0;
|
||||
this->y.HALF.LO = 0;
|
||||
this->direction = param_3;
|
||||
|
||||
+8
-2
@@ -21,7 +21,10 @@ Entity* sub_08049DF4(u32 arg0) {
|
||||
}
|
||||
|
||||
Entity* sub_08049E18(void) {
|
||||
if ((gPlayerState.field_0x3c[0] == 0) && !(gPlayerState.flags & 0x22189b75)) {
|
||||
if ((gPlayerState.field_0x3c[0] == 0) &&
|
||||
!(gPlayerState.flags &
|
||||
(PL_BUSY | PL_DROWNING | PL_CAPTURED | PL_USE_PORTAL | PL_HIDDEN | PL_DISABLE_ITEMS | PL_FALLING | PL_FROZEN |
|
||||
PL_IN_MINECART | PL_PIT_IS_EXIT | PL_MOLDWORM_CAPTURED | PL_IN_HOLE | PL_FLAGS2000000 | PL_CLIMBING))) {
|
||||
gUnk_020000B0 = &gPlayerEntity;
|
||||
return &gPlayerEntity;
|
||||
}
|
||||
@@ -29,7 +32,10 @@ Entity* sub_08049E18(void) {
|
||||
}
|
||||
|
||||
Entity* sub_08049E4C(void) {
|
||||
if ((gPlayerState.field_0x3c[0] == 0) && !(gPlayerState.flags & 0x22189bf5)) {
|
||||
if ((gPlayerState.field_0x3c[0] == 0) &&
|
||||
!(gPlayerState.flags & (PL_BUSY | PL_DROWNING | PL_CAPTURED | PL_USE_PORTAL | PL_HIDDEN | PL_MINISH |
|
||||
PL_DISABLE_ITEMS | PL_FALLING | PL_FROZEN | PL_IN_MINECART | PL_PIT_IS_EXIT |
|
||||
PL_MOLDWORM_CAPTURED | PL_IN_HOLE | PL_FLAGS2000000 | PL_CLIMBING))) {
|
||||
gUnk_020000B0 = &gPlayerEntity;
|
||||
return &gPlayerEntity;
|
||||
}
|
||||
|
||||
+36
-4
@@ -22,7 +22,7 @@ typedef struct {
|
||||
|
||||
extern u8 gUnk_03003DE0;
|
||||
extern u8 gzHeap[0x1000];
|
||||
extern u8 gUnk_0201AEE0[0x2000];
|
||||
extern u32 gUnk_0201AEE0[0x800];
|
||||
extern u8 gUnk_080CA11C[];
|
||||
|
||||
extern void (*gUnk_080C9CAC[])(void);
|
||||
@@ -67,6 +67,10 @@ extern u32 gUsedPalettes;
|
||||
extern u16 gPaletteBuffer[];
|
||||
extern const GfxItem* gGfxGroups[];
|
||||
|
||||
extern const u32 gUnk_080C9460[];
|
||||
|
||||
void sub_0801E82C(void);
|
||||
|
||||
u32 DecToHex(u32 value) {
|
||||
u32 result;
|
||||
register u32 r1 asm("r1");
|
||||
@@ -382,8 +386,14 @@ u32 sub_0801DF10(DungeonLayout* lyt) {
|
||||
return offset;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/common/sub_0801DF28.inc", void sub_0801DF28(u32 a1, u32 a2, u32 a3));
|
||||
|
||||
void sub_0801DF28(u32 x, u32 y, s32 color) {
|
||||
u32* ptr;
|
||||
u32 tmp;
|
||||
ptr = &gUnk_0201AEE0[(((y >> 3) * 0x10 + (x >> 3)) * 8)];
|
||||
ptr = &ptr[(y & 7)];
|
||||
tmp = (color << ((x & 7) * 4));
|
||||
ptr[0] = (ptr[0] & gUnk_080C9460[x & 7]) | tmp;
|
||||
}
|
||||
u32 sub_0801DF60(u32 a1, u8* p) {
|
||||
return (p[a1 >> 2] >> (2 * (~a1 & 3))) & 3;
|
||||
}
|
||||
@@ -531,7 +541,29 @@ ASM_FUNC("asm/non_matching/common/sub_0801E64C.inc", void sub_0801E64C(u32 a1, u
|
||||
|
||||
ASM_FUNC("asm/non_matching/common/sub_0801E6C8.inc", void sub_0801E6C8(u32 a1));
|
||||
|
||||
ASM_FUNC("asm/non_matching/common/sub_0801E738.inc", void sub_0801E738(u32 a1));
|
||||
void sub_0801E738(u32 param_1) {
|
||||
s32 index;
|
||||
s32 tmp;
|
||||
|
||||
sub_0801E82C();
|
||||
if (param_1 - 0x65 < 0x11) {
|
||||
index = sub_0801E8B0(param_1);
|
||||
if (index < 0) {
|
||||
index = 0;
|
||||
while (gSave.unk118[index] != 0) {
|
||||
index++;
|
||||
}
|
||||
}
|
||||
if ((u32)index < 0x12) {
|
||||
gSave.unk118[index] = param_1;
|
||||
tmp = gSave.unk12B[index] + 1;
|
||||
if (tmp > 99) {
|
||||
tmp = 99;
|
||||
}
|
||||
gSave.unk12B[index] = tmp;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0801E798(u32 a1) {
|
||||
s32 idx = sub_0801E8B0(a1);
|
||||
|
||||
+1
-1
@@ -423,7 +423,7 @@ void sub_08049944(Enemy64Entity* this) {
|
||||
if (EntityWithinDistance(super, gPlayerEntity.x.HALF.HI, gPlayerEntity.y.HALF.HI, 0x20)) {
|
||||
gPlayerState.field_0x14 = 1;
|
||||
if (gPlayerEntity.z.HALF.HI == 0) {
|
||||
gPlayerState.flags |= 2;
|
||||
gPlayerState.flags |= PL_FLAGS2;
|
||||
this->unk_7c |= 1;
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -386,7 +386,7 @@ void sub_0803F6EC(GhiniEntity* this) {
|
||||
gPlayerEntity.iframes = -0x3c;
|
||||
gPlayerState.jump_status = 0x41;
|
||||
}
|
||||
gPlayerState.flags &= 0xffffffef;
|
||||
gPlayerState.flags &= ~PL_CAPTURED;
|
||||
}
|
||||
|
||||
void sub_0803F738(GhiniEntity* this) {
|
||||
|
||||
+115
-9
@@ -33,6 +33,7 @@
|
||||
#include "transitions.h"
|
||||
#include "roomid.h"
|
||||
#include "ui.h"
|
||||
#include "kinstone.h"
|
||||
|
||||
// Game task
|
||||
|
||||
@@ -234,9 +235,17 @@ extern const EntityData* gUnk_080FCFB8[];
|
||||
extern void (*const gUnk_080FD138[])(void);
|
||||
|
||||
extern const u16 gUnk_080FD964[];
|
||||
extern const u8 gUnk_080FCF04[];
|
||||
|
||||
extern void ClearBgAnimations(void);
|
||||
|
||||
void sub_08054974(s32, s32);
|
||||
void sub_080548E8(void);
|
||||
|
||||
extern void sub_0806F38C(void);
|
||||
|
||||
extern void sub_08018710(u32);
|
||||
|
||||
void GameTask(void) {
|
||||
static GameState* const sStates[] = {
|
||||
GameTask_Transition,
|
||||
@@ -1277,8 +1286,8 @@ bool32 CanDispEzloMessage(void) {
|
||||
gPauseMenuOptions.disabled || gUnk_0200AF00.unk_1)
|
||||
return 0;
|
||||
|
||||
if ((gPlayerState.flags & (PL_NO_CAP | 0x110)) || (gPlayerState.framestate_last > tmp) || gPlayerState.item ||
|
||||
gPlayerEntity.field_0x7a.HWORD)
|
||||
if ((gPlayerState.flags & (PL_NO_CAP | PL_CAPTURED | PL_DISABLE_ITEMS)) || (gPlayerState.framestate_last > tmp) ||
|
||||
gPlayerState.item || gPlayerEntity.field_0x7a.HWORD)
|
||||
return 0;
|
||||
|
||||
if ((gPlayerEntity.z.HALF.HI & 0x8000) && !gPlayerState.field_0xa)
|
||||
@@ -1885,9 +1894,43 @@ void sub_08053758(void) {
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/sub_08053800.inc", void sub_08053800())
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/sub_08053894.inc", void sub_08053894())
|
||||
void sub_08053894(void) {
|
||||
u32 tmp;
|
||||
if (gFadeControl.active == 0) {
|
||||
gMenu.transitionTimer--;
|
||||
if (gMenu.field_0xa != 0) {
|
||||
gMenu.field_0xa--;
|
||||
} else {
|
||||
if (((gRoomTransition.frameCount & 1) == 0) && (gMenu.storyPanelIndex < 0x10)) {
|
||||
tmp = ++gMenu.storyPanelIndex << 0x18;
|
||||
gScreen.controls.alphaBlend = (tmp >> 0x10) | (0x10 - ((tmp) >> 0x19));
|
||||
}
|
||||
}
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
gMenu.overlayType++;
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 8);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/sub_08053904.inc", void sub_08053904())
|
||||
void sub_08053904(void) {
|
||||
u32 tmp;
|
||||
if (gFadeControl.active == 0) {
|
||||
gMenu.transitionTimer--;
|
||||
if (gMenu.field_0xa != 0) {
|
||||
gMenu.field_0xa--;
|
||||
} else {
|
||||
if (((gRoomTransition.frameCount & 1) == 0) && (gMenu.storyPanelIndex < 0x10)) {
|
||||
tmp = ++gMenu.storyPanelIndex << 0x18;
|
||||
gScreen.controls.alphaBlend = (tmp >> 0x10) | (0x10 - (tmp >> 0x19));
|
||||
}
|
||||
}
|
||||
if (gMenu.transitionTimer == 0) {
|
||||
gMenu.overlayType++;
|
||||
SetFade(FADE_IN_OUT | FADE_INSTANT, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053974(void) {
|
||||
if (gFadeControl.active == 0) {
|
||||
@@ -2043,7 +2086,21 @@ void sub_08053CAC(void) {
|
||||
gUnk_080FCFA4[gMenu.overlayType]();
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/sub_08053CC8.inc", void sub_08053CC8())
|
||||
void sub_08053CC8(void) {
|
||||
const u8* ptr;
|
||||
ptr = gUnk_080FCF04 + gMenu.field_0x3 * 0x10;
|
||||
gMenu.field_0xc = (void*)&ptr[8];
|
||||
LoadRoomEntityList(*(EntityData**)(&ptr[0]));
|
||||
LoadRoomEntityList(GetRoomProperty(ptr[4], ptr[5], 1));
|
||||
LoadRoomEntityList(GetRoomProperty(ptr[4], ptr[5], 2));
|
||||
gMenu.overlayType = 1;
|
||||
gScreen.lcd.displayControl &= 0xfeff;
|
||||
gUpdateVisibleTiles = 1;
|
||||
SetFade(FADE_INSTANT, 0x10);
|
||||
if (ptr[5] == 0x1d) {
|
||||
gMenu.field_0xa = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08053D34(void) {
|
||||
if (gMenu.field_0xa != 0) {
|
||||
@@ -2581,7 +2638,21 @@ void Subtask_WorldEvent(void) {
|
||||
#endif
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/sub_0805488C.inc", void sub_0805488C())
|
||||
void sub_0805488C(void) {
|
||||
const struct_080FE320* ptr = &gUnk_080FE320[gUI.field_0x3];
|
||||
gMenu.field_0x0 = ptr->evt_type;
|
||||
gMenu.field_0x3 = ptr->entity_idx;
|
||||
gMenu.field_0x4 = gUI.field_0x3;
|
||||
gMenu.field_0xc = (u8*)ptr;
|
||||
gMenu.menuType++;
|
||||
gMenu.overlayType = 0;
|
||||
gMenu.transitionTimer = 300;
|
||||
DispReset(0);
|
||||
sub_08054974(gUI.field_0x3, 1);
|
||||
sub_0806F364();
|
||||
ClearRoomFlag(0xff);
|
||||
sub_080548E8();
|
||||
}
|
||||
|
||||
void sub_080548E8(void) {
|
||||
gUnk_080FE2AC[gMenu.field_0x0]();
|
||||
@@ -2594,12 +2665,47 @@ void sub_080548E8(void) {
|
||||
UpdateScrollVram();
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/sub_08054920.inc", void sub_08054920())
|
||||
void sub_08054920(void) {
|
||||
MessageInitialize();
|
||||
sub_0806F38C();
|
||||
if (gUnk_080C9CBC[gFuseInfo._3]._5[1] != 0) {
|
||||
MenuFadeIn(10, gUI.field_0x3);
|
||||
} else {
|
||||
gUI.nextToLoad = 3;
|
||||
SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 0x10);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08054968(void) {
|
||||
gMenu.menuType = 2;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/sub_08054974.inc", void sub_08054974())
|
||||
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;
|
||||
LoadGfxGroups();
|
||||
gArea.localFlagOffset = GetFlagBankOffset(gRoomControls.area);
|
||||
if (param_2 != 0) {
|
||||
LoadAuxiliaryRoom(ptr->_2, ptr->_3);
|
||||
} else {
|
||||
sub_08052FF4(ptr->_2, ptr->_3);
|
||||
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) {
|
||||
TryLoadPrologueHyruleTown();
|
||||
}
|
||||
sub_08018710(gUI.field_0x3);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/game/sub_08054A14.inc", void sub_08054A14())
|
||||
void sub_08054A14(s32 param_1) {
|
||||
struct_080FE320* ptr = &gUnk_080FE320[param_1];
|
||||
if (ptr->_11 < 0xe) {
|
||||
SetLocalFlagByBank(gLocalFlagBanks[ptr->_11], ptr->flag);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -236,7 +236,7 @@ static void HandlePlayerLife(Entity* this) {
|
||||
if ((gPlayerEntity.contactFlags & 0x80) && (gPlayerEntity.iframes > 0))
|
||||
SoundReq(SFX_86);
|
||||
|
||||
gPlayerState.flags &= ~(0x2000000 | PL_FALLING);
|
||||
gPlayerState.flags &= ~(PL_FALLING | PL_FLAGS2000000);
|
||||
if (gPlayerState.flags & PL_BURNING)
|
||||
ResetPlayerItem();
|
||||
if ((gPlayerState.flags & PL_CLONING) && gPlayerState.chargeState.action == 0)
|
||||
|
||||
@@ -95,7 +95,33 @@ void sub_08076488(ItemBehavior* this, u32 idx) {
|
||||
gPlayerState.framestate = PL_STATE_HOLD;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/itemTryPickupObject/sub_08076518.inc", void sub_08076518(ItemBehavior* this, u32 idx))
|
||||
void sub_08076518(ItemBehavior* this, u32 index) {
|
||||
if (PlayerTryDropObject(this, index)) {
|
||||
gPlayerState.framestate = 4;
|
||||
if ((gPlayerState.jump_status & 0x80) == 0 && gPlayerState.field_0x1f[0] == 0) {
|
||||
if (gPlayerEntity.knockbackDuration != 0) {
|
||||
PlayerCancelHoldItem(this, index);
|
||||
} else {
|
||||
if ((gPlayerState.field_0x92 & 0x8018) != 0) {
|
||||
sub_0806F948(&gPlayerEntity);
|
||||
gPlayerState.heldObject = 5;
|
||||
this->field_0x18->subAction = 2;
|
||||
this->field_0x18->direction = (gPlayerEntity.animationState & 0xe) << 2;
|
||||
this->field_0x18 = NULL;
|
||||
this->stateID++;
|
||||
this->field_0xf = 0x0f;
|
||||
if ((gPlayerState.flags & PL_NO_CAP) != 0) {
|
||||
sub_08077DF4(this, 0x930);
|
||||
} else {
|
||||
sub_08077DF4(this, 0x344);
|
||||
}
|
||||
gPlayerState.field_0xa |= 8 >> index;
|
||||
gPlayerState.keepFacing |= 8 >> index;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080765E0(ItemBehavior* this, u32 idx) {
|
||||
if (PlayerTryDropObject(this, idx) != 0) {
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
|
||||
extern u32 sub_08000E44(u32);
|
||||
extern void sub_080A3B74(void);
|
||||
extern s32 sub_080A3B48(void);
|
||||
extern u32 sub_080A3B48(void);
|
||||
extern void sub_0805ECEC(u32, u32, u32, u32);
|
||||
extern void sub_0801E6C8(u32);
|
||||
extern void sub_0801E798(u32);
|
||||
@@ -65,7 +65,15 @@ Subtask KinstoneMenu_Type3;
|
||||
Subtask KinstoneMenu_Type4;
|
||||
Subtask KinstoneMenu_Type5;
|
||||
|
||||
ASM_FUNC("asm/non_matching/menu/kinstone_menu/sub_080A3B48.inc", s32 sub_080A3B48(void))
|
||||
u32 sub_080A3B48(void) {
|
||||
u32 index;
|
||||
for (index = 0; index <= 0x12; index++) {
|
||||
if (gSave.unk12B[index] == 0) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
return index;
|
||||
}
|
||||
|
||||
void sub_080A3B74(void) {
|
||||
gKinstoneMenu.unk2f = 0;
|
||||
|
||||
+36
-2
@@ -20,6 +20,12 @@ void sub_08069888(Entity* this);
|
||||
|
||||
extern u16 gUnk_08111C50[];
|
||||
|
||||
extern const s16 gUnk_08111C5C[];
|
||||
extern const u8 gUnk_08111C74[];
|
||||
|
||||
extern const s16 gUnk_08111C84[];
|
||||
extern const u8 gUnk_08111C8C[];
|
||||
|
||||
void Gorman(Entity* this) {
|
||||
if ((this->flags & ENT_SCRIPTED) != 0) {
|
||||
sub_08069838(this);
|
||||
@@ -98,9 +104,37 @@ void sub_08069888(Entity* this) {
|
||||
MessageNoOverlap(gUnk_08111C50[index], this);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/gorman/sub_0806991C.inc", void sub_0806991C(Entity* this, ScriptExecutionContext* context))
|
||||
void sub_0806991C(Entity* this, ScriptExecutionContext* context) {
|
||||
u32 tmp;
|
||||
const s16* ptr;
|
||||
this->field_0x68.HALF.LO = (Random() & 0x1f) + 0x3c;
|
||||
ptr = &gUnk_08111C5C[*(s8*)&this->field_0x68.HALF.HI * 2];
|
||||
context->x.HALF.HI = gRoomControls.origin_x + ptr[0];
|
||||
context->y.HALF.HI = gRoomControls.origin_y + ptr[1];
|
||||
context->unk_19 = 8;
|
||||
context->postScriptActions |= 2;
|
||||
context->condition = 0;
|
||||
tmp = sub_080045DA(context->x.HALF.HI - this->x.HALF.HI, context->y.HALF.HI - this->y.HALF.HI);
|
||||
this->direction = tmp;
|
||||
this->animationState = (this->animationState & 0x80) | gUnk_08111C74[(tmp << 0x18) >> 0x1c];
|
||||
gActiveScriptInfo.flags |= 1;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/gorman/sub_080699AC.inc", void sub_080699AC(Entity* this, ScriptExecutionContext* context))
|
||||
void sub_080699AC(Entity* this, ScriptExecutionContext* context) {
|
||||
u32 tmp;
|
||||
const s16* ptr;
|
||||
this->field_0x68.HALF.LO = (Random() & 0x1f) + 0x3c;
|
||||
ptr = &gUnk_08111C84[*(s8*)&this->field_0x68.HALF.HI * 2];
|
||||
context->x.HALF.HI = gRoomControls.origin_x + ptr[0];
|
||||
context->y.HALF.HI = gRoomControls.origin_y + ptr[1];
|
||||
context->unk_19 = 8;
|
||||
context->postScriptActions |= 2;
|
||||
context->condition = 0;
|
||||
tmp = sub_080045DA(context->x.HALF.HI - this->x.HALF.HI, context->y.HALF.HI - this->y.HALF.HI);
|
||||
this->direction = tmp;
|
||||
this->animationState = (this->animationState & 0x80) | gUnk_08111C8C[(tmp << 0x18) >> 0x1c];
|
||||
gActiveScriptInfo.flags |= 1;
|
||||
}
|
||||
|
||||
void sub_08069A3C(Entity* this) {
|
||||
this->field_0x68.HALF.HI = gUnk_08111C9C[(Random() & 1) + (s8)this->field_0x68.HALF.HI * 2];
|
||||
|
||||
+26
-1
@@ -1,9 +1,12 @@
|
||||
#include "entity.h"
|
||||
#include "sound.h"
|
||||
#include "script.h"
|
||||
#include "npc.h"
|
||||
|
||||
extern SpriteLoadData gUnk_0810C48C;
|
||||
|
||||
extern void sub_0806FF10(Entity* this, u32 param_2, u32 param_3);
|
||||
|
||||
void MinishEzlo(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
if (LoadExtraSpriteData(this, &gUnk_0810C48C) == 0) {
|
||||
@@ -27,7 +30,29 @@ void MinishEzlo(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/minishEzlo/MinishEzlo_Head.inc", void MinishEzlo_Head(Entity* this))
|
||||
void MinishEzlo_Head(Entity* this) {
|
||||
u32 uVar1;
|
||||
u32 uVar2;
|
||||
u32 uVar3;
|
||||
if ((this->frameSpriteSettings & 4) != 0) {
|
||||
uVar2 = 1;
|
||||
uVar1 = 0;
|
||||
} else {
|
||||
uVar2 = 0;
|
||||
uVar1 = 1;
|
||||
}
|
||||
|
||||
if ((this->frameSpriteSettings & 8) != 0) {
|
||||
uVar3 = 0x16;
|
||||
} else {
|
||||
uVar3 = 0x11c;
|
||||
}
|
||||
SetExtraSpriteFrame(this, uVar2, (this->frame & 0xffffff7f) - 1);
|
||||
SetExtraSpriteFrame(this, uVar1, this->frameIndex);
|
||||
sub_0806FF10(this, uVar1, uVar3);
|
||||
SetSpriteSubEntryOffsetData1(this, uVar1, uVar2);
|
||||
sub_0807000C(this);
|
||||
}
|
||||
|
||||
void sub_0806305C(Entity* this) {
|
||||
this->spritePriority.b1 = 0;
|
||||
|
||||
@@ -277,7 +277,7 @@ void Beanstalk_Action1Type7(BeanstalkEntity* this) {
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
if (gPlayerState.floor_type == 0x1e) {
|
||||
if (gPlayerState.floor_type == SURFACE_LADDER) {
|
||||
if (EntityInRectRadius(super, &gPlayerEntity, 0, 8)) {
|
||||
if ((super->animIndex == (super->type2 - 1) * 3 + 1) && (super->timer == 0)) {
|
||||
super->timer = 1;
|
||||
@@ -339,7 +339,7 @@ void Beanstalk_Action1Type9(BeanstalkEntity* this) {
|
||||
}
|
||||
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
|
||||
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
|
||||
if (gPlayerState.floor_type == 0x1e) {
|
||||
if (gPlayerState.floor_type == SURFACE_LADDER) {
|
||||
super->spritePriority.b0 = 0;
|
||||
if (sub_080B1A0C(super, 0, -0x18) != 0x4014) {
|
||||
SetTile(0x4014, COORD_TO_TILE_OFFSET(super, 0, 0x18), 1);
|
||||
|
||||
@@ -59,7 +59,7 @@ void LadderUp(Entity* this) {
|
||||
default:
|
||||
if (this->type2 == 0) {
|
||||
if (gPlayerEntity.y.HALF.HI < this->y.HALF.HI) {
|
||||
if (gPlayerState.floor_type != 0x1e && (GetTileTypeByEntity(this) == 0x4017)) {
|
||||
if (gPlayerState.floor_type != SURFACE_LADDER && (GetTileTypeByEntity(this) == 0x4017)) {
|
||||
SetTile(0x4023, COORD_TO_TILE(this), this->collisionLayer);
|
||||
RestorePrevTileEntity(COORD_TO_TILE_OFFSET(this, 0, 0x10), this->collisionLayer);
|
||||
}
|
||||
|
||||
@@ -57,8 +57,9 @@ void sub_0808DDE8(Object42Entity* this) {
|
||||
if (sub_0807953C()) {
|
||||
super->subtimer++;
|
||||
}
|
||||
if (((0x1e < super->subtimer) || ((gPlayerState.flags & 0x1810) != 0)) || (this->unk_6c == 0)) {
|
||||
gPlayerState.flags &= 0xfffffbff;
|
||||
if (((0x1e < super->subtimer) || ((gPlayerState.flags & (PL_CAPTURED | PL_FROZEN | PL_IN_MINECART)) != 0)) ||
|
||||
(this->unk_6c == 0)) {
|
||||
gPlayerState.flags &= ~PL_BURNING;
|
||||
DeleteThisEntity();
|
||||
}
|
||||
player = &gPlayerEntity;
|
||||
@@ -68,7 +69,7 @@ void sub_0808DDE8(Object42Entity* this) {
|
||||
super->collisionLayer = gPlayerEntity.collisionLayer;
|
||||
super->spriteRendering.b3 = gPlayerEntity.spriteRendering.b3;
|
||||
super->spriteOrientation.flipY = gPlayerEntity.spriteOrientation.flipY;
|
||||
if ((gPlayerState.flags & 0x400) != 0) {
|
||||
if ((gPlayerState.flags & PL_BURNING) != 0) {
|
||||
GetNextFrame(super);
|
||||
} else {
|
||||
DeleteThisEntity();
|
||||
|
||||
@@ -41,7 +41,7 @@ void Object70_Action1(Entity* this) {
|
||||
|
||||
if (this->type == 0) {
|
||||
if (gPlayerEntity.z.WORD == 0) {
|
||||
if ((((gPlayerState.dash_state & 0x40) == 0) && (gPlayerState.floor_type == 0x11)) &&
|
||||
if ((((gPlayerState.dash_state & 0x40) == 0) && (gPlayerState.floor_type == SURFACE_SWAMP)) &&
|
||||
((gPlayerEntity.action == 1 || ((gPlayerEntity.action == 0x18 || (gPlayerEntity.action == 4)))))) {
|
||||
goto _080974FA;
|
||||
} else {
|
||||
|
||||
@@ -137,7 +137,7 @@ void Object96_Action2(Entity* this, const struct_gUnk_08123FB0* param_2) {
|
||||
void Object96_Action3(Entity* this, const struct_gUnk_08123FB0* param_2) {
|
||||
u8 type;
|
||||
|
||||
if (gPlayerState.flags & 0x80) {
|
||||
if (gPlayerState.flags & PL_MINISH) {
|
||||
sub_0800445C(this);
|
||||
} else {
|
||||
if (IsCollidingPlayer(this)) {
|
||||
|
||||
@@ -191,7 +191,7 @@ bool32 sub_0808FC5C(PushableFurnitureEntity* this) {
|
||||
} else {
|
||||
super->timer = 0x18;
|
||||
}
|
||||
if ((gPlayerState.flags & 0x80) == 0) {
|
||||
if ((gPlayerState.flags & PL_MINISH) == 0) {
|
||||
super->timer += 0x10;
|
||||
}
|
||||
sub_0808FF50(this);
|
||||
@@ -213,7 +213,7 @@ void sub_0808FD44(PushableFurnitureEntity* this, u32 param_2) {
|
||||
} else {
|
||||
tmp = this->unk_70;
|
||||
}
|
||||
if ((gPlayerState.flags & 0x80) != 0) {
|
||||
if ((gPlayerState.flags & PL_MINISH) != 0) {
|
||||
super->speed = 0x40;
|
||||
super->timer = 0x20;
|
||||
} else {
|
||||
@@ -222,7 +222,7 @@ void sub_0808FD44(PushableFurnitureEntity* this, u32 param_2) {
|
||||
}
|
||||
} else {
|
||||
tmp = this->unk_7c;
|
||||
if ((gPlayerState.flags & 0x80) != 0) {
|
||||
if ((gPlayerState.flags & PL_MINISH) != 0) {
|
||||
super->speed = 0x40;
|
||||
super->timer = 0x40;
|
||||
} else {
|
||||
@@ -271,7 +271,7 @@ void sub_0808FDE8(PushableFurnitureEntity* this) {
|
||||
bool32 sub_0808FECC(PushableFurnitureEntity* this) {
|
||||
bool32 result = TRUE;
|
||||
|
||||
if (!((gPlayerState.flags & 0x80) == 0 && (gPlayerEntity.action == 6) && (gPlayerEntity.animationState == 0) &&
|
||||
if (!((gPlayerState.flags & PL_MINISH) == 0 && (gPlayerEntity.action == 6) && (gPlayerEntity.animationState == 0) &&
|
||||
(gPlayerEntity.y.HALF.HI - super->y.HALF.HI < 0x14) && (super->x.HALF.HI + 0xc > gPlayerEntity.x.HALF.HI) &&
|
||||
(super->x.HALF.HI - 12 < gPlayerEntity.x.HALF.HI))) {
|
||||
result = FALSE;
|
||||
|
||||
@@ -98,7 +98,7 @@ void sub_080A78B8(PlayerItemSwordEntity* this, Entity* param_2) {
|
||||
super->knockbackDirection = 0;
|
||||
super->iframes = 0;
|
||||
}
|
||||
if ((gPlayerState.flags & 0x8000000) != 0) {
|
||||
if ((gPlayerState.flags & PL_SWORD_THRUST) != 0) {
|
||||
gPlayerState.sword_state |= 0x80;
|
||||
} else if (gPlayerState.sword_state != 0) {
|
||||
switch (super->contactFlags & 0x7f) {
|
||||
|
||||
+197
-12
@@ -51,7 +51,7 @@ void* sub_08077C54(ItemBehavior*);
|
||||
u32 sub_08079FD4(Entity*, u32);
|
||||
void LoadRoomGfx(void);
|
||||
u32 sub_0807A094(u32);
|
||||
u32 GetSurfaceCalcType(Entity*, u32, u32);
|
||||
u32 GetSurfaceCalcType(Entity*, s32, s32);
|
||||
void sub_0807AAF8(Entity*, u32);
|
||||
|
||||
extern struct_0811BE48 gUnk_0811BE48[];
|
||||
@@ -78,6 +78,20 @@ bool32 sub_0807BF88(u32, u32, RoomResInfo*);
|
||||
|
||||
void sub_0807BFD0(void);
|
||||
|
||||
void ForceSetPlayerState(u32 framestate);
|
||||
struct_03003DF8* sub_080784E4(void);
|
||||
|
||||
extern const u16 gUnk_0811C0F8[];
|
||||
|
||||
u32 sub_08079778(void);
|
||||
u32 sub_0807A500(void);
|
||||
|
||||
extern const u16 gUnk_0811C108[];
|
||||
|
||||
extern const u16 gUnk_0811C110[];
|
||||
|
||||
extern const u16 gUnk_08007CAC[];
|
||||
|
||||
void sub_08077698(PlayerEntity* this) {
|
||||
ItemBehavior* puVar2;
|
||||
u32 idx;
|
||||
@@ -140,7 +154,7 @@ NONMATCH("asm/non_matching/playerUtils/sub_080777A0.inc", bool32 sub_080777A0(vo
|
||||
return TRUE;
|
||||
}
|
||||
} else if ((((gUnk_0200AF00.unk_2c == 0xc) && (gPlayerState.field_0x1c == 0)) &&
|
||||
(gPlayerState.floor_type != 0x11)) &&
|
||||
(gPlayerState.floor_type != SURFACE_SWAMP)) &&
|
||||
((((gPlayerState.field_0x90 & 0xf00) != 0 &&
|
||||
((gPlayerState.flags & (PL_BURNING | PL_ROLLING)) == 0)) &&
|
||||
((gPlayerState.jump_status == 0 && (gPlayerState.field_0x3[1] == 0)))))) {
|
||||
@@ -209,7 +223,7 @@ ItemBehavior* sub_0807794C(u32 param_1) {
|
||||
(((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 == 0x11 && ((gPlayerState.field_0x37 != 0 && (1 < param_1 - 0x14)))))) {
|
||||
((gPlayerState.floor_type == SURFACE_SWAMP && ((gPlayerState.field_0x37 != 0 && (1 < param_1 - 0x14)))))) {
|
||||
return NULL;
|
||||
} else {
|
||||
u32 tmp = gUnk_0811BE48[param_1].unk0[2];
|
||||
@@ -701,14 +715,103 @@ void ForceSetPlayerState(u32 framestate) {
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_08078180.inc", void sub_08078180())
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_080782C0.inc", u32 sub_080782C0())
|
||||
bool32 sub_080782C0(void) {
|
||||
u8 tmp;
|
||||
Entity* entity;
|
||||
|
||||
if (gPlayerState.framestate == 0) {
|
||||
tmp = gPlayerState.framestate_last;
|
||||
} else {
|
||||
tmp = gPlayerState.framestate;
|
||||
}
|
||||
switch (tmp) {
|
||||
case 2:
|
||||
case 3:
|
||||
case 0xc:
|
||||
case 0x12:
|
||||
case 0x15:
|
||||
case 0x16:
|
||||
return FALSE;
|
||||
}
|
||||
if ((gPlayerState.field_0x27[0] | gPlayerState.swim_state) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
if (gPlayerState.floor_type == SURFACE_PIT) {
|
||||
if (gPlayerState.field_0x14 == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
if (CanDispEzloMessage()) {
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
if ((gPlayerState.flags & PL_DRUGGED) != 0) {
|
||||
return FALSE;
|
||||
}
|
||||
if (CanDispEzloMessage()) {
|
||||
return TRUE;
|
||||
}
|
||||
entity = sub_080784E4()->entity;
|
||||
if (entity == NULL) {
|
||||
return FALSE;
|
||||
}
|
||||
if (gPlayerState.heldObject != 0) {
|
||||
if (gPlayerState.heldObject != 4) {
|
||||
return FALSE;
|
||||
}
|
||||
if ((gNewPlayerEntity.unk_74)->child->kind != OBJECT || (gNewPlayerEntity.unk_74)->child->id != SHOP_ITEM) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
if (((gPlayerState.field_0x92 & 0x1000) != 0) && ((u8)(gUnk_03003DF0.unk_4[3] - 1) < 100)) {
|
||||
sub_0801E738(0);
|
||||
if (gSave.unk12B[0] != 0) {
|
||||
gUnk_03003DF0.unk_2 = gUnk_03003DF0.unk_4[3];
|
||||
*(u8*)(*(int*)(gUnk_03003DF0.unk_4 + 8) + 0x39) = 2;
|
||||
gPlayerState.queued_action = 7;
|
||||
} else {
|
||||
CreateEzloHint(0xb65, 0);
|
||||
}
|
||||
ForceSetPlayerState(0x13);
|
||||
return TRUE;
|
||||
}
|
||||
if ((gPlayerState.field_0x92 & 0x88) == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
switch (gUnk_03003DF0.unk_4[1]) {
|
||||
default:
|
||||
case 0:
|
||||
return TRUE;
|
||||
case 1:
|
||||
case 6:
|
||||
case 9:
|
||||
case 0xa:
|
||||
gPlayerState.queued_action = 7;
|
||||
ForceSetPlayerState(0x13);
|
||||
case 3:
|
||||
case 5:
|
||||
case 7:
|
||||
entity->interactType = 1;
|
||||
gUnk_03003DF0.unk_2 = 0;
|
||||
return TRUE;
|
||||
case 8:
|
||||
if (gRoomVars.shopItemType == 0) {
|
||||
entity->interactType = 1;
|
||||
gRoomVars.shopItemType = entity->type;
|
||||
gRoomVars.shopItemType2 = entity->type2;
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_080784C8(void) {
|
||||
MemClear(&gUnk_03003DF0, 0x188);
|
||||
gUnk_03003DF0.unk_4 = (u8*)gUnk_0811C000;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_080784E4.inc", void sub_080784E4())
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_080784E4.inc", struct_03003DF8* sub_080784E4(void))
|
||||
|
||||
void sub_08078778(Entity* ent) {
|
||||
sub_0807887C(ent, 1, 0);
|
||||
@@ -927,7 +1030,7 @@ void ClearPlayerState(void) {
|
||||
gPlayerState.field_0xd = 0;
|
||||
gPlayerState.field_0xe = 0;
|
||||
gPlayerState.field_0x11 = 0;
|
||||
gPlayerState.floor_type = 0;
|
||||
gPlayerState.floor_type = SURFACE_NORMAL;
|
||||
gPlayerState.floor_type_last = 0;
|
||||
gPlayerState.field_0x14 = 0;
|
||||
gPlayerState.sword_state = 0;
|
||||
@@ -1129,7 +1232,24 @@ void sub_080792BC(s32 speed, u32 direction, u32 field_0x38) {
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_080792D8.inc", void sub_080792D8())
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_080793E4.inc", bool32 sub_080793E4(u32 a))
|
||||
bool32 sub_080793E4(u32 param_1) {
|
||||
u32 tmp;
|
||||
if (gPlayerState.swim_state == 0) {
|
||||
tmp = gUnk_0811C0F8[gPlayerEntity.animationState >> 1];
|
||||
} else {
|
||||
tmp = gUnk_0811C0F8[gPlayerEntity.direction >> 2];
|
||||
}
|
||||
if (sub_08079778() && ((gPlayerState.field_0x90 & tmp) != 0)) {
|
||||
if (param_1 != 0) {
|
||||
if (!sub_080B1BA4(sub_0807A500(), gPlayerEntity.collisionLayer, param_1)) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/RespawnPlayer.inc", void RespawnPlayer())
|
||||
|
||||
@@ -1181,15 +1301,59 @@ void sub_08079744(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_08079778.inc", void sub_08079778())
|
||||
bool32 sub_08079778(void) {
|
||||
u32 tmp;
|
||||
if (gPlayerState.swim_state == 0) {
|
||||
tmp = gUnk_0811C108[gPlayerEntity.animationState >> 1];
|
||||
} else {
|
||||
tmp = gUnk_0811C108[gPlayerEntity.direction >> 2];
|
||||
}
|
||||
return tmp == (gPlayerEntity.collisions & tmp);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_080797C4.inc", u32 sub_080797C4(void))
|
||||
u32 sub_080797C4(void) {
|
||||
u32 tmp = gUnk_0811C110[gPlayerEntity.direction >> 3];
|
||||
return tmp == (gPlayerEntity.collisions & tmp);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_080797EC.inc", void sub_080797EC())
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/ResolvePlayerAnimation.inc", void ResolvePlayerAnimation())
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_08079B24.inc", u32 sub_08079B24())
|
||||
bool32 sub_08079B24(void) {
|
||||
if ((gPlayerEntity.action != PLAYER_MINISHDIE) && (gPlayerEntity.health == 0)) {
|
||||
gPlayerState.flags &= ~PL_PARACHUTE;
|
||||
gPlayerEntity.knockbackDuration = gPlayerEntity.health;
|
||||
if (gPlayerState.field_0x7 == 0) {
|
||||
if (gPlayerState.swim_state != 0) {
|
||||
RespawnPlayer();
|
||||
} else {
|
||||
if ((gPlayerState.field_0x14 == 0) && ((gPlayerState.flags & PL_IN_MINECART) == 0)) {
|
||||
if (gPlayerEntity.z.HALF.HI < 0) {
|
||||
if (gPlayerEntity.zVelocity > 0) {
|
||||
gPlayerEntity.zVelocity = 0;
|
||||
}
|
||||
if ((gPlayerState.jump_status & 0x41) == 0) {
|
||||
gPlayerState.jump_status = 0x41;
|
||||
gPlayerEntity.direction = 0xff;
|
||||
gPlayerState.field_0xd = 0xff;
|
||||
return TRUE;
|
||||
} else {
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
if (((gPlayerState.flags & PL_FLAGS2) == 0) && (sub_08079D48() == 0)) {
|
||||
gPlayerState.field_0xa |= 0x10;
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
gPlayerEntity.flags &= ~ENT_COLLIDE;
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
void sub_08079BD8(Entity* this) {
|
||||
this->x = gPlayerEntity.x;
|
||||
@@ -1337,7 +1501,28 @@ void UpdateFloorType(void) {
|
||||
gUnk_0811C120[gPlayerState.floor_type](&gPlayerEntity);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/GetSurfaceCalcType.inc", u32 GetSurfaceCalcType(Entity* a, u32 b, u32 c))
|
||||
u32 GetSurfaceCalcType(Entity* param_1, s32 x, s32 y) {
|
||||
u32 position = TILE(param_1->x.HALF.HI + (u32)x, param_1->y.HALF.HI + y);
|
||||
u32 tileType = GetTileTypeByPos(param_1->x.HALF.HI + x, param_1->y.HALF.HI + y, gPlayerEntity.collisionLayer);
|
||||
if (tileType != gPlayerState.field_0x22[1]) {
|
||||
gPlayerState.field_0x37 = 0;
|
||||
}
|
||||
if ((tileType != gPlayerState.field_0x22[1]) || (position != gPlayerState.field_0x22[0])) {
|
||||
gPlayerState.field_0x22[0] = position;
|
||||
gPlayerState.field_0x22[1] = tileType;
|
||||
gPlayerState.field_0x11 = 0;
|
||||
}
|
||||
|
||||
if (gPlayerState.field_0x11 != 0xff) {
|
||||
gPlayerState.field_0x11++;
|
||||
}
|
||||
if (gPlayerState.field_0x37 != 0xff) {
|
||||
gPlayerState.field_0x37++;
|
||||
}
|
||||
gPlayerState.floor_type_last = gPlayerState.floor_type;
|
||||
tileType = GetRelativeCollisionTile(param_1, x, y);
|
||||
return sub_08007DD6(tileType, (u16*)gUnk_08007CAC);
|
||||
}
|
||||
|
||||
void EnablePlayerDraw(Entity* this) {
|
||||
this->type2 = 0;
|
||||
@@ -1358,7 +1543,7 @@ bool32 sub_0807A2B8(void) {
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A2F8.inc", u32 sub_0807A2F8(u32 a1))
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A500.inc", void sub_0807A500())
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A500.inc", u32 sub_0807A500())
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A5B8.inc", void sub_0807A5B8(u32 a))
|
||||
|
||||
|
||||
@@ -188,7 +188,35 @@ END_NONMATCH
|
||||
|
||||
ASM_FUNC("asm/non_matching/gyorgTail/sub_080AC6F0.inc", void sub_080AC6F0(Entity* this))
|
||||
|
||||
ASM_FUNC("asm/non_matching/gyorgTail/sub_080AC760.inc", void sub_080AC760(Entity* this))
|
||||
void sub_080AC760(Entity* param_1) {
|
||||
s32 tmp;
|
||||
Entity* entity1;
|
||||
Entity* entity2;
|
||||
|
||||
entity1 = param_1->child;
|
||||
tmp = (entity1->direction - param_1->direction) & 0xff;
|
||||
if (((tmp + 8) & 0xff) > 0x10) {
|
||||
if (tmp > 0x80) {
|
||||
entity1->direction = param_1->direction - 8;
|
||||
} else {
|
||||
entity1->direction = param_1->direction + 8;
|
||||
}
|
||||
}
|
||||
entity2 = entity1->child;
|
||||
if (entity2->child == NULL) {
|
||||
entity2->direction = param_1->parent->animationState ^ 0x80;
|
||||
} else {
|
||||
tmp = (entity2->direction - entity1->direction) & 0xff;
|
||||
if (((tmp + 8) & 0xff) <= 0x10) {
|
||||
return;
|
||||
}
|
||||
if (tmp > 0x80) {
|
||||
entity2->direction = entity1->direction - 8;
|
||||
} else {
|
||||
entity2->direction = entity1->direction + 8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/gyorgTail/sub_080AC7C4.inc", void sub_080AC7C4(Entity* this)) {
|
||||
// TODO regalloc
|
||||
|
||||
+26
-1
@@ -54,6 +54,8 @@ void sub_08080B60(u8*);
|
||||
|
||||
extern u8 gMapDataTopSpecial[];
|
||||
|
||||
extern const void (*const gUnk_0811E7C4[])(int);
|
||||
|
||||
void UpdateScroll(void) {
|
||||
static void (*const gUnk_0811E768[])(RoomControls*) = {
|
||||
sub_0807FC64, sub_0807FC7C, sub_0807FDB0, NULL, sub_0807FEF0, sub_0807FF54,
|
||||
@@ -363,7 +365,30 @@ ASM_FUNC("asm/non_matching/scroll/sub_08080794.inc", void sub_08080794())
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/sub_08080808.inc", void sub_08080808())
|
||||
|
||||
ASM_FUNC("asm/non_matching/scroll/DoExitTransition.inc", void DoExitTransition(const ScreenTransitionData* data))
|
||||
void DoExitTransition(const ScreenTransitionData* data) {
|
||||
PlayerRoomStatus* status;
|
||||
gRoomTransition.transitioningOut = 1;
|
||||
status = &gRoomTransition.player_status;
|
||||
if ((u16)data->playerXPos <= 0x3ff) {
|
||||
status->start_pos_x = data->playerXPos;
|
||||
} else {
|
||||
status->start_pos_x = (gRoomControls.camera_target)->x.HALF.HI | 0x8000;
|
||||
}
|
||||
if ((u16)data->playerYPos <= 0x3ff) {
|
||||
status->start_pos_y = data->playerYPos;
|
||||
} else {
|
||||
status->start_pos_y = (gRoomControls.camera_target)->y.HALF.HI | 0x8000;
|
||||
}
|
||||
status->area_next = data->area;
|
||||
status->room_next = data->room;
|
||||
status->layer = data->playerLayer;
|
||||
status->spawn_type = data->field_0xe;
|
||||
status->start_anim = data->playerState;
|
||||
if (data->transitionSFX != SFX_NONE) {
|
||||
SoundReq(data->transitionSFX);
|
||||
}
|
||||
gUnk_0811E7C4[data->type](data->field_0xa);
|
||||
}
|
||||
|
||||
void sub_080808D8(void) {
|
||||
gRoomTransition.type = TRANSITION_DEFAULT;
|
||||
|
||||
+3
-3
@@ -364,7 +364,7 @@ void sub_080A5B34(void) {
|
||||
}
|
||||
if (bVar1) {
|
||||
if (uVar3 == 0) {
|
||||
SetFade(7, 0x20);
|
||||
SetFade(FADE_IN_OUT | FADE_BLACK_WHITE | FADE_INSTANT, 0x20);
|
||||
gMenu.transitionTimer = 0x3c;
|
||||
SetMenuType(2);
|
||||
} else {
|
||||
@@ -698,7 +698,7 @@ void sub_080A6378(void) {
|
||||
if ((gGenericMenu.unk2c & 0x20) == 0) {
|
||||
gOamCmd.x = gRoomTransition.player_status.overworld_map_x * 0xa0 / 0xf90 + 0x28;
|
||||
gOamCmd.y = (gRoomTransition.player_status.overworld_map_y << 7) / 0xc60 + 0xc;
|
||||
if ((gPlayerState.flags & 8) != 0) {
|
||||
if ((gPlayerState.flags & PL_NO_CAP) != 0) {
|
||||
frameIndex = 0x5a;
|
||||
} else {
|
||||
frameIndex = 0x59;
|
||||
@@ -773,7 +773,7 @@ void sub_080A6534(void) {
|
||||
gGenericMenu.unk10.h[0] = 0;
|
||||
gMenu.transitionTimer = 0x3c;
|
||||
SetMenuType(1);
|
||||
SetFade(4, 8);
|
||||
SetFade(FADE_INSTANT, 8);
|
||||
}
|
||||
|
||||
void sub_080A65AC(void) {
|
||||
|
||||
Reference in New Issue
Block a user