diff options
-rw-r--r-- | asm/region_map.s | 322 | ||||
-rw-r--r-- | src/region_map.c | 90 |
2 files changed, 88 insertions, 324 deletions
diff --git a/asm/region_map.s b/asm/region_map.s index ab3e5be1b..0228baa3e 100644 --- a/asm/region_map.s +++ b/asm/region_map.s @@ -5,328 +5,6 @@ .text - thumb_func_start sub_80C1BE0 -sub_80C1BE0: @ 80C1BE0 - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0xC - lsls r0, 24 - lsrs r2, r0, 24 - ldr r1, _080C1C08 @ =gUnknown_20399DC - ldr r0, [r1] - ldr r3, _080C1C0C @ =0x00003d49 - adds r0, r3 - ldrb r0, [r0] - adds r3, r1, 0 - cmp r0, 0x4 - bls _080C1BFE - b _080C1DF0 -_080C1BFE: - lsls r0, 2 - ldr r1, _080C1C10 @ =_080C1C14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_080C1C08: .4byte gUnknown_20399DC -_080C1C0C: .4byte 0x00003d49 -_080C1C10: .4byte _080C1C14 - .align 2, 0 -_080C1C14: - .4byte _080C1C28 - .4byte _080C1C58 - .4byte _080C1C80 - .4byte _080C1CA8 - .4byte _080C1DA0 -_080C1C28: - ldr r1, [r3] - ldr r0, _080C1C48 @ =0x00003e0e - adds r2, r1, r0 - ldr r0, _080C1C4C @ =0x00000133 - strh r0, [r2] - ldr r3, _080C1C50 @ =0x00003e10 - adds r2, r1, r3 - subs r0, 0x33 - strh r0, [r2] - ldr r0, _080C1C54 @ =0x00003e12 - adds r2, r1, r0 - movs r0, 0xF0 - strh r0, [r2] - subs r3, 0xC7 - b _080C1DD6 - .align 2, 0 -_080C1C48: .4byte 0x00003e0e -_080C1C4C: .4byte 0x00000133 -_080C1C50: .4byte 0x00003e10 -_080C1C54: .4byte 0x00003e12 -_080C1C58: - ldr r0, [r3] - ldr r1, _080C1C7C @ =0x00003d4c - adds r0, r1 - ldrb r1, [r0] - adds r2, r1, 0x1 - strb r2, [r0] - lsls r1, 24 - lsrs r1, 24 - cmp r1, 0x28 - bhi _080C1C6E - b _080C1DFE -_080C1C6E: - ldr r0, [r3] - ldr r1, _080C1C7C @ =0x00003d4c - adds r0, r1 - movs r1, 0 - strb r1, [r0] - ldr r1, [r3] - b _080C1DD4 - .align 2, 0 -_080C1C7C: .4byte 0x00003d4c -_080C1C80: - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - movs r0, 0x2 - bl PutWindowTilemap - ldr r0, _080C1CA0 @ =gUnknown_20399DC - ldr r1, [r0] - ldr r0, _080C1CA4 @ =0x00003d49 - adds r1, r0 - b _080C1DD8 - .align 2, 0 -_080C1CA0: .4byte gUnknown_20399DC -_080C1CA4: .4byte 0x00003d49 -_080C1CA8: - ldr r7, _080C1D10 @ =gUnknown_20399DC - ldr r2, [r7] - ldr r1, _080C1D14 @ =0x00003d4c - adds r0, r2, r1 - ldrb r0, [r0] - cmp r0, 0x19 - bls _080C1D24 - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C1920 - ldr r1, _080C1D18 @ =gUnknown_83F1A94 - str r1, [sp] - movs r4, 0x1 - negs r4, r4 - str r4, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0x2 - movs r2, 0x4 - movs r3, 0 - bl AddTextPrinterParameterized3 - bl sub_80C3580 - lsls r0, 16 - lsrs r0, 16 - bl sub_80C18E0 - ldr r1, _080C1D1C @ =gUnknown_83F1A90 - str r1, [sp] - str r4, [sp, 0x4] - str r0, [sp, 0x8] - movs r0, 0x2 - movs r1, 0x2 - movs r2, 0x2 - movs r3, 0xE - bl AddTextPrinterParameterized3 - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - ldr r1, [r7] - ldr r3, _080C1D20 @ =0x00003d49 - adds r1, r3 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C1D80 - .align 2, 0 -_080C1D10: .4byte gUnknown_20399DC -_080C1D14: .4byte 0x00003d4c -_080C1D18: .4byte gUnknown_83F1A94 -_080C1D1C: .4byte gUnknown_83F1A90 -_080C1D20: .4byte 0x00003d49 -_080C1D24: - cmp r0, 0x14 - bls _080C1D80 - ldr r6, _080C1D88 @ =0x00003e0e - adds r1, r2, r6 - ldrh r0, [r1] - subs r0, 0x6 - strh r0, [r1] - ldr r4, _080C1D8C @ =0x00003e10 - adds r1, r2, r4 - ldrh r0, [r1] - subs r0, 0x5 - strh r0, [r1] - ldr r0, _080C1D90 @ =0x00003e12 - mov r8, r0 - adds r1, r2, r0 - ldrh r0, [r1] - subs r0, 0x5 - strh r0, [r1] - movs r1, 0xF5 - lsls r1, 6 - adds r0, r2, r1 - ldr r0, [r0] - ldr r0, [r0, 0xC] - ldr r5, _080C1D94 @ =0x00003d4e - adds r1, r2, r5 - movs r2, 0x30 - bl CpuSet - ldr r1, [r7] - adds r0, r1, r5 - adds r6, r1, r6 - ldrh r2, [r6] - adds r4, r1, r4 - ldrh r3, [r4] - add r1, r8 - ldrh r1, [r1] - str r1, [sp] - movs r1, 0x30 - bl TintPalette_CustomTone - ldr r0, [r7] - adds r0, r5 - movs r1, 0xD0 - movs r2, 0x60 - bl LoadPalette -_080C1D80: - ldr r0, _080C1D98 @ =gUnknown_20399DC - ldr r1, [r0] - ldr r3, _080C1D9C @ =0x00003d4c - b _080C1DD6 - .align 2, 0 -_080C1D88: .4byte 0x00003e0e -_080C1D8C: .4byte 0x00003e10 -_080C1D90: .4byte 0x00003e12 -_080C1D94: .4byte 0x00003d4e -_080C1D98: .4byte gUnknown_20399DC -_080C1D9C: .4byte 0x00003d4c -_080C1DA0: - ldr r0, _080C1DE0 @ =gMain - ldrh r1, [r0, 0x2E] - movs r0, 0x2 - ands r0, r1 - cmp r0, 0 - bne _080C1DB4 - movs r0, 0x1 - ands r0, r1 - cmp r0, 0 - beq _080C1DFE -_080C1DB4: - movs r0, 0x2 - movs r1, 0 - bl FillWindowPixelBuffer - movs r0, 0x2 - movs r1, 0x3 - bl CopyWindowToVram - ldr r2, _080C1DE4 @ =gUnknown_20399DC - ldr r1, [r2] - ldr r0, _080C1DE8 @ =0x00003d48 - adds r1, r0 - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r1, [r2] -_080C1DD4: - ldr r3, _080C1DEC @ =0x00003d49 -_080C1DD6: - adds r1, r3 -_080C1DD8: - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - b _080C1DFE - .align 2, 0 -_080C1DE0: .4byte gMain -_080C1DE4: .4byte gUnknown_20399DC -_080C1DE8: .4byte 0x00003d48 -_080C1DEC: .4byte 0x00003d49 -_080C1DF0: - ldr r0, _080C1E0C @ =gTasks - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 3 - adds r1, r0 - ldr r0, _080C1E10 @ =sub_80C1A94 - str r0, [r1] -_080C1DFE: - add sp, 0xC - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080C1E0C: .4byte gTasks -_080C1E10: .4byte sub_80C1A94 - thumb_func_end sub_80C1BE0 - - thumb_func_start sub_80C1E14 -sub_80C1E14: @ 80C1E14 - push {r4,lr} - lsls r0, 24 - lsrs r0, 24 - ldr r2, _080C1E68 @ =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r4, _080C1E6C @ =gUnknown_20399DC - ldr r0, [r4] - ldr r2, _080C1E70 @ =0x00003d44 - adds r0, r2 - ldr r0, [r0] - str r0, [r1] - movs r0, 0x2 - bl HideBg - movs r0, 0 - bl sub_80C4B30 - bl sub_80C0B18 - bl sub_80C0BB0 - bl sub_80C0AB8 - bl sub_80C0B9C - ldr r0, _080C1E74 @ =gUnknown_8418E8D - bl sub_80C4E74 - ldr r0, [r4] - cmp r0, 0 - beq _080C1E60 - bl Free - movs r0, 0 - str r0, [r4] -_080C1E60: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080C1E68: .4byte gTasks -_080C1E6C: .4byte gUnknown_20399DC -_080C1E70: .4byte 0x00003d44 -_080C1E74: .4byte gUnknown_8418E8D - thumb_func_end sub_80C1E14 - - thumb_func_start sub_80C1E78 -sub_80C1E78: @ 80C1E78 - push {lr} - sub sp, 0x8 - movs r0, 0x20 - str r0, [sp] - movs r0, 0x14 - str r0, [sp, 0x4] - movs r0, 0x2 - movs r2, 0 - movs r3, 0 - bl CopyToBgTilemapBufferRect - add sp, 0x8 - pop {r0} - bx r0 - thumb_func_end sub_80C1E78 - thumb_func_start sub_80C1E94 sub_80C1E94: @ 80C1E94 push {r4-r6,lr} diff --git a/src/region_map.c b/src/region_map.c index a42a9183d..74fdad074 100644 --- a/src/region_map.c +++ b/src/region_map.c @@ -94,7 +94,13 @@ struct UnkStruct_20399DC u8 field_3D48; u8 field_3D49; u8 field_3D4A; - u8 filler_3D4B[0xC9]; + u8 field_3D4B; + u8 field_3D4C; + u16 field_3D4E[0x30]; + u8 field_3DAE[0x60]; + u16 field_3E0E; + u16 field_3E10; + u16 field_3E12; u16 field_3E14; u8 filler_3E16[0x12]; }; // size = 0x3E28 @@ -142,6 +148,7 @@ bool8 sub_80C16D0(void); void sub_80C1754(u8 a0, u16 a1, u16 a2); void sub_80C176C(u8 a0, u16 a1, u16 a2); void sub_80C1880(void); +void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C1A94(u8 taskId); void sub_80C1BE0(u8 taskId); void sub_80C1E14(u8 taskId); @@ -157,7 +164,6 @@ void sub_80C4C74(u16 a0, u16 a1); void sub_80C4C88(u16 a0); void sub_80C4C9C(u8 a0, u8 a1); void sub_80C4CF0(u8 a0, const struct UnkStruct_80C4CF0 *a1); -void sub_80C195C(u8 a0, u8 taskId, TaskFunc taskFunc); void sub_80C2208(u8 taskId, TaskFunc taskFunc); void sub_80C25BC(void); void sub_80C2C1C(u8 taskId); @@ -176,6 +182,7 @@ u16 sub_80C3520(void); void sub_80C48BC(u8 a0, u8 a1, u8 a2); void sub_80C4960(u8 a0, u8 a1, u8 a2); void sub_80C4A04(void); +void sub_80C4B30(u8 a0); void sub_80C4D30(void); void sub_80C4E18(const u8 *str); void sub_80C4E74(const u8 *str); @@ -205,6 +212,7 @@ extern const u32 gUnknown_83F19A0[]; extern const struct BgTemplate gUnknown_83F1A50[4]; extern const struct WindowTemplate gUnknown_83F1A60[]; extern const u8 gUnknown_83F1A90[]; +extern const u8 gUnknown_83F1A94[]; extern const u8 *const gUnknown_83F1A9C[]; extern const u8 sSeviiMapsecs[3][30]; extern const u8 gUnknown_83F1B00[3][4]; @@ -1312,3 +1320,81 @@ void sub_80C1A94(u8 taskId) break; } } + +void sub_80C1BE0(u8 taskId) +{ + switch (gUnknown_20399DC->field_3D49) + { + case 0: + gUnknown_20399DC->field_3E0E = 0x0133; + gUnknown_20399DC->field_3E10 = 0x0100; + gUnknown_20399DC->field_3E12 = 0x00F0; + gUnknown_20399DC->field_3D49++; + break; + case 1: + if (gUnknown_20399DC->field_3D4C++ > 40) + { + gUnknown_20399DC->field_3D4C = 0; + gUnknown_20399DC->field_3D49++; + } + break; + case 2: + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + CopyWindowToVram(2, 3); + PutWindowTilemap(2); + gUnknown_20399DC->field_3D49++; + break; + case 3: + if (gUnknown_20399DC->field_3D4C > 25) + { + AddTextPrinterParameterized3(2, 2, 4, 0, gUnknown_83F1A94, -1, sub_80C1920(sub_80C3580())); + AddTextPrinterParameterized3(2, 2, 2, 14, gUnknown_83F1A90, -1, sub_80C18E0(sub_80C3580())); + CopyWindowToVram(2, 3); + gUnknown_20399DC->field_3D49++; + } + else if (gUnknown_20399DC->field_3D4C > 20) + { + gUnknown_20399DC->field_3E0E -= 6; + gUnknown_20399DC->field_3E10 -= 5; + gUnknown_20399DC->field_3E12 -= 5; + CpuCopy16(gUnknown_20399DC->field_3D40->palptr, gUnknown_20399DC->field_3D4E, 0x60); + TintPalette_CustomTone(gUnknown_20399DC->field_3D4E, 0x30, gUnknown_20399DC->field_3E0E, gUnknown_20399DC->field_3E10, gUnknown_20399DC->field_3E12); + LoadPalette(gUnknown_20399DC->field_3D4E, 0xD0, 0x60); + } + gUnknown_20399DC->field_3D4C++; + break; + case 4: + if (JOY_NEW(B_BUTTON) || JOY_NEW(A_BUTTON)) + { + FillWindowPixelBuffer(2, PIXEL_FILL(0)); + CopyWindowToVram(2, 3); + gUnknown_20399DC->field_3D48++; + gUnknown_20399DC->field_3D49++; + } + break; + default: + gTasks[taskId].func = sub_80C1A94; + break; + } +} + +void sub_80C1E14(u8 taskId) +{ + gTasks[taskId].func = gUnknown_20399DC->field_3D44; + HideBg(2); + sub_80C4B30(0); + sub_80C0B18(); + sub_80C0BB0(); + sub_80C0AB8(); + sub_80C0B9C(); + sub_80C4E74(gUnknown_8418E8D); + if (gUnknown_20399DC != NULL) + { + FREE_AND_SET_NULL(gUnknown_20399DC); + } +} + +void sub_80C1E78(u8 bgId, const u16 * tilemap) +{ + CopyToBgTilemapBufferRect(2, tilemap, 0, 0, 32, 20); +} |