Decompile fldeff hooks
This commit is contained in:
@@ -5,582 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.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
|
thumb_func_start CreateTrainerSprite
|
||||||
CreateTrainerSprite: @ 8083858
|
CreateTrainerSprite: @ 8083858
|
||||||
push {r4-r7,lr}
|
push {r4-r7,lr}
|
||||||
|
|||||||
+2
-2
@@ -49,12 +49,12 @@ gUnknown_83CBDB0::
|
|||||||
.incbin "graphics/field_effects/unk_83CBDB0.4bpp"
|
.incbin "graphics/field_effects/unk_83CBDB0.4bpp"
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
gUnknown_83CBE30:: @ 83CBE30 dataptr
|
sFldEffScrcmdTable:: @ 83CBE30 dataptr
|
||||||
.4byte FieldEffectCmd_loadtiles
|
.4byte FieldEffectCmd_loadtiles
|
||||||
.4byte FieldEffectCmd_loadfadedpal
|
.4byte FieldEffectCmd_loadfadedpal
|
||||||
.4byte FieldEffectCmd_loadpal
|
.4byte FieldEffectCmd_loadpal
|
||||||
.4byte FieldEffectCmd_callnative
|
.4byte FieldEffectCmd_callnative
|
||||||
.4byte sub_80834DC
|
.4byte FieldEffectCmd_end
|
||||||
.4byte FieldEffectCmd_loadgfx_callnative
|
.4byte FieldEffectCmd_loadgfx_callnative
|
||||||
.4byte FieldEffectCmd_loadtiles_callnative
|
.4byte FieldEffectCmd_loadtiles_callnative
|
||||||
.4byte FieldEffectCmd_loadfadedpal_callnative
|
.4byte FieldEffectCmd_loadfadedpal_callnative
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
.include "asm/macros/field_effect_script.inc"
|
.include "asm/macros/field_effect_script.inc"
|
||||||
.section script_data, "aw", %progbits
|
.section script_data, "aw", %progbits
|
||||||
.align 2
|
.align 2
|
||||||
gUnknown_81D96AC:: @ 81D96AC
|
gFieldEffectScriptPointers:: @ 81D96AC
|
||||||
.4byte gFldEffScript_ExclamationMarkIcon
|
.4byte gFldEffScript_ExclamationMarkIcon
|
||||||
.4byte gFldEffScript_UseCutOnGrass
|
.4byte gFldEffScript_UseCutOnGrass
|
||||||
.4byte gFldEffScript_UseCutOnTree
|
.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);
|
void sub_807B070(void);
|
||||||
u8 GetCurrentWeather(void);
|
u8 GetCurrentWeather(void);
|
||||||
void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32);
|
void FieldWeather_StartFadingOutCreditsMap(u8, u8, u32);
|
||||||
|
void sub_807AA8C(u8 palIdx);
|
||||||
|
|
||||||
#endif // GUARD_WEATHER_H
|
#endif // GUARD_WEATHER_H
|
||||||
|
|||||||
+1
-1
@@ -29,7 +29,7 @@ void sub_811539C(void);
|
|||||||
void sub_8115748(u16);
|
void sub_8115748(u16);
|
||||||
u8 sub_8112CAC(void);
|
u8 sub_8112CAC(void);
|
||||||
bool8 QuestLog_SchedulePlaybackCB(void (*func)(void));
|
bool8 QuestLog_SchedulePlaybackCB(void (*func)(void));
|
||||||
void sub_8111F38(u16, u16);
|
void sub_8111F38(u16 offset, u16 idx);
|
||||||
void sub_8111134(void);
|
void sub_8111134(void);
|
||||||
void DestroyHelpMessageWindow(u8 a0);
|
void DestroyHelpMessageWindow(u8 a0);
|
||||||
u8 CreateHelpMessageWindow(void);
|
u8 CreateHelpMessageWindow(void);
|
||||||
|
|||||||
@@ -123,6 +123,7 @@ SECTIONS {
|
|||||||
asm/cable_club.o(.text);
|
asm/cable_club.o(.text);
|
||||||
src/trainer_see.o(.text);
|
src/trainer_see.o(.text);
|
||||||
src/wild_encounter.o(.text);
|
src/wild_encounter.o(.text);
|
||||||
|
src/field_effect.o(.text);
|
||||||
asm/field_effect.o(.text);
|
asm/field_effect.o(.text);
|
||||||
src/scanline_effect.o(.text);
|
src/scanline_effect.o(.text);
|
||||||
src/option_menu.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);
|
TintPalette_SepiaTone(gPlttBufferUnfaded + a0 * 16, a1 * 16);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
sub_8111F38(a0 * 16, a1 * 16);
|
sub_8111F38((a0 * 16), a1 * 16);
|
||||||
TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
|
TintPalette_GrayScale(gPlttBufferUnfaded + a0 * 16, a1 * 16);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|||||||
+1
-3
@@ -60,10 +60,8 @@ gUnknown_3000EA0: @ 3000EA0
|
|||||||
.include "src/tileset_anims.o"
|
.include "src/tileset_anims.o"
|
||||||
.align 2
|
.align 2
|
||||||
.include "src/sound.o"
|
.include "src/sound.o"
|
||||||
|
|
||||||
.align 2
|
.align 2
|
||||||
gUnknown_3000FC8: @ 3000FC8
|
.include "src/field_effect.o"
|
||||||
.space 0x20
|
|
||||||
|
|
||||||
gUnknown_3000FE8: @ 3000FE8
|
gUnknown_3000FE8: @ 3000FE8
|
||||||
.space 0x184
|
.space 0x184
|
||||||
|
|||||||
Reference in New Issue
Block a user