mirror of
https://github.com/pret/pokeruby.git
synced 2026-08-22 18:34:27 -05:00
decompile fldeff_decoration
This commit is contained in:
@@ -1,907 +0,0 @@
|
||||
.include "constants/gba_constants.inc"
|
||||
.include "constants/species_constants.inc"
|
||||
.include "asm/macros.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80C68A4
|
||||
sub_80C68A4: @ 80C68A4
|
||||
push {r4-r6,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
adds r6, r2, 0
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
lsls r5, 16
|
||||
lsrs r5, 16
|
||||
lsls r6, 16
|
||||
lsrs r6, 16
|
||||
ldr r0, _080C68E4 @ =sub_80C68EC
|
||||
movs r1, 0
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080C68E8 @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
movs r0, 0
|
||||
strh r4, [r1, 0x8]
|
||||
strh r5, [r1, 0xA]
|
||||
strh r6, [r1, 0xC]
|
||||
strh r0, [r1, 0xE]
|
||||
movs r0, 0x1
|
||||
strh r0, [r1, 0x10]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C68E4: .4byte sub_80C68EC
|
||||
_080C68E8: .4byte gTasks
|
||||
thumb_func_end sub_80C68A4
|
||||
|
||||
thumb_func_start sub_80C68EC
|
||||
sub_80C68EC: @ 80C68EC
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
lsls r0, r5, 2
|
||||
adds r0, r5
|
||||
lsls r0, 3
|
||||
ldr r1, _080C690C @ =gTasks + 0x8
|
||||
adds r4, r0, r1
|
||||
ldrh r1, [r4, 0x6]
|
||||
movs r2, 0x6
|
||||
ldrsh r0, [r4, r2]
|
||||
cmp r0, 0x6
|
||||
bne _080C6910
|
||||
movs r0, 0
|
||||
b _080C6912
|
||||
.align 2, 0
|
||||
_080C690C: .4byte gTasks + 0x8
|
||||
_080C6910:
|
||||
adds r0, r1, 0x1
|
||||
_080C6912:
|
||||
strh r0, [r4, 0x6]
|
||||
movs r3, 0x6
|
||||
ldrsh r0, [r4, r3]
|
||||
cmp r0, 0
|
||||
bne _080C6964
|
||||
movs r1, 0x8
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0x2
|
||||
bne _080C692C
|
||||
movs r2, 0
|
||||
ldrsh r0, [r4, r2]
|
||||
bl DoBalloonSoundEffect
|
||||
_080C692C:
|
||||
movs r3, 0x2
|
||||
ldrsh r0, [r4, r3]
|
||||
movs r2, 0x4
|
||||
ldrsh r1, [r4, r2]
|
||||
ldrh r2, [r4, 0x8]
|
||||
ldrh r3, [r4]
|
||||
adds r2, r3
|
||||
lsls r2, 16
|
||||
lsrs r2, 16
|
||||
bl MapGridSetMetatileIdAt
|
||||
movs r1, 0x2
|
||||
ldrsh r0, [r4, r1]
|
||||
movs r2, 0x4
|
||||
ldrsh r1, [r4, r2]
|
||||
bl CurrentMapDrawMetatileAt
|
||||
ldrh r1, [r4, 0x8]
|
||||
movs r3, 0x8
|
||||
ldrsh r0, [r4, r3]
|
||||
cmp r0, 0x3
|
||||
bne _080C6960
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
b _080C6964
|
||||
_080C6960:
|
||||
adds r0, r1, 0x1
|
||||
strh r0, [r4, 0x8]
|
||||
_080C6964:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80C68EC
|
||||
|
||||
thumb_func_start DoBalloonSoundEffect
|
||||
DoBalloonSoundEffect: @ 80C696C
|
||||
push {lr}
|
||||
lsls r0, 16
|
||||
asrs r1, r0, 16
|
||||
movs r0, 0xCE
|
||||
lsls r0, 2
|
||||
cmp r1, r0
|
||||
beq _080C6998
|
||||
cmp r1, r0
|
||||
bgt _080C6988
|
||||
movs r0, 0x8A
|
||||
lsls r0, 2
|
||||
cmp r1, r0
|
||||
beq _080C69B0
|
||||
b _080C69B6
|
||||
_080C6988:
|
||||
movs r0, 0xCF
|
||||
lsls r0, 2
|
||||
cmp r1, r0
|
||||
beq _080C69A0
|
||||
adds r0, 0x4
|
||||
cmp r1, r0
|
||||
beq _080C69A8
|
||||
b _080C69B6
|
||||
_080C6998:
|
||||
movs r0, 0x4A
|
||||
bl PlaySE
|
||||
b _080C69B6
|
||||
_080C69A0:
|
||||
movs r0, 0x4B
|
||||
bl PlaySE
|
||||
b _080C69B6
|
||||
_080C69A8:
|
||||
movs r0, 0x4C
|
||||
bl PlaySE
|
||||
b _080C69B6
|
||||
_080C69B0:
|
||||
movs r0, 0x4E
|
||||
bl PlaySE
|
||||
_080C69B6:
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end DoBalloonSoundEffect
|
||||
|
||||
thumb_func_start FldEff_Nop47
|
||||
FldEff_Nop47: @ 80C69BC
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end FldEff_Nop47
|
||||
|
||||
thumb_func_start FldEff_Nop48
|
||||
FldEff_Nop48: @ 80C69C0
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end FldEff_Nop48
|
||||
|
||||
thumb_func_start sub_80C69C4
|
||||
sub_80C69C4: @ 80C69C4
|
||||
push {r4-r6,lr}
|
||||
adds r5, r0, 0
|
||||
adds r4, r1, 0
|
||||
lsls r5, 16
|
||||
lsrs r5, 16
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
movs r0, 0x4D
|
||||
bl PlaySE
|
||||
lsls r5, 16
|
||||
asrs r5, 16
|
||||
lsls r4, 16
|
||||
asrs r4, 16
|
||||
ldr r2, _080C6A0C @ =0x00000276
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl MapGridSetMetatileIdAt
|
||||
subs r6, r4, 0x1
|
||||
ldr r2, _080C6A10 @ =0x0000026e
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
bl MapGridSetMetatileIdAt
|
||||
adds r0, r5, 0
|
||||
adds r1, r4, 0
|
||||
bl CurrentMapDrawMetatileAt
|
||||
adds r0, r5, 0
|
||||
adds r1, r6, 0
|
||||
bl CurrentMapDrawMetatileAt
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C6A0C: .4byte 0x00000276
|
||||
_080C6A10: .4byte 0x0000026e
|
||||
thumb_func_end sub_80C69C4
|
||||
|
||||
thumb_func_start sub_80C6A14
|
||||
sub_80C6A14: @ 80C6A14
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldr r1, _080C6A44 @ =gTasks
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
adds r1, r0, r1
|
||||
ldrh r2, [r1, 0x8]
|
||||
movs r3, 0x8
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r0, 0x7
|
||||
bne _080C6A48
|
||||
movs r2, 0xA
|
||||
ldrsh r0, [r1, r2]
|
||||
movs r3, 0xC
|
||||
ldrsh r1, [r1, r3]
|
||||
bl sub_80C69C4
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
b _080C6A4C
|
||||
.align 2, 0
|
||||
_080C6A44: .4byte gTasks
|
||||
_080C6A48:
|
||||
adds r0, r2, 0x1
|
||||
strh r0, [r1, 0x8]
|
||||
_080C6A4C:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80C6A14
|
||||
|
||||
thumb_func_start sub_80C6A54
|
||||
sub_80C6A54: @ 80C6A54
|
||||
push {r4-r7,lr}
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
adds r7, r5, 0
|
||||
lsls r1, 16
|
||||
lsrs r4, r1, 16
|
||||
adds r6, r4, 0
|
||||
bl player_get_direction_lower_nybble
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _080C6A7C
|
||||
lsls r0, r5, 16
|
||||
asrs r0, 16
|
||||
lsls r1, r4, 16
|
||||
asrs r1, 16
|
||||
bl sub_80C69C4
|
||||
b _080C6A9E
|
||||
_080C6A7C:
|
||||
cmp r0, 0x2
|
||||
bne _080C6A9E
|
||||
ldr r0, _080C6AA4 @ =sub_80C6A14
|
||||
movs r1, 0x5
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080C6AA8 @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
movs r0, 0
|
||||
strh r0, [r1, 0x8]
|
||||
strh r7, [r1, 0xA]
|
||||
strh r6, [r1, 0xC]
|
||||
_080C6A9E:
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C6AA4: .4byte sub_80C6A14
|
||||
_080C6AA8: .4byte gTasks
|
||||
thumb_func_end sub_80C6A54
|
||||
|
||||
thumb_func_start Task_DecorationSoundEffect
|
||||
Task_DecorationSoundEffect: @ 80C6AAC
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldr r1, _080C6AE4 @ =gTasks
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r0, 3
|
||||
adds r1, r0, r1
|
||||
ldrh r2, [r1, 0xA]
|
||||
movs r3, 0xA
|
||||
ldrsh r0, [r1, r3]
|
||||
cmp r0, 0x7
|
||||
beq _080C6AC8
|
||||
b _080C6C26
|
||||
_080C6AC8:
|
||||
ldr r2, _080C6AE8 @ =0xfffffd88
|
||||
adds r0, r2, 0
|
||||
ldrh r1, [r1, 0x8]
|
||||
adds r0, r1
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x3B
|
||||
bls _080C6ADA
|
||||
b _080C6C1E
|
||||
_080C6ADA:
|
||||
lsls r0, 2
|
||||
ldr r1, _080C6AEC @ =_080C6AF0
|
||||
adds r0, r1
|
||||
ldr r0, [r0]
|
||||
mov pc, r0
|
||||
.align 2, 0
|
||||
_080C6AE4: .4byte gTasks
|
||||
_080C6AE8: .4byte 0xfffffd88
|
||||
_080C6AEC: .4byte _080C6AF0
|
||||
.align 2, 0
|
||||
_080C6AF0:
|
||||
.4byte _080C6BE0
|
||||
.4byte _080C6BE8
|
||||
.4byte _080C6BF0
|
||||
.4byte _080C6BF8
|
||||
.4byte _080C6C00
|
||||
.4byte _080C6C08
|
||||
.4byte _080C6C10
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C1E
|
||||
.4byte _080C6C18
|
||||
_080C6BE0:
|
||||
movs r0, 0x3E
|
||||
bl PlaySE
|
||||
b _080C6C1E
|
||||
_080C6BE8:
|
||||
movs r0, 0x3F
|
||||
bl PlaySE
|
||||
b _080C6C1E
|
||||
_080C6BF0:
|
||||
movs r0, 0x40
|
||||
bl PlaySE
|
||||
b _080C6C1E
|
||||
_080C6BF8:
|
||||
movs r0, 0x41
|
||||
bl PlaySE
|
||||
b _080C6C1E
|
||||
_080C6C00:
|
||||
movs r0, 0x42
|
||||
bl PlaySE
|
||||
b _080C6C1E
|
||||
_080C6C08:
|
||||
movs r0, 0x43
|
||||
bl PlaySE
|
||||
b _080C6C1E
|
||||
_080C6C10:
|
||||
movs r0, 0x44
|
||||
bl PlaySE
|
||||
b _080C6C1E
|
||||
_080C6C18:
|
||||
movs r0, 0x45
|
||||
bl PlaySE
|
||||
_080C6C1E:
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
b _080C6C2A
|
||||
_080C6C26:
|
||||
adds r0, r2, 0x1
|
||||
strh r0, [r1, 0xA]
|
||||
_080C6C2A:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end Task_DecorationSoundEffect
|
||||
|
||||
thumb_func_start DoDecorationSoundEffect
|
||||
DoDecorationSoundEffect: @ 80C6C30
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
lsls r4, 16
|
||||
lsrs r4, 16
|
||||
ldr r0, _080C6C5C @ =Task_DecorationSoundEffect
|
||||
movs r1, 0x5
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080C6C60 @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
movs r0, 0
|
||||
strh r4, [r1, 0x8]
|
||||
strh r0, [r1, 0xA]
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C6C5C: .4byte Task_DecorationSoundEffect
|
||||
_080C6C60: .4byte gTasks
|
||||
thumb_func_end DoDecorationSoundEffect
|
||||
|
||||
thumb_func_start SpriteCB_YellowCave4Sparkle
|
||||
SpriteCB_YellowCave4Sparkle: @ 80C6C64
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
ldrh r0, [r4, 0x2E]
|
||||
adds r0, 0x1
|
||||
strh r0, [r4, 0x2E]
|
||||
lsls r0, 16
|
||||
asrs r0, 16
|
||||
cmp r0, 0x8
|
||||
bne _080C6C7C
|
||||
movs r0, 0xC3
|
||||
bl PlaySE
|
||||
_080C6C7C:
|
||||
movs r1, 0x2E
|
||||
ldrsh r0, [r4, r1]
|
||||
cmp r0, 0x1F
|
||||
ble _080C6C8A
|
||||
adds r0, r4, 0
|
||||
bl DestroySprite
|
||||
_080C6C8A:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end SpriteCB_YellowCave4Sparkle
|
||||
|
||||
thumb_func_start DoYellowCave4Sparkle
|
||||
DoYellowCave4Sparkle: @ 80C6C90
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
ldr r3, _080C6D28 @ =gMapObjects
|
||||
ldr r2, _080C6D2C @ =gPlayerAvatar
|
||||
ldrb r1, [r2, 0x5]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r3
|
||||
ldrh r1, [r0, 0x10]
|
||||
mov r0, sp
|
||||
strh r1, [r0]
|
||||
ldrb r1, [r2, 0x5]
|
||||
lsls r0, r1, 3
|
||||
adds r0, r1
|
||||
lsls r0, 2
|
||||
adds r0, r3
|
||||
ldrh r0, [r0, 0x12]
|
||||
mov r4, sp
|
||||
adds r4, 0x2
|
||||
strh r0, [r4]
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
movs r2, 0x8
|
||||
movs r3, 0x4
|
||||
bl sub_8060470
|
||||
ldr r0, _080C6D30 @ =gFieldEffectObjectTemplatePointers
|
||||
ldr r0, [r0, 0x58]
|
||||
mov r1, sp
|
||||
movs r2, 0
|
||||
ldrsh r1, [r1, r2]
|
||||
movs r3, 0
|
||||
ldrsh r2, [r4, r3]
|
||||
movs r3, 0
|
||||
bl CreateSpriteAtEnd
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x40
|
||||
beq _080C6D1E
|
||||
ldr r3, _080C6D34 @ =gSprites
|
||||
lsls r2, r0, 4
|
||||
adds r2, r0
|
||||
lsls r2, 2
|
||||
adds r4, r2, r3
|
||||
movs r0, 0x3E
|
||||
adds r0, r4
|
||||
mov r12, r0
|
||||
ldrb r0, [r0]
|
||||
movs r1, 0x2
|
||||
orrs r0, r1
|
||||
mov r1, r12
|
||||
strb r0, [r1]
|
||||
ldrb r1, [r4, 0x5]
|
||||
movs r0, 0xD
|
||||
negs r0, r0
|
||||
ands r0, r1
|
||||
movs r1, 0x4
|
||||
orrs r0, r1
|
||||
movs r1, 0xF
|
||||
ands r0, r1
|
||||
movs r1, 0x50
|
||||
orrs r0, r1
|
||||
strb r0, [r4, 0x5]
|
||||
adds r3, 0x1C
|
||||
adds r2, r3
|
||||
ldr r0, _080C6D38 @ =SpriteCB_YellowCave4Sparkle
|
||||
str r0, [r2]
|
||||
movs r0, 0
|
||||
strh r0, [r4, 0x2E]
|
||||
_080C6D1E:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C6D28: .4byte gMapObjects
|
||||
_080C6D2C: .4byte gPlayerAvatar
|
||||
_080C6D30: .4byte gFieldEffectObjectTemplatePointers
|
||||
_080C6D34: .4byte gSprites
|
||||
_080C6D38: .4byte SpriteCB_YellowCave4Sparkle
|
||||
thumb_func_end DoYellowCave4Sparkle
|
||||
|
||||
thumb_func_start FldEff_SandPillar
|
||||
FldEff_SandPillar: @ 80C6D3C
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
bl ScriptContext2_Enable
|
||||
mov r4, sp
|
||||
adds r4, 0x2
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl GetXYCoordsOneStepInFrontOfPlayer
|
||||
ldr r1, _080C6D78 @ =gFieldEffectArguments
|
||||
mov r0, sp
|
||||
movs r2, 0
|
||||
ldrsh r0, [r0, r2]
|
||||
str r0, [r1, 0x14]
|
||||
movs r3, 0
|
||||
ldrsh r0, [r4, r3]
|
||||
str r0, [r1, 0x18]
|
||||
bl player_get_direction_lower_nybble
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x2
|
||||
beq _080C6DBC
|
||||
cmp r0, 0x2
|
||||
bgt _080C6D7C
|
||||
cmp r0, 0x1
|
||||
beq _080C6D86
|
||||
b _080C6E4C
|
||||
.align 2, 0
|
||||
_080C6D78: .4byte gFieldEffectArguments
|
||||
_080C6D7C:
|
||||
cmp r0, 0x3
|
||||
beq _080C6DEC
|
||||
cmp r0, 0x4
|
||||
beq _080C6E24
|
||||
b _080C6E4C
|
||||
_080C6D86:
|
||||
ldr r0, _080C6DB0 @ =gSpriteTemplate_83D26A0
|
||||
ldr r3, _080C6DB4 @ =gSprites
|
||||
ldr r1, _080C6DB8 @ =gPlayerAvatar
|
||||
ldrb r1, [r1, 0x4]
|
||||
lsls r2, r1, 4
|
||||
adds r2, r1
|
||||
lsls r2, 2
|
||||
adds r2, r3
|
||||
ldrh r1, [r2, 0x2]
|
||||
lsls r1, 23
|
||||
lsrs r1, 7
|
||||
movs r3, 0x80
|
||||
lsls r3, 12
|
||||
adds r1, r3
|
||||
asrs r1, 16
|
||||
ldrb r2, [r2]
|
||||
adds r2, 0x20
|
||||
movs r3, 0
|
||||
bl CreateSprite
|
||||
b _080C6E4C
|
||||
.align 2, 0
|
||||
_080C6DB0: .4byte gSpriteTemplate_83D26A0
|
||||
_080C6DB4: .4byte gSprites
|
||||
_080C6DB8: .4byte gPlayerAvatar
|
||||
_080C6DBC:
|
||||
ldr r0, _080C6DE0 @ =gSpriteTemplate_83D26A0
|
||||
ldr r3, _080C6DE4 @ =gSprites
|
||||
ldr r1, _080C6DE8 @ =gPlayerAvatar
|
||||
ldrb r1, [r1, 0x4]
|
||||
lsls r2, r1, 4
|
||||
adds r2, r1
|
||||
lsls r2, 2
|
||||
adds r2, r3
|
||||
ldrh r1, [r2, 0x2]
|
||||
lsls r1, 23
|
||||
lsrs r1, 7
|
||||
movs r3, 0x80
|
||||
lsls r3, 12
|
||||
adds r1, r3
|
||||
asrs r1, 16
|
||||
ldrb r2, [r2]
|
||||
b _080C6E0C
|
||||
.align 2, 0
|
||||
_080C6DE0: .4byte gSpriteTemplate_83D26A0
|
||||
_080C6DE4: .4byte gSprites
|
||||
_080C6DE8: .4byte gPlayerAvatar
|
||||
_080C6DEC:
|
||||
ldr r0, _080C6E14 @ =gSpriteTemplate_83D26A0
|
||||
ldr r3, _080C6E18 @ =gSprites
|
||||
ldr r1, _080C6E1C @ =gPlayerAvatar
|
||||
ldrb r1, [r1, 0x4]
|
||||
lsls r2, r1, 4
|
||||
adds r2, r1
|
||||
lsls r2, 2
|
||||
adds r2, r3
|
||||
ldrh r1, [r2, 0x2]
|
||||
lsls r1, 23
|
||||
lsrs r1, 7
|
||||
ldr r3, _080C6E20 @ =0xfff80000
|
||||
adds r1, r3
|
||||
asrs r1, 16
|
||||
ldrb r2, [r2]
|
||||
adds r2, 0x10
|
||||
_080C6E0C:
|
||||
movs r3, 0x94
|
||||
bl CreateSprite
|
||||
b _080C6E4C
|
||||
.align 2, 0
|
||||
_080C6E14: .4byte gSpriteTemplate_83D26A0
|
||||
_080C6E18: .4byte gSprites
|
||||
_080C6E1C: .4byte gPlayerAvatar
|
||||
_080C6E20: .4byte 0xfff80000
|
||||
_080C6E24:
|
||||
ldr r0, _080C6E58 @ =gSpriteTemplate_83D26A0
|
||||
ldr r3, _080C6E5C @ =gSprites
|
||||
ldr r1, _080C6E60 @ =gPlayerAvatar
|
||||
ldrb r1, [r1, 0x4]
|
||||
lsls r2, r1, 4
|
||||
adds r2, r1
|
||||
lsls r2, 2
|
||||
adds r2, r3
|
||||
ldrh r1, [r2, 0x2]
|
||||
lsls r1, 23
|
||||
lsrs r1, 7
|
||||
movs r3, 0xC0
|
||||
lsls r3, 13
|
||||
adds r1, r3
|
||||
asrs r1, 16
|
||||
ldrb r2, [r2]
|
||||
adds r2, 0x10
|
||||
movs r3, 0x94
|
||||
bl CreateSprite
|
||||
_080C6E4C:
|
||||
movs r0, 0
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080C6E58: .4byte gSpriteTemplate_83D26A0
|
||||
_080C6E5C: .4byte gSprites
|
||||
_080C6E60: .4byte gPlayerAvatar
|
||||
thumb_func_end FldEff_SandPillar
|
||||
|
||||
thumb_func_start SpriteCB_SandPillar_0
|
||||
SpriteCB_SandPillar_0: @ 80C6E64
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
movs r0, 0x83
|
||||
bl PlaySE
|
||||
ldr r4, _080C6E90 @ =gFieldEffectArguments
|
||||
ldr r0, [r4, 0x14]
|
||||
ldr r1, [r4, 0x18]
|
||||
subs r1, 0x1
|
||||
bl MapGridGetMetatileIdAt
|
||||
ldr r1, _080C6E94 @ =0x00000286
|
||||
cmp r0, r1
|
||||
bne _080C6E9C
|
||||
ldr r0, [r4, 0x14]
|
||||
ldr r1, [r4, 0x18]
|
||||
subs r1, 0x1
|
||||
ldr r2, _080C6E98 @ =0x00000e02
|
||||
bl MapGridSetMetatileIdAt
|
||||
b _080C6EAA
|
||||
.align 2, 0
|
||||
_080C6E90: .4byte gFieldEffectArguments
|
||||
_080C6E94: .4byte 0x00000286
|
||||
_080C6E98: .4byte 0x00000e02
|
||||
_080C6E9C:
|
||||
ldr r0, [r4, 0x14]
|
||||
ldr r1, [r4, 0x18]
|
||||
subs r1, 0x1
|
||||
movs r2, 0xA1
|
||||
lsls r2, 2
|
||||
bl MapGridSetMetatileIdAt
|
||||
_080C6EAA:
|
||||
ldr r4, _080C6ED8 @ =gFieldEffectArguments
|
||||
ldr r0, [r4, 0x14]
|
||||
ldr r1, [r4, 0x18]
|
||||
ldr r2, _080C6EDC @ =0x0000020a
|
||||
bl MapGridSetMetatileIdAt
|
||||
ldr r0, [r4, 0x14]
|
||||
ldr r1, [r4, 0x18]
|
||||
subs r1, 0x1
|
||||
bl CurrentMapDrawMetatileAt
|
||||
ldr r0, [r4, 0x14]
|
||||
ldr r1, [r4, 0x18]
|
||||
bl CurrentMapDrawMetatileAt
|
||||
movs r0, 0
|
||||
strh r0, [r5, 0x2E]
|
||||
ldr r0, _080C6EE0 @ =SpriteCB_SandPillar_1
|
||||
str r0, [r5, 0x1C]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C6ED8: .4byte gFieldEffectArguments
|
||||
_080C6EDC: .4byte 0x0000020a
|
||||
_080C6EE0: .4byte SpriteCB_SandPillar_1
|
||||
thumb_func_end SpriteCB_SandPillar_0
|
||||
|
||||
thumb_func_start SpriteCB_SandPillar_1
|
||||
SpriteCB_SandPillar_1: @ 80C6EE4
|
||||
push {r4,r5,lr}
|
||||
adds r5, r0, 0
|
||||
ldrh r1, [r5, 0x2E]
|
||||
movs r2, 0x2E
|
||||
ldrsh r0, [r5, r2]
|
||||
cmp r0, 0x11
|
||||
bgt _080C6EF8
|
||||
adds r0, r1, 0x1
|
||||
strh r0, [r5, 0x2E]
|
||||
b _080C6F14
|
||||
_080C6EF8:
|
||||
ldr r4, _080C6F1C @ =gFieldEffectArguments
|
||||
ldr r0, [r4, 0x14]
|
||||
ldr r1, [r4, 0x18]
|
||||
ldr r2, _080C6F20 @ =0x00000e8c
|
||||
bl MapGridSetMetatileIdAt
|
||||
ldr r0, [r4, 0x14]
|
||||
ldr r1, [r4, 0x18]
|
||||
bl CurrentMapDrawMetatileAt
|
||||
movs r0, 0
|
||||
strh r0, [r5, 0x2E]
|
||||
ldr r0, _080C6F24 @ =SpriteCB_SandPillar_2
|
||||
str r0, [r5, 0x1C]
|
||||
_080C6F14:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C6F1C: .4byte gFieldEffectArguments
|
||||
_080C6F20: .4byte 0x00000e8c
|
||||
_080C6F24: .4byte SpriteCB_SandPillar_2
|
||||
thumb_func_end SpriteCB_SandPillar_1
|
||||
|
||||
thumb_func_start SpriteCB_SandPillar_2
|
||||
SpriteCB_SandPillar_2: @ 80C6F28
|
||||
push {lr}
|
||||
movs r1, 0x34
|
||||
bl FieldEffectStop
|
||||
bl EnableBothScriptContexts
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end SpriteCB_SandPillar_2
|
||||
|
||||
thumb_func_start GetShieldToyTVDecorationInfo
|
||||
GetShieldToyTVDecorationInfo: @ 80C6F38
|
||||
push {r4,lr}
|
||||
sub sp, 0x4
|
||||
mov r4, sp
|
||||
adds r4, 0x2
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl GetXYCoordsOneStepInFrontOfPlayer
|
||||
mov r0, sp
|
||||
movs r1, 0
|
||||
ldrsh r0, [r0, r1]
|
||||
movs r2, 0
|
||||
ldrsh r1, [r4, r2]
|
||||
bl MapGridGetMetatileIdAt
|
||||
adds r1, r0, 0
|
||||
ldr r0, _080C6F70 @ =0x000002f5
|
||||
cmp r1, r0
|
||||
beq _080C6FE8
|
||||
cmp r1, r0
|
||||
bgt _080C6F74
|
||||
subs r0, 0x17
|
||||
cmp r1, r0
|
||||
beq _080C6FB0
|
||||
adds r0, 0x16
|
||||
cmp r1, r0
|
||||
beq _080C6FDC
|
||||
b _080C6FFA
|
||||
.align 2, 0
|
||||
_080C6F70: .4byte 0x000002f5
|
||||
_080C6F74:
|
||||
ldr r0, _080C6F9C @ =0x000002f6
|
||||
cmp r1, r0
|
||||
beq _080C6FF4
|
||||
adds r0, 0x40
|
||||
cmp r1, r0
|
||||
bne _080C6FFA
|
||||
ldr r0, _080C6FA0 @ =gStringVar1
|
||||
movs r1, 0x64
|
||||
movs r2, 0
|
||||
movs r3, 0x3
|
||||
bl ConvertIntToDecimalStringN
|
||||
ldr r0, _080C6FA4 @ =gStringVar2
|
||||
ldr r1, _080C6FA8 @ =gSecretBaseText_GoldRank
|
||||
bl StringCopy
|
||||
ldr r1, _080C6FAC @ =gScriptResult
|
||||
movs r0, 0
|
||||
b _080C6FF8
|
||||
.align 2, 0
|
||||
_080C6F9C: .4byte 0x000002f6
|
||||
_080C6FA0: .4byte gStringVar1
|
||||
_080C6FA4: .4byte gStringVar2
|
||||
_080C6FA8: .4byte gSecretBaseText_GoldRank
|
||||
_080C6FAC: .4byte gScriptResult
|
||||
_080C6FB0:
|
||||
ldr r0, _080C6FCC @ =gStringVar1
|
||||
movs r1, 0x32
|
||||
movs r2, 0
|
||||
movs r3, 0x2
|
||||
bl ConvertIntToDecimalStringN
|
||||
ldr r0, _080C6FD0 @ =gStringVar2
|
||||
ldr r1, _080C6FD4 @ =gSecretBaseText_SilverRank
|
||||
bl StringCopy
|
||||
ldr r1, _080C6FD8 @ =gScriptResult
|
||||
movs r0, 0
|
||||
b _080C6FF8
|
||||
.align 2, 0
|
||||
_080C6FCC: .4byte gStringVar1
|
||||
_080C6FD0: .4byte gStringVar2
|
||||
_080C6FD4: .4byte gSecretBaseText_SilverRank
|
||||
_080C6FD8: .4byte gScriptResult
|
||||
_080C6FDC:
|
||||
ldr r1, _080C6FE4 @ =gScriptResult
|
||||
movs r0, 0x1
|
||||
b _080C6FF8
|
||||
.align 2, 0
|
||||
_080C6FE4: .4byte gScriptResult
|
||||
_080C6FE8:
|
||||
ldr r1, _080C6FF0 @ =gScriptResult
|
||||
movs r0, 0x2
|
||||
b _080C6FF8
|
||||
.align 2, 0
|
||||
_080C6FF0: .4byte gScriptResult
|
||||
_080C6FF4:
|
||||
ldr r1, _080C7004 @ =gScriptResult
|
||||
movs r0, 0x3
|
||||
_080C6FF8:
|
||||
strh r0, [r1]
|
||||
_080C6FFA:
|
||||
add sp, 0x4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080C7004: .4byte gScriptResult
|
||||
thumb_func_end GetShieldToyTVDecorationInfo
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
9
include/fldeff_decoration.h
Normal file
9
include/fldeff_decoration.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#ifndef GUARD_FLDEFF_DECORATION_H
|
||||
#define GUARD_FLDEFF_DECORATION_H
|
||||
|
||||
void sub_80C68A4(s16 metatileId, s16 x, s16 y);
|
||||
void sub_80C6A54(s16 x, s16 y);
|
||||
void DoDecorationSoundEffect(s16 metatileId);
|
||||
void DoYellowCave4Sparkle(void);
|
||||
|
||||
#endif // GUARD_FLDEFF_DECORATION_H
|
||||
@@ -161,7 +161,7 @@ SECTIONS {
|
||||
asm/pc_screen_effect.o(.text);
|
||||
src/field/fldeff_secretpower.o(.text);
|
||||
src/field/fldeff_secret_base_pc.o(.text);
|
||||
asm/fldeff_decoration.o(.text);
|
||||
src/field/fldeff_decoration.o(.text);
|
||||
src/field/fldeff_poison.o(.text);
|
||||
src/field/fldeff_berrytree.o(.text);
|
||||
src/field/fldeff_recordmixing.o(.text);
|
||||
|
||||
309
src/field/fldeff_decoration.c
Normal file
309
src/field/fldeff_decoration.c
Normal file
@@ -0,0 +1,309 @@
|
||||
#include "global.h"
|
||||
#include "event_data.h"
|
||||
#include "field_camera.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_map_obj.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "fieldmap.h"
|
||||
#include "script.h"
|
||||
#include "songs.h"
|
||||
#include "sound.h"
|
||||
#include "string_util.h"
|
||||
#include "strings.h"
|
||||
#include "task.h"
|
||||
#include "text.h"
|
||||
|
||||
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[36];
|
||||
extern const struct SpriteTemplate gSpriteTemplate_83D26A0;
|
||||
|
||||
static void sub_80C68EC(u8);
|
||||
static void DoBalloonSoundEffect(s16);
|
||||
void SpriteCB_SandPillar_0(struct Sprite *);
|
||||
void SpriteCB_SandPillar_1(struct Sprite *);
|
||||
void SpriteCB_SandPillar_2(struct Sprite *);
|
||||
|
||||
void sub_80C68A4(s16 metatileId, s16 x, s16 y)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_80C68EC, 0);
|
||||
|
||||
gTasks[taskId].data[0] = metatileId;
|
||||
gTasks[taskId].data[1] = x;
|
||||
gTasks[taskId].data[2] = y;
|
||||
gTasks[taskId].data[3] = 0;
|
||||
gTasks[taskId].data[4] = 1;
|
||||
}
|
||||
|
||||
static void sub_80C68EC(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (data[3] == 6)
|
||||
data[3] = 0;
|
||||
else
|
||||
data[3]++;
|
||||
|
||||
if (data[3] == 0)
|
||||
{
|
||||
if (data[4] == 2)
|
||||
DoBalloonSoundEffect(data[0]);
|
||||
MapGridSetMetatileIdAt(data[1], data[2], data[0] + data[4]);
|
||||
CurrentMapDrawMetatileAt(data[1], data[2]);
|
||||
if (data[4] == 3)
|
||||
DestroyTask(taskId);
|
||||
else
|
||||
data[4]++;
|
||||
}
|
||||
}
|
||||
|
||||
static void DoBalloonSoundEffect(s16 metatileId)
|
||||
{
|
||||
switch (metatileId)
|
||||
{
|
||||
case 824:
|
||||
PlaySE(SE_FUUSEN1);
|
||||
break;
|
||||
case 828:
|
||||
PlaySE(SE_FUUSEN2);
|
||||
break;
|
||||
case 832:
|
||||
PlaySE(SE_FUUSEN3);
|
||||
break;
|
||||
case 552:
|
||||
PlaySE(SE_TOY_DANGO);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 FldEff_Nop47(void)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 FldEff_Nop48(void)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void sub_80C69C4(s16 x, s16 y)
|
||||
{
|
||||
PlaySE(SE_TOY_KABE);
|
||||
MapGridSetMetatileIdAt(x, y, 630);
|
||||
MapGridSetMetatileIdAt(x, y - 1, 622);
|
||||
CurrentMapDrawMetatileAt(x, y);
|
||||
CurrentMapDrawMetatileAt(x, y - 1);
|
||||
}
|
||||
|
||||
static void sub_80C6A14(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[0] == 7)
|
||||
{
|
||||
sub_80C69C4(gTasks[taskId].data[1], gTasks[taskId].data[2]);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[0]++;
|
||||
}
|
||||
}
|
||||
|
||||
void sub_80C6A54(s16 x, s16 y)
|
||||
{
|
||||
u8 dir = player_get_direction_lower_nybble();
|
||||
if (dir == 1)
|
||||
{
|
||||
sub_80C69C4(x, y);
|
||||
}
|
||||
else if (dir == 2)
|
||||
{
|
||||
u8 taskId = CreateTask(sub_80C6A14, 5);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
gTasks[taskId].data[1] = x;
|
||||
gTasks[taskId].data[2] = y;
|
||||
}
|
||||
}
|
||||
|
||||
static void Task_DecorationSoundEffect(u8 taskId)
|
||||
{
|
||||
if (gTasks[taskId].data[1] == 7)
|
||||
{
|
||||
switch (gTasks[taskId].data[0])
|
||||
{
|
||||
case 632:
|
||||
PlaySE(SE_TOY_C);
|
||||
break;
|
||||
case 633:
|
||||
PlaySE(SE_TOY_D);
|
||||
break;
|
||||
case 634:
|
||||
PlaySE(SE_TOY_E);
|
||||
break;
|
||||
case 635:
|
||||
PlaySE(SE_TOY_F);
|
||||
break;
|
||||
case 636:
|
||||
PlaySE(SE_TOY_G);
|
||||
break;
|
||||
case 637:
|
||||
PlaySE(SE_TOY_A);
|
||||
break;
|
||||
case 638:
|
||||
PlaySE(SE_TOY_B);
|
||||
break;
|
||||
case 691:
|
||||
PlaySE(SE_TOY_C1);
|
||||
break;
|
||||
}
|
||||
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].data[1]++;
|
||||
}
|
||||
}
|
||||
|
||||
void DoDecorationSoundEffect(s16 arg)
|
||||
{
|
||||
u8 taskId = CreateTask(Task_DecorationSoundEffect, 5);
|
||||
gTasks[taskId].data[0] = arg;
|
||||
gTasks[taskId].data[1] = 0;
|
||||
}
|
||||
|
||||
void SpriteCB_YellowCave4Sparkle(struct Sprite *sprite)
|
||||
{
|
||||
sprite->data[0]++;
|
||||
if (sprite->data[0] == 8)
|
||||
PlaySE(SE_W215);
|
||||
if (sprite->data[0] >= 32)
|
||||
DestroySprite(sprite);
|
||||
}
|
||||
|
||||
void DoYellowCave4Sparkle(void)
|
||||
{
|
||||
s16 x = gMapObjects[gPlayerAvatar.mapObjectId].coords2.x;
|
||||
s16 y = gMapObjects[gPlayerAvatar.mapObjectId].coords2.y;
|
||||
u8 spriteId;
|
||||
|
||||
sub_8060470(&x, &y, 8, 4);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[22], x, y, 0);
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
gSprites[spriteId].coordOffsetEnabled = TRUE;
|
||||
gSprites[spriteId].oam.priority = 1;
|
||||
gSprites[spriteId].oam.paletteNum = 5;
|
||||
gSprites[spriteId].callback = SpriteCB_YellowCave4Sparkle;
|
||||
gSprites[spriteId].data[0] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool8 FldEff_SandPillar(void)
|
||||
{
|
||||
s16 x, y;
|
||||
|
||||
ScriptContext2_Enable();
|
||||
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
|
||||
gFieldEffectArguments[5] = x;
|
||||
gFieldEffectArguments[6] = y;
|
||||
|
||||
switch (player_get_direction_lower_nybble())
|
||||
{
|
||||
case 1:
|
||||
CreateSprite(
|
||||
&gSpriteTemplate_83D26A0,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.x + 8,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.y + 32,
|
||||
0);
|
||||
break;
|
||||
case 2:
|
||||
CreateSprite(
|
||||
&gSpriteTemplate_83D26A0,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.x + 8,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.y,
|
||||
148);
|
||||
break;
|
||||
case 3:
|
||||
CreateSprite(
|
||||
&gSpriteTemplate_83D26A0,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.x - 8,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.y + 16,
|
||||
148);
|
||||
break;
|
||||
case 4:
|
||||
CreateSprite(
|
||||
&gSpriteTemplate_83D26A0,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.x + 24,
|
||||
gSprites[gPlayerAvatar.spriteId].oam.y + 16,
|
||||
148);
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
void SpriteCB_SandPillar_0(struct Sprite *sprite)
|
||||
{
|
||||
PlaySE(SE_W088);
|
||||
if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == 646)
|
||||
MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 3586);
|
||||
else
|
||||
MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, 644);
|
||||
MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 522);
|
||||
CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1);
|
||||
CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]);
|
||||
sprite->data[0] = 0;
|
||||
sprite->callback = SpriteCB_SandPillar_1;
|
||||
}
|
||||
|
||||
void SpriteCB_SandPillar_1(struct Sprite *sprite)
|
||||
{
|
||||
if (sprite->data[0] < 18)
|
||||
{
|
||||
sprite->data[0]++;
|
||||
}
|
||||
else
|
||||
{
|
||||
MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6], 3724);
|
||||
CurrentMapDrawMetatileAt(gFieldEffectArguments[5], gFieldEffectArguments[6]);
|
||||
sprite->data[0] = 0;
|
||||
sprite->callback = SpriteCB_SandPillar_2;
|
||||
}
|
||||
}
|
||||
|
||||
void SpriteCB_SandPillar_2(struct Sprite *sprite)
|
||||
{
|
||||
FieldEffectStop(sprite, FLDEFF_SAND_PILLAR);
|
||||
EnableBothScriptContexts();
|
||||
}
|
||||
|
||||
void GetShieldToyTVDecorationInfo(void)
|
||||
{
|
||||
s16 x, y;
|
||||
s32 metatileId;
|
||||
|
||||
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
|
||||
|
||||
metatileId = MapGridGetMetatileIdAt(x, y);
|
||||
|
||||
switch (metatileId)
|
||||
{
|
||||
case 822:
|
||||
ConvertIntToDecimalStringN(gStringVar1, 100, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
StringCopy(gStringVar2, gSecretBaseText_GoldRank);
|
||||
gScriptResult = 0;
|
||||
break;
|
||||
case 734:
|
||||
ConvertIntToDecimalStringN(gStringVar1, 50, STR_CONV_MODE_LEFT_ALIGN, 2);
|
||||
StringCopy(gStringVar2, gSecretBaseText_SilverRank);
|
||||
gScriptResult = 0;
|
||||
break;
|
||||
case 756:
|
||||
gScriptResult = 1;
|
||||
break;
|
||||
case 757:
|
||||
gScriptResult = 2;
|
||||
break;
|
||||
case 758:
|
||||
gScriptResult = 3;
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -12,6 +12,7 @@
|
||||
#include "field_specials.h"
|
||||
#include "field_weather.h"
|
||||
#include "fieldmap.h"
|
||||
#include "fldeff_decoration.h"
|
||||
#include "link.h"
|
||||
#include "main.h"
|
||||
#include "sound.h"
|
||||
@@ -47,11 +48,6 @@ static void sub_80BCBF8(u8 taskId);
|
||||
static void sub_80BCC54(u8 taskId);
|
||||
static void Task_SecretBasePC_Registry(u8 taskId);
|
||||
|
||||
extern void DoDecorationSoundEffect(s16 metatileId);
|
||||
extern void sub_80C6A54(s16 x, s16 y);
|
||||
extern void sub_80C68A4(s16 metatileId, s16 x, s16 y);
|
||||
extern void DoYellowCave4Sparkle(void);
|
||||
|
||||
extern u8 gUnknown_0815F399[];
|
||||
extern u8 gUnknown_0815F49A[];
|
||||
extern u8 gUnknown_020387DC;
|
||||
|
||||
Reference in New Issue
Block a user