Decompile fldeff hooks
This commit is contained in:
@@ -5,582 +5,6 @@
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start FieldEffectStart
|
||||
FieldEffectStart: @ 8083444
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x8
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
adds r0, r4, 0
|
||||
bl FieldEffectActiveListAdd
|
||||
ldr r0, _08083484 @ =gUnknown_81D96AC
|
||||
lsls r4, 2
|
||||
adds r4, r0
|
||||
ldr r0, [r4]
|
||||
str r0, [sp]
|
||||
add r4, sp, 0x4
|
||||
ldr r5, _08083488 @ =gUnknown_83CBE30
|
||||
_08083462:
|
||||
ldr r0, [sp]
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 2
|
||||
adds r0, r5
|
||||
ldr r2, [r0]
|
||||
mov r0, sp
|
||||
adds r1, r4, 0
|
||||
bl _call_via_r2
|
||||
lsls r0, 24
|
||||
cmp r0, 0
|
||||
bne _08083462
|
||||
ldr r0, [sp, 0x4]
|
||||
add sp, 0x8
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_08083484: .4byte gUnknown_81D96AC
|
||||
_08083488: .4byte gUnknown_83CBE30
|
||||
thumb_func_end FieldEffectStart
|
||||
|
||||
thumb_func_start FieldEffectCmd_loadtiles
|
||||
FieldEffectCmd_loadtiles: @ 808348C
|
||||
push {lr}
|
||||
ldr r1, [r0]
|
||||
adds r1, 0x1
|
||||
str r1, [r0]
|
||||
bl FieldEffectScript_LoadTiles
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldEffectCmd_loadtiles
|
||||
|
||||
thumb_func_start FieldEffectCmd_loadfadedpal
|
||||
FieldEffectCmd_loadfadedpal: @ 80834A0
|
||||
push {lr}
|
||||
ldr r1, [r0]
|
||||
adds r1, 0x1
|
||||
str r1, [r0]
|
||||
bl sub_8083614
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldEffectCmd_loadfadedpal
|
||||
|
||||
thumb_func_start FieldEffectCmd_loadpal
|
||||
FieldEffectCmd_loadpal: @ 80834B4
|
||||
push {lr}
|
||||
ldr r1, [r0]
|
||||
adds r1, 0x1
|
||||
str r1, [r0]
|
||||
bl sub_808365C
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldEffectCmd_loadpal
|
||||
|
||||
thumb_func_start FieldEffectCmd_callnative
|
||||
FieldEffectCmd_callnative: @ 80834C8
|
||||
push {lr}
|
||||
ldr r2, [r0]
|
||||
adds r2, 0x1
|
||||
str r2, [r0]
|
||||
bl FieldEffectScript_CallNative
|
||||
movs r0, 0x1
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldEffectCmd_callnative
|
||||
|
||||
thumb_func_start sub_80834DC
|
||||
sub_80834DC: @ 80834DC
|
||||
movs r0, 0
|
||||
bx lr
|
||||
thumb_func_end sub_80834DC
|
||||
|
||||
thumb_func_start FieldEffectCmd_loadgfx_callnative
|
||||
FieldEffectCmd_loadgfx_callnative: @ 80834E0
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x1
|
||||
str r0, [r4]
|
||||
adds r0, r4, 0
|
||||
bl FieldEffectScript_LoadTiles
|
||||
adds r0, r4, 0
|
||||
bl sub_8083614
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl FieldEffectScript_CallNative
|
||||
movs r0, 0x1
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldEffectCmd_loadgfx_callnative
|
||||
|
||||
thumb_func_start FieldEffectCmd_loadtiles_callnative
|
||||
FieldEffectCmd_loadtiles_callnative: @ 8083508
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x1
|
||||
str r0, [r4]
|
||||
adds r0, r4, 0
|
||||
bl FieldEffectScript_LoadTiles
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl FieldEffectScript_CallNative
|
||||
movs r0, 0x1
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldEffectCmd_loadtiles_callnative
|
||||
|
||||
thumb_func_start FieldEffectCmd_loadfadedpal_callnative
|
||||
FieldEffectCmd_loadfadedpal_callnative: @ 808352C
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x1
|
||||
str r0, [r4]
|
||||
adds r0, r4, 0
|
||||
bl sub_8083614
|
||||
adds r0, r4, 0
|
||||
adds r1, r5, 0
|
||||
bl FieldEffectScript_CallNative
|
||||
movs r0, 0x1
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldEffectCmd_loadfadedpal_callnative
|
||||
|
||||
thumb_func_start FieldEffectScript_ReadWord
|
||||
FieldEffectScript_ReadWord: @ 8083550
|
||||
ldr r2, [r0]
|
||||
ldrb r0, [r2]
|
||||
ldrb r1, [r2, 0x1]
|
||||
lsls r1, 8
|
||||
adds r0, r1
|
||||
ldrb r1, [r2, 0x2]
|
||||
lsls r1, 16
|
||||
adds r0, r1
|
||||
ldrb r1, [r2, 0x3]
|
||||
lsls r1, 24
|
||||
adds r0, r1
|
||||
bx lr
|
||||
thumb_func_end FieldEffectScript_ReadWord
|
||||
|
||||
thumb_func_start FieldEffectScript_LoadTiles
|
||||
FieldEffectScript_LoadTiles: @ 8083568
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
bl FieldEffectScript_ReadWord
|
||||
adds r5, r0, 0
|
||||
ldrh r0, [r5, 0x6]
|
||||
bl GetSpriteTileStartByTag
|
||||
lsls r0, 16
|
||||
ldr r1, _08083594 @ =0xffff0000
|
||||
cmp r0, r1
|
||||
bne _08083586
|
||||
adds r0, r5, 0
|
||||
bl LoadSpriteSheet
|
||||
_08083586:
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x4
|
||||
str r0, [r4]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_08083594: .4byte 0xffff0000
|
||||
thumb_func_end FieldEffectScript_LoadTiles
|
||||
|
||||
thumb_func_start sub_8083598
|
||||
sub_8083598: @ 8083598
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
ldr r0, _080835B4 @ =gUnknown_2036E28
|
||||
ldrb r0, [r0]
|
||||
cmp r0, 0x1
|
||||
beq _080835B8
|
||||
cmp r0, 0x1
|
||||
ble _08083606
|
||||
cmp r0, 0x2
|
||||
beq _080835CC
|
||||
cmp r0, 0x3
|
||||
beq _080835E0
|
||||
b _08083606
|
||||
.align 2, 0
|
||||
_080835B4: .4byte gUnknown_2036E28
|
||||
_080835B8:
|
||||
adds r4, 0x10
|
||||
lsls r0, r4, 5
|
||||
ldr r1, _080835C8 @ =gPlttBufferUnfaded
|
||||
adds r0, r1
|
||||
movs r1, 0x10
|
||||
bl TintPalette_GrayScale
|
||||
b _080835F6
|
||||
.align 2, 0
|
||||
_080835C8: .4byte gPlttBufferUnfaded
|
||||
_080835CC:
|
||||
adds r4, 0x10
|
||||
lsls r0, r4, 5
|
||||
ldr r1, _080835DC @ =gPlttBufferUnfaded
|
||||
adds r0, r1
|
||||
movs r1, 0x10
|
||||
bl TintPalette_SepiaTone
|
||||
b _080835F6
|
||||
.align 2, 0
|
||||
_080835DC: .4byte gPlttBufferUnfaded
|
||||
_080835E0:
|
||||
adds r4, 0x10
|
||||
lsls r0, r4, 4
|
||||
movs r1, 0x10
|
||||
bl sub_8111F38
|
||||
lsls r0, r4, 5
|
||||
ldr r1, _0808360C @ =gPlttBufferUnfaded
|
||||
adds r0, r1
|
||||
movs r1, 0x10
|
||||
bl TintPalette_GrayScale
|
||||
_080835F6:
|
||||
lsls r1, r4, 5
|
||||
ldr r0, _0808360C @ =gPlttBufferUnfaded
|
||||
adds r0, r1, r0
|
||||
ldr r2, _08083610 @ =gPlttBufferFaded
|
||||
adds r1, r2
|
||||
movs r2, 0x8
|
||||
bl CpuFastSet
|
||||
_08083606:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808360C: .4byte gPlttBufferUnfaded
|
||||
_08083610: .4byte gPlttBufferFaded
|
||||
thumb_func_end sub_8083598
|
||||
|
||||
thumb_func_start sub_8083614
|
||||
sub_8083614: @ 8083614
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
bl FieldEffectScript_ReadWord
|
||||
adds r5, r0, 0
|
||||
ldrh r0, [r5, 0x4]
|
||||
bl IndexOfSpritePaletteTag
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
adds r0, r5, 0
|
||||
bl LoadSpritePalette
|
||||
cmp r4, 0xFF
|
||||
bne _08083642
|
||||
ldrh r0, [r5, 0x4]
|
||||
bl IndexOfSpritePaletteTag
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8083598
|
||||
_08083642:
|
||||
ldrh r0, [r5, 0x4]
|
||||
bl IndexOfSpritePaletteTag
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_807AA8C
|
||||
ldr r0, [r6]
|
||||
adds r0, 0x4
|
||||
str r0, [r6]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_8083614
|
||||
|
||||
thumb_func_start sub_808365C
|
||||
sub_808365C: @ 808365C
|
||||
push {r4-r6,lr}
|
||||
adds r6, r0, 0
|
||||
bl FieldEffectScript_ReadWord
|
||||
adds r5, r0, 0
|
||||
ldrh r0, [r5, 0x4]
|
||||
bl IndexOfSpritePaletteTag
|
||||
adds r4, r0, 0
|
||||
lsls r4, 24
|
||||
lsrs r4, 24
|
||||
adds r0, r5, 0
|
||||
bl LoadSpritePalette
|
||||
cmp r4, 0xFF
|
||||
beq _0808368A
|
||||
ldrh r0, [r5, 0x4]
|
||||
bl IndexOfSpritePaletteTag
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
bl sub_8083598
|
||||
_0808368A:
|
||||
ldr r0, [r6]
|
||||
adds r0, 0x4
|
||||
str r0, [r6]
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_808365C
|
||||
|
||||
thumb_func_start FieldEffectScript_CallNative
|
||||
FieldEffectScript_CallNative: @ 8083698
|
||||
push {r4,r5,lr}
|
||||
adds r4, r0, 0
|
||||
adds r5, r1, 0
|
||||
bl FieldEffectScript_ReadWord
|
||||
bl _call_via_r0
|
||||
str r0, [r5]
|
||||
ldr r0, [r4]
|
||||
adds r0, 0x4
|
||||
str r0, [r4]
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end FieldEffectScript_CallNative
|
||||
|
||||
thumb_func_start FieldEffectFreeGraphicsResources
|
||||
FieldEffectFreeGraphicsResources: @ 80836B4
|
||||
push {r4,r5,lr}
|
||||
adds r1, r0, 0
|
||||
adds r1, 0x40
|
||||
ldrh r5, [r1]
|
||||
ldrb r4, [r0, 0x5]
|
||||
lsrs r4, 4
|
||||
bl DestroySprite
|
||||
adds r0, r5, 0
|
||||
bl FieldEffectFreeTilesIfUnused
|
||||
adds r0, r4, 0
|
||||
bl FieldEffectFreePaletteIfUnused
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end FieldEffectFreeGraphicsResources
|
||||
|
||||
thumb_func_start FieldEffectStop
|
||||
FieldEffectStop: @ 80836D8
|
||||
push {r4,lr}
|
||||
lsls r4, r1, 24
|
||||
lsrs r4, 24
|
||||
bl FieldEffectFreeGraphicsResources
|
||||
adds r0, r4, 0
|
||||
bl FieldEffectActiveListRemove
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end FieldEffectStop
|
||||
|
||||
thumb_func_start FieldEffectFreeTilesIfUnused
|
||||
FieldEffectFreeTilesIfUnused: @ 80836F0
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 16
|
||||
lsrs r4, r0, 16
|
||||
adds r0, r4, 0
|
||||
bl GetSpriteTileTagByTileStart
|
||||
lsls r0, 16
|
||||
lsrs r3, r0, 16
|
||||
ldr r0, _0808374C @ =0x0000ffff
|
||||
cmp r3, r0
|
||||
beq _08083744
|
||||
movs r2, 0
|
||||
ldr r5, _08083750 @ =gSprites
|
||||
_0808370A:
|
||||
lsls r0, r2, 4
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r1, r0, r5
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x3E
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 31
|
||||
cmp r0, 0
|
||||
beq _08083734
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x3F
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 25
|
||||
cmp r0, 0
|
||||
bge _08083734
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x40
|
||||
ldrh r0, [r0]
|
||||
cmp r4, r0
|
||||
beq _08083744
|
||||
_08083734:
|
||||
adds r0, r2, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x3F
|
||||
bls _0808370A
|
||||
adds r0, r3, 0
|
||||
bl FreeSpriteTilesByTag
|
||||
_08083744:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_0808374C: .4byte 0x0000ffff
|
||||
_08083750: .4byte gSprites
|
||||
thumb_func_end FieldEffectFreeTilesIfUnused
|
||||
|
||||
thumb_func_start FieldEffectFreePaletteIfUnused
|
||||
FieldEffectFreePaletteIfUnused: @ 8083754
|
||||
push {r4-r6,lr}
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
adds r0, r4, 0
|
||||
bl GetSpritePaletteTagByPaletteNum
|
||||
lsls r0, 16
|
||||
lsrs r5, r0, 16
|
||||
ldr r0, _080837A4 @ =0x0000ffff
|
||||
cmp r5, r0
|
||||
beq _0808379C
|
||||
movs r2, 0
|
||||
ldr r6, _080837A8 @ =gSprites
|
||||
adds r3, r4, 0
|
||||
_08083770:
|
||||
lsls r0, r2, 4
|
||||
adds r0, r2
|
||||
lsls r0, 2
|
||||
adds r1, r0, r6
|
||||
adds r0, r1, 0
|
||||
adds r0, 0x3E
|
||||
ldrb r0, [r0]
|
||||
lsls r0, 31
|
||||
cmp r0, 0
|
||||
beq _0808378C
|
||||
ldrb r0, [r1, 0x5]
|
||||
lsrs r0, 4
|
||||
cmp r0, r3
|
||||
beq _0808379C
|
||||
_0808378C:
|
||||
adds r0, r2, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x3F
|
||||
bls _08083770
|
||||
adds r0, r5, 0
|
||||
bl FreeSpritePaletteByTag
|
||||
_0808379C:
|
||||
pop {r4-r6}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080837A4: .4byte 0x0000ffff
|
||||
_080837A8: .4byte gSprites
|
||||
thumb_func_end FieldEffectFreePaletteIfUnused
|
||||
|
||||
thumb_func_start FieldEffectActiveListClear
|
||||
FieldEffectActiveListClear: @ 80837AC
|
||||
push {r4,lr}
|
||||
movs r2, 0
|
||||
ldr r4, _080837CC @ =gUnknown_3000FC8
|
||||
movs r3, 0xFF
|
||||
_080837B4:
|
||||
adds r0, r2, r4
|
||||
ldrb r1, [r0]
|
||||
orrs r1, r3
|
||||
strb r1, [r0]
|
||||
adds r0, r2, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x1F
|
||||
bls _080837B4
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080837CC: .4byte gUnknown_3000FC8
|
||||
thumb_func_end FieldEffectActiveListClear
|
||||
|
||||
thumb_func_start FieldEffectActiveListAdd
|
||||
FieldEffectActiveListAdd: @ 80837D0
|
||||
push {r4,lr}
|
||||
lsls r0, 24
|
||||
lsrs r3, r0, 24
|
||||
movs r2, 0
|
||||
ldr r4, _080837E8 @ =gUnknown_3000FC8
|
||||
_080837DA:
|
||||
adds r1, r2, r4
|
||||
ldrb r0, [r1]
|
||||
cmp r0, 0xFF
|
||||
bne _080837EC
|
||||
strb r3, [r1]
|
||||
b _080837F6
|
||||
.align 2, 0
|
||||
_080837E8: .4byte gUnknown_3000FC8
|
||||
_080837EC:
|
||||
adds r0, r2, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x1F
|
||||
bls _080837DA
|
||||
_080837F6:
|
||||
pop {r4}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end FieldEffectActiveListAdd
|
||||
|
||||
thumb_func_start FieldEffectActiveListRemove
|
||||
FieldEffectActiveListRemove: @ 80837FC
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r3, r0, 24
|
||||
movs r2, 0
|
||||
ldr r4, _08083818 @ =gUnknown_3000FC8
|
||||
movs r5, 0xFF
|
||||
_08083808:
|
||||
adds r1, r2, r4
|
||||
ldrb r0, [r1]
|
||||
cmp r0, r3
|
||||
bne _0808381C
|
||||
orrs r0, r5
|
||||
strb r0, [r1]
|
||||
b _08083826
|
||||
.align 2, 0
|
||||
_08083818: .4byte gUnknown_3000FC8
|
||||
_0808381C:
|
||||
adds r0, r2, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
cmp r2, 0x1F
|
||||
bls _08083808
|
||||
_08083826:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end FieldEffectActiveListRemove
|
||||
|
||||
thumb_func_start FieldEffectActiveListContains
|
||||
FieldEffectActiveListContains: @ 808382C
|
||||
push {lr}
|
||||
lsls r0, 24
|
||||
lsrs r2, r0, 24
|
||||
movs r1, 0
|
||||
ldr r3, _08083844 @ =gUnknown_3000FC8
|
||||
_08083836:
|
||||
adds r0, r1, r3
|
||||
ldrb r0, [r0]
|
||||
cmp r0, r2
|
||||
bne _08083848
|
||||
movs r0, 0x1
|
||||
b _08083854
|
||||
.align 2, 0
|
||||
_08083844: .4byte gUnknown_3000FC8
|
||||
_08083848:
|
||||
adds r0, r1, 0x1
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0x1F
|
||||
bls _08083836
|
||||
movs r0, 0
|
||||
_08083854:
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end FieldEffectActiveListContains
|
||||
|
||||
thumb_func_start CreateTrainerSprite
|
||||
CreateTrainerSprite: @ 8083858
|
||||
push {r4-r7,lr}
|
||||
|
||||
+2
-2
@@ -49,12 +49,12 @@ gUnknown_83CBDB0::
|
||||
.incbin "graphics/field_effects/unk_83CBDB0.4bpp"
|
||||
|
||||
.align 2
|
||||
gUnknown_83CBE30:: @ 83CBE30 dataptr
|
||||
sFldEffScrcmdTable:: @ 83CBE30 dataptr
|
||||
.4byte FieldEffectCmd_loadtiles
|
||||
.4byte FieldEffectCmd_loadfadedpal
|
||||
.4byte FieldEffectCmd_loadpal
|
||||
.4byte FieldEffectCmd_callnative
|
||||
.4byte sub_80834DC
|
||||
.4byte FieldEffectCmd_end
|
||||
.4byte FieldEffectCmd_loadgfx_callnative
|
||||
.4byte FieldEffectCmd_loadtiles_callnative
|
||||
.4byte FieldEffectCmd_loadfadedpal_callnative
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.include "asm/macros/field_effect_script.inc"
|
||||
.section script_data, "aw", %progbits
|
||||
.align 2
|
||||
gUnknown_81D96AC:: @ 81D96AC
|
||||
gFieldEffectScriptPointers:: @ 81D96AC
|
||||
.4byte gFldEffScript_ExclamationMarkIcon
|
||||
.4byte gFldEffScript_UseCutOnGrass
|
||||
.4byte gFldEffScript_UseCutOnTree
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
#ifndef GUARD_FIELD_EFFECT_SCRIPTS_H
|
||||
#define GUARD_FIELD_EFFECT_SCRIPTS_H
|
||||
|
||||
extern const u8 *const gFieldEffectScriptPointers[];
|
||||
|
||||
#endif //GUARD_FIELD_EFFECT_SCRIPTS_H
|
||||
@@ -18,5 +18,6 @@ void SetWeatherScreenFadeOut(void);
|
||||
void sub_807B070(void);
|
||||
u8 GetCurrentWeather(void);
|
||||
void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32);
|
||||
void sub_807AA8C(u8 palIdx);
|
||||
|
||||
#endif // GUARD_WEATHER_H
|
||||
|
||||
+1
-1
@@ -29,7 +29,7 @@ void sub_811539C(void);
|
||||
void sub_8115748(u16);
|
||||
u8 sub_8112CAC(void);
|
||||
bool8 QuestLog_SchedulePlaybackCB(void (*func)(void));
|
||||
void sub_8111F38(u16, u16);
|
||||
void sub_8111F38(u16 offset, u16 idx);
|
||||
void sub_8111134(void);
|
||||
void DestroyHelpMessageWindow(u8 a0);
|
||||
u8 CreateHelpMessageWindow(void);
|
||||
|
||||
@@ -123,6 +123,7 @@ SECTIONS {
|
||||
asm/cable_club.o(.text);
|
||||
src/trainer_see.o(.text);
|
||||
src/wild_encounter.o(.text);
|
||||
src/field_effect.o(.text);
|
||||
asm/field_effect.o(.text);
|
||||
src/scanline_effect.o(.text);
|
||||
src/option_menu.o(.text);
|
||||
|
||||
@@ -0,0 +1,243 @@
|
||||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "field_effect.h"
|
||||
#include "field_effect_scripts.h"
|
||||
#include "field_weather.h"
|
||||
#include "overworld.h"
|
||||
#include "quest_log.h"
|
||||
|
||||
#define FIELD_EFFECT_COUNT 32
|
||||
|
||||
static u8 sFieldEffectActiveList[FIELD_EFFECT_COUNT];
|
||||
|
||||
void FieldEffectActiveListAdd(u8 fldeff);
|
||||
void FieldEffectScript_LoadTiles(const u8 **script);
|
||||
void FieldEffectScript_LoadFadedPal(const u8 **script);
|
||||
void FieldEffectScript_LoadPal(const u8 **script);
|
||||
void FieldEffectScript_CallNative(const u8 **script, u32 *result);
|
||||
void FieldEffectFreeTilesIfUnused(u16 tilesTag);
|
||||
void FieldEffectFreePaletteIfUnused(u8 paletteNum);
|
||||
|
||||
extern bool8 (*const sFldEffScrcmdTable[])(const u8 **script, u32 *result);
|
||||
|
||||
u32 FieldEffectStart(u8 fldeff)
|
||||
{
|
||||
const u8 *script;
|
||||
u32 result;
|
||||
FieldEffectActiveListAdd(fldeff);
|
||||
script = gFieldEffectScriptPointers[fldeff];
|
||||
while (sFldEffScrcmdTable[*script](&script, &result))
|
||||
;
|
||||
return result;
|
||||
}
|
||||
|
||||
bool8 FieldEffectCmd_loadtiles(const u8 **script, u32 *result)
|
||||
{
|
||||
(*script)++;
|
||||
FieldEffectScript_LoadTiles(script);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 FieldEffectCmd_loadfadedpal(const u8 **script, u32 *result)
|
||||
{
|
||||
(*script)++;
|
||||
FieldEffectScript_LoadFadedPal(script);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 FieldEffectCmd_loadpal(const u8 **script, u32 *result)
|
||||
{
|
||||
(*script)++;
|
||||
FieldEffectScript_LoadPal(script);
|
||||
return TRUE;
|
||||
}
|
||||
bool8 FieldEffectCmd_callnative(const u8 **script, u32 *result)
|
||||
{
|
||||
(*script)++;
|
||||
FieldEffectScript_CallNative(script, result);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 FieldEffectCmd_end(const u8 **script, u32 *result)
|
||||
{
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool8 FieldEffectCmd_loadgfx_callnative(const u8 **script, u32 *result)
|
||||
{
|
||||
(*script)++;
|
||||
FieldEffectScript_LoadTiles(script);
|
||||
FieldEffectScript_LoadFadedPal(script);
|
||||
FieldEffectScript_CallNative(script, result);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 FieldEffectCmd_loadtiles_callnative(const u8 **script, u32 *result)
|
||||
{
|
||||
(*script)++;
|
||||
FieldEffectScript_LoadTiles(script);
|
||||
FieldEffectScript_CallNative(script, result);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
bool8 FieldEffectCmd_loadfadedpal_callnative(const u8 **script, u32 *result)
|
||||
{
|
||||
(*script)++;
|
||||
FieldEffectScript_LoadFadedPal(script);
|
||||
FieldEffectScript_CallNative(script, result);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
u32 FieldEffectScript_ReadWord(const u8 **script)
|
||||
{
|
||||
return T2_READ_32(*script);
|
||||
}
|
||||
|
||||
void FieldEffectScript_LoadTiles(const u8 **script)
|
||||
{
|
||||
const struct SpriteSheet * spriteSheet = (const struct SpriteSheet *)FieldEffectScript_ReadWord(script);
|
||||
if (GetSpriteTileStartByTag(spriteSheet->tag) == 0xFFFF)
|
||||
LoadSpriteSheet(spriteSheet);
|
||||
*script += sizeof(u32);
|
||||
}
|
||||
|
||||
void sub_8083598(u8 paletteIdx)
|
||||
{
|
||||
switch (gUnknown_2036E28)
|
||||
{
|
||||
case 0:
|
||||
return;
|
||||
case 1:
|
||||
TintPalette_GrayScale(&gPlttBufferUnfaded[(paletteIdx + 16) * 16], 0x10);
|
||||
break;
|
||||
case 2:
|
||||
TintPalette_SepiaTone(&gPlttBufferUnfaded[(paletteIdx + 16) * 16], 0x10);
|
||||
break;
|
||||
case 3:
|
||||
sub_8111F38((paletteIdx + 16) * 16, 0x10);
|
||||
TintPalette_GrayScale(&gPlttBufferUnfaded[(paletteIdx + 16) * 16], 0x10);
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
CpuFastCopy(&gPlttBufferUnfaded[(paletteIdx + 16) * 16], &gPlttBufferFaded[(paletteIdx + 16) * 16], 0x20);
|
||||
}
|
||||
|
||||
void FieldEffectScript_LoadFadedPal(const u8 **script)
|
||||
{
|
||||
const struct SpritePalette * spritePalette = (const struct SpritePalette *)FieldEffectScript_ReadWord(script);
|
||||
u8 idx = IndexOfSpritePaletteTag(spritePalette->tag);
|
||||
LoadSpritePalette(spritePalette);
|
||||
if (idx == 0xFF)
|
||||
sub_8083598(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
sub_807AA8C(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
*script += sizeof(u32);
|
||||
}
|
||||
|
||||
void FieldEffectScript_LoadPal(const u8 **script)
|
||||
{
|
||||
const struct SpritePalette * spritePalette = (const struct SpritePalette *)FieldEffectScript_ReadWord(script);
|
||||
u8 idx = IndexOfSpritePaletteTag(spritePalette->tag);
|
||||
LoadSpritePalette(spritePalette);
|
||||
if (idx != 0xFF)
|
||||
sub_8083598(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
*script += sizeof(u32);
|
||||
}
|
||||
|
||||
void FieldEffectScript_CallNative(const u8 **script, u32 *result)
|
||||
{
|
||||
u32 (*func)(void) = (u32 (*)(void))FieldEffectScript_ReadWord(script);
|
||||
*result = func();
|
||||
*script += sizeof(u32);
|
||||
}
|
||||
|
||||
void FieldEffectFreeGraphicsResources(struct Sprite * sprite)
|
||||
{
|
||||
u16 tileStart = sprite->sheetTileStart;
|
||||
u8 paletteNum = sprite->oam.paletteNum;
|
||||
DestroySprite(sprite);
|
||||
FieldEffectFreeTilesIfUnused(tileStart);
|
||||
FieldEffectFreePaletteIfUnused(paletteNum);
|
||||
}
|
||||
|
||||
void FieldEffectStop(struct Sprite * sprite, u8 fldeff)
|
||||
{
|
||||
FieldEffectFreeGraphicsResources(sprite);
|
||||
FieldEffectActiveListRemove(fldeff);
|
||||
}
|
||||
|
||||
void FieldEffectFreeTilesIfUnused(u16 tileStart)
|
||||
{
|
||||
u8 i;
|
||||
u16 tileTag = GetSpriteTileTagByTileStart(tileStart);
|
||||
if (tileTag == 0xFFFF)
|
||||
return;
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
if (gSprites[i].inUse && gSprites[i].usingSheet && tileStart == gSprites[i].sheetTileStart)
|
||||
return;
|
||||
}
|
||||
FreeSpriteTilesByTag(tileTag);
|
||||
}
|
||||
|
||||
void FieldEffectFreePaletteIfUnused(u8 paletteNum)
|
||||
{
|
||||
u8 i;
|
||||
u16 paletteTag = GetSpritePaletteTagByPaletteNum(paletteNum);
|
||||
if (paletteTag == 0xFFFF)
|
||||
return;
|
||||
for (i = 0; i < MAX_SPRITES; i++)
|
||||
{
|
||||
if (gSprites[i].inUse && gSprites[i].oam.paletteNum == paletteNum)
|
||||
return;
|
||||
}
|
||||
FreeSpritePaletteByTag(paletteTag);
|
||||
}
|
||||
|
||||
void FieldEffectActiveListClear(void)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < FIELD_EFFECT_COUNT; i++)
|
||||
{
|
||||
sFieldEffectActiveList[i] = 0xFF;
|
||||
}
|
||||
}
|
||||
|
||||
void FieldEffectActiveListAdd(u8 fldeff)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < FIELD_EFFECT_COUNT; i++)
|
||||
{
|
||||
if (sFieldEffectActiveList[i] == 0xFF)
|
||||
{
|
||||
sFieldEffectActiveList[i] = fldeff;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void FieldEffectActiveListRemove(u8 fldeff)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < FIELD_EFFECT_COUNT; i++)
|
||||
{
|
||||
if (sFieldEffectActiveList[i] == fldeff)
|
||||
{
|
||||
sFieldEffectActiveList[i] = 0xFF;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool8 FieldEffectActiveListContains(u8 fldeff)
|
||||
{
|
||||
u8 i;
|
||||
for (i = 0; i < FIELD_EFFECT_COUNT; i++)
|
||||
{
|
||||
if (sFieldEffectActiveList[i] == fldeff)
|
||||
{
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
+1
-1
@@ -946,7 +946,7 @@ void sub_8059948(u8 a0, u8 a1)
|
||||
TintPalette_SepiaTone(gPlttBufferUnfaded + a0 * 16, a1 * 16);
|
||||
break;
|
||||
case 3:
|
||||
sub_8111F38(a0 * 16, a1 * 16);
|
||||
sub_8111F38((a0 * 16), a1 * 16);
|
||||
TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
|
||||
break;
|
||||
default:
|
||||
|
||||
+1
-3
@@ -60,10 +60,8 @@ gUnknown_3000EA0: @ 3000EA0
|
||||
.include "src/tileset_anims.o"
|
||||
.align 2
|
||||
.include "src/sound.o"
|
||||
|
||||
.align 2
|
||||
gUnknown_3000FC8: @ 3000FC8
|
||||
.space 0x20
|
||||
.include "src/field_effect.o"
|
||||
|
||||
gUnknown_3000FE8: @ 3000FE8
|
||||
.space 0x184
|
||||
|
||||
Reference in New Issue
Block a user