diff options
author | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-11-19 00:20:19 -0800 |
---|---|---|
committer | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-11-19 00:20:19 -0800 |
commit | 557fd1958dca6dfed792e584bd16e47282697963 (patch) | |
tree | 9126d1eebc51c569892188132132ce8f342b73b7 | |
parent | 9baa39f7082acfb1eb8b75603e440773504ad206 (diff) |
decompile fldeff_poison
-rwxr-xr-x | asm/fldeff_poison.s | 99 | ||||
-rw-r--r-- | ld_script.txt | 2 | ||||
-rw-r--r-- | src/field/fldeff_poison.c | 43 |
3 files changed, 44 insertions, 100 deletions
diff --git a/asm/fldeff_poison.s b/asm/fldeff_poison.s deleted file mode 100755 index e76ccba05..000000000 --- a/asm/fldeff_poison.s +++ /dev/null @@ -1,99 +0,0 @@ - .include "constants/gba_constants.inc" - .include "constants/species_constants.inc" - .include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start Task_FieldPoisonEffect -Task_FieldPoisonEffect: @ 80C7008 - push {lr} - lsls r0, 24 - lsrs r2, r0, 24 - lsls r0, r2, 2 - adds r0, r2 - lsls r0, 3 - ldr r1, _080C702C @ =gTasks + 0x8 - adds r1, r0, r1 - movs r3, 0 - ldrsh r0, [r1, r3] - cmp r0, 0x1 - beq _080C7046 - cmp r0, 0x1 - bgt _080C7030 - cmp r0, 0 - beq _080C7036 - b _080C7062 - .align 2, 0 -_080C702C: .4byte gTasks + 0x8 -_080C7030: - cmp r0, 0x2 - beq _080C705A - b _080C7062 -_080C7036: - ldrh r0, [r1, 0x2] - adds r0, 0x2 - strh r0, [r1, 0x2] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - ble _080C7062 - b _080C7052 -_080C7046: - ldrh r0, [r1, 0x2] - subs r0, 0x2 - strh r0, [r1, 0x2] - lsls r0, 16 - cmp r0, 0 - bne _080C7062 -_080C7052: - ldrh r0, [r1] - adds r0, 0x1 - strh r0, [r1] - b _080C7062 -_080C705A: - adds r0, r2, 0 - bl DestroyTask - b _080C706C -_080C7062: - ldr r2, _080C7070 @ =REG_MOSAIC - ldrh r1, [r1, 0x2] - lsls r0, r1, 4 - orrs r0, r1 - strh r0, [r2] -_080C706C: - pop {r0} - bx r0 - .align 2, 0 -_080C7070: .4byte REG_MOSAIC - thumb_func_end Task_FieldPoisonEffect - - thumb_func_start DoFieldPoisonEffect -DoFieldPoisonEffect: @ 80C7074 - push {lr} - movs r0, 0x4F - bl PlaySE - ldr r0, _080C7088 @ =Task_FieldPoisonEffect - movs r1, 0x50 - bl CreateTask - pop {r0} - bx r0 - .align 2, 0 -_080C7088: .4byte Task_FieldPoisonEffect - thumb_func_end DoFieldPoisonEffect - - thumb_func_start FieldPoisonEffectIsRunning -FieldPoisonEffectIsRunning: @ 80C708C - push {lr} - ldr r0, _080C709C @ =Task_FieldPoisonEffect - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - pop {r1} - bx r1 - .align 2, 0 -_080C709C: .4byte Task_FieldPoisonEffect - thumb_func_end FieldPoisonEffectIsRunning - - .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 100afadf9..773714819 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -162,7 +162,7 @@ SECTIONS { asm/fldeff_secretpower.o(.text); asm/fldeff_pc.o(.text); asm/fldeff_decoration.o(.text); - asm/fldeff_poison.o(.text); + src/field/fldeff_poison.o(.text); asm/fldeff_berrytree.o(.text); src/field/fldeff_recordmixing.o(.text); src/field/field_special_scene.o(.text); diff --git a/src/field/fldeff_poison.c b/src/field/fldeff_poison.c new file mode 100644 index 000000000..b751ee564 --- /dev/null +++ b/src/field/fldeff_poison.c @@ -0,0 +1,43 @@ +#include "global.h" +#include "task.h" +#include "songs.h" +#include "sound.h" + +static void Task_FieldPoisonEffect(u8 taskId) +{ + s16 *data = gTasks[taskId].data; + + switch (data[0]) + { + case 0: + data[1] += 2; + if (data[1] > 8) + { + data[0]++; + } + break; + case 1: + data[1] -= 2; + if (data[1] == 0) + { + data[0]++; + } + break; + case 2: + DestroyTask(taskId); + return; + } + + REG_MOSAIC = (data[1] << 4) | data[1]; +} + +void DoFieldPoisonEffect() +{ + PlaySE(SE_DOKU); + CreateTask(Task_FieldPoisonEffect, 80); +} + +bool8 FieldPoisonEffectIsRunning(void) +{ + return FuncIsActiveTask(Task_FieldPoisonEffect); +} |