make ROM path not be hardcoded.

This commit is contained in:
StapleButter 2017-03-19 19:07:39 +01:00
parent 5a061bc638
commit 59d107bfb0
5 changed files with 24 additions and 15 deletions

View File

@ -135,7 +135,6 @@ bool Init()
if (!SPI::Init()) return false;
if (!RTC::Init()) return false;
Reset();
return true;
}
@ -307,13 +306,14 @@ void Reset()
KeyInput = 0x007F03FF;
_soundbias = 0;
}
// test
//LoadROM();
//LoadFirmware();
// a_interp2.nds a_rounding (10) (11) a_slope (5)
if (NDSCart::LoadROM("rom/nsmb.nds"))
Running = true; // hax
void LoadROM(const char* path, bool direct)
{
Reset();
if (NDSCart::LoadROM(path, direct))
Running = true;
}

View File

@ -116,6 +116,7 @@ bool Init();
void DeInit();
void Reset();
void LoadROM(const char* path, bool direct);
void SetupDirectBoot();
void RunFrame();

View File

@ -601,7 +601,7 @@ void Reset()
}
bool LoadROM(char* path)
bool LoadROM(const char* path, bool direct)
{
// TODO: streaming mode? for really big ROMs or systems with limited RAM
// for now we're lazy
@ -632,10 +632,11 @@ bool LoadROM(char* path)
fclose(f);
//CartROM = f;
// temp. TODO: later make this user selectable
// calling this sets up shit for booting from the cart directly.
// normal behavior is booting from the BIOS.
NDS::SetupDirectBoot();
if (direct)
{
NDS::SetupDirectBoot();
CmdEncMode = 2;
}
CartInserted = true;
@ -650,7 +651,7 @@ bool LoadROM(char* path)
if (arm9base >= 0x4000)
{
// reencrypt secure area if needed
if (*(u32*)&CartROM[arm9base] == 0xE7FFDEFF)
if (*(u32*)&CartROM[arm9base] == 0xE7FFDEFF && *(u32*)&CartROM[arm9base+0x10] != 0xE7FFDEFF)
{
printf("Re-encrypting cart secure area\n");

View File

@ -40,7 +40,7 @@ bool Init();
void DeInit();
void Reset();
bool LoadROM(char* path);
bool LoadROM(const char* path, bool direct);
void WriteROMCnt(u32 val);
u32 ReadROMData();

View File

@ -86,11 +86,18 @@ MainFrame::MainFrame()
sdlrend = SDL_CreateRenderer(sdlwin, -1, SDL_RENDERER_ACCELERATED); // SDL_RENDERER_PRESENTVSYNC
sdltex = SDL_CreateTexture(sdlrend, SDL_PIXELFORMAT_RGBA32, SDL_TEXTUREACCESS_STREAMING, 256, 384);
NDS::Init();
}
void MainFrame::OnOpenROM(wxCommandEvent& event)
{
NDS::Init();
wxFileDialog opener(this, _("Open ROM"), "", "", "DS ROM (*.nds)|*.nds;*.srl|Any file|*.*", wxFD_OPEN|wxFD_FILE_MUST_EXIST);
if (opener.ShowModal() == wxID_CANCEL)
return;
wxString filename = opener.GetPath();
NDS::LoadROM(filename.mb_str(), true);
emuthread->EmuStatus = 1;
emumutex->Lock();