mirror of
https://github.com/HarbourMasters/Shipwright
synced 2026-06-02 02:09:57 -04:00
2957dc61c3
* Ganon(dorf) cutscene skips * Remove leftover code * Load into chamber of sages * Fix loading into chamber without fast file select * Boss warps in chamber done * Change warps back to chamber * Initial proof of concept done * ganon(dorf) cutscene skips * Code cleanup & auto age equipment * Gameplay stats timer + tweaks * Scuffed timer * Better timer * remove arena props + fix arena exits * Fix blue warps * Attempt to fix build * Fix build again * And again.. * Try no. 9001 * Handle dying and saving * Child link face fire medallion * Fix build * Fix warps after reset/death * Disable doors and move player spawns in boss rooms * Fix boss rush logo rendering * Start of ingame options menu * File Select cleanup * Fix build * Render char text PoC * Move functions to be more generic * Fix build * Fix other builds * Initial text scaling/kerning * Special characters prep * All special characters work now * Attempt to fix build * Fix build question mark * Finish all kerning * Start of ingame options menu with vertical scrolling * Barebones functional options menu * More options menu progress * More visual elements for options menu * Options menu visual changes, implement all options, tons of cleanup * Cleanup and comments * Shorter enums * More options * Change default heart count * Finish French translations * Implement timer in cosmetics editor * Uncomment timer requirement * Variable name change * German translation & small UI tweaks * Animated up/down arrows in options UI * Better arrows in options UI * Cleaner timer + make it usable for general gameplay * More cleanup + ganon & ganondorf boss option * Implement never heal option * Slight up arrow in options UI tweak * Add BGS option * Reintroduce ganondorf cutscene skip * Change encoding to UTF on bossrush.cpp * Fix build hopefully * Fixed static variables leading to options not properly resetting * Fix BR completed timestamp * Change timer to render on top of everything * Offset final BR time by 0.1 second from boss timestamps * Add missing check for boss rush * Implement soh_assets.h * Revert merge mistake * Fix special characters with UTF-8 * Fix build * here's the fix you can merge from your phone * Fix quest select crash with oot.otr only * Use OoT's kerning * Fix HD textures on options menu * Fix special character kerning * "Heal every boss" fixes * Seperate headers + bunny hood option * Remove GetUnixTimestamp() externing * Clean up extern "C"'s * Address review comments * Fix build question mark * Remove accidental styling change --------- Co-authored-by: briaguya <briaguya@alice>
231 lines
7.9 KiB
C
231 lines
7.9 KiB
C
#include "global.h"
|
|
|
|
#include <string.h>
|
|
|
|
#include "message_data_static.h"
|
|
#include "textures/nes_font_static/nes_font_static.h"
|
|
#include "textures/message_static/message_static.h"
|
|
|
|
static const char* fntTbl[] =
|
|
{
|
|
gMsgChar20SpaceTex,
|
|
gMsgChar21ExclamationMarkTex,
|
|
gMsgChar22QuotationMarkTex,
|
|
gMsgChar23NumberSignTex,
|
|
gMsgChar24DollarSignTex,
|
|
gMsgChar25PercentSignTex,
|
|
gMsgChar26AmpersandTex,
|
|
gMsgChar27ApostropheTex,
|
|
gMsgChar28LeftParenthesesTex,
|
|
gMsgChar29RightParenthesesTex,
|
|
gMsgChar2AAsteriskTex,
|
|
gMsgChar2BPlusSignTex,
|
|
gMsgChar2CCommaTex,
|
|
gMsgChar2DHyphenMinusTex,
|
|
gMsgChar2EFullStopTex,
|
|
gMsgChar2FSolidusTex,
|
|
gMsgChar30Digit0Tex,
|
|
gMsgChar31Digit1Tex,
|
|
gMsgChar32Digit2Tex,
|
|
gMsgChar33Digit3Tex,
|
|
gMsgChar34Digit4Tex,
|
|
gMsgChar35Digit5Tex,
|
|
gMsgChar36Digit6Tex,
|
|
gMsgChar37Digit7Tex,
|
|
gMsgChar38Digit8Tex,
|
|
gMsgChar39Digit9Tex,
|
|
gMsgChar3AColonTex,
|
|
gMsgChar3BSemicolonTex,
|
|
gMsgChar3CLessThanSignTex,
|
|
gMsgChar3DEqualsSignTex,
|
|
gMsgChar3EGreaterThanSignTex,
|
|
gMsgChar3FQuestionMarkTex,
|
|
gMsgChar40CommercialAtTex,
|
|
gMsgChar41LatinCapitalLetterATex,
|
|
gMsgChar42LatinCapitalLetterBTex,
|
|
gMsgChar43LatinCapitalLetterCTex,
|
|
gMsgChar44LatinCapitalLetterDTex,
|
|
gMsgChar45LatinCapitalLetterETex,
|
|
gMsgChar46LatinCapitalLetterFTex,
|
|
gMsgChar47LatinCapitalLetterGTex,
|
|
gMsgChar48LatinCapitalLetterHTex,
|
|
gMsgChar49LatinCapitalLetterITex,
|
|
gMsgChar4ALatinCapitalLetterJTex,
|
|
gMsgChar4BLatinCapitalLetterKTex,
|
|
gMsgChar4CLatinCapitalLetterLTex,
|
|
gMsgChar4DLatinCapitalLetterMTex,
|
|
gMsgChar4ELatinCapitalLetterNTex,
|
|
gMsgChar4FLatinCapitalLetterOTex,
|
|
gMsgChar50LatinCapitalLetterPTex,
|
|
gMsgChar51LatinCapitalLetterQTex,
|
|
gMsgChar52LatinCapitalLetterRTex,
|
|
gMsgChar53LatinCapitalLetterSTex,
|
|
gMsgChar54LatinCapitalLetterTTex,
|
|
gMsgChar55LatinCapitalLetterUTex,
|
|
gMsgChar56LatinCapitalLetterVTex,
|
|
gMsgChar57LatinCapitalLetterWTex,
|
|
gMsgChar58LatinCapitalLetterXTex,
|
|
gMsgChar59LatinCapitalLetterYTex,
|
|
gMsgChar5ALatinCapitalLetterZTex,
|
|
gMsgChar5BLeftSquareBracketTex,
|
|
gMsgChar5CYenSignTex,
|
|
gMsgChar5DRightSquareBracketTex,
|
|
gMsgChar5ECircumflexAccentTex,
|
|
gMsgChar5FLowLineTex,
|
|
gMsgChar60GraveAccentTex,
|
|
gMsgChar61LatinSmallLetterATex,
|
|
gMsgChar62LatinSmallLetterBTex,
|
|
gMsgChar63LatinSmallLetterCTex,
|
|
gMsgChar64LatinSmallLetterDTex,
|
|
gMsgChar65LatinSmallLetterETex,
|
|
gMsgChar66LatinSmallLetterFTex,
|
|
gMsgChar67LatinSmallLetterGTex,
|
|
gMsgChar68LatinSmallLetterHTex,
|
|
gMsgChar69LatinSmallLetterITex,
|
|
gMsgChar6ALatinSmallLetterJTex,
|
|
gMsgChar6BLatinSmallLetterKTex,
|
|
gMsgChar6CLatinSmallLetterLTex,
|
|
gMsgChar6DLatinSmallLetterMTex,
|
|
gMsgChar6ELatinSmallLetterNTex,
|
|
gMsgChar6FLatinSmallLetterOTex,
|
|
gMsgChar70LatinSmallLetterPTex,
|
|
gMsgChar71LatinSmallLetterQTex,
|
|
gMsgChar72LatinSmallLetterRTex,
|
|
gMsgChar73LatinSmallLetterSTex,
|
|
gMsgChar74LatinSmallLetterTTex,
|
|
gMsgChar75LatinSmallLetterUTex,
|
|
gMsgChar76LatinSmallLetterVTex,
|
|
gMsgChar77LatinSmallLetterWTex,
|
|
gMsgChar78LatinSmallLetterXTex,
|
|
gMsgChar79LatinSmallLetterYTex,
|
|
gMsgChar7ALatinSmallLetterZTex,
|
|
gMsgChar7BLeftCurlyBracketTex,
|
|
gMsgChar7CVerticalLineTex,
|
|
gMsgChar7DRightCurlyBracketTex,
|
|
gMsgChar7ETildeTex,
|
|
gMsgChar7FBlankTex,
|
|
gMsgChar80LatinCapitalLetterAWithGraveTex,
|
|
gMsgChar81LatinCapitalLetterIWithCircumflexTex,
|
|
gMsgChar82LatinCapitalLetterAWithCircumflexTex,
|
|
gMsgChar83LatinCapitalLetterAWithDiaeresisTex,
|
|
gMsgChar84LatinCapitalLetterCWithCedillaTex,
|
|
gMsgChar85LatinCapitalLetterEWithGraveTex,
|
|
gMsgChar86LatinCapitalLetterEWithAcuteTex,
|
|
gMsgChar87LatinCapitalLetterEWithCircumflexTex,
|
|
gMsgChar88LatinCapitalLetterEWithDiaeresisTex,
|
|
gMsgChar89LatinCapitalLetterIWithDiaeresisTex,
|
|
gMsgChar8ALatinCapitalLetterOWithCircumflexTex,
|
|
gMsgChar8BLatinCapitalLetterOWithDiaeresisTex,
|
|
gMsgChar8CLatinCapitalLetterUWithGraveTex,
|
|
gMsgChar8DLatinCapitalLetterUWithCircumflexTex,
|
|
gMsgChar8ELatinCapitalLetterUWithDiaeresisTex,
|
|
gMsgChar8FLatinSmallLetterSharpSTex,
|
|
gMsgChar90LatinSmallLetterAWithGraveTex,
|
|
gMsgChar91LatinSmallLetterAWithAcuteTex,
|
|
gMsgChar92LatinSmallLetterAWithCircumflexTex,
|
|
gMsgChar93LatinSmallLetterAWithDiaeresisTex,
|
|
gMsgChar94LatinSmallLetterCWithCedillaTex,
|
|
gMsgChar95LatinSmallLetterEWithGraveTex,
|
|
gMsgChar96LatinSmallLetterEWithAcuteTex,
|
|
gMsgChar97LatinSmallLetterEWithCircumflexTex,
|
|
gMsgChar98LatinSmallLetterEWithDiaeresisTex,
|
|
gMsgChar99LatinSmallLetterIWithDiaeresisTex,
|
|
gMsgChar9ALatinSmallLetterOWithCircumflexTex,
|
|
gMsgChar9BLatinSmallLetterOWithDiaeresisTex,
|
|
gMsgChar9CLatinSmallLetterUWithGraveTex,
|
|
gMsgChar9DLatinSmallLetterUWithCircumflexTex,
|
|
gMsgChar9ELatinSmallLetterUWithDiaeresisTex,
|
|
gMsgChar9FButtonATex,
|
|
gMsgCharA0ButtonBTex,
|
|
gMsgCharA1ButtonCTex,
|
|
gMsgCharA2ButtonLTex,
|
|
gMsgCharA3ButtonRTex,
|
|
gMsgCharA4ButtonZTex,
|
|
gMsgCharA5ButtonCUpTex,
|
|
gMsgCharA6ButtonCDownTex,
|
|
gMsgCharA7ButtonCLeftTex,
|
|
gMsgCharA8ButtonCRightTex,
|
|
gMsgCharA9ZTargetSignTex,
|
|
gMsgCharAAControlStickTex,
|
|
gMsgCharABControlPadTex,
|
|
};
|
|
|
|
const char* msgStaticTbl[] =
|
|
{
|
|
gDefaultMessageBackgroundTex,
|
|
gSignMessageBackgroundTex,
|
|
gNoteStaffMessageBackgroundTex,
|
|
gFadingMessageBackgroundTex,
|
|
gMessageContinueTriangleTex,
|
|
gMessageEndSquareTex,
|
|
gMessageArrowTex
|
|
};
|
|
|
|
void func_8006EE50(Font* font, u16 arg1, u16 arg2) {
|
|
}
|
|
|
|
/**
|
|
* Loads a texture from nes_font_static for the requested `character` into the character texture buffer
|
|
* at `codePointIndex`. The value of `character` is the ASCII codepoint subtract ' '/0x20.
|
|
*/
|
|
void Font_LoadChar(Font* font, u8 character, u16 codePointIndex) {
|
|
//DmaMgr_SendRequest1(&font->charTexBuf[codePointIndex],
|
|
//&_nes_font_staticSegmentRomStart[character * FONT_CHAR_TEX_SIZE], FONT_CHAR_TEX_SIZE,
|
|
//__FILE__, __LINE__);
|
|
|
|
if (character < 0x8B)
|
|
memcpy(&font->charTexBuf[codePointIndex], fntTbl[character], strlen(fntTbl[character]) + 1);
|
|
}
|
|
|
|
void* Font_FetchCharTexture(u8 character) {
|
|
return fntTbl[character];
|
|
}
|
|
|
|
/**
|
|
* Loads a message box icon from message_static, such as the ending triangle/square or choice arrow into the
|
|
* icon buffer.
|
|
* The different icons are given in the MessageBoxIcon enum.
|
|
*/
|
|
void Font_LoadMessageBoxIcon(Font* font, u16 icon) {
|
|
memcpy(font->iconBuf, msgStaticTbl[4 + icon], strlen(msgStaticTbl[4 + icon]) + 1);
|
|
}
|
|
|
|
/**
|
|
* Loads a full set of character textures based on their ordering in the message with text id 0xFFFC into
|
|
* the font buffer.
|
|
*/
|
|
void Font_LoadOrderedFont(Font* font) {
|
|
size_t len;
|
|
size_t jj;
|
|
s32 fontStatic;
|
|
u8* fontBuf;
|
|
s32 codePointIndex;
|
|
s32 fontBufIndex;
|
|
s32 offset;
|
|
|
|
len = strlen(_message_0xFFFC_nes);
|
|
memcpy(font->msgBuf, _message_0xFFFC_nes, len);
|
|
|
|
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!! エラー!!! 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;
|
|
memcpy(fontBuf, fntTbl[offset / FONT_CHAR_TEX_SIZE], strlen(fntTbl[offset / FONT_CHAR_TEX_SIZE]) + 1);
|
|
//DmaMgr_SendRequest1(fontBuf, fontStatic + offset, FONT_CHAR_TEX_SIZE, __FILE__, __LINE__);
|
|
fontBufIndex += FONT_CHAR_TEX_SIZE / 8;
|
|
}
|
|
}
|
|
}
|