diff options
-rw-r--r-- | asm/pokedex.s | 89 | ||||
-rw-r--r-- | include/text.h | 1 | ||||
-rw-r--r-- | src/pokedex.c | 71 |
3 files changed, 57 insertions, 104 deletions
diff --git a/asm/pokedex.s b/asm/pokedex.s index ed0e3fd95..e4457547e 100644 --- a/asm/pokedex.s +++ b/asm/pokedex.s @@ -6,95 +6,6 @@ .text - thumb_func_start unref_sub_80913A4 -unref_sub_80913A4: @ 80913A4 - push {r4-r7,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 24 - lsrs r7, r1, 24 - lsls r2, 24 - lsrs r6, r2, 24 - movs r5, 0 - movs r1, 0xFA - lsls r1, 2 - adds r0, r4, 0 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080913CE - mov r0, sp - strb r5, [r0] - b _080913D6 -_080913CE: - mov r1, sp - adds r0, 0xA1 - strb r0, [r1] - movs r5, 0x1 -_080913D6: - movs r1, 0xFA - lsls r1, 2 - adds r0, r4, 0 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __udivsi3 - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0 - bne _080913FC - cmp r5, 0 - bne _080913FC - mov r0, sp - strb r5, [r0, 0x1] - b _08091402 -_080913FC: - mov r1, sp - adds r0, 0xA1 - strb r0, [r1, 0x1] -_08091402: - mov r5, sp - movs r1, 0xFA - lsls r1, 2 - adds r0, r4, 0 - bl __umodsi3 - lsls r0, 16 - lsrs r0, 16 - movs r1, 0x64 - bl __umodsi3 - adds r4, r0, 0 - lsls r4, 16 - lsrs r4, 16 - adds r0, r4, 0 - movs r1, 0xA - bl __udivsi3 - adds r0, 0xA1 - strb r0, [r5, 0x2] - mov r1, sp - movs r0, 0xAD - strb r0, [r1, 0x3] - mov r5, sp - adds r0, r4, 0 - movs r1, 0xA - bl __umodsi3 - adds r0, 0xA1 - strb r0, [r5, 0x4] - mov r1, sp - movs r0, 0xFF - strb r0, [r1, 0x5] - mov r0, sp - adds r1, r7, 0 - adds r2, r6, 0 - bl MenuPrint - add sp, 0x8 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end unref_sub_80913A4 - thumb_func_start sub_8091458 sub_8091458: @ 8091458 push {r4-r7,lr} diff --git a/include/text.h b/include/text.h index ba4ccb4b2..10fc07044 100644 --- a/include/text.h +++ b/include/text.h @@ -2,6 +2,7 @@ #define GUARD_TEXT_H #define CHAR_SPACE 0x00 +#define CHAR_0 0xA1 #define CHAR_QUESTION_MARK 0xAC #define CHAR_PERIOD 0xAD #define CHAR_HYPHEN 0xAE diff --git a/src/pokedex.c b/src/pokedex.c index 832a55666..d2008128c 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -2998,7 +2998,7 @@ void sub_8090750(u8 taskId) u8 spriteId; u16 dexNum = gTasks[taskId].data[1]; u16 i; - + switch (gTasks[taskId].data[0]) { case 0: @@ -3421,7 +3421,7 @@ void sub_8090A3C(u8 taskId) if (gTasks[taskId].data[4] == 0) { u16 r4 = gTasks[taskId].data[1]; - + MenuZeroFillWindowRect(2, 13, 27, 19); MenuPrint(gPokedexEntries[r4].descriptionPage2, 2, 13); (*(u16 *)(VRAM + 0x7ACA))++; @@ -3453,7 +3453,7 @@ void sub_8090B8C(u8 taskId) u32 personality; u8 paletteNum; const u16 *palette; - + REG_DISPCNT = 0x1940; CpuCopy16(gUnknown_08D00524, (void *)(VRAM + 0xC000), 0x1000); sub_800D74C(); @@ -3473,7 +3473,7 @@ void sub_8090C28(struct Sprite *sprite) sprite->pos1.x += 2; if (sprite->pos1.x > 0x78) sprite->pos1.x -= 2; - + if (sprite->pos1.y < 0x50) sprite->pos1.y += 1; if (sprite->pos1.y > 0x50) @@ -3529,7 +3529,7 @@ s8 sub_8090D90(u16 a, u8 b) u8 bit; u8 mask; s8 retVal; - + a--; index = a / 8; bit = a % 8; @@ -3585,7 +3585,7 @@ u16 GetNationalPokedexCount(u8 a) { u16 count = 0; u16 i; - + for (i = 0; i < 386; i++) { switch (a) @@ -3607,7 +3607,7 @@ u16 GetHoennPokedexCount(u8 a) { u16 count = 0; u16 i; - + for (i = 0; i < 202; i++) { switch (a) @@ -3628,7 +3628,7 @@ u16 GetHoennPokedexCount(u8 a) bool8 sub_8090FC0(void) { u16 i; - + for (i = 0; i < 200; i++) { if (sub_8090D90(HoennToNationalOrder(i + 1), 1) == 0) @@ -3640,7 +3640,7 @@ bool8 sub_8090FC0(void) u16 sub_8090FF4(void) { u16 i; - + for (i = 0; i < 150; i++) { if (sub_8090D90(i + 1, 1) == 0) @@ -3701,7 +3701,7 @@ void sub_8091060(u16 a) void sub_8091154(u16 order, u8 b, u8 c) { u8 str[4]; - + str[0] = 0xA1 + order / 100; str[1] = 0xA1 + (order % 100) / 10; str[2] = 0xA1 + (order % 100) % 10; @@ -3713,7 +3713,7 @@ u8 sub_80911C8(u16 num, u8 b, u8 c) { u8 str[11]; u8 i; - + for (i = 0; i < 11; i++) str[i] = EOS; num = NationalPokedexNumToSpecies(num); @@ -3737,7 +3737,7 @@ u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) u8 str[40]; // Not exactly sure how long this needs to be u8 *end; u8 i; - + end = StringCopy(str, gUnknown_083B5558); str[2] = d; num = NationalPokedexNumToSpecies(num); @@ -3757,19 +3757,60 @@ u8 sub_8091260(u16 num, u8 b, u8 c, u8 d) return i; } -void sub_8091304(u8 *name, u8 b, u8 c) +void sub_8091304(u8 *name, u8 left, u8 top) { u8 str[32]; // Not exactly sure how long this needs to be u8 i; +#if ENGLISH u8 j; - +#endif + for (i = 0; name[i] != EOS && i < 11; i++) str[i] = name[i]; +#if ENGLISH for (j = 0; gDexText_UnknownPoke[j] == 0xAC || gDexText_UnknownPoke[j] == 0; j++) ; j--; while (gDexText_UnknownPoke[j] != EOS) str[i++] = gDexText_UnknownPoke[j++]; +#endif str[i] = EOS; - sub_8072B80(str, b, c, gDexText_UnknownPoke); + sub_8072B80(str, left, top, gDexText_UnknownPoke); +} + +void unref_sub_80913A4(u16 a, u8 left, u8 top) +{ + u8 str[6]; + bool8 outputted = FALSE; + u8 result; + + result = a / 0x3E8; + if (result == 0) + { + str[0] = CHAR_SPACE; + outputted = FALSE; + } + else + { + str[0] = CHAR_0 + result; + outputted = TRUE; + } + + result = (a % 0x3E8) / 100; + if (result == 0 && !outputted) + { + str[1] = CHAR_SPACE; + outputted = FALSE; + } + else + { + str[1] = CHAR_0 + result; + outputted = TRUE; + } + + str[2] = CHAR_0 + ((a % 0x3E8) % 100) / 10; + str[3] = CHAR_PERIOD; + str[4] = CHAR_0 + ((a % 0x3E8) % 100) % 10; + str[5] = EOS; + MenuPrint(str, left, top); } |