mirror of https://github.com/zeldaret/tmc.git
Decompile businessScrubPrologue
This commit is contained in:
parent
fd9049f598
commit
bdb4aaef17
|
@ -1,747 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start BusinessScrubPrologue
|
||||
BusinessScrubPrologue: @ 0x08045B88
|
||||
push {lr}
|
||||
ldr r1, _08045B94 @ =gUnk_080D19FC
|
||||
bl EnemyFunctionHandler
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08045B94: .4byte gUnk_080D19FC
|
||||
|
||||
thumb_func_start sub_08045B98
|
||||
sub_08045B98: @ 0x08045B98
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
ldr r1, _08045BC4 @ =gUnk_080D1A14
|
||||
ldrb r0, [r4, #0xc]
|
||||
lsls r0, r0, #2
|
||||
adds r0, r0, r1
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl _call_via_r1
|
||||
adds r0, r4, #0
|
||||
bl sub_0800445C
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08045BC4: .4byte gUnk_080D1A14
|
||||
|
||||
thumb_func_start sub_08045BC8
|
||||
sub_08045BC8: @ 0x08045BC8
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
adds r0, #0x3f
|
||||
ldrb r0, [r0]
|
||||
cmp r0, #1
|
||||
bne _08045C2C
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x41
|
||||
ldrb r1, [r0]
|
||||
movs r2, #0x7f
|
||||
adds r0, r2, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0x42
|
||||
bne _08045C2C
|
||||
movs r1, #0
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
strb r1, [r4, #0xd]
|
||||
movs r0, #0x28
|
||||
strb r0, [r4, #0xe]
|
||||
ldrb r1, [r4, #0x10]
|
||||
adds r0, r2, #0
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
bl sub_08046030
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
movs r2, #0
|
||||
bl CreateFx
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08045C16
|
||||
ldrh r0, [r1, #0x36]
|
||||
subs r0, #8
|
||||
strh r0, [r1, #0x36]
|
||||
_08045C16:
|
||||
ldr r0, _08045C30 @ =gPlayerState
|
||||
adds r0, #0x27
|
||||
movs r1, #0xff
|
||||
strb r1, [r0]
|
||||
ldr r0, _08045C34 @ =0x000001BB
|
||||
bl EnqueueSFX
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl SetDefaultPriority
|
||||
_08045C2C:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08045C30: .4byte gPlayerState
|
||||
_08045C34: .4byte 0x000001BB
|
||||
|
||||
thumb_func_start nullsub_174
|
||||
nullsub_174: @ 0x08045C38
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08045C3C
|
||||
sub_08045C3C: @ 0x08045C3C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #0
|
||||
strb r0, [r4, #0xf]
|
||||
ldrh r1, [r4, #0x2e]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x78
|
||||
movs r2, #0
|
||||
strh r1, [r0]
|
||||
ldrh r0, [r4, #0x32]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x7a
|
||||
strh r0, [r1]
|
||||
strb r2, [r4, #0x14]
|
||||
movs r0, #0x10
|
||||
strb r0, [r4, #0x15]
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x78
|
||||
strb r0, [r4, #0xe]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
subs r0, #0xb1
|
||||
ands r0, r1
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_08046030
|
||||
adds r0, r4, #0
|
||||
bl sub_08095C48
|
||||
ldr r1, _08045CA0 @ =script_BusinessScrubIntro
|
||||
adds r0, r4, #0
|
||||
bl StartCutscene
|
||||
adds r0, r4, #0
|
||||
bl sub_0807DD50
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08045CA0: .4byte script_BusinessScrubIntro
|
||||
|
||||
thumb_func_start sub_08045CA4
|
||||
sub_08045CA4: @ 0x08045CA4
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r0, [r4, #0xe]
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _08045CC0
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
b _08045CD8
|
||||
_08045CC0:
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_08045F54
|
||||
cmp r0, #0
|
||||
beq _08045CD8
|
||||
adds r0, r4, #0
|
||||
bl sub_08045FF0
|
||||
strb r5, [r4, #0xd]
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xf]
|
||||
_08045CD8:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start nullsub_24
|
||||
nullsub_24: @ 0x08045CDC
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08045CE0
|
||||
sub_08045CE0: @ 0x08045CE0
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
bl GetNextFrame
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #4
|
||||
bls _08045CF0
|
||||
b _08045DF8
|
||||
_08045CF0:
|
||||
lsls r0, r0, #2
|
||||
ldr r1, _08045CFC @ =_08045D00
|
||||
adds r0, r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_08045CFC: .4byte _08045D00
|
||||
_08045D00: @ jump table
|
||||
.4byte _08045D14 @ case 0
|
||||
.4byte _08045D36 @ case 1
|
||||
.4byte _08045D60 @ case 2
|
||||
.4byte _08045D9A @ case 3
|
||||
.4byte _08045DBC @ case 4
|
||||
_08045D14:
|
||||
movs r6, #1
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08045DF8
|
||||
strb r6, [r4, #0xd]
|
||||
movs r0, #0x3c
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x10
|
||||
strb r0, [r4, #0xf]
|
||||
adds r0, r4, #0
|
||||
bl sub_08045F98
|
||||
b _08045DB2
|
||||
_08045D36:
|
||||
movs r6, #1
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r1, r0, #0x18
|
||||
cmp r1, #0
|
||||
bne _08045DF8
|
||||
movs r0, #2
|
||||
strb r0, [r4, #0xd]
|
||||
movs r0, #0x20
|
||||
strb r0, [r4, #0xe]
|
||||
strb r1, [r4, #0xf]
|
||||
adds r0, r4, #0
|
||||
bl sub_08045F98
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl sub_08046030
|
||||
b _08045DF8
|
||||
_08045D60:
|
||||
movs r6, #1
|
||||
adds r0, r4, #0
|
||||
bl sub_0804604C
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x5a
|
||||
ldrb r1, [r5]
|
||||
adds r0, r6, #0
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08045DF8
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
movs r2, #0
|
||||
bl CreateProjectileWithParent
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08045DF8
|
||||
str r4, [r1, #0x50]
|
||||
ldrb r0, [r4, #0x15]
|
||||
strb r0, [r1, #0x15]
|
||||
ldrb r1, [r5]
|
||||
movs r0, #0xfe
|
||||
ands r0, r1
|
||||
strb r0, [r5]
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xd]
|
||||
b _08045DF8
|
||||
_08045D9A:
|
||||
movs r6, #2
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08045DF8
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xd]
|
||||
movs r0, #0x50
|
||||
strb r0, [r4, #0xe]
|
||||
_08045DB2:
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_08046030
|
||||
b _08045DF8
|
||||
_08045DBC:
|
||||
movs r6, #2
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08045DF8
|
||||
adds r0, r4, #0
|
||||
movs r1, #0
|
||||
bl sub_08045F54
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
beq _08045DEC
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
movs r0, #0x3c
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x10
|
||||
strb r0, [r4, #0xf]
|
||||
adds r0, r4, #0
|
||||
bl sub_08045F98
|
||||
b _08045DF8
|
||||
_08045DEC:
|
||||
adds r0, r4, #0
|
||||
bl sub_08045FA0
|
||||
movs r0, #0x50
|
||||
strb r0, [r4, #0xe]
|
||||
strb r5, [r4, #0xf]
|
||||
_08045DF8:
|
||||
adds r0, r4, #0
|
||||
adds r1, r6, #0
|
||||
bl sub_08045F54
|
||||
adds r5, r0, #0
|
||||
cmp r5, #0
|
||||
bne _08045E12
|
||||
adds r0, r4, #0
|
||||
bl sub_08045FA0
|
||||
strb r5, [r4, #0xd]
|
||||
strb r5, [r4, #0xe]
|
||||
strb r5, [r4, #0xf]
|
||||
_08045E12:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_08045E14
|
||||
sub_08045E14: @ 0x08045E14
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r0, _08045E2C @ =gPlayerState
|
||||
adds r0, #0x27
|
||||
movs r1, #0xff
|
||||
strb r1, [r0]
|
||||
ldrb r0, [r4, #0xd]
|
||||
cmp r0, #0
|
||||
beq _08045E30
|
||||
cmp r0, #1
|
||||
beq _08045E70
|
||||
b _08045EBA
|
||||
.align 2, 0
|
||||
_08045E2C: .4byte gPlayerState
|
||||
_08045E30:
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0
|
||||
bne _08045E6A
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08045EBA
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
adds r0, r4, #0
|
||||
bl sub_08045F98
|
||||
adds r0, r4, #0
|
||||
movs r1, #5
|
||||
bl sub_08046030
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
b _08045EBA
|
||||
_08045E6A:
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
b _08045EBA
|
||||
_08045E70:
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x5a
|
||||
ldrb r1, [r0]
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08045EBA
|
||||
movs r1, #0
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
strb r1, [r4, #0xd]
|
||||
adds r0, r4, #0
|
||||
bl sub_08046030
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x1c
|
||||
bl sub_0804A9FC
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _08045EBA
|
||||
adds r3, r2, #0
|
||||
adds r3, #0x29
|
||||
ldrb r1, [r3]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
ldrh r0, [r2, #0x36]
|
||||
subs r0, #0xc
|
||||
strh r0, [r2, #0x36]
|
||||
adds r0, r2, #0
|
||||
movs r1, #2
|
||||
bl SetDefaultPriority
|
||||
_08045EBA:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r4, #0
|
||||
bl sub_0800445C
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08045EC8
|
||||
sub_08045EC8: @ 0x08045EC8
|
||||
push {lr}
|
||||
movs r1, #0
|
||||
bl sub_0807DD94
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08045ED4
|
||||
sub_08045ED4: @ 0x08045ED4
|
||||
push {lr}
|
||||
bl sub_08045FA0
|
||||
pop {pc}
|
||||
|
||||
thumb_func_start sub_08045EDC
|
||||
sub_08045EDC: @ 0x08045EDC
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xd]
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
bne _08045F00
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
movs r0, #0x20
|
||||
strb r0, [r4, #0xe]
|
||||
strb r1, [r4, #0xf]
|
||||
adds r0, r4, #0
|
||||
bl sub_08045F98
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
bl sub_08046030
|
||||
_08045F00:
|
||||
adds r0, r4, #0
|
||||
bl GetNextFrame
|
||||
adds r0, r4, #0
|
||||
bl sub_0804604C
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x5a
|
||||
ldrb r1, [r3]
|
||||
movs r2, #1
|
||||
ands r2, r1
|
||||
cmp r2, #0
|
||||
beq _08045F38
|
||||
movs r0, #0xfe
|
||||
ands r0, r1
|
||||
strb r0, [r3]
|
||||
adds r0, r4, #0
|
||||
adds r0, #0x84
|
||||
ldr r1, [r0]
|
||||
adds r0, r4, #0
|
||||
bl sub_080954AC
|
||||
ldr r0, _08045F34 @ =0x0000018D
|
||||
bl EnqueueSFX
|
||||
b _08045F4E
|
||||
.align 2, 0
|
||||
_08045F34: .4byte 0x0000018D
|
||||
_08045F38:
|
||||
movs r0, #0x80
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08045F4E
|
||||
movs r0, #5
|
||||
strb r0, [r4, #0xc]
|
||||
strb r2, [r4, #0xd]
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_08046030
|
||||
_08045F4E:
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start nullsub_25
|
||||
nullsub_25: @ 0x08045F50
|
||||
bx lr
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08045F54
|
||||
sub_08045F54: @ 0x08045F54
|
||||
push {r4, r5, r6, lr}
|
||||
adds r6, r0, #0
|
||||
adds r5, r1, #0
|
||||
movs r0, #1
|
||||
bl sub_08049DF4
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08045F90
|
||||
adds r0, r6, #0
|
||||
adds r1, r4, #0
|
||||
movs r2, #0x20
|
||||
movs r3, #0x20
|
||||
bl EntityInRectRadius
|
||||
cmp r0, #0
|
||||
bne _08045F90
|
||||
cmp r5, #2
|
||||
beq _08045F94
|
||||
movs r3, #0x50
|
||||
cmp r5, #0
|
||||
beq _08045F82
|
||||
movs r3, #0x58
|
||||
_08045F82:
|
||||
adds r0, r6, #0
|
||||
adds r1, r4, #0
|
||||
adds r2, r3, #0
|
||||
bl EntityInRectRadius
|
||||
cmp r0, #0
|
||||
bne _08045F94
|
||||
_08045F90:
|
||||
movs r0, #0
|
||||
b _08045F96
|
||||
_08045F94:
|
||||
movs r0, #1
|
||||
_08045F96:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_08045F98
|
||||
sub_08045F98: @ 0x08045F98
|
||||
movs r1, #0x10
|
||||
strb r1, [r0, #0x15]
|
||||
movs r0, #1
|
||||
bx lr
|
||||
|
||||
thumb_func_start sub_08045FA0
|
||||
sub_08045FA0: @ 0x08045FA0
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
movs r0, #1
|
||||
strb r0, [r2, #0xc]
|
||||
ldrb r1, [r2, #0x10]
|
||||
movs r0, #0x7f
|
||||
ands r0, r1
|
||||
strb r0, [r2, #0x10]
|
||||
ldrb r1, [r2, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r2, #0x18]
|
||||
adds r3, r2, #0
|
||||
adds r3, #0x29
|
||||
ldrb r1, [r3]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
strb r0, [r3]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x78
|
||||
ldrh r0, [r0]
|
||||
movs r1, #0
|
||||
strh r0, [r2, #0x2e]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x7a
|
||||
ldrh r0, [r0]
|
||||
strh r0, [r2, #0x32]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x62
|
||||
strb r1, [r0]
|
||||
adds r0, #1
|
||||
strb r1, [r0]
|
||||
adds r0, r2, #0
|
||||
movs r1, #0
|
||||
bl InitializeAnimation
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08045FF0
|
||||
sub_08045FF0: @ 0x08045FF0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x10]
|
||||
movs r0, #0x80
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x10]
|
||||
ldrb r1, [r4, #0x18]
|
||||
movs r0, #4
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x18]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #0x39
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
adds r0, r4, #0
|
||||
bl sub_08045F98
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
bl sub_08046030
|
||||
pop {r4, pc}
|
||||
|
||||
thumb_func_start sub_08046030
|
||||
sub_08046030: @ 0x08046030
|
||||
push {lr}
|
||||
adds r3, r1, #0
|
||||
ldrb r1, [r0, #0x15]
|
||||
lsrs r1, r1, #3
|
||||
ldr r2, _08046048 @ =gUnk_080D1A38
|
||||
adds r3, r3, r2
|
||||
ldrb r2, [r3]
|
||||
orrs r1, r2
|
||||
bl InitializeAnimation
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08046048: .4byte gUnk_080D1A38
|
||||
|
||||
thumb_func_start sub_0804604C
|
||||
sub_0804604C: @ 0x0804604C
|
||||
push {lr}
|
||||
adds r2, r0, #0
|
||||
ldrb r0, [r2, #0xe]
|
||||
cmp r0, #0
|
||||
beq _08046070
|
||||
subs r0, #1
|
||||
strb r0, [r2, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0xf
|
||||
bhi _08046070
|
||||
ldr r1, _08046074 @ =gUnk_080D1A3E
|
||||
ldrb r0, [r2, #0xe]
|
||||
adds r0, r0, r1
|
||||
ldrb r1, [r0]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x63
|
||||
strb r1, [r0]
|
||||
_08046070:
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08046074: .4byte gUnk_080D1A3E
|
||||
|
||||
thumb_func_start sub_08046078
|
||||
sub_08046078: @ 0x08046078
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r7, r0, #0
|
||||
ldr r0, _08046114 @ =gPlayerState
|
||||
adds r0, #0x27
|
||||
movs r1, #0
|
||||
strb r1, [r0]
|
||||
ldr r4, _08046118 @ =gUnk_080D1A4E
|
||||
ldr r6, _0804611C @ =gRoomControls
|
||||
movs r5, #4
|
||||
_0804608A:
|
||||
adds r0, r7, #0
|
||||
movs r1, #2
|
||||
movs r2, #0x40
|
||||
bl CreateFx
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _080460AE
|
||||
ldrh r0, [r4]
|
||||
ldrh r2, [r6, #6]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1, #0x2e]
|
||||
adds r4, #2
|
||||
ldrh r0, [r4]
|
||||
ldrh r2, [r6, #8]
|
||||
adds r0, r0, r2
|
||||
strh r0, [r1, #0x32]
|
||||
adds r4, #2
|
||||
_080460AE:
|
||||
subs r5, #1
|
||||
cmp r5, #0
|
||||
bge _0804608A
|
||||
movs r0, #0xb7
|
||||
lsls r0, r0, #1
|
||||
bl EnqueueSFX
|
||||
ldr r0, _08046120 @ =0x000007A2
|
||||
movs r1, #1
|
||||
bl sub_0807BA8C
|
||||
ldr r0, _08046124 @ =0x000007A3
|
||||
movs r1, #1
|
||||
bl sub_0807BA8C
|
||||
ldr r0, _08046128 @ =0x000007A5
|
||||
movs r1, #1
|
||||
bl sub_0807BA8C
|
||||
ldr r0, _0804612C @ =0x000007A6
|
||||
movs r1, #1
|
||||
bl sub_0807BA8C
|
||||
ldr r0, _08046130 @ =0x000007A7
|
||||
movs r1, #1
|
||||
bl sub_0807BA8C
|
||||
adds r0, r7, #0
|
||||
movs r1, #0x43
|
||||
movs r2, #0x40
|
||||
bl CreateFx
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08046102
|
||||
adds r0, r7, #0
|
||||
bl CopyPosition
|
||||
movs r0, #0xc2
|
||||
lsls r0, r0, #1
|
||||
bl EnqueueSFX
|
||||
_08046102:
|
||||
ldr r1, [r7, #0x54]
|
||||
cmp r1, #0
|
||||
beq _0804610C
|
||||
movs r0, #0xff
|
||||
strb r0, [r1, #0xc]
|
||||
_0804610C:
|
||||
adds r0, r7, #0
|
||||
bl sub_0804AA1C
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
.align 2, 0
|
||||
_08046114: .4byte gPlayerState
|
||||
_08046118: .4byte gUnk_080D1A4E
|
||||
_0804611C: .4byte gRoomControls
|
||||
_08046120: .4byte 0x000007A2
|
||||
_08046124: .4byte 0x000007A3
|
||||
_08046128: .4byte 0x000007A5
|
||||
_0804612C: .4byte 0x000007A6
|
||||
_08046130: .4byte 0x000007A7
|
|
@ -28557,21 +28557,6 @@
|
|||
"size": 11,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "businessScrubPrologue/gUnk_080D1A38.bin",
|
||||
"start": 858680,
|
||||
"size": 6
|
||||
},
|
||||
{
|
||||
"path": "businessScrubPrologue/gUnk_080D1A3E.bin",
|
||||
"start": 858686,
|
||||
"size": 16
|
||||
},
|
||||
{
|
||||
"path": "businessScrubPrologue/gUnk_080D1A4E.bin",
|
||||
"start": 858702,
|
||||
"size": 22
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_GyorgMale_0.bin",
|
||||
"start": 859248,
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_080D19FC:: @ 080D19FC
|
||||
.4byte sub_08045B98
|
||||
.4byte sub_08045BC8
|
||||
.4byte sub_08001324
|
||||
.4byte sub_0804A7D4
|
||||
.4byte sub_08001242
|
||||
.4byte nullsub_174
|
||||
|
||||
gUnk_080D1A14:: @ 080D1A14
|
||||
.4byte sub_08045C3C
|
||||
.4byte sub_08045CA4
|
||||
.4byte nullsub_24
|
||||
.4byte sub_08045CE0
|
||||
.4byte sub_08045E14
|
||||
.4byte sub_08045EC8
|
||||
.4byte sub_08045ED4
|
||||
.4byte sub_08045EDC
|
||||
.4byte nullsub_25
|
||||
|
||||
gUnk_080D1A38:: @ 080D1A38
|
||||
.incbin "businessScrubPrologue/gUnk_080D1A38.bin"
|
||||
|
||||
gUnk_080D1A3E:: @ 080D1A3E
|
||||
.incbin "businessScrubPrologue/gUnk_080D1A3E.bin"
|
||||
|
||||
gUnk_080D1A4E:: @ 080D1A4E
|
||||
.incbin "businessScrubPrologue/gUnk_080D1A4E.bin"
|
|
@ -415,7 +415,7 @@ SECTIONS {
|
|||
src/enemy/fireballGuy.o(.text);
|
||||
src/enemy/miniFireballGuy.o(.text);
|
||||
src/enemy/vaatiTransfiguredEye.o(.text);
|
||||
asm/enemy/businessScrubPrologue.o(.text);
|
||||
src/enemy/businessScrubPrologue.o(.text);
|
||||
src/enemy/gyorgFemale.o(.text);
|
||||
src/enemy/gyorgMale.o(.text);
|
||||
src/enemy/curtain.o(.text);
|
||||
|
@ -1099,7 +1099,7 @@ SECTIONS {
|
|||
data/const/enemy/miniFireballGuy.o(.rodata);
|
||||
src/enemy/vaatiTransfiguredEye.o(.rodata);
|
||||
data/animations/enemy/vaatiTransfiguredEye.o(.rodata);
|
||||
data/const/enemy/businessScrubPrologue.o(.rodata);
|
||||
src/enemy/businessScrubPrologue.o(.rodata);
|
||||
src/enemy/gyorgFemale.o(.rodata);
|
||||
src/enemy/gyorgMale.o(.rodata);
|
||||
data/animations/enemy/gyorgMale.o(.rodata);
|
||||
|
|
|
@ -0,0 +1,349 @@
|
|||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
#include "enemy.h"
|
||||
#include "functions.h"
|
||||
|
||||
typedef struct {
|
||||
Entity base;
|
||||
u8 filler[0x10];
|
||||
u16 unk_78;
|
||||
u16 unk_7a;
|
||||
u8 unk_7c;
|
||||
u8 unk_7d;
|
||||
u8 unk_7e;
|
||||
u8 unk_7f;
|
||||
u32 filler2;
|
||||
u32 unk_84;
|
||||
} BusinessScrubPrologueEntity;
|
||||
|
||||
extern u16 script_BusinessScrubIntro[];
|
||||
|
||||
void (*const gUnk_080D19FC[])(Entity*);
|
||||
void (*const gUnk_080D1A14[])(BusinessScrubPrologueEntity*);
|
||||
const u8 gUnk_080D1A38[];
|
||||
const s8 gUnk_080D1A3E[];
|
||||
const u16 gUnk_080D1A4E[];
|
||||
|
||||
extern void sub_08095C48(Entity* this);
|
||||
extern void sub_080954AC(Entity*, u32);
|
||||
|
||||
void sub_08046030(BusinessScrubPrologueEntity*, u32);
|
||||
bool32 sub_08045F54(BusinessScrubPrologueEntity*, u32);
|
||||
void sub_08045FF0(BusinessScrubPrologueEntity*);
|
||||
bool32 sub_08045F98(BusinessScrubPrologueEntity*);
|
||||
void sub_0804604C(BusinessScrubPrologueEntity*);
|
||||
void sub_08045FA0(BusinessScrubPrologueEntity*);
|
||||
|
||||
void BusinessScrubPrologue(Entity* this) {
|
||||
EnemyFunctionHandler(this, gUnk_080D19FC);
|
||||
}
|
||||
|
||||
void sub_08045B98(BusinessScrubPrologueEntity* this) {
|
||||
super->spriteSettings.draw = 1;
|
||||
gUnk_080D1A14[super->action](this);
|
||||
sub_0800445C(super);
|
||||
}
|
||||
|
||||
void sub_08045BC8(BusinessScrubPrologueEntity* this) {
|
||||
Entity* ent;
|
||||
if (super->hitType == 1) {
|
||||
if ((super->bitfield & 0x7f) == 0x42) {
|
||||
super->action = 4;
|
||||
super->subAction = 0;
|
||||
super->actionDelay = 0x28;
|
||||
super->flags &= ~ENT_COLLIDE;
|
||||
sub_08046030(this, 4);
|
||||
ent = CreateFx(super, FX_BUSH, 0);
|
||||
if (ent) {
|
||||
ent->z.HALF.HI -= 8;
|
||||
}
|
||||
|
||||
gPlayerState.field_0x27[0] = 0xff;
|
||||
EnqueueSFX(SFX_EM_DEKUSCRUB_HIT);
|
||||
SetDefaultPriority(super, PRIO_MESSAGE);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_174(BusinessScrubPrologueEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08045C3C(BusinessScrubPrologueEntity* this) {
|
||||
super->field_0xf = 0;
|
||||
this->unk_78 = super->x.HALF.HI;
|
||||
this->unk_7a = super->y.HALF.HI;
|
||||
super->animationState = 0;
|
||||
super->direction = 0x10;
|
||||
super->action = 5;
|
||||
super->actionDelay = 0x78;
|
||||
super->spritePriority.b1 = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
sub_08046030(this, 0);
|
||||
sub_08095C48(super);
|
||||
StartCutscene(super, script_BusinessScrubIntro);
|
||||
sub_0807DD50(super);
|
||||
}
|
||||
|
||||
void sub_08045CA4(BusinessScrubPrologueEntity* this) {
|
||||
super->spriteSettings.draw = 0;
|
||||
if (super->actionDelay) {
|
||||
super->actionDelay--;
|
||||
} else if (sub_08045F54(this, 0)) {
|
||||
sub_08045FF0(this);
|
||||
super->subAction = 0;
|
||||
super->field_0xf = 1;
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_24(BusinessScrubPrologueEntity* this) {
|
||||
}
|
||||
|
||||
void sub_08045CE0(BusinessScrubPrologueEntity* this) {
|
||||
Entity* ent;
|
||||
u32 r6;
|
||||
GetNextFrame(super);
|
||||
|
||||
switch (super->subAction) {
|
||||
case 0:
|
||||
r6 = 1;
|
||||
if (super->frame & 0x80) {
|
||||
super->subAction = 1;
|
||||
super->actionDelay = 0x3c;
|
||||
super->field_0xf = 0x10;
|
||||
sub_08045F98(this);
|
||||
sub_08046030(this, 1);
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
r6 = 1;
|
||||
if (--super->actionDelay == 0) {
|
||||
super->subAction = 2;
|
||||
super->actionDelay = 0x20;
|
||||
super->field_0xf = 0;
|
||||
sub_08045F98(this);
|
||||
sub_08046030(this, 2);
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
r6 = 1;
|
||||
sub_0804604C(this);
|
||||
if (super->frame & 1) {
|
||||
ent = CreateProjectileWithParent(super, DEKU_SEED_PROJECTILE, 0);
|
||||
if (ent) {
|
||||
ent->parent = super;
|
||||
ent->direction = super->direction;
|
||||
super->frame &= 0xfe;
|
||||
super->subAction = 3;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
r6 = 2;
|
||||
if (super->frame & 0x80) {
|
||||
super->subAction = 4;
|
||||
super->actionDelay = 0x50;
|
||||
sub_08046030(this, 1);
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
r6 = 2;
|
||||
if (--super->actionDelay == 0) {
|
||||
if (sub_08045F54(this, 0)) {
|
||||
super->subAction = 1;
|
||||
super->actionDelay = 0x3c;
|
||||
super->field_0xf = 0x10;
|
||||
sub_08045F98(this);
|
||||
} else {
|
||||
sub_08045FA0(this);
|
||||
super->actionDelay = 0x50;
|
||||
super->field_0xf = 0;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (sub_08045F54(this, r6) == 0) {
|
||||
sub_08045FA0(this);
|
||||
super->subAction = 0;
|
||||
super->actionDelay = 0;
|
||||
super->field_0xf = 0;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08045E14(BusinessScrubPrologueEntity* this) {
|
||||
Entity* ent;
|
||||
gPlayerState.field_0x27[0] = 0xff;
|
||||
switch (super->subAction) {
|
||||
case 0:
|
||||
if (super->actionDelay == 0) {
|
||||
if (super->frame & 0x80) {
|
||||
super->subAction = 1;
|
||||
sub_08045F98(this);
|
||||
sub_08046030(this, 5);
|
||||
super->spritePriority.b1 = 1;
|
||||
}
|
||||
} else {
|
||||
super->actionDelay--;
|
||||
}
|
||||
break;
|
||||
case 1:
|
||||
if (super->frame & 0x80) {
|
||||
super->action = 5;
|
||||
super->subAction = 0;
|
||||
sub_08046030(this, 0);
|
||||
ent = sub_0804A9FC(super, 0x1c);
|
||||
if (ent) {
|
||||
ent->spritePriority.b0 = 3;
|
||||
ent->z.HALF.HI -= 0xc;
|
||||
SetDefaultPriority(ent, PRIO_MESSAGE);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
GetNextFrame(super);
|
||||
sub_0800445C(super);
|
||||
}
|
||||
|
||||
void sub_08045EC8(BusinessScrubPrologueEntity* this) {
|
||||
sub_0807DD94(super, 0);
|
||||
}
|
||||
|
||||
void sub_08045ED4(BusinessScrubPrologueEntity* this) {
|
||||
sub_08045FA0(this);
|
||||
}
|
||||
|
||||
void sub_08045EDC(BusinessScrubPrologueEntity* this) {
|
||||
if (super->subAction == 0) {
|
||||
super->subAction++;
|
||||
super->actionDelay = 0x20;
|
||||
super->field_0xf = 0;
|
||||
sub_08045F98(this);
|
||||
sub_08046030(this, 2);
|
||||
}
|
||||
|
||||
GetNextFrame(super);
|
||||
sub_0804604C(this);
|
||||
if (super->frame & 1) {
|
||||
super->frame &= 0xfe;
|
||||
sub_080954AC(super, this->unk_84);
|
||||
EnqueueSFX(SFX_18D);
|
||||
} else if (super->frame & 0x80) {
|
||||
super->action = 5;
|
||||
super->subAction = 0;
|
||||
sub_08046030(this, 1);
|
||||
}
|
||||
}
|
||||
|
||||
void nullsub_25(BusinessScrubPrologueEntity* this) {
|
||||
}
|
||||
|
||||
bool32 sub_08045F54(BusinessScrubPrologueEntity* this, u32 arg2) {
|
||||
Entity* ent = sub_08049DF4(1);
|
||||
u32 r3;
|
||||
if (ent == NULL)
|
||||
return 0;
|
||||
|
||||
if (EntityInRectRadius(super, ent, 0x20, 0x20))
|
||||
return 0;
|
||||
if (arg2 == 2)
|
||||
return 1;
|
||||
r3 = 0x50;
|
||||
if (arg2) {
|
||||
r3 = 0x58;
|
||||
}
|
||||
|
||||
if (EntityInRectRadius(super, ent, r3, r3))
|
||||
return 1;
|
||||
return 0;
|
||||
}
|
||||
|
||||
bool32 sub_08045F98(BusinessScrubPrologueEntity* this) {
|
||||
super->direction = 0x10;
|
||||
return 1;
|
||||
}
|
||||
|
||||
void sub_08045FA0(BusinessScrubPrologueEntity* this) {
|
||||
super->action = 1;
|
||||
COLLISION_OFF(super);
|
||||
super->spriteSettings.draw = 0;
|
||||
super->spritePriority.b1 = 0;
|
||||
super->x.HALF.HI = this->unk_78;
|
||||
super->y.HALF.HI = this->unk_7a;
|
||||
super->spriteOffsetX = 0;
|
||||
super->spriteOffsetY = 0;
|
||||
InitializeAnimation(super, 0);
|
||||
}
|
||||
|
||||
void sub_08045FF0(BusinessScrubPrologueEntity* this) {
|
||||
super->action = 3;
|
||||
COLLISION_ON(super);
|
||||
super->spriteSettings.draw = 1;
|
||||
super->spritePriority.b1 = 1;
|
||||
sub_08045F98(this);
|
||||
sub_08046030(this, 1);
|
||||
}
|
||||
|
||||
void sub_08046030(BusinessScrubPrologueEntity* this, u32 arg2) {
|
||||
InitializeAnimation(super, (super->direction >> 3) | gUnk_080D1A38[arg2]);
|
||||
}
|
||||
|
||||
void sub_0804604C(BusinessScrubPrologueEntity* this) {
|
||||
if (super->actionDelay) {
|
||||
if (--super->actionDelay <= 0xf) {
|
||||
super->spriteOffsetY = gUnk_080D1A3E[super->actionDelay];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08046078(BusinessScrubPrologueEntity* this) {
|
||||
s32 index;
|
||||
Entity* ent;
|
||||
const u16* ptr;
|
||||
gPlayerState.field_0x27[0] = 0;
|
||||
ptr = gUnk_080D1A4E;
|
||||
for (index = 0; index <= 4; index++) {
|
||||
ent = CreateFx(super, FX_DEATH, 0x40);
|
||||
|
||||
if (ent) {
|
||||
ent->x.HALF.HI = gRoomControls.origin_x + *ptr;
|
||||
ptr++;
|
||||
ent->y.HALF.HI = gRoomControls.origin_y + *ptr;
|
||||
ptr++;
|
||||
}
|
||||
}
|
||||
|
||||
EnqueueSFX(SFX_16E);
|
||||
sub_0807BA8C(0x7a2, 1);
|
||||
sub_0807BA8C(0x7a3, 1);
|
||||
sub_0807BA8C(0x7a5, 1);
|
||||
sub_0807BA8C(0x7a6, 1);
|
||||
sub_0807BA8C(0x7a7, 1);
|
||||
|
||||
ent = CreateFx(super, FX_BIG_EXPLOSION2, 0x40);
|
||||
if (ent) {
|
||||
CopyPosition(super, ent);
|
||||
EnqueueSFX(SFX_184);
|
||||
}
|
||||
|
||||
if (super->child) {
|
||||
super->child->action = 0xff;
|
||||
}
|
||||
|
||||
sub_0804AA1C(super);
|
||||
}
|
||||
|
||||
void (*const gUnk_080D19FC[])(Entity*) = {
|
||||
(EntityActionPtr)sub_08045B98, (EntityActionPtr)sub_08045BC8, sub_08001324, sub_0804A7D4, sub_08001242,
|
||||
(EntityActionPtr)nullsub_174,
|
||||
};
|
||||
|
||||
void (*const gUnk_080D1A14[])(BusinessScrubPrologueEntity*) = {
|
||||
sub_08045C3C, sub_08045CA4, nullsub_24, sub_08045CE0, sub_08045E14,
|
||||
sub_08045EC8, sub_08045ED4, sub_08045EDC, nullsub_25,
|
||||
};
|
||||
|
||||
const u8 gUnk_080D1A38[] = { 0, 4, 8, 12, 16, 20 };
|
||||
|
||||
const s8 gUnk_080D1A3E[] = { 0, -1, -2, -3, -4, -5, -6, -7, -7, -6, -5, -4, -3, -2, -1, 0 };
|
||||
const u16 gUnk_080D1A4E[] = { 0x228, 0x1e8, 0x238, 0x1e8, 0x258, 0x1e8, 0x268, 0x1e8, 0x278, 0x1e8, 0 };
|
|
@ -647,7 +647,7 @@ void sub_0809545C(Object6AEntity* this, ScriptExecutionContext* ctx) {
|
|||
}
|
||||
}
|
||||
|
||||
void sub_080954AC(Object6AEntity* this) {
|
||||
void sub_080954AC(Object6AEntity* this, u32 arg2) {
|
||||
Entity* e = CreateObject(OBJECT_6A, 0x1A, 0);
|
||||
if (e != NULL) {
|
||||
CopyPosition(super, e);
|
||||
|
@ -997,12 +997,12 @@ void sub_08095C00(Object6AEntity* this) {
|
|||
}
|
||||
}
|
||||
|
||||
void sub_08095C48(Object6AEntity* this) {
|
||||
void sub_08095C48(Entity* this) {
|
||||
Entity* e = CreateObject(OBJECT_6A, 0x19, 0);
|
||||
if (e != NULL) {
|
||||
super->child = e;
|
||||
e->parent = super;
|
||||
CopyPosition(super, e);
|
||||
this->child = e;
|
||||
e->parent = this;
|
||||
CopyPosition(this, e);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue