Fixed CustomizedDisplay: hex value of multi-byte char in format string

This commit is contained in:
sup39 2023-02-06 23:47:07 +09:00
parent b4a9a443fe
commit 3fa675ecea
3 changed files with 9 additions and 5 deletions

View file

@ -1,4 +1,8 @@
# Changelog
## Feb 06, 2023
### Fixed 'Customized Display'
Fixed the hex value of multi-byte char in format string
## Feb 05, 2023
### Created 'Controller Input Display'
Display controller input

View file

@ -39,8 +39,8 @@ export default function codegen(version) {
const asm = [];
for (const config of configs) {
const { fmt, bgA } = config;
const { preview, format, fields } = parseFormat(fmt, version);
const { fmt: fmtRaw, bgA } = config;
const { preview, format, fields } = parseFormat(fmtRaw, version);
// fill_rect
if (bgA) {
@ -48,7 +48,7 @@ export default function codegen(version) {
}
// drawText
if (fmt.trim()) {
if (format.trim()) {
const { insts, sp } = drawText(version, config, format, fields);
stackFrameSize = Math.max(stackFrameSize, sp);
asm.push(...insts);

View file

@ -195,8 +195,8 @@ export function str2bytes(s, version) {
/** @type {Record<string, (typeof charInfoJP)[' ']>} */
const charInfo = version.startsWith('GMSJ') ? charInfoJP : charInfoEU; // TODO US
const fmtbuf = Array.from(s).flatMap((c) => {
const code = charInfo[c]?.code ?? c.charCodeAt(0);
return code >= 0x100 ? [code >> 16, code & 0xff] : [code];
const code = charInfo[c]?.code ?? c.charCodeAt(0); // TODO multi-byte invalid char
return code >= 0x100 ? [code >> 8, code & 0xff] : [code];
});
fmtbuf.push(0); // NUL terminated
return fmtbuf;