Merge pull request #337 from octorock/push-and-pull

This commit is contained in:
notyourav
2022-02-01 18:47:18 -08:00
committed by GitHub
45 changed files with 3377 additions and 7384 deletions
-216
View File
@@ -1,216 +0,0 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
mov r8, r0
adds r6, r1, #0
ldrh r1, [r6, #2]
asrs r7, r1, #4
movs r0, #1
ands r7, r0
movs r0, #0xf
ands r1, r0
cmp r1, #6
bls _0806F1C8
b _0806F332
_0806F1C8:
lsls r0, r1, #2
ldr r1, _0806F1D4 @ =_0806F1D8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0806F1D4: .4byte _0806F1D8
_0806F1D8: @ jump table
.4byte _0806F332 @ case 0
.4byte _0806F342 @ case 1
.4byte _0806F1F4 @ case 2
.4byte _0806F24E @ case 3
.4byte _0806F2BA @ case 4
.4byte _0806F324 @ case 5
.4byte _0806F336 @ case 6
_0806F1F4:
ldr r4, [r6]
asrs r1, r4, #0xc
movs r0, #0xf
ands r1, r0
ldr r0, _0806F210 @ =0x00000FFF
ands r4, r0
movs r5, #0
cmp r1, #1
beq _0806F22A
cmp r1, #1
bgt _0806F214
cmp r1, #0
beq _0806F21A
b _0806F248
.align 2, 0
_0806F210: .4byte 0x00000FFF
_0806F214:
cmp r1, #2
beq _0806F23A
b _0806F248
_0806F21A:
adds r0, r4, #0
bl CheckRoomFlag
adds r5, r0, #0
_0806F222:
adds r0, r4, #0
bl SetRoomFlag
b _0806F248
_0806F22A:
adds r0, r4, #0
bl CheckLocalFlag
adds r5, r0, #0
_0806F232:
adds r0, r4, #0
bl SetLocalFlag
b _0806F248
_0806F23A:
adds r0, r4, #0
bl CheckGlobalFlag
adds r5, r0, #0
adds r0, r4, #0
bl SetGlobalFlag
_0806F248:
cmp r5, #0
beq _0806F342
b _0806F34C
_0806F24E:
ldr r4, [r6]
asrs r1, r4, #0xc
movs r0, #0xf
ands r1, r0
ldr r0, _0806F26C @ =0x00000FFF
ands r4, r0
movs r5, #0
cmp r1, #1
beq _0806F28A
cmp r1, #1
bgt _0806F270
cmp r1, #0
beq _0806F276
b _0806F248
.align 2, 0
_0806F26C: .4byte 0x00000FFF
_0806F270:
cmp r1, #2
beq _0806F29E
b _0806F248
_0806F276:
adds r0, r4, #0
bl CheckRoomFlag
adds r5, r0, #0
cmp r5, #0
beq _0806F222
adds r0, r4, #0
bl ClearRoomFlag
b _0806F248
_0806F28A:
adds r0, r4, #0
bl CheckLocalFlag
adds r5, r0, #0
cmp r5, #0
beq _0806F232
adds r0, r4, #0
bl ClearLocalFlag
b _0806F248
_0806F29E:
adds r0, r4, #0
bl CheckGlobalFlag
adds r5, r0, #0
cmp r5, #0
bne _0806F2B2
adds r0, r4, #0
bl SetGlobalFlag
b _0806F248
_0806F2B2:
adds r0, r4, #0
bl ClearGlobalFlag
b _0806F248
_0806F2BA:
ldr r4, [r6]
asrs r1, r4, #0xc
movs r0, #0xf
ands r1, r0
ldr r0, _0806F2D8 @ =0x00000FFF
ands r4, r0
movs r5, #0
cmp r1, #4
bhi _0806F248
lsls r0, r1, #2
ldr r1, _0806F2DC @ =_0806F2E0
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0806F2D8: .4byte 0x00000FFF
_0806F2DC: .4byte _0806F2E0
_0806F2E0: @ jump table
.4byte _0806F2F4 @ case 0
.4byte _0806F2FC @ case 1
.4byte _0806F304 @ case 2
.4byte _0806F30C @ case 3
.4byte _0806F314 @ case 4
_0806F2F4:
adds r0, r4, #0
bl CheckRoomFlag
b _0806F320
_0806F2FC:
adds r0, r4, #0
bl CheckLocalFlag
b _0806F320
_0806F304:
adds r0, r4, #0
bl CheckGlobalFlag
b _0806F320
_0806F30C:
adds r0, r4, #0
bl CheckKinstoneFused
b _0806F320
_0806F314:
adds r0, r4, #0
bl GetInventoryValue
cmp r0, #0
beq _0806F320
movs r0, #1
_0806F320:
adds r5, r0, #0
b _0806F248
_0806F324:
ldr r1, [r6, #4]
cmp r1, #0
beq _0806F332
mov r0, r8
bl _call_via_r1
b _0806F35E
_0806F332:
movs r0, #0
b _0806F34E
_0806F336:
ldr r0, _0806F348 @ =gPlayerState
ldr r0, [r0, #0x30]
movs r1, #0x80
ands r0, r1
cmp r0, #0
beq _0806F34C
_0806F342:
ldrh r0, [r6, #6]
b _0806F34E
.align 2, 0
_0806F348: .4byte gPlayerState
_0806F34C:
ldrh r0, [r6, #4]
_0806F34E:
cmp r7, #0
beq _0806F35A
mov r1, r8
bl MessageNoOverlap
b _0806F35E
_0806F35A:
bl MessageFromTarget
_0806F35E:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.syntax divided
@@ -0,0 +1,69 @@
.syntax unified
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
subs r1, r0, #1
strb r1, [r5, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _08099896
bl DeleteThisEntity
b _0809990E
_08099896:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x30
bne _080998A4
adds r0, r5, #0
bl sub_08099C18
_080998A4:
ldrb r0, [r5, #0xe]
movs r4, #0x3c
subs r4, r4, r0
lsls r4, r4, #5
movs r1, #0x80
lsls r1, r1, #1
adds r4, r4, r1
adds r0, r5, #0
adds r2, r4, #0
movs r3, #0
bl sub_0805EC9C
adds r0, r5, #0
adds r1, r4, #0
movs r2, #2
movs r3, #0
bl sub_0806FCF4
movs r0, #0xf
movs r1, #0x11
movs r2, #0x40
bl CreateObject
adds r6, r0, #0
cmp r6, #0
beq _0809990E
bl Random
adds r4, r0, #0
asrs r0, r4, #0x10
movs r1, #0x21
bl __modsi3
adds r2, r0, #0
subs r2, #0x10
movs r0, #0xf
ands r0, r4
subs r4, r0, #4
adds r3, r6, #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]
lsls r2, r2, #0x10
lsls r3, r4, #0x10
adds r0, r5, #0
adds r1, r6, #0
bl PositionRelative
_0809990E:
pop {r4, r5, r6, pc}
.syntax divided
@@ -1,77 +0,0 @@
.syntax unified
push {r4, r5, r6, lr}
adds r6, r0, #0
ldr r2, _08057434 @ =gRoomControls
ldr r0, [r2, #0x28]
ldr r1, _08057438 @ =0xFFFFE000
adds r0, r0, r1
str r0, [r2, #0x28]
ldr r0, [r2, #0x2c]
ldr r1, _0805743C @ =0xFFFFF000
adds r0, r0, r1
str r0, [r2, #0x2c]
ldr r5, _08057440 @ =gScreen
movs r1, #0xa
ldrsh r0, [r2, r1]
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r0, r0, #1
ldrh r1, [r2, #0x2a]
adds r0, r0, r1
strh r0, [r5, #0x2e]
movs r1, #0xc
ldrsh r0, [r2, r1]
ldrh r1, [r2, #8]
subs r0, r0, r1
asrs r0, r0, #1
ldrh r2, [r2, #0x2e]
adds r0, r0, r2
strh r0, [r5, #0x30]
ldr r2, _08057444 @ =gSineTable
ldr r4, _08057448 @ =gRoomTransition
ldr r1, [r4]
ldrb r0, [r4]
adds r0, #0x40
lsls r0, r0, #1
adds r0, r0, r2
movs r2, #0
ldrsh r0, [r0, r2]
asrs r0, r0, #5
adds r0, #0x10
bl sub_0805732C
adds r0, r6, #0
adds r0, #0x22
ldrb r0, [r0]
cmp r0, #0
bne _08057430
ldr r0, [r4]
movs r1, #0x1f
ands r0, r1
cmp r0, #0
bne _08057430
adds r2, r6, #0
adds r2, #0x24
ldrb r0, [r2]
adds r0, #1
movs r1, #7
ands r0, r1
strb r0, [r2]
ldr r1, _0805744C @ =gUnk_08107C30
ldrb r0, [r2]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r5, #0
adds r0, #0x68
strh r1, [r0]
_08057430:
pop {r4, r5, r6, pc}
.align 2, 0
_08057434: .4byte gRoomControls
_08057438: .4byte 0xFFFFE000
_0805743C: .4byte 0xFFFFF000
_08057440: .4byte gScreen
_08057444: .4byte gSineTable
_08057448: .4byte gRoomTransition
_0805744C: .4byte gUnk_08107C30
.syntax divided
@@ -0,0 +1,155 @@
.syntax unified
push {r4, r5, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldrh r1, [r0, #0xc]
ldr r0, _0808AC38 @ =0x00000201
cmp r1, r0
bne _0808ABD6
bl DeleteThisEntity
_0808ABD6:
ldr r0, [r4, #0x54]
ldr r1, [r4, #0x50]
bl sub_0808B1F0
adds r2, r0, #0
cmp r2, #7
bhi _0808ABE6
movs r2, #0
_0808ABE6:
ldrb r3, [r4, #0x14]
lsls r1, r3, #2
ldr r0, _0808AC3C @ =gUnk_081211CC
adds r5, r1, r0
cmp r2, #0x1f
bhi _0808AC5A
cmp r2, #0
beq _0808ABF8
subs r2, #6
_0808ABF8:
ldrh r0, [r5]
str r0, [r4, #0x70]
ldr r1, [r4, #0x50]
movs r0, #2
ldrsb r0, [r5, r0]
ldrh r3, [r1, #0x2e]
adds r0, r0, r3
strh r0, [r4, #0x2e]
movs r0, #3
ldrsb r0, [r5, r0]
ldrh r1, [r1, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
ldrb r1, [r4, #0x14]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0808AC40
lsls r1, r2, #4
movs r0, #0x80
lsls r0, r0, #2
subs r0, r0, r1
str r0, [r4, #0x74]
lsls r0, r2, #3
movs r1, #0x90
lsls r1, r1, #1
adds r0, r0, r1
str r0, [r4, #0x78]
movs r0, #0xf
strb r0, [r4, #0x1e]
b _0808ACDE
.align 2, 0
_0808AC38: .4byte 0x00000201
_0808AC3C: .4byte gUnk_081211CC
_0808AC40:
lsls r1, r2, #4
movs r0, #0x80
lsls r0, r0, #2
subs r0, r0, r1
str r0, [r4, #0x78]
lsls r0, r2, #3
movs r3, #0x90
lsls r3, r3, #1
adds r0, r0, r3
str r0, [r4, #0x74]
movs r0, #0x14
strb r0, [r4, #0x1e]
b _0808ACDE
_0808AC5A:
movs r0, #1
ands r3, r0
cmp r3, #0
beq _0808AC9E
adds r1, r2, #0
subs r1, #0x20
lsls r1, r1, #2
adds r0, #0xff
subs r0, r0, r1
str r0, [r4, #0x74]
lsls r0, r2, #3
movs r1, #0xa0
lsls r1, r1, #1
adds r0, r0, r1
str r0, [r4, #0x78]
movs r0, #0x10
strb r0, [r4, #0x1e]
ldrb r1, [r4, #0x14]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0808AC92
ldr r0, [r4, #0x50]
lsrs r1, r2, #1
ldrh r0, [r0, #0x2e]
subs r0, r0, r1
strh r0, [r4, #0x2e]
b _0808ACDE
_0808AC92:
ldr r1, [r4, #0x50]
lsrs r0, r2, #1
ldrh r1, [r1, #0x2e]
adds r0, r0, r1
strh r0, [r4, #0x2e]
b _0808ACDE
_0808AC9E:
adds r1, r2, #0
subs r1, #0x20
lsls r1, r1, #2
movs r0, #0x80
lsls r0, r0, #1
subs r0, r0, r1
str r0, [r4, #0x78]
lsls r0, r2, #3
movs r3, #0xa0
lsls r3, r3, #1
adds r0, r0, r3
str r0, [r4, #0x74]
movs r0, #0x15
strb r0, [r4, #0x1e]
ldrb r1, [r4, #0x14]
movs r0, #2
ands r0, r1
cmp r0, #0
beq _0808ACCE
ldr r0, [r4, #0x50]
lsrs r1, r2, #1
ldrh r0, [r0, #0x32]
adds r1, r1, r0
b _0808ACD6
_0808ACCE:
ldr r0, [r4, #0x50]
lsrs r2, r2, #1
ldrh r1, [r0, #0x32]
subs r1, r1, r2
_0808ACD6:
movs r0, #3
ldrsb r0, [r5, r0]
adds r0, r0, r1
strh r0, [r4, #0x32]
_0808ACDE:
ldr r1, [r4, #0x74]
ldr r2, [r4, #0x78]
ldr r3, [r4, #0x70]
adds r0, r4, #0
bl sub_0805EC9C
pop {r4, r5, pc}
.syntax divided
@@ -0,0 +1,75 @@
.syntax unified
push {r4, lr}
adds r4, r0, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0
beq _0808AD00
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_0808AD00:
adds r0, r4, #0
adds r0, #0x41
ldrb r1, [r0]
movs r0, #0x7f
ands r0, r1
subs r0, #4
cmp r0, #0x12
bhi _0808AD92
lsls r0, r0, #2
ldr r1, _0808AD1C @ =_0808AD20
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_0808AD1C: .4byte _0808AD20
_0808AD20: @ jump table
.4byte _0808AD6C @ case 0
.4byte _0808AD6C @ case 1
.4byte _0808AD6C @ case 2
.4byte _0808AD92 @ case 3
.4byte _0808AD6C @ case 4
.4byte _0808AD6C @ case 5
.4byte _0808AD6C @ case 6
.4byte _0808AD6C @ case 7
.4byte _0808AD6C @ case 8
.4byte _0808AD6C @ case 9
.4byte _0808AD92 @ case 10
.4byte _0808AD92 @ case 11
.4byte _0808AD6C @ case 12
.4byte _0808AD6C @ case 13
.4byte _0808AD6C @ case 14
.4byte _0808AD88 @ case 15
.4byte _0808AD6C @ case 16
.4byte _0808AD92 @ case 17
.4byte _0808AD6C @ case 18
_0808AD6C:
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
adds r0, r4, #0
adds r0, #0x3e
ldrb r0, [r0]
bl sub_0806F5A4
strb r0, [r4, #0x14]
movs r0, #2
strb r0, [r4, #0xd]
strb r0, [r4, #0xe]
b _0808AD9E
_0808AD88:
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r4, #0xd]
b _0808AD9E
_0808AD92:
movs r0, #0
strb r0, [r4, #0xf]
strb r0, [r4, #0xe]
adds r0, r4, #0
bl sub_08078930
_0808AD9E:
pop {r4, pc}
.syntax divided
@@ -0,0 +1,85 @@
.syntax unified
push {r4, r5, r6, r7, lr}
sub sp, #0x88
adds r5, r0, #0
ldr r1, [r5, #0x50]
bl sub_0808B1F0
adds r7, r0, #0
ldrb r0, [r5, #0xa]
cmp r0, #0
beq _0808B0D6
cmp r0, #1
beq _0808B0DE
b _0808B162
_0808B0D6:
adds r0, r5, #0
bl GetNextFrame
b _0808B162
_0808B0DE:
ldr r6, _0808B148 @ =gPlayerEntity
ldrb r0, [r6, #0x14]
movs r1, #0xe
ands r1, r0
ldr r0, _0808B14C @ =gUnk_08126EE4
adds r1, r1, r0
mov r2, sp
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r3, [r6, #0x2e]
adds r0, r0, r3
strh r0, [r2, #0x2e]
movs r0, #1
ldrsb r0, [r1, r0]
ldrh r1, [r6, #0x32]
adds r0, r0, r1
strh r0, [r2, #0x32]
mov r0, sp
adds r1, r5, #0
movs r2, #7
movs r3, #7
bl sub_0800419C
cmp r0, #0
beq _0808B154
ldrb r0, [r6, #0xc]
cmp r0, #1
bne _0808B162
ldr r4, _0808B150 @ =gPlayerState
adds r0, r4, #0
adds r0, #0x26
ldrb r0, [r0]
cmp r0, #0
bne _0808B162
movs r0, #0x1b
strb r0, [r4, #0xc]
adds r0, r4, #0
adds r0, #0x38
strb r7, [r0]
ldrb r0, [r5, #0x15]
movs r1, #0x10
eors r0, r1
adds r1, r4, #0
adds r1, #0x39
strb r0, [r1]
ldr r0, [r5, #0x50]
adds r1, r6, #0
bl sub_0808B1F0
adds r1, r4, #0
adds r1, #0x3a
strb r0, [r1]
b _0808B162
.align 2, 0
_0808B148: .4byte gPlayerEntity
_0808B14C: .4byte gUnk_08126EE4
_0808B150: .4byte gPlayerState
_0808B154:
movs r0, #0x40
strh r0, [r5, #0x24]
cmp r7, #0x3f
bhi _0808B162
adds r0, r5, #0
bl LinearMoveUpdate
_0808B162:
add sp, #0x88
pop {r4, r5, r6, r7, pc}
.align 2, 0
.syntax divided
@@ -0,0 +1,68 @@
.syntax unified
push {r4, r5, lr}
adds r3, r0, #0
cmp r1, #0
beq _0808B188
ldrb r0, [r3, #0x14]
movs r1, #2
eors r1, r0
lsls r1, r1, #1
ldr r0, _0808B184 @ =gUnk_081211F4
adds r2, r1, r0
adds r1, r2, #1
ldr r4, [r3, #0x50]
adds r5, r4, #0
b _0808B1CE
.align 2, 0
_0808B184: .4byte gUnk_081211F4
_0808B188:
ldrb r1, [r3, #0x14]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _0808B1B8
ldr r5, _0808B1AC @ =gPlayerEntity
ldr r4, [r3, #0x50]
ldrb r1, [r3, #0x14]
lsls r2, r1, #1
ldr r0, _0808B1B0 @ =gUnk_081211FC
adds r2, r2, r0
movs r0, #2
eors r1, r0
lsls r1, r1, #1
ldr r0, _0808B1B4 @ =gUnk_081211F5
adds r1, r1, r0
b _0808B1CE
.align 2, 0
_0808B1AC: .4byte gPlayerEntity
_0808B1B0: .4byte gUnk_081211FC
_0808B1B4: .4byte gUnk_081211F4+1
_0808B1B8:
ldr r5, [r3, #0x50]
ldr r4, _0808B1E4 @ =gPlayerEntity
movs r0, #2
eors r0, r1
lsls r0, r0, #1
ldr r1, _0808B1E8 @ =gUnk_081211F4
adds r2, r0, r1
ldrb r0, [r3, #0x14]
lsls r0, r0, #1
ldr r1, _0808B1EC @ =gUnk_081211FD
adds r1, r0, r1
_0808B1CE:
movs r0, #0
ldrsb r0, [r2, r0]
ldrh r5, [r5, #0x2e]
adds r0, r0, r5
strh r0, [r3, #0x2e]
movs r0, #0
ldrsb r0, [r1, r0]
ldrh r4, [r4, #0x32]
adds r0, r0, r4
strh r0, [r3, #0x32]
pop {r4, r5, pc}
.align 2, 0
_0808B1E4: .4byte gPlayerEntity
_0808B1E8: .4byte gUnk_081211F4
_0808B1EC: .4byte gUnk_081211FC+1
.syntax divided
@@ -0,0 +1,170 @@
.syntax unified
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r2, #1
strb r2, [r4, #0xc]
movs r3, #0
movs r0, #0x80
strh r0, [r4, #0x24]
ldrb r0, [r4, #0xe]
strb r0, [r4, #0xf]
strb r3, [r4, #0xe]
ldrb r1, [r4, #0x11]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x11]
adds r0, r4, #0
adds r0, #0x81
strb r3, [r0]
adds r0, #2
strb r3, [r0]
ldrb r1, [r4, #0x19]
movs r0, #0x3f
ands r0, r1
movs r1, #0x80
orrs r0, r1
strb r0, [r4, #0x19]
ldrb r0, [r4, #0xa]
cmp r0, #1
bne _0808F9E8
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #4
orrs r0, r1
strb r0, [r2]
adds r0, r4, #0
adds r0, #0x80
strb r3, [r0]
b _0808FA1C
_0808F9E8:
adds r0, r4, #0
adds r0, #0x80
strb r2, [r0]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #5
orrs r0, r1
strb r0, [r2]
ldrb r0, [r4, #0xa]
cmp r0, #2
beq _0808FA0A
cmp r0, #4
bne _0808FA1C
_0808FA0A:
ldrh r0, [r4, #0x32]
adds r0, #2
strh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x63
movs r0, #0xfe
strb r0, [r1]
strb r3, [r4, #0xd]
strb r3, [r4, #0x1e]
_0808FA1C:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _0808FAC4
movs r6, #0
cmp r0, #0x80
beq _0808FA84
ldrh r1, [r4, #0xa]
ldr r0, _0808FA38 @ =0x00000101
cmp r1, r0
bne _0808FA3C
movs r0, #0xf
ldrsb r0, [r4, r0]
ldrh r1, [r4, #0x32]
b _0808FA42
.align 2, 0
_0808FA38: .4byte 0x00000101
_0808FA3C:
movs r0, #0xf
ldrsb r0, [r4, r0]
ldrh r1, [r4, #0x2e]
_0808FA42:
adds r0, r0, r1
adds r1, r4, #0
adds r1, #0x7e
strh r0, [r1]
adds r5, r1, #0
ldr r3, [r4, #0x50]
cmp r3, #0
bne _0808FA5E
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
b _0808FA7C
_0808FA5E:
adds r2, r4, #0
adds r2, #0x82
ldrb r1, [r2]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808FA76
ldrb r0, [r3, #0xc]
cmp r0, #2
bne _0808FAA2
adds r6, #1
b _0808FAA2
_0808FA76:
ldrb r0, [r2]
bl CheckLocalFlag
_0808FA7C:
cmp r0, #0
beq _0808FAA2
adds r6, #1
b _0808FAA2
_0808FA84:
movs r6, #1
ldrh r1, [r4, #0xa]
ldr r0, _0808FA94 @ =0x00000101
cmp r1, r0
bne _0808FA98
ldrh r1, [r4, #0x32]
b _0808FA9A
.align 2, 0
_0808FA94: .4byte 0x00000101
_0808FA98:
ldrh r1, [r4, #0x2e]
_0808FA9A:
adds r0, r4, #0
adds r0, #0x7e
strh r1, [r0]
adds r5, r0, #0
_0808FAA2:
cmp r6, #0
beq _0808FAC4
adds r1, r4, #0
adds r1, #0x81
movs r0, #1
strb r0, [r1]
ldrh r1, [r4, #0xa]
ldr r0, _0808FABC @ =0x00000101
cmp r1, r0
bne _0808FAC0
ldrh r0, [r5]
strh r0, [r4, #0x32]
b _0808FAC4
.align 2, 0
_0808FABC: .4byte 0x00000101
_0808FAC0:
ldrh r0, [r5]
strh r0, [r4, #0x2e]
_0808FAC4:
adds r0, r4, #0
bl sub_0808FF50
pop {r4, r5, r6, pc}
.syntax divided
@@ -0,0 +1,201 @@
.syntax unified
push {r4, r5, r6, r7, lr}
adds r6, r0, #0
adds r5, r1, #0
adds r7, r2, #0
adds r0, r7, #0
movs r1, #1
bl sub_080002E0
adds r4, r0, #0
adds r0, r7, #0
movs r1, #1
bl GetTileIndex
adds r3, r0, #0
movs r0, #0x80
lsls r0, r0, #7
ands r0, r3
cmp r0, #0
bne _0809012C
adds r3, r5, #0
ldr r1, _080900D0 @ =0xFFFFBFDC
adds r0, r3, r1
cmp r0, #0xb
bhi _0809011A
lsls r0, r0, #2
ldr r1, _080900D4 @ =_080900D8
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_080900D0: .4byte 0xFFFFBFDC
_080900D4: .4byte _080900D8
_080900D8: @ jump table
.4byte _08090114 @ case 0
.4byte _08090108 @ case 1
.4byte _0809011A @ case 2
.4byte _0809011A @ case 3
.4byte _0809011A @ case 4
.4byte _0809011A @ case 5
.4byte _0809011A @ case 6
.4byte _0809011A @ case 7
.4byte _08090114 @ case 8
.4byte _0809010E @ case 9
.4byte _08090114 @ case 10
.4byte _0809010E @ case 11
_08090108:
cmp r4, #5
bne _0809011A
b _08090118
_0809010E:
cmp r4, #5
bne _0809011A
b _08090118
_08090114:
cmp r4, #0xa
bne _0809011A
_08090118:
ldr r3, _08090128 @ =0x00004022
_0809011A:
adds r0, r3, #0
adds r1, r7, #0
movs r2, #1
bl SetTile
b _08090242
.align 2, 0
_08090128: .4byte 0x00004022
_0809012C:
ldr r1, _08090140 @ =0xFFFFBFDE
adds r0, r3, r1
cmp r0, #0xd
bls _08090136
b _08090242
_08090136:
lsls r0, r0, #2
ldr r1, _08090144 @ =_08090148
adds r0, r0, r1
ldr r0, [r0]
mov pc, r0
.align 2, 0
_08090140: .4byte 0xFFFFBFDE
_08090144: .4byte _08090148
_08090148: @ jump table
.4byte _08090242 @ case 0
.4byte _08090242 @ case 1
.4byte _080901EC @ case 2
.4byte _08090180 @ case 3
.4byte _08090242 @ case 4
.4byte _08090242 @ case 5
.4byte _08090242 @ case 6
.4byte _08090242 @ case 7
.4byte _08090242 @ case 8
.4byte _08090242 @ case 9
.4byte _08090210 @ case 10
.4byte _080901B4 @ case 11
.4byte _08090210 @ case 12
.4byte _080901B4 @ case 13
_08090180:
ldr r0, _080901A8 @ =0x00004024
cmp r5, r0
bne _08090194
ldr r3, _080901AC @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
_08090194:
ldr r0, _080901B0 @ =0x0000402C
cmp r5, r0
bne _08090238
ldr r3, _080901AC @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x10
b _08090234
.align 2, 0
_080901A8: .4byte 0x00004024
_080901AC: .4byte 0x00004022
_080901B0: .4byte 0x0000402C
_080901B4:
ldr r0, _080901DC @ =0x0000402C
cmp r5, r0
bne _080901C8
ldr r3, _080901E0 @ =0x0000402B
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x10
orrs r0, r1
strb r0, [r2]
_080901C8:
ldr r0, _080901E4 @ =0x00004024
cmp r5, r0
bne _08090238
ldr r3, _080901E8 @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x10
b _08090234
.align 2, 0
_080901DC: .4byte 0x0000402C
_080901E0: .4byte 0x0000402B
_080901E4: .4byte 0x00004024
_080901E8: .4byte 0x00004022
_080901EC:
ldr r0, _08090204 @ =0x00004025
cmp r5, r0
bne _08090200
ldr r3, _08090208 @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x20
orrs r0, r1
strb r0, [r2]
_08090200:
ldr r0, _0809020C @ =0x0000402D
b _08090226
.align 2, 0
_08090204: .4byte 0x00004025
_08090208: .4byte 0x00004022
_0809020C: .4byte 0x0000402D
_08090210:
ldr r0, _08090244 @ =0x0000402D
cmp r5, r0
bne _08090224
ldr r3, _08090248 @ =0x0000402B
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x20
orrs r0, r1
strb r0, [r2]
_08090224:
ldr r0, _0809024C @ =0x00004025
_08090226:
cmp r5, r0
bne _08090238
ldr r3, _08090250 @ =0x00004022
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x20
_08090234:
orrs r0, r1
strb r0, [r2]
_08090238:
adds r0, r3, #0
adds r1, r7, #0
movs r2, #1
bl SetTile
_08090242:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08090244: .4byte 0x0000402D
_08090248: .4byte 0x0000402B
_0809024C: .4byte 0x00004025
_08090250: .4byte 0x00004022
.syntax divided
@@ -0,0 +1,256 @@
.syntax unified
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
adds r6, r0, #0
adds r4, r6, #0
adds r4, #0x83
ldrb r0, [r4]
movs r2, #0x30
ands r2, r0
movs r0, #0
mov sb, r0
strb r2, [r4]
adds r0, r6, #0
adds r0, #0x70
ldrh r5, [r0]
adds r7, r5, #0
subs r7, #0x80
adds r0, #2
ldrh r3, [r0]
movs r0, #0x80
rsbs r0, r0, #0
adds r0, r0, r3
mov r8, r0
cmp r1, #1
bne _0809039A
movs r0, #0x20
ands r0, r2
cmp r0, #0
beq _080902D4
adds r1, r3, #0
subs r1, #0x7f
movs r0, #0
bl sub_08090480
b _080902FE
_080902D4:
mov r0, r8
movs r1, #2
bl GetTileType
adds r1, r0, #0
ldr r0, _080902EC @ =0x00000301
cmp r1, r0
beq _080902F0
adds r0, #7
cmp r1, r0
beq _080902F6
b _080902FE
.align 2, 0
_080902EC: .4byte 0x00000301
_080902F0:
ldrb r0, [r4]
movs r1, #8
b _080902FA
_080902F6:
ldrb r0, [r4]
movs r1, #2
_080902FA:
orrs r0, r1
strb r0, [r4]
_080902FE:
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x2a
ands r0, r1
adds r4, r2, #0
cmp r0, #0
beq _0809031E
movs r0, #0
adds r1, r7, #0
bl sub_08090480
movs r0, #0
mov r1, r8
bl sub_08090480
_0809031E:
ldrb r1, [r4]
movs r0, #0x10
ands r0, r1
cmp r0, #0
beq _0809034E
subs r4, r7, #1
adds r0, r4, #0
movs r1, #1
bl GetTileType
movs r1, #0xc0
lsls r1, r1, #2
cmp r0, r1
bne _0809033C
b _08090478
_0809033C:
movs r0, #0
adds r1, r4, #0
bl sub_08090480
subs r1, r7, #2
movs r0, #2
bl sub_08090480
b _08090478
_0809034E:
subs r0, r7, #1
movs r1, #2
bl GetTileType
adds r1, r0, #0
movs r0, #0xc0
lsls r0, r0, #2
cmp r1, r0
beq _08090368
adds r0, #8
cmp r1, r0
beq _0809036E
b _08090376
_08090368:
ldrb r1, [r4]
movs r0, #4
b _08090372
_0809036E:
ldrb r1, [r4]
movs r0, #1
_08090372:
orrs r0, r1
strb r0, [r4]
_08090376:
ldrb r1, [r4]
movs r0, #0x15
ands r0, r1
cmp r0, #0
beq _08090478
movs r0, #0x2a
ands r0, r1
cmp r0, #0
bne _08090478
movs r0, #0
adds r1, r7, #0
bl sub_08090480
movs r0, #1
mov r1, r8
bl sub_08090480
b _08090478
_0809039A:
movs r0, #0x10
ands r0, r2
cmp r0, #0
beq _080903AE
adds r1, r5, #0
subs r1, #0x81
movs r0, #0
bl sub_08090480
b _080903DA
_080903AE:
adds r0, r7, #0
movs r1, #2
bl GetTileType
adds r1, r0, #0
ldr r0, _080903C8 @ =0x00000302
cmp r1, r0
beq _080903CC
adds r0, #4
cmp r1, r0
beq _080903D2
b _080903DA
.align 2, 0
_080903C8: .4byte 0x00000302
_080903CC:
ldrb r0, [r4]
movs r1, #4
b _080903D6
_080903D2:
ldrb r0, [r4]
movs r1, #1
_080903D6:
orrs r0, r1
strb r0, [r4]
_080903DA:
adds r2, r6, #0
adds r2, #0x83
ldrb r1, [r2]
movs r0, #0x15
ands r0, r1
adds r4, r2, #0
cmp r0, #0
beq _080903FA
movs r0, #0
adds r1, r7, #0
bl sub_08090480
movs r0, #0
mov r1, r8
bl sub_08090480
_080903FA:
ldrb r1, [r4]
movs r0, #0x20
ands r0, r1
cmp r0, #0
beq _0809042C
mov r4, r8
adds r4, #1
adds r0, r4, #0
movs r1, #1
bl GetTileType
movs r1, #0xc0
lsls r1, r1, #2
cmp r0, r1
beq _08090478
movs r0, #0
adds r1, r4, #0
bl sub_08090480
mov r1, r8
adds r1, #2
movs r0, #1
bl sub_08090480
b _08090478
_0809042C:
mov r0, r8
adds r0, #1
movs r1, #2
bl GetTileType
adds r1, r0, #0
movs r0, #0xc0
lsls r0, r0, #2
cmp r1, r0
beq _08090448
adds r0, #6
cmp r1, r0
beq _0809044E
b _08090456
_08090448:
ldrb r1, [r4]
movs r0, #8
b _08090452
_0809044E:
ldrb r1, [r4]
movs r0, #2
_08090452:
orrs r0, r1
strb r0, [r4]
_08090456:
ldrb r1, [r4]
movs r0, #0x2a
ands r0, r1
cmp r0, #0
beq _08090478
movs r0, #0x15
ands r0, r1
cmp r0, #0
bne _08090478
movs r0, #2
adds r1, r7, #0
bl sub_08090480
movs r0, #0
mov r1, r8
bl sub_08090480
_08090478:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.syntax divided
@@ -0,0 +1,91 @@
.syntax unified
push {r4, r5, r6, r7, lr}
ldr r0, _08089750 @ =gPlayerState
ldrb r1, [r0, #5]
movs r0, #0x1f
ands r0, r1
cmp r0, #0x12
bne _08089768
ldr r6, _08089754 @ =gPlayerEntity
adds r0, r6, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08089768
ldrb r3, [r6, #0x14]
movs r2, #6
ands r2, r3
lsls r2, r2, #1
ldr r0, _08089758 @ =gUnk_080B4468
adds r2, r2, r0
ldr r0, _0808975C @ =gUnk_080B4488
lsrs r3, r3, #1
lsls r3, r3, #1
adds r3, r3, r0
movs r0, #0x2e
ldrsh r1, [r6, r0]
movs r4, #0
ldrsh r0, [r2, r4]
adds r1, r1, r0
ldr r5, _08089760 @ =gRoomControls
ldrh r0, [r5, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r7, #0x32
ldrsh r0, [r6, r7]
movs r7, #2
ldrsh r2, [r2, r7]
adds r0, r0, r2
ldrh r2, [r5, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r1, r0
movs r0, #0
ldrsh r7, [r3, r0]
subs r1, r1, r7
lsls r4, r1, #0x10
lsrs r0, r4, #0x10
adds r5, r6, #0
adds r5, #0x38
ldrb r1, [r5]
bl sub_080002C8
adds r1, r0, #0
subs r0, #0x26
cmp r0, #1
bls _08089768
cmp r1, #0x29
beq _08089768
ldrb r0, [r5]
bl GetLayerByIndex
asrs r1, r4, #0x10
ldr r2, _08089764 @ =0x00002004
adds r0, r0, r2
adds r2, r0, r1
ldrb r2, [r2]
subs r1, r1, r7
adds r0, r0, r1
ldrb r0, [r0]
cmp r2, #0
bne _08089768
cmp r0, #0
bne _08089768
movs r0, #1
b _0808976A
.align 2, 0
_08089750: .4byte gPlayerState
_08089754: .4byte gPlayerEntity
_08089758: .4byte gUnk_080B4468
_0808975C: .4byte gUnk_080B4488
_08089760: .4byte gRoomControls
_08089764: .4byte 0x00002004
_08089768:
movs r0, #0
_0808976A:
pop {r4, r5, r6, r7, pc}
.syntax divided
-806
View File
@@ -1,806 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start BigIceBlock
BigIceBlock: @ 0x08099734
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
cmp r0, #3
bhi _08099754
ldr r0, _08099750 @ =gUnk_081237A0
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
b _0809975A
.align 2, 0
_08099750: .4byte gUnk_081237A0
_08099754:
adds r0, r2, #0
bl sub_08099D30
_0809975A:
pop {pc}
thumb_func_start sub_0809975C
sub_0809975C: @ 0x0809975C
push {r4, lr}
adds r4, r0, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _08099770
bl DeleteThisEntity
_08099770:
movs r2, #1
strb r2, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x11]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x11]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #4
movs r0, #0x48
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x3f
strb r2, [r0]
subs r1, #5
movs r0, #0x80
strb r0, [r1]
ldr r0, _080997C8 @ =gUnk_080FD190
str r0, [r4, #0x48]
adds r0, r4, #0
bl sub_08099910
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl InitializeAnimation
movs r0, #0x85
movs r1, #4
movs r2, #0
bl CreateObject
cmp r0, #0
beq _080997C6
str r4, [r0, #0x50]
_080997C6:
pop {r4, pc}
.align 2, 0
_080997C8: .4byte gUnk_080FD190
thumb_func_start sub_080997CC
sub_080997CC: @ 0x080997CC
push {r4, lr}
adds r4, r0, #0
bl sub_0809963C
cmp r0, #0
beq _080997EC
movs r0, #0
movs r1, #2
strb r1, [r4, #0xc]
strb r0, [r4, #0xe]
ldr r0, _080997F0 @ =0x000001B3
bl EnqueueSFX
adds r0, r4, #0
bl sub_080997F4
_080997EC:
pop {r4, pc}
.align 2, 0
_080997F0: .4byte 0x000001B3
thumb_func_start sub_080997F4
sub_080997F4: @ 0x080997F4
push {r4, lr}
adds r4, r0, #0
bl sub_0809963C
adds r1, r0, #0
cmp r1, #0
bne _08099822
ldrb r0, [r4, #0xe]
cmp r0, #1
bls _0809980E
subs r0, #2
strb r0, [r4, #0xe]
b _08099810
_0809980E:
strb r1, [r4, #0xe]
_08099810:
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _08099828
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_0805EC60
b _0809987C
_08099822:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
_08099828:
ldr r1, _08099858 @ =gUnk_081237B0
ldrb r0, [r4, #0xe]
lsrs r0, r0, #5
lsls r0, r0, #1
adds r0, r0, r1
ldrh r2, [r0]
movs r1, #0x80
lsls r1, r1, #1
adds r0, r4, #0
movs r3, #0
bl sub_0805EC9C
ldrb r0, [r4, #0xa]
cmp r0, #1
beq _0809986C
cmp r0, #2
beq _0809985C
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
b _0809986C
.align 2, 0
_08099858: .4byte gUnk_081237B0
_0809985C:
adds r0, r4, #0
adds r0, #0x86
ldrh r3, [r0]
adds r0, r4, #0
movs r1, #0x53
movs r2, #0
bl sub_080A2A3C
_0809986C:
movs r0, #3
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
_0809987C:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08099880
sub_08099880: @ 0x08099880
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
subs r1, r0, #1
strb r1, [r5, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _08099896
bl DeleteThisEntity
b _0809990E
_08099896:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x30
bne _080998A4
adds r0, r5, #0
bl sub_08099C18
_080998A4:
ldrb r0, [r5, #0xe]
movs r4, #0x3c
subs r4, r4, r0
lsls r4, r4, #5
movs r1, #0x80
lsls r1, r1, #1
adds r4, r4, r1
adds r0, r5, #0
adds r2, r4, #0
movs r3, #0
bl sub_0805EC9C
adds r0, r5, #0
adds r1, r4, #0
movs r2, #2
movs r3, #0
bl sub_0806FCF4
movs r0, #0xf
movs r1, #0x11
movs r2, #0x40
bl CreateObject
adds r6, r0, #0
cmp r6, #0
beq _0809990E
bl Random
adds r4, r0, #0
asrs r0, r4, #0x10
movs r1, #0x21
bl __modsi3
adds r2, r0, #0
subs r2, #0x10
movs r0, #0xf
ands r0, r4
subs r4, r0, #4
adds r3, r6, #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]
lsls r2, r2, #0x10
lsls r3, r4, #0x10
adds r0, r5, #0
adds r1, r6, #0
bl PositionRelative
_0809990E:
pop {r4, r5, r6, pc}
thumb_func_start sub_08099910
sub_08099910: @ 0x08099910
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r3, _08099968 @ =gRoomControls
ldrh r1, [r3, #6]
subs r0, r0, r1
asrs r6, r0, #4
movs r2, #0x3f
ands r6, r2
movs r1, #0x32
ldrsh r0, [r4, r1]
ldrh r1, [r3, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r6, r0
adds r0, r4, #0
adds r0, #0x6e
strh r6, [r0]
ldrh r2, [r4, #0x2e]
movs r0, #8
adds r1, r0, #0
ands r1, r2
lsls r1, r1, #0x10
lsrs r1, r1, #0x13
ldrh r2, [r4, #0x32]
ands r0, r2
lsls r0, r0, #0x10
asrs r0, r0, #0x12
lsls r0, r0, #0x10
asrs r0, r0, #0x10
adds r1, r1, r0
adds r0, r4, #0
adds r0, #0x6c
strh r1, [r0]
cmp r1, #2
beq _08099A4C
cmp r1, #2
bhi _0809996C
cmp r1, #1
beq _080999A8
b _08099972
.align 2, 0
_08099968: .4byte gRoomControls
_0809996C:
cmp r1, #3
bne _08099972
b _08099AF0
_08099972:
ldr r5, _080999A4 @ =0x00004022
adds r1, r6, #0
subs r1, #0x41
adds r4, #0x38
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
adds r1, r6, #0
subs r1, #0x40
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
subs r1, r6, #1
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
ldrb r2, [r4]
adds r0, r5, #0
adds r1, r6, #0
bl SetTile
b _08099BF0
.align 2, 0
_080999A4: .4byte 0x00004022
_080999A8:
adds r5, r6, #0
subs r5, #0x41
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
adds r4, #0x38
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099A40 @ =0x00004024
cmp r0, #0x12
bne _080999C0
adds r1, #0x55
_080999C0:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
ldr r7, _08099A44 @ =0x00004022
adds r1, r6, #0
subs r1, #0x40
ldrb r2, [r4]
adds r0, r7, #0
bl SetTile
adds r5, r6, #0
subs r5, #0x3f
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099A48 @ =0x00004025
cmp r0, #0x12
bne _080999EE
adds r1, #0x56
_080999EE:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
subs r5, r6, #1
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099A40 @ =0x00004024
cmp r0, #0x12
bne _08099A0C
adds r1, #0x55
_08099A0C:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
ldrb r2, [r4]
adds r0, r7, #0
adds r1, r6, #0
bl SetTile
adds r5, r6, #1
adds r0, r5, #0
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099A48 @ =0x00004025
cmp r0, #0x12
bne _08099A32
adds r1, #0x56
_08099A32:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
b _08099BF0
.align 2, 0
_08099A40: .4byte 0x00004024
_08099A44: .4byte 0x00004022
_08099A48: .4byte 0x00004025
_08099A4C:
adds r7, r6, #0
subs r7, #0x41
lsls r0, r7, #0x10
lsrs r0, r0, #0x10
adds r5, r4, #0
adds r5, #0x38
ldrb r1, [r5]
bl sub_080002C8
ldr r1, _08099AE4 @ =0x00004023
cmp r0, #0x12
bne _08099A66
adds r1, #0x54
_08099A66:
ldrb r2, [r5]
adds r0, r1, #0
adds r1, r7, #0
bl SetTile
adds r4, r6, #0
subs r4, #0x40
lsls r0, r4, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r5]
bl sub_080002C8
ldr r1, _08099AE4 @ =0x00004023
cmp r0, #0x12
bne _08099A86
adds r1, #0x54
_08099A86:
ldrb r2, [r5]
adds r0, r1, #0
adds r1, r4, #0
bl SetTile
ldr r4, _08099AE8 @ =0x00004022
subs r1, r6, #1
ldrb r2, [r5]
adds r0, r4, #0
bl SetTile
ldrb r2, [r5]
adds r0, r4, #0
adds r1, r6, #0
bl SetTile
adds r4, r6, #0
adds r4, #0x3f
adds r0, r4, #0
ldrb r1, [r5]
bl sub_080002C8
ldr r1, _08099AEC @ =0x00004026
cmp r0, #0x12
bne _08099ABA
adds r1, #0x56
_08099ABA:
ldrb r2, [r5]
adds r0, r1, #0
adds r1, r4, #0
bl SetTile
adds r4, r6, #0
adds r4, #0x40
adds r0, r4, #0
ldrb r1, [r5]
bl sub_080002C8
ldr r1, _08099AEC @ =0x00004026
cmp r0, #0x12
bne _08099AD8
adds r1, #0x56
_08099AD8:
ldrb r2, [r5]
adds r0, r1, #0
adds r1, r4, #0
bl SetTile
b _08099BF0
.align 2, 0
_08099AE4: .4byte 0x00004023
_08099AE8: .4byte 0x00004022
_08099AEC: .4byte 0x00004026
_08099AF0:
adds r5, r6, #0
subs r5, #0x41
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
adds r4, #0x38
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099BF4 @ =0x00004027
cmp r0, #0x12
bne _08099B08
adds r1, #0x4e
_08099B08:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
adds r5, r6, #0
subs r5, #0x40
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099BF8 @ =0x00004023
cmp r0, #0x12
bne _08099B28
adds r1, #0x54
_08099B28:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
adds r5, r6, #0
subs r5, #0x3f
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099BFC @ =0x00004028
cmp r0, #0x12
bne _08099B48
adds r1, #0x4e
_08099B48:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
subs r5, r6, #1
lsls r0, r5, #0x10
lsrs r0, r0, #0x10
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099C00 @ =0x00004024
cmp r0, #0x12
bne _08099B66
adds r1, #0x55
_08099B66:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
ldr r0, _08099C04 @ =0x00004022
ldrb r2, [r4]
adds r1, r6, #0
bl SetTile
adds r5, r6, #1
adds r0, r5, #0
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099C08 @ =0x00004025
cmp r0, #0x12
bne _08099B8C
adds r1, #0x56
_08099B8C:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
adds r5, r6, #0
adds r5, #0x3f
adds r0, r5, #0
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099C0C @ =0x00004029
cmp r0, #0x12
bne _08099BAA
adds r1, #0x4f
_08099BAA:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
adds r5, r6, #0
adds r5, #0x40
adds r0, r5, #0
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099C10 @ =0x00004026
cmp r0, #0x12
bne _08099BC8
adds r1, #0x56
_08099BC8:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
adds r5, r6, #0
adds r5, #0x41
adds r0, r5, #0
ldrb r1, [r4]
bl sub_080002C8
ldr r1, _08099C14 @ =0x0000402A
cmp r0, #0x12
bne _08099BE6
adds r1, #0x50
_08099BE6:
ldrb r2, [r4]
adds r0, r1, #0
adds r1, r5, #0
bl SetTile
_08099BF0:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08099BF4: .4byte 0x00004027
_08099BF8: .4byte 0x00004023
_08099BFC: .4byte 0x00004028
_08099C00: .4byte 0x00004024
_08099C04: .4byte 0x00004022
_08099C08: .4byte 0x00004025
_08099C0C: .4byte 0x00004029
_08099C10: .4byte 0x00004026
_08099C14: .4byte 0x0000402A
thumb_func_start sub_08099C18
sub_08099C18: @ 0x08099C18
push {r4, r5, lr}
adds r1, r0, #0
adds r0, #0x6e
ldrh r5, [r0]
subs r0, #2
ldrh r0, [r0]
cmp r0, #2
beq _08099C96
cmp r0, #2
bgt _08099C32
cmp r0, #1
beq _08099C60
b _08099C36
_08099C32:
cmp r0, #3
beq _08099CD4
_08099C36:
adds r0, r5, #0
subs r0, #0x41
adds r4, r1, #0
adds r4, #0x38
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
subs r0, #0x40
ldrb r1, [r4]
bl sub_0807BA8C
subs r0, r5, #1
ldrb r1, [r4]
bl sub_0807BA8C
ldrb r1, [r4]
adds r0, r5, #0
bl sub_0807BA8C
b _08099D2C
_08099C60:
adds r0, r5, #0
subs r0, #0x41
adds r4, r1, #0
adds r4, #0x38
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
subs r0, #0x40
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
subs r0, #0x3f
ldrb r1, [r4]
bl sub_0807BA8C
subs r0, r5, #1
ldrb r1, [r4]
bl sub_0807BA8C
ldrb r1, [r4]
adds r0, r5, #0
bl sub_0807BA8C
adds r0, r5, #1
b _08099CCC
_08099C96:
adds r0, r5, #0
subs r0, #0x41
adds r4, r1, #0
adds r4, #0x38
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
subs r0, #0x40
ldrb r1, [r4]
bl sub_0807BA8C
subs r0, r5, #1
ldrb r1, [r4]
bl sub_0807BA8C
ldrb r1, [r4]
adds r0, r5, #0
bl sub_0807BA8C
adds r0, r5, #0
adds r0, #0x3f
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
adds r0, #0x40
_08099CCC:
ldrb r1, [r4]
bl sub_0807BA8C
b _08099D2C
_08099CD4:
adds r0, r5, #0
subs r0, #0x41
adds r4, r1, #0
adds r4, #0x38
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
subs r0, #0x40
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
subs r0, #0x3f
ldrb r1, [r4]
bl sub_0807BA8C
subs r0, r5, #1
ldrb r1, [r4]
bl sub_0807BA8C
ldrb r1, [r4]
adds r0, r5, #0
bl sub_0807BA8C
adds r0, r5, #1
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
adds r0, #0x3f
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
adds r0, #0x40
ldrb r1, [r4]
bl sub_0807BA8C
adds r0, r5, #0
adds r0, #0x41
ldrb r1, [r4]
bl sub_0807BA8C
_08099D2C:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_08099D30
sub_08099D30: @ 0x08099D30
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _08099D40
bl DeleteThisEntity
_08099D40:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _08099D6A
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #4
bl InitializeAnimation
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPositionAndSpriteOffset
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x63
ldrb r0, [r1]
subs r0, #1
strb r0, [r1]
_08099D6A:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #1
bhi _08099DAA
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, #0x5a
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08099DA2
movs r0, #0
strb r0, [r2]
bl Random
movs r1, #0x78
ands r0, r1
adds r0, #0x78
adds r1, r4, #0
adds r1, #0x59
strb r0, [r1]
_08099DA2:
adds r0, r4, #0
bl GetNextFrame
b _08099DB4
_08099DAA:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_08099DB4:
pop {r4, pc}
.align 2, 0
-542
View File
@@ -1,542 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start BlockPushed
BlockPushed: @ 0x08082E9C
push {lr}
ldr r2, _08082EB0 @ =gUnk_0811F624
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_08082EB0: .4byte gUnk_0811F624
thumb_func_start sub_08082EB4
sub_08082EB4: @ 0x08082EB4
push {r4, r5, r6, lr}
adds r4, r0, #0
ldr r0, _08082EE0 @ =gRoomControls
ldrb r1, [r0, #4]
adds r6, r0, #0
cmp r1, #0x11
bne _08082EF6
adds r0, r4, #0
bl sub_080AE068
ldr r1, _08082EE4 @ =0x000001C1
adds r0, r4, #0
bl LoadFixedGFX
cmp r0, #0
bne _08082EE8
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
b _0808308E
.align 2, 0
_08082EE0: .4byte gRoomControls
_08082EE4: .4byte 0x000001C1
_08082EE8:
ldrb r0, [r4, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r0
movs r0, #1
orrs r1, r0
strb r1, [r4, #0x18]
_08082EF6:
movs r0, #1
strb r0, [r4, #0xc]
movs r0, #0x20
strb r0, [r4, #0xe]
movs r0, #0x80
strh r0, [r4, #0x24]
adds r2, r4, #0
adds r2, #0x29
ldrb r1, [r2]
subs r0, #0x88
ands r0, r1
movs r1, #6
orrs r0, r1
strb r0, [r2]
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldrh r1, [r6, #6]
subs r0, r0, r1
asrs r5, r0, #4
movs r2, #0x3f
ands r5, r2
movs r1, #0x32
ldrsh r0, [r4, r1]
ldrh r1, [r6, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r5, r0
ldrb r1, [r4, #0xa]
lsls r1, r1, #3
ldrh r0, [r4, #0x2e]
adds r0, r1, r0
strh r0, [r4, #0x2e]
ldrh r0, [r4, #0x32]
adds r1, r1, r0
strh r1, [r4, #0x32]
ldr r1, _08082F6C @ =gUnk_0811F64C
ldrb r0, [r4, #0xa]
lsls r0, r0, #2
adds r0, r0, r1
ldr r0, [r0]
str r0, [r4, #0x48]
adds r0, r4, #0
adds r0, #0x38
ldrb r1, [r0]
adds r0, r5, #0
bl GetTileType
str r0, [r4, #0x68]
ldrb r0, [r4, #0xa]
cmp r0, #1
beq _08082F7A
cmp r0, #1
bgt _08082F70
cmp r0, #0
beq _08082F76
b _08082FF0
.align 2, 0
_08082F6C: .4byte gUnk_0811F64C
_08082F70:
cmp r0, #2
beq _08082F9A
b _08082FF0
_08082F76:
adds r0, r5, #0
b _08082FE8
_08082F7A:
adds r0, r5, #0
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #1
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x40
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x41
b _08082FE8
_08082F9A:
adds r0, r5, #0
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #1
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #2
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x40
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x41
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x42
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x80
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x81
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x82
_08082FE8:
adds r1, r4, #0
bl sub_080832D8
b _08083088
_08082FF0:
adds r0, r5, #0
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #1
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #2
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #3
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x40
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x41
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x42
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x43
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x80
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x81
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x82
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0x83
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0xc0
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0xc1
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0xc2
adds r1, r4, #0
bl sub_080832D8
adds r0, r5, #0
adds r0, #0xc3
adds r1, r4, #0
bl sub_080832D8
_08083088:
ldr r0, _08083090 @ =0x0000010F
bl EnqueueSFX
_0808308E:
pop {r4, r5, r6, pc}
.align 2, 0
_08083090: .4byte 0x0000010F
thumb_func_start sub_08083094
sub_08083094: @ 0x08083094
push {r4, lr}
adds r4, r0, #0
bl LinearMoveUpdate
adds r0, r4, #0
bl sub_0800445C
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _080830B4
adds r0, r4, #0
bl sub_080830B8
_080830B4:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_080830B8
sub_080830B8: @ 0x080830B8
push {r4, r5, r6, r7, lr}
mov r7, sb
mov r6, r8
push {r6, r7}
mov sb, r0
ldrb r5, [r0, #0xa]
lsls r4, r5, #3
movs r1, #0x2e
ldrsh r0, [r0, r1]
subs r0, r0, r4
ldr r3, _080830FC @ =gRoomControls
ldrh r1, [r3, #6]
subs r0, r0, r1
asrs r7, r0, #4
movs r2, #0x3f
ands r7, r2
mov r6, sb
movs r1, #0x32
ldrsh r0, [r6, r1]
subs r0, r0, r4
ldrh r1, [r3, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r7, r0
cmp r5, #1
beq _08083128
cmp r5, #1
bgt _08083100
cmp r5, #0
beq _08083106
b _080831EC
.align 2, 0
_080830FC: .4byte gRoomControls
_08083100:
cmp r5, #2
beq _08083160
b _080831EC
_08083106:
mov r0, sb
bl sub_0800442E
cmp r0, #0
beq _08083112
b _080832C0
_08083112:
ldr r0, _08083124 @ =0x00000365
mov r1, sb
adds r1, #0x38
ldrb r2, [r1]
adds r1, r7, #0
bl sub_0807B7D8
b _080832BA
.align 2, 0
_08083124: .4byte 0x00000365
_08083128:
mov r2, sb
ldr r0, [r2, #0x68]
mov r4, sb
adds r4, #0x38
ldrb r2, [r4]
adds r1, r7, #0
bl sub_0807B7D8
ldr r0, _08083158 @ =0x0000036F
adds r1, r7, #1
ldrb r2, [r4]
bl sub_0807B7D8
movs r0, #0xdc
lsls r0, r0, #2
adds r1, r7, #0
adds r1, #0x40
ldrb r2, [r4]
bl sub_0807B7D8
ldr r0, _0808315C @ =0x00000371
adds r1, r7, #0
adds r1, #0x41
b _080831CA
.align 2, 0
_08083158: .4byte 0x0000036F
_0808315C: .4byte 0x00000371
_08083160:
mov r6, sb
ldr r0, [r6, #0x68]
mov r4, sb
adds r4, #0x38
ldrb r2, [r4]
adds r1, r7, #0
bl sub_0807B7D8
ldr r0, _080831D4 @ =0x00000372
adds r1, r7, #1
ldrb r2, [r4]
bl sub_0807B7D8
ldr r0, _080831D8 @ =0x0000036F
adds r1, r7, #2
ldrb r2, [r4]
bl sub_0807B7D8
movs r0, #0xdd
lsls r0, r0, #2
adds r1, r7, #0
adds r1, #0x40
ldrb r2, [r4]
bl sub_0807B7D8
ldr r0, _080831DC @ =0x00000376
adds r1, r7, #0
adds r1, #0x41
ldrb r2, [r4]
bl sub_0807B7D8
ldr r0, _080831E0 @ =0x00000375
adds r1, r7, #0
adds r1, #0x42
ldrb r2, [r4]
bl sub_0807B7D8
movs r0, #0xdc
lsls r0, r0, #2
adds r1, r7, #0
adds r1, #0x80
ldrb r2, [r4]
bl sub_0807B7D8
ldr r0, _080831E4 @ =0x00000373
adds r1, r7, #0
adds r1, #0x81
ldrb r2, [r4]
bl sub_0807B7D8
ldr r0, _080831E8 @ =0x00000371
adds r1, r7, #0
adds r1, #0x82
_080831CA:
ldrb r2, [r4]
bl sub_0807B7D8
b _080832BA
.align 2, 0
_080831D4: .4byte 0x00000372
_080831D8: .4byte 0x0000036F
_080831DC: .4byte 0x00000376
_080831E0: .4byte 0x00000375
_080831E4: .4byte 0x00000373
_080831E8: .4byte 0x00000371
_080831EC:
mov r1, sb
ldr r0, [r1, #0x68]
mov r4, sb
adds r4, #0x38
ldrb r2, [r4]
adds r1, r7, #0
bl sub_0807B7D8
ldr r5, _080832C8 @ =0x00000372
adds r1, r7, #1
ldrb r2, [r4]
adds r0, r5, #0
bl sub_0807B7D8
adds r1, r7, #2
ldrb r2, [r4]
adds r0, r5, #0
bl sub_0807B7D8
ldr r0, _080832CC @ =0x0000036F
adds r1, r7, #3
ldrb r2, [r4]
bl sub_0807B7D8
movs r2, #0xdd
lsls r2, r2, #2
mov r8, r2
adds r1, r7, #0
adds r1, #0x40
ldrb r2, [r4]
mov r0, r8
bl sub_0807B7D8
adds r5, #4
adds r1, r7, #0
adds r1, #0x41
ldrb r2, [r4]
adds r0, r5, #0
bl sub_0807B7D8
adds r1, r7, #0
adds r1, #0x42
ldrb r2, [r4]
adds r0, r5, #0
bl sub_0807B7D8
ldr r6, _080832D0 @ =0x00000375
adds r1, r7, #0
adds r1, #0x43
ldrb r2, [r4]
adds r0, r6, #0
bl sub_0807B7D8
adds r1, r7, #0
adds r1, #0x80
ldrb r2, [r4]
mov r0, r8
bl sub_0807B7D8
adds r1, r7, #0
adds r1, #0x81
ldrb r2, [r4]
adds r0, r5, #0
bl sub_0807B7D8
adds r1, r7, #0
adds r1, #0x82
ldrb r2, [r4]
adds r0, r5, #0
bl sub_0807B7D8
adds r1, r7, #0
adds r1, #0x83
ldrb r2, [r4]
adds r0, r6, #0
bl sub_0807B7D8
movs r0, #0xdc
lsls r0, r0, #2
adds r1, r7, #0
adds r1, #0xc0
ldrb r2, [r4]
bl sub_0807B7D8
subs r5, #3
adds r1, r7, #0
adds r1, #0xc1
ldrb r2, [r4]
adds r0, r5, #0
bl sub_0807B7D8
adds r1, r7, #0
adds r1, #0xc2
ldrb r2, [r4]
adds r0, r5, #0
bl sub_0807B7D8
ldr r0, _080832D4 @ =0x00000371
adds r1, r7, #0
adds r1, #0xc3
ldrb r2, [r4]
bl sub_0807B7D8
_080832BA:
mov r0, sb
bl DeleteEntity
_080832C0:
pop {r3, r4}
mov r8, r3
mov sb, r4
pop {r4, r5, r6, r7, pc}
.align 2, 0
_080832C8: .4byte 0x00000372
_080832CC: .4byte 0x0000036F
_080832D0: .4byte 0x00000375
_080832D4: .4byte 0x00000371
thumb_func_start sub_080832D8
sub_080832D8: @ 0x080832D8
push {lr}
adds r3, r0, #0
adds r2, r1, #0
adds r2, #0x38
ldrb r0, [r2]
cmp r0, #2
beq _080832FC
ldrb r1, [r1, #0x15]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _080832F6
ldrb r2, [r2]
movs r0, #0x21
b _0808330A
_080832F6:
ldrb r2, [r2]
movs r0, #0x20
b _0808330A
_080832FC:
ldrb r1, [r1, #0x15]
movs r0, #8
ands r0, r1
cmp r0, #0
beq _08083312
ldrb r2, [r2]
movs r0, #0x2f
_0808330A:
adds r1, r3, #0
bl sub_0807B7D8
b _0808331C
_08083312:
ldrb r2, [r2]
movs r0, #0x2e
adds r1, r3, #0
bl sub_0807B7D8
_0808331C:
pop {pc}
.align 2, 0
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
-537
View File
@@ -1,537 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PushableGrave
PushableGrave: @ 0x08097588
push {lr}
ldr r2, _0809759C @ =gUnk_081232AC
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0809759C: .4byte gUnk_081232AC
thumb_func_start sub_080975A0
sub_080975A0: @ 0x080975A0
push {r4, r5, r6, r7, lr}
mov r7, r8
push {r7}
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]
ldrb r0, [r4, #0xa]
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]
movs r1, #0x2e
ldrsh r0, [r4, r1]
ldr r2, _08097690 @ =gRoomControls
mov r8, r2
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r5, r0, #4
movs r6, #0x3f
ands r5, r6
movs r1, #0x32
ldrsh r0, [r4, r1]
ldrh r1, [r2, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r5, r0
adds r0, r5, #0
subs r0, #0x41
adds r7, r4, #0
adds r7, #0x38
ldrb r1, [r7]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x6a
strh r0, [r1]
adds r0, r5, #0
subs r0, #0x40
ldrb r1, [r7]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x6c
strh r0, [r1]
adds r0, r5, #0
subs r0, #0x3f
ldrb r1, [r7]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x6e
strh r0, [r1]
subs r0, r5, #1
ldrb r1, [r7]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x70
strh r0, [r1]
ldrb r1, [r7]
adds r0, r5, #0
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x72
strh r0, [r1]
adds r0, r5, #1
ldrb r1, [r7]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x74
strh r0, [r1]
adds r0, r5, #0
adds r0, #0x3f
ldrb r1, [r7]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x76
strh r0, [r1]
adds r0, r5, #0
adds r0, #0x40
ldrb r1, [r7]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x78
strh r0, [r1]
adds r0, r5, #0
adds r0, #0x41
ldrb r1, [r7]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x7a
strh r0, [r1]
adds r0, r4, #0
bl sub_0809798C
cmp r0, #0
beq _080976A2
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08097694
ldrh r0, [r4, #0x32]
subs r0, #0x16
b _08097698
.align 2, 0
_08097690: .4byte gRoomControls
_08097694:
ldrh r0, [r4, #0x32]
subs r0, #0x10
_08097698:
strh r0, [r4, #0x32]
adds r0, r4, #0
bl sub_080977F4
b _08097722
_080976A2:
movs r0, #1
strb r0, [r4, #0xc]
movs r2, #0x2e
ldrsh r0, [r4, r2]
mov r2, r8
ldrh r1, [r2, #6]
subs r0, r0, r1
asrs r5, r0, #4
ands r5, r6
movs r1, #0x32
ldrsh r0, [r4, r1]
ldrh r1, [r2, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r6
lsls r0, r0, #6
orrs r5, r0
adds r0, r4, #0
adds r0, #0x68
strh r5, [r0]
ldr r1, _080976FC @ =gUnk_081232DE
ldrb r0, [r4, #0xb]
lsls r0, r0, #1
adds r0, r0, r1
ldrh r6, [r0]
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _08097704
ldr r0, _08097700 @ =gUnk_080FD578
str r0, [r4, #0x48]
subs r1, r5, #1
ldrb r2, [r7]
adds r0, r6, #0
bl SetTile
ldrb r2, [r7]
adds r0, r6, #0
adds r1, r5, #0
bl SetTile
ldrh r0, [r4, #0x32]
adds r0, #2
strh r0, [r4, #0x32]
b _08097722
.align 2, 0
_080976FC: .4byte gUnk_081232DE
_08097700: .4byte gUnk_080FD578
_08097704:
ldr r0, _08097728 @ =gUnk_080FD570
str r0, [r4, #0x48]
ldrb r2, [r7]
adds r0, r6, #0
adds r1, r5, #0
bl SetTile
ldrb r0, [r4, #0xb]
cmp r0, #2
bne _08097722
ldr r0, _0809772C @ =gUnk_081232C0
ldrb r2, [r7]
adds r1, r5, #0
bl sub_0801AF18
_08097722:
pop {r3}
mov r8, r3
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08097728: .4byte gUnk_080FD570
_0809772C: .4byte gUnk_081232C0
thumb_func_start sub_08097730
sub_08097730: @ 0x08097730
push {r4, lr}
adds r4, r0, #0
bl sub_0809785C
cmp r0, #0
beq _08097744
ldrb r1, [r4, #0xe]
adds r0, r4, #0
bl RequestPriorityDuration
_08097744:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08097748
sub_08097748: @ 0x08097748
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xd]
cmp r0, #0
bne _08097774
ldrb r0, [r2, #0xf]
subs r0, #1
strb r0, [r2, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809779A
movs r0, #1
strb r0, [r2, #0xd]
movs r0, #0x78
strb r0, [r2, #0xf]
ldr r1, _08097770 @ =gRoomControls
str r2, [r1, #0x30]
movs r0, #2
strb r0, [r1, #0xe]
b _0809779A
.align 2, 0
_08097770: .4byte gRoomControls
_08097774:
ldrb r0, [r2, #0xf]
subs r0, #1
strb r0, [r2, #0xf]
lsls r0, r0, #0x18
cmp r0, #0
bne _0809779A
movs r0, #3
strb r0, [r2, #0xc]
movs r0, #0x60
strb r0, [r2, #0xe]
movs r0, #0x14
strb r0, [r2, #0xf]
adds r0, r2, #0
movs r1, #0x60
bl RequestPriorityDuration
ldr r0, _0809779C @ =0x0000010F
bl SoundReq
_0809779A:
pop {pc}
.align 2, 0
_0809779C: .4byte 0x0000010F
thumb_func_start sub_080977A0
sub_080977A0: @ 0x080977A0
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
cmp r0, #0
beq _080977BC
subs r0, #1
strb r0, [r4, #0xe]
adds r0, r4, #0
bl LinearMoveUpdate
adds r0, r4, #0
bl sub_0800445C
b _080977E4
_080977BC:
ldrb r0, [r4, #0xf]
cmp r0, #0
beq _080977C8
subs r0, #1
strb r0, [r4, #0xf]
b _080977E4
_080977C8:
movs r0, #0x72
bl EnqueueSFX
adds r0, r4, #0
bl sub_080977F4
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _080977E4
ldr r0, _080977E8 @ =gRoomControls
ldr r1, _080977EC @ =gPlayerEntity
str r1, [r0, #0x30]
movs r1, #4
strb r1, [r0, #0xe]
_080977E4:
pop {r4, pc}
.align 2, 0
_080977E8: .4byte gRoomControls
_080977EC: .4byte gPlayerEntity
thumb_func_start nullsub_528
nullsub_528: @ 0x080977F0
bx lr
.align 2, 0
thumb_func_start sub_080977F4
sub_080977F4: @ 0x080977F4
push {r4, r5, r6, r7, lr}
adds r5, r0, #0
movs r1, #0
movs r0, #4
strb r0, [r5, #0xc]
adds r0, r5, #0
adds r0, #0x63
strb r1, [r0]
movs r1, #0x2e
ldrsh r0, [r5, r1]
ldr r3, _08097854 @ =gRoomControls
ldrh r1, [r3, #6]
subs r0, r0, r1
asrs r4, r0, #4
movs r2, #0x3f
ands r4, r2
movs r1, #0x32
ldrsh r0, [r5, r1]
ldrh r1, [r3, #8]
subs r0, r0, r1
asrs r0, r0, #4
ands r0, r2
lsls r0, r0, #6
orrs r4, r0
ldr r7, _08097858 @ =0x00004022
adds r6, r5, #0
adds r6, #0x38
ldrb r2, [r6]
adds r0, r7, #0
adds r1, r4, #0
bl SetTile
ldrb r0, [r5, #0xa]
cmp r0, #0
bne _08097844
subs r1, r4, #1
ldrb r2, [r6]
adds r0, r7, #0
bl SetTile
_08097844:
adds r1, r5, #0
adds r1, #0x86
ldrh r0, [r1]
cmp r0, #0
beq _08097852
bl SetFlag
_08097852:
pop {r4, r5, r6, r7, pc}
.align 2, 0
_08097854: .4byte gRoomControls
_08097858: .4byte 0x00004022
thumb_func_start sub_0809785C
sub_0809785C: @ 0x0809785C
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r4, [r5, #0xa]
cmp r4, #0
beq _08097948
ldrb r0, [r5, #0xb]
cmp r0, #0
bne _0809786E
b _08097986
_0809786E:
adds r0, r5, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
adds r4, r5, #0
adds r4, #0x68
adds r6, r5, #0
adds r6, #0x38
cmp r0, #0
bne _08097892
ldrh r0, [r4]
ldrb r1, [r6]
bl GetTileType
ldr r1, _08097940 @ =0x0000403F
cmp r0, r1
bne _08097986
_08097892:
movs r1, #0
movs r0, #3
strb r0, [r5, #0xc]
movs r0, #0x40
strb r0, [r5, #0xe]
strb r1, [r5, #0xf]
strb r1, [r5, #0x15]
strh r0, [r5, #0x24]
ldrh r4, [r4]
adds r0, r5, #0
adds r0, #0x72
ldrh r0, [r0]
ldrb r2, [r6]
adds r1, r4, #0
bl sub_0807B9B8
ldrb r0, [r5, #0xb]
cmp r0, #2
bne _08097934
adds r0, r5, #0
adds r0, #0x6a
ldrh r0, [r0]
adds r1, r4, #0
subs r1, #0x41
ldrb r2, [r6]
bl sub_0807B9B8
adds r0, r5, #0
adds r0, #0x6c
ldrh r0, [r0]
adds r1, r4, #0
subs r1, #0x40
ldrb r2, [r6]
bl sub_0807B9B8
adds r0, r5, #0
adds r0, #0x6e
ldrh r0, [r0]
adds r1, r4, #0
subs r1, #0x3f
ldrb r2, [r6]
bl sub_0807B9B8
adds r0, r5, #0
adds r0, #0x70
ldrh r0, [r0]
subs r1, r4, #1
ldrb r2, [r6]
bl sub_0807B9B8
adds r0, r5, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r4, #1
ldrb r2, [r6]
bl sub_0807B9B8
adds r0, r5, #0
adds r0, #0x76
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x3f
ldrb r2, [r6]
bl sub_0807B9B8
adds r0, r5, #0
adds r0, #0x78
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x40
ldrb r2, [r6]
bl sub_0807B9B8
adds r0, r5, #0
adds r0, #0x7a
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x41
ldrb r2, [r6]
bl sub_0807B9B8
_08097934:
ldr r0, _08097944 @ =0x0000010F
bl SoundReq
movs r0, #1
b _08097988
.align 2, 0
_08097940: .4byte 0x0000403F
_08097944: .4byte 0x0000010F
_08097948:
adds r0, r5, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _08097986
movs r0, #2
strb r0, [r5, #0xc]
strb r4, [r5, #0xd]
movs r0, #0xf0
strb r0, [r5, #0xe]
movs r0, #0x3c
strb r0, [r5, #0xf]
strb r4, [r5, #0x15]
movs r0, #0x40
strh r0, [r5, #0x24]
adds r4, r5, #0
adds r4, #0x68
ldrh r0, [r4]
adds r5, #0x38
ldrb r1, [r5]
bl sub_0807BA8C
ldrh r0, [r4]
subs r0, #1
ldrb r1, [r5]
bl sub_0807BA8C
movs r0, #1
b _08097988
_08097986:
movs r0, #0
_08097988:
pop {r4, r5, r6, pc}
.align 2, 0
thumb_func_start sub_0809798C
sub_0809798C: @ 0x0809798C
push {r4, lr}
adds r1, r0, #0
movs r4, #0
ldrb r0, [r1, #0xa]
cmp r0, #0
beq _0809799E
ldrb r0, [r1, #0xb]
cmp r0, #0
beq _080979AE
_0809799E:
adds r0, r1, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _080979AE
movs r4, #1
_080979AE:
adds r0, r4, #0
pop {r4, pc}
.align 2, 0
-269
View File
@@ -1,269 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PushableRock
PushableRock: @ 0x0808A4F4
push {lr}
ldr r2, _0808A508 @ =gUnk_08121078
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_0808A508: .4byte gUnk_08121078
thumb_func_start sub_0808A50C
sub_0808A50C: @ 0x0808A50C
push {lr}
ldrb r2, [r0, #0x18]
movs r1, #4
rsbs r1, r1, #0
ands r1, r2
movs r2, #1
orrs r1, r2
strb r1, [r0, #0x18]
ldrb r1, [r0, #0xc]
adds r1, #1
strb r1, [r0, #0xc]
ldrb r2, [r0, #0x19]
movs r1, #0x3f
ands r1, r2
movs r2, #0x80
orrs r1, r2
strb r1, [r0, #0x19]
adds r3, r0, #0
adds r3, #0x29
ldrb r2, [r3]
movs r1, #8
rsbs r1, r1, #0
ands r1, r2
movs r2, #4
orrs r1, r2
movs r2, #0x39
rsbs r2, r2, #0
ands r1, r2
movs r2, #0x18
orrs r1, r2
strb r1, [r3]
bl sub_0808A644
pop {pc}
thumb_func_start sub_0808A550
sub_0808A550: @ 0x0808A550
push {r4, lr}
adds r4, r0, #0
adds r0, #0x74
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
adds r1, r0, #0
ldr r0, _0808A58C @ =0x0000401F
cmp r1, r0
bhi _0808A5CC
subs r0, #3
cmp r1, r0
blo _0808A5CC
adds r0, r1, #0
subs r0, #0x1c
lsls r1, r0, #1
strb r1, [r4, #0x14]
lsls r1, r0, #3
strb r1, [r4, #0x15]
lsls r0, r0, #0x19
lsrs r0, r0, #0x18
cmp r0, #2
bne _0808A590
ldrb r0, [r4, #0x18]
movs r1, #0x40
orrs r0, r1
b _0808A598
.align 2, 0
_0808A58C: .4byte 0x0000401F
_0808A590:
ldrb r1, [r4, #0x18]
movs r0, #0x41
rsbs r0, r0, #0
ands r0, r1
_0808A598:
strb r0, [r4, #0x18]
adds r0, r4, #0
adds r0, #0x70
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x74
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
movs r0, #2
strb r0, [r4, #0xc]
ldrb r1, [r4, #0x14]
lsrs r1, r1, #1
adds r1, #1
adds r0, r4, #0
bl InitializeAnimation
ldr r0, _0808A5C8 @ =0x0000010F
bl EnqueueSFX
b _0808A5DE
.align 2, 0
_0808A5C8: .4byte 0x0000010F
_0808A5CC:
adds r0, r4, #0
adds r0, #0x58
ldrb r0, [r0]
cmp r0, #0
beq _0808A5DE
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_0808A5DE:
pop {r4, pc}
thumb_func_start sub_0808A5E0
sub_0808A5E0: @ 0x0808A5E0
push {r4, r5, lr}
adds r4, r0, #0
bl sub_0800445C
ldr r2, _0808A618 @ =gUnk_08121088
adds r5, r4, #0
adds r5, #0x5a
ldrb r1, [r5]
movs r0, #0xf
ands r0, r1
lsls r0, r0, #1
adds r0, r0, r2
ldrh r0, [r0]
strh r0, [r4, #0x24]
adds r0, r4, #0
bl LinearMoveUpdate
adds r0, r4, #0
bl GetNextFrame
ldrb r1, [r5]
movs r0, #0x80
ands r0, r1
cmp r0, #0
beq _0808A616
movs r0, #0
strb r0, [r4, #0xc]
_0808A616:
pop {r4, r5, pc}
.align 2, 0
_0808A618: .4byte gUnk_08121088
thumb_func_start sub_0808A61C
sub_0808A61C: @ 0x0808A61C
push {lr}
adds r2, r0, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #0x80
ands r0, r1
cmp r0, #0
bne _0808A634
adds r0, r2, #0
bl GetNextFrame
b _0808A640
_0808A634:
adds r0, r2, #0
adds r0, #0x29
ldrb r1, [r0]
movs r2, #7
orrs r1, r2
strb r1, [r0]
_0808A640:
pop {pc}
.align 2, 0
thumb_func_start sub_0808A644
sub_0808A644: @ 0x0808A644
push {r4, r5, r6, lr}
adds r4, r0, #0
movs r0, #0x2e
ldrsh r1, [r4, r0]
ldr r2, _0808A6D0 @ =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
adds r5, r4, #0
adds r5, #0x74
strh r1, [r5]
ldrh r0, [r5]
adds r6, r4, #0
adds r6, #0x38
ldrb r1, [r6]
bl GetTileIndex
adds r1, r4, #0
adds r1, #0x70
strh r0, [r1]
ldrh r0, [r5]
ldrb r1, [r6]
bl sub_080002E0
adds r1, r4, #0
adds r1, #0x72
strb r0, [r1]
ldrh r0, [r5]
ldrb r1, [r6]
bl sub_080002C8
cmp r0, #0x19
beq _0808A69E
cmp r0, #0xf0
bne _0808A6E2
_0808A69E:
ldr r0, _0808A6D4 @ =0x00004015
ldrh r1, [r5]
ldrb r2, [r6]
bl SetTile
movs r0, #3
strb r0, [r4, #0xc]
adds r5, r4, #0
adds r5, #0x86
ldrh r0, [r5]
bl CheckFlags
cmp r0, #0
bne _0808A6D8
ldrh r0, [r5]
bl SetFlag
movs r0, #0xcd
bl SoundReq
adds r0, r4, #0
movs r1, #5
bl InitializeAnimation
b _0808A6EC
.align 2, 0
_0808A6D0: .4byte gRoomControls
_0808A6D4: .4byte 0x00004015
_0808A6D8:
adds r0, r4, #0
movs r1, #6
bl InitializeAnimation
b _0808A6EC
_0808A6E2:
ldr r0, _0808A6F0 @ =0x0000401B
ldrh r1, [r5]
ldrb r2, [r6]
bl SetTile
_0808A6EC:
pop {r4, r5, r6, pc}
.align 2, 0
_0808A6F0: .4byte 0x0000401B
-741
View File
@@ -1,741 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start PushableStatue
PushableStatue: @ 0x080891DC
push {lr}
ldr r2, _080891F0 @ =gUnk_08120C98
ldrb r1, [r0, #0xc]
lsls r1, r1, #2
adds r1, r1, r2
ldr r1, [r1]
bl _call_via_r1
pop {pc}
.align 2, 0
_080891F0: .4byte gUnk_08120C98
thumb_func_start sub_080891F4
sub_080891F4: @ 0x080891F4
push {r4, lr}
adds r4, r0, #0
bl sub_0808965C
cmp r0, #0
beq _08089236
movs r3, #0
movs r2, #1
strb r2, [r4, #0xc]
movs r0, #0x80
strh r0, [r4, #0x24]
ldrb r1, [r4, #0x11]
subs r0, #0x90
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x11]
ldr r0, _08089238 @ =gUnk_080FD1F4
str r0, [r4, #0x48]
strb r2, [r4, #0x16]
adds r0, r4, #0
adds r0, #0x86
strh r3, [r0]
adds r0, r4, #0
bl sub_08089454
adds r0, r4, #0
bl sub_080894C8
adds r0, r4, #0
movs r1, #0
bl InitializeAnimation
_08089236:
pop {r4, pc}
.align 2, 0
_08089238: .4byte gUnk_080FD1F4
thumb_func_start sub_0808923C
sub_0808923C: @ 0x0808923C
push {r4, r5, lr}
adds r4, r0, #0
bl sub_0800442E
cmp r0, #0
bne _080892C0
adds r0, r4, #0
adds r0, #0x84
ldrh r0, [r0]
adds r1, r4, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
lsls r0, r0, #0x10
lsrs r5, r0, #0x10
ldr r0, _08089278 @ =0x0000400B
cmp r5, r0
beq _080892BA
adds r0, r5, #0
bl sub_0808968C
cmp r0, #1
beq _0808927C
cmp r0, #1
blo _08089294
cmp r0, #2
beq _080892B2
b _080892C0
.align 2, 0
_08089278: .4byte 0x0000400B
_0808927C:
movs r1, #3
movs r0, #3
strb r0, [r4, #0xc]
adds r0, r5, #0
subs r0, #0xc
ands r0, r1
lsls r0, r0, #3
strb r0, [r4, #0x15]
adds r0, r4, #0
bl sub_08089538
b _080892C0
_08089294:
movs r0, #0xf
movs r1, #4
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _080892AA
adds r0, r4, #0
bl CopyPosition
_080892AA:
adds r0, r4, #0
bl sub_080894FC
b _080892C0
_080892B2:
adds r0, r4, #0
adds r0, #0x80
strh r5, [r0]
b _080892C0
_080892BA:
adds r0, r4, #0
bl sub_08078930
_080892C0:
pop {r4, r5, pc}
.align 2, 0
thumb_func_start sub_080892C4
sub_080892C4: @ 0x080892C4
push {lr}
adds r2, r0, #0
adds r0, #0x86
ldrh r0, [r0]
cmp r0, #0
beq _080892D8
adds r0, r2, #0
bl sub_080895C0
b _080892F6
_080892D8:
ldr r0, _080892F8 @ =gPlayerState
ldrb r0, [r0, #5]
cmp r0, #0
bne _080892E4
movs r0, #6
strb r0, [r2, #0xd]
_080892E4:
ldr r0, _080892FC @ =gUnk_08120CAC
ldrb r1, [r2, #0xd]
subs r1, #5
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
_080892F6:
pop {pc}
.align 2, 0
_080892F8: .4byte gPlayerState
_080892FC: .4byte gUnk_08120CAC
thumb_func_start sub_08089300
sub_08089300: @ 0x08089300
push {r4, r5, lr}
adds r5, r0, #0
adds r1, r5, #0
adds r1, #0x83
ldrb r0, [r1]
cmp r0, #0
bne _0808932C
movs r0, #1
strb r0, [r1]
ldr r1, _0808935C @ =gPlayerEntity
ldrb r0, [r1, #0x14]
ldr r2, _08089360 @ =gUnk_08120CB4
adds r0, r0, r2
movs r2, #0
ldrsb r2, [r0, r2]
lsls r2, r2, #0x10
movs r3, #1
ldrsb r3, [r0, r3]
lsls r3, r3, #0x10
adds r0, r5, #0
bl PositionRelative
_0808932C:
adds r0, r5, #0
adds r0, #0x84
ldrh r0, [r0]
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
lsls r0, r0, #0x10
lsrs r4, r0, #0x10
ldr r0, _08089364 @ =0x0000400B
cmp r4, r0
beq _080893A0
adds r0, r4, #0
bl sub_0808968C
cmp r0, #1
beq _08089368
cmp r0, #1
blo _0808937C
cmp r0, #2
beq _0808939A
b _080893A0
.align 2, 0
_0808935C: .4byte gPlayerEntity
_08089360: .4byte gUnk_08120CB4
_08089364: .4byte 0x0000400B
_08089368:
adds r0, r4, #0
subs r0, #0xc
movs r1, #3
ands r0, r1
lsls r0, r0, #3
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08089538
b _080893A0
_0808937C:
movs r0, #0xf
movs r1, #4
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08089392
adds r0, r5, #0
bl CopyPosition
_08089392:
adds r0, r5, #0
bl sub_080894FC
b _080893D6
_0808939A:
adds r0, r5, #0
adds r0, #0x80
strh r4, [r0]
_080893A0:
bl sub_080896B0
cmp r0, #0
beq _080893D6
ldr r2, _080893D8 @ =gPlayerState
movs r3, #0
movs r0, #0x10
strb r0, [r2, #0xc]
adds r1, r2, #0
adds r1, #0x38
movs r0, #0x20
strb r0, [r1]
ldr r0, [r2, #0x30]
movs r1, #1
orrs r0, r1
str r0, [r2, #0x30]
ldr r0, _080893DC @ =gPlayerEntity
strh r3, [r0, #0x2c]
strh r3, [r0, #0x30]
ldrb r0, [r0, #0x14]
movs r1, #4
eors r0, r1
lsls r0, r0, #2
strb r0, [r5, #0x15]
adds r0, r5, #0
bl sub_08089538
_080893D6:
pop {r4, r5, pc}
.align 2, 0
_080893D8: .4byte gPlayerState
_080893DC: .4byte gPlayerEntity
thumb_func_start sub_080893E0
sub_080893E0: @ 0x080893E0
movs r2, #0
movs r1, #1
strb r1, [r0, #0xc]
adds r0, #0x83
strb r2, [r0]
bx lr
thumb_func_start sub_080893EC
sub_080893EC: @ 0x080893EC
push {r4, lr}
adds r4, r0, #0
bl sub_080895C0
cmp r0, #0
beq _080893FC
movs r0, #1
strb r0, [r4, #0xc]
_080893FC:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08089400
sub_08089400: @ 0x08089400
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xe]
subs r0, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
beq _08089424
ldrb r2, [r4, #0x18]
lsls r1, r2, #0x1e
lsrs r1, r1, #0x1e
movs r0, #1
eors r1, r0
subs r0, #5
ands r0, r2
orrs r0, r1
strb r0, [r4, #0x18]
b _0808944E
_08089424:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
movs r1, #1
orrs r0, r1
strb r0, [r4, #0x18]
movs r0, #1
strb r0, [r4, #0xc]
ldr r0, _08089450 @ =0x0000400B
adds r1, r4, #0
adds r1, #0x84
ldrh r1, [r1]
adds r2, r4, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
adds r0, r4, #0
bl sub_080894C8
_0808944E:
pop {r4, pc}
.align 2, 0
_08089450: .4byte 0x0000400B
thumb_func_start sub_08089454
sub_08089454: @ 0x08089454
push {r4, r5, r6, lr}
adds r5, r0, #0
movs r0, #0x2e
ldrsh r1, [r5, r0]
ldr r2, _080894C0 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r4, #0x32
ldrsh r0, [r5, r4]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r6, r5, #0
adds r6, #0x84
strh r1, [r6]
ldrh r0, [r6]
adds r4, r5, #0
adds r4, #0x38
ldrb r1, [r4]
bl GetTileIndex
adds r1, r5, #0
adds r1, #0x80
strh r0, [r1]
ldr r5, _080894C4 @ =0x0000400B
ldrh r1, [r6]
ldrb r2, [r4]
adds r0, r5, #0
bl SetTile
ldrb r0, [r4]
cmp r0, #2
bne _080894BC
ldrh r0, [r6]
movs r1, #1
bl GetTileType
movs r1, #0xc4
lsls r1, r1, #2
cmp r0, r1
bne _080894BC
ldrh r1, [r6]
adds r0, r5, #0
movs r2, #1
bl SetTile
_080894BC:
pop {r4, r5, r6, pc}
.align 2, 0
_080894C0: .4byte gRoomControls
_080894C4: .4byte 0x0000400B
thumb_func_start sub_080894C8
sub_080894C8: @ 0x080894C8
push {r4, lr}
adds r3, r0, #0
movs r2, #0
ldr r1, _080894E0 @ =gRoomVars
adds r4, r1, #0
adds r4, #0xac
ldr r0, [r4]
mov ip, r1
cmp r0, #0
bne _080894E4
str r3, [r4]
b _080894FA
.align 2, 0
_080894E0: .4byte gRoomVars
_080894E4:
adds r2, #1
cmp r2, #7
bhi _080894FA
lsls r0, r2, #2
mov r1, ip
adds r1, #0xac
adds r1, r0, r1
ldr r0, [r1]
cmp r0, #0
bne _080894E4
str r3, [r1]
_080894FA:
pop {r4, pc}
thumb_func_start sub_080894FC
sub_080894FC: @ 0x080894FC
push {r4, lr}
adds r3, r0, #0
movs r2, #0
ldr r1, _08089514 @ =gRoomVars
adds r4, r1, #0
adds r4, #0xac
ldr r0, [r4]
mov ip, r1
cmp r3, r0
bne _08089518
str r2, [r4]
b _08089530
.align 2, 0
_08089514: .4byte gRoomVars
_08089518:
adds r2, #1
cmp r2, #7
bhi _08089530
lsls r0, r2, #2
mov r1, ip
adds r1, #0xac
adds r1, r0, r1
ldr r0, [r1]
cmp r3, r0
bne _08089518
movs r0, #0
str r0, [r1]
_08089530:
adds r0, r3, #0
bl DeleteEntity
pop {r4, pc}
thumb_func_start sub_08089538
sub_08089538: @ 0x08089538
push {r4, r5, r6, lr}
adds r5, r0, #0
adds r1, r5, #0
adds r1, #0x86
movs r0, #0x20
strh r0, [r1]
adds r0, #0xef
bl EnqueueSFX
adds r0, r5, #0
adds r0, #0x80
ldrh r0, [r0]
adds r6, r5, #0
adds r6, #0x84
ldrh r1, [r6]
adds r4, r5, #0
adds r4, #0x38
ldrb r2, [r4]
bl SetTile
ldrb r0, [r4]
cmp r0, #2
bne _08089580
ldrh r0, [r6]
movs r1, #1
bl GetTileType
ldr r1, _080895B8 @ =0x0000400B
cmp r0, r1
bne _08089580
movs r0, #0xc4
lsls r0, r0, #2
ldrh r1, [r6]
movs r2, #1
bl sub_08000152
_08089580:
adds r2, r5, #0
adds r2, #0x84
ldr r1, _080895BC @ =gUnk_080B4488
ldrb r0, [r5, #0x15]
lsrs r0, r0, #3
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
ldrh r2, [r2]
adds r0, r0, r2
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x79
beq _080895AC
cmp r0, #0x77
bne _080895B4
_080895AC:
adds r1, r5, #0
adds r1, #0x63
movs r0, #0xfe
strb r0, [r1]
_080895B4:
pop {r4, r5, r6, pc}
.align 2, 0
_080895B8: .4byte 0x0000400B
_080895BC: .4byte gUnk_080B4488
thumb_func_start sub_080895C0
sub_080895C0: @ 0x080895C0
push {r4, lr}
adds r4, r0, #0
bl LinearMoveUpdate
adds r1, r4, #0
adds r1, #0x86
ldrh r0, [r1]
subs r0, #1
strh r0, [r1]
lsls r0, r0, #0x10
cmp r0, #0
bne _0808964C
adds r0, r4, #0
bl sub_0800442E
cmp r0, #0
bne _0808964C
adds r1, r4, #0
adds r1, #0x63
movs r0, #0
strb r0, [r1]
adds r0, r4, #0
bl sub_080002D0
cmp r0, #0
bne _080895FE
adds r0, r4, #0
bl sub_08089454
movs r0, #1
b _08089654
_080895FE:
movs r0, #0xf
movs r1, #4
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _08089614
adds r0, r4, #0
bl CopyPosition
_08089614:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
ldr r2, _08089658 @ =gUnk_08120CBC
ldrb r1, [r4, #0x15]
lsrs r1, r1, #2
lsls r0, r1, #1
adds r0, r0, r2
ldrh r0, [r0]
ldrh r3, [r4, #0x2e]
adds r0, r0, r3
strh r0, [r4, #0x2e]
adds r1, #1
lsls r1, r1, #1
adds r1, r1, r2
ldrh r0, [r1]
ldrh r1, [r4, #0x32]
adds r0, r0, r1
strh r0, [r4, #0x32]
adds r0, r4, #0
bl sub_08089454
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
_0808964C:
adds r0, r4, #0
bl sub_0800445C
movs r0, #0
_08089654:
pop {r4, pc}
.align 2, 0
_08089658: .4byte gUnk_08120CBC
thumb_func_start sub_0808965C
sub_0808965C: @ 0x0808965C
push {lr}
adds r2, r0, #0
ldr r3, _08089678 @ =gRoomControls
ldrb r0, [r3, #4]
cmp r0, #0x3f
bls _08089680
ldr r1, _0808967C @ =gUnk_08120CCC
subs r0, #0x40
lsls r0, r0, #1
adds r0, r0, r1
ldrh r1, [r0]
adds r0, r2, #0
b _08089684
.align 2, 0
_08089678: .4byte gRoomControls
_0808967C: .4byte gUnk_08120CCC
_08089680:
adds r0, r2, #0
movs r1, #0xe9
_08089684:
bl LoadFixedGFX
pop {pc}
.align 2, 0
thumb_func_start sub_0808968C
sub_0808968C: @ 0x0808968C
push {lr}
adds r2, r0, #0
ldr r1, _08089694 @ =gUnk_08120D6C
b _080896A4
.align 2, 0
_08089694: .4byte gUnk_08120D6C
_08089698:
ldrh r0, [r1]
cmp r0, r2
bne _080896A2
ldrh r0, [r1, #2]
b _080896AC
_080896A2:
adds r1, #4
_080896A4:
ldrh r0, [r1]
cmp r0, #0
bne _08089698
movs r0, #0
_080896AC:
pop {pc}
.align 2, 0
thumb_func_start sub_080896B0
sub_080896B0: @ 0x080896B0
push {r4, r5, r6, r7, lr}
ldr r0, _08089750 @ =gPlayerState
ldrb r1, [r0, #5]
movs r0, #0x1f
ands r0, r1
cmp r0, #0x12
bne _08089768
ldr r6, _08089754 @ =gPlayerEntity
adds r0, r6, #0
adds r0, #0x5a
ldrb r1, [r0]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08089768
ldrb r3, [r6, #0x14]
movs r2, #6
ands r2, r3
lsls r2, r2, #1
ldr r0, _08089758 @ =gUnk_080B4468
adds r2, r2, r0
ldr r0, _0808975C @ =gUnk_080B4488
lsrs r3, r3, #1
lsls r3, r3, #1
adds r3, r3, r0
movs r0, #0x2e
ldrsh r1, [r6, r0]
movs r4, #0
ldrsh r0, [r2, r4]
adds r1, r1, r0
ldr r5, _08089760 @ =gRoomControls
ldrh r0, [r5, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r4, #0x3f
ands r1, r4
movs r7, #0x32
ldrsh r0, [r6, r7]
movs r7, #2
ldrsh r2, [r2, r7]
adds r0, r0, r2
ldrh r2, [r5, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r4
lsls r0, r0, #6
orrs r1, r0
movs r0, #0
ldrsh r7, [r3, r0]
subs r1, r1, r7
lsls r4, r1, #0x10
lsrs r0, r4, #0x10
adds r5, r6, #0
adds r5, #0x38
ldrb r1, [r5]
bl sub_080002C8
adds r1, r0, #0
subs r0, #0x26
cmp r0, #1
bls _08089768
cmp r1, #0x29
beq _08089768
ldrb r0, [r5]
bl GetLayerByIndex
asrs r1, r4, #0x10
ldr r2, _08089764 @ =0x00002004
adds r0, r0, r2
adds r2, r0, r1
ldrb r2, [r2]
subs r1, r1, r7
adds r0, r0, r1
ldrb r0, [r0]
cmp r2, #0
bne _08089768
cmp r0, #0
bne _08089768
movs r0, #1
b _0808976A
.align 2, 0
_08089750: .4byte gPlayerState
_08089754: .4byte gPlayerEntity
_08089758: .4byte gUnk_080B4468
_0808975C: .4byte gUnk_080B4488
_08089760: .4byte gRoomControls
_08089764: .4byte 0x00002004
_08089768:
movs r0, #0
_0808976A:
pop {r4, r5, r6, r7, pc}
-742
View File
@@ -1,742 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.syntax unified
.text
thumb_func_start SmallIceBlock
SmallIceBlock: @ 0x080991A4
push {lr}
adds r2, r0, #0
ldrb r0, [r2, #0xa]
cmp r0, #2
bhi _080991C4
ldr r0, _080991C0 @ =gUnk_08123734
ldrb r1, [r2, #0xc]
lsls r1, r1, #2
adds r1, r1, r0
ldr r1, [r1]
adds r0, r2, #0
bl _call_via_r1
b _080991CA
.align 2, 0
_080991C0: .4byte gUnk_08123734
_080991C4:
adds r0, r2, #0
bl sub_080996AC
_080991CA:
pop {pc}
thumb_func_start sub_080991CC
sub_080991CC: @ 0x080991CC
push {r4, lr}
adds r4, r0, #0
ldrb r0, [r4, #0xa]
cmp r0, #2
bgt _080991EC
cmp r0, #0
blt _080991EC
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl CheckFlags
cmp r0, #0
beq _080991EC
bl DeleteThisEntity
_080991EC:
movs r2, #1
strb r2, [r4, #0xc]
ldrb r1, [r4, #0x10]
movs r0, #0x80
orrs r0, r1
strb r0, [r4, #0x10]
ldrb r1, [r4, #0x11]
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4, #0x11]
adds r1, r4, #0
adds r1, #0x3c
movs r0, #7
strb r0, [r1]
adds r1, #4
movs r0, #0x48
strb r0, [r1]
adds r0, r4, #0
adds r0, #0x3f
strb r2, [r0]
subs r1, #5
movs r0, #0x80
strb r0, [r1]
ldr r0, _08099244 @ =gUnk_080FD408
str r0, [r4, #0x48]
adds r0, r4, #0
bl sub_08099468
ldrb r1, [r4, #0xa]
adds r0, r4, #0
bl InitializeAnimation
movs r0, #0x84
movs r1, #3
movs r2, #0
bl CreateObject
cmp r0, #0
beq _08099242
str r4, [r0, #0x50]
_08099242:
pop {r4, pc}
.align 2, 0
_08099244: .4byte gUnk_080FD408
thumb_func_start sub_08099248
sub_08099248: @ 0x08099248
push {r4, r5, r6, r7, lr}
adds r4, r0, #0
bl sub_0809963C
cmp r0, #0
beq _08099280
movs r1, #0
movs r0, #3
strb r0, [r4, #0xc]
strb r1, [r4, #0xe]
ldr r0, _0809927C @ =0x000001B3
bl EnqueueSFX
adds r0, r4, #0
bl sub_08099330
ldrb r0, [r4, #0xa]
cmp r0, #0
bne _0809930E
adds r0, r4, #0
adds r0, #0x86
ldrh r0, [r0]
bl SetFlag
b _0809930E
.align 2, 0
_0809927C: .4byte 0x000001B3
_08099280:
adds r0, r4, #0
bl sub_0800442E
cmp r0, #0
bne _0809930E
adds r7, r4, #0
adds r7, #0x70
ldrh r0, [r7]
adds r6, r4, #0
adds r6, #0x38
ldrb r1, [r6]
bl GetTileType
adds r5, r0, #0
ldr r0, _080992B8 @ =0x0000405A
cmp r5, r0
beq _0809930E
adds r0, r5, #0
bl sub_08099618
cmp r0, #1
beq _080992BC
cmp r0, #1
blo _080992DC
cmp r0, #2
beq _08099308
b _0809930E
.align 2, 0
_080992B8: .4byte 0x0000405A
_080992BC:
movs r0, #2
strb r0, [r4, #0xc]
movs r0, #0x16
strb r0, [r4, #0xe]
adds r0, r5, #0
subs r0, #0x5b
movs r1, #3
ands r0, r1
lsls r0, r0, #3
strb r0, [r4, #0x15]
movs r0, #0x20
strh r0, [r4, #0x24]
adds r0, r4, #0
bl sub_080994B8
b _0809930E
_080992DC:
movs r0, #0xf
movs r1, #0xd
movs r2, #0
bl CreateObject
adds r1, r0, #0
cmp r1, #0
beq _080992F2
adds r0, r4, #0
bl CopyPosition
_080992F2:
adds r0, r4, #0
adds r0, #0x6c
ldrh r0, [r0]
ldrh r1, [r7]
ldrb r2, [r6]
bl SetTile
adds r0, r4, #0
bl DeleteEntity
b _0809930E
_08099308:
adds r0, r4, #0
adds r0, #0x6c
strh r5, [r0]
_0809930E:
pop {r4, r5, r6, r7, pc}
thumb_func_start sub_08099310
sub_08099310: @ 0x08099310
push {r4, lr}
adds r4, r0, #0
bl sub_0809953C
cmp r0, #0
beq _0809932E
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_08099468
movs r0, #0xd9
lsls r0, r0, #1
bl EnqueueSFX
_0809932E:
pop {r4, pc}
thumb_func_start sub_08099330
sub_08099330: @ 0x08099330
push {r4, lr}
adds r4, r0, #0
bl sub_0809963C
adds r1, r0, #0
cmp r1, #0
bne _0809935E
ldrb r0, [r4, #0xe]
cmp r0, #1
bls _0809934A
subs r0, #2
strb r0, [r4, #0xe]
b _0809934C
_0809934A:
strb r1, [r4, #0xe]
_0809934C:
ldrb r0, [r4, #0xe]
cmp r0, #0
bne _08099364
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
bl sub_0805EC60
b _080993CA
_0809935E:
ldrb r0, [r4, #0xe]
adds r0, #1
strb r0, [r4, #0xe]
_08099364:
movs r1, #0x80
lsls r1, r1, #1
ldr r2, _0809939C @ =gUnk_08123748
ldrb r0, [r4, #0xe]
lsrs r0, r0, #5
lsls r0, r0, #1
adds r0, r0, r2
ldrh r2, [r0]
adds r0, r4, #0
movs r3, #0
bl sub_0805EC9C
ldrb r0, [r4, #0xa]
cmp r0, #1
bne _080993A0
adds r0, r4, #0
adds r0, #0x86
ldrh r3, [r0]
adds r0, r4, #0
movs r1, #0x53
movs r2, #0
bl sub_080A2A3C
movs r0, #0x72
bl SoundReq
b _080993BA
.align 2, 0
_0809939C: .4byte gUnk_08123748
_080993A0:
cmp r0, #2
bne _080993BA
adds r0, r4, #0
adds r0, #0x86
ldrh r3, [r0]
adds r0, r4, #0
movs r1, #0x52
movs r2, #0
bl sub_080A2A3C
movs r0, #0x72
bl SoundReq
_080993BA:
movs r0, #4
strb r0, [r4, #0xc]
movs r0, #0x3c
strb r0, [r4, #0xe]
ldrb r1, [r4, #0x10]
movs r0, #0x7f
ands r0, r1
strb r0, [r4, #0x10]
_080993CA:
pop {r4, pc}
thumb_func_start sub_080993CC
sub_080993CC: @ 0x080993CC
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xe]
subs r1, r0, #1
strb r1, [r5, #0xe]
lsls r0, r1, #0x18
cmp r0, #0
bne _080993E2
bl DeleteThisEntity
b _08099466
_080993E2:
lsls r0, r1, #0x18
lsrs r0, r0, #0x18
cmp r0, #0x30
bne _08099400
adds r0, r5, #0
adds r0, #0x6c
ldrh r0, [r0]
adds r1, r5, #0
adds r1, #0x70
ldrh r1, [r1]
adds r2, r5, #0
adds r2, #0x38
ldrb r2, [r2]
bl SetTile
_08099400:
movs r1, #0x80
lsls r1, r1, #1
ldrb r0, [r5, #0xe]
movs r2, #0x3c
subs r2, r2, r0
lsls r2, r2, #5
adds r2, r2, r1
adds r0, r5, #0
movs r3, #0
bl sub_0805EC9C
ldrb r1, [r5, #0xe]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08099466
movs r0, #0xf
movs r1, #0x11
movs r2, #0x40
bl CreateObject
adds r6, r0, #0
cmp r6, #0
beq _08099466
bl Random
adds r4, r0, #0
asrs r0, r4, #0x10
movs r1, #9
bl __modsi3
adds r2, r0, #0
subs r2, #4
movs r3, #0xf
ands r3, r4
adds r4, r6, #0
adds r4, #0x29
ldrb r1, [r4]
movs r0, #8
rsbs r0, r0, #0
ands r0, r1
movs r1, #3
orrs r0, r1
strb r0, [r4]
lsls r2, r2, #0x10
rsbs r3, r3, #0
lsls r3, r3, #0x10
adds r0, r5, #0
adds r1, r6, #0
bl PositionRelative
_08099466:
pop {r4, r5, r6, pc}
thumb_func_start sub_08099468
sub_08099468: @ 0x08099468
push {r4, r5, r6, lr}
adds r6, r0, #0
movs r0, #0x2e
ldrsh r1, [r6, r0]
ldr r2, _080994B0 @ =gRoomControls
ldrh r0, [r2, #6]
subs r1, r1, r0
asrs r1, r1, #4
movs r3, #0x3f
ands r1, r3
movs r4, #0x32
ldrsh r0, [r6, r4]
ldrh r2, [r2, #8]
subs r0, r0, r2
asrs r0, r0, #4
ands r0, r3
lsls r0, r0, #6
orrs r1, r0
adds r4, r6, #0
adds r4, #0x70
strh r1, [r4]
ldrh r0, [r4]
adds r5, r6, #0
adds r5, #0x38
ldrb r1, [r5]
bl GetTileIndex
adds r1, r6, #0
adds r1, #0x6c
strh r0, [r1]
ldr r0, _080994B4 @ =0x0000405A
ldrh r1, [r4]
ldrb r2, [r5]
bl SetTile
pop {r4, r5, r6, pc}
.align 2, 0
_080994B0: .4byte gRoomControls
_080994B4: .4byte 0x0000405A
thumb_func_start sub_080994B8
sub_080994B8: @ 0x080994B8
push {r4, r5, r6, lr}
adds r5, r0, #0
ldr r0, _08099530 @ =0x000001B1
bl EnqueueSFX
adds r0, r5, #0
adds r0, #0x6c
ldrh r0, [r0]
adds r6, r5, #0
adds r6, #0x70
ldrh r1, [r6]
adds r4, r5, #0
adds r4, #0x38
ldrb r2, [r4]
bl SetTile
ldrb r0, [r4]
cmp r0, #2
bne _080994F8
ldrh r0, [r6]
movs r1, #1
bl GetTileType
ldr r1, _08099534 @ =0x0000405A
cmp r0, r1
bne _080994F8
movs r0, #0xc4
lsls r0, r0, #2
ldrh r1, [r6]
movs r2, #1
bl sub_08000152
_080994F8:
adds r2, r5, #0
adds r2, #0x70
ldr r1, _08099538 @ =gUnk_080B4488
ldrb r0, [r5, #0x15]
lsrs r0, r0, #3
lsls r0, r0, #1
adds r0, r0, r1
movs r1, #0
ldrsh r0, [r0, r1]
ldrh r2, [r2]
adds r0, r0, r2
adds r1, r5, #0
adds r1, #0x38
ldrb r1, [r1]
bl GetTileType
lsls r0, r0, #0x10
lsrs r0, r0, #0x10
cmp r0, #0x79
beq _08099524
cmp r0, #0x77
bne _0809952C
_08099524:
adds r1, r5, #0
adds r1, #0x63
movs r0, #0xfe
strb r0, [r1]
_0809952C:
pop {r4, r5, r6, pc}
.align 2, 0
_08099530: .4byte 0x000001B1
_08099534: .4byte 0x0000405A
_08099538: .4byte gUnk_080B4488
thumb_func_start sub_0809953C
sub_0809953C: @ 0x0809953C
push {r4, lr}
adds r4, r0, #0
bl sub_0800442E
cmp r0, #0
bne _08099612
adds r0, r4, #0
bl sub_080AEFE0
adds r0, r4, #0
bl sub_0800445C
ldrb r1, [r4, #0xe]
cmp r1, #0
beq _08099570
ldrh r0, [r4, #0x24]
adds r0, #0x10
strh r0, [r4, #0x24]
subs r0, r1, #1
strb r0, [r4, #0xe]
lsls r0, r0, #0x18
cmp r0, #0
bne _08099570
movs r0, #0x80
lsls r0, r0, #2
strh r0, [r4, #0x24]
_08099570:
ldrb r0, [r4, #0x15]
lsrs r0, r0, #3
cmp r0, #1
beq _080995A0
cmp r0, #1
bgt _08099582
cmp r0, #0
beq _08099588
b _080995E6
_08099582:
cmp r0, #2
beq _080995BA
b _080995E6
_08099588:
ldrh r1, [r4, #0x2a]
movs r0, #0xe
ands r0, r1
cmp r0, #0
beq _08099612
ldrh r1, [r4, #0x32]
movs r0, #0xf
ands r0, r1
subs r0, #7
cmp r0, #2
bls _080995D0
b _080995DE
_080995A0:
ldrh r1, [r4, #0x2a]
movs r0, #0xe0
lsls r0, r0, #8
ands r0, r1
cmp r0, #0
beq _08099612
ldrh r1, [r4, #0x2e]
movs r0, #0xf
ands r0, r1
subs r0, #7
cmp r0, #2
bls _080995FE
b _080995DE
_080995BA:
ldrh r1, [r4, #0x2a]
movs r0, #0xe0
ands r0, r1
cmp r0, #0
beq _08099612
ldrh r1, [r4, #0x32]
movs r0, #0xf
ands r0, r1
subs r0, #7
cmp r0, #2
bhi _080995DE
_080995D0:
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
adds r0, #8
strh r0, [r4, #0x32]
movs r0, #1
b _08099614
_080995DE:
adds r0, r4, #0
bl sub_0809969C
b _08099612
_080995E6:
ldrh r1, [r4, #0x2a]
movs r0, #0xe0
lsls r0, r0, #4
ands r0, r1
cmp r0, #0
beq _08099612
ldrh r1, [r4, #0x2e]
movs r0, #0xf
ands r0, r1
subs r0, #7
cmp r0, #2
bhi _0809960C
_080995FE:
movs r0, #0x10
rsbs r0, r0, #0
ands r0, r1
adds r0, #8
strh r0, [r4, #0x2e]
movs r0, #1
b _08099614
_0809960C:
adds r0, r4, #0
bl sub_0809969C
_08099612:
movs r0, #0
_08099614:
pop {r4, pc}
.align 2, 0
thumb_func_start sub_08099618
sub_08099618: @ 0x08099618
push {lr}
adds r2, r0, #0
ldr r1, _08099620 @ =gUnk_08123750
b _08099630
.align 2, 0
_08099620: .4byte gUnk_08123750
_08099624:
ldrh r0, [r1]
cmp r0, r2
bne _0809962E
ldrh r0, [r1, #2]
b _08099638
_0809962E:
adds r1, #4
_08099630:
ldrh r0, [r1]
cmp r0, #0
bne _08099624
movs r0, #0
_08099638:
pop {pc}
.align 2, 0
thumb_func_start sub_0809963C
sub_0809963C: @ 0x0809963C
push {r4, r5, r6, lr}
adds r5, r0, #0
ldrb r0, [r5, #0xb]
cmp r0, #0
beq _08099684
bl GetCurrentRoomProperty
adds r4, r0, #0
ldrh r0, [r4]
bl CheckFlags
cmp r0, #0
beq _08099684
ldr r0, _08099694 @ =gRoomControls
ldrh r1, [r0, #6]
ldrh r2, [r4, #2]
adds r1, r1, r2
lsls r1, r1, #0x10
lsrs r1, r1, #0x10
ldrh r0, [r0, #8]
ldrh r6, [r4, #4]
adds r0, r0, r6
lsls r0, r0, #0x10
lsrs r3, r0, #0x10
ldrh r2, [r4, #6]
movs r6, #0x2e
ldrsh r0, [r5, r6]
subs r0, r0, r1
cmp r2, r0
blo _08099684
ldrh r1, [r4, #8]
movs r2, #0x32
ldrsh r0, [r5, r2]
subs r0, r0, r3
cmp r1, r0
bhs _08099698
_08099684:
adds r0, r5, #0
adds r0, #0x41
ldrb r0, [r0]
cmp r0, #0x87
beq _08099698
movs r0, #0
b _0809969A
.align 2, 0
_08099694: .4byte gRoomControls
_08099698:
movs r0, #1
_0809969A:
pop {r4, r5, r6, pc}
thumb_func_start sub_0809969C
sub_0809969C: @ 0x0809969C
push {lr}
movs r1, #0xd
movs r2, #0
bl CreateFx
bl DeleteThisEntity
pop {pc}
thumb_func_start sub_080996AC
sub_080996AC: @ 0x080996AC
push {r4, lr}
adds r4, r0, #0
ldr r0, [r4, #0x50]
ldr r0, [r0, #4]
cmp r0, #0
bne _080996BC
bl DeleteThisEntity
_080996BC:
ldrb r0, [r4, #0xc]
cmp r0, #0
bne _080996CE
movs r0, #1
strb r0, [r4, #0xc]
adds r0, r4, #0
movs r1, #3
bl InitializeAnimation
_080996CE:
ldr r0, [r4, #0x50]
ldrb r0, [r0, #0xc]
cmp r0, #2
bhi _08099726
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, #0x5a
ldrb r1, [r2]
movs r0, #1
ands r0, r1
cmp r0, #0
beq _08099706
movs r0, #0
strb r0, [r2]
bl Random
movs r1, #0x78
ands r0, r1
adds r0, #0x78
adds r1, r4, #0
adds r1, #0x59
strb r0, [r1]
_08099706:
adds r0, r4, #0
bl GetNextFrame
ldr r0, [r4, #0x50]
adds r1, r4, #0
bl CopyPositionAndSpriteOffset
ldrh r0, [r4, #0x32]
adds r0, #1
strh r0, [r4, #0x32]
adds r1, r4, #0
adds r1, #0x63
ldrb r0, [r1]
subs r0, #0x11
strb r0, [r1]
b _08099730
_08099726:
ldrb r1, [r4, #0x18]
movs r0, #4
rsbs r0, r0, #0
ands r0, r1
strb r0, [r4, #0x18]
_08099730:
pop {r4, pc}
.align 2, 0
+1 -500
View File
@@ -26175,81 +26175,6 @@
"size": 5,
"type": "animation"
},
{
"path": "octorokBoss/gUnk_080CF070.bin",
"start": 847984,
"size": 8
},
{
"path": "octorokBoss/gUnk_080CF08C.bin",
"start": 848012,
"size": 32
},
{
"path": "octorokBoss/gUnk_080CF0D8.bin",
"start": 848088,
"size": 4
},
{
"path": "octorokBoss/gUnk_080CF0DC.bin",
"start": 848092,
"size": 4
},
{
"path": "octorokBoss/gUnk_080CF10C.bin",
"start": 848140,
"size": 4
},
{
"path": "octorokBoss/gUnk_080CF110.bin",
"start": 848144,
"size": 4
},
{
"path": "octorokBoss/gUnk_080CF114.bin",
"start": 848148,
"size": 5
},
{
"path": "octorokBoss/gUnk_080CF119.bin",
"start": 848153,
"size": 5
},
{
"path": "octorokBoss/gUnk_080CF11E.bin",
"start": 848158,
"size": 6
},
{
"path": "octorokBoss/gUnk_080CF134.bin",
"start": 848180,
"size": 4
},
{
"path": "octorokBoss/gUnk_080CF138.bin",
"start": 848184,
"size": 4
},
{
"path": "octorokBoss/gUnk_080CF13C.bin",
"start": 848188,
"size": 3
},
{
"path": "octorokBoss/gUnk_080CF13F.bin",
"start": 848191,
"size": 3
},
{
"path": "octorokBoss/gUnk_080CF142.bin",
"start": 848194,
"size": 5
},
{
"path": "octorokBoss/gUnk_080CF147.bin",
"start": 848199,
"size": 5
},
{
"path": "flyingPot/gUnk_080CF290.bin",
"start": 848528,
@@ -26375,16 +26300,6 @@
"size": 20,
"type": "animation"
},
{
"path": "octorokGolden/gUnk_080CF490.bin",
"start": 849040,
"size": 8
},
{
"path": "octorokGolden/gUnk_080CF498.bin",
"start": 849048,
"size": 8
},
{
"path": "animations/gSpriteAnimations_CloudPiranha_0.bin",
"start": 849200,
@@ -27135,26 +27050,6 @@
"size": 21,
"type": "animation"
},
{
"path": "bowMoblin/gUnk_080CFFA4.bin",
"start": 851876,
"size": 8
},
{
"path": "bowMoblin/gUnk_080CFFAC.bin",
"start": 851884,
"size": 16
},
{
"path": "bowMoblin/gUnk_080CFFBC.bin",
"start": 851900,
"size": 8
},
{
"path": "bowMoblin/gUnk_080CFFC4.bin",
"start": 851908,
"size": 8
},
{
"path": "animations/gSpriteAnimations_Lakitu_0.bin",
"start": 852316,
@@ -27731,16 +27626,6 @@
"size": 13,
"type": "animation"
},
{
"path": "ballChainSoldier/gUnk_080D0728.bin",
"start": 853800,
"size": 8
},
{
"path": "ballChainSoldier/gUnk_080D0730.bin",
"start": 853808,
"size": 8
},
{
"path": "animations/gSpriteAnimations_BallChainSoldier_3.bin",
"start": 853816,
@@ -30804,70 +30689,6 @@
"start": 1034656,
"size": 16
},
{
"path": "data_080FC8A4/sCutsceneData.bin",
"start": 1034784,
"size": 80
},
{
"path": "data_080FC8A4/gUnk_080FCA84.bin",
"start": 1034884,
"size": 8
},
{
"path": "data_080FC8A4/gUnk_080FCA8C.bin",
"start": 1034892,
"size": 24
},
{
"path": "data_080FC8A4/gUnk_080FCAA4.bin",
"start": 1034916,
"size": 36
},
{
"path": "data_080FC8A4/gUnk_080FCB38.bin",
"start": 1035064,
"size": 42
},
{
"path": "data_080FC8A4/gUnk_080FCB62_JP.bin",
"variants": [
"JP"
],
"starts": {
"JP": 1034258
},
"size": 50
},
{
"path": "data_080FC8A4/gUnk_080FCB62_1_DEMO_JP.bin",
"variants": [
"DEMO_JP"
],
"starts": {
"DEMO_JP": 1033030
},
"size": 50
},
{
"path": "data_080FC8A4/gUnk_080FCB62_2_EU.bin",
"variants": [
"EU"
],
"starts": {
"EU": 1032358
},
"size": 50
},
{
"path": "data_080FC8A4/gUnk_080FCB62_3_USA-DEMO_USA.bin",
"variants": [
"USA",
"DEMO_USA"
],
"start": 1035106,
"size": 50
},
{
"path": "data_080FC8A4/gUnk_080FCB94.bin",
"start": 1035156,
@@ -42077,71 +41898,6 @@
"start": 1161680,
"size": 8
},
{
"path": "data_0811B9E0/gUnk_0811BABC.bin",
"start": 1161916,
"size": 8
},
{
"path": "data_0811B9E0/gUnk_0811BAC4.bin",
"start": 1161924,
"size": 16
},
{
"path": "data_0811B9E0/gUnk_0811BAF0.bin",
"start": 1161968,
"size": 60
},
{
"path": "data_0811B9E0/gUnk_0811BBBC.bin",
"start": 1162172,
"size": 6
},
{
"path": "data_0811B9E0/gUnk_0811BBC2.bin",
"start": 1162178,
"size": 6
},
{
"path": "data_0811B9E0/gUnk_0811BBC8.bin",
"start": 1162184,
"size": 6
},
{
"path": "data_0811B9E0/gUnk_0811BBCE.bin",
"start": 1162190,
"size": 6
},
{
"path": "data_0811B9E0/gUnk_0811BBEC.bin",
"start": 1162220,
"size": 12
},
{
"path": "data_0811B9E0/gUnk_0811BC28.bin",
"start": 1162280,
"size": 8
},
{
"path": "data_0811B9E0/gUnk_0811BC30.bin",
"start": 1162288,
"size": 8
},
{
"path": "data_0811B9E0/gUnk_0811BC38.bin",
"start": 1162296,
"size": 8
},
{
"path": "data_0811B9E0/gUnk_0811BC40.bin",
"start": 1162304,
"size": 8
},
{
"path": "data_0811B9E0/gUnk_0811BC80.bin",
"start": 1162368,
"size": 8
},
{
"path": "itemBomb/gUnk_0811BDAC.bin",
"start": 1162668,
@@ -42374,21 +42130,6 @@
"DEMO_JP": -2192
}
},
{
"path": "data_0811E750/gUnk_0811E750.bin",
"start": 1173328,
"size": 8
},
{
"path": "data_0811E750/gUnk_0811E758.bin",
"start": 1173336,
"size": 8
},
{
"path": "data_0811E750/gUnk_0811E760.bin",
"start": 1173344,
"size": 8
},
{
"path": "data_0811E750/gUnk_0811E7BC.bin",
"start": 1173436,
@@ -42896,26 +42637,6 @@
"start": 1175948,
"size": 4
},
{
"path": "blockPushed/gUnk_0811F62C.bin",
"start": 1177132,
"size": 8
},
{
"path": "blockPushed/gUnk_0811F634.bin",
"start": 1177140,
"size": 8
},
{
"path": "blockPushed/gUnk_0811F63C.bin",
"start": 1177148,
"size": 8
},
{
"path": "blockPushed/gUnk_0811F644.bin",
"start": 1177156,
"size": 8
},
{
"path": "animations/gSpriteAnimations_Object9_0.bin",
"start": 1177440,
@@ -43896,41 +43617,6 @@
"size": 17,
"type": "animation"
},
{
"path": "animations/gSpriteAnimations_PressurePlate_0.bin",
"start": 1182705,
"size": 4,
"type": "animation"
},
{
"path": "animations/gSpriteAnimations_PressurePlate_1.bin",
"start": 1182709,
"size": 4,
"type": "animation"
},
{
"path": "animations/gSpriteAnimations_PressurePlate_2.bin",
"start": 1182713,
"size": 4,
"type": "animation"
},
{
"path": "animations/gSpriteAnimations_PressurePlate_3.bin",
"start": 1182717,
"size": 4,
"type": "animation"
},
{
"path": "animations/gSpriteAnimations_PressurePlate_4.bin",
"start": 1182721,
"size": 7,
"type": "animation"
},
{
"path": "PressurePlate/gUnk_08120BEC.bin",
"start": 1182700,
"size": 5
},
{
"path": "animations/gSpriteAnimations_BigBarrel_0.bin",
"start": 1182822,
@@ -43983,42 +43669,12 @@
"start": 1182814,
"size": 8
},
{
"path": "barrelInside/gUnk_08120C80.bin",
"start": 1182848,
"size": 18
},
{
"path": "barrelInside/gUnk_08120C92.bin",
"start": 1182866,
"size": 6
},
{
"path": "animations/gSpriteAnimations_PushableStatue_0.bin",
"start": 1183110,
"size": 6,
"type": "animation"
},
{
"path": "pushableStatue/gUnk_08120CB4.bin",
"start": 1182900,
"size": 8
},
{
"path": "pushableStatue/gUnk_08120CBC.bin",
"start": 1182908,
"size": 16
},
{
"path": "pushableStatue/gUnk_08120CCC.bin",
"start": 1182924,
"size": 160
},
{
"path": "pushableStatue/gUnk_08120D6C.bin",
"start": 1183084,
"size": 26
},
{
"path": "animations/gSpriteAnimations_AmbientClouds_0.bin",
"start": 1183136,
@@ -44183,16 +43839,6 @@
"size": 4,
"type": "animation"
},
{
"path": "pushableRock/gUnk_08121088.bin",
"start": 1183880,
"size": 8
},
{
"path": "hittableLever/gUnk_08121180.bin",
"start": 1184128,
"size": 8
},
{
"path": "object30/gUnk_08121194.bin",
"start": 1184148,
@@ -44276,36 +43922,6 @@
"size": 4,
"type": "animation"
},
{
"path": "pullableMushroom/gUnk_081211CC.bin",
"start": 1184204,
"size": 16
},
{
"path": "pullableMushroom/gUnk_081211E4.bin",
"start": 1184228,
"size": 8
},
{
"path": "pullableMushroom/gUnk_081211F4.bin",
"start": 1184244,
"size": 1
},
{
"path": "pullableMushroom/gUnk_081211F5.bin",
"start": 1184245,
"size": 7
},
{
"path": "pullableMushroom/gUnk_081211FC.bin",
"start": 1184252,
"size": 1
},
{
"path": "pullableMushroom/gUnk_081211FD.bin",
"start": 1184253,
"size": 7
},
{
"path": "animations/gSpriteAnimations_Bollard_0.bin",
"start": 1184532,
@@ -44701,16 +44317,6 @@
"start": 1187507,
"size": 5
},
{
"path": "pushableFurniture/gUnk_08121EE4.bin",
"start": 1187556,
"size": 12
},
{
"path": "pushableFurniture/gUnk_08121EF0.bin",
"start": 1187568,
"size": 8
},
{
"path": "furniture/gUnk_08122128.bin",
"start": 1188136,
@@ -44756,11 +44362,6 @@
"start": 1188360,
"size": 16
},
{
"path": "furniture/gUnk_08122244.bin",
"start": 1188420,
"size": 16
},
{
"path": "furniture/gUnk_08121EF8.bin",
"start": 1187576,
@@ -44956,21 +44557,6 @@
"size": 4,
"type": "animation"
},
{
"path": "pullableLever/gUnk_081222A8.bin",
"start": 1188520,
"size": 8
},
{
"path": "pullableLever/gUnk_081222B8.bin",
"start": 1188536,
"size": 8
},
{
"path": "pullableLever/gUnk_081222C0.bin",
"start": 1188544,
"size": 4
},
{
"path": "minecart/gUnk_081223E8.bin",
"start": 1188840,
@@ -45841,16 +45427,6 @@
"start": 1192608,
"size": 4
},
{
"path": "pushableGrave/gUnk_081232C0.bin",
"start": 1192640,
"size": 30
},
{
"path": "pushableGrave/gUnk_081232DE.bin",
"start": 1192670,
"size": 6
},
{
"path": "stoneTablet/gUnk_081232EC.bin",
"start": 1192684,
@@ -45921,11 +45497,6 @@
"start": 1192988,
"size": 6
},
{
"path": "steam/gUnk_08123484.bin",
"start": 1193092,
"size": 16
},
{
"path": "animations/gSpriteAnimations_PushableLever_0.bin",
"start": 1193140,
@@ -45938,21 +45509,6 @@
"size": 23,
"type": "animation"
},
{
"path": "pushableLever/gUnk_081234A0.bin",
"start": 1193120,
"size": 4
},
{
"path": "pushableLever/gUnk_081234A4.bin",
"start": 1193124,
"size": 8
},
{
"path": "pushableLever/gUnk_081234AC.bin",
"start": 1193132,
"size": 8
},
{
"path": "macroShoes/gUnk_081234F4.bin",
"start": 1193204,
@@ -46054,21 +45610,6 @@
"size": 23,
"type": "animation"
},
{
"path": "bigPushableLever/gUnk_081236E8.bin",
"start": 1193704,
"size": 4
},
{
"path": "bigPushableLever/gUnk_081236EC.bin",
"start": 1193708,
"size": 8
},
{
"path": "bigPushableLever/gUnk_081236F4.bin",
"start": 1193716,
"size": 8
},
{
"path": "animations/gSpriteAnimations_SmallIceBlock_0.bin",
"start": 1193834,
@@ -46093,16 +45634,6 @@
"size": 22,
"type": "animation"
},
{
"path": "smallIceBlock/gUnk_08123748.bin",
"start": 1193800,
"size": 8
},
{
"path": "smallIceBlock/gUnk_08123750.bin",
"start": 1193808,
"size": 26
},
{
"path": "animations/gSpriteAnimations_BigIceBlock_0.bin",
"start": 1193914,
@@ -46133,11 +45664,6 @@
"size": 22,
"type": "animation"
},
{
"path": "bigIceBlock/gUnk_081237B0.bin",
"start": 1193904,
"size": 10
},
{
"path": "animations/gSpriteAnimations_Object86_0.bin",
"start": 1193996,
@@ -46150,21 +45676,6 @@
"size": 20,
"type": "animation"
},
{
"path": "object87/gUnk_0812384C.bin",
"start": 1194060,
"size": 64
},
{
"path": "object87/gUnk_0812388C.bin",
"start": 1194124,
"size": 20
},
{
"path": "object87/gUnk_081238A0.bin",
"start": 1194144,
"size": 992
},
{
"path": "animations/gSpriteAnimations_MacroBook_0.bin",
"start": 1195192,
@@ -48278,16 +47789,6 @@
"start": 1253604,
"size": 12
},
{
"path": "data_081320FC/_DEMO_JP.bin",
"variants": [
"DEMO_JP"
],
"starts": {
"DEMO_JP": 1251376
},
"size": 1280
},
{
"offsets": {
"DEMO_JP": -988
@@ -52166,4 +51667,4 @@
},
"size": 129
}
]
]
-14
View File
@@ -1,14 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081237A0:: @ 081237A0
.4byte sub_0809975C
.4byte sub_080997CC
.4byte sub_080997F4
.4byte sub_08099880
gUnk_081237B0:: @ 081237B0
.incbin "bigIceBlock/gUnk_081237B0.bin"
-27
View File
@@ -1,27 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_0811F624:: @ 0811F624
.4byte sub_08082EB4
.4byte sub_08083094
gUnk_0811F62C:: @ 0811F62C
.incbin "blockPushed/gUnk_0811F62C.bin"
gUnk_0811F634:: @ 0811F634
.incbin "blockPushed/gUnk_0811F634.bin"
gUnk_0811F63C:: @ 0811F63C
.incbin "blockPushed/gUnk_0811F63C.bin"
gUnk_0811F644:: @ 0811F644
.incbin "blockPushed/gUnk_0811F644.bin"
gUnk_0811F64C:: @ 0811F64C
.4byte gUnk_0811F62C
.4byte gUnk_0811F634
.4byte gUnk_0811F63C
.4byte gUnk_0811F644
-47
View File
@@ -1,47 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081211A4:: @ 081211A4
.4byte sub_0808AA1C
.4byte sub_0808AB68
.4byte sub_0808AE84
.4byte sub_0808AFF0
gUnk_081211B4:: @ 081211B4
.4byte sub_0808AB80
.4byte sub_0808AB98
.4byte sub_0808ABC4
gUnk_081211C0:: @ 081211C0
.4byte sub_0808ACEC
.4byte sub_0808ADA0
.4byte sub_0808ADF0
gUnk_081211CC:: @ 081211CC
.incbin "pullableMushroom/gUnk_081211CC.bin"
gUnk_081211DC:: @ 081211DC
.4byte sub_0808AEB0
.4byte sub_0808AFD4
gUnk_081211E4:: @ 081211E4
.incbin "pullableMushroom/gUnk_081211E4.bin"
gUnk_081211EC:: @ 081211EC
.4byte sub_0808B05C
.4byte sub_0808B0BC
gUnk_081211F4:: @ 081211F4
.incbin "pullableMushroom/gUnk_081211F4.bin"
gUnk_081211F5:: @ 081211F5
.incbin "pullableMushroom/gUnk_081211F5.bin"
gUnk_081211FC:: @ 081211FC
.incbin "pullableMushroom/gUnk_081211FC.bin"
gUnk_081211FD:: @ 081211FD
.incbin "pullableMushroom/gUnk_081211FD.bin"
-16
View File
@@ -1,16 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121ED8:: @ 08121ED8
.4byte sub_0808F990
.4byte sub_0808FACC
.4byte sub_0808FC3C
gUnk_08121EE4:: @ 08121EE4
.incbin "pushableFurniture/gUnk_08121EE4.bin"
gUnk_08121EF0:: @ 08121EF0
.incbin "pushableFurniture/gUnk_08121EF0.bin"
-18
View File
@@ -1,18 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_081232AC:: @ 081232AC
.4byte sub_080975A0
.4byte sub_08097730
.4byte sub_08097748
.4byte sub_080977A0
.4byte nullsub_528
gUnk_081232C0:: @ 081232C0
.incbin "pushableGrave/gUnk_081232C0.bin"
gUnk_081232DE:: @ 081232DE
.incbin "pushableGrave/gUnk_081232DE.bin"
-14
View File
@@ -1,14 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08121078:: @ 08121078
.4byte sub_0808A50C
.4byte sub_0808A550
.4byte sub_0808A5E0
.4byte sub_0808A61C
gUnk_08121088:: @ 08121088
.incbin "pushableRock/gUnk_08121088.bin"
-28
View File
@@ -1,28 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08120C98:: @ 08120C98
.4byte sub_080891F4
.4byte sub_0808923C
.4byte sub_080892C4
.4byte sub_080893EC
.4byte sub_08089400
gUnk_08120CAC:: @ 08120CAC
.4byte sub_08089300
.4byte sub_080893E0
gUnk_08120CB4:: @ 08120CB4
.incbin "pushableStatue/gUnk_08120CB4.bin"
gUnk_08120CBC:: @ 08120CBC
.incbin "pushableStatue/gUnk_08120CBC.bin"
gUnk_08120CCC:: @ 08120CCC
.incbin "pushableStatue/gUnk_08120CCC.bin"
gUnk_08120D6C:: @ 08120D6C
.incbin "pushableStatue/gUnk_08120D6C.bin"
-18
View File
@@ -1,18 +0,0 @@
.include "asm/macros.inc"
.include "constants/constants.inc"
.section .rodata
.align 2
gUnk_08123734:: @ 08123734
.4byte sub_080991CC
.4byte sub_08099248
.4byte sub_08099310
.4byte sub_08099330
.4byte sub_080993CC
gUnk_08123748:: @ 08123748
.incbin "smallIceBlock/gUnk_08123748.bin"
gUnk_08123750:: @ 08123750
.incbin "smallIceBlock/gUnk_08123750.bin"
+6
View File
@@ -165,4 +165,10 @@ extern void sub_0806FBB4(Entity*);
extern u32 sub_080002D4(s32, s32, u32);
extern void sub_08078930(Entity*);
extern void sub_080044AE(Entity*, u32, u32);
extern void sub_0801AF18(u8*, u32, u32);
extern void sub_0807B9B8(s32, s32, s32);
extern void sub_08000148(u32, u32, u32);
extern void sub_0805457C(Entity*, s32);
extern Entity* sub_080A2A3C(Entity*, u32, u32, u32);
extern void sub_0806FCF4(Entity*, s32, s32, s32);
#endif
+8 -8
View File
@@ -233,7 +233,7 @@ void Button(Entity*);
void MinishEmoticon(Entity*);
void Pot(Entity*);
void EzloCap(Entity*);
void BlockPushed(Entity*);
void BlockPushed();
void LockedDoor(Entity*);
void Object9(Entity*);
void ObjectA(Entity*);
@@ -265,18 +265,18 @@ void EyeSwitch(Entity*);
void PressurePlate();
void BigBarrel(Entity*);
void BarrelInside(Entity*);
void PushableStatue(Entity*);
void PushableStatue();
void Object28(Entity*);
void AmbientClouds(Entity*);
void Object2A(Entity*);
void Object2B(Entity*);
void Beanstalk(Entity*);
void Smoke(Entity*);
void PushableRock(Entity*);
void PushableRock();
void HittableLever();
void Object30(Entity*);
void FrozenFlower(Entity*);
void PullableMushroom(Entity*);
void PullableMushroom();
void Bollard(Entity*);
void WarpPoint(Entity*);
void Object35(Entity*);
@@ -302,7 +302,7 @@ void FileScreenObjects(Entity*);
void Object49(Entity*);
void BackgroundCloud(Entity*);
void Object4B(Entity*);
void PushableFurniture(Entity*);
void PushableFurniture();
void Furniture(Entity*);
void MinishSizedEntrance(Entity*);
void Archway(Entity*);
@@ -339,7 +339,7 @@ void ObjectOnPillar(Entity*);
void MineralWaterSource(Entity*);
void MinishSizedArchway(Entity*);
void Object70(Entity*);
void PushableGrave(Entity*);
void PushableGrave();
void StoneTablet(Entity*);
void LilypadSmall(Entity*);
void Object74(Entity*);
@@ -358,8 +358,8 @@ void Board(Entity*);
void Object81(Entity*);
void BigVortex(Entity*);
void BigPushableLever();
void SmallIceBlock(Entity*);
void BigIceBlock(Entity*);
void SmallIceBlock();
void BigIceBlock();
void Object86(Entity*);
void OctorokBossObject(Entity*);
void MacroBook(Entity*);
+2 -1
View File
@@ -76,7 +76,8 @@ typedef struct {
/* 0x4c */ u8 filler5[28];
/* 0x68 */ u32 animFlags;
/* 0x6c */ void* field_0x6c[8];
/* 0x8c */ void* field_0x8c[16];
/* 0x8c */ void* field_0x8c[8];
/* 0xac */ void* field_0xac[8];
} RoomVars;
static_assert(sizeof(RoomVars) == 0xCC);
extern RoomVars gRoomVars;
+16 -16
View File
@@ -650,7 +650,7 @@ SECTIONS {
asm/object/minishEmoticon.o(.text);
src/object/pot.o(.text);
asm/object/ezloCap.o(.text);
asm/object/blockPushed.o(.text);
src/object/blockPushed.o(.text);
src/object/lockedDoor.o(.text);
asm/object/object9.o(.text);
src/object/objectA.o(.text);
@@ -683,18 +683,18 @@ SECTIONS {
src/object/pressurePlate.o(.text);
asm/object/bigBarrel.o(.text);
src/object/barrelInside.o(.text);
asm/object/pushableStatue.o(.text);
src/object/pushableStatue.o(.text);
asm/object/object28.o(.text);
asm/object/ambientClouds.o(.text);
src/object/object2A.o(.text);
asm/object/object2B.o(.text);
asm/object/beanstalk.o(.text);
src/object/smoke.o(.text);
asm/object/pushableRock.o(.text);
src/object/pushableRock.o(.text);
src/object/hittableLever.o(.text);
asm/object/object30.o(.text);
src/object/frozenFlower.o(.text);
asm/object/pullableMushroom.o(.text);
src/object/pullableMushroom.o(.text);
asm/object/bollard.o(.text);
src/object/warpPoint.o(.text);
asm/object/object35.o(.text);
@@ -723,7 +723,7 @@ SECTIONS {
src/object/object49.o(.text);
src/object/backgroundCloud.o(.text);
asm/object/object4B.o(.text);
asm/object/pushableFurniture.o(.text);
src/object/pushableFurniture.o(.text);
src/object/furniture.o(.text);
src/object/minishSizedEntrance.o(.text);
src/object/archway.o(.text);
@@ -761,7 +761,7 @@ SECTIONS {
src/object/mineralWaterSource.o(.text);
src/object/minishSizedArchway.o(.text);
asm/object/object70.o(.text);
asm/object/pushableGrave.o(.text);
src/object/pushableGrave.o(.text);
asm/object/stoneTablet.o(.text);
src/object/lilypadSmall.o(.text);
asm/object/object74.o(.text);
@@ -778,8 +778,8 @@ SECTIONS {
asm/object/object81.o(.text);
src/object/bigVortex.o(.text);
src/object/bigPushableLever.o(.text);
asm/object/smallIceBlock.o(.text);
asm/object/bigIceBlock.o(.text);
src/object/smallIceBlock.o(.text);
src/object/bigIceBlock.o(.text);
src/object/object86.o(.text);
src/object/octorokBossObject.o(.text);
asm/object/macroBook.o(.text);
@@ -1366,7 +1366,7 @@ SECTIONS {
data/animations/object/pot.o(.rodata);
data/const/object/ezloCap.o(.rodata);
data/animations/object/ezloCap.o(.rodata);
data/const/object/blockPushed.o(.rodata);
src/object/blockPushed.o(.rodata);
src/object/lockedDoor.o(.rodata);
data/const/object/object9.o(.rodata);
data/animations/object/object9.o(.rodata);
@@ -1407,7 +1407,7 @@ SECTIONS {
data/const/object/bigBarrel.o(.rodata);
data/animations/object/bigBarrel.o(.rodata);
src/object/barrelInside.o(.rodata);
data/const/object/pushableStatue.o(.rodata);
src/object/pushableStatue.o(.rodata);
data/animations/object/pushableStatue.o(.rodata);
data/const/object/ambientClouds.o(.rodata);
data/animations/object/ambientClouds.o(.rodata);
@@ -1416,12 +1416,12 @@ SECTIONS {
data/const/object/beanstalk.o(.rodata);
data/animations/object/beanstalk.o(.rodata);
data/const/object/smoke.o(.rodata);
data/const/object/pushableRock.o(.rodata);
src/object/pushableRock.o(.rodata);
data/animations/object/pushableRock.o(.rodata);
src/object/hittableLever.o(.rodata);
data/const/object/object30.o(.rodata);
data/const/object/object31.o(.rodata);
data/const/object/pullableMushroom.o(.rodata);
src/object/pullableMushroom.o(.rodata);
data/animations/object/pullableMushroom.o(.rodata);
data/const/object/bollard.o(.rodata);
data/animations/object/bollard.o(.rodata);
@@ -1459,7 +1459,7 @@ SECTIONS {
data/const/object/object49.o(.rodata);
data/const/object/backgroundCloud.o(.rodata);
data/const/object/object4B.o(.rodata);
data/const/object/pushableFurniture.o(.rodata);
src/object/pushableFurniture.o(.rodata);
data/const/object/furniture.o(.rodata);
data/animations/object/furniture.o(.rodata);
src/object/furniture.o(.rodata);
@@ -1503,7 +1503,7 @@ SECTIONS {
data/const/object/objectOnPillar.o(.rodata);
data/const/object/mineralWaterSource.o(.rodata);
data/const/object/object70.o(.rodata);
data/const/object/pushableGrave.o(.rodata);
src/object/pushableGrave.o(.rodata);
data/const/object/stoneTablet.o(.rodata);
data/const/object/lilypadSmall.o(.rodata);
data/const/object/object74.o(.rodata);
@@ -1525,9 +1525,9 @@ SECTIONS {
data/animations/object/bigVortex.o(.rodata);
src/object/bigPushableLever.o(.rodata);
data/animations/object/bigPushableLever.o(.rodata);
data/const/object/smallIceBlock.o(.rodata);
src/object/smallIceBlock.o(.rodata);
data/animations/object/smallIceBlock.o(.rodata);
data/const/object/bigIceBlock.o(.rodata);
src/object/bigIceBlock.o(.rodata);
data/animations/object/bigIceBlock.o(.rodata);
data/const/object/object86.o(.rodata);
data/animations/object/object86.o(.rodata);
-1
View File
@@ -28,7 +28,6 @@ void sub_08059B18(void);
bool32 sub_08059C8C(Manager12*, u32, u8*, u16*);
extern void sub_0807B9B8(s32, s32, s32);
extern u32 gUnk_086E8460;
typedef struct {
+331
View File
@@ -0,0 +1,331 @@
/**
* @file bigIceBlock.c
* @ingroup Objects
*
* @brief Big Ice Block object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x4];
/*0x6c*/ u16 unk_6c;
/*0x6e*/ u16 unk_6e;
/*0x70*/ u8 unk_70[0x16];
/*0x86*/ u16 unk_86;
} BigIceBlockEntity;
extern const Hitbox gUnk_080FD190;
extern void (*const BigIceBlock_Actions[])(BigIceBlockEntity*);
extern const u16 gUnk_081237B0[];
void sub_08099D30(BigIceBlockEntity*);
void sub_08099910(BigIceBlockEntity*);
extern bool32 sub_0809963C(BigIceBlockEntity*);
void BigIceBlock_Action2(BigIceBlockEntity*);
extern bool32 sub_0809963C(BigIceBlockEntity*);
void sub_08099C18(BigIceBlockEntity*);
void BigIceBlock(BigIceBlockEntity* this) {
if (super->type < 4) {
BigIceBlock_Actions[super->action](this);
} else {
sub_08099D30(this);
}
}
void BigIceBlock_Init(BigIceBlockEntity* this) {
Entity* obj;
if (CheckFlags(this->unk_86)) {
DeleteThisEntity();
}
super->action = 1;
super->flags |= 0x80;
super->updatePriority = 3;
super->field_0x3c = 7;
super->hurtType = 0x48;
super->hitType = 1;
super->flags2 = 0x80;
super->hitbox = (Hitbox*)&gUnk_080FD190;
sub_08099910(this);
InitializeAnimation(super, super->type);
obj = CreateObject(BIG_ICE_BLOCK, 4, 0);
if (obj != NULL) {
obj->parent = super;
}
}
void BigIceBlock_Action1(BigIceBlockEntity* this) {
if (sub_0809963C(this)) {
super->action = 2;
super->actionDelay = 0;
EnqueueSFX(SFX_ICE_BLOCK_MELT);
BigIceBlock_Action2(this);
}
}
void BigIceBlock_Action2(BigIceBlockEntity* this) {
u32 tmp;
if (!sub_0809963C(this)) {
if (super->actionDelay >= 2) {
super->actionDelay -= 2;
} else {
super->actionDelay = 0;
}
if (super->actionDelay == 0) {
super->action = 1;
sub_0805EC60(super);
return;
}
} else {
super->actionDelay += 1;
}
tmp = gUnk_081237B0[super->actionDelay >> 5];
sub_0805EC9C(super, 0x100, tmp, 0);
if (super->type != 1) {
if (super->type != 2) {
SetFlag(this->unk_86);
} else {
sub_080A2A3C(super, 0x53, 0, this->unk_86);
}
}
super->action = 3;
super->actionDelay = 0x3c;
super->flags &= 0x7f;
}
NONMATCH("asm/non_matching/bigIceBlock/sub_08099880.inc", void sub_08099880(BigIceBlockEntity* this)) {
Entity* obj;
s32 rand;
u8 uVar3;
u32 uVar4;
s32 x;
s32 y;
if (--super->actionDelay == 0) {
DeleteThisEntity();
} else {
if (super->actionDelay == 0x30) {
sub_08099C18(this);
}
uVar4 = (0x3c - super->actionDelay) * 0x20 + 0x100;
sub_0805EC9C(super, 0x100, uVar4, 0);
sub_0806FCF4(super, uVar4, 2, 0);
obj = CreateObject(SPECIAL_FX, 0x11, 0x40);
if (obj != NULL) {
rand = Random();
x = ((rand >> 0x10) % 0x21) - 0x10;
y = (rand & 0xf) - 4;
obj->spritePriority.b0 = 3;
PositionRelative(super, obj, x * 0x10000, y * 0x10000);
}
}
}
END_NONMATCH
void sub_08099910(BigIceBlockEntity* this) {
u32 uVar2;
s32 iVar1;
u32 uVar3;
u32 position;
position = COORD_TO_TILE(super);
this->unk_6e = position;
uVar2 = (((super->x.HALF.HI & 8)) >> 0x3) + ((super->y.HALF.HI & 8) >> 2);
this->unk_6c = uVar2;
switch (uVar2) {
default:
SetTile(0x4022, position - 0x41, super->collisionLayer);
SetTile(0x4022, position - 0x40, super->collisionLayer);
SetTile(0x4022, position - 1, super->collisionLayer);
SetTile(0x4022, position, super->collisionLayer);
break;
case 1:
iVar1 = sub_080002C8(position - 0x41, super->collisionLayer);
uVar3 = 0x4024;
if (iVar1 == 0x12) {
uVar3 = 0x4079;
}
SetTile(uVar3, position - 0x41, super->collisionLayer);
SetTile(0x4022, position - 0x40, super->collisionLayer);
iVar1 = sub_080002C8(position - 0x3f, super->collisionLayer);
uVar3 = 0x4025;
if (iVar1 == 0x12) {
uVar3 = 0x407b;
}
SetTile(uVar3, position - 0x3f, super->collisionLayer);
iVar1 = sub_080002C8(position - 1, super->collisionLayer);
uVar3 = 0x4024;
if (iVar1 == 0x12) {
uVar3 = 0x4079;
}
SetTile(uVar3, position - 1, super->collisionLayer);
SetTile(0x4022, position, super->collisionLayer);
iVar1 = sub_080002C8(position + 1, super->collisionLayer);
uVar3 = 0x4025;
if (iVar1 == 0x12) {
uVar3 = 0x407b;
}
SetTile(uVar3, position + 1, super->collisionLayer);
return;
break;
case 2:
iVar1 = sub_080002C8(position - 0x41, super->collisionLayer);
uVar3 = 0x4023;
if (iVar1 == 0x12) {
uVar3 = 0x4077;
}
SetTile(uVar3, position - 0x41, super->collisionLayer);
iVar1 = sub_080002C8(position - 0x40, super->collisionLayer);
uVar3 = 0x4023;
if (iVar1 == 0x12) {
uVar3 = 0x4077;
}
SetTile(uVar3, position - 0x40, super->collisionLayer);
SetTile(0x4022, position - 1, super->collisionLayer);
SetTile(0x4022, position, super->collisionLayer);
iVar1 = sub_080002C8(position + 0x3f, super->collisionLayer);
uVar3 = 0x4026;
if (iVar1 == 0x12) {
uVar3 = 0x407c;
}
SetTile(uVar3, position + 0x3f, super->collisionLayer);
iVar1 = sub_080002C8(position + 0x40, super->collisionLayer);
uVar3 = 0x4026;
if (iVar1 == 0x12) {
uVar3 = 0x407c;
}
SetTile(uVar3, position + 0x40, super->collisionLayer);
break;
case 3:
iVar1 = sub_080002C8(position - 0x41, super->collisionLayer);
uVar3 = 0x4027;
if (iVar1 == 0x12) {
uVar3 = 0x4075;
}
SetTile(uVar3, position - 0x41, super->collisionLayer);
iVar1 = sub_080002C8(position - 0x40, super->collisionLayer);
uVar3 = 0x4023;
if (iVar1 == 0x12) {
uVar3 = 0x4077;
}
SetTile(uVar3, position - 0x40, super->collisionLayer);
iVar1 = sub_080002C8(position - 0x3f, super->collisionLayer);
uVar3 = 0x4028;
if (iVar1 == 0x12) {
uVar3 = 0x4076;
}
SetTile(uVar3, position - 0x3f, super->collisionLayer);
iVar1 = sub_080002C8(position - 1, super->collisionLayer);
uVar3 = 0x4024;
if (iVar1 == 0x12) {
uVar3 = 0x4079;
}
SetTile(uVar3, position - 1, super->collisionLayer);
SetTile(0x4022, position, super->collisionLayer);
iVar1 = sub_080002C8(position + 1, super->collisionLayer);
uVar3 = 0x4025;
if (iVar1 == 0x12) {
uVar3 = 0x407b;
}
SetTile(uVar3, position + 1, super->collisionLayer);
iVar1 = sub_080002C8(position + 0x3f, super->collisionLayer);
uVar3 = 0x4029;
if (iVar1 == 0x12) {
uVar3 = 0x4078;
}
SetTile(uVar3, position + 0x3f, super->collisionLayer);
iVar1 = sub_080002C8(position + 0x40, super->collisionLayer);
uVar3 = 0x4026;
if (iVar1 == 0x12) {
uVar3 = 0x407c;
}
SetTile(uVar3, position + 0x40, super->collisionLayer);
iVar1 = sub_080002C8(position + 0x41, super->collisionLayer);
uVar3 = 0x402a;
if (iVar1 == 0x12) {
uVar3 = 0x407a;
}
SetTile(uVar3, position + 0x41, super->collisionLayer);
break;
}
}
void sub_08099C18(BigIceBlockEntity* this) {
u32 tmp = this->unk_6e;
switch (this->unk_6c) {
default:
sub_0807BA8C(tmp - 0x41, super->collisionLayer);
sub_0807BA8C(tmp - 0x40, super->collisionLayer);
sub_0807BA8C(tmp - 1, super->collisionLayer);
sub_0807BA8C(tmp, super->collisionLayer);
break;
case 1:
sub_0807BA8C(tmp - 0x41, super->collisionLayer);
sub_0807BA8C(tmp - 0x40, super->collisionLayer);
sub_0807BA8C(tmp - 0x3f, super->collisionLayer);
sub_0807BA8C(tmp - 1, super->collisionLayer);
sub_0807BA8C(tmp, super->collisionLayer);
sub_0807BA8C(tmp + 1, super->collisionLayer);
break;
case 2:
sub_0807BA8C(tmp - 0x41, super->collisionLayer);
sub_0807BA8C(tmp - 0x40, super->collisionLayer);
sub_0807BA8C(tmp - 1, super->collisionLayer);
sub_0807BA8C(tmp, super->collisionLayer);
sub_0807BA8C(tmp + 0x3f, super->collisionLayer);
sub_0807BA8C(tmp + 0x40, super->collisionLayer);
break;
case 3:
sub_0807BA8C(tmp - 0x41, super->collisionLayer);
sub_0807BA8C(tmp - 0x40, super->collisionLayer);
sub_0807BA8C(tmp - 0x3f, super->collisionLayer);
sub_0807BA8C(tmp - 1, super->collisionLayer);
sub_0807BA8C(tmp, super->collisionLayer);
sub_0807BA8C(tmp + 1, super->collisionLayer);
sub_0807BA8C(tmp + 0x3f, super->collisionLayer);
sub_0807BA8C(tmp + 0x40, super->collisionLayer);
sub_0807BA8C(tmp + 0x41, super->collisionLayer);
break;
}
}
void sub_08099D30(BigIceBlockEntity* this) {
if ((super->parent)->next == NULL) {
DeleteThisEntity();
}
if (super->action == 0) {
super->action = 1;
InitializeAnimation(super, 4);
CopyPositionAndSpriteOffset(super->parent, super);
super->y.HALF.HI++;
super->spriteOffsetY--;
}
if ((super->parent)->action < 2) {
super->spriteSettings.draw = 1;
if ((super->frame & 1) != 0) {
super->frame = 0;
super->frameDuration = (Random() & 0x78) + 0x78;
}
GetNextFrame(super);
} else {
super->spriteSettings.draw = 0;
}
}
void (*const BigIceBlock_Actions[])(BigIceBlockEntity*) = {
BigIceBlock_Init,
BigIceBlock_Action1,
BigIceBlock_Action2,
sub_08099880,
};
const u16 gUnk_081237B0[] = {
256, 266, 275, 284, 293,
};
+181
View File
@@ -0,0 +1,181 @@
/**
* @file blockPushed.c
* @ingroup Objects
*
* @brief Block Pushed object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u32 unk_68;
} BlockPushedEntity;
extern void (*const gUnk_0811F624[])(BlockPushedEntity*);
extern const Hitbox* const gUnk_0811F64C[];
void sub_080832D8(u32, BlockPushedEntity*);
void sub_080830B8(BlockPushedEntity*);
void BlockPushed(BlockPushedEntity* this) {
gUnk_0811F624[super->action](this);
}
void sub_08082EB4(BlockPushedEntity* this) {
u16 tmp;
u32 pos;
if (gRoomControls.area == 0x11) {
sub_080AE068(super);
if (LoadFixedGFX(super, 0x1c1) == 0) {
super->spriteSettings.draw = 0;
return;
}
super->spriteSettings.draw = 1;
}
super->action = 1;
super->actionDelay = 0x20;
super->speed = 0x80;
super->spritePriority.b0 = 6;
pos = COORD_TO_TILE(super);
tmp = super->type * 8;
super->x.HALF.HI += tmp;
super->y.HALF.HI += tmp;
super->hitbox = (Hitbox*)gUnk_0811F64C[super->type];
this->unk_68 = GetTileType(pos, (u32)super->collisionLayer);
switch (super->type) {
case 0:
sub_080832D8(pos, this);
break;
case 1:
sub_080832D8(pos, this);
sub_080832D8(pos + 1, this);
sub_080832D8(pos + 0x40, this);
sub_080832D8(pos + 0x41, this);
break;
case 2:
sub_080832D8(pos, this);
sub_080832D8(pos + 1, this);
sub_080832D8(pos + 2, this);
sub_080832D8(pos + 0x40, this);
sub_080832D8(pos + 0x41, this);
sub_080832D8(pos + 0x42, this);
sub_080832D8(pos + 0x80, this);
sub_080832D8(pos + 0x81, this);
sub_080832D8(pos + 0x82, this);
break;
default:
sub_080832D8(pos, this);
sub_080832D8(pos + 1, this);
sub_080832D8(pos + 2, this);
sub_080832D8(pos + 3, this);
sub_080832D8(pos + 0x40, this);
sub_080832D8(pos + 0x41, this);
sub_080832D8(pos + 0x42, this);
sub_080832D8(pos + 0x43, this);
sub_080832D8(pos + 0x80, this);
sub_080832D8(pos + 0x81, this);
sub_080832D8(pos + 0x82, this);
sub_080832D8(pos + 0x83, this);
sub_080832D8(pos + 0xc0, this);
sub_080832D8(pos + 0xc1, this);
sub_080832D8(pos + 0xc2, this);
sub_080832D8(pos + 0xc3, this);
break;
}
EnqueueSFX(SFX_10F);
}
void sub_08083094(BlockPushedEntity* this) {
LinearMoveUpdate(super);
sub_0800445C(super);
if (--super->actionDelay == 0) {
sub_080830B8(this);
}
}
void sub_080830B8(BlockPushedEntity* this) {
s32 offset = super->type * 8;
u32 pos = COORD_TO_TILE_OFFSET(super, offset, offset);
switch (super->type) {
case 0:
if (sub_0800442E(super)) {
return;
}
sub_0807B7D8(0x365, pos, super->collisionLayer);
break;
case 1:
sub_0807B7D8(this->unk_68, pos, super->collisionLayer);
sub_0807B7D8(0x36f, pos + 1, super->collisionLayer);
sub_0807B7D8(0x370, pos + 0x40, super->collisionLayer);
sub_0807B7D8(0x371, pos + 0x41, super->collisionLayer);
break;
case 2:
sub_0807B7D8(this->unk_68, pos, super->collisionLayer);
sub_0807B7D8(0x372, pos + 1, super->collisionLayer);
sub_0807B7D8(0x36f, pos + 2, super->collisionLayer);
sub_0807B7D8(0x374, pos + 0x40, super->collisionLayer);
sub_0807B7D8(0x376, pos + 0x41, super->collisionLayer);
sub_0807B7D8(0x375, pos + 0x42, super->collisionLayer);
sub_0807B7D8(0x370, pos + 0x80, super->collisionLayer);
sub_0807B7D8(0x373, pos + 0x81, super->collisionLayer);
sub_0807B7D8(0x371, pos + 0x82, super->collisionLayer);
break;
default:
sub_0807B7D8(this->unk_68, pos, super->collisionLayer);
sub_0807B7D8(0x372, pos + 1, super->collisionLayer);
sub_0807B7D8(0x372, pos + 2, super->collisionLayer);
sub_0807B7D8(0x36f, pos + 3, super->collisionLayer);
sub_0807B7D8(0x374, pos + 0x40, super->collisionLayer);
sub_0807B7D8(0x376, pos + 0x41, super->collisionLayer);
sub_0807B7D8(0x376, pos + 0x42, super->collisionLayer);
sub_0807B7D8(0x375, pos + 0x43, super->collisionLayer);
sub_0807B7D8(0x374, pos + 0x80, super->collisionLayer);
sub_0807B7D8(0x376, pos + 0x81, super->collisionLayer);
sub_0807B7D8(0x376, pos + 0x82, super->collisionLayer);
sub_0807B7D8(0x375, pos + 0x83, super->collisionLayer);
sub_0807B7D8(0x370, pos + 0xc0, super->collisionLayer);
sub_0807B7D8(0x373, pos + 0xc1, super->collisionLayer);
sub_0807B7D8(0x373, pos + 0xc2, super->collisionLayer);
sub_0807B7D8(0x371, pos + 0xc3, super->collisionLayer);
break;
}
DeleteEntity(super);
}
void sub_080832D8(u32 param_1, BlockPushedEntity* this) {
if (super->collisionLayer != 2) {
if ((super->direction & 8) != 0) {
sub_0807B7D8(0x21, param_1, super->collisionLayer);
} else {
sub_0807B7D8(0x20, param_1, super->collisionLayer);
}
} else {
if ((super->direction & 8) != 0) {
sub_0807B7D8(0x2f, param_1, super->collisionLayer);
} else {
sub_0807B7D8(0x2e, param_1, super->collisionLayer);
}
}
}
void (*const gUnk_0811F624[])(BlockPushedEntity*) = {
sub_08082EB4,
sub_08083094,
};
const Hitbox gUnk_0811F62C = { 0, 0, { 0, 0, 0, 0 }, 5, 4 };
const Hitbox gUnk_0811F634 = { 0, 0, { 0, 0, 0, 0 }, 13, 12 };
const Hitbox gUnk_0811F63C = { 0, 0, { 0, 0, 0, 0 }, 21, 20 };
const Hitbox gUnk_0811F644 = { 0, 0, { 0, 0, 0, 0 }, 29, 28 };
const Hitbox* const gUnk_0811F64C[] = {
&gUnk_0811F62C,
&gUnk_0811F634,
&gUnk_0811F63C,
&gUnk_0811F644,
};
+1 -1
View File
@@ -3,9 +3,9 @@
#include "flags.h"
#include "room.h"
#include "sound.h"
#include "functions.h"
extern void sub_080A0960(Entity*, u32);
extern void sub_0801AF18(u8*, u32, u32);
extern void (*const gUnk_08124950[])(Entity*);
extern u8 gUnk_08124960;
+1 -5
View File
@@ -3,10 +3,6 @@
extern void (*MaskActionFuncs[])(Entity*);
extern void sub_08000148(u16, u16, u32);
extern void sub_0805457C(Entity*, s32);
void Mask(Entity* this) {
MaskActionFuncs[this->action](this);
}
@@ -79,7 +75,7 @@ void sub_08092A94(Entity* this) {
// Presumably, make the mask fall
SetTile(this->field_0x7c.HALF_U.LO, this->field_0x7c.HALF_U.HI, 1);
sub_08000148(this->field_0x7a.HWORD, this->field_0x7c.HALF.HI, 1);
sub_08000148(this->field_0x7a.HWORD, (u16)this->field_0x7c.HALF.HI, 1);
this->action = 2;
-1
View File
@@ -5,7 +5,6 @@ static void sub_0808F2B0(Entity*);
void sub_0808F14C(Entity*);
void sub_0808F244(Entity*);
extern void sub_0806FCF4(Entity*, u32, u32, u32);
extern void sub_0808F5EC(Entity*);
extern void (*const gUnk_08121E5C[])(Entity*);
-2
View File
@@ -2,8 +2,6 @@
#include "object.h"
#include "game.h"
extern void sub_0807B9B8(s32, s32, s32);
extern void (*const OctorokBossObject_Actions[])(Entity*);
extern const u16 gUnk_0812384C[];
extern const u16 gUnk_0812388C[];
+316
View File
@@ -0,0 +1,316 @@
/**
* @file pullableMushroom.c
* @ingroup Objects
*
* @brief Pullable Mushroom object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
#include "game.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x8];
/*0x70*/ u32 unk_70;
/*0x74*/ u32 unk_74;
/*0x78*/ u32 unk_78;
/*0x7c*/ u32 unk_7c;
} PullableMushroomEntity;
extern const Hitbox gUnk_080FD224;
extern const u8 gUnk_08126EE4[];
extern void (*const gUnk_081211A4[])(PullableMushroomEntity*);
extern void (*const gUnk_081211B4[])(PullableMushroomEntity*);
extern void (*const gUnk_081211C0[])(PullableMushroomEntity*);
extern const u16 gUnk_081211CC[];
extern void (*const gUnk_081211DC[])(PullableMushroomEntity*);
extern const u16 gUnk_081211E4[];
extern void (*const gUnk_081211EC[])(PullableMushroomEntity*);
extern const u8 gUnk_081211F4[];
extern const u8 gUnk_081211FC[];
void sub_0808AB68(PullableMushroomEntity*);
void sub_0808B168(PullableMushroomEntity*, u32);
u32 sub_0808B1F0(PullableMushroomEntity*, Entity*);
bool32 sub_0808B21C(PullableMushroomEntity*, u32);
void PullableMushroom(PullableMushroomEntity* this) {
gUnk_081211A4[super->action](this);
super->bitfield = 0;
}
void sub_0808AA1C(PullableMushroomEntity* this) {
super->action = 1;
if (AreaIsDungeon() == 0) {
ChangeObjPalette(super, 0);
}
switch (super->type) {
case 0:
super->spritePriority.b0 = 4;
super->hitbox = (Hitbox*)&gUnk_080FD224;
super->field_0x16 = 1;
SetTile(0x4022, COORD_TO_TILE(super), super->collisionLayer);
super->health = 1;
super->field_0x3c = 7;
super->hitType = 0x6e;
super->flags2 = 0x0e;
super->field_0x1c = 1;
super->flags |= 0x80;
super->spriteOffsetY = 4;
break;
case 1:
super->spritePriority.b0 = 4;
if (super->type2 != 0) {
super->hitbox = (Hitbox*)&gUnk_080FD224;
super->flags |= 0x80;
super->health = 1;
super->field_0x3c = 7;
super->hitType = 0x6e;
super->flags2 = 4;
super->field_0x1c = 1;
super->action = 3;
}
InitializeAnimation(super, super->animationState + 9);
break;
case 2:
super->spritePriority.b0 = 5;
super->spriteRendering.b0 = 3;
if ((super->animationState & 1)) {
this->unk_74 = 0x200;
this->unk_78 = 0x100;
} else {
this->unk_78 = 0x200;
this->unk_74 = 0x100;
}
break;
}
sub_0808AB68(this);
}
void sub_0808AB68(PullableMushroomEntity* this) {
gUnk_081211B4[super->type](this);
}
void sub_0808AB80(PullableMushroomEntity* this) {
gUnk_081211C0[super->subAction](this);
}
void sub_0808AB98(PullableMushroomEntity* this) {
if (*(u16*)&super->parent->action == 0x201) {
super->parent->child = NULL;
DeleteThisEntity();
} else if (super->parent->action == 2) {
sub_0808B168(this, 0);
}
}
ASM_FUNC("asm/non_matching/pullableMushroom/sub_0808ABC4.inc", void sub_0808ABC4(PullableMushroomEntity* this))
ASM_FUNC("asm/non_matching/pullableMushroom/sub_0808ACEC.inc", void sub_0808ACEC(PullableMushroomEntity* this))
void sub_0808ADA0(PullableMushroomEntity* this) {
if ((sub_0808B1F0(this, super->child) < 8) || (super->child == NULL)) {
super->subAction += 1;
super->actionDelay = 2;
super->flags |= 0x80;
super->animationState ^= 2;
super->spritePriority.b0 = 4;
} else {
super->child->speed = 0x400;
LinearMoveUpdate(super->child);
}
}
void sub_0808ADF0(PullableMushroomEntity* this) {
if (super->animationState + 0xd == super->animIndex) {
if ((super->frame & 0x80) != 0) {
super->subAction = 0;
super->flags |= 0x80;
} else {
GetNextFrame(super);
}
} else {
if (super->animationState + 1 != super->animIndex) {
InitializeAnimation(super, super->animationState + 1);
if (super->animationState == 3) {
super->spriteSettings.flipX = 0;
} else {
super->spriteSettings.flipX = 1;
}
SoundReq(SFX_12E);
} else {
GetNextFrame(super);
if (((super->frame & 0x80) != 0) && (--super->actionDelay == 0xff)) {
InitializeAnimation(super, super->animationState + 0xd);
}
}
}
}
void sub_0808AE84(PullableMushroomEntity* this) {
if (gPlayerState.heldObject == 0) {
super->subAction = 6;
}
gUnk_081211DC[super->subAction - 5](this);
}
void sub_0808AEB0(PullableMushroomEntity* this) {
u32 uVar1;
if (super->actionDelay != 0) {
uVar1 = sub_0808B1F0(this, super->child);
if ((gPlayerState.field_0x90 & gUnk_081211E4[super->animationState]) != 0) {
GetNextFrame(super);
if (uVar1 < 0x40) {
sub_080044AE(&gPlayerEntity, 0x40, super->direction);
if (--this->unk_7c == 0xffffffff) {
this->unk_7c = 4;
SoundReq(SFX_12F);
}
}
super->field_0xf = 1;
} else {
if (((super->field_0xf != 0) && (gPlayerEntity.action == 1)) && (gPlayerState.swim_state == 0)) {
gPlayerState.queued_action = 0x1b;
gPlayerState.field_0x38 = uVar1;
gPlayerState.field_0x39 = super->direction ^ 0x10;
gPlayerState.field_0x3a = sub_0808B1F0(this, &gPlayerEntity);
super->subAction++;
}
}
} else {
super->actionDelay = 1;
this->unk_7c = 1;
super->animationState = gPlayerEntity.animationState >> 1 ^ 2;
super->direction = (super->animationState << 3);
super->flags &= 0x7f;
super->spriteSettings.flipX = gPlayerEntity.spriteSettings.flipX;
InitializeAnimation(super, super->animationState + 5);
if (sub_0808B21C(this, 0)) {
sub_0808B168((PullableMushroomEntity*)super->child, 0);
}
if ((super->animationState & 1) != 0) {
gPlayerEntity.y.HALF.HI = super->y.HALF.HI;
} else {
gPlayerEntity.x.HALF.HI = super->x.HALF.HI;
}
}
}
void sub_0808AFD4(PullableMushroomEntity* this) {
super->action = 1;
super->subAction = 1;
(super->child)->direction = super->direction ^ 0x10;
SoundReq(SFX_130);
}
void sub_0808AFF0(PullableMushroomEntity* this) {
gUnk_081211EC[super->subAction](this);
if ((((gPlayerState.field_0x1c & 0xf) != 1) || ((super->bitfield & 0x7f) != 0x13)) && (super->type == 1)) {
(super->parent)->action = 1;
(super->parent)->subAction = 1;
super->direction = super->parent->direction ^ 0x10;
super->parent->flags &= 0x7f;
super->flags &= 0x7f;
super->action = 1;
SoundReq(SFX_130);
}
}
void sub_0808B05C(PullableMushroomEntity* this) {
if (super->type == 0) {
super->animationState = gPlayerEntity.animationState >> 1 ^ 2;
super->direction = super->animationState << 3;
super->spriteSettings.flipX = gPlayerEntity.spriteSettings.flipX;
super->flags &= 0x7f;
InitializeAnimation(super, super->animationState + 5);
if (sub_0808B21C(this, 1)) {
sub_0808B168((PullableMushroomEntity*)super->child, 1);
}
}
super->subAction++;
}
ASM_FUNC("asm/non_matching/pullableMushroom/sub_0808B0BC.inc", void sub_0808B0BC(PullableMushroomEntity* this))
ASM_FUNC("asm/non_matching/pullableMushroom/sub_0808B168.inc",
void sub_0808B168(PullableMushroomEntity* this, u32 param_2))
u32 sub_0808B1F0(PullableMushroomEntity* this, Entity* other) {
s32 sVar1;
s32 sVar2;
u32 uVar3;
if ((super->animationState & 1) != 0) {
sVar1 = super->x.HALF.HI;
sVar2 = other->x.HALF.HI;
} else {
sVar1 = super->y.HALF.HI;
sVar2 = other->y.HALF.HI;
}
uVar3 = (s32)sVar1 - (s32)sVar2;
if ((s32)uVar3 < 0) {
uVar3 = -uVar3;
}
return uVar3;
}
bool32 sub_0808B21C(PullableMushroomEntity* this, u32 param_2) {
Entity* obj;
super->spritePriority.b0 = 6;
obj = CreateObjectWithParent(super, PULLABLE_MUSHROOM, 1, 0);
super->child = obj;
if (obj != NULL) {
obj->animationState = super->animationState;
(super->child)->direction = super->direction;
super->child->spriteSettings.flipX = super->spriteSettings.flipX;
(super->child)->parent = super;
(super->child)->type2 = (u8)param_2;
}
obj = CreateObjectWithParent(super, PULLABLE_MUSHROOM, 2, 0);
super->parent = obj;
if (obj != NULL) {
obj->animationState = super->animationState;
(super->parent)->child = super->child;
return TRUE;
}
return FALSE;
}
void (*const gUnk_081211A4[])(PullableMushroomEntity*) = {
sub_0808AA1C,
sub_0808AB68,
sub_0808AE84,
sub_0808AFF0,
};
void (*const gUnk_081211B4[])(PullableMushroomEntity*) = {
sub_0808AB80,
sub_0808AB98,
sub_0808ABC4,
};
void (*const gUnk_081211C0[])(PullableMushroomEntity*) = {
sub_0808ACEC,
sub_0808ADA0,
sub_0808ADF0,
};
const u16 gUnk_081211CC[] = { 32768, 64000, 0, 64517, 0, 0, 32768, 64763 };
void (*const gUnk_081211DC[])(PullableMushroomEntity*) = {
sub_0808AEB0,
sub_0808AFD4,
};
const u16 gUnk_081211E4[] = { 1024, 256, 2048, 512 };
void (*const gUnk_081211EC[])(PullableMushroomEntity*) = {
sub_0808B05C,
sub_0808B0BC,
};
const u8 gUnk_081211F4[] = {
0, 8, 248, 252, 0, 248, 8, 252,
};
const u8 gUnk_081211FC[] = {
0, 3, 248, 252, 0, 244, 8, 252,
};
+401
View File
@@ -0,0 +1,401 @@
/**
* @file pushableFurniture.c
* @ingroup Objects
*
* @brief Pushable Furniture object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x8];
/*0x70*/ u16 unk_70;
/*0x72*/ u16 unk_72;
/*0x74*/ u16 unk_74;
/*0x76*/ u16 unk_76;
/*0x78*/ u8 unk_78[0x2];
/*0x7a*/ u16 unk_7a;
/*0x7c*/ u16 unk_7c;
/*0x7e*/ u16 unk_7e;
/*0x80*/ u8 unk_80;
/*0x81*/ u8 unk_81;
/*0x82*/ u8 unk_82;
/*0x83*/ u8 unk_83;
/*0x84*/ u8 unk_84[0x2];
/*0x86*/ u16 unk_86;
} PushableFurnitureEntity;
extern const s16 gUnk_080B4488[];
extern void (*const PushableFurniture_Actions[])(PushableFurnitureEntity*);
extern const u16 gUnk_08121EE4[];
extern const u16 gUnk_08121EF0[];
void sub_08090514(PushableFurnitureEntity*);
void sub_0808FF50(PushableFurnitureEntity*);
void sub_0808FBFC(PushableFurnitureEntity*);
void sub_0808FB68(PushableFurnitureEntity*);
bool32 sub_0808FECC(PushableFurnitureEntity*);
void sub_0808FF20(PushableFurnitureEntity*);
void nullsub_1(PushableFurnitureEntity*);
void sub_0808FD44(PushableFurnitureEntity*, u32);
void sub_0808FDE8(PushableFurnitureEntity*);
bool32 sub_0808FC5C(PushableFurnitureEntity*);
void sub_08090498(PushableFurnitureEntity*);
void sub_08090254(PushableFurnitureEntity*);
void sub_08090094(PushableFurnitureEntity*, u32, u32);
void sub_0809028C(PushableFurnitureEntity*, u32);
void sub_08090480(u32, u32);
void PushableFurniture(PushableFurnitureEntity* this) {
PushableFurniture_Actions[super->action](this);
if (super->action != 0) {
sub_08090514(this);
}
}
ASM_FUNC("asm/non_matching/pushableFurniture/sub_0808F990.inc", void sub_0808F990(PushableFurnitureEntity* this))
void PushableFurniture_Action1(PushableFurnitureEntity* this) {
if (this->unk_81 == 0) {
if (this->unk_80 == 0) {
sub_0808FBFC(this);
} else {
sub_0808FB68(this);
}
} else {
if (super->actionDelay != 0 && --super->actionDelay == 0) {
EnqueueSFX(SFX_BUTTON_PRESS);
}
}
switch (super->type) {
case 2:
case 4:
switch (super->subAction) {
case 0:
if (sub_0808FECC(this)) {
super->subAction = 1;
super->actionDelay = 0xc;
}
break;
case 1:
if (--super->actionDelay == 0) {
super->frameIndex = 1;
super->subAction = 2;
EnqueueSFX(SFX_80);
sub_0808FF20(this);
}
break;
case 2:
nullsub_1(this);
break;
}
}
}
void sub_0808FB68(PushableFurnitureEntity* this) {
u32 tileIndex = GetTileIndex(this->unk_70, super->collisionLayer);
switch (tileIndex) {
case 0x4030:
case 0x4031:
super->action = 2;
super->direction = (((tileIndex - 0x30) & 1) << 4) | 8;
SetPlayerControl(CONTROL_1);
sub_0808FD44(this, 0);
break;
default:
tileIndex = GetTileIndex(this->unk_72, super->collisionLayer);
switch (tileIndex) {
case 0x4030:
case 0x4031:
super->action = 2;
super->direction = (((tileIndex - 0x30) & 1) << 4) | 8;
SetPlayerControl(CONTROL_1);
sub_0808FD44(this, 1);
break;
}
sub_0808FDE8(this);
break;
}
}
void sub_0808FBFC(PushableFurnitureEntity* this) {
u32 tileIndex = GetTileIndex(this->unk_7c, super->collisionLayer);
if (tileIndex != 0x404a) {
super->action = 2;
super->direction = ((tileIndex - 0x4bU) & 3) << 3;
SetPlayerControl(CONTROL_1);
sub_0808FD44(this, 0);
}
}
void PushableFurniture_Action2(PushableFurnitureEntity* this) {
sub_0800445C(super);
if (sub_0808FC5C(this)) {
super->action = 1;
SetPlayerControl(CONTROL_ENABLED);
}
}
bool32 sub_0808FC5C(PushableFurnitureEntity* this) {
bool32 bVar2;
u8* puVar5;
LinearMoveUpdate(super);
if (--super->actionDelay == 0) {
if ((super->type == 2) || (super->type == 4)) {
super->spriteOffsetY = 0xfe;
} else {
super->spriteOffsetY = 0;
}
if (sub_080002D0(super)) {
return 0;
}
if (super->field_0xf == 0) {
sub_0808FF50(this);
return TRUE;
}
bVar2 = FALSE;
if (*(u16*)&super->type == 0x101) {
if (super->y.HALF.HI != this->unk_7e)
goto _0808FCC8;
} else {
if (super->x.HALF.HI == this->unk_7e) {
bVar2 = TRUE;
}
_0808FCC8:
if (!bVar2) {
sub_0808FF50(this);
return TRUE;
}
}
this->unk_81 = 1;
if (super->parent == NULL) {
SetFlag((u32)this->unk_86);
} else {
if ((this->unk_82 & 0x80) != 0) {
puVar5 = super->parent->spriteAnimation + 2;
*puVar5 = (1 << (this->unk_7a)) | *puVar5;
} else {
SetLocalFlag((u32)this->unk_82);
}
}
if (this->unk_80 == 0) {
super->actionDelay = 4;
} else {
super->actionDelay = 0x18;
}
if ((gPlayerState.flags & 0x80) == 0) {
super->actionDelay += 0x10;
}
sub_0808FF50(this);
return TRUE;
} else {
return FALSE;
}
}
void sub_0808FD44(PushableFurnitureEntity* this, u32 param_2) {
u32 tmp;
if (this->unk_80 == 1) {
if (this->unk_83 != 0) {
sub_08090498(this);
}
if (param_2 != 0) {
tmp = this->unk_72;
} else {
tmp = this->unk_70;
}
if ((gPlayerState.flags & 0x80) != 0) {
super->speed = 0x40;
super->actionDelay = 0x20;
} else {
super->speed = 0x80;
super->actionDelay = 0x10;
}
} else {
tmp = this->unk_7c;
if ((gPlayerState.flags & 0x80) != 0) {
super->speed = 0x40;
super->actionDelay = 0x40;
} else {
super->speed = 0x80;
super->actionDelay = 0x20;
}
}
EnqueueSFX(SFX_10F);
sub_08090254(this);
GetTileIndex(tmp + gUnk_080B4488[super->direction >> 3], super->collisionLayer);
}
void sub_0808FDE8(PushableFurnitureEntity* this) {
u32 uVar1;
s32 iVar2;
u32 uVar3;
uVar3 = (u32)this->unk_70;
uVar1 = sub_080002E0(uVar3 - 1, 1);
iVar2 = GetTileIndex(uVar3, 1);
if (iVar2 == 0x402e) {
if ((((uVar1 & 0xf0) != 0) && ((uVar1 & 0xf0) != 0x50)) || ((uVar1 & 5) == 0)) {
SetTile(0x402c, uVar3, 1);
}
} else {
iVar2 = sub_080002E0(uVar3, 1);
if ((iVar2 == 5) && ((((uVar1 & 0xf0) == 0 || ((uVar1 & 0xf0) == 0x50)) && ((uVar1 & 5) != 0)))) {
SetTile(0x402e, uVar3, 1);
}
}
uVar3 = (u32)this->unk_72;
uVar1 = sub_080002E0(uVar3 + 1, 1);
iVar2 = GetTileIndex(uVar3, 1);
if (iVar2 == 0x402f) {
if ((((uVar1 & 0xf0) != 0) && ((uVar1 & 0xf0) != 0x50)) || ((uVar1 & 10) == 0)) {
SetTile(0x402d, uVar3, 1);
}
} else {
iVar2 = sub_080002E0(uVar3, 1);
if (((iVar2 == 10) && (((uVar1 & 0xf0) == 0 || ((uVar1 & 0xf0) == 0x50)))) && ((uVar1 & 10) != 0)) {
SetTile(0x402f, uVar3, 1);
}
}
}
bool32 sub_0808FECC(PushableFurnitureEntity* this) {
bool32 result = TRUE;
if (!((gPlayerState.flags & 0x80) == 0 && (gPlayerEntity.action == 6) && (gPlayerEntity.animationState == 0) &&
(gPlayerEntity.y.HALF.HI - super->y.HALF.HI < 0x14) && (super->x.HALF.HI + 0xc > gPlayerEntity.x.HALF.HI) &&
(super->x.HALF.HI - 12 < gPlayerEntity.x.HALF.HI))) {
result = FALSE;
}
return result;
}
void sub_0808FF20(PushableFurnitureEntity* this) {
Entity* obj;
switch (super->type2) {
case 0:
break;
case 1:
case 2:
obj = CreateObject(OBJECT_63, super->type2 - 1, 0);
if (obj != NULL) {
obj->parent = super;
CopyPosition(super, obj);
}
break;
}
}
void nullsub_1(PushableFurnitureEntity* this) {
}
void sub_0808FF50(PushableFurnitureEntity* this) {
u32 tmp;
u32 position;
u32 tmp2;
this->unk_7c = COORD_TO_TILE(super);
tmp2 = super->x.HALF.HI & 0xf;
tmp = this->unk_7c;
position = tmp;
switch (this->unk_80) {
case 0:
this->unk_70 = tmp;
this->unk_74 = GetTileIndex(this->unk_70, 1);
SetTile(0x404a, tmp, 1);
break;
case 1:
if ((tmp2 & 8) != 0) {
this->unk_70 = this->unk_7c;
this->unk_74 = GetTileIndex(this->unk_70, 1);
SetTile(gUnk_08121EE4[this->unk_81], position, 1);
this->unk_72 = tmp + 1;
this->unk_76 = GetTileIndex(this->unk_72, 1);
sub_08090094(this, gUnk_08121EE4[this->unk_81 + 4], this->unk_72);
sub_0809028C(this, 1);
} else {
this->unk_72 = this->unk_7c;
this->unk_76 = GetTileIndex(this->unk_72, 1);
SetTile(gUnk_08121EE4[this->unk_81], position, 1);
this->unk_70 = tmp - 1;
this->unk_74 = GetTileIndex(this->unk_70, 1);
sub_08090094(this, gUnk_08121EE4[this->unk_81 + 2], this->unk_70);
sub_0809028C(this, 0);
}
break;
}
}
ASM_FUNC("asm/non_matching/pushableFurniture/sub_08090094.inc",
void sub_08090094(PushableFurnitureEntity* this, u32 param_2, u32 param_3))
void sub_08090254(PushableFurnitureEntity* this) {
sub_0807B9B8(this->unk_74, this->unk_70, super->collisionLayer);
if (this->unk_80 == 1) {
sub_0807B9B8(this->unk_76, this->unk_72, super->collisionLayer);
}
}
ASM_FUNC("asm/non_matching/pushableFurniture/sub_0809028C.inc",
void sub_0809028C(PushableFurnitureEntity* this, u32 param_2))
void sub_08090480(u32 param_1, u32 param_2) {
SetTile(gUnk_08121EF0[param_1], param_2, 1);
}
void sub_08090498(PushableFurnitureEntity* this) {
u32 tmp = this->unk_70 - 0x80;
sub_0807BA8C(tmp, 1);
if (((this->unk_83 & 1) != 0) && (GetTileType(tmp, 2) == 0x306)) {
sub_08000148(0x62, tmp, 1);
}
tmp = this->unk_72 - 0x80;
sub_0807BA8C(tmp, 1);
if (((this->unk_83 & 2) != 0) && (GetTileType(tmp, 2) == 0x308)) {
sub_08000148(99, tmp, 1);
}
}
void sub_08090514(PushableFurnitureEntity* this) {
if (super->parent != NULL) {
switch (super->parent->subAction) {
case 0:
super->spriteRendering.b3 = 2;
super->spritePriority.b0 = 4;
break;
case 1:
super->spriteRendering.b3 = 3;
super->spritePriority.b0 = 4;
break;
case 2:
super->spriteRendering.b3 = 2;
super->spritePriority.b0 = 5;
break;
case 3:
super->spriteRendering.b3 = 2;
super->spritePriority.b0 = 3;
break;
}
}
}
void (*const PushableFurniture_Actions[])(PushableFurnitureEntity*) = {
sub_0808F990,
PushableFurniture_Action1,
PushableFurniture_Action2,
};
const u16 gUnk_08121EE4[] = {
0x402b, 0x4022, 0x402c, 0x4024, 0x402d, 0x4025,
};
const u16 gUnk_08121EF0[] = {
0x4026,
0x4065,
0x4066,
0,
};
+213
View File
@@ -0,0 +1,213 @@
/**
* @file pushableGrave.c
* @ingroup Objects
*
* @brief Pushable Grave object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u16 unk_68;
/*0x6a*/ u16 unk_6a;
/*0x6c*/ u16 unk_6c;
/*0x6e*/ u16 unk_6e;
/*0x70*/ u16 unk_70;
/*0x72*/ u16 unk_72;
/*0x74*/ u16 unk_74;
/*0x76*/ u16 unk_76;
/*0x78*/ u16 unk_78;
/*0x7a*/ u16 unk_7a;
/*0x7c*/ s8 unk_7c[0xa];
/*0x86*/ u16 pushedFlag;
} PushableGraveEntity;
extern const Hitbox gUnk_080FD578;
extern const Hitbox gUnk_080FD570;
extern void (*const gUnk_081232AC[])(PushableGraveEntity*);
extern const u8 gUnk_081232C0[];
extern const u16 PushableGrave_Tiles[];
bool32 sub_0809798C(PushableGraveEntity*);
void sub_080977F4(PushableGraveEntity*);
bool32 sub_0809785C(PushableGraveEntity*);
void PushableGrave(PushableGraveEntity* this) {
gUnk_081232AC[super->action](this);
}
void PushableGrave_Init(PushableGraveEntity* this) {
u32 tilePosition;
u32 tileIndex;
super->spriteSettings.draw = 1;
super->frameIndex = super->type;
super->updatePriority = 3;
tilePosition = COORD_TO_TILE(super);
this->unk_6a = GetTileIndex(tilePosition - 0x41, super->collisionLayer);
this->unk_6c = GetTileIndex(tilePosition - 0x40, super->collisionLayer);
this->unk_6e = GetTileIndex(tilePosition - 0x3f, super->collisionLayer);
this->unk_70 = GetTileIndex(tilePosition - 1, super->collisionLayer);
this->unk_72 = GetTileIndex(tilePosition, super->collisionLayer);
this->unk_74 = GetTileIndex(tilePosition + 1, super->collisionLayer);
this->unk_76 = GetTileIndex(tilePosition + 0x3f, super->collisionLayer);
this->unk_78 = GetTileIndex(tilePosition + 0x40, super->collisionLayer);
this->unk_7a = GetTileIndex(tilePosition + 0x41, super->collisionLayer);
if (sub_0809798C(this)) {
if (super->type == 0) {
super->y.HALF.HI -= 0x16;
} else {
super->y.HALF.HI -= 0x10;
}
sub_080977F4(this);
} else {
super->action = 1;
tilePosition = COORD_TO_TILE(super);
this->unk_68 = tilePosition;
tileIndex = PushableGrave_Tiles[super->type2];
if (super->type == 0) {
super->hitbox = (Hitbox*)&gUnk_080FD578;
SetTile(tileIndex, tilePosition - 1, super->collisionLayer);
SetTile(tileIndex, tilePosition, super->collisionLayer);
super->y.HALF.HI += 2;
} else {
super->hitbox = (Hitbox*)&gUnk_080FD570;
SetTile(tileIndex, tilePosition, super->collisionLayer);
if (super->type2 == 2) {
sub_0801AF18((u8*)gUnk_081232C0, tilePosition, super->collisionLayer);
}
}
}
}
void PushableGrave_Action1(PushableGraveEntity* this) {
if (sub_0809785C(this)) {
RequestPriorityDuration(super, super->actionDelay);
}
}
void PushableGrave_Action2(PushableGraveEntity* this) {
if (super->subAction == 0) {
if (--super->field_0xf == 0) {
super->subAction = 1;
super->field_0xf = 0x78;
gRoomControls.camera_target = super;
gRoomControls.unk5 = 2;
}
} else {
if (--super->field_0xf == 0) {
super->action = 3;
super->actionDelay = 0x60;
super->field_0xf = 0x14;
RequestPriorityDuration(super, 0x60);
SoundReq(SFX_10F);
}
}
}
void PushableGrave_Action3(PushableGraveEntity* this) {
if (super->actionDelay != 0) {
super->actionDelay--;
LinearMoveUpdate(super);
sub_0800445C(super);
} else {
if (super->field_0xf != 0) {
super->field_0xf--;
} else {
EnqueueSFX(SFX_SECRET);
sub_080977F4(this);
if (super->type == 0) {
gRoomControls.camera_target = &gPlayerEntity;
gRoomControls.unk5 = 4;
}
}
}
}
void PushableGrave_Action4(PushableGraveEntity* this) {
}
void sub_080977F4(PushableGraveEntity* this) {
u32 tilePosition;
super->action = 4;
super->spriteOffsetY = 0;
tilePosition = COORD_TO_TILE(super);
SetTile(0x4022, tilePosition, super->collisionLayer);
if (super->type == 0) {
SetTile(0x4022, tilePosition - 1, super->collisionLayer);
}
if (this->pushedFlag != 0) {
SetFlag(this->pushedFlag);
}
}
bool32 sub_0809785C(PushableGraveEntity* this) {
u32 tilePosition;
if (super->type != 0) {
if (super->type2 != 0) {
if ((CheckFlags(this->pushedFlag) != 0) || GetTileType(this->unk_68, super->collisionLayer) == 0x403f) {
super->action = 3;
super->actionDelay = 0x40;
super->field_0xf = 0;
super->direction = 0;
super->speed = 0x40;
tilePosition = this->unk_68;
sub_0807B9B8(this->unk_72, tilePosition, super->collisionLayer);
if (super->type2 == 2) {
sub_0807B9B8(this->unk_6a, tilePosition - 0x41, super->collisionLayer);
sub_0807B9B8(this->unk_6c, tilePosition - 0x40, super->collisionLayer);
sub_0807B9B8(this->unk_6e, tilePosition - 0x3f, super->collisionLayer);
sub_0807B9B8(this->unk_70, tilePosition - 1, super->collisionLayer);
sub_0807B9B8(this->unk_74, tilePosition + 1, super->collisionLayer);
sub_0807B9B8(this->unk_76, tilePosition + 0x3f, super->collisionLayer);
sub_0807B9B8(this->unk_78, tilePosition + 0x40, super->collisionLayer);
sub_0807B9B8(this->unk_7a, tilePosition + 0x41, super->collisionLayer);
}
SoundReq(SFX_10F);
return TRUE;
}
}
} else {
if (CheckFlags(this->pushedFlag) != 0) {
super->action = 2;
super->subAction = 0;
super->actionDelay = 0xf0;
super->field_0xf = 0x3c;
super->direction = 0;
super->speed = 0x40;
sub_0807BA8C(this->unk_68, super->collisionLayer);
sub_0807BA8C(this->unk_68 - 1, super->collisionLayer);
return TRUE;
}
}
return FALSE;
}
bool32 sub_0809798C(PushableGraveEntity* this) {
bool32 result = FALSE;
if (((super->type == 0) || (super->type2 != 0)) && CheckFlags(this->pushedFlag)) {
result = TRUE;
}
return result;
}
void (*const gUnk_081232AC[])(PushableGraveEntity*) = {
PushableGrave_Init, PushableGrave_Action1, PushableGrave_Action2, PushableGrave_Action3, PushableGrave_Action4,
};
const u8 gUnk_081232C0[] = {
61, 64, 191, 255, 61, 64, 192, 255, 61, 64, 193, 255, 61, 64, 255,
255, 61, 64, 1, 0, 61, 64, 63, 0, 61, 64, 65, 0, 255, 255,
};
const u16 PushableGrave_Tiles[] = {
0x4022,
0x403e,
0x403e,
};
+123
View File
@@ -0,0 +1,123 @@
/**
* @file pushableRock.c
* @ingroup Objects
*
* @brief Pushable Rock object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[8];
/*0x70*/ u16 tileIndex;
/*0x72*/ u8 unk_72;
/*0x73*/ u8 unk_73;
/*0x74*/ u16 tilePosition;
/*0x76*/ u8 unk_76[0x10];
/*0x86*/ u16 pushedFlag;
} PushableRockEntity;
extern void (*const PushableRock_Actions[])(PushableRockEntity*);
extern const u16 PushableRock_Speeds[];
void sub_0808A644(PushableRockEntity*);
void PushableRock(PushableRockEntity* this) {
PushableRock_Actions[super->action](this);
}
void PushableRock_Init(PushableRockEntity* this) {
super->spriteSettings.draw = 1;
super->action += 1;
super->spriteRendering.b3 = 2;
super->spritePriority.b0 = 4;
super->spritePriority.b1 = 3;
sub_0808A644(this);
}
void PushableRock_Action1(PushableRockEntity* this) {
u32 tileType;
u32 tmp;
tileType = GetTileType(this->tilePosition, super->collisionLayer);
switch (tileType) {
case 0x401c:
case 0x401d:
case 0x401e:
case 0x401f:
tmp = (tileType - 0x1c);
super->animationState = tmp * 2;
super->direction = tmp * 8;
if ((u8)(tmp * 2) == 2) {
super->spriteSettings.flipX = 1;
} else {
super->spriteSettings.flipX = 0;
}
SetTile(this->tileIndex, this->tilePosition, super->collisionLayer);
super->action = 2;
InitializeAnimation(super, (super->animationState >> 1) + 1);
EnqueueSFX(SFX_10F);
break;
default:
if (super->animIndex) {
InitializeAnimation(super, 0);
}
break;
}
}
void PushableRock_Action2(PushableRockEntity* this) {
sub_0800445C(super);
super->speed = PushableRock_Speeds[super->frame & 0xf];
LinearMoveUpdate(super);
GetNextFrame(super);
if (super->frame & 0x80) {
super->action = 0;
}
}
void PushableRock_Action3(PushableRockEntity* this) {
if ((super->frame & 0x80) == 0) {
GetNextFrame(super);
} else {
super->spritePriority.b0 = 7;
}
}
void sub_0808A644(PushableRockEntity* this) {
u32 tmp;
this->tilePosition = COORD_TO_TILE(super);
this->tileIndex = GetTileIndex(this->tilePosition, super->collisionLayer);
this->unk_72 = sub_080002E0(this->tilePosition, super->collisionLayer);
tmp = sub_080002C8(this->tilePosition, super->collisionLayer);
if ((tmp == 0x19) || (tmp == 0xf0)) {
SetTile(0x4015, this->tilePosition, super->collisionLayer);
super->action = 3;
if (!CheckFlags(this->pushedFlag)) {
SetFlag(this->pushedFlag);
SoundReq(SFX_TASK_COMPLETE);
InitializeAnimation(super, 5);
} else {
InitializeAnimation(super, 6);
}
} else {
SetTile(0x401b, this->tilePosition, super->collisionLayer);
}
}
void (*const PushableRock_Actions[])(PushableRockEntity*) = {
PushableRock_Init,
PushableRock_Action1,
PushableRock_Action2,
PushableRock_Action3,
};
const u16 PushableRock_Speeds[] = {
0,
256,
96,
64,
};
+277
View File
@@ -0,0 +1,277 @@
/**
* @file pushableStatue.c
* @ingroup Objects
*
* @brief Pushable Statue object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x18];
/*0x80*/ u16 unk_80;
/*0x82*/ u8 unk_82;
/*0x83*/ u8 unk_83;
/*0x84*/ u16 unk_84;
/*0x86*/ u16 unk_86;
} PushableStatueEntity;
extern u8* GetLayerByIndex(u32);
extern const Hitbox gUnk_080FD1F4;
extern const s16 gUnk_080B4488[];
extern const s16 gUnk_080B4468[];
extern void (*const PushableStatue_Actions[])(PushableStatueEntity*);
extern void (*const PushableStatue_SubActions[])(PushableStatueEntity*);
extern const s8 gUnk_08120CB4[];
extern const u16 gUnk_08120CBC[];
extern const u16 gUnk_08120CCC[];
extern const u16 gUnk_08120D6C[];
u32 sub_0808968C(u32);
bool32 sub_0808965C(PushableStatueEntity*);
void sub_08089454(PushableStatueEntity*);
void sub_080894C8(PushableStatueEntity*);
void sub_08089538(PushableStatueEntity*);
void sub_080894FC(PushableStatueEntity*);
bool32 sub_080895C0(PushableStatueEntity*);
bool32 sub_080896B0(void);
void PushableStatue(PushableStatueEntity* this) {
PushableStatue_Actions[super->action](this);
}
void PushableStatue_Init(PushableStatueEntity* this) {
if (sub_0808965C(this)) {
super->action = 1;
super->speed = 0x80;
super->updatePriority = 3;
super->hitbox = (Hitbox*)&gUnk_080FD1F4;
super->field_0x16 = 1;
this->unk_86 = 0;
sub_08089454(this);
sub_080894C8(this);
InitializeAnimation(super, 0);
}
}
void PushableStatue_Action1(PushableStatueEntity* this) {
u16 tileType;
Entity* obj;
if (sub_0800442E(super) == 0) {
tileType = GetTileType(this->unk_84, super->collisionLayer);
if (tileType != 0x400b) {
switch (sub_0808968C(tileType)) {
case 1:
super->action = 3;
super->direction = ((tileType - 0xc) & 3) << 3;
sub_08089538(this);
break;
case 0:
obj = CreateObject(SPECIAL_FX, 4, 0);
if (obj != NULL) {
CopyPosition(super, obj);
}
sub_080894FC(this);
break;
case 2:
this->unk_80 = tileType;
break;
}
} else {
sub_08078930(super);
}
}
}
void PushableStatue_Action2(PushableStatueEntity* this) {
if (this->unk_86 != 0) {
sub_080895C0(this);
} else {
if (gPlayerState.heldObject == 0) {
super->subAction = 6;
}
PushableStatue_SubActions[super->subAction - 5](this);
}
}
void PushableStatue_SubAction0(PushableStatueEntity* this) {
u16 tileType;
Entity* obj;
u32 index;
const s8* ptr;
if (this->unk_83 == 0) {
this->unk_83 = 1;
index = gPlayerEntity.animationState;
ptr = &gUnk_08120CB4[index];
PositionRelative(super, &gPlayerEntity, *(ptr) << 0x10, *(ptr + 1) << 0x10);
}
tileType = GetTileType(this->unk_84, super->collisionLayer);
if (tileType != 0x400b) {
switch (sub_0808968C(tileType)) {
case 1:
super->direction = (((tileType - 0xc) & 3) << 3);
sub_08089538(this);
break;
case 0:
obj = CreateObject(SPECIAL_FX, 4, 0);
if (obj != NULL) {
CopyPosition(super, obj);
}
sub_080894FC(this);
return;
case 2:
this->unk_80 = tileType;
break;
}
}
if (sub_080896B0()) {
gPlayerState.queued_action = 0x10;
gPlayerState.field_0x38 = 0x20;
gPlayerState.flags |= 1;
gPlayerEntity.x.HALF.LO = 0;
gPlayerEntity.y.HALF.LO = 0;
super->direction = (gPlayerEntity.animationState ^ 4) << 2;
sub_08089538(this);
}
}
void PushableStatue_SubAction1(PushableStatueEntity* this) {
super->action = 1;
this->unk_83 = 0;
}
void PushableStatue_Action3(PushableStatueEntity* this) {
if (sub_080895C0(this)) {
super->action = 1;
}
}
void PushableStatue_Action4(PushableStatueEntity* this) {
if (--super->actionDelay != 0) {
super->spriteSettings.draw ^= 1;
} else {
super->spriteSettings.draw = 1;
super->action = 1;
SetTile(0x400b, this->unk_84, super->collisionLayer);
sub_080894C8(this);
}
}
void sub_08089454(PushableStatueEntity* this) {
this->unk_84 = COORD_TO_TILE(super);
this->unk_80 = GetTileIndex(this->unk_84, super->collisionLayer);
SetTile(0x400b, this->unk_84, super->collisionLayer);
if (super->collisionLayer == 2 && GetTileType(this->unk_84, 1) == 0x310) {
SetTile(0x400b, this->unk_84, 1);
}
}
void sub_080894C8(PushableStatueEntity* this) {
u32 index;
for (index = 0; index < 8; index++) {
if (gRoomVars.field_0xac[index] == NULL) {
gRoomVars.field_0xac[index] = this;
break;
}
}
}
void sub_080894FC(PushableStatueEntity* this) {
u32 index;
for (index = 0; index <= 7; index++) {
if (this == (PushableStatueEntity*)gRoomVars.field_0xac[index]) {
gRoomVars.field_0xac[index] = NULL;
break;
}
}
DeleteEntity(super);
}
void sub_08089538(PushableStatueEntity* this) {
u16 tileType;
this->unk_86 = 0x20;
EnqueueSFX(SFX_10F);
SetTile(this->unk_80, this->unk_84, super->collisionLayer);
if ((super->collisionLayer == 2) && (GetTileType(this->unk_84, 1) == 0x400b)) {
sub_08000152(0x310, this->unk_84, 1);
}
tileType = GetTileType(this->unk_84 + gUnk_080B4488[super->direction >> 3], super->collisionLayer);
if ((tileType == 0x79) || (tileType == 0x77)) {
super->spriteOffsetY = -2;
}
}
bool32 sub_080895C0(PushableStatueEntity* this) {
Entity* obj;
LinearMoveUpdate(super);
if ((--this->unk_86 == 0) && (sub_0800442E(super) == 0)) {
super->spriteOffsetY = 0;
if (!sub_080002D0(super)) {
sub_08089454(this);
return TRUE;
}
obj = CreateObject(SPECIAL_FX, 4, 0);
if (obj != NULL) {
CopyPosition(super, obj);
}
super->spriteSettings.draw = 0;
super->x.HALF.HI += gUnk_08120CBC[super->direction >> 2];
super->y.HALF.HI += gUnk_08120CBC[(super->direction >> 2) + 1];
sub_08089454(this);
super->action = 4;
super->actionDelay = 0x3c;
}
sub_0800445C(super);
return FALSE;
}
bool32 sub_0808965C(PushableStatueEntity* this) {
if (gRoomControls.area < 0x40) {
return LoadFixedGFX(super, 0xe9);
} else {
return LoadFixedGFX(super, gUnk_08120CCC[gRoomControls.area - 0x40]);
}
}
u32 sub_0808968C(u32 param_1) {
const u16* it;
for (it = gUnk_08120D6C; *it != 0; it += 2) {
if (*it == param_1) {
return it[1];
}
}
return 0;
}
ASM_FUNC("asm/non_matching/pushableStatue/sub_080896B0.inc", bool32 sub_080896B0(void))
void (*const PushableStatue_Actions[])(PushableStatueEntity*) = {
PushableStatue_Init, PushableStatue_Action1, PushableStatue_Action2, PushableStatue_Action3, PushableStatue_Action4,
};
void (*const PushableStatue_SubActions[])(PushableStatueEntity*) = {
PushableStatue_SubAction0,
PushableStatue_SubAction1,
};
const s8 gUnk_08120CB4[] = {
0, 14, -14, 2, 0, -14, 14, 2,
};
const u16 gUnk_08120CBC[] = {
0, 16, 65520, 0, 0, 65520, 16, 0,
};
const u16 gUnk_08120CCC[] = {
29, 29, 29, 29, 29, 29, 29, 29, 73, 73, 73, 73, 73, 73, 73, 73, 74, 74, 74, 74, 74, 74, 74, 74, 75, 75, 75,
75, 75, 75, 75, 75, 76, 76, 76, 76, 76, 76, 76, 76, 77, 77, 77, 77, 77, 77, 77, 77, 78, 78, 78, 78, 78, 78,
78, 78, 79, 79, 79, 79, 79, 79, 79, 79, 80, 80, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81, 81, 81, 81,
};
const u16 gUnk_08120D6C[] = {
0x400c, 1, 0x400d, 1, 0x400e, 1, 0x400f, 1, 0x7a, 2, 0x78, 2, 0,
};
+330
View File
@@ -0,0 +1,330 @@
/**
* @file smallIceBlock.c
* @ingroup Objects
*
* @brief Small Ice Block object
*/
#define NENT_DEPRECATED
#include "global.h"
#include "object.h"
#include "functions.h"
typedef struct {
/*0x00*/ Entity base;
/*0x68*/ u8 unk_68[0x4];
/*0x6c*/ u16 unk_6c;
/*0x6e*/ u8 unk_6e[0x2];
/*0x70*/ u16 unk_70;
/*0x72*/ u8 unk_72[0x14];
/*0x86*/ u16 unk_86;
} SmallIceBlockEntity;
extern const Hitbox gUnk_080FD408;
extern const s16 gUnk_080B4488[];
void sub_080996AC(SmallIceBlockEntity*);
void sub_08099468(SmallIceBlockEntity*);
bool32 sub_0809963C(SmallIceBlockEntity*);
u32 sub_08099618(u32);
void sub_080994B8(SmallIceBlockEntity*);
void SmallIceBlock_Action3(SmallIceBlockEntity*);
bool32 sub_0809953C(SmallIceBlockEntity*);
void sub_0809969C(SmallIceBlockEntity*);
extern void (*const gUnk_08123734[])(SmallIceBlockEntity*);
extern const u16 gUnk_08123748[];
extern const u16 gUnk_08123750[];
void SmallIceBlock(SmallIceBlockEntity* this) {
if (super->type < 3) {
gUnk_08123734[super->action](this);
} else {
sub_080996AC(this);
}
}
void SmallIceBlock_Init(SmallIceBlockEntity* this) {
Entity* obj;
switch (super->type) {
case 0:
case 1:
case 2:
if (CheckFlags(this->unk_86)) {
DeleteThisEntity();
}
}
super->action = 1;
super->flags |= 0x80;
super->updatePriority = 3;
super->field_0x3c = 7;
super->hurtType = 0x48;
super->hitType = 1;
super->flags2 = 0x80;
super->hitbox = (Hitbox*)&gUnk_080FD408;
sub_08099468(this);
InitializeAnimation(super, super->type);
obj = CreateObject(SMALL_ICE_BLOCK, 3, 0);
if (obj != NULL) {
obj->parent = super;
}
}
void SmallIceBlock_Action1(SmallIceBlockEntity* this) {
u32 tileType;
Entity* obj;
if (sub_0809963C(this)) {
super->action = 3;
super->actionDelay = 0;
EnqueueSFX(SFX_ICE_BLOCK_MELT);
SmallIceBlock_Action3(this);
if (super->type == 0) {
SetFlag(this->unk_86);
}
} else {
if (!sub_0800442E(super)) {
tileType = GetTileType(this->unk_70, super->collisionLayer);
if (tileType != 0x405a) {
switch (sub_08099618(tileType)) {
case 1:
super->action = 2;
super->actionDelay = 0x16;
super->direction = ((tileType - 0x5b) & 3) << 3;
super->speed = 0x20;
sub_080994B8(this);
break;
case 0:
obj = CreateObject(SPECIAL_FX, 0xd, 0);
if (obj != NULL) {
CopyPosition(super, obj);
}
SetTile(this->unk_6c, this->unk_70, super->collisionLayer);
DeleteEntity(super);
break;
case 2:
this->unk_6c = (u16)tileType;
break;
}
}
}
}
}
void SmallIceBlock_Action2(SmallIceBlockEntity* this) {
if (sub_0809953C(this)) {
super->action = 1;
sub_08099468(this);
EnqueueSFX(SFX_ICE_BLOCK_STOP);
}
}
void SmallIceBlock_Action3(SmallIceBlockEntity* this) {
if (sub_0809963C(this) == 0) {
if (super->actionDelay >= 2) {
super->actionDelay -= 2;
} else {
super->actionDelay = 0;
}
if (super->actionDelay == 0) {
super->action = 1;
sub_0805EC60(super);
return;
}
} else {
super->actionDelay++;
}
sub_0805EC9C(super, 0x100, gUnk_08123748[super->actionDelay >> 5], 0);
if (super->type == 1) {
sub_080A2A3C(super, 0x53, 0, this->unk_86);
SoundReq(SFX_SECRET);
} else if (super->type == 2) {
sub_080A2A3C(super, 0x52, 0, this->unk_86);
SoundReq(SFX_SECRET);
}
super->action = 4;
super->actionDelay = 0x3c;
super->flags &= 0x7f;
}
void SmallIceBlock_Action4(SmallIceBlockEntity* this) {
Entity* obj;
s32 rand;
s32 x;
s32 y;
if (--super->actionDelay == 0) {
DeleteThisEntity();
} else {
if (super->actionDelay == 0x30) {
SetTile(this->unk_6c, this->unk_70, super->collisionLayer);
}
sub_0805EC9C(super, 0x100, (0x3c - super->actionDelay) * 0x20 + 0x100, 0);
if ((super->actionDelay & 1) != 0) {
obj = CreateObject(SPECIAL_FX, 0x11, 0x40);
if (obj != NULL) {
rand = Random();
x = ((rand >> 0x10) % 9) - 4;
y = rand & 0xf;
obj->spritePriority.b0 = 3;
PositionRelative(super, obj, x * 0x10000, -y * 0x10000);
}
}
}
}
void sub_08099468(SmallIceBlockEntity* this) {
this->unk_70 = COORD_TO_TILE(super);
this->unk_6c = GetTileIndex(this->unk_70, super->collisionLayer);
SetTile(0x405a, this->unk_70, super->collisionLayer);
}
void sub_080994B8(SmallIceBlockEntity* this) {
u16 tileType;
EnqueueSFX(SFX_ICE_BLOCK_SLIDE);
SetTile(this->unk_6c, this->unk_70, super->collisionLayer);
if ((super->collisionLayer == 2) && (GetTileType(this->unk_70, 1) == 0x405a)) {
sub_08000152(0x310, this->unk_70, 1);
}
tileType = GetTileType(this->unk_70 + gUnk_080B4488[super->direction >> 3], super->collisionLayer);
if (tileType == 0x79 || tileType == 0x77) {
super->spriteOffsetY = -2;
}
}
bool32 sub_0809953C(SmallIceBlockEntity* this) {
u8 bVar1;
u8 uVar2;
u32 uVar3;
u16 uVar4;
uVar3 = sub_0800442E(super);
if (uVar3 != 0) {
return 0;
}
sub_080AEFE0(super);
sub_0800445C(super);
if (super->actionDelay != 0) {
super->speed += 0x10;
if (--super->actionDelay == 0) {
super->speed = 0x200;
}
}
switch (super->direction >> 3) {
case 0:
if ((super->collisions & 0xe) == 0) {
return 0;
}
if ((u32)(super->y.HALF.HI & 0xf) - 7 < 3) {
super->y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 8;
return 1;
}
sub_0809969C(this);
break;
case 1:
if ((super->collisions & 0xe000) == 0) {
return FALSE;
}
if ((u32)(super->x.HALF.HI & 0xf) - 7 < 3) {
super->x.HALF.HI = (super->x.HALF.HI & 0xfff0) + 8;
return TRUE;
}
sub_0809969C(this);
break;
case 2:
if ((super->collisions & 0xe0) == 0) {
return FALSE;
}
if ((u32)(super->y.HALF.HI & 0xf) - 7 < 3) {
super->y.HALF.HI = (super->y.HALF.HI & 0xfff0) + 8;
return TRUE;
}
sub_0809969C(this);
break;
default:
if ((super->collisions & 0xe00) != 0) {
if ((u32)(super->x.HALF.HI & 0xf) - 7 < 3) {
super->x.HALF.HI = (super->x.HALF.HI & 0xfff0) + 8;
return TRUE;
}
sub_0809969C(this);
}
break;
}
return FALSE;
}
u32 sub_08099618(u32 param_1) {
const u16* it;
for (it = gUnk_08123750; *it != 0; it += 2) {
if (*it == param_1) {
return it[1];
}
}
return 0;
}
bool32 sub_0809963C(SmallIceBlockEntity* this) {
u16* var;
u16 x;
u16 y;
if (super->type2 != 0) {
var = (u16*)GetCurrentRoomProperty(super->type2);
if (CheckFlags(var[0])) {
x = var[1] + gRoomControls.origin_x;
y = var[2] + gRoomControls.origin_y;
if (var[3] >= (u32)(super->x.HALF.HI - x) && var[4] >= (u32)(super->y.HALF.HI - y)) {
return TRUE;
}
}
}
if (super->bitfield == 0x87) {
return TRUE;
}
return FALSE;
}
void sub_0809969C(SmallIceBlockEntity* this) {
CreateFx(super, 0xd, 0);
DeleteThisEntity();
}
void sub_080996AC(SmallIceBlockEntity* this) {
if ((super->parent)->next == NULL) {
DeleteThisEntity();
}
if (super->action == 0) {
super->action = 1;
InitializeAnimation(super, 3);
}
if ((super->parent)->action < 3) {
super->spriteSettings.draw = 1;
if ((super->frame & 1) != 0) {
super->frame = 0;
super->frameDuration = (Random() & 0x78) + 0x78;
}
GetNextFrame(super);
CopyPositionAndSpriteOffset(super->parent, super);
super->y.HALF.HI += 1;
super->spriteOffsetY -= 0x11;
} else {
super->spriteSettings.draw = 0;
}
}
void (*const gUnk_08123734[])(SmallIceBlockEntity*) = {
SmallIceBlock_Init, SmallIceBlock_Action1, SmallIceBlock_Action2, SmallIceBlock_Action3, SmallIceBlock_Action4,
};
const u16 gUnk_08123748[] = {
256,
264,
271,
277,
};
const u16 gUnk_08123750[] = {
0x405b, 1, 0x405c, 1, 0x405d, 1, 0x405e, 1, 0x7a, 2, 0x78, 2, 0,
};