1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-07-04 23:14:37 +00:00

Decompile z_kanfont (#443)

* Decompile z_kanfont.c

* Cleanups

* off -> offset

* Kanfont -> Font , Keep so-far unused Font fields as padding, Remove MessageData sub-struct
This commit is contained in:
Tharo 2020-10-12 22:42:17 +01:00 committed by GitHub
parent ed719f3da0
commit fff616d2be
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 109 additions and 228 deletions

View file

@ -199,7 +199,7 @@ void func_80110F68(GlobalContext* globalCtx) {
__assert("message->fukidashiSegment != NULL", "../z_construct.c", 352);
}
func_8006EF10(&globalCtx->msgCtx.unk_128);
Font_LoadOrderedFont(&globalCtx->msgCtx.font);
YREG(31) = 0;
}

View file

@ -141,6 +141,3 @@ void KaleidoSetup_Init(GlobalContext* globalCtx) {
void KaleidoSetup_Destroy(GlobalContext* globalCtx) {
}
void func_8006EE50(UNK_PTR arg0, s16 arg1, s16 arg2) {
}

View file

@ -1,7 +1,54 @@
#include "global.h"
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kanfont/func_8006EE60.s")
// To be moved to message_data_static header
#define MESSAGE_NEWLINE '\x01'
#define MESSAGE_END '\x02'
// message_data_static symbols
extern const char D_07000000[]; // start of file
extern const char D_070380D4[]; // charset message (id 0xFFFC)
extern const char D_0703811C[]; // end marker of last message
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kanfont/func_8006EEBC.s")
void func_8006EE50(Font* font, s16 arg1, s16 arg2) {
}
#pragma GLOBAL_ASM("asm/non_matchings/code/z_kanfont/func_8006EF10.s")
void Font_LoadChar(u32 offset, u8 character, u16 codePointIndex) {
DmaMgr_SendRequest1(((u32)offset + codePointIndex) + 8,
&_nes_font_staticSegmentRomStart[character * FONT_CHAR_TEX_SIZE], FONT_CHAR_TEX_SIZE,
"../z_kanfont.c", 93);
}
void Font_LoadMessageBoxEndIcon(Font* font, u16 icon) {
DmaMgr_SendRequest1(font->iconBuf, &_message_staticSegmentRomStart[4 * 0x1000 + icon * FONT_CHAR_TEX_SIZE],
FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 100);
}
void Font_LoadOrderedFont(Font* font) {
s32 len;
s32 jj;
s32 fontStatic;
u32 fontBuf;
s32 codePointIndex;
s32 fontBufIndex;
s32 offset;
font->msgOffset = D_070380D4 - D_07000000;
len = font->msgLength = D_0703811C - D_070380D4;
DmaMgr_SendRequest1(font->msgBuf, &_nes_message_data_staticSegmentRomStart[font->msgOffset], len,
"../z_kanfont.c", 122);
osSyncPrintf("msg_data=%x, msg_data0=%x jj=%x\n", font->msgOffset, font->msgLength, jj = len);
len = jj;
for (fontBufIndex = 0, codePointIndex = 0; font->msgBuf[codePointIndex] != MESSAGE_END; codePointIndex++) {
if (codePointIndex > len) {
osSyncPrintf(" エラー!!! error───\n");
return;
}
if (font->msgBuf[codePointIndex] != MESSAGE_NEWLINE) {
fontBuf = font->fontBuf + fontBufIndex * 8;
fontStatic = _nes_font_staticSegmentRomStart;
osSyncPrintf("nes_mes_buf[%d]=%d\n", codePointIndex, font->msgBuf[codePointIndex]);
offset = (font->msgBuf[codePointIndex] - '\x20') * FONT_CHAR_TEX_SIZE;
DmaMgr_SendRequest1(fontBuf, fontStatic + offset, FONT_CHAR_TEX_SIZE, "../z_kanfont.c", 134);
fontBufIndex += 0x10;
}
}
}