diff options
-rw-r--r-- | asm/pokedex_screen.s | 365 | ||||
-rw-r--r-- | include/strings.h | 1 | ||||
-rw-r--r-- | src/pokedex_screen.c | 110 |
3 files changed, 109 insertions, 367 deletions
diff --git a/asm/pokedex_screen.s b/asm/pokedex_screen.s index 6da8a3a49..7b7c7e213 100644 --- a/asm/pokedex_screen.s +++ b/asm/pokedex_screen.s @@ -5,371 +5,6 @@ .text - thumb_func_start sub_8104F0C -sub_8104F0C: @ 8104F0C - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 24 - lsrs r6, r0, 24 - movs r0, 0x1E - str r0, [sp] - movs r4, 0x14 - str r4, [sp, 0x4] - movs r0, 0x3 - movs r1, 0x2 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - movs r5, 0x20 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x2 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - str r5, [sp] - str r4, [sp, 0x4] - movs r0, 0x1 - movs r1, 0 - movs r2, 0 - movs r3, 0 - bl FillBgTilemapBufferRect_Palette0 - ldr r5, _08104F80 @ =gUnknown_203ACF0 - ldr r1, [r5] - adds r0, r1, 0 - adds r0, 0x28 - ldrb r0, [r0] - adds r1, 0x2B - ldrb r1, [r1] - bl sub_81068DC - movs r0, 0 - movs r1, 0xFF - bl FillWindowPixelBuffer - cmp r6, 0 - beq _08104F88 - ldr r1, _08104F84 @ =gUnknown_8452344 - ldr r0, [r5] - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0x1 - bl sub_8106E78 - b _08104FD0 - .align 2, 0 -_08104F80: .4byte gUnknown_203ACF0 -_08104F84: .4byte gUnknown_8452344 -_08104F88: - ldr r1, _08105048 @ =gUnknown_8452344 - ldr r0, [r5] - adds r0, 0x28 - ldrb r0, [r0] - lsls r0, 2 - adds r0, r1 - ldr r0, [r0] - movs r1, 0 - bl sub_8106E78 - ldr r0, [r5] - adds r0, 0x2B - ldrb r0, [r0] - bl sub_8106AF8 - adds r4, r0, 0 - lsls r4, 24 - lsrs r4, 24 - ldr r0, [r5] - adds r0, 0x2A - ldrb r0, [r0] - subs r0, 0x1 - lsls r0, 16 - lsrs r0, 16 - bl sub_8106AF8 - adds r2, r0, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0x2 - str r0, [sp] - movs r0, 0 - adds r1, r4, 0 - movs r3, 0xA0 - bl sub_8104EC0 -_08104FD0: - movs r0, 0 - movs r1, 0x2 - bl CopyWindowToVram - movs r0, 0x1 - movs r1, 0xFF - bl FillWindowPixelBuffer - cmp r6, 0 - bne _08104FEA - ldr r0, _0810504C @ =gUnknown_8415F6C - bl sub_8104C2C -_08104FEA: - movs r0, 0x1 - movs r1, 0x2 - bl CopyWindowToVram - ldr r5, _08105050 @ =gUnknown_203ACF0 - ldr r1, [r5] - ldrh r0, [r1, 0x18] - ldr r4, _08105054 @ =0x0000ffff - cmp r0, r4 - beq _08105008 - adds r1, 0x2C - ldrb r2, [r1] - movs r1, 0 - bl sub_8104C64 -_08105008: - ldr r1, [r5] - ldrh r0, [r1, 0x1A] - cmp r0, r4 - beq _0810501A - adds r1, 0x2C - ldrb r2, [r1] - movs r1, 0x1 - bl sub_8104C64 -_0810501A: - ldr r1, [r5] - ldrh r0, [r1, 0x1C] - cmp r0, r4 - beq _0810502C - adds r1, 0x2C - ldrb r2, [r1] - movs r1, 0x2 - bl sub_8104C64 -_0810502C: - ldr r1, [r5] - ldrh r0, [r1, 0x1E] - cmp r0, r4 - beq _0810503E - adds r1, 0x2C - ldrb r2, [r1] - movs r1, 0x3 - bl sub_8104C64 -_0810503E: - movs r0, 0 - add sp, 0x8 - pop {r4-r6} - pop {r1} - bx r1 - .align 2, 0 -_08105048: .4byte gUnknown_8452344 -_0810504C: .4byte gUnknown_8415F6C -_08105050: .4byte gUnknown_203ACF0 -_08105054: .4byte 0x0000ffff - thumb_func_end sub_8104F0C - - thumb_func_start sub_8105058 -sub_8105058: @ 8105058 - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - lsls r0, 24 - lsrs r0, 24 - str r0, [sp] - cmp r0, 0xFF - bne _081050C0 - ldr r7, _081050B4 @ =gUnknown_84406C8 - movs r6, 0xB0 - lsls r6, 15 - movs r5, 0xA4 - lsls r5, 15 - movs r4, 0x3 -_0810507A: - lsrs r1, r5, 16 - adds r0, r7, 0 - movs r2, 0x2 - bl LoadPalette - lsrs r1, r6, 16 - adds r0, r7, 0x2 - movs r2, 0x2 - bl LoadPalette - movs r0, 0x80 - lsls r0, 13 - adds r6, r0 - adds r5, r0 - subs r4, 0x1 - cmp r4, 0 - bge _0810507A - ldr r0, _081050B4 @ =gUnknown_84406C8 - ldr r1, _081050B8 @ =0x00000141 - movs r2, 0x2 - bl LoadPalette - ldr r0, _081050BC @ =gUnknown_203ACF0 - ldr r0, [r0] - adds r0, 0x2E - movs r1, 0 - strb r1, [r0] - b _0810515E - .align 2, 0 -_081050B4: .4byte gUnknown_84406C8 -_081050B8: .4byte 0x00000141 -_081050BC: .4byte gUnknown_203ACF0 -_081050C0: - ldr r2, _08105120 @ =gUnknown_203ACF0 - ldr r1, [r2] - adds r1, 0x2E - ldrb r0, [r1] - adds r0, 0x1 - strb r0, [r1] - ldr r0, [r2] - adds r1, r0, 0 - adds r1, 0x2E - ldrb r0, [r1] - cmp r0, 0x10 - bne _081050DC - movs r0, 0 - strb r0, [r1] -_081050DC: - ldr r0, [r2] - adds r0, 0x2E - ldrb r0, [r0] - lsrs r7, r0, 2 - movs r4, 0 - lsls r0, r7, 2 - mov r8, r0 - ldr r0, _08105124 @ =gUnknown_84406CC - mov r10, r0 - movs r6, 0xB0 - lsls r6, 15 - movs r5, 0xA4 - lsls r5, 15 - movs r0, 0x4 - negs r0, r0 - add r0, r10 - mov r9, r0 -_081050FE: - ldr r0, [sp] - cmp r4, r0 - bne _0810512C - lsrs r1, r5, 16 - mov r0, r8 - add r0, r10 - movs r2, 0x2 - bl LoadPalette - lsrs r1, r6, 16 - ldr r0, _08105128 @ =gUnknown_84406CE - add r0, r8 - movs r2, 0x2 - bl LoadPalette - b _08105142 - .align 2, 0 -_08105120: .4byte gUnknown_203ACF0 -_08105124: .4byte gUnknown_84406CC -_08105128: .4byte gUnknown_84406CE -_0810512C: - lsrs r1, r5, 16 - mov r0, r9 - movs r2, 0x2 - bl LoadPalette - lsrs r1, r6, 16 - mov r0, r9 - adds r0, 0x2 - movs r2, 0x2 - bl LoadPalette -_08105142: - lsls r1, r7, 2 - movs r0, 0x80 - lsls r0, 13 - adds r6, r0 - adds r5, r0 - adds r4, 0x1 - cmp r4, 0x3 - ble _081050FE - ldr r0, _08105170 @ =gUnknown_84406CC - adds r0, r1, r0 - ldr r1, _08105174 @ =0x00000141 - movs r2, 0x2 - bl LoadPalette -_0810515E: - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08105170: .4byte gUnknown_84406CC -_08105174: .4byte 0x00000141 - thumb_func_end sub_8105058 - - thumb_func_start sub_8105178 -sub_8105178: @ 8105178 - push {lr} - lsls r0, 24 - lsrs r0, 24 - lsls r1, 24 - lsls r2, 24 - movs r3, 0xFF - lsls r3, 24 - adds r2, r3 - ldr r3, _081051A8 @ =gUnknown_8452334 - lsrs r2, 22 - adds r2, r3 - ldr r2, [r2] - lsrs r1, 22 - adds r1, r2 - ldrb r3, [r1, 0x2] - lsls r3, 3 - ldrb r2, [r1, 0x3] - lsls r2, 3 - adds r1, r3, 0 - movs r3, 0 - bl ListMenuUpdateCursorObject - pop {r0} - bx r0 - .align 2, 0 -_081051A8: .4byte gUnknown_8452334 - thumb_func_end sub_8105178 - - thumb_func_start sub_81051AC -sub_81051AC: @ 81051AC - push {lr} - lsls r1, 24 - lsls r3, 24 - lsrs r1, 23 - adds r1, r0, r1 - lsrs r3, 23 - adds r2, r3 - movs r3, 0x13 -_081051BC: - ldrh r0, [r1] - strh r0, [r2] - adds r2, 0x40 - adds r1, 0x40 - subs r3, 0x1 - cmp r3, 0 - bge _081051BC - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_81051AC - - thumb_func_start sub_81051D0 -sub_81051D0: @ 81051D0 - push {lr} - lsls r0, 16 - lsrs r0, 16 - lsls r2, 24 - lsrs r2, 23 - adds r1, r2 - movs r2, 0x13 -_081051DE: - strh r0, [r1] - adds r1, 0x40 - subs r2, 0x1 - cmp r2, 0 - bge _081051DE - movs r0, 0 - pop {r1} - bx r1 - thumb_func_end sub_81051D0 - thumb_func_start sub_81051F0 sub_81051F0: @ 81051F0 push {r4-r7,lr} diff --git a/include/strings.h b/include/strings.h index c3ab3552a..bc1aee889 100644 --- a/include/strings.h +++ b/include/strings.h @@ -975,6 +975,7 @@ extern const u8 gUnknown_8415DD7[]; extern const u8 gUnknown_8415F3D[]; extern const u8 gUnknown_8415F4A[]; extern const u8 gUnknown_8415F66[]; +extern const u8 gUnknown_8415F6C[]; extern const u8 gUnknown_8415FFF[]; extern const u8 gUnknown_8416002[]; diff --git a/src/pokedex_screen.c b/src/pokedex_screen.c index d739d8f88..0590ed2e4 100644 --- a/src/pokedex_screen.c +++ b/src/pokedex_screen.c @@ -107,7 +107,7 @@ void sub_8104A34(u8 windowId, u8 fontId, u16 species, u8 x, u8 y); u16 sub_8104BBC(u8 caseID, bool8 whichDex); void sub_8104C2C(const u8 *src); void sub_8104E90(void); -void sub_8104F0C(u8 a0); +bool8 sub_8104F0C(bool8 a0); void sub_8105058(u8 a0); void sub_8105178(u8 a0, u8 a1, u8 a2); bool8 sub_81052D0(u8 a0); @@ -120,6 +120,8 @@ u8 sub_81068A0(u8 a0); void sub_810699C(u8 a0); bool8 sub_8106A20(u16 a0); void sub_81067C0(void); +void sub_81068DC(u8 a0, u8 a1); +u8 sub_8106AF8(u16 a0); void sub_8106B34(void); void sub_8106E78(const u8 *a0, s32 a1); @@ -127,6 +129,7 @@ extern const u16 gUnknown_8440124[]; extern const u32 gUnknown_8440274[]; extern const u32 gUnknown_84403AC[]; extern const u16 gUnknown_84404C8[]; +extern const u16 gUnknown_84406C8[]; extern const u16 gUnknown_84406E0[]; extern const u16 gUnknown_8440EF0[]; extern const u16 gUnknown_8443460[]; @@ -154,6 +157,7 @@ extern const struct WindowTemplate gUnknown_84521C4; extern const struct WindowTemplate gUnknown_84521CC; extern const u16 gUnknown_845228C[]; extern const u8 (*const gUnknown_8452334[])[4]; +extern const u8 *const gUnknown_8452344[]; extern const struct ScrollArrowsTemplate gUnknown_84524B4; extern const struct CursorStruct gUnknown_84524C4; @@ -1832,7 +1836,7 @@ void sub_8104E90(void) } } -void sub_8104EC0(u8 unused, u16 a1, u16 a2) +void sub_8104EC0(u8 unused, u16 a1, u16 a2, u8 unused2, u8 unused3) { u8 buffer[30]; u8 *ptr = StringCopy(buffer, gUnknown_8416002); @@ -1841,3 +1845,105 @@ void sub_8104EC0(u8 unused, u16 a1, u16 a2) ptr = ConvertIntToDecimalStringN(ptr, a2, STR_CONV_MODE_RIGHT_ALIGN, 2); sub_8106E78(buffer, 2); } + +bool8 sub_8104F0C(bool8 a0) +{ + FillBgTilemapBufferRect_Palette0(3, 2, 0, 0, 30, 20); + FillBgTilemapBufferRect_Palette0(2, 0, 0, 0, 32, 20); + FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 32, 20); + sub_81068DC(gUnknown_203ACF0->field_28, gUnknown_203ACF0->field_2B); + FillWindowPixelBuffer(0, PIXEL_FILL(15)); + if (a0) + { + sub_8106E78(gUnknown_8452344[gUnknown_203ACF0->field_28], 1); + } + else + { + sub_8106E78(gUnknown_8452344[gUnknown_203ACF0->field_28], 0); + sub_8104EC0(0, sub_8106AF8(gUnknown_203ACF0->field_2B), sub_8106AF8(gUnknown_203ACF0->field_2A - 1), 160, 2); + } + CopyWindowToVram(0, 2); + FillWindowPixelBuffer(1, PIXEL_FILL(15)); + if (!a0) + sub_8104C2C(gUnknown_8415F6C); + CopyWindowToVram(1, 2); + if (gUnknown_203ACF0->field_18[0] != 0xFFFF) + sub_8104C64(gUnknown_203ACF0->field_18[0], 0, gUnknown_203ACF0->field_2C); + if (gUnknown_203ACF0->field_18[1] != 0xFFFF) + sub_8104C64(gUnknown_203ACF0->field_18[1], 1, gUnknown_203ACF0->field_2C); + if (gUnknown_203ACF0->field_18[2] != 0xFFFF) + sub_8104C64(gUnknown_203ACF0->field_18[2], 2, gUnknown_203ACF0->field_2C); + if (gUnknown_203ACF0->field_18[3] != 0xFFFF) + sub_8104C64(gUnknown_203ACF0->field_18[3], 3, gUnknown_203ACF0->field_2C); + return FALSE; +} + +void sub_8105058(u8 a0) +{ + int i; + u32 r7; + + if (a0 == 0xFF) + { + for (i = 0; i < 4; i++) + { + LoadPalette(&gUnknown_84406C8[0], 0x52 + 0x10 * i, 2); + LoadPalette(&gUnknown_84406C8[1], 0x58 + 0x10 * i, 2); + } + LoadPalette(&gUnknown_84406C8[0], 0x141, 2); + gUnknown_203ACF0->field_2E = 0; + } + else + { + gUnknown_203ACF0->field_2E++; + if (gUnknown_203ACF0->field_2E == 16) + gUnknown_203ACF0->field_2E = 0; + r7 = gUnknown_203ACF0->field_2E >> 2; + for (i = 0; i < 4; i++) + { + if (i == a0) + { + LoadPalette(&gUnknown_84406C8[2 * r7 + 2], 0x52 + 0x10 * i, 2); + LoadPalette(&gUnknown_84406C8[2 * r7 + 3], 0x58 + 0x10 * i, 2); + } + else + { + LoadPalette(&gUnknown_84406C8[0], 0x52 + 0x10 * i, 2); + LoadPalette(&gUnknown_84406C8[1], 0x58 + 0x10 * i, 2); + } + } + LoadPalette(&gUnknown_84406C8[2 * r7 + 2], 0x141, 2); + } +} + +void sub_8105178(u8 a0, u8 a1, u8 a2) +{ + a2--; + ListMenuUpdateCursorObject(a0, gUnknown_8452334[a2][a1][2] * 8, gUnknown_8452334[a2][a1][3] * 8, 0); +} + +bool8 sub_81051AC(const u16 *a0, u8 a1, u16 *a2, u8 a3) +{ + int i; + const u16 *src = &a0[a1]; + u16 *dst = &a2[a3]; + for (i = 0; i < 20; i++) + { + *dst = *src; + dst += 32; + src += 32; + } + return FALSE; +} + +bool8 sub_81051D0(u16 a0, u16 *a1, u8 a2) +{ + int i; + u16 *dst = &a1[a2]; + for (i = 0; i < 20; i++) + { + *dst = a0; + dst += 32; + } + return FALSE; +} |