mirror of
https://github.com/zeldaret/oot.git
synced 2025-02-05 03:34:20 +00:00
[iQue] Match z_kanfont (#2428)
This commit is contained in:
parent
161c789886
commit
c76d2a8a4d
5 changed files with 56 additions and 16 deletions
2
Makefile
2
Makefile
|
@ -578,7 +578,7 @@ EGCS_O_FILES += $(BUILD_DIR)/src/boot/z_std_dma.o
|
||||||
# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_actor.o
|
# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_actor.o
|
||||||
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_common_data.o
|
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_common_data.o
|
||||||
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_construct.o
|
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_construct.o
|
||||||
# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_kanfont.o
|
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_kanfont.o
|
||||||
# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_message.o
|
# EGCS_O_FILES += $(BUILD_DIR)/src/code/z_message.o
|
||||||
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_parameter.o
|
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_parameter.o
|
||||||
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_sram.o
|
EGCS_O_FILES += $(BUILD_DIR)/src/code/z_sram.o
|
||||||
|
|
|
@ -74,6 +74,9 @@ void CutsceneFlags_Unset(PlayState* play, s16 flag);
|
||||||
s32 CutsceneFlags_Get(PlayState* play, s16 flag);
|
s32 CutsceneFlags_Get(PlayState* play, s16 flag);
|
||||||
|
|
||||||
s32 Kanji_OffsetFromShiftJIS(s32 character);
|
s32 Kanji_OffsetFromShiftJIS(s32 character);
|
||||||
|
#if PLATFORM_IQUE
|
||||||
|
void Font_LoadCharCHN(Font* font, u16 character, u16 codePointIndex);
|
||||||
|
#endif
|
||||||
void Font_LoadCharWide(Font* font, u16 character, u16 codePointIndex);
|
void Font_LoadCharWide(Font* font, u16 character, u16 codePointIndex);
|
||||||
void Font_LoadChar(Font* font, u8 character, u16 codePointIndex);
|
void Font_LoadChar(Font* font, u8 character, u16 codePointIndex);
|
||||||
void Font_LoadMessageBoxIcon(Font* font, u16 icon);
|
void Font_LoadMessageBoxIcon(Font* font, u16 icon);
|
||||||
|
|
|
@ -47,9 +47,6 @@ typedef struct MessageTableEntry {
|
||||||
|
|
||||||
#define DEFINE_MESSAGE_FFFC(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \
|
#define DEFINE_MESSAGE_FFFC(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \
|
||||||
DEFINE_MESSAGE_JPN(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage)
|
DEFINE_MESSAGE_JPN(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage)
|
||||||
|
|
||||||
#define FONT_MESSAGE_OFFSET (_message_0xFFFC_jpn - (const char*)_jpn_message_data_staticSegmentStart)
|
|
||||||
#define FONT_MESSAGE_LENGTH (_message_0xFFFD_jpn - _message_0xFFFC_jpn)
|
|
||||||
#else
|
#else
|
||||||
#define DEFINE_MESSAGE_NES(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \
|
#define DEFINE_MESSAGE_NES(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \
|
||||||
extern const char _message_##textId##_nes[]; \
|
extern const char _message_##textId##_nes[]; \
|
||||||
|
@ -61,9 +58,6 @@ typedef struct MessageTableEntry {
|
||||||
|
|
||||||
#define DEFINE_MESSAGE_FFFC(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \
|
#define DEFINE_MESSAGE_FFFC(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \
|
||||||
DEFINE_MESSAGE_NES(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage)
|
DEFINE_MESSAGE_NES(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage)
|
||||||
|
|
||||||
#define FONT_MESSAGE_OFFSET (_message_0xFFFC_nes - (const char*)_nes_message_data_staticSegmentStart)
|
|
||||||
#define FONT_MESSAGE_LENGTH (_message_0xFFFD_nes - _message_0xFFFC_nes)
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define DEFINE_MESSAGE(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \
|
#define DEFINE_MESSAGE(textId, type, yPos, jpnMessage, nesMessage, gerMessage, fraMessage) \
|
||||||
|
|
|
@ -19,13 +19,21 @@ void Font_LoadCharWide(Font* font, u16 character, u16 codePointIndex) {
|
||||||
* at `codePointIndex`. The value of `character` is the ASCII codepoint subtract ' '/0x20.
|
* at `codePointIndex`. The value of `character` is the ASCII codepoint subtract ' '/0x20.
|
||||||
*/
|
*/
|
||||||
void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) {
|
void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) {
|
||||||
u8 charTmp = character;
|
s32 offset = character * FONT_CHAR_TEX_SIZE;
|
||||||
|
|
||||||
DMA_REQUEST_SYNC(&font->charTexBuf[codePointIndex],
|
DMA_REQUEST_SYNC(&font->charTexBuf[codePointIndex], (uintptr_t)_nes_font_staticSegmentRomStart + offset,
|
||||||
(uintptr_t)_nes_font_staticSegmentRomStart + charTmp * FONT_CHAR_TEX_SIZE, FONT_CHAR_TEX_SIZE,
|
FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 93);
|
||||||
"../z_kanfont.c", 93);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if PLATFORM_IQUE
|
||||||
|
void Font_LoadCharCHN(Font* font, u16 character, u16 codePointIndex) {
|
||||||
|
s32 offset = character * FONT_CHAR_TEX_SIZE;
|
||||||
|
|
||||||
|
DMA_REQUEST_SYNC(&font->charTexBuf[codePointIndex], (uintptr_t)_nes_font_staticSegmentRomStart + offset,
|
||||||
|
FONT_CHAR_TEX_SIZE, "../z_kanfont.c", UNK_LINE);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Loads a message box icon from message_static, such as the ending triangle/square or choice arrow into the
|
* Loads a message box icon from message_static, such as the ending triangle/square or choice arrow into the
|
||||||
* icon buffer.
|
* icon buffer.
|
||||||
|
@ -48,18 +56,23 @@ void Font_LoadOrderedFont(Font* font) {
|
||||||
s32 codePointIndex;
|
s32 codePointIndex;
|
||||||
s32 fontBufIndex;
|
s32 fontBufIndex;
|
||||||
u32 offset;
|
u32 offset;
|
||||||
|
const char* messageDataStart;
|
||||||
|
u16* msgBufWide;
|
||||||
|
|
||||||
font->msgOffset = FONT_MESSAGE_OFFSET;
|
#if OOT_NTSC && !PLATFORM_IQUE
|
||||||
size = font->msgLength = FONT_MESSAGE_LENGTH;
|
messageDataStart = (const char*)_jpn_message_data_staticSegmentStart;
|
||||||
|
font->msgOffset = _message_0xFFFC_jpn - messageDataStart;
|
||||||
#if OOT_NTSC
|
size = font->msgLength = _message_0xFFFD_jpn - _message_0xFFFC_jpn;
|
||||||
len = (u32)size / 2;
|
len = (u32)size / 2;
|
||||||
DMA_REQUEST_SYNC(font->msgBufWide, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, size,
|
DMA_REQUEST_SYNC(font->msgBufWide, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, size,
|
||||||
"../z_kanfont.c", UNK_LINE);
|
"../z_kanfont.c", UNK_LINE);
|
||||||
|
|
||||||
|
PRINTF("msg_data=%x, msg_data0=%x jj=%x\n", font->msgOffset, font->msgLength, len);
|
||||||
|
|
||||||
fontBufIndex = 0;
|
fontBufIndex = 0;
|
||||||
for (codePointIndex = 0; font->msgBufWide[codePointIndex] != MESSAGE_WIDE_END; codePointIndex++) {
|
for (codePointIndex = 0; font->msgBufWide[codePointIndex] != MESSAGE_WIDE_END; codePointIndex++) {
|
||||||
if (len < codePointIndex) {
|
if (len < codePointIndex) {
|
||||||
|
PRINTF(T("ERROR!! エラー!!! error───!!!!\n", "ERROR!! Error!!! error───!!!!\n"));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +83,10 @@ void Font_LoadOrderedFont(Font* font) {
|
||||||
fontBufIndex += FONT_CHAR_TEX_SIZE / 8;
|
fontBufIndex += FONT_CHAR_TEX_SIZE / 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#else
|
#elif OOT_PAL
|
||||||
|
messageDataStart = (const char*)_nes_message_data_staticSegmentStart;
|
||||||
|
font->msgOffset = _message_0xFFFC_nes - messageDataStart;
|
||||||
|
size = font->msgLength = _message_0xFFFD_nes - _message_0xFFFC_nes;
|
||||||
len = size;
|
len = size;
|
||||||
DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, len,
|
DMA_REQUEST_SYNC(font->msgBuf, (uintptr_t)_nes_message_data_staticSegmentRomStart + font->msgOffset, len,
|
||||||
"../z_kanfont.c", 122);
|
"../z_kanfont.c", 122);
|
||||||
|
@ -93,5 +109,31 @@ void Font_LoadOrderedFont(Font* font) {
|
||||||
fontBufIndex += FONT_CHAR_TEX_SIZE / 8;
|
fontBufIndex += FONT_CHAR_TEX_SIZE / 8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#elif PLATFORM_IQUE
|
||||||
|
messageDataStart = (const char*)_jpn_message_data_staticSegmentStart;
|
||||||
|
font->msgOffset = _message_0xFFFC_jpn - messageDataStart;
|
||||||
|
size = font->msgLength = _message_0xFFFD_jpn - _message_0xFFFC_jpn;
|
||||||
|
len = (u32)size / 2;
|
||||||
|
DMA_REQUEST_SYNC(font->msgBufWide, (uintptr_t)_jpn_message_data_staticSegmentRomStart + font->msgOffset, size,
|
||||||
|
"../z_kanfont.c", UNK_LINE);
|
||||||
|
|
||||||
|
PRINTF("msg_data=%x, msg_data0=%x jj=%x\n", font->msgOffset, font->msgLength, len);
|
||||||
|
|
||||||
|
// Workaround for EGCS bug
|
||||||
|
msgBufWide = font->msgBufWide;
|
||||||
|
fontBufIndex = 0;
|
||||||
|
for (codePointIndex = 0; msgBufWide[codePointIndex] != MESSAGE_WIDE_END; codePointIndex++) {
|
||||||
|
if (len < codePointIndex) {
|
||||||
|
PRINTF(T("ERROR!! エラー!!! error───!!!!\n", "ERROR!! Error!!! error───!!!!\n"));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (msgBufWide[codePointIndex] != MESSAGE_WIDE_NEWLINE) {
|
||||||
|
offset = Kanji_OffsetFromShiftJIS(msgBufWide[codePointIndex]);
|
||||||
|
DMA_REQUEST_SYNC(&font->fontBuf[fontBufIndex * 8], (uintptr_t)_kanjiSegmentRomStart + offset,
|
||||||
|
FONT_CHAR_TEX_SIZE, "../z_kanfont.c", UNK_LINE);
|
||||||
|
fontBufIndex += FONT_CHAR_TEX_SIZE / 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
|
@ -1191,6 +1191,7 @@ KaleidoSetup_Init = 0x8006261C; // type:func
|
||||||
KaleidoSetup_Destroy = 0x80062770; // type:func
|
KaleidoSetup_Destroy = 0x80062770; // type:func
|
||||||
Font_LoadCharWide = 0x80062780; // type:func
|
Font_LoadCharWide = 0x80062780; // type:func
|
||||||
Font_LoadChar = 0x800627D0; // type:func
|
Font_LoadChar = 0x800627D0; // type:func
|
||||||
|
Font_LoadCharCHN = 0x8006280C; // type:func
|
||||||
Font_LoadMessageBoxIcon = 0x80062848; // type:func
|
Font_LoadMessageBoxIcon = 0x80062848; // type:func
|
||||||
Font_LoadOrderedFont = 0x8006287C; // type:func
|
Font_LoadOrderedFont = 0x8006287C; // type:func
|
||||||
Environment_ZBufValToFixedPoint = 0x80062980; // type:func
|
Environment_ZBufValToFixedPoint = 0x80062980; // type:func
|
||||||
|
|
Loading…
Add table
Reference in a new issue