mirror of https://github.com/zeldaret/tmc.git
parent
303a89da03
commit
b9e07c1202
1675
asm/code_08070698.s
1675
asm/code_08070698.s
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,544 @@
|
|||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
ldr r6, _080707F0 @ =gPlayerState
|
||||
adds r3, r6, #0
|
||||
adds r3, #0xa8
|
||||
movs r4, #0
|
||||
strb r4, [r3]
|
||||
ldr r1, [r6, #0x30]
|
||||
movs r7, #0x10
|
||||
adds r0, r1, #0
|
||||
ands r0, r7
|
||||
mov ip, r6
|
||||
cmp r0, #0
|
||||
beq _08070818
|
||||
adds r2, r5, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x42
|
||||
strb r4, [r0]
|
||||
movs r0, #0xa0
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r5, #0x24]
|
||||
movs r0, #0x80
|
||||
strb r0, [r6, #6]
|
||||
strb r7, [r3]
|
||||
ldrb r0, [r5, #0x14]
|
||||
lsrs r0, r0, #1
|
||||
adds r0, #0x5c
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x58
|
||||
ldrb r1, [r1]
|
||||
cmp r0, r1
|
||||
bne _080707F8
|
||||
ldrh r0, [r5, #0x12]
|
||||
cmp r0, #2
|
||||
bne _080707F8
|
||||
ldr r0, _080707F4 @ =gPlayerEntity
|
||||
bl UpdateAnimationSingleFrame
|
||||
b _08070800
|
||||
.align 2, 0
|
||||
_080707F0: .4byte gPlayerState
|
||||
_080707F4: .4byte gPlayerEntity
|
||||
_080707F8:
|
||||
movs r0, #0x97
|
||||
lsls r0, r0, #2
|
||||
mov r1, ip
|
||||
strh r0, [r1, #8]
|
||||
_08070800:
|
||||
ldr r0, _08070814 @ =gPlayerEntity
|
||||
bl sub_0806F948
|
||||
bl ResetPlayer
|
||||
adds r0, r5, #0
|
||||
bl sub_08077698
|
||||
b _08070BE4
|
||||
.align 2, 0
|
||||
_08070814: .4byte gPlayerEntity
|
||||
_08070818:
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #5
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08070842
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x40
|
||||
movs r0, #0x1e
|
||||
strb r0, [r1]
|
||||
movs r0, #0xc
|
||||
strb r0, [r3]
|
||||
movs r1, #0
|
||||
movs r2, #0x24
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r0, #0
|
||||
bne _0807083A
|
||||
movs r1, #1
|
||||
_0807083A:
|
||||
adds r0, r5, #0
|
||||
bl sub_08070BEC
|
||||
b _08070BE4
|
||||
_08070842:
|
||||
movs r4, #0x80
|
||||
lsls r4, r4, #0xc
|
||||
ands r4, r1
|
||||
cmp r4, #0
|
||||
beq _08070852
|
||||
bl sub_08079938
|
||||
b _08070BE4
|
||||
_08070852:
|
||||
adds r0, r5, #0
|
||||
bl sub_080085B0
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x40
|
||||
strb r4, [r0]
|
||||
bl sub_08078EFC
|
||||
cmp r0, #0
|
||||
beq _08070868
|
||||
b _08070BE4
|
||||
_08070868:
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x26
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _080708AC
|
||||
ldrb r1, [r6, #2]
|
||||
movs r2, #0xc0
|
||||
adds r0, r2, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _080708AC
|
||||
ldrb r0, [r6, #3]
|
||||
cmp r0, #0
|
||||
bne _0807088E
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x21
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08070892
|
||||
_0807088E:
|
||||
strh r2, [r5, #0x24]
|
||||
b _080708AC
|
||||
_08070892:
|
||||
ldrb r0, [r6, #0x1b]
|
||||
cmp r0, #0
|
||||
beq _0807089C
|
||||
movs r0, #0xe0
|
||||
b _080708AA
|
||||
_0807089C:
|
||||
ldrb r0, [r6, #0x1c]
|
||||
cmp r0, #0
|
||||
beq _080708A6
|
||||
movs r0, #0x80
|
||||
b _080708AA
|
||||
_080708A6:
|
||||
movs r0, #0xa0
|
||||
lsls r0, r0, #1
|
||||
_080708AA:
|
||||
strh r0, [r5, #0x24]
|
||||
_080708AC:
|
||||
ldr r4, _08070918 @ =gPlayerState
|
||||
ldrb r0, [r4, #6]
|
||||
movs r1, #0x80
|
||||
orrs r1, r0
|
||||
strb r1, [r4, #6]
|
||||
ldr r0, [r4, #0x30]
|
||||
ldr r6, _0807091C @ =0x10000002
|
||||
ands r0, r6
|
||||
cmp r0, #0
|
||||
bne _080708C4
|
||||
bl sub_0807A1B8
|
||||
_080708C4:
|
||||
bl sub_08078EFC
|
||||
cmp r0, #0
|
||||
beq _080708CE
|
||||
b _08070BE4
|
||||
_080708CE:
|
||||
ldrb r0, [r4, #2]
|
||||
cmp r0, #0
|
||||
beq _080708D6
|
||||
b _080709D8
|
||||
_080708D6:
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _080708E4
|
||||
b _080709D8
|
||||
_080708E4:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x42
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
bne _08070924
|
||||
bl sub_080782C0
|
||||
cmp r0, #0
|
||||
beq _08070924
|
||||
ldr r0, _08070920 @ =gRoomVars
|
||||
ldrb r0, [r0, #6]
|
||||
cmp r0, #0
|
||||
bne _08070902
|
||||
bl ResetPlayer
|
||||
_08070902:
|
||||
ldr r0, [r4, #0x30]
|
||||
ands r0, r6
|
||||
cmp r0, #0
|
||||
beq _0807090C
|
||||
b _08070BE4
|
||||
_0807090C:
|
||||
bl sub_0807A1B8
|
||||
bl sub_08078EFC
|
||||
b _08070BE4
|
||||
.align 2, 0
|
||||
_08070918: .4byte gPlayerState
|
||||
_0807091C: .4byte 0x10000002
|
||||
_08070920: .4byte gRoomVars
|
||||
_08070924:
|
||||
ldr r0, _0807094C @ =gPlayerState
|
||||
ldr r1, [r0, #0x30]
|
||||
ldr r2, _08070950 @ =0x00041635
|
||||
ands r1, r2
|
||||
adds r0, #0xaa
|
||||
ldrb r0, [r0]
|
||||
orrs r1, r0
|
||||
cmp r1, #0
|
||||
bne _080709D8
|
||||
bl sub_08019840
|
||||
cmp r0, #0xf
|
||||
bls _08070940
|
||||
b _08070BE4
|
||||
_08070940:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08070954 @ =_08070958
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_0807094C: .4byte gPlayerState
|
||||
_08070950: .4byte 0x00041635
|
||||
_08070954: .4byte _08070958
|
||||
_08070958: @ jump table
|
||||
.4byte _08070998 @ case 0
|
||||
.4byte _08070BE4 @ case 1
|
||||
.4byte _08070BE4 @ case 2
|
||||
.4byte _080709A8 @ case 3
|
||||
.4byte _080709C2 @ case 4
|
||||
.4byte _08070BE4 @ case 5
|
||||
.4byte _08070BE4 @ case 6
|
||||
.4byte _08070BE4 @ case 7
|
||||
.4byte _08070BE4 @ case 8
|
||||
.4byte _08070BE4 @ case 9
|
||||
.4byte _08070BE4 @ case 10
|
||||
.4byte _08070BE4 @ case 11
|
||||
.4byte _08070BE4 @ case 12
|
||||
.4byte _08070BE4 @ case 13
|
||||
.4byte _08070BE4 @ case 14
|
||||
.4byte _080709B4 @ case 15
|
||||
_08070998:
|
||||
ldr r0, _080709A4 @ =gPlayerState
|
||||
ldrb r1, [r0, #6]
|
||||
movs r2, #0x80
|
||||
eors r1, r2
|
||||
strb r1, [r0, #6]
|
||||
b _080709D8
|
||||
.align 2, 0
|
||||
_080709A4: .4byte gPlayerState
|
||||
_080709A8:
|
||||
ldr r1, _080709B0 @ =gPlayerState
|
||||
movs r0, #0x80
|
||||
strb r0, [r1, #6]
|
||||
b _080709D8
|
||||
.align 2, 0
|
||||
_080709B0: .4byte gPlayerState
|
||||
_080709B4:
|
||||
ldrb r1, [r5, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r5, #0x10]
|
||||
bl sub_080797EC
|
||||
b _08070BE4
|
||||
_080709C2:
|
||||
ldr r0, _080709D4 @ =gPlayerState
|
||||
ldrb r1, [r0, #6]
|
||||
movs r2, #0x80
|
||||
eors r1, r2
|
||||
strb r1, [r0, #6]
|
||||
bl sub_080797EC
|
||||
b _08070BE4
|
||||
.align 2, 0
|
||||
_080709D4: .4byte gPlayerState
|
||||
_080709D8:
|
||||
adds r1, r5, #0
|
||||
adds r1, #0x3c
|
||||
movs r0, #0
|
||||
strb r0, [r1]
|
||||
adds r6, r5, #0
|
||||
adds r6, #0x29
|
||||
ldrb r1, [r6]
|
||||
subs r0, #8
|
||||
ands r0, r1
|
||||
movs r1, #4
|
||||
orrs r0, r1
|
||||
strb r0, [r6]
|
||||
adds r0, r5, #0
|
||||
bl sub_0807AC54
|
||||
cmp r0, #0
|
||||
beq _080709FC
|
||||
b _08070BE4
|
||||
_080709FC:
|
||||
adds r0, r5, #0
|
||||
bl sub_08077698
|
||||
bl sub_08078EFC
|
||||
cmp r0, #0
|
||||
beq _08070A0C
|
||||
b _08070BE4
|
||||
_08070A0C:
|
||||
bl sub_080792D8
|
||||
ldr r4, _08070A78 @ =gPlayerState
|
||||
ldrb r1, [r4, #2]
|
||||
ldrb r0, [r4, #0xa]
|
||||
orrs r0, r1
|
||||
cmp r0, #0
|
||||
bne _08070A32
|
||||
bl sub_08079550
|
||||
cmp r0, #0
|
||||
beq _08070A26
|
||||
b _08070BE4
|
||||
_08070A26:
|
||||
adds r0, r5, #0
|
||||
bl sub_08078F74
|
||||
cmp r0, #0
|
||||
beq _08070A32
|
||||
b _08070BE4
|
||||
_08070A32:
|
||||
adds r0, r5, #0
|
||||
bl sub_08073904
|
||||
bl sub_08078EFC
|
||||
cmp r0, #0
|
||||
beq _08070A42
|
||||
b _08070BE4
|
||||
_08070A42:
|
||||
ldrb r2, [r4, #2]
|
||||
cmp r2, #0
|
||||
beq _08070AAC
|
||||
adds r1, r4, #0
|
||||
adds r1, #0xa8
|
||||
movs r0, #0x14
|
||||
strb r0, [r1]
|
||||
movs r0, #0xc0
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _08070A80
|
||||
movs r0, #7
|
||||
ands r0, r2
|
||||
cmp r0, #3
|
||||
beq _08070A7C
|
||||
movs r0, #0x20
|
||||
ands r0, r2
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08070A7C
|
||||
strh r0, [r5, #0x24]
|
||||
adds r0, r5, #0
|
||||
bl sub_08008926
|
||||
b _08070A80
|
||||
.align 2, 0
|
||||
_08070A78: .4byte gPlayerState
|
||||
_08070A7C:
|
||||
movs r0, #0xff
|
||||
strb r0, [r5, #0x15]
|
||||
_08070A80:
|
||||
bl sub_08079E08
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08070A94
|
||||
b _08070BE4
|
||||
_08070A94:
|
||||
ldr r0, _08070AA8 @ =gPlayerState
|
||||
ldrb r0, [r0, #4]
|
||||
cmp r0, #0
|
||||
beq _08070A9E
|
||||
b _08070BE4
|
||||
_08070A9E:
|
||||
adds r0, r5, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
b _08070BE4
|
||||
.align 2, 0
|
||||
_08070AA8: .4byte gPlayerState
|
||||
_08070AAC:
|
||||
adds r0, r5, #0
|
||||
adds r0, #0x42
|
||||
ldrb r1, [r0]
|
||||
adds r7, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08070ABA
|
||||
b _08070BBC
|
||||
_08070ABA:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x26
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08070AD4
|
||||
adds r1, r4, #0
|
||||
adds r1, #0xa8
|
||||
movs r0, #7
|
||||
strb r0, [r1]
|
||||
adds r0, r5, #0
|
||||
bl sub_0807ACCC
|
||||
b _08070B56
|
||||
_08070AD4:
|
||||
ldr r0, [r4, #0x30]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #0x12
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08070AEE
|
||||
ldrb r0, [r6]
|
||||
movs r1, #0x39
|
||||
rsbs r1, r1, #0
|
||||
ands r1, r0
|
||||
movs r0, #8
|
||||
orrs r1, r0
|
||||
strb r1, [r6]
|
||||
_08070AEE:
|
||||
ldrb r1, [r4, #0x1e]
|
||||
movs r0, #0x40
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08070B00
|
||||
adds r0, r5, #0
|
||||
bl sub_08008AA0
|
||||
b _08070B1E
|
||||
_08070B00:
|
||||
ldrb r0, [r4, #0x12]
|
||||
cmp r0, #0x17
|
||||
bne _08070B0E
|
||||
adds r0, r5, #0
|
||||
bl sub_08008926
|
||||
b _08070B1E
|
||||
_08070B0E:
|
||||
cmp r0, #1
|
||||
bne _08070B18
|
||||
bl sub_08078F60
|
||||
b _08070B1E
|
||||
_08070B18:
|
||||
adds r0, r5, #0
|
||||
bl sub_08008AA0
|
||||
_08070B1E:
|
||||
ldr r2, _08070BB8 @ =gPlayerState
|
||||
ldrb r1, [r2, #0x1b]
|
||||
movs r0, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08070B56
|
||||
ldrb r3, [r2, #0xd]
|
||||
strb r3, [r5, #0x15]
|
||||
ldr r0, [r2, #0x30]
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #3
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08070B56
|
||||
movs r0, #0xc0
|
||||
lsls r0, r0, #2
|
||||
strh r0, [r5, #0x24]
|
||||
movs r0, #0x80
|
||||
ands r0, r3
|
||||
cmp r0, #0
|
||||
beq _08070B52
|
||||
ldrb r1, [r5, #0x14]
|
||||
movs r0, #0xe
|
||||
ands r0, r1
|
||||
lsls r0, r0, #2
|
||||
strb r0, [r5, #0x15]
|
||||
_08070B52:
|
||||
bl sub_0807A108
|
||||
_08070B56:
|
||||
movs r4, #0
|
||||
ldr r3, _08070BB8 @ =gPlayerState
|
||||
ldrb r2, [r3, #7]
|
||||
ldrb r0, [r5, #0x15]
|
||||
orrs r0, r2
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
ldrb r1, [r3, #0xa]
|
||||
orrs r0, r1
|
||||
cmp r0, #0
|
||||
bne _08070B8E
|
||||
movs r0, #0x10
|
||||
ands r0, r2
|
||||
cmp r0, #0
|
||||
bne _08070B8E
|
||||
movs r4, #1
|
||||
ldrb r0, [r7]
|
||||
cmp r0, #0
|
||||
bne _08070B8E
|
||||
ldrb r1, [r3, #0x1e]
|
||||
movs r0, #0x40
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08070B8C
|
||||
ldrb r0, [r3, #0x12]
|
||||
cmp r0, #0x17
|
||||
beq _08070B8E
|
||||
_08070B8C:
|
||||
movs r4, #3
|
||||
_08070B8E:
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
bl sub_08070BEC
|
||||
adds r0, r5, #0
|
||||
bl sub_08008AC6
|
||||
ldrb r0, [r7]
|
||||
cmp r0, #0
|
||||
bne _08070BE4
|
||||
ldr r1, _08070BB8 @ =gPlayerState
|
||||
ldrb r0, [r1, #0xb]
|
||||
cmp r0, #0
|
||||
bne _08070BE4
|
||||
ldrb r0, [r1, #0x12]
|
||||
cmp r0, #0x1e
|
||||
beq _08070BE4
|
||||
adds r0, r5, #0
|
||||
bl sub_0806F948
|
||||
b _08070BE4
|
||||
.align 2, 0
|
||||
_08070BB8: .4byte gPlayerState
|
||||
_08070BBC:
|
||||
ldr r0, [r4, #0x2c]
|
||||
cmp r0, #0
|
||||
bne _08070BC8
|
||||
adds r0, r5, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
_08070BC8:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x26
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08070BE4
|
||||
ldr r0, _08070BE8 @ =gScreenTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08070BE4
|
||||
adds r0, r5, #0
|
||||
bl CreateWaterTrace
|
||||
_08070BE4:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08070BE8: .4byte gScreenTransition
|
||||
.syntax divided
|
|
@ -0,0 +1,87 @@
|
|||
.syntax unified
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
bl UpdateAnimationSingleFrame
|
||||
adds r0, r4, #0
|
||||
bl sub_080085B0
|
||||
bl sub_08079E08
|
||||
bl sub_0807A1B8
|
||||
bl sub_08078EFC
|
||||
cmp r0, #0
|
||||
bne _08070E76
|
||||
movs r1, #0x80
|
||||
lsls r1, r1, #6
|
||||
adds r0, r4, #0
|
||||
bl sub_08003FC4
|
||||
cmp r0, #0
|
||||
bne _08070E76
|
||||
ldr r6, _08070E18 @ =gPlayerState
|
||||
strb r0, [r6, #2]
|
||||
bl sub_08078EFC
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
bne _08070E76
|
||||
bl sub_08079D48
|
||||
cmp r0, #0
|
||||
bne _08070E10
|
||||
adds r0, r6, #0
|
||||
adds r0, #0x26
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #0
|
||||
beq _08070E1C
|
||||
_08070E10:
|
||||
strb r5, [r6, #2]
|
||||
bl sub_080791D0
|
||||
b _08070E76
|
||||
.align 2, 0
|
||||
_08070E18: .4byte gPlayerState
|
||||
_08070E1C:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0xff
|
||||
beq _08070E32
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #9
|
||||
str r0, [r4, #0x20]
|
||||
b _08070E76
|
||||
_08070E32:
|
||||
ldrb r0, [r4, #0x10]
|
||||
movs r1, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
ldrb r0, [r6, #0x14]
|
||||
cmp r0, #0
|
||||
bne _08070E56
|
||||
bl sub_08008B22
|
||||
cmp r0, #0
|
||||
beq _08070E56
|
||||
movs r0, #7
|
||||
strb r0, [r6, #0x11]
|
||||
bl sub_08079938
|
||||
bl sub_080791BC
|
||||
b _08070E76
|
||||
_08070E56:
|
||||
movs r0, #1
|
||||
strh r0, [r4, #0x12]
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
ldrb r0, [r4, #0xd]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
ldr r2, _08070E78 @ =gPlayerState
|
||||
ldr r0, [r2, #0x30]
|
||||
movs r1, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08070E76
|
||||
movs r0, #0x80
|
||||
lsls r0, r0, #1
|
||||
strh r0, [r2, #8]
|
||||
_08070E76:
|
||||
pop {r4, r5, r6, pc}
|
||||
.align 2, 0
|
||||
_08070E78: .4byte gPlayerState
|
||||
.syntax divided
|
|
@ -307,5 +307,18 @@ extern void sub_08078AA8(u32, u32);
|
|||
extern void sub_08078B48(void);
|
||||
extern void sub_0807919C();
|
||||
extern void sub_0807CAA0(u32, u32);
|
||||
extern void sub_08080964(u16, u32);
|
||||
extern void sub_080085B0(Entity*);
|
||||
extern u32 sub_08079D48();
|
||||
extern u32 sub_08008B22();
|
||||
extern void sub_080791BC9();
|
||||
extern void sub_080791BC();
|
||||
extern void sub_08056360();
|
||||
extern u32 sub_080542AC(u32);
|
||||
extern void sub_0807A108();
|
||||
extern u32 sub_08079FC4(u32);
|
||||
extern void sub_0800455E(Entity*);
|
||||
extern void sub_08008790(Entity*, u32);
|
||||
extern u32 CheckIsDungeon();
|
||||
extern void sub_0804ACF8();
|
||||
extern void sub_08073904(Entity*);
|
||||
#endif
|
||||
|
|
|
@ -49,6 +49,26 @@
|
|||
|
||||
#define static_assert(cond) extern char assertion[(cond) ? 1 : -1]
|
||||
|
||||
#if NON_MATCHING
|
||||
#define asmfunc(prologue, path)
|
||||
#else
|
||||
#define asmfunc(prologue, path) \
|
||||
NAKED prologue { \
|
||||
asm(".include " #path); \
|
||||
}
|
||||
#endif
|
||||
|
||||
#if NON_MATCHING
|
||||
#define NONMATCH(prologue, path) prologue
|
||||
#define END_NONMATCH
|
||||
#else
|
||||
#define NONMATCH(path, prologue) \
|
||||
NAKED prologue { \
|
||||
asm(".include " #path); \
|
||||
if (0)
|
||||
#define END_NONMATCH }
|
||||
#endif
|
||||
|
||||
typedef union {
|
||||
s32 WORD;
|
||||
struct {
|
||||
|
@ -76,6 +96,4 @@ union SplitHWord {
|
|||
} PACKED HALF;
|
||||
} PACKED;
|
||||
|
||||
|
||||
|
||||
#endif // GUARD_GLOBAL_H
|
||||
|
|
|
@ -79,5 +79,6 @@ extern RoomControls gRoomControls;
|
|||
extern RoomVars gRoomVars;
|
||||
|
||||
extern void SetTileType(u32, u32, u32);
|
||||
extern void sub_08080964(u32 time, u32 magnitude); // shake screen
|
||||
|
||||
#endif
|
||||
|
|
|
@ -648,7 +648,7 @@ SECTIONS {
|
|||
src/sub_0806FA04.o(.text);
|
||||
src/position.o(.text);
|
||||
asm/code_0806FA6C.o(.text);
|
||||
src/sub_08070680.o(.text);
|
||||
src/player.o(.text);
|
||||
asm/code_08070698.o(.text);
|
||||
asm/stairsInteract.o(.text);
|
||||
asm/code_080732D0.o(.text);
|
||||
|
|
|
@ -62,7 +62,7 @@ u32* GetLayerByIndex(u32 param_1) {
|
|||
}
|
||||
}
|
||||
|
||||
void sub_08080964(u16 time, u32 magnitude) {
|
||||
void sub_08080964(u32 time, u32 magnitude) {
|
||||
gRoomControls.screenShakeTime = time;
|
||||
gRoomControls.screenShakeMagnitude = magnitude & 7;
|
||||
return;
|
||||
|
|
|
@ -11,7 +11,6 @@
|
|||
extern void sub_0807DD50(Entity*);
|
||||
extern void sub_0807DD94(Entity*, u32);
|
||||
extern void EnqueueSFX(u32);
|
||||
extern void sub_08080964(u32, u32);
|
||||
|
||||
void Carlov(Entity* this) {
|
||||
if (this->action == 0) {
|
||||
|
|
|
@ -0,0 +1,546 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "player.h"
|
||||
#include "textbox.h"
|
||||
#include "functions.h"
|
||||
#include "readKeyInput.h"
|
||||
#include "area.h"
|
||||
|
||||
extern const void (*const gUnk_0811B9E0[])(Entity*);
|
||||
extern const void (*const gUnk_0811BA60[])(Entity*);
|
||||
extern const void (*const gUnk_0811BA68[])(Entity*);
|
||||
extern const void (*const gUnk_0811BA74[])(Entity*);
|
||||
extern const void (*const gUnk_0811BA7C[])(Entity*);
|
||||
extern const void (*const gUnk_0811BA88[])(Entity*);
|
||||
extern const void (*const gUnk_0811BA94[])(Entity*);
|
||||
extern const void (*const gUnk_0811BA9C[])(Entity*);
|
||||
|
||||
extern void sub_08079458();
|
||||
extern void sub_080797EC();
|
||||
extern void sub_08079E08();
|
||||
extern void sub_08078F60();
|
||||
|
||||
extern BoundingBox gUnk_08114F88;
|
||||
|
||||
// inject
|
||||
void sub_08070680(Entity* this) {
|
||||
gUnk_0811B9E0[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08070698(Entity* this) {
|
||||
Entity* ent;
|
||||
|
||||
gPlayerState.field_0x0[0] = 0xff;
|
||||
gPlayerState.field_0x16[0] = gPlayerEntity.x.HALF.HI;
|
||||
gPlayerState.field_0x16[1] = gPlayerEntity.y.HALF.HI;
|
||||
this->flags = this->flags | 0x80;
|
||||
this->spritePriority.b0 = 0xc;
|
||||
this->spritePriority.b1 = 1;
|
||||
this->spriteSettings.b.shadow = 1;
|
||||
this->field_0x16 = 0x20;
|
||||
this->flags2 = 8;
|
||||
this->damageType = 0x79;
|
||||
this->boundingBox = &gUnk_08114F88;
|
||||
this->spriteIndex = 1;
|
||||
gPlayerState.field_0x8 = 0x100;
|
||||
sub_0806FDA0(this);
|
||||
sub_080AE008(this, 1, 2);
|
||||
InitAnimationForceUpdate(this, 2);
|
||||
if (this->collisionLayer == 0) {
|
||||
sub_08016A30(this);
|
||||
}
|
||||
|
||||
if (IsItemEquipped(0x10) != 2) {
|
||||
sub_08077728();
|
||||
}
|
||||
sub_0807A108();
|
||||
sub_0807AEE4();
|
||||
|
||||
if (sub_08078EFC() == 0) {
|
||||
sub_0807921C();
|
||||
sub_0807A1B8();
|
||||
if (gPlayerState.swimState != 0) {
|
||||
gPlayerState.swimState = 1;
|
||||
sub_08079938();
|
||||
gPlayerState.field_0xa8 = 7;
|
||||
sub_0807ACCC(this);
|
||||
ent = FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0);
|
||||
if (ent != NULL) {
|
||||
DeleteEntity(ent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// PlayerState.flags need to be 100% before this one can reasonably be done
|
||||
NONMATCH("asm/non_matching/player/sub_08070794.s", void sub_08070794(Entity* this)) {
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_08070BEC(Entity* this, u32 r0) {
|
||||
if (r0 & 1)
|
||||
sub_080797EC();
|
||||
else
|
||||
sub_08079938();
|
||||
|
||||
if (r0 & 2)
|
||||
sub_08079E08();
|
||||
}
|
||||
|
||||
void sub_08070C10(Entity* this) {
|
||||
gPlayerState.field_0xd[0] = 0xFF;
|
||||
gPlayerState.pushedObject = 0x80;
|
||||
gPlayerState.field_0xa8 = 10;
|
||||
|
||||
gUnk_0811BA60[this->previousActionFlag](this);
|
||||
}
|
||||
|
||||
void sub_08070C3C(Entity* this) {
|
||||
sub_08004168(this);
|
||||
|
||||
gPlayerState.flags.all |= 0x1 | 0x4;
|
||||
gPlayerState.flags.all &= ~0x400;
|
||||
|
||||
gPlayerState.jumpStatus = 0;
|
||||
|
||||
if ((gPlayerState.flags.all & 0x80) != 0)
|
||||
gPlayerState.field_0x8 = 0x1ba;
|
||||
else if ((gPlayerState.flags.all & 8) != 0)
|
||||
gPlayerState.field_0x8 = 0x458;
|
||||
else
|
||||
gPlayerState.field_0x8 = 0x1b8;
|
||||
|
||||
this->previousActionFlag++;
|
||||
this->flags &= ~0x80;
|
||||
this->spritePriority.b1 = 0;
|
||||
ResetPlayer();
|
||||
sub_0807A108();
|
||||
PlaySFX(0x7b);
|
||||
PlaySFX(0x85);
|
||||
}
|
||||
|
||||
void sub_08070CB4(Entity* this) {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if ((this->frames.all & 0x80) != 0) {
|
||||
if ((gUnk_02002A40.stats.health != 0) && ((gPlayerState.flags.all & 0x8000) != 0)) {
|
||||
gPlayerState.flags.all &= ~(0x1 | 0x4);
|
||||
this->spriteSettings.b.draw = 0;
|
||||
} else {
|
||||
gPlayerState.flags.all &= ~(0x4 | 0x8000);
|
||||
sub_08079458();
|
||||
gPlayerState.field_0xa = 0;
|
||||
this->hurtBlinkTime = 0x20;
|
||||
ModHealth(-2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08070D20(Entity* this) {
|
||||
gUnk_0811BA68[this->previousActionFlag](this);
|
||||
}
|
||||
|
||||
void sub_08070D38(Entity* this) {
|
||||
this->flags &= ~0x80;
|
||||
this->direction = ((this->animationState & 0xe) << 2) ^ 0x10;
|
||||
this->nonPlanarMovement = 0x100;
|
||||
this->field_0x42 = 0;
|
||||
this->previousActionFlag++;
|
||||
this->actionDelay = gPlayerState.field_0x38;
|
||||
this->spriteIndex = 1;
|
||||
|
||||
if ((gPlayerState.flags.all & 0x80) == 0) {
|
||||
this->field_0x20 = 0x20000;
|
||||
gPlayerState.field_0x8 = 0x114;
|
||||
sub_08080964(16, 0);
|
||||
} else {
|
||||
gPlayerState.field_0x8 = 0xc18;
|
||||
this->field_0x20 = 0x18000;
|
||||
}
|
||||
|
||||
gPlayerState.jumpStatus = 0x80;
|
||||
PlaySFX(0x14c);
|
||||
ResetPlayer();
|
||||
sub_08078F60();
|
||||
}
|
||||
|
||||
// minor regalloc
|
||||
NONMATCH("asm/non_matching/player/sub_08070DC4.s", void sub_08070DC4(Entity* this)) {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
sub_080085B0(this);
|
||||
sub_08079E08();
|
||||
sub_0807A1B8();
|
||||
|
||||
if (sub_08078EFC() || sub_08003FC4(this, 0x2000))
|
||||
return;
|
||||
|
||||
gPlayerState.jumpStatus = 0;
|
||||
|
||||
if (sub_08078EFC() || sub_08079D48())
|
||||
return;
|
||||
|
||||
if (gPlayerState.swimState != 0) {
|
||||
gPlayerState.jumpStatus = 0;
|
||||
sub_080791D0();
|
||||
return;
|
||||
}
|
||||
|
||||
if (--this->actionDelay != 0xFF) {
|
||||
this->field_0x20 = 0x10000;
|
||||
return;
|
||||
}
|
||||
|
||||
this->flags |= 0x80;
|
||||
|
||||
if ((gPlayerState.field_0x14 == 0) && sub_08008B22()) {
|
||||
gPlayerState.field_0x10[1] = 7;
|
||||
sub_08079938();
|
||||
sub_080791BC();
|
||||
return;
|
||||
}
|
||||
|
||||
this->spriteIndex = 1;
|
||||
this->actionDelay = 8;
|
||||
this->previousActionFlag++;
|
||||
|
||||
if ((gPlayerState.flags.all & 0x80) == 0)
|
||||
gPlayerState.field_0x8 = 0x100;
|
||||
}
|
||||
END_NONMATCH
|
||||
|
||||
void sub_08070E7C(Entity* this) {
|
||||
u8 timer = --this->actionDelay;
|
||||
|
||||
if (timer == 0) {
|
||||
gPlayerState.jumpStatus = timer;
|
||||
sub_080791D0();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08070E9C(Entity* this) {
|
||||
if (sub_08078EFC() != 0) {
|
||||
sub_08056360();
|
||||
} else {
|
||||
gPlayerState.field_0x27[0] = 4;
|
||||
gPlayerState.field_0xa8 = 0x13;
|
||||
sub_0807A1B8();
|
||||
gUnk_0811BA74[this->previousActionFlag](this);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08070EDC(Entity* this) {
|
||||
this->scriptedScene = 2;
|
||||
|
||||
if ((gTextBox.doTextBox & 0x7f) != 0)
|
||||
this->previousActionFlag = 1;
|
||||
|
||||
if ((gPlayerState.flags.all & 0x80) == 0)
|
||||
sub_08079938();
|
||||
else
|
||||
gPlayerState.field_0x8 = 0xc18;
|
||||
}
|
||||
|
||||
void sub_08070f24(Entity* this) {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if ((gTextBox.doTextBox & 0x7f) == 0) {
|
||||
this->scriptedScene = this->scriptedScene2;
|
||||
sub_080791D0();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08070F50(Entity* this) {
|
||||
Entity* child;
|
||||
u8* temp; // todo: retype
|
||||
|
||||
gPlayerState.field_0xa8 = 0x15;
|
||||
this->flags &= ~(0x80);
|
||||
gUnk_0811BA7C[this->previousActionFlag](this);
|
||||
|
||||
child = this->attachedEntity;
|
||||
if (child != NULL) {
|
||||
PositionEntityOnTop(this, child);
|
||||
temp = GetSpriteSubEntryOffsetDataPointer((u16)this->spriteIndex, this->frameIndex);
|
||||
child->spriteOffsetX = *temp;
|
||||
child->spriteOffsetY = temp[1];
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08070FA4(Entity* this) {
|
||||
u16 temp;
|
||||
|
||||
this->spriteSettings.b.flipX = FALSE;
|
||||
this->animationState = 4;
|
||||
|
||||
gPlayerState.flags.all |= 1;
|
||||
gPlayerState.jumpStatus = 0;
|
||||
|
||||
if ((gPlayerState.flags.all & 0x80) == 0) {
|
||||
if ((gPlayerState.flags.all & 0x8) != 0) {
|
||||
if (sub_080542AC(gPlayerState.field_0x38)) {
|
||||
temp = 0x45e;
|
||||
} else {
|
||||
temp = 0x45b;
|
||||
}
|
||||
} else {
|
||||
if (sub_080542AC(gPlayerState.field_0x38)) {
|
||||
temp = 0x2e0;
|
||||
} else {
|
||||
temp = 0x1b9;
|
||||
}
|
||||
}
|
||||
gPlayerState.field_0x8 = temp;
|
||||
}
|
||||
|
||||
this->previousActionFlag = 1;
|
||||
ResetPlayer();
|
||||
sub_08078F60();
|
||||
}
|
||||
|
||||
void sub_08071020(Entity* this) {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
if (this->frames.all != 0) {
|
||||
this->previousActionFlag = 2;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08071038(Entity* this) {
|
||||
|
||||
UpdateAnimationSingleFrame(this);
|
||||
|
||||
if (sub_08078EFC() || (gTextBox.doTextBox & 0x7f))
|
||||
return;
|
||||
|
||||
if ((this->frames.all & 0x80) != 0) {
|
||||
this->attachedEntity = 0;
|
||||
this->field_0x42 = 0;
|
||||
this->hurtBlinkTime = 0xf8;
|
||||
gPlayerState.jumpStatus = 0;
|
||||
sub_080791D0();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08071084(Entity* this) {
|
||||
gPlayerState.field_0xa8 = 0xb;
|
||||
gUnk_0811BA88[this->previousActionFlag](this);
|
||||
}
|
||||
|
||||
void sub_080710A8(Entity* this) {
|
||||
u32 temp;
|
||||
|
||||
this->previousActionFlag++;
|
||||
|
||||
gPlayerState.flags.all |= 1;
|
||||
gPlayerState.flags.all &= ~(0x400 | 0x800);
|
||||
|
||||
gPlayerState.playerAction = 0;
|
||||
|
||||
if ((gPlayerState.heldObject | gPlayerState.field_0x1a[1]) == 0) {
|
||||
if ((gPlayerState.flags.all & 0x80) == 0) {
|
||||
ResetPlayer();
|
||||
|
||||
if ((gPlayerState.flags.all & 0x8) != 0) {
|
||||
gPlayerState.field_0x8 = 0x420;
|
||||
} else {
|
||||
gPlayerState.field_0x8 = 0x810;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
gPlayerState.field_0x1d[1] = 0;
|
||||
this->direction = ((this->animationState & 0xe) << 2);
|
||||
|
||||
temp = sub_08079FC4(1);
|
||||
asm("lsl r0, r0, #0x4");
|
||||
this->field_0x20 = (temp - 4) * 64 * 64;
|
||||
|
||||
this->nonPlanarMovement = 0x100;
|
||||
sub_0807A108();
|
||||
PlaySFX(0x7c);
|
||||
PlaySFX(0x78);
|
||||
}
|
||||
|
||||
void sub_08071130(Entity* this) {
|
||||
|
||||
if (sub_08078EFC(this))
|
||||
return;
|
||||
|
||||
if (gPlayerState.field_0x1a[1] == 0) {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
|
||||
if ((this->frames.all & 1))
|
||||
return;
|
||||
}
|
||||
|
||||
sub_0806F69C(this);
|
||||
|
||||
if (sub_08003FC4(this, 0x2000))
|
||||
return;
|
||||
|
||||
gPlayerState.jumpStatus = 0;
|
||||
sub_0800455E(this);
|
||||
|
||||
if (*(Entity**)&this->field_0x74 != NULL)
|
||||
sub_0800455E(*(Entity**)&this->field_0x74);
|
||||
|
||||
sub_08008790(this, 7);
|
||||
|
||||
if (gPlayerState.field_0x14)
|
||||
return;
|
||||
|
||||
sub_0807A1B8();
|
||||
|
||||
if (sub_08078EFC())
|
||||
return;
|
||||
|
||||
if ((sub_08079D48() == 0) || (gPlayerState.swimState != 0)) {
|
||||
gPlayerState.jumpStatus = 0;
|
||||
sub_080791D0();
|
||||
return;
|
||||
}
|
||||
|
||||
this->actionDelay = 6;
|
||||
|
||||
if (((gPlayerState.heldObject | gPlayerState.keepFacing) == 0) && ((gPlayerState.flags.all & 0x80) == 0)) {
|
||||
if ((gPlayerState.flags.all & 0x8) != 0) {
|
||||
gPlayerState.field_0x8 = 0x424;
|
||||
} else {
|
||||
gPlayerState.field_0x8 = 0x820;
|
||||
}
|
||||
this->animIndex = 0xff;
|
||||
}
|
||||
|
||||
this->previousActionFlag++;
|
||||
sub_08078F60();
|
||||
this->field_0x42 = 0;
|
||||
PlaySFX(0x7d);
|
||||
}
|
||||
|
||||
void sub_08071208(Entity* this) {
|
||||
if ((gPlayerState.heldObject | gPlayerState.keepFacing) == 0) {
|
||||
if ((gPlayerState.flags.all & 0x80) == 0) {
|
||||
UpdateAnimationSingleFrame(this);
|
||||
}
|
||||
}
|
||||
|
||||
if (--this->actionDelay == 0xff) {
|
||||
gPlayerState.jumpStatus = 0;
|
||||
sub_080791D0();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08071248(Entity* this) {
|
||||
gPlayerState.field_0xa8 = 0x16;
|
||||
gPlayerState.flags.all |= 4;
|
||||
this->flags &= ~0x80;
|
||||
gUnk_0811BA94[this->previousActionFlag](this);
|
||||
}
|
||||
|
||||
void sub_0807127C(Entity* this) {
|
||||
this->previousActionFlag = 1;
|
||||
this->spritePriority.b1 = 0;
|
||||
|
||||
if ((gPlayerState.flags.all & 0x80) != 0) {
|
||||
this->actionDelay = 0x3c;
|
||||
gPlayerState.field_0x8 = 0xc19;
|
||||
PlaySFX(0x84);
|
||||
} else {
|
||||
if ((gPlayerState.flags.all & 0x10000) == 0) {
|
||||
sub_08004168(this);
|
||||
}
|
||||
|
||||
CreateFx(this, 11, 0);
|
||||
|
||||
if ((gPlayerState.flags.all & 8) == 0) {
|
||||
gPlayerState.field_0x8 = 0x72c;
|
||||
} else {
|
||||
gPlayerState.field_0x8 = 0x44c;
|
||||
}
|
||||
}
|
||||
ResetPlayer();
|
||||
}
|
||||
|
||||
void sub_080712F0(Entity* this) {
|
||||
u32 temp;
|
||||
|
||||
UpdateAnimationSingleFrame(this);
|
||||
|
||||
temp = FALSE;
|
||||
|
||||
if ((gPlayerState.flags.all & 0x80) != 0) {
|
||||
if (--this->actionDelay == 0)
|
||||
temp = TRUE;
|
||||
} else if ((this->frames.all & 0x80) != 0) {
|
||||
if (this->animIndex != 0xce)
|
||||
gPlayerState.field_0x8 = 0x2ce;
|
||||
else
|
||||
temp = TRUE;
|
||||
}
|
||||
|
||||
if (temp == FALSE)
|
||||
return;
|
||||
|
||||
this->field_0x42 = 0;
|
||||
this->hurtBlinkTime = 0x20;
|
||||
this->spritePriority.b1 = 1;
|
||||
this->spriteSettings.b.draw = FALSE;
|
||||
gPlayerState.flags.all &= ~(0x4);
|
||||
sub_08079458();
|
||||
}
|
||||
|
||||
void sub_08071380(Entity *this) {
|
||||
gPlayerState.field_0xa8 = 0xe;
|
||||
gUnk_0811BA9C[this->previousActionFlag](this);
|
||||
|
||||
if ((this->previousActionFlag == 7) || (this->previousActionFlag < 3))
|
||||
return;
|
||||
|
||||
if ((gPlayerState.flags.all & 0x20) == 0)
|
||||
return;
|
||||
|
||||
if ((gUnk_03000FF0.newKeys & 0x102) == 0)
|
||||
return;
|
||||
|
||||
if (CheckIsDungeon() || gArea.field_0x17 == 3) {
|
||||
this->previousActionFlag = 7;
|
||||
this->actionDelay = 30;
|
||||
DoFade(7, 16);
|
||||
PlaySFX(0xf8);
|
||||
} else {
|
||||
sub_0804ACF8();
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08071400(Entity* this) {
|
||||
u16 x;
|
||||
u16 y;
|
||||
|
||||
this->flags &= ~(0x80);
|
||||
this->field_0x42 = 0;
|
||||
|
||||
x = gArea.field_0x12;
|
||||
y = gArea.field_0x14;
|
||||
|
||||
if ((this->x.HALF.HI != x) || (this->y.HALF.HI != y)) {
|
||||
this->direction = sub_080045D4(this->x.HALF.HI, this->y.HALF.HI, gArea.field_0x12, gArea.field_0x14);
|
||||
this->nonPlanarMovement = 0x100;
|
||||
sub_08079E08();
|
||||
}
|
||||
|
||||
sub_08073904(this);
|
||||
UpdateAnimationSingleFrame(this);
|
||||
|
||||
if (gPlayerState.jumpStatus == 0) {
|
||||
gPlayerState.flags.all |= 0x20;
|
||||
this->previousActionFlag = 1;
|
||||
this->animationState = 4;
|
||||
this->spriteSettings.b.flipX = FALSE;
|
||||
if (gArea.field_0x17 == 4) {
|
||||
gPlayerState.field_0x8 = 0x52c;
|
||||
}
|
||||
}
|
||||
|
||||
this->actionDelay = 8;
|
||||
|
||||
if (gArea.field_0x17 != 3) {
|
||||
this->spritePriority.b0 = 3;
|
||||
}
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
#include "global.h"
|
||||
#include "entity.h"
|
||||
#include "player.h"
|
||||
#include "functions.h"
|
||||
|
||||
extern void (*gUnk_0811B9E0[])(Entity*);
|
||||
|
||||
extern BoundingBox gUnk_08114F88;
|
||||
|
||||
// inject
|
||||
void sub_08070680(Entity* this) {
|
||||
gUnk_0811B9E0[this->action](this);
|
||||
}
|
||||
|
||||
void sub_08070698(Entity* this) {
|
||||
u32 uVar1;
|
||||
int iVar2;
|
||||
Entity* ent;
|
||||
|
||||
gPlayerState.field_0x0[0] = 0xff;
|
||||
gPlayerState.field_0x16[0] = gPlayerEntity.x.HALF.HI;
|
||||
gPlayerState.field_0x16[1] = gPlayerEntity.y.HALF.HI;
|
||||
this->flags = this->flags | 0x80;
|
||||
this->spritePriority.b0 = 0xc;
|
||||
this->spritePriority.b1 = 1;
|
||||
this->spriteSettings.b.shadow = 1;
|
||||
this->field_0x16 = 0x20;
|
||||
this->flags2 = 8;
|
||||
this->damageType = 0x79;
|
||||
this->boundingBox = &gUnk_08114F88;
|
||||
this->spriteIndex = 1;
|
||||
gPlayerState.field_0x8 = 0x100;
|
||||
sub_0806FDA0(this);
|
||||
sub_080AE008(this, 1, 2);
|
||||
InitAnimationForceUpdate(this, 2);
|
||||
if (this->collisionLayer == 0) {
|
||||
sub_08016A30(this);
|
||||
}
|
||||
uVar1 = IsItemEquipped(0x10);
|
||||
if (uVar1 != 2) {
|
||||
sub_08077728();
|
||||
}
|
||||
sub_0807A108();
|
||||
sub_0807AEE4();
|
||||
iVar2 = sub_08078EFC();
|
||||
if (iVar2 == 0) {
|
||||
sub_0807921C();
|
||||
sub_0807A1B8();
|
||||
if (gPlayerState.swimState != 0) {
|
||||
gPlayerState.swimState = 1;
|
||||
sub_08079938();
|
||||
gPlayerState.field_0xa8 = 7;
|
||||
sub_0807ACCC(this);
|
||||
ent = FindEntityInListByForm(0x6, 0xf, 0x6, 0xb, 0x0);
|
||||
if (ent != NULL) {
|
||||
DeleteEntity(ent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue