diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-06-20 19:58:51 -0400 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-06-20 19:58:51 -0400 |
commit | 98a02324ecd11b2a7c2d9b5ba1c72112e5b3d012 (patch) | |
tree | 1178ae41bf38877e56907d26690ef2fa1770d869 | |
parent | 27ce8721331d5970c2d15d1a0459e37d094e0aa1 (diff) |
Remaining elevator functions (one very nearly matching but not quite)
-rwxr-xr-x | asm/field_specials.s | 535 | ||||
-rwxr-xr-x | src/field_specials.c | 312 |
2 files changed, 311 insertions, 536 deletions
diff --git a/asm/field_specials.s b/asm/field_specials.s index dcfe9d7dc..975dc1ca9 100755 --- a/asm/field_specials.s +++ b/asm/field_specials.s @@ -6,541 +6,6 @@ .text - thumb_func_start sub_810EAC8 -sub_810EAC8: @ 810EAC8 - push {r4-r7,lr} - mov r7, r8 - push {r7} - lsls r0, 24 - lsrs r2, r0, 24 - adds r5, r2, 0 - lsls r1, 24 - lsrs r1, 24 - adds r3, r1, 0 - movs r7, 0 - movs r4, 0 - ldr r0, _0810EAEC @ =gUnknown_0203925A - ldrb r0, [r0] - cmp r0, 0x4 - bhi _0810EAF0 - movs r0, 0 - b _0810EB78 - .align 2, 0 -_0810EAEC: .4byte gUnknown_0203925A -_0810EAF0: - cmp r1, 0x40 - bne _0810EB04 - cmp r2, 0 - bne _0810EB18 - ldr r0, _0810EB00 @ =gUnknown_0203925B - ldrb r4, [r0] - movs r7, 0x1 - b _0810EB1C - .align 2, 0 -_0810EB00: .4byte gUnknown_0203925B -_0810EB04: - cmp r3, 0x80 - bne _0810EB18 - cmp r5, 0x4 - bne _0810EB18 - ldr r0, _0810EB84 @ =gUnknown_0203925B - ldrb r0, [r0] - subs r0, 0x4 - lsls r0, 24 - lsrs r4, r0, 24 - movs r7, 0x1 -_0810EB18: - cmp r7, 0 - beq _0810EB76 -_0810EB1C: - adds r0, r4, 0 - movs r1, 0x5 - bl sub_810EB90 - movs r0, 0x2 - movs r1, 0x1 - movs r2, 0x7 - movs r3, 0xA - bl MenuFillWindowRectWithBlankTile - movs r5, 0 - ldr r2, _0810EB88 @ =gUnknown_03000760 - lsls r1, r4, 2 - adds r0, r1, r2 - ldrb r0, [r0] - cmp r0, 0x10 - beq _0810EB76 - ldr r0, _0810EB8C @ =gUnknown_083F8380 - mov r8, r0 - adds r6, r2, 0 -_0810EB44: - adds r0, r1, r6 - ldrb r0, [r0] - lsls r0, 2 - add r0, r8 - ldr r0, [r0] - lsls r2, r5, 1 - adds r2, 0x1 - lsls r2, 24 - lsrs r2, 24 - movs r1, 0x1 - bl MenuPrint - adds r0, r4, 0x1 - lsls r0, 24 - lsrs r4, r0, 24 - adds r0, r5, 0x1 - lsls r0, 24 - lsrs r5, r0, 24 - cmp r5, 0x4 - bhi _0810EB76 - lsls r1, r4, 2 - adds r0, r1, r6 - ldrb r0, [r0] - cmp r0, 0x10 - bne _0810EB44 -_0810EB76: - adds r0, r7, 0 -_0810EB78: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_0810EB84: .4byte gUnknown_0203925B -_0810EB88: .4byte gUnknown_03000760 -_0810EB8C: .4byte gUnknown_083F8380 - thumb_func_end sub_810EAC8 - - thumb_func_start sub_810EB90 -sub_810EB90: @ 810EB90 - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - lsls r1, 24 - lsrs r5, r1, 24 - cmp r4, 0 - bne _0810EBB4 - ldr r0, _0810EBB0 @ =gUnknown_0203925C - ldrb r1, [r0] - movs r2, 0x2 - eors r1, r2 - strb r1, [r0] - movs r0, 0 - bl DestroyVerticalScrollIndicator - b _0810EBB8 - .align 2, 0 -_0810EBB0: .4byte gUnknown_0203925C -_0810EBB4: - bl sub_810ECB0 -_0810EBB8: - adds r1, r4, r5 - ldr r0, _0810EBC8 @ =gUnknown_0203925A - ldrb r0, [r0] - cmp r1, r0 - bge _0810EBCC - bl sub_810ECD4 - b _0810EBE0 - .align 2, 0 -_0810EBC8: .4byte gUnknown_0203925A -_0810EBCC: - cmp r1, r0 - bne _0810EBE0 - ldr r0, _0810EBE8 @ =gUnknown_0203925C - ldrb r1, [r0] - movs r2, 0x1 - eors r1, r2 - strb r1, [r0] - movs r0, 0x1 - bl DestroyVerticalScrollIndicator -_0810EBE0: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810EBE8: .4byte gUnknown_0203925C - thumb_func_end sub_810EB90 - - thumb_func_start sub_810EBEC -sub_810EBEC: @ 810EBEC - push {lr} - ldr r0, _0810EC2C @ =sub_810EC34 - movs r1, 0x9 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810EC30 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r0, 0 - movs r2, 0x1 - strh r2, [r1, 0x8] - strh r0, [r1, 0xA] - strh r0, [r1, 0xC] - strh r0, [r1, 0xE] - strh r2, [r1, 0x10] - movs r0, 0x3 - strh r0, [r1, 0x12] - movs r0, 0 - bl SetCameraPanningCallback - bl sub_810ECFC - movs r0, 0x59 - bl PlaySE - pop {r0} - bx r0 - .align 2, 0 -_0810EC2C: .4byte sub_810EC34 -_0810EC30: .4byte gTasks - thumb_func_end sub_810EBEC - - thumb_func_start sub_810EC34 -sub_810EC34: @ 810EC34 - push {r4,r5,lr} - lsls r0, 24 - lsrs r5, r0, 24 - lsls r0, r5, 2 - adds r0, r5 - lsls r0, 3 - ldr r1, _0810EC98 @ =gTasks - adds r4, r0, r1 - ldrh r0, [r4, 0xA] - adds r0, 0x1 - strh r0, [r4, 0xA] - movs r1, 0xA - ldrsh r0, [r4, r1] - movs r2, 0x12 - ldrsh r1, [r4, r2] - bl __modsi3 - cmp r0, 0 - bne _0810EC92 - strh r0, [r4, 0xA] - ldrh r0, [r4, 0xC] - adds r0, 0x1 - strh r0, [r4, 0xC] - movs r1, 0xE - ldrsh r0, [r4, r1] - cmp r0, 0 - bne _0810EC92 - ldrh r0, [r4, 0x10] - negs r0, r0 - strh r0, [r4, 0x10] - movs r2, 0x10 - ldrsh r1, [r4, r2] - movs r0, 0 - bl SetCameraPanning - movs r1, 0xC - ldrsh r0, [r4, r1] - cmp r0, 0x17 - bne _0810EC92 - movs r0, 0x49 - bl PlaySE - adds r0, r5, 0 - bl sub_810EC9C - bl InstallCameraPanAheadCallback -_0810EC92: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810EC98: .4byte gTasks - thumb_func_end sub_810EC34 - - thumb_func_start sub_810EC9C -sub_810EC9C: @ 810EC9C - push {lr} - lsls r0, 24 - lsrs r0, 24 - bl DestroyTask - bl EnableBothScriptContexts - pop {r0} - bx r0 - thumb_func_end sub_810EC9C - - thumb_func_start sub_810ECB0 -sub_810ECB0: @ 810ECB0 - push {lr} - ldr r2, _0810ECD0 @ =gUnknown_0203925C - ldrb r1, [r2] - lsrs r0, r1, 1 - cmp r0, 0x1 - beq _0810ECCC - movs r0, 0x2 - orrs r0, r1 - strb r0, [r2] - movs r0, 0 - movs r1, 0x24 - movs r2, 0x8 - bl CreateVerticalScrollIndicators -_0810ECCC: - pop {r0} - bx r0 - .align 2, 0 -_0810ECD0: .4byte gUnknown_0203925C - thumb_func_end sub_810ECB0 - - thumb_func_start sub_810ECD4 -sub_810ECD4: @ 810ECD4 - push {lr} - ldr r2, _0810ECF8 @ =gUnknown_0203925C - ldrb r1, [r2] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0810ECF2 - movs r0, 0x1 - orrs r0, r1 - strb r0, [r2] - movs r0, 0x1 - movs r1, 0x24 - movs r2, 0x48 - bl CreateVerticalScrollIndicators -_0810ECF2: - pop {r0} - bx r0 - .align 2, 0 -_0810ECF8: .4byte gUnknown_0203925C - thumb_func_end sub_810ECD4 - - thumb_func_start sub_810ECFC -sub_810ECFC: @ 810ECFC - push {r4,lr} - ldr r4, _0810ED38 @ =sub_810ED40 - adds r0, r4, 0 - bl FuncIsActiveTask - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _0810ED30 - adds r0, r4, 0 - movs r1, 0x8 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, _0810ED3C @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - movs r2, 0 - strh r2, [r1, 0x8] - strh r0, [r1, 0xA] - strh r2, [r1, 0xC] - strh r2, [r1, 0xE] - strh r2, [r1, 0x10] -_0810ED30: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810ED38: .4byte sub_810ED40 -_0810ED3C: .4byte gTasks - thumb_func_end sub_810ECFC - - thumb_func_start sub_810ED40 -sub_810ED40: @ 810ED40 - push {lr} - adds r1, r0, 0 - lsls r1, 24 - lsrs r1, 24 - lsls r0, r1, 2 - adds r0, r1 - lsls r0, 3 - ldr r1, _0810ED5C @ =gTasks - adds r0, r1 - bl sub_810ED60 - pop {r0} - bx r0 - .align 2, 0 -_0810ED5C: .4byte gTasks - thumb_func_end sub_810ED40 - - thumb_func_start sub_810ED60 -sub_810ED60: @ 810ED60 - push {r4,r5,lr} - adds r5, r0, 0 - movs r1, 0xE - ldrsh r0, [r5, r1] - cmp r0, 0x8 - beq _0810ED6E - b _0810EEB2 -_0810ED6E: - movs r0, 0 - strh r0, [r5, 0xE] - movs r1, 0x10 - ldrsh r0, [r5, r1] - cmp r0, 0 - beq _0810EE14 - ldr r2, _0810EDFC @ =0x00000e68 - movs r0, 0x7 - movs r1, 0x7 - bl MapGridSetMetatileIdAt - ldr r4, _0810EE00 @ =0x00000e69 - movs r0, 0x8 - movs r1, 0x7 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - movs r0, 0x9 - movs r1, 0x7 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - ldr r2, _0810EE04 @ =0x00000e6a - movs r0, 0xA - movs r1, 0x7 - bl MapGridSetMetatileIdAt - movs r2, 0xE7 - lsls r2, 4 - movs r0, 0x7 - movs r1, 0x8 - bl MapGridSetMetatileIdAt - adds r4, 0x8 - movs r0, 0x8 - movs r1, 0x8 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - movs r0, 0x9 - movs r1, 0x8 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - ldr r2, _0810EE08 @ =0x00000e72 - movs r0, 0xA - movs r1, 0x8 - bl MapGridSetMetatileIdAt - ldr r2, _0810EE0C @ =0x00000e78 - movs r0, 0x7 - movs r1, 0x9 - bl MapGridSetMetatileIdAt - adds r4, 0x8 - movs r0, 0x8 - movs r1, 0x9 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - movs r0, 0x9 - movs r1, 0x9 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - ldr r2, _0810EE10 @ =0x00000e7a - movs r0, 0xA - movs r1, 0x9 - bl MapGridSetMetatileIdAt - b _0810EE92 - .align 2, 0 -_0810EDFC: .4byte 0x00000e68 -_0810EE00: .4byte 0x00000e69 -_0810EE04: .4byte 0x00000e6a -_0810EE08: .4byte 0x00000e72 -_0810EE0C: .4byte 0x00000e78 -_0810EE10: .4byte 0x00000e7a -_0810EE14: - ldr r2, _0810EEC0 @ =0x00000e6b - movs r0, 0x7 - movs r1, 0x7 - bl MapGridSetMetatileIdAt - ldr r4, _0810EEC4 @ =0x00000e6c - movs r0, 0x8 - movs r1, 0x7 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - movs r0, 0x9 - movs r1, 0x7 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - ldr r2, _0810EEC8 @ =0x00000e6d - movs r0, 0xA - movs r1, 0x7 - bl MapGridSetMetatileIdAt - ldr r2, _0810EECC @ =0x00000e73 - movs r0, 0x7 - movs r1, 0x8 - bl MapGridSetMetatileIdAt - adds r4, 0x8 - movs r0, 0x8 - movs r1, 0x8 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - movs r0, 0x9 - movs r1, 0x8 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - ldr r2, _0810EED0 @ =0x00000e75 - movs r0, 0xA - movs r1, 0x8 - bl MapGridSetMetatileIdAt - ldr r2, _0810EED4 @ =0x00000e7b - movs r0, 0x7 - movs r1, 0x9 - bl MapGridSetMetatileIdAt - adds r4, 0x8 - movs r0, 0x8 - movs r1, 0x9 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - movs r0, 0x9 - movs r1, 0x9 - adds r2, r4, 0 - bl MapGridSetMetatileIdAt - ldr r2, _0810EED8 @ =0x00000e7d - movs r0, 0xA - movs r1, 0x9 - bl MapGridSetMetatileIdAt -_0810EE92: - bl DrawWholeMapView - ldrh r0, [r5, 0x10] - movs r1, 0x1 - eors r0, r1 - strh r0, [r5, 0x10] - ldrh r0, [r5, 0xC] - adds r0, 0x1 - strh r0, [r5, 0xC] - lsls r0, 16 - asrs r0, 16 - cmp r0, 0x8 - bne _0810EEB2 - ldrb r0, [r5, 0xA] - bl DestroyTask -_0810EEB2: - ldrh r0, [r5, 0xE] - adds r0, 0x1 - strh r0, [r5, 0xE] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_0810EEC0: .4byte 0x00000e6b -_0810EEC4: .4byte 0x00000e6c -_0810EEC8: .4byte 0x00000e6d -_0810EECC: .4byte 0x00000e73 -_0810EED0: .4byte 0x00000e75 -_0810EED4: .4byte 0x00000e7b -_0810EED8: .4byte 0x00000e7d - thumb_func_end sub_810ED60 - - thumb_func_start sub_810EEDC -sub_810EEDC: @ 810EEDC - push {r4,lr} - ldr r4, _0810EF08 @ =gUnknown_0203925C - ldrb r1, [r4] - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _0810EEF0 - movs r0, 0x1 - bl DestroyVerticalScrollIndicator -_0810EEF0: - ldrb r0, [r4] - lsrs r0, 1 - cmp r0, 0x1 - bne _0810EEFE - movs r0, 0 - bl DestroyVerticalScrollIndicator -_0810EEFE: - bl BuyMenuFreeMemory - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0810EF08: .4byte gUnknown_0203925C - thumb_func_end sub_810EEDC - thumb_func_start SetTrickHouseEndRoomFlag SetTrickHouseEndRoomFlag: @ 810EF0C push {lr} diff --git a/src/field_specials.c b/src/field_specials.c index cdfa3810d..984ba7714 100755 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -934,10 +934,16 @@ void EndLotteryCornerComputerEffect(void) static void sub_810E874(void); void sub_810E944(void); void sub_810E984(u8); -void sub_810EAC8(u8, u8); +bool8 sub_810EAC8(u8, u8); +void sub_810EB90(u8, u8); void sub_810EBEC(void); +void sub_810EC34(u8); void sub_810EC9C(u8); +void sub_810ECB0(void); void sub_810ECD4(void); +void sub_810ECFC(void); +void sub_810ED40(u8); +void sub_810ED60(struct Task *); void sub_810EEDC(void); const u8 *const gUnknown_083F8380[] = { @@ -1100,3 +1106,307 @@ void sub_810E984(u8 taskId) sub_810EC9C(taskId); } } + +// This function, as written, swaps the roles of r4 and r5 throughout. +#ifdef NONMATCHING +bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) +{ + u8 i; + bool8 flag = 0; + u8 newPos = 0; + if (gUnknown_0203925A < 5) + { + return FALSE; + } + if (dpadInput == DPAD_UP) + { + if (prevMenuPos == 0) + { + newPos = gUnknown_0203925B; + flag = 1; + } + } + else if (dpadInput == DPAD_DOWN) + { + if (prevMenuPos == 4) + { + newPos = gUnknown_0203925B - 4; + flag = 1; + } + } + if (flag) + { + sub_810EB90(newPos, 5); + MenuFillWindowRectWithBlankTile(2, 1, 7, 10); + for (i=0; i<5 && gUnknown_03000760[newPos].var0 != 16; newPos++, i++) + { + MenuPrint(gUnknown_083F8380[gUnknown_03000760[newPos].var0], 1, i * 2 + 1); + } + } + return flag; +} +#else +__attribute__((naked)) +bool8 sub_810EAC8(u8 prevMenuPos, u8 dpadInput) +{ + asm_unified("\tpush {r4-r7,lr}\n" + "\tmov r7, r8\n" + "\tpush {r7}\n" + "\tlsls r0, 24\n" + "\tlsrs r2, r0, 24\n" + "\tadds r5, r2, 0\n" + "\tlsls r1, 24\n" + "\tlsrs r1, 24\n" + "\tadds r3, r1, 0\n" + "\tmovs r7, 0\n" + "\tmovs r4, 0\n" + "\tldr r0, _0810EAEC @ =gUnknown_0203925A\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x4\n" + "\tbhi _0810EAF0\n" + "\tmovs r0, 0\n" + "\tb _0810EB78\n" + "\t.align 2, 0\n" + "_0810EAEC: .4byte gUnknown_0203925A\n" + "_0810EAF0:\n" + "\tcmp r1, 0x40\n" + "\tbne _0810EB04\n" + "\tcmp r2, 0\n" + "\tbne _0810EB18\n" + "\tldr r0, _0810EB00 @ =gUnknown_0203925B\n" + "\tldrb r4, [r0]\n" + "\tmovs r7, 0x1\n" + "\tb _0810EB1C\n" + "\t.align 2, 0\n" + "_0810EB00: .4byte gUnknown_0203925B\n" + "_0810EB04:\n" + "\tcmp r3, 0x80\n" + "\tbne _0810EB18\n" + "\tcmp r5, 0x4\n" + "\tbne _0810EB18\n" + "\tldr r0, _0810EB84 @ =gUnknown_0203925B\n" + "\tldrb r0, [r0]\n" + "\tsubs r0, 0x4\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tmovs r7, 0x1\n" + "_0810EB18:\n" + "\tcmp r7, 0\n" + "\tbeq _0810EB76\n" + "_0810EB1C:\n" + "\tadds r0, r4, 0\n" + "\tmovs r1, 0x5\n" + "\tbl sub_810EB90\n" + "\tmovs r0, 0x2\n" + "\tmovs r1, 0x1\n" + "\tmovs r2, 0x7\n" + "\tmovs r3, 0xA\n" + "\tbl MenuFillWindowRectWithBlankTile\n" + "\tmovs r5, 0\n" + "\tldr r2, _0810EB88 @ =gUnknown_03000760\n" + "\tlsls r1, r4, 2\n" + "\tadds r0, r1, r2\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x10\n" + "\tbeq _0810EB76\n" + "\tldr r0, _0810EB8C @ =gUnknown_083F8380\n" + "\tmov r8, r0\n" + "\tadds r6, r2, 0\n" + "_0810EB44:\n" + "\tadds r0, r1, r6\n" + "\tldrb r0, [r0]\n" + "\tlsls r0, 2\n" + "\tadd r0, r8\n" + "\tldr r0, [r0]\n" + "\tlsls r2, r5, 1\n" + "\tadds r2, 0x1\n" + "\tlsls r2, 24\n" + "\tlsrs r2, 24\n" + "\tmovs r1, 0x1\n" + "\tbl MenuPrint\n" + "\tadds r0, r4, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r4, r0, 24\n" + "\tadds r0, r5, 0x1\n" + "\tlsls r0, 24\n" + "\tlsrs r5, r0, 24\n" + "\tcmp r5, 0x4\n" + "\tbhi _0810EB76\n" + "\tlsls r1, r4, 2\n" + "\tadds r0, r1, r6\n" + "\tldrb r0, [r0]\n" + "\tcmp r0, 0x10\n" + "\tbne _0810EB44\n" + "_0810EB76:\n" + "\tadds r0, r7, 0\n" + "_0810EB78:\n" + "\tpop {r3}\n" + "\tmov r8, r3\n" + "\tpop {r4-r7}\n" + "\tpop {r1}\n" + "\tbx r1\n" + "\t.align 2, 0\n" + "_0810EB84: .4byte gUnknown_0203925B\n" + "_0810EB88: .4byte gUnknown_03000760\n" + "_0810EB8C: .4byte gUnknown_083F8380"); +} +#endif + +void sub_810EB90(u8 newPos, u8 maxItems) +{ + if (newPos == 0) + { + gUnknown_0203925C ^= 0x02; + DestroyVerticalScrollIndicator(0); + } + else + { + sub_810ECB0(); + } + if (newPos + maxItems < gUnknown_0203925A) + { + sub_810ECD4(); + } + else if (newPos + maxItems == gUnknown_0203925A) + { + gUnknown_0203925C ^= 0x01; + DestroyVerticalScrollIndicator(1); + } +} + +void sub_810EBEC(void) +{ + u8 taskId = CreateTask(sub_810EC34, 9); + gTasks[taskId].data[0] = 1; + gTasks[taskId].data[1] = 0; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 1; + gTasks[taskId].data[5] = 3; + SetCameraPanningCallback(NULL); + sub_810ECFC(); + PlaySE(SE_ELEBETA); +} + +void sub_810EC34(u8 taskId) +{ + struct Task *task = &gTasks[taskId]; + task->data[1] ++; + if (task->data[1] % task->data[5] == 0) + { + task->data[1] = 0; + task->data[2] ++; + if (task->data[3] == 0) + { + task->data[4] = -task->data[4]; + SetCameraPanning(0, task->data[4]); + if (task->data[2] == 23) + { + PlaySE(SE_PINPON); + sub_810EC9C(taskId); + InstallCameraPanAheadCallback(); + } + } + } +} + +void sub_810EC9C(u8 taskId) +{ + DestroyTask(taskId); + EnableBothScriptContexts(); +} + +void sub_810ECB0(void) +{ + if (gUnknown_0203925C >> 1 != 1) + { + gUnknown_0203925C |= 0x2; + CreateVerticalScrollIndicators(0, 0x24, 0x08); + } +} + +void sub_810ECD4(void) +{ + if ((gUnknown_0203925C & 1) == 0) + { + gUnknown_0203925C |= 0x1; + CreateVerticalScrollIndicators(1, 0x24, 0x48); + } +} + +void sub_810ECFC(void) +{ + if (FuncIsActiveTask(sub_810ED40) != TRUE) + { + u8 taskId = CreateTask(sub_810ED40, 8); + gTasks[taskId].data[0] = 0; + gTasks[taskId].data[1] = taskId; + gTasks[taskId].data[2] = 0; + gTasks[taskId].data[3] = 0; + gTasks[taskId].data[4] = 0; + } +} + +void sub_810ED40(u8 taskId) +{ + sub_810ED60(&gTasks[taskId]); +} + +void sub_810ED60(struct Task *task) +{ + if (task->data[3] == 8) + { + task->data[3] = 0; + if (task->data[4] != 0) + { + MapGridSetMetatileIdAt( 7, 7, 0xe68); + MapGridSetMetatileIdAt( 8, 7, 0xe69); + MapGridSetMetatileIdAt( 9, 7, 0xe69); + MapGridSetMetatileIdAt(10, 7, 0xe6a); + MapGridSetMetatileIdAt( 7, 8, 0xe70); + MapGridSetMetatileIdAt( 8, 8, 0xe71); + MapGridSetMetatileIdAt( 9, 8, 0xe71); + MapGridSetMetatileIdAt(10, 8, 0xe72); + MapGridSetMetatileIdAt( 7, 9, 0xe78); + MapGridSetMetatileIdAt( 8, 9, 0xe79); + MapGridSetMetatileIdAt( 9, 9, 0xe79); + MapGridSetMetatileIdAt(10, 9, 0xe7a); + } + else + { + MapGridSetMetatileIdAt( 7, 7, 0xe6b); + MapGridSetMetatileIdAt( 8, 7, 0xe6c); + MapGridSetMetatileIdAt( 9, 7, 0xe6c); + MapGridSetMetatileIdAt(10, 7, 0xe6d); + MapGridSetMetatileIdAt( 7, 8, 0xe73); + MapGridSetMetatileIdAt( 8, 8, 0xe74); + MapGridSetMetatileIdAt( 9, 8, 0xe74); + MapGridSetMetatileIdAt(10, 8, 0xe75); + MapGridSetMetatileIdAt( 7, 9, 0xe7b); + MapGridSetMetatileIdAt( 8, 9, 0xe7c); + MapGridSetMetatileIdAt( 9, 9, 0xe7c); + MapGridSetMetatileIdAt(10, 9, 0xe7d); + } + DrawWholeMapView(); + task->data[4] ^= 1; + task->data[2]++; + if (task->data[2] == 8) + { + DestroyTask(task->data[1]); + } + } + task->data[3]++; +} + +void sub_810EEDC(void) +{ + if ((gUnknown_0203925C & 1) != 0) + { + DestroyVerticalScrollIndicator(1); + } + if ((gUnknown_0203925C >> 1) == 1) + { + DestroyVerticalScrollIndicator(0); + } + BuyMenuFreeMemory(); +} |