mirror of
https://github.com/zeldaret/tmc
synced 2026-05-25 15:25:26 -04:00
Merge pull request #337 from octorock/push-and-pull
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
@@ -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
@@ -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
|
||||
@@ -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
|
||||
@@ -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}
|
||||
@@ -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
@@ -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
|
||||
}
|
||||
]
|
||||
]
|
||||
@@ -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"
|
||||
@@ -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
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
@@ -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,
|
||||
};
|
||||
@@ -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
@@ -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;
|
||||
|
||||
|
||||
@@ -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,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[];
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
@@ -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,
|
||||
};
|
||||
@@ -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,
|
||||
};
|
||||
@@ -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,
|
||||
};
|
||||
@@ -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,
|
||||
};
|
||||
@@ -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,
|
||||
};
|
||||
Reference in New Issue
Block a user