Fix: a issue with loading e-Reader dot code (#608)

Fix issues with {sav,load}ing e-Reader `Dot Code`.

If `Dot Code` file is not specified, it tries to continually read it and does not accept input.

In Japanese (very likely other languages as well), the path of `Dot Code` file is garbled
internally due to failing conversion to UTF-8.
This commit is contained in:
s520 2020-02-16 02:02:53 +09:00 committed by GitHub
parent 951e8e0ebe
commit a320377040
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 393 additions and 344 deletions

File diff suppressed because it is too large Load Diff

View File

@ -1712,11 +1712,31 @@ const char* GetSaveDotCodeFile()
return saveDotCodeFile;
}
void ResetLoadDotCodeFile()
{
if(loadDotCodeFile)
{
free((char*)loadDotCodeFile);
}
loadDotCodeFile = strdup("");
}
void SetLoadDotCodeFile(const char* szFile)
{
loadDotCodeFile = strdup(szFile);
}
void ResetSaveDotCodeFile()
{
if (saveDotCodeFile)
{
free((char*)saveDotCodeFile);
}
saveDotCodeFile = strdup("");
}
void SetSaveDotCodeFile(const char* szFile)
{
saveDotCodeFile = strdup(szFile);

View File

@ -162,7 +162,9 @@ extern void cpuEnableProfiling(int hz);
const char* GetLoadDotCodeFile();
const char* GetSaveDotCodeFile();
void ResetLoadDotCodeFile();
void SetLoadDotCodeFile(const char* szFile);
void ResetSaveDotCodeFile();
void SetSaveDotCodeFile(const char* szFile);
// Updates romSize and realloc rom pointer if needed after soft-patching

View File

@ -232,7 +232,7 @@ void BIOS_EReader_ScanCard(int swi_num)
const char* loadDotCodeFile = GetLoadDotCodeFile();
if (loadDotCodeFile == 0) {
if (!*loadDotCodeFile) {
reg[0].I = 0x301;
return;
}

View File

@ -837,11 +837,14 @@ EVT_HANDLER_MASK(RomInformation, "ROM information...", CMDEN_GB | CMDEN_GBA)
}
}
static wxString loaddotcodefile_path;
static wxString savedotcodefile_path;
EVT_HANDLER_MASK(LoadDotCodeFile, "Load e-Reader Dot Code...", CMDEN_GBA)
EVT_HANDLER_MASK(ResetLoadingDotCodeFile, "Reset Loading e-Reader Dot Code", CMDEN_GBA)
{
ResetLoadDotCodeFile();
}
EVT_HANDLER_MASK(SetLoadingDotCodeFile, "Load e-Reader Dot Code...", CMDEN_GBA)
{
static wxString loaddotcodefile_path;
wxFileDialog dlg(this, _("Select Dot Code file"), loaddotcodefile_path, wxEmptyString,
_(
"e-Reader Dot Code (*.bin;*.raw)|"
@ -853,11 +856,17 @@ EVT_HANDLER_MASK(LoadDotCodeFile, "Load e-Reader Dot Code...", CMDEN_GBA)
return;
loaddotcodefile_path = dlg.GetPath();
SetLoadDotCodeFile(loaddotcodefile_path.mb_str(wxConvUTF8));
SetLoadDotCodeFile(loaddotcodefile_path.mb_str());
}
EVT_HANDLER_MASK(SaveDotCodeFile, "Save e-Reader Dot Code...", CMDEN_GBA)
EVT_HANDLER_MASK(ResetSavingDotCodeFile, "Reset Saving e-Reader Dot Code", CMDEN_GBA)
{
ResetLoadDotCodeFile();
}
EVT_HANDLER_MASK(SetSavingDotCodeFile, "Save e-Reader Dot Code...", CMDEN_GBA)
{
static wxString savedotcodefile_path;
wxFileDialog dlg(this, _("Select Dot Code file"), savedotcodefile_path, wxEmptyString,
_(
"e-Reader Dot Code (*.bin;*.raw)|"
@ -869,7 +878,7 @@ EVT_HANDLER_MASK(SaveDotCodeFile, "Save e-Reader Dot Code...", CMDEN_GBA)
return;
savedotcodefile_path = dlg.GetPath();
SetSaveDotCodeFile(savedotcodefile_path.mb_str(wxConvUTF8));
SetSaveDotCodeFile(savedotcodefile_path.mb_str());
}
static wxString batimp_path;

View File

@ -28,10 +28,16 @@
<object class="separator"/>
<object class="wxMenu">
<label>_e-Reader</label>
<object class="wxMenuItem" name="LoadDotCodeFile">
<object class="wxMenuItem" name="ResetLoadingDotCodeFile">
<label>_Reset Loading Dot Code</label>
</object>
<object class="wxMenuItem" name="SetLoadingDotCodeFile">
<label>_Load Dot Code...</label>
</object>
<object class="wxMenuItem" name="SaveDotCodeFile">
<object class="wxMenuItem" name="ResetSavingDotCodeFile">
<label>_Reset Saving Dot Code</label>
</object>
<object class="wxMenuItem" name="SetSavingDotCodeFile">
<label>_Save Dot Code...</label>
</object>
</object>