mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2025-08-22 22:33:43 -07:00
Merge branch 'develop' into fix-radiobox
This commit is contained in:
commit
5163b94553
8 changed files with 168 additions and 76 deletions
|
@ -46,9 +46,9 @@ bool oldCursorState = true;
|
|||
|
||||
#define EXPERIMENTAL() \
|
||||
ImGui::PushStyleColor(ImGuiCol_Text, IM_COL32(255, 50, 50, 255)); \
|
||||
ImGui::Text("Experimental"); \
|
||||
ImGui::PopStyleColor(); \
|
||||
ImGui::Separator();
|
||||
ImGui::Text("Experimental"); \
|
||||
ImGui::PopStyleColor(); \
|
||||
ImGui::Separator();
|
||||
#define TOGGLE_BTN ImGuiKey_F1
|
||||
#define HOOK(b) if(b) needs_save = true;
|
||||
OSContPad* pads;
|
||||
|
@ -348,10 +348,10 @@ namespace SohImGui {
|
|||
}
|
||||
|
||||
for (size_t pixel = 0; pixel < texBuffer.size() / 4; pixel++) {
|
||||
texBuffer[pixel * 4 + 0] *= tint.x;
|
||||
texBuffer[pixel * 4 + 1] *= tint.y;
|
||||
texBuffer[pixel * 4 + 2] *= tint.z;
|
||||
texBuffer[pixel * 4 + 3] *= tint.w;
|
||||
texBuffer[pixel * 4 + 0] *= (uint8_t)tint.x;
|
||||
texBuffer[pixel * 4 + 1] *= (uint8_t)tint.y;
|
||||
texBuffer[pixel * 4 + 2] *= (uint8_t)tint.z;
|
||||
texBuffer[pixel * 4 + 3] *= (uint8_t)tint.w;
|
||||
}
|
||||
|
||||
const auto asset = new GameAsset{ api->new_texture() };
|
||||
|
@ -460,106 +460,110 @@ namespace SohImGui {
|
|||
ImGui::Text("%s", text);
|
||||
}
|
||||
|
||||
void EnhancementCheckbox(std::string text, std::string cvarName)
|
||||
void EnhancementCheckbox(const char* text, const char* cvarName)
|
||||
{
|
||||
bool val = (bool)CVar_GetS32(cvarName.c_str(), 0);
|
||||
if (ImGui::Checkbox(text.c_str(), &val)) {
|
||||
CVar_SetS32(cvarName.c_str(), val);
|
||||
bool val = (bool)CVar_GetS32(cvarName, 0);
|
||||
if (ImGui::Checkbox(text, &val)) {
|
||||
CVar_SetS32(cvarName, val);
|
||||
needs_save = true;
|
||||
}
|
||||
}
|
||||
|
||||
void EnhancementButton(std::string text, std::string cvarName)
|
||||
void EnhancementButton(const char* text, const char* cvarName)
|
||||
{
|
||||
bool val = (bool)CVar_GetS32(cvarName.c_str(), 0);
|
||||
if (ImGui::Button(text.c_str())) {
|
||||
CVar_SetS32(cvarName.c_str(), !val);
|
||||
bool val = (bool)CVar_GetS32(cvarName, 0);
|
||||
if (ImGui::Button(text)) {
|
||||
CVar_SetS32(cvarName, !val);
|
||||
CVar_SetS32(cvarName, !val);
|
||||
needs_save = true;
|
||||
}
|
||||
}
|
||||
|
||||
void EnhancementSliderInt(std::string text, std::string id, std::string cvarName, int min, int max, std::string format)
|
||||
void EnhancementSliderInt(const char* text, const char* id, const char* cvarName, int min, int max, const char* format)
|
||||
{
|
||||
int val = CVar_GetS32(cvarName.c_str(), 0);
|
||||
int val = CVar_GetS32(cvarName, 0);
|
||||
|
||||
ImGui::Text(text.c_str(), val);
|
||||
ImGui::Text(text, val);
|
||||
|
||||
if (ImGui::SliderInt(id.c_str(), &val, min, max, format.c_str()))
|
||||
if (ImGui::SliderInt(id, &val, min, max, format))
|
||||
{
|
||||
CVar_SetS32(cvarName.c_str(), val);
|
||||
CVar_SetS32(cvarName, val);
|
||||
needs_save = true;
|
||||
}
|
||||
|
||||
if (val < min)
|
||||
{
|
||||
val = min;
|
||||
CVar_SetS32(cvarName.c_str(), val);
|
||||
CVar_SetS32(cvarName, val);
|
||||
needs_save = true;
|
||||
}
|
||||
|
||||
if (val > max)
|
||||
{
|
||||
val = max;
|
||||
CVar_SetS32(cvarName.c_str(), val);
|
||||
CVar_SetS32(cvarName, val);
|
||||
needs_save = true;
|
||||
}
|
||||
}
|
||||
|
||||
void EnhancementSliderFloat(std::string text, std::string id, std::string cvarName, float min, float max, std::string format, float defaultValue, bool isPercentage)
|
||||
void EnhancementSliderFloat(const char* text, const char* id, const char* cvarName, float min, float max, const char* format, float defaultValue, bool isPercentage)
|
||||
{
|
||||
float val = CVar_GetFloat(cvarName.c_str(), defaultValue);
|
||||
float val = CVar_GetFloat(cvarName, defaultValue);
|
||||
|
||||
if (!isPercentage)
|
||||
ImGui::Text(text.c_str(), val);
|
||||
ImGui::Text(text, val);
|
||||
else
|
||||
ImGui::Text(text.c_str(), static_cast<int>(100 * val));
|
||||
ImGui::Text(text, static_cast<int>(100 * val));
|
||||
|
||||
if (ImGui::SliderFloat(id.c_str(), &val, min, max, format.c_str()))
|
||||
if (ImGui::SliderFloat(id, &val, min, max, format))
|
||||
{
|
||||
CVar_SetFloat(cvarName.c_str(), val);
|
||||
CVar_SetFloat(cvarName, val);
|
||||
needs_save = true;
|
||||
}
|
||||
|
||||
if (val < min)
|
||||
{
|
||||
val = min;
|
||||
CVar_SetFloat(cvarName.c_str(), val);
|
||||
CVar_SetFloat(cvarName, val);
|
||||
needs_save = true;
|
||||
}
|
||||
|
||||
if (val > max)
|
||||
{
|
||||
val = max;
|
||||
CVar_SetFloat(cvarName.c_str(), val);
|
||||
CVar_SetFloat(cvarName, val);
|
||||
needs_save = true;
|
||||
}
|
||||
}
|
||||
|
||||
int ClampFloatToInt(float value, int min, int max){
|
||||
return fmin(fmax(value,min),max);
|
||||
int ClampFloatToInt(float value, int min, int max) {
|
||||
return fmin(fmax(value, min), max);
|
||||
}
|
||||
|
||||
void EnhancementColor3(std::string text, std::string cvarName, float ColorRGB[3], bool TitleSameLine) {
|
||||
void EnhancementColor3(const char* text, const char* cvarName, float ColorRGB[3], bool TitleSameLine) {
|
||||
//Simplified.
|
||||
std::string cvarNameString(cvarName);
|
||||
ImGuiColorEditFlags flags = ImGuiColorEditFlags_None;
|
||||
if (!TitleSameLine){
|
||||
ImGui::Text("%s", text.c_str());
|
||||
|
||||
if (!TitleSameLine) {
|
||||
ImGui::Text("%s", text);
|
||||
flags = ImGuiColorEditFlags_NoLabel;
|
||||
}
|
||||
if (ImGui::ColorEdit3(text.c_str(), ColorRGB, flags)) {
|
||||
CVar_SetS32((cvarName+"R").c_str(), ClampFloatToInt(ColorRGB[0]*255,0,255));
|
||||
CVar_SetS32((cvarName+"G").c_str(), ClampFloatToInt(ColorRGB[1]*255,0,255));
|
||||
CVar_SetS32((cvarName+"B").c_str(), ClampFloatToInt(ColorRGB[2]*255,0,255));
|
||||
if (ImGui::ColorEdit3(text, ColorRGB, flags)) {
|
||||
CVar_SetS32((cvarNameString + "R").c_str(), ClampFloatToInt(ColorRGB[0] * 255, 0, 255));
|
||||
CVar_SetS32((cvarNameString + "G").c_str(), ClampFloatToInt(ColorRGB[1] * 255, 0, 255));
|
||||
CVar_SetS32((cvarNameString + "B").c_str(), ClampFloatToInt(ColorRGB[2] * 255, 0, 255));
|
||||
needs_save = true;
|
||||
}
|
||||
}
|
||||
|
||||
void Tooltip(std::string text) {
|
||||
|
||||
void Tooltip(const char* text) {
|
||||
if (ImGui::IsItemHovered())
|
||||
ImGui::SetTooltip("%s", text.c_str());
|
||||
ImGui::SetTooltip("%s", text);
|
||||
}
|
||||
|
||||
void DrawMainMenuAndCalculateGameSize() {
|
||||
void DrawMainMenuAndCalculateGameSize(void) {
|
||||
console->Update();
|
||||
ImGuiBackendNewFrame();
|
||||
ImGuiWMNewFrame();
|
||||
|
@ -639,7 +643,7 @@ namespace SohImGui {
|
|||
auto menuLabel = "Controller " + std::to_string(i + 1);
|
||||
if (ImGui::BeginMenu(menuLabel.c_str()))
|
||||
{
|
||||
EnhancementSliderFloat("Gyro Sensitivity: %d %%", "##GYROSCOPE", StringHelper::Sprintf("gCont%i_GyroSensitivity", i), 0.0f, 1.0f, "", 1.0f, true);
|
||||
EnhancementSliderFloat("Gyro Sensitivity: %d %%", "##GYROSCOPE", StringHelper::Sprintf("gCont%i_GyroSensitivity", i).c_str(), 0.0f, 1.0f, "", 1.0f, true);
|
||||
|
||||
if (ImGui::Button("Recalibrate Gyro"))
|
||||
{
|
||||
|
@ -650,7 +654,7 @@ namespace SohImGui {
|
|||
|
||||
ImGui::Separator();
|
||||
|
||||
EnhancementSliderFloat("Rumble Strength: %d %%", "##RUMBLE", StringHelper::Sprintf("gCont%i_RumbleStrength", i), 0.0f, 1.0f, "", 1.0f, true);
|
||||
EnhancementSliderFloat("Rumble Strength: %d %%", "##RUMBLE", StringHelper::Sprintf("gCont%i_RumbleStrength", i).c_str(), 0.0f, 1.0f, "", 1.0f, true);
|
||||
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
@ -729,9 +733,10 @@ namespace SohImGui {
|
|||
Tooltip("Allows equiping the tunic and boots to c-buttons");
|
||||
EnhancementCheckbox("MM Bunny Hood", "gMMBunnyHood");
|
||||
Tooltip("Wearing the Bunny Hood grants a speed increase like in Majora's Mask");
|
||||
EnhancementCheckbox("Better Owl", "gBetterOwl");
|
||||
Tooltip("The default response to Kaepora Gaebora is always that you understood what he said");
|
||||
EnhancementCheckbox("Disable Navi Call Audio", "gDisableNaviCallAudio");
|
||||
Tooltip("Disables the voice audio when Navi calls you");
|
||||
|
||||
ImGui::EndMenu();
|
||||
}
|
||||
|
||||
|
@ -965,7 +970,7 @@ namespace SohImGui {
|
|||
varName.erase(std::ranges::remove_if(varName, isspace).begin(), varName.end());
|
||||
std::string toggleName = "g" + varName + "Enabled";
|
||||
|
||||
EnhancementCheckbox(name, toggleName);
|
||||
EnhancementCheckbox(name.c_str(), toggleName.c_str());
|
||||
customWindows[name].enabled = CVar_GetS32(toggleName.c_str(), 0);
|
||||
}
|
||||
ImGui::EndMenu();
|
||||
|
@ -1016,19 +1021,19 @@ namespace SohImGui {
|
|||
main_pos.y -= top_left_pos.y;
|
||||
ImVec2 size = ImGui::GetContentRegionAvail();
|
||||
ImVec2 pos = ImVec2(0, 0);
|
||||
gfx_current_dimensions.width = size.x * gfx_current_dimensions.internal_mul;
|
||||
gfx_current_dimensions.height = size.y * gfx_current_dimensions.internal_mul;
|
||||
gfx_current_game_window_viewport.x = main_pos.x;
|
||||
gfx_current_game_window_viewport.y = main_pos.y;
|
||||
gfx_current_game_window_viewport.width = size.x;
|
||||
gfx_current_game_window_viewport.height = size.y;
|
||||
gfx_current_dimensions.width = (uint32_t)(size.x * gfx_current_dimensions.internal_mul);
|
||||
gfx_current_dimensions.height = (uint32_t)(size.y * gfx_current_dimensions.internal_mul);
|
||||
gfx_current_game_window_viewport.x = (int16_t)main_pos.x;
|
||||
gfx_current_game_window_viewport.y = (int16_t)main_pos.y;
|
||||
gfx_current_game_window_viewport.width = (int16_t)size.x;
|
||||
gfx_current_game_window_viewport.height = (int16_t)size.y;
|
||||
|
||||
if (CVar_GetS32("gN64Mode", 0))
|
||||
{
|
||||
gfx_current_dimensions.width = 320;
|
||||
gfx_current_dimensions.height = 240;
|
||||
const int sw = size.y * 320 / 240;
|
||||
gfx_current_game_window_viewport.x += (size.x - sw) / 2;
|
||||
gfx_current_game_window_viewport.x += ((int)size.x - sw) / 2;
|
||||
gfx_current_game_window_viewport.width = sw;
|
||||
pos = ImVec2(size.x / 2 - sw / 2, 0);
|
||||
size = ImVec2(sw, size.y);
|
||||
|
@ -1037,12 +1042,12 @@ namespace SohImGui {
|
|||
overlay->Draw();
|
||||
}
|
||||
|
||||
void DrawFramebufferAndGameInput() {
|
||||
ImVec2 main_pos = ImGui::GetWindowPos();
|
||||
void DrawFramebufferAndGameInput(void) {
|
||||
const ImVec2 main_pos = ImGui::GetWindowPos();
|
||||
ImVec2 size = ImGui::GetContentRegionAvail();
|
||||
ImVec2 pos = ImVec2(0, 0);
|
||||
if (CVar_GetS32("gN64Mode", 0)) {
|
||||
const int sw = size.y * 320 / 240;
|
||||
const float sw = size.y * 320.0f / 240.0f;
|
||||
pos = ImVec2(size.x / 2 - sw / 2, 0);
|
||||
size = ImVec2(sw, size.y);
|
||||
}
|
||||
|
|
|
@ -65,10 +65,14 @@ namespace SohImGui {
|
|||
void Update(EventImpl event);
|
||||
|
||||
void EnhancementRadioButton(const char* text, const char* cvarName, int id);
|
||||
void EnhancementCheckbox(std::string text, std::string cvarName);
|
||||
void EnhancementSliderInt(std::string text, std::string id, std::string cvarName, int min, int max, std::string format);
|
||||
void EnhancementSliderFloat(std::string text, std::string id, std::string cvarName, float min, float max, std::string format, float defaultValue);
|
||||
void EnhancementColor3(std::string text, std::string cvarName, float ColorRGB[3], bool TitleSameLine);
|
||||
void EnhancementCheckbox(const char* text, const char* cvarName);
|
||||
void EnhancementButton(const char* text, const char* cvarName);
|
||||
void EnhancementSliderInt(const char* text, const char* id, const char* cvarName, int min, int max, const char* format);
|
||||
void EnhancementSliderFloat(const char* text, const char* id, const char* cvarName, float min, float max, const char* format, float defaultValue, bool isPercentage);
|
||||
|
||||
void Tooltip(const char* text);
|
||||
|
||||
void EnhancementColor3(const char* text, const char* cvarName, float defaultColors[3], bool TitleSameLine);
|
||||
|
||||
void DrawMainMenuAndCalculateGameSize(void);
|
||||
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
<Root>
|
||||
<File Name="object_triforce_spot" Segment="6">
|
||||
<Array Name="gTriforceVtx" Count="32" Offset="0x0000">
|
||||
<Array Name="gTriforceVtx" Count="96" Offset="0x0000">
|
||||
<Vtx/>
|
||||
</Array>
|
||||
|
||||
|
|
|
@ -19,9 +19,50 @@ MessageTableEntry* OTRMessage_LoadTable(const char* filePath, bool isNES) {
|
|||
if (file == nullptr)
|
||||
return nullptr;
|
||||
|
||||
MessageTableEntry* table = (MessageTableEntry*)malloc(sizeof(MessageTableEntry) * file->messages.size());
|
||||
// Allocate room for an additional message
|
||||
MessageTableEntry* table = (MessageTableEntry*)malloc(sizeof(MessageTableEntry) * (file->messages.size() + 1));
|
||||
|
||||
for (int i = 0; i < file->messages.size(); i++) {
|
||||
// Look for Owl Text
|
||||
if (file->messages[i].id == 0x2066) {
|
||||
// Create a new message based on the Owl Text
|
||||
char* kaeporaPatch = (char*)malloc(sizeof(char) * file->messages[i].msg.size());
|
||||
file->messages[i].msg.copy(kaeporaPatch, file->messages[i].msg.size(), 0);
|
||||
|
||||
// Swap the order of yes and no in this new message
|
||||
if (filePath == "text/nes_message_data_static/nes_message_data_static") {
|
||||
kaeporaPatch[26] = 'Y';
|
||||
kaeporaPatch[27] = 'e';
|
||||
kaeporaPatch[28] = 's';
|
||||
kaeporaPatch[29] = 1;
|
||||
kaeporaPatch[30] = 'N';
|
||||
kaeporaPatch[31] = 'o';
|
||||
} else if (filePath == "text/ger_message_data_static/ger_message_data_static") {
|
||||
kaeporaPatch[30] = 'J';
|
||||
kaeporaPatch[31] = 'a';
|
||||
kaeporaPatch[32] = '!';
|
||||
kaeporaPatch[33] = 1;
|
||||
kaeporaPatch[34] = 'N';
|
||||
kaeporaPatch[35] = 'e';
|
||||
kaeporaPatch[36] = 'i';
|
||||
kaeporaPatch[37] = 'n';
|
||||
} else {
|
||||
kaeporaPatch[26] = 'O';
|
||||
kaeporaPatch[27] = 'u';
|
||||
kaeporaPatch[28] = 'i';
|
||||
kaeporaPatch[29] = 1;
|
||||
kaeporaPatch[30] = 'N';
|
||||
kaeporaPatch[31] = 'o';
|
||||
kaeporaPatch[32] = 'n';
|
||||
}
|
||||
|
||||
// load data into message
|
||||
table[file->messages.size()].textId = 0x71B3;
|
||||
table[file->messages.size()].typePos = (file->messages[i].textboxType << 4) | file->messages[i].textboxYPos;
|
||||
table[file->messages.size()].segment = kaeporaPatch;
|
||||
table[file->messages.size()].msgSize = file->messages[i].msg.size();
|
||||
}
|
||||
|
||||
table[i].textId = file->messages[i].id;
|
||||
table[i].typePos = (file->messages[i].textboxType << 4) | file->messages[i].textboxYPos;
|
||||
table[i].segment = file->messages[i].msg.c_str();
|
||||
|
|
|
@ -272,6 +272,13 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) {
|
|||
const char** languageSegmentTable;
|
||||
Font* font;
|
||||
const char* seg;
|
||||
u16 bufferId = textId;
|
||||
// Use the better owl message if better owl is enabled
|
||||
if (CVar_GetS32("gBetterOwl", 0) != 0 && (bufferId == 0x2066 || bufferId == 0x607B ||
|
||||
bufferId == 0x10C2 || bufferId == 0x10C6 || bufferId == 0x206A))
|
||||
{
|
||||
bufferId = 0x71B3;
|
||||
}
|
||||
|
||||
if (gSaveContext.language == LANGUAGE_GER)
|
||||
messageTableEntry = sGerMessageEntryTablePtr;
|
||||
|
@ -287,7 +294,7 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) {
|
|||
while (messageTableEntry->textId != 0xFFFF) {
|
||||
font = &globalCtx->msgCtx.font;
|
||||
|
||||
if (messageTableEntry->textId == textId) {
|
||||
if (messageTableEntry->textId == bufferId) {
|
||||
foundSeg = messageTableEntry->segment;
|
||||
font->charTexBuf[0] = messageTableEntry->typePos;
|
||||
|
||||
|
@ -298,14 +305,14 @@ void Message_FindMessage(GlobalContext* globalCtx, u16 textId) {
|
|||
// "Message found!!!"
|
||||
osSyncPrintf(" メッセージが,見つかった!!! = %x "
|
||||
"(data=%x) (data0=%x) (data1=%x) (data2=%x) (data3=%x)\n",
|
||||
textId, font->msgOffset, font->msgLength, foundSeg, seg, nextSeg);
|
||||
bufferId, font->msgOffset, font->msgLength, foundSeg, seg, nextSeg);
|
||||
return;
|
||||
}
|
||||
messageTableEntry++;
|
||||
}
|
||||
|
||||
// "Message not found!!!"
|
||||
osSyncPrintf(" メッセージが,見つからなかった!!! = %x\n", textId);
|
||||
osSyncPrintf(" メッセージが,見つからなかった!!! = %x\n", bufferId);
|
||||
font = &globalCtx->msgCtx.font;
|
||||
messageTableEntry = sNesMessageEntryTablePtr;
|
||||
|
||||
|
|
|
@ -2885,6 +2885,25 @@ void Interface_DrawItemButtons(GlobalContext* globalCtx) {
|
|||
gDPSetCombineLERP(OVERLAY_DISP++, PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0,
|
||||
PRIMITIVE, ENVIRONMENT, TEXEL0, ENVIRONMENT, TEXEL0, 0, PRIMITIVE, 0);
|
||||
|
||||
//There is probably a more elegant way to do it.
|
||||
char* doAction = actionsTbl[3];
|
||||
char newName[512];
|
||||
if (gSaveContext.language != LANGUAGE_ENG) {
|
||||
size_t length = strlen(doAction);
|
||||
strcpy(newName, doAction);
|
||||
if (gSaveContext.language == LANGUAGE_FRA) {
|
||||
newName[length - 6] = 'F';
|
||||
newName[length - 5] = 'R';
|
||||
newName[length - 4] = 'A';
|
||||
} else if (gSaveContext.language == LANGUAGE_GER) {
|
||||
newName[length - 6] = 'G';
|
||||
newName[length - 5] = 'E';
|
||||
newName[length - 4] = 'R';
|
||||
}
|
||||
doAction = newName;
|
||||
}
|
||||
memcpy(interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE * 2, ResourceMgr_LoadTexByName(doAction), DO_ACTION_TEX_SIZE);
|
||||
|
||||
gDPLoadTextureBlock_4b(OVERLAY_DISP++, interfaceCtx->doActionSegment + DO_ACTION_TEX_SIZE * 2, G_IM_FMT_IA,
|
||||
DO_ACTION_TEX_WIDTH, DO_ACTION_TEX_HEIGHT, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
|
|
@ -836,7 +836,7 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) {
|
|||
for (i = 0; i < ARRAY_COUNTU(sZeldaMagic) - 3; i++) {
|
||||
if (sZeldaMagic[i + SRAM_HEADER_MAGIC] != sramCtx->readBuff[i + SRAM_HEADER_MAGIC]) {
|
||||
osSyncPrintf("SRAM破壊!!!!!!\n"); // "SRAM destruction! ! ! ! ! !"
|
||||
gSaveContext.language = sramCtx->readBuff[SRAM_HEADER_LANGUAGE];
|
||||
gSaveContext.language = CVar_GetS32("gLanguages", 0);
|
||||
memcpy(sramCtx->readBuff, sZeldaMagic, sizeof(sZeldaMagic));
|
||||
sramCtx->readBuff[SRAM_HEADER_LANGUAGE] = gSaveContext.language;
|
||||
Sram_WriteSramHeader(sramCtx);
|
||||
|
@ -845,7 +845,7 @@ void Sram_InitSram(GameState* gameState, SramContext* sramCtx) {
|
|||
|
||||
gSaveContext.audioSetting = sramCtx->readBuff[SRAM_HEADER_SOUND] & 3;
|
||||
gSaveContext.zTargetSetting = sramCtx->readBuff[SRAM_HEADER_ZTARGET] & 1;
|
||||
gSaveContext.language = sramCtx->readBuff[SRAM_HEADER_LANGUAGE];
|
||||
gSaveContext.language = CVar_GetS32("gLanguages", 0);
|
||||
|
||||
if (gSaveContext.language >= LANGUAGE_MAX) {
|
||||
gSaveContext.language = LANGUAGE_ENG;
|
||||
|
|
|
@ -366,7 +366,9 @@ void func_80ACA7E0(EnOwl* this, GlobalContext* globalCtx) {
|
|||
|
||||
void EnOwl_ConfirmKokiriMessage(EnOwl* this, GlobalContext* globalCtx) {
|
||||
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(globalCtx)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
// swap the order of the responses if better owl is enabled
|
||||
uint8_t index = CVar_GetS32("gBetterOwl", 0) == 0 ? globalCtx->msgCtx.choiceIndex : (1 - globalCtx->msgCtx.choiceIndex);
|
||||
switch (index) {
|
||||
case OWL_REPEAT:
|
||||
Message_ContinueTextbox(globalCtx, 0x2065);
|
||||
break;
|
||||
|
@ -393,7 +395,9 @@ void EnOwl_WaitOutsideKokiri(EnOwl* this, GlobalContext* globalCtx) {
|
|||
|
||||
void func_80ACA998(EnOwl* this, GlobalContext* globalCtx) {
|
||||
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(globalCtx)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
// swap the order of the responses if better owl is enabled
|
||||
uint8_t index = CVar_GetS32("gBetterOwl", 0) == 0 ? globalCtx->msgCtx.choiceIndex : (1 - globalCtx->msgCtx.choiceIndex);
|
||||
switch (index) {
|
||||
case OWL_REPEAT:
|
||||
Message_ContinueTextbox(globalCtx, 0x2069);
|
||||
this->actionFunc = func_80ACAA54;
|
||||
|
@ -437,7 +441,9 @@ void EnOwl_WaitHyruleCastle(EnOwl* this, GlobalContext* globalCtx) {
|
|||
|
||||
void func_80ACAB88(EnOwl* this, GlobalContext* globalCtx) {
|
||||
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(globalCtx)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
// swap the order of the responses if better owl is enabled
|
||||
uint8_t index = CVar_GetS32("gBetterOwl", 0) == 0 ? globalCtx->msgCtx.choiceIndex : (1 - globalCtx->msgCtx.choiceIndex);
|
||||
switch (index) {
|
||||
case OWL_REPEAT:
|
||||
// obtained zelda's letter
|
||||
if (gSaveContext.eventChkInf[4] & 1) {
|
||||
|
@ -478,7 +484,9 @@ void EnOwl_WaitKakariko(EnOwl* this, GlobalContext* globalCtx) {
|
|||
|
||||
void func_80ACAD34(EnOwl* this, GlobalContext* globalCtx) {
|
||||
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(globalCtx)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
// swap the order of the responses if better owl is enabled
|
||||
uint8_t index = CVar_GetS32("gBetterOwl", 0) == 0 ? globalCtx->msgCtx.choiceIndex : (1 - globalCtx->msgCtx.choiceIndex);
|
||||
switch (index) {
|
||||
case OWL_REPEAT:
|
||||
Message_ContinueTextbox(globalCtx, 0x206F);
|
||||
this->actionFunc = func_80ACADF0;
|
||||
|
@ -514,7 +522,9 @@ void EnOwl_WaitGerudo(EnOwl* this, GlobalContext* globalCtx) {
|
|||
|
||||
void func_80ACAEB8(EnOwl* this, GlobalContext* globalCtx) {
|
||||
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(globalCtx)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
// swap the order of the responses if better owl is enabled
|
||||
uint8_t index = CVar_GetS32("gBetterOwl", 0) == 0 ? globalCtx->msgCtx.choiceIndex : (1 - globalCtx->msgCtx.choiceIndex);
|
||||
switch (index) {
|
||||
case OWL_REPEAT:
|
||||
Message_ContinueTextbox(globalCtx, 0x2071);
|
||||
this->actionFunc = func_80ACAF74;
|
||||
|
@ -634,7 +644,9 @@ void EnOwl_WaitDeathMountainShortcut(EnOwl* this, GlobalContext* globalCtx) {
|
|||
|
||||
void func_80ACB344(EnOwl* this, GlobalContext* globalCtx) {
|
||||
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(globalCtx)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
// swap the order of the responses if better owl is enabled
|
||||
uint8_t index = CVar_GetS32("gBetterOwl", 0) == 0 ? globalCtx->msgCtx.choiceIndex : (1 - globalCtx->msgCtx.choiceIndex);
|
||||
switch (index) {
|
||||
case OWL_REPEAT:
|
||||
Message_ContinueTextbox(globalCtx, 0x607A);
|
||||
break;
|
||||
|
@ -657,7 +669,9 @@ void func_80ACB3E0(EnOwl* this, GlobalContext* globalCtx) {
|
|||
|
||||
void func_80ACB440(EnOwl* this, GlobalContext* globalCtx) {
|
||||
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(globalCtx)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
// swap the order of the responses if better owl is enabled
|
||||
uint8_t index = CVar_GetS32("gBetterOwl", 0) == 0 ? globalCtx->msgCtx.choiceIndex : (1 - globalCtx->msgCtx.choiceIndex);
|
||||
switch (index) {
|
||||
case OWL_REPEAT:
|
||||
Message_ContinueTextbox(globalCtx, 0x10C1);
|
||||
this->actionFunc = func_80ACB4FC;
|
||||
|
@ -692,7 +706,9 @@ void EnOwl_WaitLWPreSaria(EnOwl* this, GlobalContext* globalCtx) {
|
|||
|
||||
void func_80ACB5C4(EnOwl* this, GlobalContext* globalCtx) {
|
||||
if (Message_GetState(&globalCtx->msgCtx) == TEXT_STATE_CHOICE && Message_ShouldAdvance(globalCtx)) {
|
||||
switch (globalCtx->msgCtx.choiceIndex) {
|
||||
// swap the order of the responses if better owl is enabled
|
||||
uint8_t index = CVar_GetS32("gBetterOwl", 0) == 0 ? globalCtx->msgCtx.choiceIndex : (1 - globalCtx->msgCtx.choiceIndex);
|
||||
switch (index) {
|
||||
case OWL_REPEAT:
|
||||
Message_ContinueTextbox(globalCtx, 0x10C5);
|
||||
this->actionFunc = func_80ACB680;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue