mirror of
https://github.com/zeldaret/tmc
synced 2026-07-09 06:53:27 -04:00
Merge pull request #400 from hatal175/playerasmfunc
This commit is contained in:
@@ -1,172 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
mov r7, r8
|
||||
push {r7}
|
||||
adds r5, r0, #0
|
||||
adds r0, #0x81
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08071654
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x80
|
||||
ldr r0, [r1]
|
||||
adds r0, #0x80
|
||||
lsls r0, r0, #0x14
|
||||
lsrs r7, r0, #0x17
|
||||
adds r4, r1, #0
|
||||
b _0807166A
|
||||
_08071654:
|
||||
adds r4, r5, #0
|
||||
adds r4, #0x80
|
||||
ldrb r1, [r4]
|
||||
lsrs r1, r1, #6
|
||||
movs r0, #3
|
||||
eors r1, r0
|
||||
adds r1, #1
|
||||
movs r0, #0x10
|
||||
bl __divsi3
|
||||
asrs r7, r0, #1
|
||||
_0807166A:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x84
|
||||
ldr r3, [r0]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #1
|
||||
adds r2, r0, #0
|
||||
cmp r3, r1
|
||||
bls _08071684
|
||||
adds r0, r3, #0
|
||||
adds r0, #0x80
|
||||
lsls r0, r0, #0x14
|
||||
lsrs r3, r0, #0x17
|
||||
b _08071694
|
||||
_08071684:
|
||||
cmp r3, r1
|
||||
bne _0807168C
|
||||
movs r3, #0x10
|
||||
b _08071694
|
||||
_0807168C:
|
||||
ldr r1, _080716B0 @ =gUnk_0811BABC
|
||||
lsrs r0, r3, #5
|
||||
adds r0, r0, r1
|
||||
ldrb r3, [r0]
|
||||
_08071694:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #9
|
||||
mov r8, r0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #2
|
||||
beq _080716EA
|
||||
cmp r0, #2
|
||||
bgt _080716B4
|
||||
cmp r0, #1
|
||||
beq _080716BA
|
||||
b _08071754
|
||||
.align 2, 0
|
||||
_080716B0: .4byte gUnk_0811BABC
|
||||
_080716B4:
|
||||
cmp r0, #3
|
||||
beq _0807171E
|
||||
b _08071754
|
||||
_080716BA:
|
||||
movs r1, #0x29
|
||||
adds r1, r1, r5
|
||||
mov ip, r1
|
||||
ldrb r1, [r1]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
mov r1, ip
|
||||
strb r0, [r1]
|
||||
ldr r0, [r4]
|
||||
cmp r0, #0x80
|
||||
bls _080716D6
|
||||
subs r0, r0, r7
|
||||
str r0, [r4]
|
||||
_080716D6:
|
||||
lsls r1, r3, #1
|
||||
ldr r0, [r2]
|
||||
adds r0, r0, r1
|
||||
str r0, [r2]
|
||||
mov r0, r8
|
||||
lsls r1, r0, #1
|
||||
ldr r0, [r5, #0x30]
|
||||
adds r0, r0, r1
|
||||
str r0, [r5, #0x30]
|
||||
b _08071754
|
||||
_080716EA:
|
||||
ldr r0, [r4]
|
||||
adds r0, r0, r7
|
||||
str r0, [r4]
|
||||
ldr r1, [r2]
|
||||
movs r6, #0x80
|
||||
lsls r6, r6, #1
|
||||
cmp r1, r6
|
||||
bls _08071710
|
||||
ldr r0, _0807170C @ =0x0000017F
|
||||
cmp r1, r0
|
||||
bhi _08071702
|
||||
lsrs r3, r3, #1
|
||||
_08071702:
|
||||
subs r0, r1, r3
|
||||
cmp r0, #0xff
|
||||
bhi _08071716
|
||||
str r6, [r2]
|
||||
b _08071718
|
||||
.align 2, 0
|
||||
_0807170C: .4byte 0x0000017F
|
||||
_08071710:
|
||||
cmp r1, #0x80
|
||||
bls _08071718
|
||||
subs r0, r1, r3
|
||||
_08071716:
|
||||
str r0, [r2]
|
||||
_08071718:
|
||||
ldr r0, [r5, #0x34]
|
||||
mov r1, r8
|
||||
b _08071750
|
||||
_0807171E:
|
||||
ldr r0, [r4]
|
||||
ldr r6, _08071740 @ =0x0000033F
|
||||
cmp r0, r6
|
||||
bhi _0807172A
|
||||
adds r0, r0, r7
|
||||
str r0, [r4]
|
||||
_0807172A:
|
||||
ldr r1, [r2]
|
||||
cmp r1, r6
|
||||
bls _08071744
|
||||
movs r0, #8
|
||||
strb r0, [r5, #0xe]
|
||||
movs r0, #0x1e
|
||||
strb r0, [r5, #0xf]
|
||||
movs r0, #6
|
||||
strb r0, [r5, #0xd]
|
||||
b _0807174A
|
||||
.align 2, 0
|
||||
_08071740: .4byte 0x0000033F
|
||||
_08071744:
|
||||
lsls r0, r3, #1
|
||||
adds r0, r1, r0
|
||||
str r0, [r2]
|
||||
_0807174A:
|
||||
mov r0, r8
|
||||
lsls r1, r0, #1
|
||||
ldr r0, [r5, #0x34]
|
||||
_08071750:
|
||||
subs r0, r0, r1
|
||||
str r0, [r5, #0x34]
|
||||
_08071754:
|
||||
ldr r1, [r4]
|
||||
ldr r2, [r2]
|
||||
adds r0, r5, #0
|
||||
movs r3, #0
|
||||
bl sub_0805EC9C
|
||||
adds r0, r5, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
pop {r3}
|
||||
mov r8, r3
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.syntax divided
|
||||
@@ -1,146 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
bl sub_080741C4
|
||||
cmp r0, #0
|
||||
beq _08074690
|
||||
ldr r0, _0807468C @ =gPlayerState
|
||||
movs r1, #0
|
||||
strb r1, [r0, #0x11]
|
||||
b _080746CE
|
||||
.align 2, 0
|
||||
_0807468C: .4byte gPlayerState
|
||||
_08074690:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x45
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _0807476C
|
||||
adds r0, r4, #0
|
||||
bl sub_08079C30
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
bne _080746B0
|
||||
ldr r0, _080746AC @ =gPlayerState
|
||||
strb r1, [r0, #0x11]
|
||||
b _080746CE
|
||||
.align 2, 0
|
||||
_080746AC: .4byte gPlayerState
|
||||
_080746B0:
|
||||
ldr r3, _080746D4 @ =gPlayerState
|
||||
ldr r1, [r3, #0x30]
|
||||
movs r0, #0x80
|
||||
ands r1, r0
|
||||
cmp r1, #0
|
||||
bne _0807476C
|
||||
ldrb r2, [r3, #0x1e]
|
||||
cmp r2, #0
|
||||
beq _080746D8
|
||||
movs r0, #0x40
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
beq _080746DC
|
||||
strb r1, [r3, #0x11]
|
||||
adds r0, r3, #0
|
||||
_080746CE:
|
||||
adds r0, #0x37
|
||||
strb r1, [r0]
|
||||
b _08074792
|
||||
.align 2, 0
|
||||
_080746D4: .4byte gPlayerState
|
||||
_080746D8:
|
||||
bl sub_08077B20
|
||||
_080746DC:
|
||||
ldr r1, _08074700 @ =gPlayerState
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x37
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #1
|
||||
bne _08074704
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x70
|
||||
movs r2, #0
|
||||
movs r3, #0
|
||||
bl CreateObjectWithParent
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x52
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
b _08074714
|
||||
.align 2, 0
|
||||
_08074700: .4byte gPlayerState
|
||||
_08074704:
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r0, #0xf0
|
||||
lsls r0, r0, #4
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08074720
|
||||
_08074714:
|
||||
ldr r0, _0807471C @ =0x00000161
|
||||
bl SoundReq
|
||||
b _08074732
|
||||
.align 2, 0
|
||||
_0807471C: .4byte 0x00000161
|
||||
_08074720:
|
||||
ldr r0, _08074760 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #0xf
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08074732
|
||||
ldr r0, _08074764 @ =0x00000161
|
||||
bl SoundReq
|
||||
_08074732:
|
||||
ldr r2, _08074768 @ =gPlayerState
|
||||
adds r1, r2, #0
|
||||
adds r1, #0x80
|
||||
ldrh r0, [r1]
|
||||
subs r0, #0xf0
|
||||
strh r0, [r1]
|
||||
adds r1, #0x28
|
||||
movs r0, #0x1b
|
||||
strb r0, [r1]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x37
|
||||
ldrb r0, [r0]
|
||||
lsls r3, r0, #0x18
|
||||
lsrs r0, r3, #0x18
|
||||
cmp r0, #0xef
|
||||
bhi _0807476C
|
||||
subs r1, #0x69
|
||||
lsrs r0, r3, #0x1d
|
||||
adds r0, #4
|
||||
ldrb r2, [r1]
|
||||
adds r0, r0, r2
|
||||
strb r0, [r1]
|
||||
b _08074792
|
||||
.align 2, 0
|
||||
_08074760: .4byte gRoomTransition
|
||||
_08074764: .4byte 0x00000161
|
||||
_08074768: .4byte gPlayerState
|
||||
_0807476C:
|
||||
ldr r2, _08074794 @ =gPlayerState
|
||||
ldr r0, [r2, #0x30]
|
||||
ldr r1, _08074798 @ =0xFFFBFFFF
|
||||
ands r0, r1
|
||||
str r0, [r2, #0x30]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x52
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x3d
|
||||
movs r0, #0x20
|
||||
strb r0, [r1]
|
||||
subs r0, #0x24
|
||||
bl ModHealth
|
||||
bl RespawnPlayer
|
||||
_08074792:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08074794: .4byte gPlayerState
|
||||
_08074798: .4byte 0xFFFBFFFF
|
||||
.syntax divided
|
||||
@@ -1,222 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
movs r2, #0xc
|
||||
rsbs r2, r2, #0
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_0806F854
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0
|
||||
beq _08072D7A
|
||||
adds r0, r4, #0
|
||||
bl LinearMoveUpdate
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
b _08072E80
|
||||
_08072D7A:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806F730
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
ldrb r1, [r1]
|
||||
bl GetTileType
|
||||
adds r2, r0, #0
|
||||
ldrb r5, [r4, #0xf]
|
||||
cmp r5, #1
|
||||
beq _08072DD0
|
||||
cmp r5, #1
|
||||
bgt _08072D9C
|
||||
cmp r5, #0
|
||||
beq _08072DA6
|
||||
b _08072E6C
|
||||
_08072D9C:
|
||||
cmp r5, #2
|
||||
beq _08072DFA
|
||||
cmp r5, #3
|
||||
beq _08072E30
|
||||
b _08072E6C
|
||||
_08072DA6:
|
||||
ldr r1, _08072DC8 @ =sTileTable
|
||||
ldr r0, _08072DCC @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r2, #0
|
||||
bl sub_08007DD6
|
||||
cmp r0, #0
|
||||
beq _08072E6C
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
strb r0, [r4, #0xf]
|
||||
b _08072E6C
|
||||
.align 2, 0
|
||||
_08072DC8: .4byte sTileTable
|
||||
_08072DCC: .4byte gPlayerEntity
|
||||
_08072DD0:
|
||||
ldr r1, _08072DEC @ =sTileTable
|
||||
ldr r0, _08072DF0 @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r2, #0
|
||||
bl sub_08007DD6
|
||||
cmp r0, #0
|
||||
beq _08072DF4
|
||||
strb r5, [r4, #0xe]
|
||||
b _08072E6C
|
||||
.align 2, 0
|
||||
_08072DEC: .4byte sTileTable
|
||||
_08072DF0: .4byte gPlayerEntity
|
||||
_08072DF4:
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xf]
|
||||
b _08072E6C
|
||||
_08072DFA:
|
||||
ldrb r0, [r4, #0x14]
|
||||
movs r5, #4
|
||||
eors r0, r5
|
||||
strb r0, [r4, #0x14]
|
||||
ldr r1, _08072E28 @ =sTileTable
|
||||
ldr r0, _08072E2C @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r2, #0
|
||||
bl sub_08007DD6
|
||||
cmp r0, #0
|
||||
beq _08072E22
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xf]
|
||||
_08072E22:
|
||||
ldrb r0, [r4, #0x14]
|
||||
eors r0, r5
|
||||
b _08072E6A
|
||||
.align 2, 0
|
||||
_08072E28: .4byte sTileTable
|
||||
_08072E2C: .4byte gPlayerEntity
|
||||
_08072E30:
|
||||
ldrb r0, [r4, #0x14]
|
||||
movs r1, #4
|
||||
eors r0, r1
|
||||
strb r0, [r4, #0x14]
|
||||
ldr r1, _08072E58 @ =sTileTable
|
||||
ldr r0, _08072E5C @ =gPlayerEntity
|
||||
ldrb r0, [r0, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r2, #0
|
||||
bl sub_08007DD6
|
||||
cmp r0, #0
|
||||
beq _08072E60
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
b _08072E64
|
||||
.align 2, 0
|
||||
_08072E58: .4byte sTileTable
|
||||
_08072E5C: .4byte gPlayerEntity
|
||||
_08072E60:
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xf]
|
||||
_08072E64:
|
||||
ldrb r0, [r4, #0x14]
|
||||
movs r1, #4
|
||||
eors r0, r1
|
||||
_08072E6A:
|
||||
strb r0, [r4, #0x14]
|
||||
_08072E6C:
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0
|
||||
beq _08072E7A
|
||||
adds r0, r4, #0
|
||||
bl LinearMoveUpdate
|
||||
b _08072E7E
|
||||
_08072E7A:
|
||||
bl UpdatePlayerMovement
|
||||
_08072E7E:
|
||||
movs r0, #0
|
||||
_08072E80:
|
||||
strb r0, [r4, #0xe]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
adds r0, r4, #0
|
||||
bl GravityUpdate
|
||||
cmp r0, #0
|
||||
bne _08072F10
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x38
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #1
|
||||
bne _08072EAA
|
||||
adds r0, r4, #0
|
||||
bl ResetCollisionLayer
|
||||
b _08072EB0
|
||||
_08072EAA:
|
||||
adds r0, r4, #0
|
||||
bl sub_08004542
|
||||
_08072EB0:
|
||||
adds r0, r4, #0
|
||||
movs r1, #7
|
||||
bl sub_08008790
|
||||
ldr r5, _08072EDC @ =gPlayerState
|
||||
ldrb r0, [r5, #0x14]
|
||||
cmp r0, #0
|
||||
beq _08072EE0
|
||||
bl sub_08008B22
|
||||
cmp r0, #0
|
||||
beq _08072F10
|
||||
movs r0, #7
|
||||
strb r0, [r5, #0x11]
|
||||
ldr r0, [r5, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08072F10
|
||||
bl SetPlayerActionNormal
|
||||
b _08072F10
|
||||
.align 2, 0
|
||||
_08072EDC: .4byte gPlayerState
|
||||
_08072EE0:
|
||||
ldr r0, [r5, #0x30]
|
||||
movs r1, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08072EF4
|
||||
ldr r0, _08072EF0 @ =0x00000424
|
||||
b _08072EF8
|
||||
.align 2, 0
|
||||
_08072EF0: .4byte 0x00000424
|
||||
_08072EF4:
|
||||
movs r0, #0x82
|
||||
lsls r0, r0, #4
|
||||
_08072EF8:
|
||||
strh r0, [r5, #8]
|
||||
movs r1, #0
|
||||
movs r0, #6
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xd]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x42
|
||||
strb r1, [r0]
|
||||
movs r0, #0x7d
|
||||
bl SoundReq
|
||||
_08072F10:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
.syntax divided
|
||||
@@ -1,280 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r2, _080735DC @ =gPlayerState
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x92
|
||||
ldrh r1, [r0]
|
||||
movs r5, #0x80
|
||||
adds r0, r5, #0
|
||||
ands r0, r1
|
||||
adds r6, r2, #0
|
||||
cmp r0, #0
|
||||
bne _080735C0
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x3d
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bgt _080735C0
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x3c
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080735C0
|
||||
ldr r0, [r6, #0x30]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #0x11
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080735E0
|
||||
_080735C0:
|
||||
ldrb r0, [r6, #2]
|
||||
movs r1, #0x40
|
||||
orrs r1, r0
|
||||
strb r1, [r6, #2]
|
||||
bl sub_0807921C
|
||||
adds r0, r4, #0
|
||||
bl DoJump
|
||||
movs r0, #0xe6
|
||||
lsls r0, r0, #3
|
||||
strh r0, [r6, #8]
|
||||
b _08073794
|
||||
.align 2, 0
|
||||
_080735DC: .4byte gPlayerState
|
||||
_080735E0:
|
||||
ldr r0, _0807360C @ =gUnk_0200AF00
|
||||
adds r0, #0x2f
|
||||
movs r1, #1
|
||||
strb r1, [r0]
|
||||
movs r0, #0
|
||||
bl sub_0807A2F8
|
||||
cmp r0, #0
|
||||
beq _08073610
|
||||
ldrb r0, [r4, #0xd]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
ldrb r1, [r4, #0x14]
|
||||
movs r0, #6
|
||||
ands r0, r1
|
||||
lsls r0, r0, #2
|
||||
strb r0, [r4, #0x15]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
b _08073794
|
||||
.align 2, 0
|
||||
_0807360C: .4byte gUnk_0200AF00
|
||||
_08073610:
|
||||
ldr r0, _08073620 @ =gArea
|
||||
ldrb r0, [r0, #1]
|
||||
cmp r0, #0x10
|
||||
bne _08073624
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r4, #0x24]
|
||||
b _08073626
|
||||
.align 2, 0
|
||||
_08073620: .4byte gArea
|
||||
_08073624:
|
||||
strh r5, [r4, #0x24]
|
||||
_08073626:
|
||||
ldr r3, _08073650 @ =gPlayerState
|
||||
ldrb r1, [r3, #0xd]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x80
|
||||
cmp r0, #0
|
||||
bne _0807365A
|
||||
ldrb r0, [r4, #0x15]
|
||||
cmp r0, r1
|
||||
beq _0807365A
|
||||
ldrb r1, [r3, #0xd]
|
||||
subs r0, r0, r1
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
cmp r0, #0xf
|
||||
bgt _08073654
|
||||
ldr r0, [r2]
|
||||
subs r0, #0x20
|
||||
b _08073658
|
||||
.align 2, 0
|
||||
_08073650: .4byte gPlayerState
|
||||
_08073654:
|
||||
ldr r0, [r2]
|
||||
adds r0, #0x20
|
||||
_08073658:
|
||||
str r0, [r2]
|
||||
_0807365A:
|
||||
ldr r0, [r2]
|
||||
lsrs r0, r0, #8
|
||||
movs r1, #0x1f
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x15]
|
||||
bl UpdatePlayerMovement
|
||||
ldrb r2, [r4, #0x14]
|
||||
lsls r3, r2, #2
|
||||
ldrb r1, [r4, #0x15]
|
||||
cmp r2, #0
|
||||
bne _0807367C
|
||||
adds r3, #8
|
||||
movs r0, #0x1f
|
||||
ands r3, r0
|
||||
adds r1, #8
|
||||
ands r1, r0
|
||||
_0807367C:
|
||||
subs r0, r3, #7
|
||||
cmp r0, r1
|
||||
bls _08073686
|
||||
subs r3, r2, #2
|
||||
b _0807368E
|
||||
_08073686:
|
||||
adds r0, r3, #7
|
||||
cmp r0, r1
|
||||
bhs _08073694
|
||||
adds r3, r2, #2
|
||||
_0807368E:
|
||||
movs r0, #7
|
||||
ands r3, r0
|
||||
b _08073696
|
||||
_08073694:
|
||||
adds r3, r2, #0
|
||||
_08073696:
|
||||
movs r0, #0x87
|
||||
adds r0, r0, r4
|
||||
mov ip, r0
|
||||
ldrb r1, [r4, #0x14]
|
||||
cmp r3, r1
|
||||
beq _080736A8
|
||||
movs r0, #0x14
|
||||
mov r2, ip
|
||||
strb r0, [r2]
|
||||
_080736A8:
|
||||
strb r3, [r4, #0x14]
|
||||
movs r5, #0
|
||||
ldr r1, _080736E4 @ =gPlayerState
|
||||
ldrb r2, [r1, #0xd]
|
||||
lsrs r3, r2, #2
|
||||
mov r6, ip
|
||||
ldrb r0, [r6]
|
||||
adds r6, r1, #0
|
||||
cmp r0, #0
|
||||
beq _080736CA
|
||||
movs r0, #0x80
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _08073736
|
||||
ldrb r0, [r4, #0x14]
|
||||
cmp r0, r3
|
||||
beq _08073736
|
||||
_080736CA:
|
||||
movs r0, #0x80
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _080736FA
|
||||
ldrb r2, [r4, #0x14]
|
||||
cmp r2, r3
|
||||
beq _080736FA
|
||||
movs r0, #4
|
||||
eors r0, r3
|
||||
cmp r2, r0
|
||||
bne _080736E8
|
||||
movs r5, #2
|
||||
b _080736FA
|
||||
.align 2, 0
|
||||
_080736E4: .4byte gPlayerState
|
||||
_080736E8:
|
||||
movs r0, #6
|
||||
ands r0, r3
|
||||
adds r0, #2
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
movs r5, #3
|
||||
cmp r2, r0
|
||||
bne _080736FA
|
||||
movs r5, #1
|
||||
_080736FA:
|
||||
ldr r1, _0807371C @ =gUnk_0811BC28
|
||||
lsls r0, r5, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r6, #8]
|
||||
cmp r0, r1
|
||||
bne _0807372C
|
||||
ldr r0, _08073720 @ =gArea
|
||||
ldrb r0, [r0, #1]
|
||||
cmp r0, #0x10
|
||||
bne _08073724
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl sub_080042BA
|
||||
b _0807372E
|
||||
.align 2, 0
|
||||
_0807371C: .4byte gUnk_0811BC28
|
||||
_08073720: .4byte gArea
|
||||
_08073724:
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
b _0807372E
|
||||
_0807372C:
|
||||
strh r0, [r6, #8]
|
||||
_0807372E:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
strb r5, [r0]
|
||||
b _08073762
|
||||
_08073736:
|
||||
mov r2, ip
|
||||
ldrb r0, [r2]
|
||||
subs r0, #1
|
||||
strb r0, [r2]
|
||||
ldr r1, _0807375C @ =gUnk_0811BC30
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x86
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #1
|
||||
adds r0, r0, r1
|
||||
ldrh r0, [r0]
|
||||
ldrh r1, [r6, #8]
|
||||
cmp r0, r1
|
||||
bne _08073760
|
||||
adds r0, r4, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
b _08073762
|
||||
.align 2, 0
|
||||
_0807375C: .4byte gUnk_0811BC30
|
||||
_08073760:
|
||||
strh r0, [r6, #8]
|
||||
_08073762:
|
||||
ldr r0, [r4, #0x7c]
|
||||
subs r1, r0, #1
|
||||
str r1, [r4, #0x7c]
|
||||
movs r0, #1
|
||||
rsbs r0, r0, #0
|
||||
cmp r1, r0
|
||||
bne _08073784
|
||||
ldr r2, _08073780 @ =gPlayerState
|
||||
ldrb r1, [r2, #2]
|
||||
movs r0, #0x40
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #2]
|
||||
bl sub_0807921C
|
||||
b _08073794
|
||||
.align 2, 0
|
||||
_08073780: .4byte gPlayerState
|
||||
_08073784:
|
||||
adds r0, r1, #0
|
||||
movs r1, #0x14
|
||||
bl __divsi3
|
||||
ldr r2, _08073798 @ =0x0000FFF8
|
||||
adds r1, r2, #0
|
||||
subs r1, r1, r0
|
||||
strh r1, [r4, #0x36]
|
||||
_08073794:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08073798: .4byte 0x0000FFF8
|
||||
.syntax divided
|
||||
@@ -1,123 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
ldrb r0, [r4, #0xf]
|
||||
cmp r0, #0
|
||||
bne _080740EA
|
||||
ldrb r0, [r4, #0x15]
|
||||
b _080740F0
|
||||
_080740EA:
|
||||
ldrb r1, [r4, #0x15]
|
||||
movs r0, #0x10
|
||||
eors r0, r1
|
||||
_080740F0:
|
||||
cmp r0, #8
|
||||
beq _08074128
|
||||
cmp r0, #8
|
||||
bhi _080740FE
|
||||
cmp r0, #0
|
||||
beq _08074168
|
||||
b _0807418C
|
||||
_080740FE:
|
||||
cmp r0, #0x10
|
||||
beq _08074148
|
||||
cmp r0, #0x18
|
||||
bne _0807418C
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldr r2, [r4, #0x48]
|
||||
ldrb r0, [r2, #2]
|
||||
subs r1, r1, r0
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
adds r1, r1, r0
|
||||
ldr r3, _08074124 @ =gRoomControls
|
||||
ldrh r0, [r3, #6]
|
||||
subs r6, r1, r0
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r4, r1]
|
||||
b _08074182
|
||||
.align 2, 0
|
||||
_08074124: .4byte gRoomControls
|
||||
_08074128:
|
||||
ldr r2, [r4, #0x48]
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
ldrb r1, [r2, #2]
|
||||
adds r0, r0, r1
|
||||
movs r1, #0
|
||||
ldrsb r1, [r2, r1]
|
||||
adds r0, r0, r1
|
||||
ldr r3, _08074144 @ =gRoomControls
|
||||
ldrh r1, [r3, #6]
|
||||
subs r6, r0, r1
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r4, r1]
|
||||
b _08074182
|
||||
.align 2, 0
|
||||
_08074144: .4byte gRoomControls
|
||||
_08074148:
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldr r2, [r4, #0x48]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
adds r1, r1, r0
|
||||
ldr r3, _08074164 @ =gRoomControls
|
||||
ldrh r0, [r3, #6]
|
||||
subs r6, r1, r0
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r4, r1]
|
||||
ldrb r1, [r2, #5]
|
||||
adds r0, r0, r1
|
||||
b _08074182
|
||||
.align 2, 0
|
||||
_08074164: .4byte gRoomControls
|
||||
_08074168:
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldr r2, [r4, #0x48]
|
||||
movs r0, #0
|
||||
ldrsb r0, [r2, r0]
|
||||
adds r1, r1, r0
|
||||
ldr r3, _080741A4 @ =gRoomControls
|
||||
ldrh r0, [r3, #6]
|
||||
subs r6, r1, r0
|
||||
movs r1, #0x32
|
||||
ldrsh r0, [r4, r1]
|
||||
ldrb r1, [r2, #5]
|
||||
subs r0, r0, r1
|
||||
_08074182:
|
||||
movs r1, #1
|
||||
ldrsb r1, [r2, r1]
|
||||
adds r0, r0, r1
|
||||
ldrh r1, [r3, #8]
|
||||
subs r5, r0, r1
|
||||
_0807418C:
|
||||
ldr r2, _080741A8 @ =gUnk_080082DC
|
||||
adds r0, r6, #0
|
||||
adds r1, r5, #0
|
||||
bl sub_080086B4
|
||||
cmp r0, #0
|
||||
beq _080741AC
|
||||
adds r0, r4, #0
|
||||
bl LinearMoveUpdate
|
||||
b _080741B0
|
||||
.align 2, 0
|
||||
_080741A4: .4byte gRoomControls
|
||||
_080741A8: .4byte gUnk_080082DC
|
||||
_080741AC:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
_080741B0:
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
adds r0, r4, #0
|
||||
bl GravityUpdate
|
||||
cmp r0, #0
|
||||
bne _080741C2
|
||||
bl sub_0807921C
|
||||
_080741C2:
|
||||
pop {r4, r5, r6, pc}
|
||||
.syntax divided
|
||||
@@ -1,84 +0,0 @@
|
||||
.syntax unified
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r7, r0, #0
|
||||
adds r5, r1, #0
|
||||
adds r6, r2, #0
|
||||
ldr r4, _08075230 @ =gPlayerScriptExecutionContext
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x24
|
||||
bl MemClear
|
||||
str r6, [r4]
|
||||
ldr r0, _08075234 @ =gPlayerEntity
|
||||
adds r0, #0x84
|
||||
str r4, [r0]
|
||||
ldr r2, _08075238 @ =gPlayerState
|
||||
movs r1, #0
|
||||
movs r0, #0x1c
|
||||
strb r0, [r2, #0xc]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x38
|
||||
movs r4, #1
|
||||
strb r4, [r0]
|
||||
adds r3, r2, #0
|
||||
adds r3, #0x39
|
||||
strb r1, [r3]
|
||||
adds r0, #2
|
||||
strb r5, [r0]
|
||||
ldr r0, [r2, #0x30]
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
str r0, [r2, #0x30]
|
||||
cmp r7, #0
|
||||
bne _08075240
|
||||
strb r7, [r3]
|
||||
ldr r6, _0807523C @ =script_BedInLinksRoom
|
||||
b _08075244
|
||||
.align 2, 0
|
||||
_08075230: .4byte gPlayerScriptExecutionContext
|
||||
_08075234: .4byte gPlayerEntity
|
||||
_08075238: .4byte gPlayerState
|
||||
_0807523C: .4byte script_BedInLinksRoom
|
||||
_08075240:
|
||||
strb r4, [r3]
|
||||
ldr r6, _08075290 @ =script_BedAtSimons
|
||||
_08075244:
|
||||
ldr r0, _08075294 @ =gPlayerState
|
||||
adds r0, #0x39
|
||||
ldrb r0, [r0]
|
||||
movs r1, #0
|
||||
cmp r0, #0
|
||||
bne _08075252
|
||||
movs r1, #2
|
||||
_08075252:
|
||||
movs r0, #0x5b
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08075270
|
||||
ldr r0, _08075298 @ =gPlayerEntity
|
||||
adds r1, r4, #0
|
||||
bl CopyPosition
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
bl StartCutscene
|
||||
_08075270:
|
||||
ldr r4, _08075298 @ =gPlayerEntity
|
||||
movs r1, #0xe
|
||||
rsbs r1, r1, #0
|
||||
movs r2, #0x1c
|
||||
rsbs r2, r2, #0
|
||||
adds r0, r4, #0
|
||||
bl CreateSpeechBubbleSleep
|
||||
str r0, [r4, #0x6c]
|
||||
cmp r0, #0
|
||||
beq _0807528C
|
||||
movs r1, #3
|
||||
bl SetDefaultPriority
|
||||
_0807528C:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08075290: .4byte script_BedAtSimons
|
||||
_08075294: .4byte gPlayerState
|
||||
_08075298: .4byte gPlayerEntity
|
||||
.syntax divided
|
||||
@@ -1,94 +0,0 @@
|
||||
.syntax unified
|
||||
push {lr}
|
||||
ldr r0, _08070614 @ =gInput
|
||||
ldrh r1, [r0, #2]
|
||||
movs r0, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08070674
|
||||
ldr r0, _08070618 @ =gFadeControl
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _08070674
|
||||
ldr r0, _0807061C @ =gUnk_02034490
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _08070674
|
||||
ldr r0, _08070620 @ =gMessage
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08070674
|
||||
ldr r1, _08070624 @ =gSave
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xaa
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08070674
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xf2
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08070674
|
||||
ldr r1, _08070628 @ =gPlayerState
|
||||
adds r0, r1, #0
|
||||
adds r0, #0x8b
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _08070674
|
||||
ldr r0, _0807062C @ =gPriorityHandler
|
||||
ldrh r0, [r0, #8]
|
||||
cmp r0, #0
|
||||
bne _08070674
|
||||
adds r2, r1, #0
|
||||
adds r2, #0xa8
|
||||
ldrb r0, [r2]
|
||||
cmp r0, #0
|
||||
bne _08070630
|
||||
adds r0, r1, #0
|
||||
adds r0, #0xa9
|
||||
ldrb r0, [r0]
|
||||
b _08070632
|
||||
.align 2, 0
|
||||
_08070614: .4byte gInput
|
||||
_08070618: .4byte gFadeControl
|
||||
_0807061C: .4byte gUnk_02034490
|
||||
_08070620: .4byte gMessage
|
||||
_08070624: .4byte gSave
|
||||
_08070628: .4byte gPlayerState
|
||||
_0807062C: .4byte gPriorityHandler
|
||||
_08070630:
|
||||
ldrb r0, [r2]
|
||||
_08070632:
|
||||
subs r0, #0x12
|
||||
cmp r0, #0xa
|
||||
bhi _08070678
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08070644 @ =_08070648
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08070644: .4byte _08070648
|
||||
_08070648: @ jump table
|
||||
.4byte _08070674 @ case 0
|
||||
.4byte _08070674 @ case 1
|
||||
.4byte _08070678 @ case 2
|
||||
.4byte _08070674 @ case 3
|
||||
.4byte _08070674 @ case 4
|
||||
.4byte _08070678 @ case 5
|
||||
.4byte _08070678 @ case 6
|
||||
.4byte _08070678 @ case 7
|
||||
.4byte _08070678 @ case 8
|
||||
.4byte _08070678 @ case 9
|
||||
.4byte _08070674 @ case 10
|
||||
_08070674:
|
||||
movs r0, #0
|
||||
b _0807067E
|
||||
_08070678:
|
||||
bl sub_080A4D88
|
||||
movs r0, #1
|
||||
_0807067E:
|
||||
pop {pc}
|
||||
.syntax divided
|
||||
+194
-95
@@ -322,25 +322,26 @@ extern u16 script_BedAtSimons;
|
||||
|
||||
extern ScriptExecutionContext gPlayerScriptExecutionContext;
|
||||
|
||||
NONMATCH("asm/non_matching/playerItemPacciCane/CheckPlayerInactive.inc", u32 CheckPlayerInactive(void)) {
|
||||
if (!((gInput.newKeys & START_BUTTON) == 0 || gFadeControl.active || gUnk_02034490.unk0 ||
|
||||
(gMessage.doTextBox & 0x7F) || gSave.stats.health == 0 || !gSave.fillerD0[34] ||
|
||||
gPlayerState.controlMode != CONTROL_ENABLED || gPriorityHandler.priority_timer != 0)) {
|
||||
u32 tmp = gPlayerState.framestate ? gPlayerState.framestate : gPlayerState.framestate_last;
|
||||
switch (tmp) {
|
||||
case PL_STATE_DIE:
|
||||
case PL_STATE_TALKEZLO:
|
||||
case PL_STATE_ITEMGET:
|
||||
case PL_STATE_DROWN:
|
||||
case PL_STATE_STAIRS:
|
||||
return 0;
|
||||
}
|
||||
sub_080A4D88();
|
||||
return 1;
|
||||
u32 CheckPlayerInactive(void) {
|
||||
u32 framestate;
|
||||
if (((gInput.newKeys & START_BUTTON) == 0 || gFadeControl.active || gUnk_02034490.unk0 ||
|
||||
(gMessage.doTextBox & 0x7F) || gSave.stats.health == 0 || !gSave.fillerD0[34] ||
|
||||
gPlayerState.controlMode != 0 || gPriorityHandler.priority_timer != 0)) {
|
||||
return 0;
|
||||
}
|
||||
return 0;
|
||||
|
||||
framestate = gPlayerState.framestate == 0 ? gPlayerState.framestate_last : gPlayerState.framestate;
|
||||
switch (framestate) {
|
||||
case PL_STATE_DIE:
|
||||
case PL_STATE_TALKEZLO:
|
||||
case PL_STATE_ITEMGET:
|
||||
case PL_STATE_DROWN:
|
||||
case PL_STATE_STAIRS:
|
||||
return 0;
|
||||
}
|
||||
sub_080A4D88();
|
||||
return 1;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void DoPlayerAction(Entity* this) {
|
||||
static void (*const sPlayerActions[])(Entity*) = {
|
||||
@@ -1173,12 +1174,80 @@ static void PortalShrinkInit(Entity* this) {
|
||||
SoundReq(SFX_PLY_SHRINKING);
|
||||
}
|
||||
|
||||
static const u8 gUnk_0811BABC[] = {
|
||||
1, 1, 1, 1, 2, 4, 8, 16,
|
||||
};
|
||||
void PortalShrinkUpdate(Entity* this) {
|
||||
static const u8 gUnk_0811BABC[] = {
|
||||
1, 1, 1, 1, 2, 4, 8, 16,
|
||||
};
|
||||
int iVar3;
|
||||
u32 uVar5;
|
||||
u32 uVar7;
|
||||
u32 uVar8;
|
||||
|
||||
// horrible
|
||||
/*static*/ ASM_FUNC("asm/non_matching/player/PortalShrinkUpdate.inc", void PortalShrinkUpdate(Entity* this));
|
||||
if (this->field_0x80.HALF.HI) {
|
||||
uVar7 = (u32)((*(int*)&this->field_0x80 + 0x80) * 0x100000) >> 0x17;
|
||||
} else {
|
||||
uVar7 = (0x10 / (((this->field_0x80.HALF.LO >> 6) ^ 3) + 1)) >> 1;
|
||||
}
|
||||
uVar5 = *(u32*)&this->cutsceneBeh;
|
||||
if (uVar5 >= 0x101) {
|
||||
uVar5 = (uVar5 + 0x80) * 0x100000 >> 0x17;
|
||||
} else {
|
||||
if (uVar5 == 0x100) {
|
||||
uVar5 = 0x10;
|
||||
} else {
|
||||
uVar5 = gUnk_0811BABC[uVar5 >> 5];
|
||||
}
|
||||
}
|
||||
iVar3 = 0x10000;
|
||||
|
||||
switch (this->frame) {
|
||||
case 1:
|
||||
this->spritePriority.b1 = 0;
|
||||
if (0x80 < *(u32*)&this->field_0x80) {
|
||||
*(u32*)&this->field_0x80 -= uVar7;
|
||||
}
|
||||
*(u32*)&this->cutsceneBeh += uVar5 * 2;
|
||||
this->y.WORD += iVar3 * 2;
|
||||
break;
|
||||
case 2:
|
||||
*(u32*)&this->field_0x80 += uVar7;
|
||||
uVar8 = *(u32*)&this->cutsceneBeh;
|
||||
if (uVar8 >= 0x101) {
|
||||
|
||||
if (uVar8 < 0x180) {
|
||||
uVar5 = uVar5 >> 1;
|
||||
}
|
||||
if (uVar8 - uVar5 < 0x100) {
|
||||
*(u32*)&this->cutsceneBeh = 0x100;
|
||||
} else {
|
||||
*(u32*)&this->cutsceneBeh = uVar8 - uVar5;
|
||||
}
|
||||
} else {
|
||||
if (0x80 < uVar8) {
|
||||
*(u32*)&this->cutsceneBeh = uVar8 - uVar5;
|
||||
}
|
||||
}
|
||||
this->z.WORD = this->z.WORD - iVar3;
|
||||
|
||||
break;
|
||||
case 3:
|
||||
if (*(u32*)&this->field_0x80 < 0x340) {
|
||||
*(u32*)&this->field_0x80 += uVar7;
|
||||
}
|
||||
if (*(u32*)&this->cutsceneBeh >= 0x340) {
|
||||
this->actionDelay = 8;
|
||||
this->field_0xf = 0x1e;
|
||||
this->subAction = 6;
|
||||
} else {
|
||||
*(u32*)&this->cutsceneBeh += uVar5 * 2;
|
||||
}
|
||||
this->z.WORD = this->z.WORD - iVar3 * 2;
|
||||
break;
|
||||
}
|
||||
|
||||
sub_0805EC9C(this, *(u32*)&this->field_0x80, *(u32*)&this->cutsceneBeh, 0);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
|
||||
/*static*/ void PortalEnterUpdate(Entity* this) {
|
||||
if (this->actionDelay == 0) {
|
||||
@@ -2311,17 +2380,16 @@ static const u16* const sTileTable[] = {
|
||||
sTiles + 9,
|
||||
};
|
||||
|
||||
/*static*/ NONMATCH("asm/non_matching/player/sub_08072D54.inc", void sub_08072D54(Entity* this)) {
|
||||
u32 bVar1;
|
||||
void sub_08072D54(Entity* this) {
|
||||
u32 uVar2;
|
||||
|
||||
UpdateAnimationSingleFrame(this);
|
||||
sub_0806F854(this, 0, -12);
|
||||
if (this->actionDelay != 0) {
|
||||
LinearMoveUpdate(this);
|
||||
this->actionDelay--;
|
||||
} else {
|
||||
uVar2 = sub_0806F730(this);
|
||||
uVar2 = GetTileType(uVar2, this->collisionLayer);
|
||||
uVar2 = GetTileType(sub_0806F730(this), this->collisionLayer);
|
||||
switch (this->field_0xf) {
|
||||
case 0:
|
||||
if (sub_08007DD6(uVar2, sTileTable[gPlayerEntity.animationState >> 1])) {
|
||||
@@ -2332,14 +2400,8 @@ static const u16* const sTileTable[] = {
|
||||
case 1:
|
||||
if (sub_08007DD6(uVar2, sTileTable[gPlayerEntity.animationState >> 1])) {
|
||||
this->actionDelay = 1;
|
||||
this->field_0xf = 1;
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
if (this->actionDelay == 0) {
|
||||
UpdatePlayerMovement();
|
||||
} else {
|
||||
LinearMoveUpdate(this);
|
||||
this->field_0xf = 2;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
@@ -2348,14 +2410,16 @@ static const u16* const sTileTable[] = {
|
||||
this->actionDelay = 1;
|
||||
this->field_0xf = 3;
|
||||
}
|
||||
this->animationState ^= 4;
|
||||
break;
|
||||
default:
|
||||
case 3:
|
||||
this->animationState ^= 4;
|
||||
if (sub_08007DD6(uVar2, sTileTable[gPlayerEntity.animationState >> 1])) {
|
||||
this->field_0xf = 4;
|
||||
} else {
|
||||
this->actionDelay = 1;
|
||||
} else {
|
||||
this->field_0xf = 4;
|
||||
}
|
||||
this->animationState ^= 4;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -2367,7 +2431,6 @@ static const u16* const sTileTable[] = {
|
||||
this->actionDelay = 0;
|
||||
}
|
||||
|
||||
this->actionDelay = bVar1;
|
||||
if (!GravityUpdate(this, GRAVITY_RATE)) {
|
||||
COLLISION_ON(this);
|
||||
if (this->collisionLayer == 1) {
|
||||
@@ -2377,7 +2440,7 @@ static const u16* const sTileTable[] = {
|
||||
}
|
||||
sub_08008790(this, 7);
|
||||
if (gPlayerState.field_0x14 != 0) {
|
||||
if (sub_08008B22() == 0) {
|
||||
if (sub_08008B22()) {
|
||||
gPlayerState.field_0x11 = 7;
|
||||
if (!(gPlayerState.flags & PL_MINISH)) {
|
||||
SetPlayerActionNormal();
|
||||
@@ -2396,7 +2459,6 @@ static const u16* const sTileTable[] = {
|
||||
}
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
/*static*/ void sub_08072F14(Entity* this) {
|
||||
if (--this->actionDelay != 0xff) {
|
||||
@@ -2729,8 +2791,8 @@ static const u16 gUnk_0811BC30[] = {
|
||||
0x0720,
|
||||
};
|
||||
|
||||
/*static*/ NONMATCH("asm/non_matching/player/sub_08073584.inc", void sub_08073584(Entity* this)) {
|
||||
u32 state, dir, tmp, tmp2, idx;
|
||||
void sub_08073584(Entity* this) {
|
||||
u32 state, dir, idx;
|
||||
|
||||
if ((gPlayerState.field_0x92 & 0x80) || this->iframes > 0 || gPlayerState.field_0x3c[0] ||
|
||||
(gPlayerState.flags & PL_PARACHUTE) == 0) {
|
||||
@@ -2740,6 +2802,7 @@ static const u16 gUnk_0811BC30[] = {
|
||||
gPlayerState.animation = 1840;
|
||||
return;
|
||||
}
|
||||
|
||||
gUnk_0200AF00.filler25[10] = 1;
|
||||
if (sub_0807A2F8(0)) {
|
||||
this->subAction++;
|
||||
@@ -2747,16 +2810,18 @@ static const u16 gUnk_0811BC30[] = {
|
||||
COLLISION_OFF(this);
|
||||
return;
|
||||
}
|
||||
|
||||
if (gArea.locationIndex == 16)
|
||||
this->speed = 256;
|
||||
this->speed = 0x100;
|
||||
else
|
||||
this->speed = 128;
|
||||
this->speed = 0x80;
|
||||
|
||||
if ((gPlayerState.field_0xd & 0x80) == 0) {
|
||||
if (this->direction != gPlayerState.field_0xd) {
|
||||
if (((this->direction - gPlayerState.field_0xd) & 0x1F) <= 0xF)
|
||||
*(u32*)&this->field_0x80 -= 32;
|
||||
if (((this->direction - gPlayerState.field_0xd) & 0x1F) < 0x10)
|
||||
*(u32*)&this->field_0x80 -= 0x20;
|
||||
else
|
||||
*(u32*)&this->field_0x80 += 32;
|
||||
*(u32*)&this->field_0x80 += 0x20;
|
||||
}
|
||||
}
|
||||
this->direction = (*(u32*)&this->field_0x80 >> 8) & 0x1F;
|
||||
@@ -2767,26 +2832,30 @@ static const u16 gUnk_0811BC30[] = {
|
||||
state = (state + 8) & 0x1F;
|
||||
dir = (dir + 8) & 0x1F;
|
||||
}
|
||||
|
||||
if (state - 7 > dir) {
|
||||
tmp = (this->animationState - 2) & 7;
|
||||
state = (this->animationState - 2) & 7;
|
||||
} else if (state + 7 < dir) {
|
||||
tmp = (this->animationState + 2) & 7;
|
||||
state = (this->animationState + 2) & 7;
|
||||
} else {
|
||||
tmp = this->animationState;
|
||||
state = this->animationState;
|
||||
}
|
||||
if (tmp != this->animationState) {
|
||||
|
||||
if (state != this->animationState) {
|
||||
this->field_0x86.HALF.HI = 20;
|
||||
}
|
||||
this->animationState = tmp;
|
||||
|
||||
this->animationState = state;
|
||||
idx = 0;
|
||||
tmp2 = gPlayerState.field_0xd >> 2;
|
||||
if (!this->field_0x86.HALF.HI || ((gPlayerState.field_0xd & 0x80) == 0 && this->animationState != tmp2)) {
|
||||
state = gPlayerState.field_0xd >> 2;
|
||||
if (!this->field_0x86.HALF.HI || ((gPlayerState.field_0xd & 0x80) == 0 && this->animationState != state)) {
|
||||
if ((gPlayerState.field_0xd & 0x80) == 0) {
|
||||
if (this->animationState != tmp2) {
|
||||
if (this->animationState == (tmp2 ^ 4)) {
|
||||
if (this->animationState != state) {
|
||||
if (this->animationState == (state ^ 4)) {
|
||||
idx = 2;
|
||||
} else {
|
||||
if (this->animationState == (((tmp2 & 6) + 2) & 7)) {
|
||||
|
||||
if (this->animationState == (((state & 6) + 2) & 7)) {
|
||||
idx = 1;
|
||||
} else {
|
||||
idx = 3;
|
||||
@@ -2794,6 +2863,7 @@ static const u16 gUnk_0811BC30[] = {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (gUnk_0811BC28[idx] == gPlayerState.animation) {
|
||||
if (gArea.locationIndex == 16)
|
||||
sub_080042BA(this, 2);
|
||||
@@ -2804,13 +2874,13 @@ static const u16 gUnk_0811BC30[] = {
|
||||
}
|
||||
this->field_0x86.HALF.LO = idx;
|
||||
} else {
|
||||
|
||||
this->field_0x86.HALF.HI--;
|
||||
if (gUnk_0811BC30[this->field_0x86.HALF.LO] == gPlayerState.animation)
|
||||
UpdateAnimationSingleFrame(this);
|
||||
else
|
||||
gPlayerState.animation = gUnk_0811BC30[this->field_0x86.HALF.LO];
|
||||
}
|
||||
|
||||
if (--this->field_0x7c.WORD == -1) {
|
||||
gPlayerState.jump_status |= 0x40;
|
||||
sub_0807921C();
|
||||
@@ -2819,7 +2889,6 @@ static const u16 gUnk_0811BC30[] = {
|
||||
this->z.HALF.HI = -8 - di;
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
/*static*/ void sub_0807379C(Entity* this) {
|
||||
if (this->z.HALF.HI > -32) {
|
||||
@@ -3244,55 +3313,42 @@ static void sub_08074060(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
/*static*/ NONMATCH("asm/non_matching/player/sub_080740D8.inc", void sub_080740D8(Entity* this)) {
|
||||
int v1; // r5
|
||||
int v2; // r6
|
||||
unsigned int v4; // r0
|
||||
Hitbox* v5; // r2
|
||||
int v6; // r0
|
||||
void sub_080740D8(Entity* this) {
|
||||
int y;
|
||||
int x;
|
||||
u32 dir;
|
||||
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if (!this->field_0xf)
|
||||
v4 = this->direction;
|
||||
dir = this->direction;
|
||||
else
|
||||
v4 = this->direction ^ 0x10;
|
||||
switch (v4) {
|
||||
dir = DirectionTurnAround(this->direction);
|
||||
switch (dir) {
|
||||
case 24:
|
||||
v5 = this->hitbox;
|
||||
v2 = this->x.HALF.HI - v5->unk2[0] + v5->offset_x - gRoomControls.origin_x;
|
||||
v6 = this->y.HALF.HI;
|
||||
v1 = v6 + v5->offset_y - gRoomControls.origin_y;
|
||||
x = this->x.HALF.HI - this->hitbox->unk2[0] + this->hitbox->offset_x - gRoomControls.origin_x;
|
||||
y = this->y.HALF.HI + this->hitbox->offset_y - gRoomControls.origin_y;
|
||||
break;
|
||||
case 8:
|
||||
v5 = this->hitbox;
|
||||
v2 = this->x.HALF.HI + v5->unk2[0] + v5->offset_x - gRoomControls.origin_x;
|
||||
v6 = this->y.HALF.HI;
|
||||
v1 = v6 + v5->offset_y - gRoomControls.origin_y;
|
||||
x = this->x.HALF.HI + this->hitbox->unk2[0] + this->hitbox->offset_x - gRoomControls.origin_x;
|
||||
y = this->y.HALF.HI + this->hitbox->offset_y - gRoomControls.origin_y;
|
||||
break;
|
||||
case 16:
|
||||
v5 = this->hitbox;
|
||||
v2 = this->x.HALF.HI + v5->offset_x - gRoomControls.origin_x;
|
||||
v6 = this->y.HALF.HI + v5->unk2[3];
|
||||
v1 = v6 + v5->offset_y - gRoomControls.origin_y;
|
||||
x = this->x.HALF.HI + this->hitbox->offset_x - gRoomControls.origin_x;
|
||||
y = this->y.HALF.HI + this->hitbox->unk2[3] + this->hitbox->offset_y - gRoomControls.origin_y;
|
||||
break;
|
||||
case 0:
|
||||
v5 = this->hitbox;
|
||||
v2 = this->x.HALF.HI + v5->unk2[0] + v5->offset_x - gRoomControls.origin_x;
|
||||
v6 = this->y.HALF.HI;
|
||||
v1 = v6 + v5->offset_y - gRoomControls.origin_y;
|
||||
break;
|
||||
default:
|
||||
x = this->x.HALF.HI + this->hitbox->offset_x - gRoomControls.origin_x;
|
||||
y = this->y.HALF.HI - this->hitbox->unk2[3] + this->hitbox->offset_y - gRoomControls.origin_y;
|
||||
break;
|
||||
}
|
||||
|
||||
if (sub_080086B4(v2, v1, gUnk_080082DC))
|
||||
if (sub_080086B4(x, y, gUnk_080082DC))
|
||||
LinearMoveUpdate(this);
|
||||
else
|
||||
this->field_0xf = 1;
|
||||
if (!GravityUpdate(this, GRAVITY_RATE))
|
||||
sub_0807921C();
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
u32 sub_080741C4(void) {
|
||||
if ((gPlayerState.jump_status && (gPlayerState.jump_status & 7) != 3) || gPlayerEntity.z.WORD != 0) {
|
||||
@@ -3511,7 +3567,53 @@ void SurfaceAction_SlopeGndWater(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
ASM_FUNC("asm/non_matching/player/SurfaceAction_Swamp.inc", void SurfaceAction_Swamp(Entity* this));
|
||||
void SurfaceAction_Swamp(Entity* this) {
|
||||
if (sub_080741C4()) {
|
||||
gPlayerState.field_0x11 = 0;
|
||||
gPlayerState.field_0x37 = 0;
|
||||
return;
|
||||
}
|
||||
|
||||
if (this->health) {
|
||||
if (sub_08079C30(this) == 0) {
|
||||
gPlayerState.field_0x11 = 0;
|
||||
gPlayerState.field_0x37 = 0;
|
||||
return;
|
||||
}
|
||||
if ((gPlayerState.flags & 0x80) == 0) {
|
||||
if (gPlayerState.dash_state) {
|
||||
if ((gPlayerState.dash_state & 0x40) != 0) {
|
||||
gPlayerState.field_0x11 = 0;
|
||||
gPlayerState.field_0x37 = 0;
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
sub_08077B20();
|
||||
}
|
||||
|
||||
if (gPlayerState.field_0x37 == 1) {
|
||||
CreateObjectWithParent(this, OBJECT_70, 0, 0);
|
||||
CreateFx(this, FX_GREEN_SPLASH, 0);
|
||||
SoundReq(SFX_161);
|
||||
} else if ((gPlayerState.field_0x92 & 0xf00) != 0) {
|
||||
SoundReq(SFX_161);
|
||||
} else if ((gRoomTransition.frameCount & 0xf) == 0) {
|
||||
SoundReq(SFX_161);
|
||||
}
|
||||
gPlayerState.speed_modifier -= 0xf0;
|
||||
gPlayerState.framestate = 0x1b;
|
||||
if (gPlayerState.field_0x37 < 0xf0) {
|
||||
gPlayerState.field_0x3f = gPlayerState.field_0x3f + 4 + (gPlayerState.field_0x37 >> 5);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
gPlayerState.flags &= ~PL_ROLLING;
|
||||
CreateFx(this, FX_GREEN_SPLASH, 0);
|
||||
this->iframes = 0x20;
|
||||
ModHealth(-4);
|
||||
RespawnPlayer();
|
||||
}
|
||||
|
||||
void SurfaceAction_Water(Entity* this) {
|
||||
if (!sub_080741C4()) {
|
||||
@@ -3988,9 +4090,7 @@ void sub_080751B4(Entity* this) {
|
||||
}
|
||||
}
|
||||
|
||||
// regalloc
|
||||
NONMATCH("asm/non_matching/player/sub_080751E8.inc", void sub_080751E8(u32 a1, u32 a2, void* script)) {
|
||||
void* tmp;
|
||||
void sub_080751E8(u32 a1, u32 a2, void* script) {
|
||||
Entity* e;
|
||||
Entity* e2;
|
||||
|
||||
@@ -4009,15 +4109,15 @@ NONMATCH("asm/non_matching/player/sub_080751E8.inc", void sub_080751E8(u32 a1, u
|
||||
gPlayerState.flags |= PL_NO_CAP;
|
||||
if (!a1) {
|
||||
gPlayerState.field_0x39 = 0;
|
||||
tmp = &script_BedInLinksRoom;
|
||||
script = &script_BedInLinksRoom;
|
||||
} else {
|
||||
gPlayerState.field_0x39 = 1;
|
||||
tmp = &script_BedAtSimons;
|
||||
script = &script_BedAtSimons;
|
||||
}
|
||||
e = CreateObject(OBJECT_5B, !gPlayerState.field_0x39 ? 2 : 0, 0);
|
||||
if (e != NULL) {
|
||||
CopyPosition(&gPlayerEntity, e);
|
||||
StartCutscene(e, tmp);
|
||||
StartCutscene(e, script);
|
||||
}
|
||||
e2 = CreateSpeechBubbleSleep(&gPlayerEntity, -14, -28);
|
||||
*(Entity**)&gPlayerEntity.field_0x6c.HWORD = e2;
|
||||
@@ -4025,7 +4125,6 @@ NONMATCH("asm/non_matching/player/sub_080751E8.inc", void sub_080751E8(u32 a1, u
|
||||
SetDefaultPriority(e2, PRIO_NO_BLOCK);
|
||||
}
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_0807529C(Entity* this) {
|
||||
CreateSpeechBubbleQuestionMark(this, 8, -32);
|
||||
|
||||
Reference in New Issue
Block a user