diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-06-26 22:15:36 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-06-26 22:15:36 -0400 |
commit | b8c5ff4a42662ca8810d10e2509cff7923d73d08 (patch) | |
tree | 93f7faef8779feb49f7185d8b1d0e05553ab2dbf | |
parent | e8acc9564ef11ca8f7d20b1ed1fbd34e6850e2a3 (diff) |
PerStepCallback_8069DD4
-rwxr-xr-x | asm/field_tasks.s | 202 | ||||
-rwxr-xr-x | src/field_tasks.c | 74 |
2 files changed, 74 insertions, 202 deletions
diff --git a/asm/field_tasks.s b/asm/field_tasks.s index ab6b9c8c6..6549ea29d 100755 --- a/asm/field_tasks.s +++ b/asm/field_tasks.s @@ -6,208 +6,6 @@ .text - thumb_func_start PerStepCallback_8069DD4 -PerStepCallback_8069DD4: @ 8069DD4 - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - ldr r0, _08069DF8 @ =gTasks + 0x8 - adds r5, r1, r0 - movs r1, 0x2 - ldrsh r0, [r5, r1] - cmp r0, 0x1 - beq _08069E20 - cmp r0, 0x1 - bgt _08069DFC - cmp r0, 0 - beq _08069E08 - b _08069F56 - .align 2, 0 -_08069DF8: .4byte gTasks + 0x8 -_08069DFC: - cmp r0, 0x2 - beq _08069EB6 - cmp r0, 0x3 - bne _08069E06 - b _08069F10 -_08069E06: - b _08069F56 -_08069E08: - mov r4, sp - adds r4, 0x2 - mov r0, sp - adds r1, r4, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x4] - ldrh r0, [r4] - strh r0, [r5, 0x6] - b _08069F52 -_08069E20: - mov r7, sp - adds r7, 0x2 - mov r0, sp - adds r1, r7, 0 - bl PlayerGetDestCoords - mov r0, sp - ldrh r2, [r0] - movs r3, 0 - ldrsh r1, [r0, r3] - movs r3, 0x4 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _08069E4A - movs r0, 0 - ldrsh r1, [r7, r0] - movs r3, 0x6 - ldrsh r0, [r5, r3] - cmp r1, r0 - bne _08069E4A - b _08069F56 -_08069E4A: - strh r2, [r5, 0x4] - ldrh r0, [r7] - strh r0, [r5, 0x6] - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r7, r2] - bl MapGridGetMetatileBehaviorAt - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - ldr r0, _08069E8C @ =0x00004022 - bl GetVarPointer - adds r6, r0, 0 - lsls r4, 24 - lsrs r4, 24 - adds r0, r4, 0 - bl MetatileBehavior_IsThinIce - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08069E90 - ldrh r0, [r6] - adds r0, 0x1 - strh r0, [r6] - movs r0, 0x4 - strh r0, [r5, 0xC] - movs r0, 0x2 - b _08069EA8 - .align 2, 0 -_08069E8C: .4byte 0x00004022 -_08069E90: - adds r0, r4, 0 - bl MetatileBehavior_IsCrackedIce - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _08069F56 - movs r0, 0 - strh r0, [r6] - movs r0, 0x4 - strh r0, [r5, 0xC] - movs r0, 0x3 -_08069EA8: - strh r0, [r5, 0x2] - mov r0, sp - ldrh r0, [r0] - strh r0, [r5, 0x8] - ldrh r0, [r7] - strh r0, [r5, 0xA] - b _08069F56 -_08069EB6: - ldrh r1, [r5, 0xC] - movs r3, 0xC - ldrsh r0, [r5, r3] - cmp r0, 0 - bne _08069F1A - mov r1, sp - ldrh r0, [r5, 0x8] - strh r0, [r1] - mov r4, sp - adds r4, 0x2 - ldrh r0, [r5, 0xA] - strh r0, [r4] - movs r0, 0x2A - bl PlaySE - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _08069F0C @ =0x0000020e - bl MapGridSetMetatileIdAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt - mov r0, sp - ldrh r0, [r0] - subs r0, 0x7 - lsls r0, 16 - asrs r0, 16 - ldrh r1, [r4] - subs r1, 0x7 - lsls r1, 16 - asrs r1, 16 - bl sub_8069CFC - b _08069F52 - .align 2, 0 -_08069F0C: .4byte 0x0000020e -_08069F10: - ldrh r1, [r5, 0xC] - movs r3, 0xC - ldrsh r0, [r5, r3] - cmp r0, 0 - beq _08069F20 -_08069F1A: - subs r0, r1, 0x1 - strh r0, [r5, 0xC] - b _08069F56 -_08069F20: - mov r1, sp - ldrh r0, [r5, 0x8] - strh r0, [r1] - mov r4, sp - adds r4, 0x2 - ldrh r0, [r5, 0xA] - strh r0, [r4] - movs r0, 0x29 - bl PlaySE - mov r0, sp - movs r1, 0 - ldrsh r0, [r0, r1] - movs r2, 0 - ldrsh r1, [r4, r2] - ldr r2, _08069F60 @ =0x00000206 - bl MapGridSetMetatileIdAt - mov r0, sp - movs r3, 0 - ldrsh r0, [r0, r3] - movs r2, 0 - ldrsh r1, [r4, r2] - bl CurrentMapDrawMetatileAt -_08069F52: - movs r0, 0x1 - strh r0, [r5, 0x2] -_08069F56: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08069F60: .4byte 0x00000206 - thumb_func_end PerStepCallback_8069DD4 - thumb_func_start PerStepCallback_8069F64 PerStepCallback_8069F64: @ 8069F64 push {r4,r5,lr} diff --git a/src/field_tasks.c b/src/field_tasks.c index cc87a201e..f68c6bbe4 100755 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -615,3 +615,77 @@ void sub_8069D78(void) } } } + +void PerStepCallback_8069DD4(u8 taskId) +{ + s16 x, y; + u16 tileBehavior; + u16 *var; + s16 *data = gTasks[taskId].data; + switch (data[1]) + { + case 0: + PlayerGetDestCoords(&x, &y); + data[2] = x; + data[3] = y; + data[1] = 1; + break; + case 1: + PlayerGetDestCoords(&x, &y); + if (x != data[2] || y != data[3]) + { + data[2] = x; + data[3] = y; + tileBehavior = MapGridGetMetatileBehaviorAt(x, y); + var = GetVarPointer(VAR_ICE_STEP_COUNT); + if (MetatileBehavior_IsThinIce(tileBehavior) == TRUE) + { + (*var)++; + data[6] = 4; + data[1] = 2; + data[4] = x; + data[5] = y; + } + else if (MetatileBehavior_IsCrackedIce(tileBehavior) == TRUE) + { + *var = 0; + data[6] = 4; + data[1] = 3; + data[4] = x; + data[5] = y; + } + } + break; + case 2: + if (data[6] != 0) + { + data[6]--; + } + else + { + x = data[4]; + y = data[5]; + PlaySE(SE_RU_BARI); + MapGridSetMetatileIdAt(x, y, 0x20e); + CurrentMapDrawMetatileAt(x, y); + sub_8069CFC(x - 7, y - 7); + data[1] = 1; + } + break; + case 3: + if (data[6] != 0) + { + data[6]--; + } + else + { + x = data[4]; + y = data[5]; + PlaySE(SE_RU_GASYAN); + MapGridSetMetatileIdAt(x, y, 0x206); + CurrentMapDrawMetatileAt(x, y); + data[1] = 1; + } + break; + } +} |