mirror of
https://github.com/zeldaret/tmc
synced 2026-06-11 13:10:35 -04:00
Merge pull request #500 from octorock/playerUtils
Decompile some playerUtils
This commit is contained in:
@@ -1,118 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
ldr r3, _080777D0 @ =gPlayerState
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r4, #0x80
|
||||
adds r0, r4, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08077870
|
||||
ldr r1, [r3, #0x30]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080777D4
|
||||
adds r1, r3, #0
|
||||
adds r1, #0xa0
|
||||
movs r0, #1
|
||||
strb r0, [r1]
|
||||
bl DeleteClones
|
||||
_080777CC:
|
||||
movs r0, #1
|
||||
b _0807787C
|
||||
.align 2, 0
|
||||
_080777D0: .4byte gPlayerState
|
||||
_080777D4:
|
||||
ldr r2, _080777F4 @ =gArea
|
||||
ldrb r0, [r2, #0x18]
|
||||
cmp r0, #2
|
||||
beq _080777FC
|
||||
cmp r0, #3
|
||||
beq _08077810
|
||||
ldr r0, _080777F8 @ =gUnk_0200AF00
|
||||
adds r0, #0x2c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0xc
|
||||
bne _0807787A
|
||||
adds r2, r3, #0
|
||||
ldrb r0, [r2, #0x1c]
|
||||
cmp r0, #0
|
||||
bne _0807787A
|
||||
b _08077838
|
||||
.align 2, 0
|
||||
_080777F4: .4byte gArea
|
||||
_080777F8: .4byte gUnk_0200AF00
|
||||
_080777FC:
|
||||
ldrb r0, [r2, #0x1a]
|
||||
cmp r0, #0
|
||||
bne _080777CC
|
||||
ldr r1, _0807780C @ =gPlayerEntity
|
||||
ldrb r0, [r1, #0xd]
|
||||
adds r0, #1
|
||||
strb r0, [r1, #0xd]
|
||||
b _080777CC
|
||||
.align 2, 0
|
||||
_0807780C: .4byte gPlayerEntity
|
||||
_08077810:
|
||||
ldrb r0, [r2, #0x1a]
|
||||
cmp r0, #0
|
||||
bne _0807787A
|
||||
ands r1, r4
|
||||
cmp r1, #0
|
||||
beq _0807787A
|
||||
ldr r0, _08077834 @ =gPlayerEntity
|
||||
ldrb r1, [r0, #0xd]
|
||||
adds r1, #1
|
||||
strb r1, [r0, #0xd]
|
||||
ldrb r2, [r0, #0x10]
|
||||
movs r1, #0x7f
|
||||
ands r1, r2
|
||||
strb r1, [r0, #0x10]
|
||||
movs r1, #0xb4
|
||||
bl RequestPriorityDuration
|
||||
b _080777CC
|
||||
.align 2, 0
|
||||
_08077834: .4byte gPlayerEntity
|
||||
_08077838:
|
||||
ldrb r0, [r2, #0x12]
|
||||
cmp r0, #0x11
|
||||
beq _0807787A
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x90
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xf0
|
||||
lsls r0, r0, #4
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807787A
|
||||
ldr r0, [r2, #0x30]
|
||||
ldr r1, _0807786C @ =0x00040400
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0807787A
|
||||
ldrb r0, [r2, #2]
|
||||
cmp r0, #0
|
||||
bne _0807787A
|
||||
ldrb r0, [r2, #4]
|
||||
cmp r0, #0
|
||||
bne _0807787A
|
||||
movs r0, #0x18
|
||||
strb r0, [r2, #0xc]
|
||||
b _0807787A
|
||||
.align 2, 0
|
||||
_0807786C: .4byte 0x00040400
|
||||
_08077870:
|
||||
ldr r0, [r3, #0x30]
|
||||
movs r1, #0x20
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080777CC
|
||||
_0807787A:
|
||||
movs r0, #0
|
||||
_0807787C:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,64 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
ldr r2, _08077920 @ =gPlayerState
|
||||
ldr r0, [r2, #0x30]
|
||||
ldr r1, _08077924 @ =0x000400A0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0807791C
|
||||
ldr r0, _08077928 @ =gPlayerEntity
|
||||
adds r0, #0x79
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080778FA
|
||||
ldrb r0, [r2, #5]
|
||||
cmp r0, #0
|
||||
bne _080778FA
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807791C
|
||||
_080778FA:
|
||||
bl sub_080789A8
|
||||
cmp r0, #0
|
||||
bne _08077910
|
||||
ldr r0, _08077920 @ =gPlayerState
|
||||
adds r0, #0x90
|
||||
ldrh r1, [r0]
|
||||
ldr r0, _0807792C @ =0x00000F03
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0807791C
|
||||
_08077910:
|
||||
movs r0, #0x1b
|
||||
bl sub_0807794C
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
bne _08077930
|
||||
_0807791C:
|
||||
movs r0, #0
|
||||
b _08077940
|
||||
.align 2, 0
|
||||
_08077920: .4byte gPlayerState
|
||||
_08077924: .4byte 0x000400A0
|
||||
_08077928: .4byte gPlayerEntity
|
||||
_0807792C: .4byte 0x00000F03
|
||||
_08077930:
|
||||
movs r0, #0x1b
|
||||
strb r0, [r1, #1]
|
||||
ldr r0, _08077944 @ =gUnk_0811BE48
|
||||
ldr r2, _08077948 @ =0x00000145
|
||||
adds r0, r0, r2
|
||||
ldrb r0, [r0]
|
||||
strb r0, [r1, #9]
|
||||
movs r0, #1
|
||||
_08077940:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08077944: .4byte gUnk_0811BE48
|
||||
_08077948: .4byte 0x00000145
|
||||
.syntax divided
|
||||
@@ -1,98 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sb
|
||||
mov r6, r8
|
||||
push {r6, r7}
|
||||
mov sb, r0
|
||||
ldr r1, _08079EBC @ =gPlayerEntity
|
||||
ldrb r2, [r1, #0x15]
|
||||
movs r0, #8
|
||||
ands r0, r2
|
||||
adds r7, r1, #0
|
||||
cmp r0, #0
|
||||
beq _08079ECA
|
||||
movs r0, #0x10
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _08079EC0
|
||||
ldr r0, [r7, #0x48]
|
||||
ldrb r0, [r0, #2]
|
||||
rsbs r0, r0, #0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r5, r0, #0x10
|
||||
b _08079EC4
|
||||
.align 2, 0
|
||||
_08079EBC: .4byte gPlayerEntity
|
||||
_08079EC0:
|
||||
ldr r0, [r7, #0x48]
|
||||
ldrb r5, [r0, #2]
|
||||
_08079EC4:
|
||||
ldr r0, [r7, #0x48]
|
||||
ldrb r4, [r0, #3]
|
||||
b _08079EDE
|
||||
_08079ECA:
|
||||
ldr r0, [r7, #0x48]
|
||||
ldrb r5, [r0, #4]
|
||||
cmp r2, #0
|
||||
beq _08079ED6
|
||||
ldrb r4, [r0, #5]
|
||||
b _08079EDE
|
||||
_08079ED6:
|
||||
ldrb r0, [r0, #5]
|
||||
rsbs r0, r0, #0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r4, r0, #0x10
|
||||
_08079EDE:
|
||||
lsls r0, r5, #0x10
|
||||
asrs r0, r0, #0x10
|
||||
mov r8, r0
|
||||
lsls r0, r4, #0x10
|
||||
asrs r6, r0, #0x10
|
||||
adds r0, r7, #0
|
||||
mov r1, r8
|
||||
adds r2, r6, #0
|
||||
bl sub_080B1AF0
|
||||
adds r1, r0, #0
|
||||
mov r0, sb
|
||||
bl sub_08079F48
|
||||
cmp r0, #0
|
||||
bne _08079F3C
|
||||
ldrb r1, [r7, #0x15]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08079F10
|
||||
rsbs r0, r6, #0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r4, r0, #0x10
|
||||
b _08079F18
|
||||
_08079F10:
|
||||
mov r1, r8
|
||||
rsbs r0, r1, #0
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r5, r0, #0x10
|
||||
_08079F18:
|
||||
ldr r0, _08079F38 @ =gPlayerEntity
|
||||
lsls r1, r5, #0x10
|
||||
asrs r1, r1, #0x10
|
||||
lsls r2, r4, #0x10
|
||||
asrs r2, r2, #0x10
|
||||
bl sub_080B1AF0
|
||||
adds r1, r0, #0
|
||||
mov r0, sb
|
||||
bl sub_08079F48
|
||||
cmp r0, #0
|
||||
bne _08079F3C
|
||||
movs r0, #0
|
||||
b _08079F3E
|
||||
.align 2, 0
|
||||
_08079F38: .4byte gPlayerEntity
|
||||
_08079F3C:
|
||||
movs r0, #1
|
||||
_08079F3E:
|
||||
pop {r3, r4}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,66 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r3, r0, #0
|
||||
movs r2, #0x16
|
||||
ldr r0, _0807A0AC @ =gPlayerState
|
||||
ldrb r0, [r0, #0xf]
|
||||
cmp r0, #0
|
||||
beq _0807A0B0
|
||||
movs r2, #0x1b
|
||||
cmp r0, #0x78
|
||||
bls _0807A104
|
||||
movs r2, #0x1a
|
||||
b _0807A104
|
||||
.align 2, 0
|
||||
_0807A0AC: .4byte gPlayerState
|
||||
_0807A0B0:
|
||||
ldr r0, _0807A0F0 @ =gSave
|
||||
adds r1, r0, #0
|
||||
adds r1, #0xb2
|
||||
ldrb r1, [r1]
|
||||
adds r5, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0807A104
|
||||
movs r4, #1
|
||||
cmp r3, #0
|
||||
bne _0807A0D6
|
||||
adds r0, #0xc4
|
||||
ldrh r1, [r0]
|
||||
cmp r1, #0xb3
|
||||
bhi _0807A0D6
|
||||
movs r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807A0D6
|
||||
movs r4, #0
|
||||
_0807A0D6:
|
||||
cmp r4, #0
|
||||
beq _0807A104
|
||||
adds r0, r5, #0
|
||||
adds r0, #0xb2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0x30
|
||||
beq _0807A102
|
||||
cmp r0, #0x30
|
||||
bgt _0807A0F4
|
||||
cmp r0, #0x2f
|
||||
beq _0807A0FA
|
||||
b _0807A102
|
||||
.align 2, 0
|
||||
_0807A0F0: .4byte gSave
|
||||
_0807A0F4:
|
||||
cmp r0, #0x31
|
||||
beq _0807A0FE
|
||||
b _0807A102
|
||||
_0807A0FA:
|
||||
movs r2, #0x18
|
||||
b _0807A104
|
||||
_0807A0FE:
|
||||
movs r2, #0x17
|
||||
b _0807A104
|
||||
_0807A102:
|
||||
movs r2, #0x19
|
||||
_0807A104:
|
||||
adds r0, r2, #0
|
||||
pop {r4, r5, pc}
|
||||
.syntax divided
|
||||
@@ -1,41 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
ldrb r1, [r0, #0x15]
|
||||
cmp r1, #8
|
||||
beq _0807A8BA
|
||||
cmp r1, #8
|
||||
bgt _0807A8A6
|
||||
cmp r1, #0
|
||||
beq _0807A8B0
|
||||
b _0807A8C8
|
||||
_0807A8A6:
|
||||
cmp r1, #0x10
|
||||
beq _0807A8B6
|
||||
cmp r1, #0x18
|
||||
beq _0807A8C0
|
||||
b _0807A8C8
|
||||
_0807A8B0:
|
||||
movs r2, #8
|
||||
rsbs r2, r2, #0
|
||||
b _0807A8CA
|
||||
_0807A8B6:
|
||||
movs r2, #5
|
||||
b _0807A8CA
|
||||
_0807A8BA:
|
||||
movs r2, #0
|
||||
movs r1, #8
|
||||
b _0807A8CC
|
||||
_0807A8C0:
|
||||
movs r2, #0
|
||||
movs r1, #8
|
||||
rsbs r1, r1, #0
|
||||
b _0807A8CC
|
||||
_0807A8C8:
|
||||
movs r2, #0
|
||||
_0807A8CA:
|
||||
movs r1, #0
|
||||
_0807A8CC:
|
||||
bl GetRelativeCollisionTile
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,42 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r3, r0, #0
|
||||
adds r2, r1, #0
|
||||
movs r1, #0x36
|
||||
ldrsh r0, [r3, r1]
|
||||
cmp r0, #0
|
||||
bne _0807AB3C
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x38
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x1e
|
||||
orrs r2, r0
|
||||
movs r3, #0
|
||||
ldr r0, _0807AB40 @ =gPlayerState
|
||||
ldr r1, [r0, #0x40]
|
||||
adds r4, r0, #0
|
||||
cmp r1, r2
|
||||
beq _0807AB32
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x40
|
||||
_0807AB20:
|
||||
ldr r0, [r1]
|
||||
stm r1!, {r2}
|
||||
adds r2, r0, #0
|
||||
adds r3, #1
|
||||
cmp r3, #0xe
|
||||
bhi _0807AB32
|
||||
ldr r0, [r1]
|
||||
cmp r0, r2
|
||||
bne _0807AB20
|
||||
_0807AB32:
|
||||
lsls r0, r3, #2
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x40
|
||||
adds r0, r0, r1
|
||||
str r2, [r0]
|
||||
_0807AB3C:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0807AB40: .4byte gPlayerState
|
||||
.syntax divided
|
||||
@@ -1,129 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, sl
|
||||
mov r6, sb
|
||||
mov r5, r8
|
||||
push {r5, r6, r7}
|
||||
adds r6, r0, #0
|
||||
adds r7, r1, #0
|
||||
mov r8, r2
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r6, r1]
|
||||
adds r0, r0, r7
|
||||
ldr r2, _0807ABF0 @ =gRoomControls
|
||||
mov sb, r2
|
||||
ldrh r1, [r2, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
movs r3, #0x3f
|
||||
mov sl, r3
|
||||
ands r0, r3
|
||||
movs r5, #0x32
|
||||
ldrsh r1, [r6, r5]
|
||||
add r1, r8
|
||||
ldrh r2, [r2, #8]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
ands r1, r3
|
||||
lsls r1, r1, #6
|
||||
orrs r0, r1
|
||||
adds r1, r6, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl GetTileType
|
||||
movs r1, #0xb
|
||||
bl sub_0806FC50
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _0807AC44
|
||||
ldrh r0, [r5, #6]
|
||||
cmp r0, #0x76
|
||||
bne _0807ABF4
|
||||
movs r0, #0x2a
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _0807AC44
|
||||
lsls r2, r7, #0x10
|
||||
mov r0, r8
|
||||
lsls r3, r0, #0x10
|
||||
adds r0, r6, #0
|
||||
adds r1, r4, #0
|
||||
bl PositionRelative
|
||||
adds r0, r4, #0
|
||||
bl sub_08004168
|
||||
ldrh r0, [r5, #6]
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r4, r2]
|
||||
mov r3, sb
|
||||
ldrh r2, [r3, #6]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
mov r5, sl
|
||||
ands r1, r5
|
||||
movs r3, #0x32
|
||||
ldrsh r2, [r4, r3]
|
||||
mov r5, sb
|
||||
ldrh r3, [r5, #8]
|
||||
subs r2, r2, r3
|
||||
asrs r2, r2, #4
|
||||
mov r3, sl
|
||||
ands r2, r3
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x38
|
||||
ldrb r2, [r2]
|
||||
bl sub_0807B7D8
|
||||
b _0807AC44
|
||||
.align 2, 0
|
||||
_0807ABF0: .4byte gRoomControls
|
||||
_0807ABF4:
|
||||
movs r0, #0x2a
|
||||
movs r1, #2
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _0807AC44
|
||||
lsls r2, r7, #0x10
|
||||
mov r0, r8
|
||||
lsls r3, r0, #0x10
|
||||
adds r0, r6, #0
|
||||
adds r1, r4, #0
|
||||
bl PositionRelative
|
||||
str r5, [r4, #0x54]
|
||||
ldr r0, _0807AC50 @ =0x0000404F
|
||||
movs r2, #0x2e
|
||||
ldrsh r1, [r4, r2]
|
||||
mov r3, sb
|
||||
ldrh r2, [r3, #6]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
mov r5, sl
|
||||
ands r1, r5
|
||||
movs r3, #0x32
|
||||
ldrsh r2, [r4, r3]
|
||||
mov r5, sb
|
||||
ldrh r3, [r5, #8]
|
||||
subs r2, r2, r3
|
||||
asrs r2, r2, #4
|
||||
mov r3, sl
|
||||
ands r2, r3
|
||||
lsls r2, r2, #6
|
||||
orrs r1, r2
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x38
|
||||
ldrb r2, [r2]
|
||||
bl SetTile
|
||||
_0807AC44:
|
||||
pop {r3, r4, r5}
|
||||
mov r8, r3
|
||||
mov sb, r4
|
||||
mov sl, r5
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0807AC50: .4byte 0x0000404F
|
||||
.syntax divided
|
||||
@@ -1,67 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldr r0, _0807AC74 @ =gPlayerState
|
||||
ldrb r1, [r0, #0x11]
|
||||
adds r3, r0, #0
|
||||
cmp r1, #0
|
||||
beq _0807ACC6
|
||||
ldrb r0, [r3, #0x12]
|
||||
cmp r0, #0x2a
|
||||
beq _0807ACA8
|
||||
cmp r0, #0x2a
|
||||
bgt _0807AC78
|
||||
cmp r0, #0x1e
|
||||
beq _0807AC82
|
||||
b _0807ACC6
|
||||
.align 2, 0
|
||||
_0807AC74: .4byte gPlayerState
|
||||
_0807AC78:
|
||||
cmp r0, #0x2b
|
||||
beq _0807AC90
|
||||
cmp r0, #0x2c
|
||||
beq _0807ACB6
|
||||
b _0807ACC6
|
||||
_0807AC82:
|
||||
ldrh r0, [r2, #0x2e]
|
||||
movs r1, #0x10
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #8
|
||||
orrs r1, r0
|
||||
strh r1, [r2, #0x2e]
|
||||
_0807AC90:
|
||||
movs r0, #0
|
||||
movs r1, #0x1d
|
||||
strb r1, [r2, #0xc]
|
||||
strb r0, [r2, #0xd]
|
||||
strh r0, [r2, #0x30]
|
||||
ldr r0, _0807ACA4 @ =0x000002CF
|
||||
strh r0, [r3, #8]
|
||||
movs r0, #1
|
||||
b _0807ACC8
|
||||
.align 2, 0
|
||||
_0807ACA4: .4byte 0x000002CF
|
||||
_0807ACA8:
|
||||
ldrh r0, [r2, #0x2e]
|
||||
movs r1, #0x10
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #8
|
||||
orrs r1, r0
|
||||
strh r1, [r2, #0x2e]
|
||||
_0807ACB6:
|
||||
movs r0, #0
|
||||
movs r1, #0x1d
|
||||
strb r1, [r2, #0xc]
|
||||
movs r1, #1
|
||||
strb r1, [r2, #0xd]
|
||||
strh r0, [r2, #0x30]
|
||||
movs r0, #1
|
||||
b _0807ACC8
|
||||
_0807ACC6:
|
||||
movs r0, #0
|
||||
_0807ACC8:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,121 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x42
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
movs r0, #0x72
|
||||
bl GetInventoryValue
|
||||
movs r1, #0xc0
|
||||
cmp r0, #1
|
||||
bne _0807ACF4
|
||||
adds r1, #0x40
|
||||
_0807ACF4:
|
||||
movs r2, #0x24
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r1, r0
|
||||
ble _0807AD18
|
||||
strh r1, [r4, #0x24]
|
||||
ldr r0, _0807AD14 @ =gPlayerState
|
||||
ldrb r1, [r0, #0xd]
|
||||
strb r1, [r4, #0x15]
|
||||
adds r0, #0x26
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #1
|
||||
bne _0807ADB4
|
||||
b _0807AD1E
|
||||
.align 2, 0
|
||||
_0807AD14: .4byte gPlayerState
|
||||
_0807AD18:
|
||||
ldrh r0, [r4, #0x24]
|
||||
subs r0, #4
|
||||
strh r0, [r4, #0x24]
|
||||
_0807AD1E:
|
||||
ldr r2, _0807AD3C @ =gPlayerState
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x89
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0
|
||||
bne _0807AD40
|
||||
adds r0, r4, #0
|
||||
bl sub_0807ADB8
|
||||
cmp r0, #0
|
||||
bne _0807AD74
|
||||
adds r0, r4, #0
|
||||
bl sub_0807AE20
|
||||
b _0807AD74
|
||||
.align 2, 0
|
||||
_0807AD3C: .4byte gPlayerState
|
||||
_0807AD40:
|
||||
subs r0, #1
|
||||
strb r0, [r1]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
beq _0807AD52
|
||||
adds r0, r4, #0
|
||||
bl sub_0807ADB8
|
||||
b _0807AD74
|
||||
_0807AD52:
|
||||
adds r2, #0x26
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #4
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldr r0, _0807ADA0 @ =0x00000163
|
||||
bl SoundReq
|
||||
_0807AD74:
|
||||
ldr r0, _0807ADA4 @ =gPlayerState
|
||||
adds r0, #0x26
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807ADA8
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x3c
|
||||
ldrb r1, [r2]
|
||||
movs r0, #4
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
subs r2, #0x13
|
||||
ldrb r1, [r2]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #6
|
||||
orrs r0, r1
|
||||
b _0807ADB2
|
||||
.align 2, 0
|
||||
_0807ADA0: .4byte 0x00000163
|
||||
_0807ADA4: .4byte gPlayerState
|
||||
_0807ADA8:
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x3c
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0xfb
|
||||
ands r0, r1
|
||||
_0807ADB2:
|
||||
strb r0, [r2]
|
||||
_0807ADB4:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,56 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r2, r0, #0
|
||||
ldr r3, _0807ADF4 @ =gPlayerState
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807AE1C
|
||||
movs r0, #0x26
|
||||
adds r0, r0, r3
|
||||
mov ip, r0
|
||||
ldrb r0, [r0]
|
||||
movs r1, #0x80
|
||||
eors r0, r1
|
||||
mov r1, ip
|
||||
strb r0, [r1]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r4, r0, #0x18
|
||||
cmp r4, #0
|
||||
beq _0807ADF8
|
||||
adds r1, r3, #0
|
||||
adds r1, #0x89
|
||||
movs r0, #0x78
|
||||
strb r0, [r1]
|
||||
b _0807AE0E
|
||||
.align 2, 0
|
||||
_0807ADF4: .4byte gPlayerState
|
||||
_0807ADF8:
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #4
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x89
|
||||
strb r4, [r0]
|
||||
_0807AE0E:
|
||||
ldr r0, _0807AE18 @ =0x00000163
|
||||
bl SoundReq
|
||||
movs r0, #1
|
||||
b _0807AE1E
|
||||
.align 2, 0
|
||||
_0807AE18: .4byte 0x00000163
|
||||
_0807AE1C:
|
||||
movs r0, #0
|
||||
_0807AE1E:
|
||||
pop {r4, pc}
|
||||
.syntax divided
|
||||
@@ -1,98 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0x17
|
||||
bne _0807AE32
|
||||
ldr r0, _0807AE58 @ =gPlayerState
|
||||
ldrb r0, [r0, #0xa]
|
||||
cmp r0, #0
|
||||
bne _0807AE74
|
||||
_0807AE32:
|
||||
ldr r0, _0807AE5C @ =gRoomControls
|
||||
ldrh r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _0807AE74
|
||||
ldr r0, _0807AE58 @ =gPlayerState
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807AE74
|
||||
movs r0, #0x72
|
||||
bl GetInventoryValue
|
||||
cmp r0, #1
|
||||
bne _0807AE60
|
||||
movs r0, #0xe0
|
||||
lsls r0, r0, #1
|
||||
b _0807AE64
|
||||
.align 2, 0
|
||||
_0807AE58: .4byte gPlayerState
|
||||
_0807AE5C: .4byte gRoomControls
|
||||
_0807AE60:
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #1
|
||||
_0807AE64:
|
||||
strh r0, [r4, #0x24]
|
||||
adds r0, r4, #0
|
||||
bl sub_08079520
|
||||
movs r0, #0xb1
|
||||
lsls r0, r0, #1
|
||||
bl SoundReq
|
||||
_0807AE74:
|
||||
movs r0, #0x10
|
||||
bl sub_080793E4
|
||||
cmp r0, #0
|
||||
beq _0807AEA8
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3d
|
||||
movs r0, #0x14
|
||||
strb r0, [r1]
|
||||
adds r1, #5
|
||||
movs r0, #4
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r4, #0x14]
|
||||
lsls r0, r0, #2
|
||||
movs r1, #0x10
|
||||
eors r0, r1
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3e
|
||||
strb r0, [r1]
|
||||
movs r0, #2
|
||||
rsbs r0, r0, #0
|
||||
bl ModHealth
|
||||
movs r0, #0x7a
|
||||
bl SoundReq
|
||||
_0807AEA8:
|
||||
ldrb r1, [r4, #0x15]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0807AECC
|
||||
ldr r0, _0807AEC8 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0807AEDE
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
bl CreateRandomWaterTrace
|
||||
b _0807AEDE
|
||||
.align 2, 0
|
||||
_0807AEC8: .4byte gRoomTransition
|
||||
_0807AECC:
|
||||
ldr r0, _0807AEE0 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _0807AEDE
|
||||
adds r0, r4, #0
|
||||
bl CreateWaterTrace
|
||||
_0807AEDE:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_0807AEE0: .4byte gRoomTransition
|
||||
.syntax divided
|
||||
@@ -1,108 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r6, r0, #0
|
||||
adds r7, r1, #0
|
||||
movs r1, #2
|
||||
bl sub_0807B464
|
||||
cmp r0, #0
|
||||
beq _0807B558
|
||||
adds r0, r6, #0
|
||||
subs r0, #0x40
|
||||
movs r1, #2
|
||||
bl sub_0807B464
|
||||
adds r5, r0, #0
|
||||
adds r0, r6, #1
|
||||
movs r1, #2
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #1
|
||||
orrs r5, r0
|
||||
adds r4, r6, #0
|
||||
adds r4, #0x40
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #2
|
||||
orrs r5, r0
|
||||
subs r0, r6, #1
|
||||
movs r1, #2
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #3
|
||||
orrs r5, r0
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x41
|
||||
movs r1, #1
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #1
|
||||
orrs r5, r0
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x3f
|
||||
movs r1, #1
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #3
|
||||
orrs r5, r0
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl GetTileType
|
||||
cmp r0, #0
|
||||
beq _0807B4FA
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x80
|
||||
movs r1, #1
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #2
|
||||
orrs r5, r0
|
||||
_0807B4FA:
|
||||
ldr r0, _0807B514 @ =gUnk_0811C2CC
|
||||
lsls r1, r5, #1
|
||||
adds r1, r1, r0
|
||||
ldrh r4, [r1]
|
||||
adds r0, r6, #0
|
||||
movs r1, #2
|
||||
bl GetTileType
|
||||
lsls r0, r0, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
ldr r2, _0807B518 @ =gUnk_0811C2EC
|
||||
movs r3, #0
|
||||
b _0807B51E
|
||||
.align 2, 0
|
||||
_0807B514: .4byte gUnk_0811C2CC
|
||||
_0807B518: .4byte gUnk_0811C2EC
|
||||
_0807B51C:
|
||||
adds r2, #6
|
||||
_0807B51E:
|
||||
ldrh r1, [r2]
|
||||
cmp r1, #0
|
||||
beq _0807B52A
|
||||
cmp r0, r1
|
||||
bne _0807B51C
|
||||
ldrh r3, [r2, #2]
|
||||
_0807B52A:
|
||||
movs r0, #1
|
||||
lsls r0, r7
|
||||
bics r3, r0
|
||||
ldr r2, _0807B534 @ =gUnk_0811C2EC
|
||||
b _0807B53A
|
||||
.align 2, 0
|
||||
_0807B534: .4byte gUnk_0811C2EC
|
||||
_0807B538:
|
||||
adds r2, #6
|
||||
_0807B53A:
|
||||
ldrh r0, [r2]
|
||||
cmp r0, #0
|
||||
beq _0807B54E
|
||||
ldrh r0, [r2, #2]
|
||||
cmp r3, r0
|
||||
bne _0807B538
|
||||
ldrh r0, [r2, #4]
|
||||
cmp r5, r0
|
||||
bne _0807B538
|
||||
ldrh r4, [r2]
|
||||
_0807B54E:
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
movs r2, #2
|
||||
bl SetTileType
|
||||
_0807B558:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,39 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
adds r7, r2, #0
|
||||
bl sub_0807B464
|
||||
cmp r0, #0
|
||||
beq _0807B5AC
|
||||
adds r0, r5, #0
|
||||
subs r0, #0x40
|
||||
adds r1, r6, #0
|
||||
bl sub_0807B464
|
||||
adds r4, r0, #0
|
||||
adds r0, r5, #1
|
||||
adds r1, r6, #0
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #1
|
||||
orrs r4, r0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
adds r1, r6, #0
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #2
|
||||
orrs r4, r0
|
||||
subs r0, r5, #1
|
||||
adds r1, r6, #0
|
||||
bl sub_0807B464
|
||||
lsls r0, r0, #3
|
||||
orrs r0, r4
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r7
|
||||
ldrh r0, [r0]
|
||||
adds r1, r5, #0
|
||||
adds r2, r6, #0
|
||||
bl SetTileType
|
||||
_0807B5AC:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,40 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r3, r0, #0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r3, r1]
|
||||
ldr r6, _0807B5F8 @ =gUnk_0811C456
|
||||
ldrb r1, [r3, #0x14]
|
||||
movs r2, #6
|
||||
ands r2, r1
|
||||
lsls r1, r2, #1
|
||||
adds r1, r1, r6
|
||||
movs r4, #0
|
||||
ldrsh r1, [r1, r4]
|
||||
adds r0, r0, r1
|
||||
ldr r5, _0807B5FC @ =gRoomControls
|
||||
ldrh r1, [r5, #6]
|
||||
subs r0, r0, r1
|
||||
asrs r0, r0, #4
|
||||
movs r4, #0x3f
|
||||
ands r0, r4
|
||||
movs r7, #0x32
|
||||
ldrsh r1, [r3, r7]
|
||||
adds r2, #1
|
||||
lsls r2, r2, #1
|
||||
adds r2, r2, r6
|
||||
movs r3, #0
|
||||
ldrsh r2, [r2, r3]
|
||||
adds r1, r1, r2
|
||||
ldrh r2, [r5, #8]
|
||||
subs r1, r1, r2
|
||||
asrs r1, r1, #4
|
||||
ands r1, r4
|
||||
lsls r1, r1, #6
|
||||
orrs r0, r1
|
||||
bl sub_0807B600
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_0807B5F8: .4byte gUnk_0811C456
|
||||
_0807B5FC: .4byte gRoomControls
|
||||
.syntax divided
|
||||
@@ -1,173 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
adds r6, r5, #0
|
||||
subs r6, #0x40
|
||||
lsls r0, r5, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
movs r1, #1
|
||||
bl sub_080B1AE0
|
||||
cmp r0, #0x56
|
||||
beq _0807B61A
|
||||
movs r0, #0
|
||||
b _0807B76E
|
||||
_0807B61A:
|
||||
adds r0, r5, #0
|
||||
movs r1, #1
|
||||
bl GetTileType
|
||||
adds r1, r0, #0
|
||||
ldr r0, _0807B634 @ =0x0000026A
|
||||
cmp r1, r0
|
||||
bne _0807B638
|
||||
adds r0, r5, #0
|
||||
bl sub_0807B820
|
||||
b _0807B76C
|
||||
.align 2, 0
|
||||
_0807B634: .4byte 0x0000026A
|
||||
_0807B638:
|
||||
ldr r0, _0807B648 @ =0x00000267
|
||||
cmp r1, r0
|
||||
bne _0807B64C
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
bl sub_0807B820
|
||||
b _0807B76C
|
||||
.align 2, 0
|
||||
_0807B648: .4byte 0x00000267
|
||||
_0807B64C:
|
||||
ldr r0, _0807B65C @ =0x0000027A
|
||||
cmp r1, r0
|
||||
bne _0807B660
|
||||
adds r0, r5, #0
|
||||
bl sub_0807B8A8
|
||||
b _0807B76C
|
||||
.align 2, 0
|
||||
_0807B65C: .4byte 0x0000027A
|
||||
_0807B660:
|
||||
ldr r0, _0807B670 @ =0x00000277
|
||||
cmp r1, r0
|
||||
bne _0807B674
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
bl sub_0807B8A8
|
||||
b _0807B76C
|
||||
.align 2, 0
|
||||
_0807B670: .4byte 0x00000277
|
||||
_0807B674:
|
||||
ldr r0, _0807B684 @ =0x0000028A
|
||||
cmp r1, r0
|
||||
bne _0807B688
|
||||
adds r0, r5, #0
|
||||
bl sub_0807B930
|
||||
b _0807B76C
|
||||
.align 2, 0
|
||||
_0807B684: .4byte 0x0000028A
|
||||
_0807B688:
|
||||
ldr r0, _0807B698 @ =0x00000287
|
||||
cmp r1, r0
|
||||
bne _0807B69C
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
bl sub_0807B930
|
||||
b _0807B76C
|
||||
.align 2, 0
|
||||
_0807B698: .4byte 0x00000287
|
||||
_0807B69C:
|
||||
adds r0, r5, #0
|
||||
movs r1, #2
|
||||
bl GetTileType
|
||||
cmp r0, #0
|
||||
beq _0807B6EC
|
||||
ldr r0, _0807B6E8 @ =0x000002F2
|
||||
adds r1, r5, #0
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
adds r0, r6, #0
|
||||
movs r1, #1
|
||||
bl sub_080B1B44
|
||||
cmp r0, #3
|
||||
bne _0807B6CA
|
||||
movs r0, #0xbd
|
||||
lsls r0, r0, #2
|
||||
adds r1, r6, #0
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
_0807B6CA:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
movs r1, #1
|
||||
bl sub_080B1B44
|
||||
cmp r0, #3
|
||||
bne _0807B6F8
|
||||
movs r0, #0xbd
|
||||
lsls r0, r0, #2
|
||||
adds r1, r5, #0
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
b _0807B6F8
|
||||
.align 2, 0
|
||||
_0807B6E8: .4byte 0x000002F2
|
||||
_0807B6EC:
|
||||
movs r0, #0xbd
|
||||
lsls r0, r0, #2
|
||||
adds r1, r5, #0
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
_0807B6F8:
|
||||
adds r0, r6, #0
|
||||
movs r1, #2
|
||||
bl sub_0807B464
|
||||
cmp r0, #0
|
||||
beq _0807B748
|
||||
movs r0, #0
|
||||
adds r1, r6, #0
|
||||
movs r2, #2
|
||||
bl SetTileType
|
||||
adds r0, r6, #0
|
||||
movs r1, #1
|
||||
bl GetTileType
|
||||
ldr r1, _0807B770 @ =0x000002F2
|
||||
cmp r0, r1
|
||||
bne _0807B728
|
||||
movs r0, #0xbd
|
||||
lsls r0, r0, #2
|
||||
adds r1, r6, #0
|
||||
movs r2, #1
|
||||
bl SetTileType
|
||||
_0807B728:
|
||||
adds r0, r5, #1
|
||||
ldr r4, _0807B774 @ =gUnk_0811C2AC
|
||||
movs r1, #1
|
||||
adds r2, r4, #0
|
||||
bl sub_0807B55C
|
||||
subs r0, r5, #1
|
||||
movs r1, #1
|
||||
adds r2, r4, #0
|
||||
bl sub_0807B55C
|
||||
adds r0, r6, #0
|
||||
movs r1, #1
|
||||
adds r2, r4, #0
|
||||
bl sub_0807B55C
|
||||
_0807B748:
|
||||
adds r0, r6, #1
|
||||
movs r1, #3
|
||||
bl sub_0807B480
|
||||
subs r0, r6, #1
|
||||
movs r1, #1
|
||||
bl sub_0807B480
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x40
|
||||
movs r1, #0
|
||||
bl sub_0807B480
|
||||
adds r0, r6, #0
|
||||
subs r0, #0x40
|
||||
movs r1, #2
|
||||
bl sub_0807B480
|
||||
_0807B76C:
|
||||
movs r0, #1
|
||||
_0807B76E:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0807B770: .4byte 0x000002F2
|
||||
_0807B774: .4byte gUnk_0811C2AC
|
||||
.syntax divided
|
||||
@@ -1,44 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r5, r0, #0
|
||||
adds r6, r1, #0
|
||||
lsls r0, r5, #0x10
|
||||
lsrs r0, r0, #0x10
|
||||
lsls r1, r6, #0x18
|
||||
lsrs r1, r1, #0x18
|
||||
bl sub_080B1AE0
|
||||
cmp r0, #0xd
|
||||
bne _0807B7D0
|
||||
adds r0, r5, #0
|
||||
subs r0, #0x40
|
||||
adds r1, r6, #0
|
||||
bl sub_0807B434
|
||||
adds r4, r0, #0
|
||||
adds r0, r5, #1
|
||||
adds r1, r6, #0
|
||||
bl sub_0807B434
|
||||
lsls r0, r0, #1
|
||||
orrs r4, r0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
adds r1, r6, #0
|
||||
bl sub_0807B434
|
||||
lsls r0, r0, #2
|
||||
orrs r4, r0
|
||||
subs r0, r5, #1
|
||||
adds r1, r6, #0
|
||||
bl sub_0807B434
|
||||
lsls r0, r0, #3
|
||||
orrs r0, r4
|
||||
ldr r1, _0807B7D4 @ =gUnk_0811C466
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
adds r1, r5, #0
|
||||
adds r2, r6, #0
|
||||
bl SetTileType
|
||||
_0807B7D0:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_0807B7D4: .4byte gUnk_0811C466
|
||||
.syntax divided
|
||||
@@ -1,87 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r5, r1, #0
|
||||
movs r1, #0x2e
|
||||
ldrsh r2, [r0, r1]
|
||||
movs r3, #0x32
|
||||
ldrsh r1, [r0, r3]
|
||||
adds r0, r2, #0
|
||||
adds r2, r5, #0
|
||||
bl sub_0807BEEC
|
||||
adds r3, r0, #0
|
||||
cmp r3, #0xff
|
||||
beq _0807BDB4
|
||||
ldr r1, _0807BD68 @ =gRoomControls
|
||||
movs r2, #0
|
||||
movs r0, #2
|
||||
strb r0, [r1, #2]
|
||||
strb r2, [r1, #3]
|
||||
movs r4, #1
|
||||
strh r4, [r1]
|
||||
strb r3, [r1, #5]
|
||||
strb r5, [r1, #0x10]
|
||||
bl GetCurrentRoomInfo
|
||||
adds r2, r0, #0
|
||||
ldr r1, _0807BD6C @ =gArea
|
||||
ldr r3, _0807BD70 @ =0x0000085C
|
||||
adds r0, r1, r3
|
||||
str r2, [r0]
|
||||
ldrb r0, [r1, #0xd]
|
||||
ands r4, r0
|
||||
cmp r4, #0
|
||||
beq _0807BD98
|
||||
cmp r5, #1
|
||||
beq _0807BD7E
|
||||
cmp r5, #1
|
||||
blo _0807BD74
|
||||
cmp r5, #2
|
||||
beq _0807BD86
|
||||
cmp r5, #3
|
||||
beq _0807BD90
|
||||
b _0807BD98
|
||||
.align 2, 0
|
||||
_0807BD68: .4byte gRoomControls
|
||||
_0807BD6C: .4byte gArea
|
||||
_0807BD70: .4byte 0x0000085C
|
||||
_0807BD74:
|
||||
ldrh r0, [r2, #6]
|
||||
ldrh r1, [r2, #2]
|
||||
subs r0, r0, r1
|
||||
strh r0, [r2, #6]
|
||||
b _0807BD98
|
||||
_0807BD7E:
|
||||
ldrh r0, [r2]
|
||||
ldrh r1, [r2, #4]
|
||||
adds r0, r0, r1
|
||||
b _0807BD96
|
||||
_0807BD86:
|
||||
ldrh r0, [r2, #2]
|
||||
ldrh r3, [r2, #6]
|
||||
adds r0, r0, r3
|
||||
strh r0, [r2, #6]
|
||||
b _0807BD98
|
||||
_0807BD90:
|
||||
ldrh r0, [r2, #4]
|
||||
ldrh r1, [r2]
|
||||
subs r0, r0, r1
|
||||
_0807BD96:
|
||||
strh r0, [r2, #4]
|
||||
_0807BD98:
|
||||
ldr r2, _0807BDB0 @ =gPlayerEntity
|
||||
ldrb r1, [r2, #0x11]
|
||||
movs r0, #0x10
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #6
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x11]
|
||||
bl SetInitializationPriority
|
||||
movs r0, #1
|
||||
b _0807BDB6
|
||||
.align 2, 0
|
||||
_0807BDB0: .4byte gPlayerEntity
|
||||
_0807BDB4:
|
||||
movs r0, #0
|
||||
_0807BDB6:
|
||||
pop {r4, r5, pc}
|
||||
.syntax divided
|
||||
+1
-1
@@ -272,7 +272,7 @@ typedef struct {
|
||||
/*0x3e*/ u8 swordDamage : 2;
|
||||
/* */ u8 filler14 : 6;
|
||||
/*0x3f*/ u8 field_0x3f;
|
||||
/*0x40*/ u8 path_memory[64];
|
||||
/*0x40*/ u32 path_memory[16];
|
||||
/*0x80*/ u16 speed_modifier;
|
||||
/*0x82*/ u8 field_0x82[9];
|
||||
/*0x8b*/ u8 controlMode;
|
||||
|
||||
+2
-1
@@ -54,7 +54,8 @@ typedef struct {
|
||||
/*0x086*/ u8 filler86[0x2];
|
||||
/*0x088*/ PlayerRoomStatus saved_status; /**< Player room status. */
|
||||
/*0x0A8*/ Stats stats; /**< Player stats. */
|
||||
/*0x0D0*/ u8 fillerD0[0x46];
|
||||
/*0x0D0*/ u8 fillerD0[34];
|
||||
u8 inventory[36];
|
||||
/*0x116*/ u8 didAllFusions;
|
||||
/*0x117*/ u8 unk117;
|
||||
/*0x118*/ u8 unk118[0x13];
|
||||
|
||||
+446
-41
@@ -92,6 +92,40 @@ extern const u16 gUnk_0811C110[];
|
||||
|
||||
extern const u16 gUnk_08007CAC[];
|
||||
|
||||
u32 sub_0807BEEC(u32 param_1, u32 param_2, u32 param_3);
|
||||
|
||||
extern const u16 gUnk_0811C466[];
|
||||
bool32 sub_0807B434(u32 position, u32 layer);
|
||||
|
||||
extern const u16 gUnk_0811C2AC[];
|
||||
|
||||
void sub_0807B820(u32);
|
||||
void sub_0807B8A8(u32);
|
||||
void sub_0807B930(u32);
|
||||
bool32 sub_0807B464(u32 param_1, u32 param_2);
|
||||
void sub_0807B55C(u32, u32, u16*);
|
||||
void sub_0807B480(u32, u32);
|
||||
|
||||
extern const s16 gUnk_0811C456[];
|
||||
|
||||
bool32 sub_0807B600(u32);
|
||||
|
||||
bool32 sub_0807B464(u32 tilePos, u32 param_2);
|
||||
|
||||
extern const u16 gUnk_0811C2CC[];
|
||||
extern const u16 gUnk_0811C2EC[];
|
||||
|
||||
bool32 sub_0807B464(u32 param_1, u32 param_2);
|
||||
|
||||
extern void CreateRandomWaterTrace(Entity* parent, int range);
|
||||
void sub_08079520(Entity* this);
|
||||
|
||||
bool32 sub_0807ADB8(Entity*);
|
||||
|
||||
extern const u16* sub_0806FC50(u32 param_1, u32 param_2);
|
||||
|
||||
bool32 sub_08079F48(u32 param_1, u32 param_2);
|
||||
|
||||
void sub_08077698(PlayerEntity* this) {
|
||||
ItemBehavior* puVar2;
|
||||
u32 idx;
|
||||
@@ -139,41 +173,46 @@ bool32 sub_08077758(PlayerEntity* this) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
NONMATCH("asm/non_matching/playerUtils/sub_080777A0.inc", bool32 sub_080777A0(void)) {
|
||||
bool32 sub_080777A0(void) {
|
||||
if ((gPlayerState.field_0x92 & 0x80) != 0) {
|
||||
if ((gPlayerState.flags & PL_CLONING) != 0) {
|
||||
gPlayerState.chargeState.action = 1;
|
||||
DeleteClones();
|
||||
return TRUE;
|
||||
} else {
|
||||
if (gArea.portal_mode != 2) {
|
||||
if (gArea.portal_mode == 3) {
|
||||
switch (gArea.portal_mode) {
|
||||
case 2:
|
||||
if (gArea.unk1A == 0) {
|
||||
gPlayerEntity.subAction += 1;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if ((gArea.unk1A == 0) && ((gPlayerState.flags & PL_MINISH) != 0)) {
|
||||
gPlayerEntity.subAction += 1;
|
||||
gPlayerEntity.flags &= ~ENT_COLLIDE;
|
||||
RequestPriorityDuration(&gPlayerEntity, 0xb4);
|
||||
return TRUE;
|
||||
}
|
||||
} else if ((((gUnk_0200AF00.unk_2c == 0xc) && (gPlayerState.field_0x1c == 0)) &&
|
||||
(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)))))) {
|
||||
gPlayerState.queued_action = 0x18;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
if (gArea.unk1A == 0) {
|
||||
gPlayerEntity.subAction += 1;
|
||||
return FALSE;
|
||||
default:
|
||||
if ((((gUnk_0200AF00.unk_2c == 0xc) && (gPlayerState.field_0x1c == 0)) &&
|
||||
(gPlayerState.floor_type != 0x11)) &&
|
||||
((((gPlayerState.field_0x90 & 0xf00) != 0 &&
|
||||
((gPlayerState.flags & (PL_BURNING | PL_ROLLING)) == 0)) &&
|
||||
((gPlayerState.jump_status == 0 && (gPlayerState.field_0x3[1] == 0)))))) {
|
||||
gPlayerState.queued_action = 0x18;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
} else {
|
||||
if ((gPlayerState.flags & PL_USE_PORTAL) == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
NONMATCH("asm/non_matching/playerUtils/sub_08077880.inc", void sub_08077880(u32 param_1, u32 param_2, u32 param_3)) {
|
||||
ItemBehavior* item;
|
||||
@@ -197,9 +236,8 @@ NONMATCH("asm/non_matching/playerUtils/sub_08077880.inc", void sub_08077880(u32
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
NONMATCH("asm/non_matching/playerUtils/sub_080778CC.inc", bool32 sub_080778CC(void)) {
|
||||
s32 iVar1;
|
||||
ItemBehavior* pIVar2;
|
||||
bool32 sub_080778CC(void) {
|
||||
ItemBehavior* item;
|
||||
|
||||
if (!((((gPlayerState.flags & (PL_USE_PORTAL | PL_MINISH | PL_ROLLING)) == 0) &&
|
||||
(((gNewPlayerEntity.unk_79 != 0 || (gPlayerState.heldObject != 0)) ||
|
||||
@@ -207,16 +245,15 @@ NONMATCH("asm/non_matching/playerUtils/sub_080778CC.inc", bool32 sub_080778CC(vo
|
||||
(((sub_080789A8() != 0 || ((gPlayerState.field_0x90 & 0xf03) == 0)))))) {
|
||||
return FALSE;
|
||||
}
|
||||
pIVar2 = sub_0807794C(0x1b);
|
||||
if (pIVar2 == NULL) {
|
||||
return FALSE;
|
||||
} else {
|
||||
pIVar2->behaviorID = 0x1b;
|
||||
pIVar2->field_0x5[4] = 2;
|
||||
item = sub_0807794C(0x1b);
|
||||
if (item != NULL) {
|
||||
item->behaviorID = 0x1b;
|
||||
item->field_0x5[4] = gUnk_0811BE48[0].unk0[0x145];
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
ItemBehavior* sub_0807794C(u32 param_1) {
|
||||
if (((((gPlayerState.queued_action == PLAYER_ROLL) && (param_1 != 0x1b)) ||
|
||||
@@ -1423,7 +1460,37 @@ void sub_08079E58(s32 speed, u32 direction) {
|
||||
sub_0807A5B8(direction);
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_08079E90.inc", bool32 sub_08079E90(u32 a))
|
||||
bool32 sub_08079E90(u32 param_1) {
|
||||
s16 tmp1;
|
||||
s16 tmp2;
|
||||
|
||||
if (gPlayerEntity.direction & DirectionEast) {
|
||||
if (gPlayerEntity.direction & DirectionSouth) {
|
||||
tmp2 = -gPlayerEntity.hitbox->unk2[0];
|
||||
} else {
|
||||
tmp2 = gPlayerEntity.hitbox->unk2[0];
|
||||
}
|
||||
tmp1 = gPlayerEntity.hitbox->unk2[1];
|
||||
} else {
|
||||
tmp2 = gPlayerEntity.hitbox->unk2[2];
|
||||
if (gPlayerEntity.direction != DirectionNorth) {
|
||||
tmp1 = gPlayerEntity.hitbox->unk2[3];
|
||||
} else {
|
||||
tmp1 = -gPlayerEntity.hitbox->unk2[3];
|
||||
}
|
||||
}
|
||||
if (!sub_08079F48(param_1, sub_080B1AF0(&gPlayerEntity, tmp2, tmp1))) {
|
||||
if ((gPlayerEntity.direction & DirectionSouth) != 0) {
|
||||
tmp1 = -tmp1;
|
||||
} else {
|
||||
tmp2 = -tmp2;
|
||||
}
|
||||
if (!sub_08079F48(param_1, sub_080B1AF0(&gPlayerEntity, tmp2, tmp1))) {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool32 sub_08079F48(u32 param_1, u32 param_2) {
|
||||
if (gUnk_0811C118[param_1 >> 2] == param_2) {
|
||||
@@ -1468,7 +1535,38 @@ void sub_0807A050(void) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A094.inc", u32 sub_0807A094(u32 a))
|
||||
u32 sub_0807A094(u32 param_1) {
|
||||
bool32 condition;
|
||||
u32 result = 0x16;
|
||||
if (gPlayerState.hurtBlinkSpeed != 0) {
|
||||
result = 0x1b;
|
||||
if (0x78 < gPlayerState.hurtBlinkSpeed) {
|
||||
result = 0x1a;
|
||||
}
|
||||
} else {
|
||||
if (gSave.stats.charm != 0) {
|
||||
condition = TRUE;
|
||||
if (((param_1 == 0) && (gSave.stats.charmTimer < 0xb4)) && ((gSave.stats.charmTimer & 8) != 0)) {
|
||||
condition = FALSE;
|
||||
}
|
||||
if (condition) {
|
||||
switch (gSave.stats.charm) {
|
||||
case 0x2f:
|
||||
result = 0x18;
|
||||
break;
|
||||
case 0x31:
|
||||
result = 0x17;
|
||||
break;
|
||||
case 0x30:
|
||||
default:
|
||||
result = 0x19;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
void DeleteClones(void) {
|
||||
gPlayerClones[0] = NULL;
|
||||
@@ -1549,7 +1647,33 @@ ASM_FUNC("asm/non_matching/playerUtils/sub_0807A5B8.inc", void sub_0807A5B8(u32
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A750.inc", void sub_0807A750())
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807A894.inc", u32 sub_0807A894(Entity* a))
|
||||
u32 sub_0807A894(Entity* this) {
|
||||
s32 x;
|
||||
s32 y;
|
||||
switch (this->direction) {
|
||||
case DirectionNorth:
|
||||
y = -8;
|
||||
x = 0;
|
||||
break;
|
||||
case DirectionSouth:
|
||||
y = 5; // why??? ._.
|
||||
x = 0;
|
||||
break;
|
||||
case DirectionEast:
|
||||
y = 0;
|
||||
x = 8;
|
||||
break;
|
||||
case DirectionWest:
|
||||
y = 0;
|
||||
x = -8;
|
||||
break;
|
||||
default:
|
||||
y = 0;
|
||||
x = 0;
|
||||
break;
|
||||
}
|
||||
return GetRelativeCollisionTile(this, x, y);
|
||||
}
|
||||
|
||||
void nullsub_505(void) {
|
||||
}
|
||||
@@ -1599,17 +1723,160 @@ void sub_0807AABC(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807AAF8.inc", void sub_0807AAF8(Entity* a, u32 b))
|
||||
void sub_0807AAF8(Entity* this, u32 tilePos) {
|
||||
u32 tmp;
|
||||
u32 index;
|
||||
if (this->z.HALF.HI == 0) {
|
||||
tilePos |= this->collisionLayer << 0x1e;
|
||||
for (index = 0; index < 0xf; index++) {
|
||||
if (gPlayerState.path_memory[index] == tilePos) {
|
||||
break;
|
||||
}
|
||||
tmp = gPlayerState.path_memory[index];
|
||||
gPlayerState.path_memory[index] = tilePos;
|
||||
tilePos = tmp;
|
||||
}
|
||||
gPlayerState.path_memory[index] = tilePos;
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807AB44.inc", void sub_0807AB44())
|
||||
void sub_0807AB44(Entity* this, s32 xOffset, s32 yOffset) {
|
||||
Entity* object;
|
||||
const u16* ptr =
|
||||
sub_0806FC50(GetTileType(COORD_TO_TILE_OFFSET(this, -xOffset, -yOffset), this->collisionLayer), 0xb);
|
||||
if (ptr != NULL) {
|
||||
if (ptr[3] == 0x76) {
|
||||
object = CreateObject(OBJECT_2A, 1, 0);
|
||||
if (object != NULL) {
|
||||
PositionRelative(this, object, xOffset << 0x10, yOffset << 0x10);
|
||||
sub_08004168(object);
|
||||
sub_0807B7D8(ptr[3], COORD_TO_TILE(object), object->collisionLayer);
|
||||
}
|
||||
} else {
|
||||
object = CreateObject(OBJECT_2A, 2, 0);
|
||||
if (object != NULL) {
|
||||
PositionRelative(this, object, xOffset << 0x10, yOffset << 0x10);
|
||||
object->child = (Entity*)ptr;
|
||||
SetTile(0x404f, COORD_TO_TILE(object), object->collisionLayer);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807AC54.inc", u32 sub_0807AC54(Entity* a))
|
||||
bool32 sub_0807AC54(Entity* this) {
|
||||
if (gPlayerState.field_0x11 == 0) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807ACCC.inc", void sub_0807ACCC(Entity* a))
|
||||
switch (gPlayerState.floor_type) {
|
||||
case SURFACE_LADDER:
|
||||
this->x.HALF.HI = (this->x.HALF.HI & 0xfff0) | 8;
|
||||
// fallthrough
|
||||
case SURFACE_CLIMB_WALL:
|
||||
this->action = 0x1d;
|
||||
this->subAction = 0;
|
||||
this->y.HALF.LO = 0;
|
||||
gPlayerState.animation = 0x2cf;
|
||||
return TRUE;
|
||||
case SURFACE_AUTO_LADDER:
|
||||
this->x.HALF.HI = (this->x.HALF.HI & 0xfff0) | 8;
|
||||
// fallthrough
|
||||
case SURFACE_2C:
|
||||
this->action = 0x1d;
|
||||
this->subAction = 1;
|
||||
this->y.HALF.LO = 0;
|
||||
return TRUE;
|
||||
default:
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807ADB8.inc", void sub_0807ADB8())
|
||||
void sub_0807ACCC(Entity* this) {
|
||||
s32 speed;
|
||||
this->spritePriority.b1 = 0;
|
||||
this->knockbackDuration = 0;
|
||||
if (GetInventoryValue(ITEM_SWIM_BUTTERFLY) == 1) {
|
||||
speed = 0x100;
|
||||
} else {
|
||||
speed = 0xc0;
|
||||
}
|
||||
if (speed > *(s16*)&this->speed) {
|
||||
this->speed = speed;
|
||||
this->direction = gPlayerState.field_0xd;
|
||||
if ((gPlayerState.swim_state & 0xf) != 1) {
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
this->speed -= 4;
|
||||
}
|
||||
if (gPlayerState.field_0x82[7] == 0) {
|
||||
if (!sub_0807ADB8(this)) {
|
||||
sub_0807AE20(this);
|
||||
}
|
||||
} else {
|
||||
gPlayerState.field_0x82[7]--;
|
||||
if (gPlayerState.field_0x82[7] != 0) {
|
||||
sub_0807ADB8(this);
|
||||
} else {
|
||||
gPlayerState.swim_state &= 0x7f;
|
||||
this->spritePriority.b0 = 4;
|
||||
SoundReq(SFX_163);
|
||||
}
|
||||
}
|
||||
if ((gPlayerState.swim_state & 0x80) != 0) {
|
||||
this->collisionFlags |= 4;
|
||||
this->spritePriority.b0 = 6;
|
||||
} else {
|
||||
this->collisionFlags &= 0xfb;
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807AE20.inc", void sub_0807AE20(Entity* e))
|
||||
bool32 sub_0807ADB8(Entity* this) {
|
||||
u8 tmp;
|
||||
if ((gPlayerState.field_0x92 & 0x10) != 0) {
|
||||
gPlayerState.swim_state ^= 0x80;
|
||||
tmp = (gPlayerState.swim_state & 0x80);
|
||||
if (tmp != 0) {
|
||||
gPlayerState.field_0x82[7] = 0x78;
|
||||
} else {
|
||||
this->spritePriority.b0 = 4;
|
||||
gPlayerState.field_0x82[7] = tmp;
|
||||
}
|
||||
SoundReq(SFX_163);
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0807AE20(Entity* this) {
|
||||
if ((((this->action != 0x17) || (gPlayerState.field_0xa == 0)) && (gRoomControls.reload_flags == 0)) &&
|
||||
((gPlayerState.field_0x92 & 8) != 0)) {
|
||||
if (GetInventoryValue(ITEM_SWIM_BUTTERFLY) == 1) {
|
||||
this->speed = 0x1c0;
|
||||
} else {
|
||||
this->speed = 0x180;
|
||||
}
|
||||
sub_08079520(this);
|
||||
SoundReq(SFX_162);
|
||||
}
|
||||
if (sub_080793E4(0x10)) {
|
||||
this->iframes = 0x14;
|
||||
this->knockbackDuration = 4;
|
||||
this->knockbackDirection = this->animationState << 2 ^ 0x10;
|
||||
ModHealth(-2);
|
||||
SoundReq(SFX_PLY_VO6);
|
||||
}
|
||||
if ((this->direction & 0x80) != 0) {
|
||||
if ((gRoomTransition.frameCount & 0xf) == 0) {
|
||||
CreateRandomWaterTrace(this, 4);
|
||||
}
|
||||
} else {
|
||||
if ((gRoomTransition.frameCount & 7) == 0) {
|
||||
CreateWaterTrace(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void UpdatePlayerSkills(void) {
|
||||
gPlayerState.skills = SKILL_NONE;
|
||||
@@ -1860,15 +2127,121 @@ bool32 sub_0807B464(u32 param_1, u32 param_2) {
|
||||
return sub_080B1AE0(param_1, param_2) == 0x56;
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807B480.inc", void sub_0807B480())
|
||||
void sub_0807B480(u32 tilePos, u32 param_2) {
|
||||
u32 tmp1;
|
||||
u16 tmp2;
|
||||
u16 tmp3;
|
||||
u16 tileType;
|
||||
const u16* ptr;
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807B55C.inc", void sub_0807B55C())
|
||||
if (sub_0807B464(tilePos, 2)) {
|
||||
tmp1 = sub_0807B464(tilePos - 0x40, 2);
|
||||
tmp1 |= sub_0807B464(tilePos + 1, 2) << 1;
|
||||
tmp1 |= sub_0807B464(tilePos + 0x40, 2) << 2;
|
||||
tmp1 |= sub_0807B464(tilePos - 1, 2) << 3;
|
||||
tmp1 |= sub_0807B464(tilePos + 0x41, 1) << 1;
|
||||
tmp1 |= sub_0807B464(tilePos + 0x3f, 1) << 3;
|
||||
if (GetTileType(tilePos + 0x40, 2) != 0) {
|
||||
tmp1 |= sub_0807B464(tilePos + 0x80, 1) << 2;
|
||||
}
|
||||
tmp2 = gUnk_0811C2CC[tmp1];
|
||||
tileType = GetTileType(tilePos, 2);
|
||||
ptr = gUnk_0811C2EC;
|
||||
tmp3 = 0;
|
||||
for (; *ptr != 0; ptr = ptr + 3) {
|
||||
if (tileType == ptr[0]) {
|
||||
tmp3 = ptr[1];
|
||||
break;
|
||||
}
|
||||
}
|
||||
tmp3 = tmp3 & ~(1 << (param_2));
|
||||
for (ptr = gUnk_0811C2EC; *ptr != 0; ptr = ptr + 3) {
|
||||
if ((tmp3 == ptr[1]) && (tmp1 == ptr[2])) {
|
||||
tmp2 = ptr[0];
|
||||
break;
|
||||
}
|
||||
}
|
||||
SetTileType(tmp2, tilePos, 2);
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807B5B0.inc", void sub_0807B5B0())
|
||||
void sub_0807B55C(u32 param_1, u32 param_2, u16* param_3) {
|
||||
u32 tmp;
|
||||
if (sub_0807B464(param_1, param_2)) {
|
||||
tmp = sub_0807B464(param_1 - 0x40, param_2);
|
||||
tmp |= sub_0807B464(param_1 + 1, param_2) << 1;
|
||||
tmp |= sub_0807B464(param_1 + 0x40, param_2) << 2;
|
||||
tmp |= sub_0807B464(param_1 - 1, param_2) << 3;
|
||||
SetTileType(param_3[tmp], param_1, param_2);
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807B600.inc", void sub_0807B600())
|
||||
bool32 sub_0807B5B0(Entity* this) {
|
||||
return sub_0807B600(COORD_TO_TILE_OFFSET(this, -gUnk_0811C456[(this->animationState & 6)],
|
||||
-gUnk_0811C456[(this->animationState & 6) + 1]));
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807B778.inc", void sub_0807B778(u32 a, u32 b))
|
||||
u32 sub_0807B600(u32 param_1) {
|
||||
u32 tileType;
|
||||
u32 tile;
|
||||
|
||||
tile = param_1 - 0x40;
|
||||
if (sub_080B1AE0(param_1, 1) != 0x56) {
|
||||
return FALSE;
|
||||
} else {
|
||||
tileType = GetTileType(param_1, 1);
|
||||
if (tileType == 0x26a) {
|
||||
sub_0807B820(param_1);
|
||||
} else if (tileType == 0x267) {
|
||||
sub_0807B820(param_1 + 0x40);
|
||||
} else if (tileType == 0x27a) {
|
||||
sub_0807B8A8(param_1);
|
||||
} else if (tileType == 0x277) {
|
||||
sub_0807B8A8(param_1 + 0x40);
|
||||
} else if (tileType == 0x28a) {
|
||||
sub_0807B930(param_1);
|
||||
} else if (tileType == 0x287) {
|
||||
sub_0807B930(param_1 + 0x40);
|
||||
} else {
|
||||
if (GetTileType(param_1, 2) != 0) {
|
||||
SetTileType(0x2f2, param_1, 1);
|
||||
if (sub_080B1B44(tile, 1) == 3) {
|
||||
SetTileType(0x2f4, tile, 1);
|
||||
}
|
||||
if (sub_080B1B44(param_1 + 0x40, 1) == 3) {
|
||||
SetTileType(0x2f4, param_1, 1);
|
||||
}
|
||||
} else {
|
||||
SetTileType(0x2f4, param_1, 1);
|
||||
}
|
||||
if (sub_0807B464(tile, 2)) {
|
||||
SetTileType(0, tile, 2);
|
||||
if (GetTileType(tile, 1) == 0x2f2) {
|
||||
SetTileType(0x2f4, tile, 1);
|
||||
}
|
||||
sub_0807B55C(param_1 + 1, 1, (u16*)&gUnk_0811C2AC);
|
||||
sub_0807B55C(param_1 - 1, 1, (u16*)&gUnk_0811C2AC);
|
||||
sub_0807B55C(tile, 1, (u16*)&gUnk_0811C2AC);
|
||||
}
|
||||
sub_0807B480(tile + 1, 3);
|
||||
sub_0807B480(tile - 1, 1);
|
||||
sub_0807B480(tile + 0x40, 0);
|
||||
sub_0807B480(tile - 0x40, 2);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0807B778(u32 position, u32 layer) {
|
||||
u32 tmp;
|
||||
if (sub_080B1AE0(position, layer) == 0xd) {
|
||||
tmp = sub_0807B434(position - 0x40, layer);
|
||||
tmp |= sub_0807B434(position + 1, layer) << 1;
|
||||
tmp |= sub_0807B434(position + 0x40, layer) << 2;
|
||||
tmp |= sub_0807B434(position - 1, layer) << 3;
|
||||
SetTileType(gUnk_0811C466[tmp], position, layer);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_0807B7D8(u32 param_1, u32 param_2, u32 param_3) {
|
||||
if (param_1 == 53) {
|
||||
@@ -2048,7 +2421,39 @@ void sub_0807BC84(void) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/playerUtils/sub_0807BD14.inc", bool32 sub_0807BD14(Entity* a, u32 b))
|
||||
bool32 sub_0807BD14(Entity* this, u32 scrollDirection) {
|
||||
u32 room = sub_0807BEEC(this->x.HALF.HI, this->y.HALF.HI, scrollDirection);
|
||||
if (room != 0xff) {
|
||||
gRoomControls.unk3 = 2;
|
||||
gRoomControls.unk4 = 0;
|
||||
gRoomControls.reload_flags = 1;
|
||||
gRoomControls.room = room;
|
||||
gRoomControls.scroll_direction = scrollDirection;
|
||||
gArea.pCurrentRoomInfo = GetCurrentRoomInfo();
|
||||
if (gArea.unk_0c_0 != 0) {
|
||||
switch (scrollDirection) {
|
||||
case 0:
|
||||
gArea.pCurrentRoomInfo->map_y -= gArea.pCurrentRoomInfo->pixel_height;
|
||||
break;
|
||||
case 1:
|
||||
gArea.pCurrentRoomInfo->map_x = gArea.pCurrentRoomInfo->map_x + gArea.pCurrentRoomInfo->pixel_width;
|
||||
break;
|
||||
case 2:
|
||||
gArea.pCurrentRoomInfo->map_y =
|
||||
gArea.pCurrentRoomInfo->map_y + gArea.pCurrentRoomInfo->pixel_height;
|
||||
break;
|
||||
case 3:
|
||||
gArea.pCurrentRoomInfo->map_x = gArea.pCurrentRoomInfo->map_x - gArea.pCurrentRoomInfo->pixel_width;
|
||||
break;
|
||||
}
|
||||
}
|
||||
gPlayerEntity.updatePriority = 6;
|
||||
SetInitializationPriority();
|
||||
return TRUE;
|
||||
} else {
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
u32 sub_0807BDB8(Entity* this, u32 param_2) {
|
||||
u32 result = 0xff;
|
||||
|
||||
+6
-6
@@ -92,12 +92,12 @@ static const SaveFile gDemoSave = {
|
||||
.itemButtons = { ITEM_SHIELD, ITEM_SMITH_SWORD },
|
||||
.rupees = 5,
|
||||
},
|
||||
.fillerD0 = {
|
||||
[34] = 5,
|
||||
[37] = 4,
|
||||
[47] = 6,
|
||||
[51] = 0x40,
|
||||
[56] = 0x40,
|
||||
.inventory = {
|
||||
[0] = 5,
|
||||
[3] = 4,
|
||||
[13] = 6,
|
||||
[17] = 0x40,
|
||||
[22] = 0x40,
|
||||
},
|
||||
.flags = {
|
||||
[FLAG_BYTE(FLAG_BANK_G, START)] = FLAG_X(START) | FLAG_X(EZERO_1ST) | FLAG_X(TABIDACHI),
|
||||
|
||||
Reference in New Issue
Block a user