Merge branch 'master' into unk_02009EAC

This commit is contained in:
Rémi Calixte 2021-08-18 18:18:11 +02:00
commit 99b7ee252d
7 changed files with 361 additions and 246 deletions

View File

@ -49,7 +49,7 @@ Static arm9
Object unk_02014590.o
Object unk_02014BF4.o
Object unk_02015CC0.o
Object unk_02015D14.o
Object rs_migrate_string.o
Object unk_02015E30.o
Object game_init.o
Object heap.o

View File

@ -1,238 +0,0 @@
.include "asm/macros.inc"
.include "global.inc"
.section .rodata
.global UNK_020ED734
UNK_020ED734: ; 0x020ED734
.short 0x0001, 0x01DE, 0x0003, 0x0003, 0x0005, 0x0005, 0x0007, 0x0007
.short 0x0009, 0x0009, 0x000B, 0x000B, 0x000C, 0x000C, 0x000E, 0x000E
.short 0x0010, 0x0010, 0x0012, 0x0012, 0x0014, 0x0014, 0x0016, 0x0016
.short 0x0018, 0x0018, 0x001A, 0x001A, 0x001C, 0x001C, 0x001E, 0x001E
.short 0x0020, 0x0020, 0x0022, 0x0022, 0x0025, 0x0025, 0x0027, 0x0027
.short 0x0029, 0x0029, 0x002B, 0x002B, 0x002C, 0x002C, 0x002D, 0x002D
.short 0x002E, 0x002E, 0x002F, 0x002F, 0x0030, 0x0030, 0x0033, 0x0033
.short 0x0036, 0x0036, 0x0039, 0x0039, 0x003C, 0x003C, 0x003F, 0x003F
.short 0x0040, 0x0040, 0x0041, 0x0041, 0x0042, 0x0042, 0x0043, 0x0043
.short 0x0045, 0x0045, 0x0047, 0x0047, 0x0049, 0x0049, 0x004A, 0x004A
.short 0x004B, 0x004B, 0x004C, 0x004C, 0x004D, 0x004D, 0x004E, 0x004E
.short 0x004F, 0x004F, 0x0050, 0x0050, 0x0051, 0x0051, 0x0002, 0x0002
.short 0x0004, 0x0004, 0x0006, 0x0006, 0x0008, 0x0008, 0x000A, 0x000A
.short 0x0044, 0x0044, 0x0046, 0x0046, 0x0048, 0x0048, 0x000D, 0x000D
.short 0x000F, 0x000F, 0x0011, 0x0011, 0x0013, 0x0013, 0x0015, 0x0015
.short 0x0017, 0x0017, 0x0019, 0x0019, 0x001B, 0x001B, 0x001D, 0x001D
.short 0x001F, 0x001F, 0x0021, 0x0021, 0x0023, 0x0023, 0x0026, 0x0026
.short 0x0028, 0x0028, 0x002A, 0x002A, 0x0031, 0x0031, 0x0034, 0x0034
.short 0x0037, 0x0037, 0x003A, 0x003A, 0x003D, 0x003D, 0x0032, 0x0032
.short 0x0035, 0x0035, 0x0038, 0x0038, 0x003B, 0x003B, 0x003E, 0x003E
.short 0x0024, 0x0024, 0x0053, 0x0053, 0x0055, 0x0055, 0x0057, 0x0057
.short 0x0059, 0x0059, 0x005B, 0x005B, 0x005C, 0x005C, 0x005E, 0x005E
.short 0x0060, 0x0060, 0x0062, 0x0062, 0x0064, 0x0064, 0x0066, 0x0066
.short 0x0068, 0x0068, 0x006A, 0x006A, 0x006C, 0x006C, 0x006E, 0x006E
.short 0x0070, 0x0070, 0x0072, 0x0072, 0x0075, 0x0075, 0x0077, 0x0077
.short 0x0079, 0x0079, 0x007B, 0x007B, 0x007C, 0x007C, 0x007D, 0x007D
.short 0x007E, 0x007E, 0x007F, 0x007F, 0x0080, 0x0080, 0x0083, 0x0083
.short 0x0086, 0x0086, 0x0089, 0x0089, 0x008C, 0x008C, 0x008F, 0x008F
.short 0x0090, 0x0090, 0x0091, 0x0091, 0x0092, 0x0092, 0x0093, 0x0093
.short 0x0095, 0x0095, 0x0097, 0x0097, 0x0099, 0x0099, 0x009A, 0x009A
.short 0x009B, 0x009B, 0x009C, 0x009C, 0x009D, 0x009D, 0x009E, 0x009E
.short 0x009F, 0x009F, 0x00A0, 0x00A0, 0x00A1, 0x00A1, 0x0052, 0x0052
.short 0x0054, 0x0054, 0x0056, 0x0056, 0x0058, 0x0058, 0x005A, 0x005A
.short 0x0094, 0x0094, 0x0096, 0x0096, 0x0098, 0x0098, 0x005D, 0x005D
.short 0x005F, 0x005F, 0x0061, 0x0061, 0x0063, 0x0063, 0x0065, 0x0065
.short 0x0067, 0x0067, 0x0069, 0x0069, 0x006B, 0x006B, 0x006D, 0x006D
.short 0x006F, 0x006F, 0x0071, 0x0071, 0x0073, 0x0073, 0x0076, 0x0076
.short 0x0078, 0x0078, 0x007A, 0x007A, 0x0081, 0x0081, 0x0084, 0x0084
.short 0x0087, 0x0087, 0x008A, 0x008A, 0x008D, 0x008D, 0x0082, 0x0082
.short 0x0085, 0x0085, 0x0088, 0x0088, 0x008B, 0x008B, 0x008E, 0x008E
.short 0x0074, 0x0074, 0x00A2, 0x0121, 0x00A3, 0x0122, 0x00A4, 0x0123
.short 0x00A5, 0x0124, 0x00A6, 0x0125, 0x00A7, 0x0126, 0x00A8, 0x0127
.short 0x00A9, 0x0128, 0x00AA, 0x0129, 0x00AB, 0x012A, 0x00E1, 0x01AB
.short 0x00E2, 0x01AC, 0x00E4, 0x01AE, 0x00F1, 0x01BE, 0x00E6, 0x01B0
.short 0x00E5, 0x01AF, 0x00EA, 0x00EA, 0x00EB, 0x00EB, 0x00E8, 0x01B2
.short 0x00E9, 0x01B3, 0x00EE, 0x01BB, 0x00EF, 0x01BC, 0x0112, 0x0112
.short 0x00E3, 0x01AD, 0x00F2, 0x0176, 0x00E7, 0x01B1, 0x00AC, 0x012B
.short 0x00AD, 0x012C, 0x00AE, 0x012D, 0x00AF, 0x012E, 0x00B0, 0x012F
.short 0x00B1, 0x0130, 0x00B2, 0x0131, 0x00B3, 0x0132, 0x00B4, 0x0133
.short 0x00B5, 0x0134, 0x00B6, 0x0135, 0x00B7, 0x0136, 0x00B8, 0x0137
.short 0x00B9, 0x0138, 0x00BA, 0x0139, 0x00BB, 0x013A, 0x00BC, 0x013B
.short 0x00BD, 0x013C, 0x00BE, 0x013D, 0x00BF, 0x013E, 0x00C0, 0x013F
.short 0x00C1, 0x0140, 0x00C2, 0x0141, 0x00C3, 0x0142, 0x00C4, 0x0143
.short 0x00C5, 0x0144, 0x00C6, 0x0145, 0x00C7, 0x0146, 0x00C8, 0x0147
.short 0x00C9, 0x0148, 0x00CA, 0x0149, 0x00CB, 0x014A, 0x00CC, 0x014B
.short 0x00CD, 0x014C, 0x00CE, 0x014D, 0x00CF, 0x014E, 0x00D0, 0x014F
.short 0x00D1, 0x0150, 0x00D2, 0x0151, 0x00D3, 0x0152, 0x00D4, 0x0153
.short 0x00D5, 0x0154, 0x00D6, 0x0155, 0x00D7, 0x0156, 0x00D8, 0x0157
.short 0x00D9, 0x0158, 0x00DA, 0x0159, 0x00DB, 0x015A, 0x00DC, 0x015B
.short 0x00DD, 0x015C, 0x00DE, 0x015D, 0x00DF, 0x015E, 0x011F, 0x011F
.short 0x00F6, 0x01C4, 0x0163, 0x0163, 0x0175, 0x0175, 0x017B, 0x017B
.short 0x0183, 0x0183, 0x0195, 0x0195, 0x019B, 0x019B
.text
thumb_func_start FUN_02015D14
FUN_02015D14: ; 0x02015D14
cmp r0, #0x7
bhi _02015D34
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02015D24: ; jump table (using 16-bit offset)
.short _02015D34 - _02015D24 - 2; case 0
.short _02015D34 - _02015D24 - 2; case 1
.short _02015D38 - _02015D24 - 2; case 2
.short _02015D3E - _02015D24 - 2; case 3
.short _02015D38 - _02015D24 - 2; case 4
.short _02015D42 - _02015D24 - 2; case 5
.short _02015D34 - _02015D24 - 2; case 6
.short _02015D38 - _02015D24 - 2; case 7
_02015D34:
mov r0, #0xea
bx lr
_02015D38:
mov r0, #0x6d
lsl r0, r0, #0x2
bx lr
_02015D3E:
ldr r0, _02015D48 ; =0x000001B7
bx lr
_02015D42:
ldr r0, _02015D4C ; =0x000001B6
bx lr
nop
_02015D48: .word 0x000001B7
_02015D4C: .word 0x000001B6
thumb_func_start FUN_02015D50
FUN_02015D50: ; 0x02015D50
cmp r0, #0x7
bhi _02015D70
add r0, r0, r0
add r0, pc
ldrh r0, [r0, #0x6]
lsl r0, r0, #0x10
asr r0, r0, #0x10
add pc, r0
_02015D60: ; jump table (using 16-bit offset)
.short _02015D70 - _02015D60 - 2; case 0
.short _02015D70 - _02015D60 - 2; case 1
.short _02015D74 - _02015D60 - 2; case 2
.short _02015D78 - _02015D60 - 2; case 3
.short _02015D74 - _02015D60 - 2; case 4
.short _02015D7E - _02015D60 - 2; case 5
.short _02015D70 - _02015D60 - 2; case 6
.short _02015D74 - _02015D60 - 2; case 7
_02015D70:
mov r0, #0xeb
bx lr
_02015D74:
ldr r0, _02015D84 ; =0x000001B5
bx lr
_02015D78:
mov r0, #0x6e
lsl r0, r0, #0x2
bx lr
_02015D7E:
mov r0, #0x6d
lsl r0, r0, #0x2
bx lr
.balign 4
_02015D84: .word 0x000001B5
thumb_func_start FUN_02015D88
FUN_02015D88: ; 0x02015D88
push {r3-r7, lr}
sub sp, #0x10
add r6, r3, #0x0
str r0, [sp, #0x0]
str r1, [sp, #0x4]
str r2, [sp, #0x8]
cmp r6, #0x1
beq _02015D9C
mov r2, #0x1
b _02015D9E
_02015D9C:
mov r2, #0x0
_02015D9E:
ldr r0, [sp, #0x8]
mov r4, #0x0
sub r0, r0, #0x1
str r0, [sp, #0xc]
beq _02015E18
ldr r1, _02015E28 ; =UNK_020ED734
lsl r0, r2, #0x1
ldr r5, [sp, #0x4]
add r7, r1, r0
_02015DB0:
ldr r0, [sp, #0x0]
ldrb r0, [r0, r4]
cmp r0, #0xff
beq _02015E18
cmp r0, #0xf7
blo _02015DEA
ldr r0, [sp, #0x8]
sub r3, r0, #0x1
cmp r3, #0xa
blo _02015DC6
mov r3, #0xa
_02015DC6:
mov r1, #0x0
cmp r3, #0x0
ble _02015DDC
mov r0, #0x6b
ldr r2, [sp, #0x4]
lsl r0, r0, #0x2
_02015DD2:
add r1, r1, #0x1
strh r0, [r2, #0x0]
add r2, r2, #0x2
cmp r1, r3
blt _02015DD2
_02015DDC:
ldr r0, [sp, #0x4]
ldr r2, _02015E2C ; =0x0000FFFF
lsl r1, r1, #0x1
strh r2, [r0, r1]
add sp, #0x10
mov r0, #0x0
pop {r3-r7, pc}
_02015DEA:
lsl r0, r0, #0x2
ldrh r0, [r7, r0]
cmp r0, #0xea
beq _02015DF8
cmp r0, #0xeb
beq _02015E02
b _02015E0C
_02015DF8:
add r0, r6, #0x0
bl FUN_02015D14
strh r0, [r5, #0x0]
b _02015E0E
_02015E02:
add r0, r6, #0x0
bl FUN_02015D50
strh r0, [r5, #0x0]
b _02015E0E
_02015E0C:
strh r0, [r5, #0x0]
_02015E0E:
ldr r0, [sp, #0xc]
add r4, r4, #0x1
add r5, r5, #0x2
cmp r4, r0
blo _02015DB0
_02015E18:
ldr r2, _02015E2C ; =0x0000FFFF
ldr r0, [sp, #0x4]
lsl r1, r4, #0x1
strh r2, [r0, r1]
mov r0, #0x1
add sp, #0x10
pop {r3-r7, pc}
nop
_02015E28: .word UNK_020ED734
_02015E2C: .word 0x0000FFFF

View File

@ -1002,7 +1002,7 @@
.extern FUN_02015CC0
.extern FUN_02015CE0
.extern FUN_02015CF8
.extern FUN_02015D88
.extern ConvertRSStringToDPStringInternational
.extern FUN_02015E30
.extern FUN_02015E3C
.extern FUN_02015E60

View File

@ -17094,7 +17094,7 @@ _02235B7C:
add r0, r4, r0
add r0, r1, r0
add r1, sp, #0
bl FUN_02015D88
bl ConvertRSStringToDPStringInternational
add r0, sp, #0
str r0, [sp, #0x4c]
add r0, r5, #0
@ -17237,7 +17237,7 @@ _02235CCA:
add r0, #2
add r1, sp, #8
mov r2, #0xb
bl FUN_02015D88
bl ConvertRSStringToDPStringInternational
add r0, sp, #8
str r0, [sp, #0x64]
mov r0, #0
@ -18156,7 +18156,7 @@ MOD83_02236484: ; 0x02236484
add r0, r4, #0
add r1, sp, #8
mov r2, #8
bl FUN_02015D88
bl ConvertRSStringToDPStringInternational
mov r0, #0x4e
bl ScrStrBufs_new
add r4, r0, #0
@ -22504,7 +22504,7 @@ _022384FE:
add r0, sp, #0x24
add r1, sp, #0xc
mov r2, #0xc
bl FUN_02015D88
bl ConvertRSStringToDPStringInternational
add r0, r4, #0
mov r1, #0x75
add r2, sp, #0xc
@ -22541,7 +22541,7 @@ _0223853E:
add r0, sp, #0x24
add r1, sp, #0xc
mov r2, #8
bl FUN_02015D88
bl ConvertRSStringToDPStringInternational
add r0, r4, #0
mov r1, #0x8f
add r2, sp, #0xc

View File

@ -0,0 +1,327 @@
#include "global.h"
#include "string_util.h"
#include "rs_migrate_string.h"
static const u16 conversion_table[][2] = {
{0x0001, 0x01DE}, // <space>
{0x0003, 0x0003}, // あ
{0x0005, 0x0005}, // い
{0x0007, 0x0007}, // う
{0x0009, 0x0009}, // え
{0x000B, 0x000B}, // お
{0x000C, 0x000C}, // か
{0x000E, 0x000E}, // き
{0x0010, 0x0010}, // く
{0x0012, 0x0012}, // け
{0x0014, 0x0014}, // こ
{0x0016, 0x0016}, // さ
{0x0018, 0x0018}, // し
{0x001A, 0x001A}, // す
{0x001C, 0x001C}, // せ
{0x001E, 0x001E}, // そ
{0x0020, 0x0020}, // た
{0x0022, 0x0022}, // ち
{0x0025, 0x0025}, // つ
{0x0027, 0x0027}, // て
{0x0029, 0x0029}, // と
{0x002B, 0x002B}, // な
{0x002C, 0x002C}, // に
{0x002D, 0x002D}, // ぬ
{0x002E, 0x002E}, // ね
{0x002F, 0x002F}, // の
{0x0030, 0x0030}, // は
{0x0033, 0x0033}, // ひ
{0x0036, 0x0036}, // ふ
{0x0039, 0x0039}, // へ
{0x003C, 0x003C}, // ほ
{0x003F, 0x003F}, // ま
{0x0040, 0x0040}, // み
{0x0041, 0x0041}, // む
{0x0042, 0x0042}, // め
{0x0043, 0x0043}, // も
{0x0045, 0x0045}, // や
{0x0047, 0x0047}, // ゆ
{0x0049, 0x0049}, // よ
{0x004A, 0x004A}, // ら
{0x004B, 0x004B}, // り
{0x004C, 0x004C}, // る
{0x004D, 0x004D}, // れ
{0x004E, 0x004E}, // ろ
{0x004F, 0x004F}, // わ
{0x0050, 0x0050}, // を
{0x0051, 0x0051}, // ん
{0x0002, 0x0002}, // ぁ
{0x0004, 0x0004}, // ぃ
{0x0006, 0x0006}, // ぅ
{0x0008, 0x0008}, // ぇ
{0x000A, 0x000A}, // ぉ
{0x0044, 0x0044}, // ゃ
{0x0046, 0x0046}, // ゅ
{0x0048, 0x0048}, // ょ
{0x000D, 0x000D}, // が
{0x000F, 0x000F}, // ぎ
{0x0011, 0x0011}, // ぐ
{0x0013, 0x0013}, // げ
{0x0015, 0x0015}, // ご
{0x0017, 0x0017}, // ざ
{0x0019, 0x0019}, // じ
{0x001B, 0x001B}, // ず
{0x001D, 0x001D}, // ぜ
{0x001F, 0x001F}, // ぞ
{0x0021, 0x0021}, // だ
{0x0023, 0x0023}, // ぢ
{0x0026, 0x0026}, // づ
{0x0028, 0x0028}, // で
{0x002A, 0x002A}, // ど
{0x0031, 0x0031}, // ば
{0x0034, 0x0034}, // び
{0x0037, 0x0037}, // ぶ
{0x003A, 0x003A}, // べ
{0x003D, 0x003D}, // ぼ
{0x0032, 0x0032}, // ぱ
{0x0035, 0x0035}, // ぴ
{0x0038, 0x0038}, // ぷ
{0x003B, 0x003B}, // ぺ
{0x003E, 0x003E}, // ぽ
{0x0024, 0x0024}, // っ
{0x0053, 0x0053}, // ア
{0x0055, 0x0055}, // イ
{0x0057, 0x0057}, // ウ
{0x0059, 0x0059}, // エ
{0x005B, 0x005B}, // オ
{0x005C, 0x005C}, // カ
{0x005E, 0x005E}, // キ
{0x0060, 0x0060}, // ク
{0x0062, 0x0062}, // ケ
{0x0064, 0x0064}, // コ
{0x0066, 0x0066}, // サ
{0x0068, 0x0068}, // シ
{0x006A, 0x006A}, // ス
{0x006C, 0x006C}, // セ
{0x006E, 0x006E}, // ソ
{0x0070, 0x0070}, // タ
{0x0072, 0x0072}, // チ
{0x0075, 0x0075}, // ツ
{0x0077, 0x0077}, // テ
{0x0079, 0x0079}, // ト
{0x007B, 0x007B}, // ナ
{0x007C, 0x007C}, // ニ
{0x007D, 0x007D}, // ヌ
{0x007E, 0x007E}, // ネ
{0x007F, 0x007F}, //
{0x0080, 0x0080}, // ハ
{0x0083, 0x0083}, // ヒ
{0x0086, 0x0086}, // フ
{0x0089, 0x0089}, // ヘ
{0x008C, 0x008C}, // ホ
{0x008F, 0x008F}, // マ
{0x0090, 0x0090}, // ミ
{0x0091, 0x0091}, // ム
{0x0092, 0x0092}, // メ
{0x0093, 0x0093}, // モ
{0x0095, 0x0095}, // ヤ
{0x0097, 0x0097}, // ユ
{0x0099, 0x0099}, // ヨ
{0x009A, 0x009A}, // ラ
{0x009B, 0x009B}, // リ
{0x009C, 0x009C}, // ル
{0x009D, 0x009D}, // レ
{0x009E, 0x009E}, // ロ
{0x009F, 0x009F}, // ワ
{0x00A0, 0x00A0}, // ヲ
{0x00A1, 0x00A1}, // ン
{0x0052, 0x0052}, // ァ
{0x0054, 0x0054}, // ィ
{0x0056, 0x0056}, // ゥ
{0x0058, 0x0058}, // ェ
{0x005A, 0x005A}, // ォ
{0x0094, 0x0094}, // ャ
{0x0096, 0x0096}, // ュ
{0x0098, 0x0098}, // ョ
{0x005D, 0x005D}, // ガ
{0x005F, 0x005F}, // ギ
{0x0061, 0x0061}, // グ
{0x0063, 0x0063}, // ゲ
{0x0065, 0x0065}, // ゴ
{0x0067, 0x0067}, // ザ
{0x0069, 0x0069}, // ジ
{0x006B, 0x006B}, // ズ
{0x006D, 0x006D}, // ゼ
{0x006F, 0x006F}, // ゾ
{0x0071, 0x0071}, // ダ
{0x0073, 0x0073}, // ヂ
{0x0076, 0x0076}, // ヅ
{0x0078, 0x0078}, // デ
{0x007A, 0x007A}, // ド
{0x0081, 0x0081}, // バ
{0x0084, 0x0084}, // ビ
{0x0087, 0x0087}, // ブ
{0x008A, 0x008A}, // ベ
{0x008D, 0x008D}, // ボ
{0x0082, 0x0082}, // パ
{0x0085, 0x0085}, // ピ
{0x0088, 0x0088}, // プ
{0x008B, 0x008B}, // ペ
{0x008E, 0x008E}, // ポ
{0x0074, 0x0074}, // ッ
{0x00A2, 0x0121}, // 0
{0x00A3, 0x0122}, // 1
{0x00A4, 0x0123}, // 2
{0x00A5, 0x0124}, // 3
{0x00A6, 0x0125}, // 4
{0x00A7, 0x0126}, // 5
{0x00A8, 0x0127}, // 6
{0x00A9, 0x0128}, // 7
{0x00AA, 0x0129}, // 8
{0x00AB, 0x012A}, // 9
{0x00E1, 0x01AB}, // !
{0x00E2, 0x01AC}, // ?
{0x00E4, 0x01AE}, // .
{0x00F1, 0x01BE}, // -
{0x00E6, 0x01B0}, // ·
{0x00E5, 0x01AF}, // …
{0x00EA, 0x00EA}, // “
{0x00EB, 0x00EB}, // ”
{0x00E8, 0x01B2}, //
{0x00E9, 0x01B3}, // '
{0x00EE, 0x01BB}, // ♂
{0x00EF, 0x01BC}, // ♀
{0x0112, 0x0112}, // ¥
{0x00E3, 0x01AD}, // ,
{0x00F2, 0x0176}, // ×
{0x00E7, 0x01B1}, // /
{0x00AC, 0x012B}, // A
{0x00AD, 0x012C}, // B
{0x00AE, 0x012D}, // C
{0x00AF, 0x012E}, // D
{0x00B0, 0x012F}, // E
{0x00B1, 0x0130}, // F
{0x00B2, 0x0131}, // G
{0x00B3, 0x0132}, // H
{0x00B4, 0x0133}, // I
{0x00B5, 0x0134}, // J
{0x00B6, 0x0135}, // K
{0x00B7, 0x0136}, // L
{0x00B8, 0x0137}, // M
{0x00B9, 0x0138}, // N
{0x00BA, 0x0139}, // O
{0x00BB, 0x013A}, // P
{0x00BC, 0x013B}, // Q
{0x00BD, 0x013C}, // R
{0x00BE, 0x013D}, // S
{0x00BF, 0x013E}, // T
{0x00C0, 0x013F}, // U
{0x00C1, 0x0140}, // V
{0x00C2, 0x0141}, // W
{0x00C3, 0x0142}, // X
{0x00C4, 0x0143}, // Y
{0x00C5, 0x0144}, // Z
{0x00C6, 0x0145}, // a
{0x00C7, 0x0146}, // b
{0x00C8, 0x0147}, // c
{0x00C9, 0x0148}, // d
{0x00CA, 0x0149}, // e
{0x00CB, 0x014A}, // f
{0x00CC, 0x014B}, // g
{0x00CD, 0x014C}, // h
{0x00CE, 0x014D}, // i
{0x00CF, 0x014E}, // j
{0x00D0, 0x014F}, // k
{0x00D1, 0x0150}, // l
{0x00D2, 0x0151}, // m
{0x00D3, 0x0152}, // n
{0x00D4, 0x0153}, // o
{0x00D5, 0x0154}, // p
{0x00D6, 0x0155}, // q
{0x00D7, 0x0156}, // r
{0x00D8, 0x0157}, // s
{0x00D9, 0x0158}, // t
{0x00DA, 0x0159}, // u
{0x00DB, 0x015A}, // v
{0x00DC, 0x015B}, // w
{0x00DD, 0x015C}, // x
{0x00DE, 0x015D}, // y
{0x00DF, 0x015E}, // z
{0x011F, 0x011F}, // ▶
{0x00F6, 0x01C4}, // :
{0x0163, 0x0163}, // Ä
{0x0175, 0x0175}, // Ö
{0x017B, 0x017B}, // Ü
{0x0183, 0x0183}, // ä
{0x0195, 0x0195}, // ö
{0x019B, 0x019B}, // ü
};
static THUMB_FUNC u16 GetOpeningQuote(u32 language)
{
switch (language)
{
default:
return 0xEA;
case LANGUAGE_ENGLISH:
case LANGUAGE_ITALIAN:
case LANGUAGE_SPANISH:
return 0x1B4;
case LANGUAGE_FRENCH:
return 0x1B7;
case LANGUAGE_GERMAN:
return 0x1B6;
}
}
static THUMB_FUNC u16 GetClosingQuote(u32 language)
{
switch (language)
{
default:
return 0xEB;
case LANGUAGE_ENGLISH:
case LANGUAGE_ITALIAN:
case LANGUAGE_SPANISH:
return 0x1B5;
case LANGUAGE_FRENCH:
return 0x1B8;
case LANGUAGE_GERMAN:
return 0x1B4;
}
}
THUMB_FUNC BOOL ConvertRSStringToDPStringInternational(const u8 * rs_str, u16 * dp_str, u32 length, u32 language)
{
BOOL notFullWidth;
u32 i;
notFullWidth = (language != LANGUAGE_JAPANESE);
for (i = 0; i < length - 1; i++)
{
if (rs_str[i] == 0xFF) // RS: EOS
break;
if (rs_str[i] >= 0xF7) // RS: DYNAMIC
{
// If we're here, the provided name is corrupt.
// Fill it with question marks.
s32 r3 = (s32)((length - 1) < 10 ? (length - 1) : 10);
s32 r1;
for (r1 = 0; r1 < r3; r1++)
{
dp_str[r1] = 0x1AC; // DP: ?
}
dp_str[r1] = EOS;
return FALSE;
}
switch (conversion_table[rs_str[i]][notFullWidth])
{
case 0xEA: // RS: Opening double quote
dp_str[i] = GetOpeningQuote(language);
break;
case 0xEB: // RS: Closing double quote
dp_str[i] = GetClosingQuote(language);
break;
default:
dp_str[i] = conversion_table[rs_str[i]][notFullWidth];
break;
}
}
dp_str[i] = EOS;
return TRUE;
}

View File

@ -282,7 +282,7 @@ THUMB_FUNC void GenerateFontHalfRowLookupTable(u8 fgColor, u8 bgColor, u8 shadow
sp20[2] = shadowColor;
sp20[3] = bgColor;
// FIXME: Need these to be accessed by a pointer to UNK_021C570C
// These are accessed by a pointer to UNK_021C570C due to -ipa file
UNK_021C5712 = bgColor;
UNK_021C570E = fgColor;
UNK_021C5710 = shadowColor;

View File

@ -0,0 +1,26 @@
#ifndef POKEDIAMOND_UNK_02015D14_H
#define POKEDIAMOND_UNK_02015D14_H
// --------------------------------------------
// ConvertRSStringToDPStringInternational
// ============================================
// Param rs_str: Pointer to u8 representing
// the name of a Pokemon or
// its OT when migrating from
// Advanced Gameboy.
// Param dp_str: Pointer to u16 representing
// the destination string buffer
// for migration to Diamond
// or Pearl.
// Param length: The length of the string
// to convert, including the
// terminator byte.
// Param language: Game language of origin.
// See include/config.h.
// Return: TRUE if the conversion was completed
// successfully. Otherwise, dp_str will
// be filled with up to 10 question mark
// characters.
BOOL ConvertRSStringToDPStringInternational(const u8 * rs_str, u16 * dp_str, u32 length, u32 language);
#endif //POKEDIAMOND_UNK_02015D14_H