mirror of https://github.com/zeldaret/tmc.git
Merge pull request #409 from hatal175/bigbarrel
This commit is contained in:
commit
108c4672eb
|
|
@ -1,907 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
|
||||
thumb_func_start BigBarrel
|
||||
BigBarrel: @ 0x08088A50
|
||||
push {lr}
|
||||
ldr r2, _08088A64 @ =gUnk_08120C34
|
||||
ldrb r1, [r0, #0xa]
|
||||
lsls r1, r1, #2
|
||||
adds r1, r1, r2
|
||||
ldr r1, [r1]
|
||||
bl _call_via_r1
|
||||
pop {pc}
|
||||
.align 2, 0
|
||||
_08088A64: .4byte gUnk_08120C34
|
||||
|
||||
thumb_func_start sub_08088A68
|
||||
sub_08088A68: @ 0x08088A68
|
||||
push {r4, r5, r6, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _08088AE4
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r0, [r4, #0x18]
|
||||
movs r2, #3
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r1, [r4, #0x11]
|
||||
movs r0, #0x10
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x11]
|
||||
movs r0, #0x17
|
||||
bl CheckGlobalFlag
|
||||
cmp r0, #0
|
||||
beq _08088AA0
|
||||
ldr r0, _08088A9C @ =gSave
|
||||
ldrb r0, [r0, #7]
|
||||
adds r0, #1
|
||||
b _08088AA4
|
||||
.align 2, 0
|
||||
_08088A9C: .4byte gSave
|
||||
_08088AA0:
|
||||
ldr r0, _08088AD8 @ =gSave
|
||||
ldrb r0, [r0, #7]
|
||||
_08088AA4:
|
||||
strb r0, [r4, #0x1e]
|
||||
adds r0, r4, #0
|
||||
bl sub_08088BE0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
ldr r2, _08088ADC @ =gRoomControls
|
||||
ldrh r1, [r2, #6]
|
||||
subs r0, r0, r1
|
||||
movs r3, #0x32
|
||||
ldrsh r1, [r4, r3]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r1, r1, r2
|
||||
movs r2, #0x80
|
||||
movs r3, #0x60
|
||||
bl CheckPlayerInRegion
|
||||
cmp r0, #0
|
||||
beq _08088B82
|
||||
ldr r0, _08088AE0 @ =gRoomVars
|
||||
ldr r1, [r0, #0x68]
|
||||
movs r2, #4
|
||||
orrs r1, r2
|
||||
str r1, [r0, #0x68]
|
||||
b _08088B82
|
||||
.align 2, 0
|
||||
_08088AD8: .4byte gSave
|
||||
_08088ADC: .4byte gRoomControls
|
||||
_08088AE0: .4byte gRoomVars
|
||||
_08088AE4:
|
||||
ldr r5, _08088B70 @ =gRoomVars
|
||||
ldr r1, [r5, #0x68]
|
||||
movs r6, #1
|
||||
adds r0, r1, #0
|
||||
ands r0, r6
|
||||
cmp r0, #0
|
||||
beq _08088B06
|
||||
movs r0, #2
|
||||
rsbs r0, r0, #0
|
||||
ands r1, r0
|
||||
str r1, [r5, #0x68]
|
||||
strb r6, [r4, #0xe]
|
||||
ldr r0, _08088B74 @ =gUnk_08120C1C
|
||||
str r0, [r4, #0x68]
|
||||
movs r0, #0x8a
|
||||
bl SoundReq
|
||||
_08088B06:
|
||||
ldr r1, [r5, #0x68]
|
||||
movs r0, #2
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08088B24
|
||||
movs r0, #3
|
||||
rsbs r0, r0, #0
|
||||
ands r1, r0
|
||||
str r1, [r5, #0x68]
|
||||
strb r6, [r4, #0xe]
|
||||
ldr r0, _08088B78 @ =gUnk_08120C25
|
||||
str r0, [r4, #0x68]
|
||||
movs r0, #0x89
|
||||
bl SoundReq
|
||||
_08088B24:
|
||||
ldr r1, [r5, #0x68]
|
||||
movs r0, #4
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08088B42
|
||||
movs r0, #5
|
||||
rsbs r0, r0, #0
|
||||
ands r1, r0
|
||||
str r1, [r5, #0x68]
|
||||
strb r6, [r4, #0xe]
|
||||
ldr r0, _08088B7C @ =gUnk_08120C2E
|
||||
str r0, [r4, #0x68]
|
||||
movs r0, #0x8a
|
||||
bl SoundReq
|
||||
_08088B42:
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0
|
||||
beq _08088B82
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r3, r0, #0x18
|
||||
cmp r3, #0
|
||||
bne _08088B82
|
||||
ldr r1, [r4, #0x68]
|
||||
ldrb r0, [r1]
|
||||
adds r2, r4, #0
|
||||
adds r2, #0x63
|
||||
strb r0, [r2]
|
||||
adds r1, #1
|
||||
ldrb r0, [r1]
|
||||
cmp r0, #0xff
|
||||
beq _08088B80
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
str r1, [r4, #0x68]
|
||||
b _08088B82
|
||||
.align 2, 0
|
||||
_08088B70: .4byte gRoomVars
|
||||
_08088B74: .4byte gUnk_08120C1C
|
||||
_08088B78: .4byte gUnk_08120C25
|
||||
_08088B7C: .4byte gUnk_08120C2E
|
||||
_08088B80:
|
||||
strb r3, [r2]
|
||||
_08088B82:
|
||||
adds r5, r4, #0
|
||||
adds r5, #0x29
|
||||
ldrb r1, [r5]
|
||||
movs r6, #8
|
||||
rsbs r6, r6, #0
|
||||
adds r0, r6, #0
|
||||
ands r0, r1
|
||||
movs r1, #1
|
||||
orrs r0, r1
|
||||
strb r0, [r5]
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r4, r1]
|
||||
subs r0, #0x50
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r4, r2]
|
||||
subs r1, #0x50
|
||||
movs r2, #0xa0
|
||||
movs r3, #0x30
|
||||
bl CheckPlayerProximity
|
||||
cmp r0, #0
|
||||
beq _08088BBA
|
||||
ldrb r0, [r5]
|
||||
adds r1, r6, #0
|
||||
ands r1, r0
|
||||
movs r0, #5
|
||||
orrs r1, r0
|
||||
strb r1, [r5]
|
||||
_08088BBA:
|
||||
movs r3, #0x2e
|
||||
ldrsh r0, [r4, r3]
|
||||
subs r0, #0x50
|
||||
movs r2, #0x32
|
||||
ldrsh r1, [r4, r2]
|
||||
adds r1, #0x30
|
||||
movs r2, #0xa0
|
||||
movs r3, #0x30
|
||||
bl CheckPlayerProximity
|
||||
cmp r0, #0
|
||||
beq _08088BDE
|
||||
ldrb r0, [r5]
|
||||
adds r1, r6, #0
|
||||
ands r1, r0
|
||||
movs r0, #5
|
||||
orrs r1, r0
|
||||
strb r1, [r5]
|
||||
_08088BDE:
|
||||
pop {r4, r5, r6, pc}
|
||||
|
||||
thumb_func_start sub_08088BE0
|
||||
sub_08088BE0: @ 0x08088BE0
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
movs r0, #0x15
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _08088C1C
|
||||
movs r3, #0x78
|
||||
rsbs r3, r3, #0
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
movs r2, #0
|
||||
bl sub_08088C78
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
movs r2, #0x15
|
||||
movs r3, #0
|
||||
bl sub_08088C78
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _08088C1C
|
||||
ldr r0, _08088C74 @ =gRoomControls
|
||||
ldrh r1, [r0, #6]
|
||||
adds r1, #0x48
|
||||
strh r1, [r2, #0x2e]
|
||||
ldrh r0, [r0, #8]
|
||||
adds r0, #0xc8
|
||||
strh r0, [r2, #0x32]
|
||||
_08088C1C:
|
||||
movs r0, #0x16
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _08088C58
|
||||
adds r0, r4, #0
|
||||
movs r1, #2
|
||||
movs r2, #1
|
||||
movs r3, #0x78
|
||||
bl sub_08088C78
|
||||
adds r0, r4, #0
|
||||
movs r1, #4
|
||||
movs r2, #0x16
|
||||
movs r3, #0
|
||||
bl sub_08088C78
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _08088C58
|
||||
ldr r0, _08088C74 @ =gRoomControls
|
||||
movs r3, #0xc4
|
||||
lsls r3, r3, #1
|
||||
adds r1, r3, #0
|
||||
ldrh r3, [r0, #6]
|
||||
adds r1, r1, r3
|
||||
strh r1, [r2, #0x2e]
|
||||
ldrh r0, [r0, #8]
|
||||
adds r0, #0xc8
|
||||
strh r0, [r2, #0x32]
|
||||
_08088C58:
|
||||
movs r3, #0x78
|
||||
rsbs r3, r3, #0
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl sub_08088C78
|
||||
adds r0, r4, #0
|
||||
movs r1, #1
|
||||
movs r2, #1
|
||||
movs r3, #0x78
|
||||
bl sub_08088C78
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08088C74: .4byte gRoomControls
|
||||
|
||||
thumb_func_start sub_08088C78
|
||||
sub_08088C78: @ 0x08088C78
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
adds r5, r3, #0
|
||||
movs r0, #0x25
|
||||
bl CreateObject
|
||||
adds r1, r0, #0
|
||||
cmp r1, #0
|
||||
beq _08088C96
|
||||
ldrh r0, [r4, #0x2e]
|
||||
adds r0, r0, r5
|
||||
strh r0, [r1, #0x2e]
|
||||
ldrh r0, [r4, #0x32]
|
||||
strh r0, [r1, #0x32]
|
||||
str r4, [r1, #0x50]
|
||||
_08088C96:
|
||||
adds r0, r1, #0
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08088C9C
|
||||
sub_08088C9C: @ 0x08088C9C
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldr r1, _08088CEC @ =gUnk_08120C48
|
||||
ldr r0, [r4, #0x50]
|
||||
adds r0, #0x29
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x1d
|
||||
lsrs r0, r0, #0x1d
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x29
|
||||
movs r1, #7
|
||||
ands r1, r0
|
||||
ldrb r2, [r3]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
orrs r0, r1
|
||||
strb r0, [r3]
|
||||
ldr r0, [r4, #0x50]
|
||||
adds r0, #0x63
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
lsrs r1, r0, #0x1f
|
||||
adds r0, r0, r1
|
||||
asrs r0, r0, #1
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x63
|
||||
strb r0, [r1]
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #1
|
||||
beq _08088D4C
|
||||
cmp r0, #1
|
||||
bgt _08088CF0
|
||||
cmp r0, #0
|
||||
beq _08088CFA
|
||||
b _08088DB0
|
||||
.align 2, 0
|
||||
_08088CEC: .4byte gUnk_08120C48
|
||||
_08088CF0:
|
||||
cmp r0, #2
|
||||
beq _08088D5A
|
||||
cmp r0, #3
|
||||
beq _08088D7A
|
||||
b _08088DB0
|
||||
_08088CFA:
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r2, [r4, #0xb]
|
||||
adds r0, r2, #4
|
||||
strb r0, [r4, #0x1e]
|
||||
ldrb r1, [r4, #0x11]
|
||||
movs r0, #0x10
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x11]
|
||||
lsls r2, r2, #0x18
|
||||
movs r0, #0x16
|
||||
cmp r2, #0
|
||||
bne _08088D28
|
||||
movs r0, #0x15
|
||||
_08088D28:
|
||||
strb r0, [r4, #0xf]
|
||||
ldrb r0, [r4, #0xf]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
beq _08088DB0
|
||||
ldr r1, _08088D48 @ =gUnk_08120C50
|
||||
ldrb r0, [r4, #0xb]
|
||||
adds r0, r0, r1
|
||||
ldrb r0, [r0]
|
||||
lsls r0, r0, #0x18
|
||||
asrs r0, r0, #0x18
|
||||
ldrh r1, [r4, #0x2e]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r4, #0x2e]
|
||||
b _08088DAC
|
||||
.align 2, 0
|
||||
_08088D48: .4byte gUnk_08120C50
|
||||
_08088D4C:
|
||||
ldrb r0, [r4, #0xf]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
beq _08088DB0
|
||||
movs r0, #2
|
||||
b _08088DAE
|
||||
_08088D5A:
|
||||
ldr r2, _08088D98 @ =gRoomVars
|
||||
ldr r1, [r2, #0x68]
|
||||
movs r0, #0x20
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08088DB0
|
||||
movs r0, #0x21
|
||||
rsbs r0, r0, #0
|
||||
ands r1, r0
|
||||
str r1, [r2, #0x68]
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xd]
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
_08088D7A:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08088DB0
|
||||
movs r0, #8
|
||||
strb r0, [r4, #0xe]
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldrb r0, [r4, #0xb]
|
||||
cmp r0, #0
|
||||
beq _08088D9C
|
||||
subs r0, r1, #2
|
||||
b _08088D9E
|
||||
.align 2, 0
|
||||
_08088D98: .4byte gRoomVars
|
||||
_08088D9C:
|
||||
adds r0, r1, #2
|
||||
_08088D9E:
|
||||
strh r0, [r4, #0x2e]
|
||||
ldrb r0, [r4, #0xd]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xd]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08088DB0
|
||||
_08088DAC:
|
||||
movs r0, #4
|
||||
_08088DAE:
|
||||
strb r0, [r4, #0xc]
|
||||
_08088DB0:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
|
||||
thumb_func_start sub_08088DB4
|
||||
sub_08088DB4: @ 0x08088DB4
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #1
|
||||
beq _08088E28
|
||||
cmp r0, #1
|
||||
bgt _08088DC8
|
||||
cmp r0, #0
|
||||
beq _08088DEC
|
||||
b _08088E50
|
||||
_08088DC8:
|
||||
cmp r0, #4
|
||||
bgt _08088E50
|
||||
ldr r0, _08088DE8 @ =gRoomVars
|
||||
ldr r0, [r0, #0x68]
|
||||
movs r1, #8
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _08088E6E
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08088E6E
|
||||
b _08088E3E
|
||||
.align 2, 0
|
||||
_08088DE8: .4byte gRoomVars
|
||||
_08088DEC:
|
||||
movs r2, #1
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x18]
|
||||
subs r0, #5
|
||||
ands r0, r1
|
||||
orrs r0, r2
|
||||
strb r0, [r4, #0x18]
|
||||
ldrb r0, [r4, #0xb]
|
||||
lsls r0, r0, #2
|
||||
adds r0, #6
|
||||
strb r0, [r4, #0x1e]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
movs r0, #2
|
||||
strb r0, [r1]
|
||||
adds r0, r4, #0
|
||||
movs r1, #3
|
||||
bl SetDefaultPriority
|
||||
ldrb r0, [r4, #0xb]
|
||||
movs r1, #0x16
|
||||
cmp r0, #0
|
||||
bne _08088E1E
|
||||
movs r1, #0x15
|
||||
_08088E1E:
|
||||
strb r1, [r4, #0xb]
|
||||
adds r0, r4, #0
|
||||
bl UpdateSpriteForCollisionLayer
|
||||
b _08088E6E
|
||||
_08088E28:
|
||||
ldrb r0, [r4, #0xb]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
beq _08088E6E
|
||||
ldrb r0, [r4, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0xa
|
||||
strb r0, [r4, #0xe]
|
||||
b _08088E6E
|
||||
_08088E3E:
|
||||
movs r0, #0x1e
|
||||
strb r0, [r4, #0xe]
|
||||
ldrb r0, [r4, #0x1e]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0x1e]
|
||||
ldrb r0, [r4, #0xc]
|
||||
adds r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
b _08088E6E
|
||||
_08088E50:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _08088E6E
|
||||
ldr r0, _08088E70 @ =gRoomVars
|
||||
ldr r1, [r0, #0x68]
|
||||
movs r2, #9
|
||||
rsbs r2, r2, #0
|
||||
ands r1, r2
|
||||
str r1, [r0, #0x68]
|
||||
adds r0, r4, #0
|
||||
bl DeleteEntity
|
||||
_08088E6E:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08088E70: .4byte gRoomVars
|
||||
|
||||
thumb_func_start sub_08088E74
|
||||
sub_08088E74: @ 0x08088E74
|
||||
push {r4, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #0
|
||||
bne _08088E94
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
adds r1, r4, #0
|
||||
adds r1, #0x38
|
||||
movs r0, #2
|
||||
strb r0, [r1]
|
||||
ldr r2, _08088EB0 @ =gRoomVars
|
||||
ldr r0, [r2, #0x68]
|
||||
movs r1, #8
|
||||
orrs r0, r1
|
||||
str r0, [r2, #0x68]
|
||||
_08088E94:
|
||||
adds r0, r4, #0
|
||||
bl sub_0806FB38
|
||||
cmp r0, #0
|
||||
beq _08088EB4
|
||||
ldr r0, _08088EB0 @ =gRoomVars
|
||||
ldr r1, [r0, #0x68]
|
||||
movs r2, #0x10
|
||||
orrs r1, r2
|
||||
str r1, [r0, #0x68]
|
||||
adds r0, r4, #0
|
||||
bl DeleteEntity
|
||||
b _08088F14
|
||||
.align 2, 0
|
||||
_08088EB0: .4byte gRoomVars
|
||||
_08088EB4:
|
||||
ldr r0, _08088F18 @ =gRoomTransition
|
||||
ldr r0, [r0]
|
||||
movs r1, #7
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
bne _08088F14
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x2a
|
||||
movs r2, #0
|
||||
movs r3, #0x1e
|
||||
bl CreateObjectWithParent
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08088F14
|
||||
ldrb r1, [r4, #0x11]
|
||||
movs r0, #0x10
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x11]
|
||||
ldrb r2, [r4, #0x19]
|
||||
movs r1, #0x3f
|
||||
adds r0, r1, #0
|
||||
ands r0, r2
|
||||
strb r0, [r4, #0x19]
|
||||
adds r3, r4, #0
|
||||
adds r3, #0x29
|
||||
ldrb r2, [r3]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r2
|
||||
strb r0, [r3]
|
||||
ldrb r0, [r4, #0x1b]
|
||||
ands r1, r0
|
||||
strb r1, [r4, #0x1b]
|
||||
bl Random
|
||||
ldr r2, _08088F1C @ =gUnk_08120C52
|
||||
movs r1, #3
|
||||
ands r1, r0
|
||||
adds r1, r1, r2
|
||||
movs r0, #0
|
||||
ldrsb r0, [r1, r0]
|
||||
ldrh r1, [r4, #0x32]
|
||||
adds r0, r0, r1
|
||||
strh r0, [r4, #0x32]
|
||||
_08088F14:
|
||||
pop {r4, pc}
|
||||
.align 2, 0
|
||||
_08088F18: .4byte gRoomTransition
|
||||
_08088F1C: .4byte gUnk_08120C52
|
||||
|
||||
thumb_func_start sub_08088F20
|
||||
sub_08088F20: @ 0x08088F20
|
||||
push {r4, r5, lr}
|
||||
adds r4, r0, #0
|
||||
ldrb r0, [r4, #0xc]
|
||||
cmp r0, #1
|
||||
beq _08088F62
|
||||
cmp r0, #1
|
||||
bgt _08088F34
|
||||
cmp r0, #0
|
||||
beq _08088F3E
|
||||
b _08089020
|
||||
_08088F34:
|
||||
cmp r0, #2
|
||||
beq _08088FEC
|
||||
cmp r0, #3
|
||||
beq _08089004
|
||||
b _08089020
|
||||
_08088F3E:
|
||||
movs r0, #1
|
||||
strb r0, [r4, #0xc]
|
||||
ldrb r1, [r4, #0x11]
|
||||
subs r0, #0x11
|
||||
ands r0, r1
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r4, #0x11]
|
||||
ldrb r0, [r4, #0xb]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _08088F5A
|
||||
b _0808908E
|
||||
_08088F5A:
|
||||
adds r0, r4, #0
|
||||
bl DeleteEntity
|
||||
b _0808908E
|
||||
_08088F62:
|
||||
ldrb r0, [r4, #0xb]
|
||||
bl CheckLocalFlag
|
||||
cmp r0, #0
|
||||
bne _08088F6E
|
||||
b _0808908E
|
||||
_08088F6E:
|
||||
movs r5, #2
|
||||
strb r5, [r4, #0xc]
|
||||
movs r0, #0x1e
|
||||
strb r0, [r4, #0xe]
|
||||
movs r1, #0x87
|
||||
lsls r1, r1, #1
|
||||
adds r0, r4, #0
|
||||
bl RequestPriorityDuration
|
||||
movs r0, #0x2a
|
||||
movs r1, #1
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r2, r0, #0
|
||||
cmp r2, #0
|
||||
beq _08088FBC
|
||||
ldrb r1, [r2, #0x11]
|
||||
movs r0, #0x10
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #3
|
||||
orrs r0, r1
|
||||
strb r0, [r2, #0x11]
|
||||
ldrh r0, [r4, #0x2e]
|
||||
strh r0, [r2, #0x2e]
|
||||
ldrh r0, [r4, #0x32]
|
||||
strh r0, [r2, #0x32]
|
||||
adds r0, r2, #0
|
||||
adds r0, #0x38
|
||||
strb r5, [r0]
|
||||
adds r2, #0x29
|
||||
ldrb r1, [r2]
|
||||
movs r0, #8
|
||||
rsbs r0, r0, #0
|
||||
ands r0, r1
|
||||
movs r1, #2
|
||||
orrs r0, r1
|
||||
strb r0, [r2]
|
||||
_08088FBC:
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
ldr r2, _08088FE8 @ =gRoomControls
|
||||
ldrh r0, [r2, #6]
|
||||
subs r1, r1, r0
|
||||
asrs r1, r1, #4
|
||||
movs r3, #0x3f
|
||||
ands r1, r3
|
||||
movs r5, #0x32
|
||||
ldrsh r0, [r4, r5]
|
||||
ldrh r2, [r2, #8]
|
||||
subs r0, r0, r2
|
||||
asrs r0, r0, #4
|
||||
ands r0, r3
|
||||
lsls r0, r0, #6
|
||||
orrs r1, r0
|
||||
movs r0, #0x76
|
||||
movs r2, #2
|
||||
bl SetTileType
|
||||
b _0808908E
|
||||
.align 2, 0
|
||||
_08088FE8: .4byte gRoomControls
|
||||
_08088FEC:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
cmp r0, #0
|
||||
bne _0808908E
|
||||
adds r0, r4, #0
|
||||
bl sub_08089094
|
||||
movs r0, #3
|
||||
strb r0, [r4, #0xc]
|
||||
b _0808908E
|
||||
_08089004:
|
||||
ldr r0, _0808901C @ =gRoomVars
|
||||
ldr r0, [r0, #0x68]
|
||||
movs r1, #0x10
|
||||
ands r0, r1
|
||||
cmp r0, #0
|
||||
beq _0808908E
|
||||
movs r0, #4
|
||||
strb r0, [r4, #0xc]
|
||||
movs r0, #0x78
|
||||
strb r0, [r4, #0xe]
|
||||
b _0808908E
|
||||
.align 2, 0
|
||||
_0808901C: .4byte gRoomVars
|
||||
_08089020:
|
||||
ldrb r0, [r4, #0xe]
|
||||
subs r0, #1
|
||||
strb r0, [r4, #0xe]
|
||||
lsls r0, r0, #0x18
|
||||
lsrs r0, r0, #0x18
|
||||
cmp r0, #0x5a
|
||||
bne _0808905C
|
||||
movs r0, #0x15
|
||||
movs r1, #2
|
||||
bl CheckLocalFlags
|
||||
cmp r0, #0
|
||||
beq _08089048
|
||||
ldr r0, _08089044 @ =gRoomVars
|
||||
ldr r1, [r0, #0x68]
|
||||
movs r2, #2
|
||||
b _0808904E
|
||||
.align 2, 0
|
||||
_08089044: .4byte gRoomVars
|
||||
_08089048:
|
||||
ldr r0, _08089090 @ =gRoomVars
|
||||
ldr r1, [r0, #0x68]
|
||||
movs r2, #1
|
||||
_0808904E:
|
||||
orrs r1, r2
|
||||
str r1, [r0, #0x68]
|
||||
adds r2, r0, #0
|
||||
ldr r0, [r2, #0x68]
|
||||
movs r1, #0x20
|
||||
orrs r0, r1
|
||||
str r0, [r2, #0x68]
|
||||
_0808905C:
|
||||
ldrb r0, [r4, #0xe]
|
||||
cmp r0, #0
|
||||
bne _0808908E
|
||||
ldr r2, _08089090 @ =gRoomVars
|
||||
ldr r0, [r2, #0x68]
|
||||
movs r1, #0x11
|
||||
rsbs r1, r1, #0
|
||||
ands r0, r1
|
||||
str r0, [r2, #0x68]
|
||||
movs r0, #0x15
|
||||
movs r1, #2
|
||||
bl CheckLocalFlags
|
||||
cmp r0, #0
|
||||
beq _08089088
|
||||
adds r0, r4, #0
|
||||
movs r1, #0x3c
|
||||
bl RequestPriorityDuration
|
||||
movs r0, #0x72
|
||||
bl SoundReq
|
||||
_08089088:
|
||||
adds r0, r4, #0
|
||||
bl DeleteEntity
|
||||
_0808908E:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_08089090: .4byte gRoomVars
|
||||
|
||||
thumb_func_start sub_08089094
|
||||
sub_08089094: @ 0x08089094
|
||||
push {r4, r5, lr}
|
||||
adds r5, r0, #0
|
||||
movs r1, #0x2e
|
||||
ldrsh r0, [r5, r1]
|
||||
ldr r1, _080890C4 @ =gRoomControls
|
||||
ldrh r1, [r1, #6]
|
||||
subs r0, r0, r1
|
||||
cmp r0, #0xff
|
||||
bgt _080890CC
|
||||
ldr r4, _080890C8 @ =gUnk_08120C56
|
||||
movs r2, #8
|
||||
rsbs r2, r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
bl sub_080890EC
|
||||
adds r4, #4
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
movs r2, #4
|
||||
bl sub_080890EC
|
||||
b _080890E6
|
||||
.align 2, 0
|
||||
_080890C4: .4byte gRoomControls
|
||||
_080890C8: .4byte gUnk_08120C56
|
||||
_080890CC:
|
||||
ldr r4, _080890E8 @ =gUnk_08120C5E
|
||||
movs r2, #8
|
||||
rsbs r2, r2, #0
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
bl sub_080890EC
|
||||
adds r4, #4
|
||||
adds r0, r5, #0
|
||||
adds r1, r4, #0
|
||||
movs r2, #4
|
||||
bl sub_080890EC
|
||||
_080890E6:
|
||||
pop {r4, r5, pc}
|
||||
.align 2, 0
|
||||
_080890E8: .4byte gUnk_08120C5E
|
||||
|
||||
thumb_func_start sub_080890EC
|
||||
sub_080890EC: @ 0x080890EC
|
||||
push {r4, r5, r6, r7, lr}
|
||||
adds r5, r0, #0
|
||||
adds r7, r1, #0
|
||||
adds r6, r2, #0
|
||||
movs r0, #0x25
|
||||
movs r1, #3
|
||||
movs r2, #0
|
||||
bl CreateObject
|
||||
adds r4, r0, #0
|
||||
cmp r4, #0
|
||||
beq _08089132
|
||||
movs r1, #3
|
||||
bl SetDefaultPriority
|
||||
ldrh r0, [r5, #0x2e]
|
||||
strh r0, [r4, #0x2e]
|
||||
ldrh r0, [r5, #0x32]
|
||||
adds r0, r0, r6
|
||||
strh r0, [r4, #0x32]
|
||||
str r5, [r4, #0x50]
|
||||
movs r0, #0x2e
|
||||
ldrsh r1, [r4, r0]
|
||||
movs r2, #0
|
||||
ldrsh r0, [r7, r2]
|
||||
adds r1, r1, r0
|
||||
movs r3, #0x32
|
||||
ldrsh r2, [r4, r3]
|
||||
movs r3, #2
|
||||
ldrsh r0, [r7, r3]
|
||||
adds r2, r2, r0
|
||||
adds r0, r4, #0
|
||||
movs r3, #0x5a
|
||||
bl sub_0806FB00
|
||||
_08089132:
|
||||
pop {r4, r5, r6, r7, pc}
|
||||
|
|
@ -43105,46 +43105,6 @@
|
|||
"size": 9,
|
||||
"type": "animation"
|
||||
},
|
||||
{
|
||||
"path": "bigBarrel/gUnk_08120C1C.bin",
|
||||
"start": 1182748,
|
||||
"size": 9
|
||||
},
|
||||
{
|
||||
"path": "bigBarrel/gUnk_08120C25.bin",
|
||||
"start": 1182757,
|
||||
"size": 9
|
||||
},
|
||||
{
|
||||
"path": "bigBarrel/gUnk_08120C2E.bin",
|
||||
"start": 1182766,
|
||||
"size": 6
|
||||
},
|
||||
{
|
||||
"path": "bigBarrel/gUnk_08120C48.bin",
|
||||
"start": 1182792,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "bigBarrel/gUnk_08120C50.bin",
|
||||
"start": 1182800,
|
||||
"size": 2
|
||||
},
|
||||
{
|
||||
"path": "bigBarrel/gUnk_08120C52.bin",
|
||||
"start": 1182802,
|
||||
"size": 4
|
||||
},
|
||||
{
|
||||
"path": "bigBarrel/gUnk_08120C56.bin",
|
||||
"start": 1182806,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "bigBarrel/gUnk_08120C5E.bin",
|
||||
"start": 1182814,
|
||||
"size": 8
|
||||
},
|
||||
{
|
||||
"path": "animations/gSpriteAnimations_PushableStatue_0.bin",
|
||||
"start": 1183110,
|
||||
|
|
|
|||
|
|
@ -1,36 +0,0 @@
|
|||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.section .rodata
|
||||
.align 2
|
||||
|
||||
gUnk_08120C1C:: @ 08120C1C
|
||||
.incbin "bigBarrel/gUnk_08120C1C.bin"
|
||||
|
||||
gUnk_08120C25:: @ 08120C25
|
||||
.incbin "bigBarrel/gUnk_08120C25.bin"
|
||||
|
||||
gUnk_08120C2E:: @ 08120C2E
|
||||
.incbin "bigBarrel/gUnk_08120C2E.bin"
|
||||
|
||||
gUnk_08120C34:: @ 08120C34
|
||||
.4byte sub_08088A68
|
||||
.4byte sub_08088C9C
|
||||
.4byte sub_08088DB4
|
||||
.4byte sub_08088E74
|
||||
.4byte sub_08088F20
|
||||
|
||||
gUnk_08120C48:: @ 08120C48
|
||||
.incbin "bigBarrel/gUnk_08120C48.bin"
|
||||
|
||||
gUnk_08120C50:: @ 08120C50
|
||||
.incbin "bigBarrel/gUnk_08120C50.bin"
|
||||
|
||||
gUnk_08120C52:: @ 08120C52
|
||||
.incbin "bigBarrel/gUnk_08120C52.bin"
|
||||
|
||||
gUnk_08120C56:: @ 08120C56
|
||||
.incbin "bigBarrel/gUnk_08120C56.bin"
|
||||
|
||||
gUnk_08120C5E:: @ 08120C5E
|
||||
.incbin "bigBarrel/gUnk_08120C5E.bin"
|
||||
|
|
@ -679,7 +679,7 @@ SECTIONS {
|
|||
asm/object/figurineDevice.o(.text);
|
||||
asm/object/eyeSwitch.o(.text);
|
||||
src/object/pressurePlate.o(.text);
|
||||
asm/object/bigBarrel.o(.text);
|
||||
src/object/bigBarrel.o(.text);
|
||||
src/object/barrelInside.o(.text);
|
||||
src/object/pushableStatue.o(.text);
|
||||
asm/object/object28.o(.text);
|
||||
|
|
@ -1405,7 +1405,7 @@ SECTIONS {
|
|||
data/const/object/eyeSwitch.o(.rodata);
|
||||
data/animations/object/eyeSwitch.o(.rodata);
|
||||
src/object/pressurePlate.o(.rodata);
|
||||
data/const/object/bigBarrel.o(.rodata);
|
||||
src/object/bigBarrel.o(.rodata);
|
||||
data/animations/object/bigBarrel.o(.rodata);
|
||||
src/object/barrelInside.o(.rodata);
|
||||
src/object/pushableStatue.o(.rodata);
|
||||
|
|
|
|||
|
|
@ -352,7 +352,7 @@ void sub_0806FB00(Entity* ent, u32 param_1, u32 param_2, u32 param_3) {
|
|||
ent->field_0x86.HWORD = param_2;
|
||||
}
|
||||
|
||||
bool32 sub_0806FB38(Entity* ent, u32 param_1, u32 param_2, u32 param_3) {
|
||||
bool32 sub_0806FB38(Entity* ent) {
|
||||
s32 val;
|
||||
u32 rv;
|
||||
if (ent->field_0x7c.BYTES.byte2 < ent->field_0x7c.BYTES.byte3) {
|
||||
|
|
|
|||
|
|
@ -0,0 +1,349 @@
|
|||
#define NENT_DEPRECATED
|
||||
#include "entity.h"
|
||||
#include "flags.h"
|
||||
#include "save.h"
|
||||
#include "room.h"
|
||||
#include "asm.h"
|
||||
#include "sound.h"
|
||||
#include "common.h"
|
||||
#include "object.h"
|
||||
|
||||
typedef struct {
|
||||
Entity base;
|
||||
const u8* unk68;
|
||||
} BigBarrelEntity;
|
||||
|
||||
void sub_08088A68(BigBarrelEntity*);
|
||||
void sub_08088C9C(BigBarrelEntity*);
|
||||
void sub_08088DB4(BigBarrelEntity*);
|
||||
void sub_08088E74(BigBarrelEntity*);
|
||||
void sub_08088F20(BigBarrelEntity*);
|
||||
void sub_08088BE0(BigBarrelEntity*);
|
||||
void sub_08089094(BigBarrelEntity*);
|
||||
void sub_080890EC(BigBarrelEntity*, const s16*, s32);
|
||||
|
||||
Entity* sub_08088C78(BigBarrelEntity*, u32, u32, u32);
|
||||
|
||||
extern bool32 sub_0806FB38(Entity*);
|
||||
extern void sub_0806FB00(Entity*, u32, u32, u32);
|
||||
|
||||
const s8 gUnk_08120C1C[] = { 3, 0, 2, 0, 2, 0, 1, 0, -1 };
|
||||
const s8 gUnk_08120C25[] = { 5, 0, 4, 0, 4, 0, 2, 0, -1 };
|
||||
const s8 gUnk_08120C2E[] = { 3, 0, -1, 0, 0, 0 };
|
||||
|
||||
void BigBarrel(Entity* this) {
|
||||
static void (*const typeFuncs[])(BigBarrelEntity*) = {
|
||||
sub_08088A68, sub_08088C9C, sub_08088DB4, sub_08088E74, sub_08088F20,
|
||||
};
|
||||
typeFuncs[this->type]((BigBarrelEntity*)this);
|
||||
}
|
||||
|
||||
void sub_08088A68(BigBarrelEntity* this) {
|
||||
u32 uVar3;
|
||||
const u8* pcVar3;
|
||||
|
||||
if (super->action == 0) {
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 3;
|
||||
super->updatePriority = 3;
|
||||
if (CheckGlobalFlag(0x17)) {
|
||||
super->frameIndex = gSave.unk7 + 1;
|
||||
} else {
|
||||
super->frameIndex = gSave.unk7;
|
||||
}
|
||||
sub_08088BE0(this);
|
||||
if (CheckPlayerInRegion(super->x.HALF.HI - gRoomControls.origin_x, super->y.HALF.HI - gRoomControls.origin_y,
|
||||
0x80, 0x60)) {
|
||||
gRoomVars.animFlags |= 4;
|
||||
}
|
||||
} else {
|
||||
if (gRoomVars.animFlags & 1) {
|
||||
gRoomVars.animFlags &= ~1;
|
||||
super->actionDelay = 1;
|
||||
this->unk68 = gUnk_08120C1C;
|
||||
SoundReq(SFX_BARREL_ENTER);
|
||||
}
|
||||
if (gRoomVars.animFlags & 2) {
|
||||
gRoomVars.animFlags &= ~2;
|
||||
super->actionDelay = 1;
|
||||
this->unk68 = gUnk_08120C25;
|
||||
SoundReq(SFX_BARREL_RELEASE);
|
||||
}
|
||||
if (gRoomVars.animFlags & 4) {
|
||||
gRoomVars.animFlags &= ~4;
|
||||
super->actionDelay = 1;
|
||||
this->unk68 = gUnk_08120C2E;
|
||||
SoundReq(SFX_BARREL_ENTER);
|
||||
}
|
||||
if (super->actionDelay) {
|
||||
if (super->actionDelay-- == 1) {
|
||||
pcVar3 = this->unk68;
|
||||
uVar3 = pcVar3[0];
|
||||
*(u8*)&super->spriteOffsetY = uVar3;
|
||||
pcVar3++;
|
||||
if (*pcVar3 != 0xff) {
|
||||
super->actionDelay = 8;
|
||||
this->unk68 = pcVar3;
|
||||
} else {
|
||||
super->spriteOffsetY = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
super->spritePriority.b0 = 1;
|
||||
if (CheckPlayerProximity(super->x.HALF.HI - 0x50, super->y.HALF.HI - 0x50, 0xa0, 0x30)) {
|
||||
super->spritePriority.b0 = 5;
|
||||
}
|
||||
if (CheckPlayerProximity(super->x.HALF.HI - 0x50, super->y.HALF.HI + 0x30, 0xa0, 0x30)) {
|
||||
super->spritePriority.b0 = 5;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08088BE0(BigBarrelEntity* this) {
|
||||
Entity* ent;
|
||||
|
||||
if (CheckLocalFlag(0x15) == 0) {
|
||||
sub_08088C78(this, 2, 0, 0xffffff88);
|
||||
ent = sub_08088C78(this, 4, 0x15, 0);
|
||||
if (ent) {
|
||||
ent->x.HALF.HI = gRoomControls.origin_x + 0x48;
|
||||
ent->y.HALF.HI = gRoomControls.origin_y + 200;
|
||||
}
|
||||
}
|
||||
|
||||
if (CheckLocalFlag(0x16) == 0) {
|
||||
sub_08088C78(this, 2, 1, 0x78);
|
||||
ent = sub_08088C78(this, 4, 0x16, 0);
|
||||
if (ent) {
|
||||
ent->x.HALF.HI = gRoomControls.origin_x + 0x188;
|
||||
ent->y.HALF.HI = gRoomControls.origin_y + 200;
|
||||
}
|
||||
}
|
||||
sub_08088C78(this, 1, 0, 0xffffff88);
|
||||
sub_08088C78(this, 1, 1, 0x78);
|
||||
}
|
||||
|
||||
Entity* sub_08088C78(BigBarrelEntity* this, u32 type, u32 type2, u32 xOffset) {
|
||||
Entity* pEVar1;
|
||||
|
||||
pEVar1 = CreateObject(BIG_BARREL, type, type2);
|
||||
if (pEVar1) {
|
||||
pEVar1->x.HALF.HI = super->x.HALF.HI + xOffset;
|
||||
pEVar1->y.HALF.HI = super->y.HALF.HI;
|
||||
pEVar1->parent = super;
|
||||
}
|
||||
return pEVar1;
|
||||
}
|
||||
|
||||
void sub_08088C9C(BigBarrelEntity* this) {
|
||||
static const u8 gUnk_08120C48[] = { 2, 3, 4, 5, 6, 7, 7, 7 };
|
||||
static const s8 gUnk_08120C50[] = { 8, -8 };
|
||||
u32 localFlag;
|
||||
s32 x;
|
||||
|
||||
super->spritePriority.b0 = gUnk_08120C48[super->parent->spritePriority.b0];
|
||||
super->spriteOffsetY = super->parent->spriteOffsetY / 2;
|
||||
switch (super->action) {
|
||||
case 0:
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->frameIndex = super->type2 + 4;
|
||||
super->updatePriority = 3;
|
||||
if (super->type2 == 0) {
|
||||
localFlag = 21;
|
||||
} else {
|
||||
localFlag = 22;
|
||||
}
|
||||
super->field_0xf = localFlag;
|
||||
if (CheckLocalFlag(super->field_0xf) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
super->x.HALF_U.HI += gUnk_08120C50[super->type2];
|
||||
super->action = 4;
|
||||
break;
|
||||
case 1:
|
||||
if (CheckLocalFlag(super->field_0xf) == 0) {
|
||||
return;
|
||||
}
|
||||
super->action = 2;
|
||||
break;
|
||||
case 2:
|
||||
if ((gRoomVars.animFlags & 0x20) == 0) {
|
||||
return;
|
||||
}
|
||||
gRoomVars.animFlags &= ~0x20;
|
||||
super->action = 3;
|
||||
super->subAction = 4;
|
||||
super->actionDelay = 1;
|
||||
case 3:
|
||||
if (--super->actionDelay) {
|
||||
return;
|
||||
}
|
||||
super->actionDelay = 8;
|
||||
x = super->x.HALF.HI;
|
||||
if (super->type2) {
|
||||
super->x.HALF.HI = x - 2;
|
||||
} else {
|
||||
super->x.HALF.HI = x + 2;
|
||||
}
|
||||
if (--super->subAction) {
|
||||
return;
|
||||
}
|
||||
super->action = 4;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08088DB4(BigBarrelEntity* this) {
|
||||
switch (super->action) {
|
||||
case 0:
|
||||
super->action = 1;
|
||||
super->spriteSettings.draw = 1;
|
||||
super->frameIndex = super->type2 * 4 + 6;
|
||||
super->collisionLayer = 2;
|
||||
SetDefaultPriority(super, 3);
|
||||
super->type2 = super->type2 == 0 ? 0x15 : 0x16;
|
||||
UpdateSpriteForCollisionLayer(super);
|
||||
break;
|
||||
case 1:
|
||||
if (CheckLocalFlag(super->type2)) {
|
||||
super->action++;
|
||||
super->actionDelay = 10;
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
case 3:
|
||||
case 4:
|
||||
if ((gRoomVars.animFlags & 8) == 0) {
|
||||
return;
|
||||
}
|
||||
if (--super->actionDelay) {
|
||||
return;
|
||||
}
|
||||
super->actionDelay = 0x1e;
|
||||
super->frameIndex++;
|
||||
super->action++;
|
||||
break;
|
||||
default:
|
||||
if (--super->actionDelay == 0) {
|
||||
gRoomVars.animFlags &= ~0x8;
|
||||
DeleteEntity(super);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08088E74(BigBarrelEntity* this) {
|
||||
static const s8 gUnk_08120C52[] = { -2, 0, 2, 0 };
|
||||
Entity* ent;
|
||||
|
||||
if (super->action == 0) {
|
||||
super->action = 1;
|
||||
super->collisionLayer = 2;
|
||||
gRoomVars.animFlags |= 8;
|
||||
}
|
||||
if (sub_0806FB38(super)) {
|
||||
gRoomVars.animFlags |= 0x10;
|
||||
DeleteEntity(super);
|
||||
} else {
|
||||
if ((gRoomTransition.frameCount & 7U) == 0) {
|
||||
ent = CreateObjectWithParent(super, OBJECT_2A, 0, 0x1e);
|
||||
if (ent) {
|
||||
ent->updatePriority = 3;
|
||||
ent->spriteRendering.b3 = 0;
|
||||
ent->spritePriority.b0 = 0;
|
||||
ent->spriteOrientation.flipY = 0;
|
||||
ent->y.HALF.HI += gUnk_08120C52[Random() & 3];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08088F20(BigBarrelEntity* this) {
|
||||
Entity* pEVar3;
|
||||
|
||||
switch (super->action) {
|
||||
case 0:
|
||||
super->action = 1;
|
||||
super->updatePriority = 3;
|
||||
if (CheckLocalFlag(super->type2) == 0) {
|
||||
return;
|
||||
}
|
||||
DeleteEntity(super);
|
||||
break;
|
||||
case 1:
|
||||
if (CheckLocalFlag(super->type2) == 0) {
|
||||
return;
|
||||
}
|
||||
super->action = 2;
|
||||
super->actionDelay = 30;
|
||||
RequestPriorityDuration(super, 0x10e);
|
||||
pEVar3 = CreateObject(OBJECT_2A, 1, 0);
|
||||
if (pEVar3 != NULL) {
|
||||
pEVar3->updatePriority = 3;
|
||||
pEVar3->x.HALF.HI = super->x.HALF.HI;
|
||||
pEVar3->y.HALF.HI = super->y.HALF.HI;
|
||||
pEVar3->collisionLayer = 2;
|
||||
pEVar3->spritePriority.b0 = 2;
|
||||
}
|
||||
SetTileType(0x76, COORD_TO_TILE(super), 2);
|
||||
break;
|
||||
case 2:
|
||||
if (--super->actionDelay) {
|
||||
return;
|
||||
}
|
||||
sub_08089094(this);
|
||||
super->action = 3;
|
||||
break;
|
||||
case 3:
|
||||
if ((gRoomVars.animFlags & 0x10) == 0) {
|
||||
return;
|
||||
}
|
||||
super->action = 4;
|
||||
super->actionDelay = 0x78;
|
||||
break;
|
||||
default:
|
||||
if (--super->actionDelay == 0x5a) {
|
||||
if (CheckLocalFlags(0x15, 2)) {
|
||||
gRoomVars.animFlags |= 2;
|
||||
} else {
|
||||
gRoomVars.animFlags |= 1;
|
||||
}
|
||||
gRoomVars.animFlags |= 0x20;
|
||||
}
|
||||
if (super->actionDelay == 0) {
|
||||
gRoomVars.animFlags &= ~0x10;
|
||||
if (CheckLocalFlags(0x15, 2)) {
|
||||
RequestPriorityDuration(super, 0x3c);
|
||||
SoundReq(SFX_SECRET);
|
||||
}
|
||||
DeleteEntity(super);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_08089094(BigBarrelEntity* this) {
|
||||
static const s16 gUnk_08120C56[] = { 0x58, -0x30, 0x58, 0x30 };
|
||||
static const s16 gUnk_08120C5E[] = { -0x58, -0x30, -0x58, 0x30 };
|
||||
|
||||
if (super->x.HALF.HI - gRoomControls.origin_x < 0x100) {
|
||||
sub_080890EC(this, gUnk_08120C56, -8);
|
||||
sub_080890EC(this, gUnk_08120C56 + 2, 4);
|
||||
} else {
|
||||
sub_080890EC(this, gUnk_08120C5E, -8);
|
||||
sub_080890EC(this, gUnk_08120C5E + 2, 4);
|
||||
}
|
||||
}
|
||||
|
||||
void sub_080890EC(BigBarrelEntity* this, const s16* offsets, s32 yOffset) {
|
||||
Entity* pEVar1 = CreateObject(BIG_BARREL, 3, 0);
|
||||
if (pEVar1) {
|
||||
SetDefaultPriority(pEVar1, 3);
|
||||
pEVar1->x.HALF.HI = super->x.HALF.HI;
|
||||
pEVar1->y.HALF.HI = super->y.HALF.HI + yOffset;
|
||||
pEVar1->parent = super;
|
||||
sub_0806FB00(pEVar1, pEVar1->x.HALF.HI + offsets[0], pEVar1->y.HALF.HI + offsets[1], 0x5a);
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue