preliminary wx port
This commit is contained in:
parent
3bec8d8d00
commit
fcf244747d
|
@ -0,0 +1,504 @@
|
||||||
|
#ifdef WIN32
|
||||||
|
#pragma comment(lib,"wxmsw28_core.lib")
|
||||||
|
#pragma comment(lib,"wxbase28.lib")
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#undef WIN32
|
||||||
|
#include "NDSSystem.h"
|
||||||
|
#include "GPU_osd.h"
|
||||||
|
#include "wx/wxprec.h"
|
||||||
|
#include "gfx3d.h"
|
||||||
|
#include "version.h"
|
||||||
|
#include "addons.h"
|
||||||
|
#include "saves.h"
|
||||||
|
#include "movie.h"
|
||||||
|
|
||||||
|
#include "wx/stdpaths.h"
|
||||||
|
|
||||||
|
#ifndef WX_PRECOMP
|
||||||
|
#include "wx/wx.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
class Desmume: public wxApp
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
virtual bool OnInit();
|
||||||
|
};
|
||||||
|
|
||||||
|
class DesmumeFrame: public wxFrame
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
DesmumeFrame(const wxString& title);
|
||||||
|
|
||||||
|
void OnQuit(wxCommandEvent& WXUNUSED(event)){Close(true);}
|
||||||
|
void OnAbout(wxCommandEvent& WXUNUSED(event))
|
||||||
|
{
|
||||||
|
wxMessageBox(wxString::Format
|
||||||
|
(
|
||||||
|
"Desmume on %s",
|
||||||
|
wxGetOsDescription()
|
||||||
|
),
|
||||||
|
"About Desmume",
|
||||||
|
wxOK | wxICON_INFORMATION,
|
||||||
|
this);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool up,down,left,right,x,y,a,b,l,r,start,select;
|
||||||
|
|
||||||
|
void applyInput(){
|
||||||
|
//TODO
|
||||||
|
return;
|
||||||
|
|
||||||
|
u16 pad = (0 |
|
||||||
|
((a ? 0 : 0x80) >> 7) |
|
||||||
|
((b ? 0 : 0x80) >> 6) |
|
||||||
|
((select? 0 : 0x80) >> 5) |
|
||||||
|
((start ? 0 : 0x80) >> 4) |
|
||||||
|
((right ? 0 : 0x80) >> 3) |
|
||||||
|
((left ? 0 : 0x80) >> 2) |
|
||||||
|
((up ? 0 : 0x80) >> 1) |
|
||||||
|
((down ? 0 : 0x80) ) |
|
||||||
|
((r ? 0 : 0x80) << 1) |
|
||||||
|
((l ? 0 : 0x80) << 2)) ;
|
||||||
|
|
||||||
|
((u16 *)MMU.ARM9_REG)[0x130>>1] = (u16)pad;
|
||||||
|
((u16 *)MMU.ARM7_REG)[0x130>>1] = (u16)pad;
|
||||||
|
|
||||||
|
bool debug = false;
|
||||||
|
bool lidClosed = false;
|
||||||
|
|
||||||
|
u16 padExt = (((u16 *)MMU.ARM7_REG)[0x136>>1] & 0x0070) |
|
||||||
|
((x ? 0 : 0x80) >> 7) |
|
||||||
|
((y ? 0 : 0x80) >> 6) |
|
||||||
|
((debug ? 0 : 0x80) >> 4) |
|
||||||
|
((lidClosed) << 7) |
|
||||||
|
0x0034;
|
||||||
|
|
||||||
|
((u16 *)MMU.ARM7_REG)[0x136>>1] = (u16)padExt;
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnKeyDown(wxKeyEvent &event){
|
||||||
|
|
||||||
|
switch(event.m_keyCode) {
|
||||||
|
case WXK_UP:
|
||||||
|
up = true;
|
||||||
|
break;
|
||||||
|
case WXK_DOWN:
|
||||||
|
down = true;
|
||||||
|
break;
|
||||||
|
case WXK_LEFT:
|
||||||
|
left = true;
|
||||||
|
break;
|
||||||
|
case WXK_RIGHT:
|
||||||
|
right = true;
|
||||||
|
break;
|
||||||
|
case WXK_RETURN:
|
||||||
|
start = true;
|
||||||
|
break;
|
||||||
|
case WXK_SHIFT:
|
||||||
|
select = true;
|
||||||
|
break;
|
||||||
|
case 65://a
|
||||||
|
y = true;
|
||||||
|
break;
|
||||||
|
case 83://s
|
||||||
|
x = true;
|
||||||
|
break;
|
||||||
|
case 90://z
|
||||||
|
b = true;
|
||||||
|
break;
|
||||||
|
case 88://x
|
||||||
|
a = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
// printf("%d",event.m_keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
|
void OnKeyUp(wxKeyEvent &event){
|
||||||
|
|
||||||
|
switch(event.m_keyCode) {
|
||||||
|
case WXK_UP:
|
||||||
|
up = false;
|
||||||
|
break;
|
||||||
|
case WXK_DOWN:
|
||||||
|
down = false;
|
||||||
|
break;
|
||||||
|
case WXK_LEFT:
|
||||||
|
left = false;
|
||||||
|
break;
|
||||||
|
case WXK_RIGHT:
|
||||||
|
right = false;
|
||||||
|
break;
|
||||||
|
case WXK_RETURN:
|
||||||
|
start = false;
|
||||||
|
break;
|
||||||
|
case WXK_SHIFT:
|
||||||
|
select = false;
|
||||||
|
break;
|
||||||
|
case 65://a
|
||||||
|
y = false;
|
||||||
|
break;
|
||||||
|
case 83://s
|
||||||
|
x = false;
|
||||||
|
break;
|
||||||
|
case 90://z
|
||||||
|
b = false;
|
||||||
|
break;
|
||||||
|
case 88://x
|
||||||
|
a = false;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO integrate paths system?
|
||||||
|
void LoadRom(wxCommandEvent& event){
|
||||||
|
wxFileDialog dialog(this,"Load Rom",wxGetHomeDir(),"","*.nds",wxFD_OPEN, wxDefaultPosition, wxDefaultSize);
|
||||||
|
if(dialog.ShowModal() == wxID_OK) {
|
||||||
|
NDS_Init ();
|
||||||
|
execute = true;
|
||||||
|
NDS_LoadROM(dialog.GetPath(), dialog.GetPath());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO should integrate filter system
|
||||||
|
void onPaint(wxPaintEvent &event)
|
||||||
|
{
|
||||||
|
wxPaintDC dc(this);
|
||||||
|
|
||||||
|
int width = 256;
|
||||||
|
int height = 384;
|
||||||
|
|
||||||
|
u16 gpu_pixel;
|
||||||
|
u32 offset;
|
||||||
|
u8 rgb[256*384*3];
|
||||||
|
for (int i = 0; i < 256; i++) {
|
||||||
|
for (int j = 0; j < 384; j++) {
|
||||||
|
gpu_pixel = *((u16 *) & GPU_screen[(i + j * 256) << 1]);
|
||||||
|
offset = i * 3 + j * 3 * 256;
|
||||||
|
*(rgb + offset + 0) = ((gpu_pixel >> 0) & 0x1f) << 3;
|
||||||
|
*(rgb + offset + 1) = ((gpu_pixel >> 5) & 0x1f) << 3;
|
||||||
|
*(rgb + offset + 2) = ((gpu_pixel >> 10) & 0x1f) << 3;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wxBitmap m_bitmap(wxImage(width, height, rgb, true));
|
||||||
|
dc.DrawBitmap(m_bitmap, 0, 0, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void onIdle(wxIdleEvent &event){
|
||||||
|
Refresh(false);
|
||||||
|
event.RequestMore();
|
||||||
|
applyInput();
|
||||||
|
if(execute)
|
||||||
|
NDS_exec<false>();
|
||||||
|
osd->update();
|
||||||
|
DrawHUD();
|
||||||
|
osd->clear();
|
||||||
|
// wxMicroSleep(16.7*1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
void pause(wxCommandEvent& event){
|
||||||
|
execute ? execute=false : execute=true;
|
||||||
|
}
|
||||||
|
void reset(wxCommandEvent& event){NDS_Reset();}
|
||||||
|
|
||||||
|
void frameCounter(wxCommandEvent& event){
|
||||||
|
CommonSettings.hud.FrameCounterDisplay ^= true;
|
||||||
|
osd->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void FPS(wxCommandEvent& event){
|
||||||
|
CommonSettings.hud.FpsDisplay ^= true;
|
||||||
|
osd->clear();
|
||||||
|
}
|
||||||
|
void displayInput(wxCommandEvent& event){
|
||||||
|
CommonSettings.hud.ShowInputDisplay ^= true;
|
||||||
|
osd->clear();
|
||||||
|
}
|
||||||
|
void displayGraphicalInput(wxCommandEvent& event){
|
||||||
|
CommonSettings.hud.ShowGraphicalInputDisplay ^= true;
|
||||||
|
osd->clear();
|
||||||
|
}
|
||||||
|
void displayLagCounter(wxCommandEvent& event){
|
||||||
|
CommonSettings.hud.ShowLagFrameCounter ^= true;
|
||||||
|
osd->clear();
|
||||||
|
}
|
||||||
|
void displayMicrophone(wxCommandEvent& event){
|
||||||
|
CommonSettings.hud.ShowMicrophone ^= true;
|
||||||
|
osd->clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
void mainG(int n) {
|
||||||
|
if(MainScreen.gpu->dispBG[n])
|
||||||
|
GPU_remove(MainScreen.gpu, n);
|
||||||
|
else
|
||||||
|
GPU_addBack(MainScreen.gpu, n);
|
||||||
|
}
|
||||||
|
void subG(int n) {
|
||||||
|
if(SubScreen.gpu->dispBG[n])
|
||||||
|
GPU_remove(SubScreen.gpu, n);
|
||||||
|
else
|
||||||
|
GPU_addBack(SubScreen.gpu, n);
|
||||||
|
}
|
||||||
|
void mainGPU(wxCommandEvent& event){CommonSettings.showGpu.main^=true;}
|
||||||
|
void mainBG0(wxCommandEvent& event){mainG(0);}
|
||||||
|
void mainBG1(wxCommandEvent& event){mainG(1);}
|
||||||
|
void mainBG2(wxCommandEvent& event){mainG(2);}
|
||||||
|
void mainBG3(wxCommandEvent& event){mainG(3);}
|
||||||
|
|
||||||
|
void subGPU(wxCommandEvent& event){CommonSettings.showGpu.sub^=true;}
|
||||||
|
void subBG0(wxCommandEvent& event){subG(0);}
|
||||||
|
void subBG1(wxCommandEvent& event){subG(1);}
|
||||||
|
void subBG2(wxCommandEvent& event){subG(2);}
|
||||||
|
void subBG3(wxCommandEvent& event){subG(3);}
|
||||||
|
|
||||||
|
void website(wxCommandEvent& event) {wxLaunchDefaultBrowser("http://desmume.org/");}
|
||||||
|
void forums(wxCommandEvent& event) {wxLaunchDefaultBrowser("http://forums.desmume.org/index.php");}
|
||||||
|
void submitABugReport(wxCommandEvent& event) {wxLaunchDefaultBrowser("http://sourceforge.net/tracker/?func=add&group_id=164579&atid=832291");}
|
||||||
|
|
||||||
|
void _3dView(wxCommandEvent& event) {
|
||||||
|
driver->VIEW3D_Init();
|
||||||
|
driver->view3d->Launch();
|
||||||
|
}
|
||||||
|
|
||||||
|
void saveStateAs(wxCommandEvent& event) {
|
||||||
|
wxFileDialog dialog(this,"Save State As",wxGetHomeDir(),"","*.dst",wxFD_SAVE, wxDefaultPosition, wxDefaultSize);
|
||||||
|
if(dialog.ShowModal() == wxID_OK)
|
||||||
|
savestate_save (dialog.GetPath());
|
||||||
|
}
|
||||||
|
void loadStateFrom(wxCommandEvent& event) {
|
||||||
|
wxFileDialog dialog(this,"Load State From",wxGetHomeDir(),"","*.dst",wxFD_OPEN, wxDefaultPosition, wxDefaultSize);
|
||||||
|
if(dialog.ShowModal() == wxID_OK)
|
||||||
|
savestate_load (dialog.GetPath());
|
||||||
|
}
|
||||||
|
|
||||||
|
void closeRom(wxCommandEvent& event) {
|
||||||
|
NDS_FreeROM();
|
||||||
|
execute = false;
|
||||||
|
Hud.resetTransient();
|
||||||
|
NDS_Reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
void importBackupMemory(wxCommandEvent& event) {
|
||||||
|
wxFileDialog dialog(this,"Import Backup Memory",wxGetHomeDir(),"","*.duc, *.sav",wxFD_OPEN, wxDefaultPosition, wxDefaultSize);
|
||||||
|
if(dialog.ShowModal() == wxID_OK)
|
||||||
|
if (!NDS_ImportSave(dialog.GetPath()))
|
||||||
|
wxMessageBox(wxString::Format("Save was not successfully imported"),"Error",wxOK | wxICON_ERROR,this);
|
||||||
|
}
|
||||||
|
|
||||||
|
void exportBackupMemory(wxCommandEvent& event) {
|
||||||
|
wxFileDialog dialog(this,"Export Backup Memory",wxGetHomeDir(),"","*.duc, *.sav",wxFD_SAVE, wxDefaultPosition, wxDefaultSize);
|
||||||
|
if(dialog.ShowModal() == wxID_OK)
|
||||||
|
if (!NDS_ExportSave(dialog.GetPath()))
|
||||||
|
wxMessageBox(wxString::Format("Save was not successfully exported"),"Error",wxOK | wxICON_ERROR,this);
|
||||||
|
}
|
||||||
|
void saveScreenshotAs(wxCommandEvent& event) {
|
||||||
|
wxFileDialog dialog(this,"Save Screenshot As",wxGetHomeDir(),"","*.png",wxFD_SAVE, wxDefaultPosition, wxDefaultSize);
|
||||||
|
if(dialog.ShowModal() == wxID_OK)
|
||||||
|
NDS_WritePNG(dialog.GetPath());
|
||||||
|
}
|
||||||
|
void quickScreenshot(wxCommandEvent& event) {
|
||||||
|
NDS_WritePNG(wxStandardPaths::Get().GetExecutablePath());//TODO GetExecutablePath is wrong
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO
|
||||||
|
void playMovie(wxCommandEvent& event) {}
|
||||||
|
void recordMovie(wxCommandEvent& event) {}
|
||||||
|
void stopMovie(wxCommandEvent& event) {FCEUI_StopMovie();}
|
||||||
|
|
||||||
|
private:
|
||||||
|
DECLARE_EVENT_TABLE()
|
||||||
|
};
|
||||||
|
|
||||||
|
enum
|
||||||
|
{
|
||||||
|
wExit = wxID_EXIT,
|
||||||
|
wAbout = wxID_ABOUT,
|
||||||
|
wRom,
|
||||||
|
wPause,
|
||||||
|
wReset,
|
||||||
|
wFrameCounter,
|
||||||
|
wFPS,
|
||||||
|
wDisplayInput,
|
||||||
|
wDisplayGraphicalInput,
|
||||||
|
wDisplayLagCounter,
|
||||||
|
wDisplayMicrophone,
|
||||||
|
wMainGPU,
|
||||||
|
wMainBG0,
|
||||||
|
wMainBG1,
|
||||||
|
wMainBG2,
|
||||||
|
wMainBG3,
|
||||||
|
wSubGPU,
|
||||||
|
wSubBG0,
|
||||||
|
wSubBG1,
|
||||||
|
wSubBG2,
|
||||||
|
wSubBG3,
|
||||||
|
wWebsite,
|
||||||
|
wForums,
|
||||||
|
wSubmitABugReport,
|
||||||
|
w3dView,
|
||||||
|
wSaveStateAs,
|
||||||
|
wLoadStateFrom,
|
||||||
|
wCloseRom,
|
||||||
|
wImportBackupMemory,
|
||||||
|
wExportBackupMemory,
|
||||||
|
wPlayMovie,
|
||||||
|
wRecordMovie,
|
||||||
|
wStopMovie,
|
||||||
|
wSaveScreenshotAs,
|
||||||
|
wQuickScreenshot
|
||||||
|
};
|
||||||
|
|
||||||
|
BEGIN_EVENT_TABLE(DesmumeFrame, wxFrame)
|
||||||
|
EVT_PAINT(DesmumeFrame::onPaint)
|
||||||
|
EVT_IDLE(DesmumeFrame::onIdle)
|
||||||
|
EVT_MENU(wExit, DesmumeFrame::OnQuit)
|
||||||
|
EVT_MENU(wRom, DesmumeFrame::LoadRom)
|
||||||
|
EVT_MENU(wAbout,DesmumeFrame::OnAbout)
|
||||||
|
EVT_MENU(wPause,DesmumeFrame::pause)
|
||||||
|
EVT_MENU(wReset,DesmumeFrame::reset)
|
||||||
|
EVT_MENU(wFrameCounter,DesmumeFrame::frameCounter)
|
||||||
|
EVT_MENU(wFPS,DesmumeFrame::FPS)
|
||||||
|
EVT_MENU(wDisplayInput,DesmumeFrame::displayInput)
|
||||||
|
EVT_MENU(wDisplayGraphicalInput,DesmumeFrame::displayGraphicalInput)
|
||||||
|
EVT_MENU(wDisplayLagCounter,DesmumeFrame::displayLagCounter)
|
||||||
|
EVT_MENU(wDisplayMicrophone,DesmumeFrame::displayMicrophone)
|
||||||
|
EVT_KEY_DOWN(DesmumeFrame::OnKeyDown)
|
||||||
|
EVT_KEY_UP(DesmumeFrame::OnKeyUp)
|
||||||
|
|
||||||
|
EVT_MENU(wMainGPU,DesmumeFrame::mainGPU)
|
||||||
|
EVT_MENU(wMainBG0,DesmumeFrame::mainBG0)
|
||||||
|
EVT_MENU(wMainBG1,DesmumeFrame::mainBG1)
|
||||||
|
EVT_MENU(wMainBG2,DesmumeFrame::mainBG2)
|
||||||
|
EVT_MENU(wMainBG3,DesmumeFrame::mainBG3)
|
||||||
|
EVT_MENU(wSubGPU,DesmumeFrame::subGPU)
|
||||||
|
EVT_MENU(wSubBG0,DesmumeFrame::subBG0)
|
||||||
|
EVT_MENU(wSubBG1,DesmumeFrame::subBG1)
|
||||||
|
EVT_MENU(wSubBG2,DesmumeFrame::subBG2)
|
||||||
|
EVT_MENU(wSubBG3,DesmumeFrame::subBG3)
|
||||||
|
|
||||||
|
EVT_MENU(wWebsite,DesmumeFrame::website)
|
||||||
|
EVT_MENU(wForums,DesmumeFrame::forums)
|
||||||
|
EVT_MENU(wSubmitABugReport,DesmumeFrame::submitABugReport)
|
||||||
|
|
||||||
|
EVT_MENU(wSaveStateAs,DesmumeFrame::saveStateAs)
|
||||||
|
EVT_MENU(wLoadStateFrom,DesmumeFrame::loadStateFrom)
|
||||||
|
|
||||||
|
EVT_MENU(wCloseRom,DesmumeFrame::closeRom)
|
||||||
|
EVT_MENU(wImportBackupMemory,DesmumeFrame::importBackupMemory)
|
||||||
|
EVT_MENU(wExportBackupMemory,DesmumeFrame::exportBackupMemory)
|
||||||
|
|
||||||
|
EVT_MENU(wSaveScreenshotAs,DesmumeFrame::saveScreenshotAs)
|
||||||
|
EVT_MENU(wQuickScreenshot,DesmumeFrame::quickScreenshot)
|
||||||
|
|
||||||
|
EVT_MENU(wPlayMovie,DesmumeFrame::playMovie)
|
||||||
|
EVT_MENU(wStopMovie,DesmumeFrame::stopMovie)
|
||||||
|
EVT_MENU(wRecordMovie,DesmumeFrame::recordMovie)
|
||||||
|
|
||||||
|
EVT_MENU(w3dView,DesmumeFrame::_3dView)
|
||||||
|
|
||||||
|
END_EVENT_TABLE()
|
||||||
|
|
||||||
|
IMPLEMENT_APP(Desmume)
|
||||||
|
|
||||||
|
bool Desmume::OnInit()
|
||||||
|
{
|
||||||
|
if ( !wxApp::OnInit() )
|
||||||
|
return false;
|
||||||
|
|
||||||
|
NDS_Init ();
|
||||||
|
|
||||||
|
Desmume_InitOnce();
|
||||||
|
aggDraw.hud->attach((u8*)GPU_screen, 256, 384, 1024);//TODO
|
||||||
|
|
||||||
|
#ifdef __WIN32__
|
||||||
|
extern void OpenConsole();
|
||||||
|
OpenConsole();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
DesmumeFrame *frame = new DesmumeFrame((char*)EMU_DESMUME_NAME_AND_VERSION());
|
||||||
|
frame->Show(true);
|
||||||
|
|
||||||
|
//TODO
|
||||||
|
addon_type = NDS_ADDON_NONE;
|
||||||
|
addonsChangePak(addon_type);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
DesmumeFrame::DesmumeFrame(const wxString& title)
|
||||||
|
: wxFrame(NULL, wxID_ANY, title)
|
||||||
|
{
|
||||||
|
|
||||||
|
this->SetSize(256,384+46);//why 46?
|
||||||
|
|
||||||
|
wxMenu *fileMenu = new wxMenu;
|
||||||
|
wxMenu *emulationMenu = new wxMenu;
|
||||||
|
wxMenu *viewMenu = new wxMenu;
|
||||||
|
wxMenu *configMenu = new wxMenu;
|
||||||
|
wxMenu *toolsMenu = new wxMenu;
|
||||||
|
wxMenu *helpMenu = new wxMenu;
|
||||||
|
|
||||||
|
fileMenu->Append(wRom, "Load R&om\tAlt-R");
|
||||||
|
fileMenu->Append(wCloseRom, "Close Rom");
|
||||||
|
fileMenu->AppendSeparator();
|
||||||
|
fileMenu->Append(wSaveStateAs, "Save State As...");
|
||||||
|
fileMenu->Append(wLoadStateFrom, "Load State From...");
|
||||||
|
fileMenu->AppendSeparator();
|
||||||
|
fileMenu->Append(wImportBackupMemory, "Import Backup Memory...");
|
||||||
|
fileMenu->Append(wExportBackupMemory, "Export Backup Memory...");
|
||||||
|
fileMenu->AppendSeparator();
|
||||||
|
fileMenu->Append(wSaveScreenshotAs, "Save Screenshot As");
|
||||||
|
fileMenu->Append(wQuickScreenshot, "Quick Screenshot");
|
||||||
|
fileMenu->AppendSeparator();
|
||||||
|
fileMenu->Append(wPlayMovie, "Play Movie");
|
||||||
|
fileMenu->Append(wRecordMovie, "Record Movie");
|
||||||
|
fileMenu->Append(wStopMovie, "Stop Movie");
|
||||||
|
fileMenu->AppendSeparator();
|
||||||
|
fileMenu->Append(wExit, "E&xit\tAlt-X", "Quit this program");
|
||||||
|
|
||||||
|
emulationMenu->Append(wPause, "&Pause\tAlt-P", "Pause Emulation");
|
||||||
|
emulationMenu->Append(wReset, "&Reset\tAlt-R", "Reset Emulation");
|
||||||
|
|
||||||
|
viewMenu->AppendSeparator();
|
||||||
|
viewMenu->Append(wFrameCounter, "&Display Frame Counter");
|
||||||
|
viewMenu->Append(wFPS, "&Display FPS");
|
||||||
|
viewMenu->Append(wDisplayInput, "&Display Input");
|
||||||
|
viewMenu->Append(wDisplayGraphicalInput, "&Display Graphical Input");
|
||||||
|
viewMenu->Append(wDisplayLagCounter, "&Display Lag Counter");
|
||||||
|
viewMenu->Append(wDisplayMicrophone, "&Display Microphone");
|
||||||
|
|
||||||
|
toolsMenu->Append(w3dView, "&3d Viewer");
|
||||||
|
wxMenu *layersMenu = new wxMenu;
|
||||||
|
{
|
||||||
|
layersMenu->AppendCheckItem(wMainGPU,"Main GPU");
|
||||||
|
layersMenu->Append(wMainBG0,"Main BG 0");
|
||||||
|
layersMenu->Append(wMainBG1,"Main BG 1");
|
||||||
|
layersMenu->Append(wMainBG2,"Main BG 2");
|
||||||
|
layersMenu->Append(wMainBG3,"Main BG 3");
|
||||||
|
layersMenu->AppendSeparator();
|
||||||
|
layersMenu->Append(wSubGPU,"Sub GPU");
|
||||||
|
layersMenu->Append(wSubBG0,"Sub BG 0");
|
||||||
|
layersMenu->Append(wSubBG1,"Sub BG 1");
|
||||||
|
layersMenu->Append(wSubBG2,"Sub BG 2");
|
||||||
|
layersMenu->Append(wSubBG3,"Sub BG 3");
|
||||||
|
}
|
||||||
|
toolsMenu->AppendSeparator();
|
||||||
|
toolsMenu->AppendSubMenu(layersMenu,"View Layers");
|
||||||
|
|
||||||
|
helpMenu->Append(wWebsite, "&Website");
|
||||||
|
helpMenu->Append(wForums, "&Forums");
|
||||||
|
helpMenu->Append(wSubmitABugReport, "&Submit A Bug Report");
|
||||||
|
helpMenu->Append(wAbout, "&About", "Show about dialog");
|
||||||
|
|
||||||
|
wxMenuBar *menuBar = new wxMenuBar();
|
||||||
|
menuBar->Append(fileMenu, "&File");
|
||||||
|
menuBar->Append(emulationMenu, "&Emulation");
|
||||||
|
menuBar->Append(viewMenu, "&View");
|
||||||
|
menuBar->Append(configMenu, "&Config");
|
||||||
|
menuBar->Append(toolsMenu, "&Tools");
|
||||||
|
menuBar->Append(helpMenu, "&Help");
|
||||||
|
SetMenuBar(menuBar);
|
||||||
|
|
||||||
|
// CreateStatusBar(2);
|
||||||
|
// SetStatusText("Welcome to Desmume!");
|
||||||
|
}
|
Loading…
Reference in New Issue