summaryrefslogtreecommitdiff
path: root/asm/field_effect.s
diff options
context:
space:
mode:
Diffstat (limited to 'asm/field_effect.s')
-rw-r--r--asm/field_effect.s491
1 files changed, 491 insertions, 0 deletions
diff --git a/asm/field_effect.s b/asm/field_effect.s
new file mode 100644
index 000000000..736b2ad77
--- /dev/null
+++ b/asm/field_effect.s
@@ -0,0 +1,491 @@
+ .include "constants/gba_constants.s"
+ .include "constants/species_constants.s"
+ .include "asm/macros.s"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start FieldEffectStart
+FieldEffectStart: @ 8085668
+ 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, _080856A8
+ lsls r4, 2
+ adds r4, r0
+ ldr r0, [r4]
+ str r0, [sp]
+ add r4, sp, 0x4
+ ldr r5, _080856AC
+_08085686:
+ 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 _08085686
+ ldr r0, [sp, 0x4]
+ add sp, 0x8
+ pop {r4,r5}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080856A8: .4byte gFieldEffectScriptPointers
+_080856AC: .4byte gUnknown_0839F0D4
+ thumb_func_end FieldEffectStart
+
+ thumb_func_start FieldEffectCmd_loadtiles
+FieldEffectCmd_loadtiles: @ 80856B0
+ 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: @ 80856C4
+ push {lr}
+ ldr r1, [r0]
+ adds r1, 0x1
+ str r1, [r0]
+ bl FieldEffectScript_LoadFadedPalette
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end FieldEffectCmd_loadfadedpal
+
+ thumb_func_start FieldEffectCmd_loadpal
+FieldEffectCmd_loadpal: @ 80856D8
+ push {lr}
+ ldr r1, [r0]
+ adds r1, 0x1
+ str r1, [r0]
+ bl FieldEffectScript_LoadPalette
+ movs r0, 0x1
+ pop {r1}
+ bx r1
+ thumb_func_end FieldEffectCmd_loadpal
+
+ thumb_func_start FieldEffectCmd_callnative
+FieldEffectCmd_callnative: @ 80856EC
+ 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_8085700
+sub_8085700: @ 8085700
+ movs r0, 0
+ bx lr
+ thumb_func_end sub_8085700
+
+ thumb_func_start FieldEffectCmd_loadgfx_callnative
+FieldEffectCmd_loadgfx_callnative: @ 8085704
+ 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 FieldEffectScript_LoadFadedPalette
+ 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: @ 808572C
+ 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: @ 8085750
+ 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_LoadFadedPalette
+ 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: @ 8085774
+ 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: @ 808578C
+ 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, _080857B8
+ cmp r0, r1
+ bne _080857AA
+ adds r0, r5, 0
+ bl LoadSpriteSheet
+_080857AA:
+ ldr r0, [r4]
+ adds r0, 0x4
+ str r0, [r4]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080857B8: .4byte 0xffff0000
+ thumb_func_end FieldEffectScript_LoadTiles
+
+ thumb_func_start FieldEffectScript_LoadFadedPalette
+FieldEffectScript_LoadFadedPalette: @ 80857BC
+ push {r4,r5,lr}
+ adds r5, r0, 0
+ bl FieldEffectScript_ReadWord
+ adds r4, r0, 0
+ bl LoadSpritePalette
+ ldrh r0, [r4, 0x4]
+ bl IndexOfSpritePaletteTag
+ lsls r0, 24
+ lsrs r0, 24
+ bl sub_807D78C
+ ldr r0, [r5]
+ adds r0, 0x4
+ str r0, [r5]
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldEffectScript_LoadFadedPalette
+
+ thumb_func_start FieldEffectScript_LoadPalette
+FieldEffectScript_LoadPalette: @ 80857E4
+ push {r4,lr}
+ adds r4, r0, 0
+ bl FieldEffectScript_ReadWord
+ bl LoadSpritePalette
+ ldr r0, [r4]
+ adds r0, 0x4
+ str r0, [r4]
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldEffectScript_LoadPalette
+
+ thumb_func_start FieldEffectScript_CallNative
+FieldEffectScript_CallNative: @ 80857FC
+ 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: @ 8085818
+ 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: @ 808583C
+ 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: @ 8085854
+ 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, _080858B0
+ cmp r3, r0
+ beq _080858A8
+ movs r2, 0
+ ldr r5, _080858B4
+_0808586E:
+ 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 _08085898
+ adds r0, r1, 0
+ adds r0, 0x3F
+ ldrb r0, [r0]
+ lsls r0, 25
+ cmp r0, 0
+ bge _08085898
+ adds r0, r1, 0
+ adds r0, 0x40
+ ldrh r0, [r0]
+ cmp r4, r0
+ beq _080858A8
+_08085898:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x3F
+ bls _0808586E
+ adds r0, r3, 0
+ bl FreeSpriteTilesByTag
+_080858A8:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080858B0: .4byte 0x0000ffff
+_080858B4: .4byte gSprites
+ thumb_func_end FieldEffectFreeTilesIfUnused
+
+ thumb_func_start FieldEffectFreePaletteIfUnused
+FieldEffectFreePaletteIfUnused: @ 80858B8
+ 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, _08085908
+ cmp r5, r0
+ beq _08085900
+ movs r2, 0
+ ldr r6, _0808590C
+ adds r3, r4, 0
+_080858D4:
+ 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 _080858F0
+ ldrb r0, [r1, 0x5]
+ lsrs r0, 4
+ cmp r0, r3
+ beq _08085900
+_080858F0:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x3F
+ bls _080858D4
+ adds r0, r5, 0
+ bl FreeSpritePaletteByTag
+_08085900:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08085908: .4byte 0x0000ffff
+_0808590C: .4byte gSprites
+ thumb_func_end FieldEffectFreePaletteIfUnused
+
+ thumb_func_start FieldEffectActiveListClear
+FieldEffectActiveListClear: @ 8085910
+ push {r4,lr}
+ movs r2, 0
+ ldr r4, _08085930
+ movs r3, 0xFF
+_08085918:
+ 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 _08085918
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08085930: .4byte gUnknown_030006E0
+ thumb_func_end FieldEffectActiveListClear
+
+ thumb_func_start FieldEffectActiveListAdd
+FieldEffectActiveListAdd: @ 8085934
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ movs r2, 0
+ ldr r4, _0808594C
+_0808593E:
+ adds r1, r2, r4
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ bne _08085950
+ strb r3, [r1]
+ b _0808595A
+ .align 2, 0
+_0808594C: .4byte gUnknown_030006E0
+_08085950:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x1F
+ bls _0808593E
+_0808595A:
+ pop {r4}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldEffectActiveListAdd
+
+ thumb_func_start FieldEffectActiveListRemove
+FieldEffectActiveListRemove: @ 8085960
+ push {r4,r5,lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ movs r2, 0
+ ldr r4, _0808597C
+ movs r5, 0xFF
+_0808596C:
+ adds r1, r2, r4
+ ldrb r0, [r1]
+ cmp r0, r3
+ bne _08085980
+ orrs r0, r5
+ strb r0, [r1]
+ b _0808598A
+ .align 2, 0
+_0808597C: .4byte gUnknown_030006E0
+_08085980:
+ adds r0, r2, 0x1
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x1F
+ bls _0808596C
+_0808598A:
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end FieldEffectActiveListRemove
+
+ thumb_func_start FieldEffectActiveListContains
+FieldEffectActiveListContains: @ 8085990
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ movs r1, 0
+ ldr r3, _080859A8
+_0808599A:
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ cmp r0, r2
+ bne _080859AC
+ movs r0, 0x1
+ b _080859B8
+ .align 2, 0
+_080859A8: .4byte gUnknown_030006E0
+_080859AC:
+ adds r0, r1, 0x1
+ lsls r0, 24
+ lsrs r1, r0, 24
+ cmp r1, 0x1F
+ bls _0808599A
+ movs r0, 0
+_080859B8:
+ pop {r1}
+ bx r1
+ thumb_func_end FieldEffectActiveListContains
+
+ .align 2, 0 @ Don't pad with nop.