diff options
Diffstat (limited to 'src/contest_link.c')
-rw-r--r-- | src/contest_link.c | 140 |
1 files changed, 26 insertions, 114 deletions
diff --git a/src/contest_link.c b/src/contest_link.c index 974b9ef5d..a69d5ba3d 100644 --- a/src/contest_link.c +++ b/src/contest_link.c @@ -72,131 +72,43 @@ static void sub_80C8660(u8 taskId) } } -#ifdef NONMATCHING u8 GetStringLanguage(const u8 *string) { u8 language = GAME_LANGUAGE; if (string[0] == EXT_CTRL_CODE_BEGIN && string[1] == 0x15) return language; - if (StringLength(string) > 5) - return language; - for (; *string != EOS; string++) + if (StringLength(string) < OT_NAME_LENGTH - 1) { - if (!((*string >= CHAR_A && *string <= CHAR_z) || - (*string >= CHAR_0 + 0 && *string <= CHAR_0 + 9) || - *string == CHAR_SPACE || - *string == CHAR_PERIOD || - *string == CHAR_COMMA || - *string == 0xAB || - *string == CHAR_QUESTION_MARK || - *string == CHAR_MALE || - *string == CHAR_FEMALE || - *string == CHAR_SLASH || - *string == CHAR_HYPHEN || - *string == CHAR_ELLIPSIS || - *string == 0xB1 || - *string == 0xB2 || - *string == 0xB3 || - *string == 0xB1 - )) + while (*string != EOS) { - language = LANGUAGE_JAPANESE; - break; + if (((*string >= CHAR_A && *string <= CHAR_z) || + (*string >= CHAR_0 + 0 && *string <= CHAR_0 + 9) || + *string == CHAR_SPACE || + *string == CHAR_PERIOD || + *string == CHAR_COMMA || + *string == CHAR_EXCL_MARK || + *string == CHAR_QUESTION_MARK || + *string == CHAR_MALE || + *string == CHAR_FEMALE || + *string == CHAR_SLASH || + *string == CHAR_HYPHEN || + *string == CHAR_ELLIPSIS || + *string == CHAR_DBL_QUOT_LEFT || + *string == CHAR_DBL_QUOT_RIGHT || + *string == CHAR_SGL_QUOT_LEFT || + *string == CHAR_DBL_QUOT_LEFT)) // Most likely a typo, CHAR_SGL_QUOT_RIGHT should be here instead. + { + string++; + } + else + { + language = LANGUAGE_JAPANESE; + break; + } } } return language; } -#else -NAKED u8 GetStringLanguage(const u8 *string) -{ - asm_unified("\tpush {r4,r5,lr}\n" - "\tadds r4, r0, 0\n" - ".ifdef ENGLISH\n" - "\tmovs r5, 0x2\n" - ".else\n" - "\tmovs r5, 0x5\n" - ".endif\n" - "\tldrb r0, [r4]\n" - "\tcmp r0, 0xFC\n" - "\tbne _080C86B6\n" - "\tldrb r0, [r4, 0x1]\n" - "\tcmp r0, 0x15\n" - "\tbne _080C86B6\n" - ".ifdef ENGLISH\n" - "\tmovs r0, 0x2\n" - ".else\n" - "\tmovs r0, 0x5\n" - ".endif\n" - "\tb _080C872C\n" - "_080C86B6:\n" - "\tadds r0, r4, 0\n" - "\tbl StringLength\n" - "\tlsls r0, 16\n" - "\tlsrs r0, 16\n" - "\tcmp r0, 0x5\n" - "\tbhi _080C872A\n" - "\tldrb r0, [r4]\n" - "\tcmp r0, 0xFF\n" - "\tbeq _080C872A\n" - "_080C86CA:\n" - "\tldrb r1, [r4]\n" - "\tadds r0, r1, 0\n" - "\tadds r0, 0x45\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x33\n" - "\tbls _080C871E\n" - "\tadds r0, r1, 0\n" - "\tadds r0, 0x5F\n" - "\tlsls r0, 24\n" - "\tlsrs r0, 24\n" - "\tcmp r0, 0x9\n" - "\tbls _080C871E\n" - "\tadds r0, r1, 0\n" - "\tcmp r0, 0\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xAD\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xB8\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xAB\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xAC\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xB5\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xB6\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xBA\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xAE\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xB0\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xB1\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xB2\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xB3\n" - "\tbeq _080C871E\n" - "\tcmp r0, 0xB1\n" - "\tbne _080C8728\n" - "_080C871E:\n" - "\tadds r4, 0x1\n" - "\tldrb r0, [r4]\n" - "\tcmp r0, 0xFF\n" - "\tbne _080C86CA\n" - "\tb _080C872A\n" - "_080C8728:\n" - "\tmovs r5, 0x1\n" - "_080C872A:\n" - "\tadds r0, r5, 0\n" - "_080C872C:\n" - "\tpop {r4,r5}\n" - "\tpop {r1}\n" - "\tbx r1"); -} -#endif void sub_80C8734(u8 taskId) { |