diff options
Diffstat (limited to 'asm/field_screen_effect.s')
-rw-r--r-- | asm/field_screen_effect.s | 789 |
1 files changed, 789 insertions, 0 deletions
diff --git a/asm/field_screen_effect.s b/asm/field_screen_effect.s new file mode 100644 index 000000000..4fbfae1a2 --- /dev/null +++ b/asm/field_screen_effect.s @@ -0,0 +1,789 @@ + .include "constants/gba_constants.inc" + .include "constants/species_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start sub_808136C +sub_808136C: @ 808136C + push {lr} + cmp r1, 0xA0 + bhi _08081394 + cmp r2, 0 + bge _08081378 + movs r2, 0 +_08081378: + cmp r2, 0xFF + ble _0808137E + movs r2, 0xFF +_0808137E: + cmp r3, 0 + bge _08081384 + movs r3, 0 +_08081384: + cmp r3, 0xFF + ble _0808138A + movs r3, 0xFF +_0808138A: + lsls r1, 1 + adds r1, r0 + lsls r0, r2, 8 + orrs r0, r3 + strh r0, [r1] +_08081394: + pop {r0} + bx r0 + thumb_func_end sub_808136C + + thumb_func_start sub_8081398 +sub_8081398: @ 8081398 + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + str r0, [sp] + mov r10, r1 + mov r9, r2 + adds r6, r3, 0 + mov r8, r6 + movs r7, 0 + cmp r6, 0 + blt _08081414 +_080813B4: + mov r0, r9 + subs r1, r0, r7 + mov r0, r10 + subs r4, r0, r6 + adds r5, r0, r6 + ldr r0, [sp] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_808136C + mov r0, r9 + adds r1, r0, r7 + ldr r0, [sp] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_808136C + mov r0, r9 + subs r1, r0, r6 + mov r0, r10 + subs r4, r0, r7 + adds r5, r0, r7 + ldr r0, [sp] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_808136C + mov r0, r9 + adds r1, r0, r6 + ldr r0, [sp] + adds r2, r4, 0 + adds r3, r5, 0 + bl sub_808136C + mov r1, r8 + adds r1, 0x1 + lsls r0, r7, 1 + subs r1, r0 + mov r8, r1 + adds r7, 0x1 + cmp r1, 0 + bge _08081410 + subs r1, r6, 0x1 + lsls r0, r1, 1 + add r8, r0 + adds r6, r1, 0 +_08081410: + cmp r6, r7 + bge _080813B4 +_08081414: + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8081398 + + thumb_func_start sub_8081424 +sub_8081424: @ 8081424 + push {r4-r6,lr} + lsls r0, 24 + lsrs r5, r0, 24 + lsls r0, r5, 2 + adds r0, r5 + lsls r0, 3 + ldr r1, _08081448 @ =gTasks + 0x8 + adds r4, r0, r1 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0x1 + beq _08081480 + cmp r0, 0x1 + bgt _0808144C + cmp r0, 0 + beq _08081452 + b _080814E2 + .align 2, 0 +_08081448: .4byte gTasks + 0x8 +_0808144C: + cmp r0, 0x2 + beq _080814D8 + b _080814E2 +_08081452: + ldr r0, _08081478 @ =gUnknown_03004DC0 + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + ldr r1, _0808147C @ =gUnknown_03004DE0 + adds r0, r1 + movs r2, 0x2 + ldrsh r1, [r4, r2] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r5, 0x6 + ldrsh r3, [r4, r5] + bl sub_8081398 + movs r0, 0x1 + strh r0, [r4] + b _080814E2 + .align 2, 0 +_08081478: .4byte gUnknown_03004DC0 +_0808147C: .4byte gUnknown_03004DE0 +_08081480: + ldr r0, _080814C8 @ =gUnknown_03004DC0 + ldrb r1, [r0, 0x14] + lsls r0, r1, 4 + subs r0, r1 + lsls r0, 7 + ldr r1, _080814CC @ =gUnknown_03004DE0 + adds r0, r1 + movs r6, 0x2 + ldrsh r1, [r4, r6] + movs r3, 0x4 + ldrsh r2, [r4, r3] + movs r6, 0x6 + ldrsh r3, [r4, r6] + bl sub_8081398 + movs r0, 0 + strh r0, [r4] + ldrh r0, [r4, 0xA] + ldrh r1, [r4, 0x6] + adds r0, r1 + strh r0, [r4, 0x6] + lsls r0, 16 + asrs r0, 16 + movs r2, 0x8 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080814E2 + movs r3, 0xC + ldrsh r0, [r4, r3] + cmp r0, 0x1 + bne _080814D0 + bl remove_some_task + movs r0, 0x2 + strh r0, [r4] + b _080814E2 + .align 2, 0 +_080814C8: .4byte gUnknown_03004DC0 +_080814CC: .4byte gUnknown_03004DE0 +_080814D0: + adds r0, r5, 0 + bl DestroyTask + b _080814E2 +_080814D8: + bl dp12_8087EA4 + adds r0, r5, 0 + bl DestroyTask +_080814E2: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8081424 + + thumb_func_start sub_80814E8 +sub_80814E8: @ 80814E8 + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r0, _0808150C @ =sub_8081424 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _08081504 + bl EnableBothScriptContexts + adds r0, r4, 0 + bl DestroyTask +_08081504: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0808150C: .4byte sub_8081424 + thumb_func_end sub_80814E8 + + thumb_func_start sub_8081510 +sub_8081510: @ 8081510 + push {r4,lr} + ldr r4, _08081530 @ =sub_80814E8 + adds r0, r4, 0 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _08081528 + adds r0, r4, 0 + movs r1, 0x50 + bl CreateTask +_08081528: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081530: .4byte sub_80814E8 + thumb_func_end sub_8081510 + + thumb_func_start sub_8081534 +sub_8081534: @ 8081534 + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + mov r8, r0 + mov r9, r1 + adds r5, r2, 0 + adds r4, r3, 0 + ldr r6, [sp, 0x1C] + ldr r0, [sp, 0x20] + lsls r0, 24 + lsrs r7, r0, 24 + ldr r0, _08081578 @ =sub_8081424 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r2, r0, 24 + lsls r0, r2, 2 + adds r0, r2 + lsls r0, 3 + ldr r1, _0808157C @ =gTasks + 0x8 + adds r1, r0, r1 + strh r5, [r1, 0x6] + strh r4, [r1, 0x8] + mov r0, r8 + strh r0, [r1, 0x2] + mov r0, r9 + strh r0, [r1, 0x4] + strh r6, [r1, 0xC] + cmp r5, r4 + bge _08081580 + strh r7, [r1, 0xA] + b _08081584 + .align 2, 0 +_08081578: .4byte sub_8081424 +_0808157C: .4byte gTasks + 0x8 +_08081580: + negs r0, r7 + strh r0, [r1, 0xA] +_08081584: + adds r0, r2, 0 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8081534 + + thumb_func_start sub_8081594 +sub_8081594: @ 8081594 + push {r4,r5,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r0, 24 + adds r4, r0, 0 + bl sav1_get_flash_used_on_map + lsls r0, 24 + lsrs r0, 24 + movs r5, 0 + cmp r4, 0 + bne _080815AE + movs r5, 0x1 +_080815AE: + ldr r1, _080815DC @ =gUnknown_0839ACDC + lsls r0, 1 + adds r0, r1 + ldrh r2, [r0] + lsls r0, r4, 1 + adds r0, r1 + ldrh r3, [r0] + str r5, [sp] + movs r0, 0x1 + str r0, [sp, 0x4] + movs r0, 0x78 + movs r1, 0x50 + bl sub_8081534 + bl sub_8081510 + bl ScriptContext2_Enable + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080815DC: .4byte gUnknown_0839ACDC + thumb_func_end sub_8081594 + + thumb_func_start sub_80815E0 +sub_80815E0: @ 80815E0 + push {r4,lr} + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0 + beq _0808160E + ldr r4, _08081614 @ =gUnknown_03004DE0 + ldr r1, _08081618 @ =gUnknown_0839ACDC + lsls r0, 1 + adds r0, r1 + ldrh r3, [r0] + adds r0, r4, 0 + movs r1, 0x78 + movs r2, 0x50 + bl sub_8081398 + movs r0, 0xF0 + lsls r0, 3 + adds r1, r4, r0 + movs r2, 0xF0 + lsls r2, 1 + adds r0, r4, 0 + bl CpuFastSet +_0808160E: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08081614: .4byte gUnknown_03004DE0 +_08081618: .4byte gUnknown_0839ACDC + thumb_func_end sub_80815E0 + + thumb_func_start sub_808161C +sub_808161C: @ 808161C + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 24 + cmp r0, 0 + bne _0808162A + movs r1, 0x1F + b _08081630 +_0808162A: + movs r0, 0xF8 + lsls r0, 7 + adds r1, r0, 0 +_08081630: + mov r0, sp + strh r1, [r0] + movs r5, 0 + movs r4, 0xF0 + lsls r4, 16 +_0808163A: + lsrs r1, r4, 16 + mov r0, sp + movs r2, 0x2 + bl LoadPalette + movs r0, 0x80 + lsls r0, 9 + adds r4, r0 + adds r5, 0x1 + cmp r5, 0xF + ble _0808163A + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_808161C + + thumb_func_start sub_8081658 +sub_8081658: @ 8081658 + push {lr} + lsls r0, 16 + ldr r2, _08081678 @ =REG_BLDALPHA + ldrh r1, [r2] + lsls r1, 24 + lsrs r3, r1, 24 + ldrh r1, [r2] + lsrs r2, r1, 8 + cmp r0, 0 + beq _0808167C + cmp r3, 0 + beq _08081686 + subs r0, r3, 0x1 + lsls r0, 24 + lsrs r3, r0, 24 + b _08081686 + .align 2, 0 +_08081678: .4byte REG_BLDALPHA +_0808167C: + cmp r2, 0xF + bhi _08081686 + adds r0, r2, 0x1 + lsls r0, 24 + lsrs r2, r0, 24 +_08081686: + ldr r1, _0808169C @ =REG_BLDALPHA + lsls r0, r2, 8 + orrs r0, r3 + strh r0, [r1] + cmp r3, 0 + bne _080816A0 + cmp r2, 0x10 + bne _080816A0 + movs r0, 0x1 + b _080816A2 + .align 2, 0 +_0808169C: .4byte REG_BLDALPHA +_080816A0: + movs r0, 0 +_080816A2: + pop {r1} + bx r1 + thumb_func_end sub_8081658 + + thumb_func_start sub_80816A8 +sub_80816A8: @ 80816A8 + push {r4-r7,lr} + sub sp, 0x8 + lsls r0, 24 + lsrs r4, r0, 24 + lsls r0, r4, 2 + adds r0, r4 + lsls r0, 3 + ldr r1, _080816D0 @ =gTasks + 0x8 + adds r7, r0, r1 + movs r1, 0 + ldrsh r0, [r7, r1] + cmp r0, 0x7 + bls _080816C4 + b _08081892 +_080816C4: + lsls r0, 2 + ldr r1, _080816D4 @ =_080816D8 + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080816D0: .4byte gTasks + 0x8 +_080816D4: .4byte _080816D8 + .align 2, 0 +_080816D8: + .4byte _080816F8 + .4byte _08081790 + .4byte _080817BC + .4byte _080817D8 + .4byte _080817EE + .4byte _08081852 + .4byte _08081818 + .4byte _08081826 +_080816F8: + movs r2, 0x80 + lsls r2, 19 + ldrh r0, [r2] + strh r0, [r7, 0xC] + ldr r3, _0808176C @ =REG_BLDCNT + ldrh r0, [r3] + strh r0, [r7, 0xE] + ldr r6, _08081770 @ =REG_BLDALPHA + ldrh r0, [r6] + strh r0, [r7, 0x10] + ldr r5, _08081774 @ =REG_WININ + ldrh r0, [r5] + strh r0, [r7, 0x12] + ldr r4, _08081778 @ =REG_WINOUT + ldrh r0, [r4] + strh r0, [r7, 0x14] + ldrh r1, [r2] + ldr r0, _0808177C @ =0x0000bfff + ands r0, r1 + strh r0, [r2] + ldr r1, _08081780 @ =gUnknown_081E29E8 + ldrh r0, [r3] + ldrh r1, [r1] + orrs r0, r1 + strh r0, [r3] + ldr r2, _08081784 @ =0x0000070c + adds r0, r2, 0 + strh r0, [r6] + movs r0, 0x3F + strh r0, [r5] + movs r0, 0x1E + strh r0, [r4] + ldr r4, _08081788 @ =gUnknown_03004DE0 + movs r0, 0x4 + ldrsh r1, [r7, r0] + movs r0, 0x6 + ldrsh r2, [r7, r0] + adds r0, r4, 0 + movs r3, 0x1 + bl sub_8081398 + movs r2, 0xF0 + lsls r2, 3 + adds r1, r4, r2 + movs r2, 0xF0 + lsls r2, 1 + adds r0, r4, 0 + bl CpuFastSet + ldr r2, _0808178C @ =gUnknown_0839ACEC + ldr r0, [r2] + ldr r1, [r2, 0x4] + ldr r2, [r2, 0x8] + bl sub_80895F8 + movs r0, 0x1 + strh r0, [r7] + b _08081892 + .align 2, 0 +_0808176C: .4byte REG_BLDCNT +_08081770: .4byte REG_BLDALPHA +_08081774: .4byte REG_WININ +_08081778: .4byte REG_WINOUT +_0808177C: .4byte 0x0000bfff +_08081780: .4byte gUnknown_081E29E8 +_08081784: .4byte 0x0000070c +_08081788: .4byte gUnknown_03004DE0 +_0808178C: .4byte gUnknown_0839ACEC +_08081790: + movs r0, 0 + movs r1, 0 + movs r2, 0x1D + movs r3, 0x13 + bl MenuFillWindowRectWithBlankTile + ldrb r0, [r7, 0x2] + bl sub_808161C + movs r1, 0x4 + ldrsh r0, [r7, r1] + movs r2, 0x6 + ldrsh r1, [r7, r2] + movs r2, 0x1 + str r2, [sp] + movs r4, 0x2 + str r4, [sp, 0x4] + movs r3, 0xA0 + bl sub_8081534 + strh r4, [r7] + b _08081892 +_080817BC: + ldr r0, _080817D4 @ =sub_8081424 + bl FuncIsActiveTask + lsls r0, 24 + cmp r0, 0 + bne _08081892 + bl EnableBothScriptContexts + movs r0, 0x3 + strh r0, [r7] + b _08081892 + .align 2, 0 +_080817D4: .4byte sub_8081424 +_080817D8: + bl InstallCameraPanAheadCallback + movs r0, 0 + bl SetCameraPanningCallback + movs r0, 0 + strh r0, [r7, 0xA] + movs r0, 0x4 + strh r0, [r7, 0x8] + strh r0, [r7] + b _08081892 +_080817EE: + ldrh r0, [r7, 0x8] + subs r0, 0x1 + strh r0, [r7, 0x8] + lsls r0, 16 + cmp r0, 0 + bne _08081892 + movs r0, 0x4 + strh r0, [r7, 0x8] + ldrh r0, [r7, 0xA] + movs r1, 0x1 + eors r0, r1 + strh r0, [r7, 0xA] + movs r1, 0x4 + negs r1, r1 + cmp r0, 0 + beq _08081810 + movs r1, 0x4 +_08081810: + movs r0, 0 + bl SetCameraPanning + b _08081892 +_08081818: + bl InstallCameraPanAheadCallback + movs r0, 0x8 + strh r0, [r7, 0x8] + movs r0, 0x7 + strh r0, [r7] + b _08081892 +_08081826: + ldrh r0, [r7, 0x8] + subs r0, 0x1 + strh r0, [r7, 0x8] + lsls r0, 16 + cmp r0, 0 + bne _08081892 + movs r0, 0x8 + strh r0, [r7, 0x8] + ldrh r0, [r7, 0xA] + movs r1, 0x1 + eors r0, r1 + strh r0, [r7, 0xA] + ldrh r0, [r7, 0xA] + bl sub_8081658 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08081892 + movs r0, 0x5 + strh r0, [r7] + b _08081892 +_08081852: + movs r0, 0 + movs r1, 0 + movs r2, 0x1D + movs r3, 0x13 + bl MenuZeroFillWindowRect + ldr r0, _0808189C @ =gWindowConfig_81E6CE4 + bl LoadFontDefaultPalette + ldr r1, _080818A0 @ =REG_WIN0H + movs r0, 0xFF + strh r0, [r1] + subs r1, 0x40 + ldrh r0, [r7, 0xC] + strh r0, [r1] + adds r1, 0x50 + ldrh r0, [r7, 0xE] + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r7, 0x10] + strh r0, [r1] + subs r1, 0xA + ldrh r0, [r7, 0x12] + strh r0, [r1] + adds r1, 0x2 + ldrh r0, [r7, 0x14] + strh r0, [r1] + bl EnableBothScriptContexts + adds r0, r4, 0 + bl DestroyTask +_08081892: + add sp, 0x8 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0808189C: .4byte gWindowConfig_81E6CE4 +_080818A0: .4byte REG_WIN0H + thumb_func_end sub_80816A8 + + thumb_func_start sub_80818A4 +sub_80818A4: @ 80818A4 + push {lr} + ldr r0, _080818CC @ =sub_80816A8 + movs r1, 0x50 + bl CreateTask + lsls r0, 24 + lsrs r0, 24 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + ldr r0, _080818D0 @ =gTasks + 0x8 + adds r1, r0 + ldr r0, _080818D4 @ =gScriptResult + ldrh r0, [r0] + cmp r0, 0 + bne _080818D8 + strh r0, [r1, 0x2] + movs r0, 0x68 + b _080818F0 + .align 2, 0 +_080818CC: .4byte sub_80816A8 +_080818D0: .4byte gTasks + 0x8 +_080818D4: .4byte gScriptResult +_080818D8: + cmp r0, 0x1 + bne _080818E2 + strh r0, [r1, 0x2] + movs r0, 0x68 + b _080818F0 +_080818E2: + cmp r0, 0x2 + bne _080818EA + movs r0, 0 + b _080818EC +_080818EA: + movs r0, 0x1 +_080818EC: + strh r0, [r1, 0x2] + movs r0, 0x78 +_080818F0: + strh r0, [r1, 0x4] + movs r0, 0x50 + strh r0, [r1, 0x6] + pop {r0} + bx r0 + thumb_func_end sub_80818A4 + + thumb_func_start sub_80818FC +sub_80818FC: @ 80818FC + push {lr} + ldr r0, _0808191C @ =sub_80816A8 + bl FindTaskIdByFunc + lsls r0, 24 + lsrs r0, 24 + ldr r2, _08081920 @ =gTasks + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 3 + adds r1, r2 + movs r0, 0x6 + strh r0, [r1, 0x8] + pop {r0} + bx r0 + .align 2, 0 +_0808191C: .4byte sub_80816A8 +_08081920: .4byte gTasks + thumb_func_end sub_80818FC + + thumb_func_start sub_8081924 +sub_8081924: @ 8081924 + push {lr} + bl sub_8054044 + ldr r0, _08081938 @ =task50_0807F0C8 + movs r1, 0x50 + bl CreateTask + pop {r0} + bx r0 + .align 2, 0 +_08081938: .4byte task50_0807F0C8 + thumb_func_end sub_8081924 + + thumb_func_start task50_0807F0C8 +task50_0807F0C8: @ 808193C + push {r4,lr} + lsls r0, 24 + lsrs r4, r0, 24 + bl sub_8054034 + lsls r0, 24 + lsrs r0, 24 + cmp r0, 0x1 + bne _08081958 + adds r0, r4, 0 + bl DestroyTask + bl EnableBothScriptContexts +_08081958: + pop {r4} + pop {r0} + bx r0 + thumb_func_end task50_0807F0C8 + + .align 2, 0 @ Don't pad with nop. |