OSDN Git Service

RAM access mode support, CUI only
authornaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Fri, 5 Nov 2010 11:55:59 +0000 (11:55 +0000)
committernaruko <naruko@24ea1065-a21e-4ca1-99c9-f5125deb0858>
Fri, 5 Nov 2010 11:55:59 +0000 (11:55 +0000)
git-svn-id: svn+ssh://svn.osdn.net/svnroot/unagi@387 24ea1065-a21e-4ca1-99c9-f5125deb0858

18 files changed:
client/trunk/anago/anago.mk
client/trunk/anago/anago_cui.c
client/trunk/anago/anago_frame.cpp
client/trunk/anago/anago_gui.cpp
client/trunk/anago/anago_gui.fbp
client/trunk/anago/anago_gui.h
client/trunk/anago/dumpcore.nut
client/trunk/anago/reader_dummy.c
client/trunk/anago/script_common.c
client/trunk/anago/script_common.h
client/trunk/anago/script_dump.c
client/trunk/anago/script_dump.h
client/trunk/anago/script_program.c
client/trunk/anago/squirrel_wrap.c
client/trunk/reader_kazzo.c
client/trunk/reader_master.h
client/trunk/romimage.c
client/trunk/romimage.h

index 5882a19..6f57bea 100644 (file)
@@ -3,9 +3,9 @@ VPATH = ..
 ifeq ($(RELEASE),1)
   CPPFLAGS += -O2 -DNDEBUG
 else
-  CPPFLAGS += -g -O0
+  CPPFLAGS += -g -O0 -DDEBUG=1
 endif
-CPPFLAGS += -Wall -Werror -DDEBUG=1
+CPPFLAGS += -Wall -Werror
 CFLAGS = -I.. -I$(SQUIRREL)/include -I$(KAZZO)
 ifneq ($(strip $(LIBUSB)),)
   CFLAGS += -I$(LIBUSB)/include
index 46ac003..5524703 100644 (file)
@@ -152,9 +152,19 @@ static void dump(int c, wgChar **v, const struct reader_driver *r)
        config.ppu.increase = 1;
        config.progress = true;
        switch(v[1][0]){
+       case wgT('d'):
+               config.mode = MODE_ROM_DUMP;
+               break;
        case wgT('D'):
+               config.mode = MODE_ROM_DUMP;
                config.progress = false;
                break;
+       case wgT('r'): case wgT('R'):
+               config.mode = MODE_RAM_READ;
+               break;
+       case wgT('w'): case wgT('W'):
+               config.mode = MODE_RAM_WRITE;
+               break;
        }
        switch(v[1][1]){
        case wgT('2'):
@@ -192,7 +202,11 @@ static void dump(int c, wgChar **v, const struct reader_driver *r)
        }
        config.battery = false;
        log_set(&config.log);
-       script_dump_execute(&config);
+       if(config.mode == MODE_ROM_DUMP){
+               script_dump_execute(&config);
+       }else{
+               script_workram_execute(&config);
+       }
        cui_gauge_destory(&config.cpu.gauge);
        cui_gauge_destory(&config.ppu.gauge);
 }
@@ -229,16 +243,17 @@ int anago_cui(int c, wgChar **v)
                switch(v[1][0]){
 #if DEBUG==1
                case wgT('x'):
-                       r = &DRIVER_DUMMY;
+                       r = &DRIVER_DUMMY; //though down
 #endif
                case wgT('f'): case wgT('F'):
                        program(c, v, r);
                        break;
 #if DEBUG==1
-               case wgT('z'): 
-                       r = &DRIVER_DUMMY;
+               case wgT('z'): case wgT('R'): case wgT('W'): 
+                       r = &DRIVER_DUMMY; //though down
 #endif
                case wgT('d'): case wgT('D'):
+               case wgT('r'): case wgT('w'):
                        dump(c,v, r);
                        break;
                default:
index 109f4f7..c90d71e 100644 (file)
@@ -116,7 +116,7 @@ static void label_set(void *label, const wxChar *format, ...)
        wxMutexGuiLeave();
 }
 
-void choice_append(void *choice, const wxChar *str)
+static void choice_append(void *choice, const wxChar *str)
 {
        wxChoice *c = static_cast<wxChoice *>(choice);
        c->Append(wxString(str));
@@ -189,10 +189,11 @@ private:
                t->value_set = value_set;
                t->value_add = value_add;
        }
-       void script_choice_init(wxChoice *c, wxString filespec)
+       void script_choice_init(wxControlWithItems *c, wxString filespec)
        {
                wxDir dir(wxGetCwd());
                wxString filename;
+               wxArrayString ar;
 
                c->Clear();
                if ( !dir.IsOpened() ){
@@ -200,17 +201,21 @@ private:
                }
                bool cont = dir.GetFirst(&filename, filespec, wxDIR_FILES);
                while ( cont ){
-                       c->Append(filename);
+                       ar.Add(filename);
                        cont = dir.GetNext(&filename);
                }
-               if(c->GetCount() == 0){
+               if(ar.GetCount() == 0){
                        *m_log << wxT("warning: ") << filespec << wxT(" script not found.\n");
                }else{
+                       ar.Sort(false);
+                       for(size_t i = 0; i < ar.GetCount(); i++){
+                               c->Append(ar[i]);
+                       }
                        c->Select(0);
                }
        }
 //---- dump mode functions ----
-       void dump_increase_init(wxChoice *c)
+       void dump_increase_init(wxControlWithItems *c)
        {
                c->Clear();
                c->Append(wxT("x1"));
@@ -218,7 +223,7 @@ private:
                c->Append(wxT("x4"));
                c->Select(0);
        }
-       int dump_increase_get(wxChoice *c)
+       int dump_increase_get(wxControlWithItems *c)
        {
                switch(c->GetSelection()){
                case 0: return 1;
@@ -304,7 +309,7 @@ private:
        }
        
 //----- program mode functions ----
-       void program_padding_init(wxChoice *c)
+       void program_padding_init(wxControlWithItems *c)
        {
                c->Clear();
                c->Append(wxT("full"));
@@ -458,6 +463,21 @@ protected:
        {
                m_log->Clear();
        }
+       
+private:
+       void program_device_load(wxControlWithItems *choice, wxFileConfig *c, wxString key)
+       {
+               wxString device;
+               int val;
+               c->Read(key, &device);
+               val = choice->FindString(device);
+               if(val == wxNOT_FOUND){
+                       choice->Select(0);
+               }else{
+                       choice->Select(val);
+               }
+       }
+       
 public:
        /** Constructor */
        anago_frame(wxWindow* parent, const struct reader_driver *r)
@@ -468,10 +488,10 @@ public:
          m_config_file(wxT(".anago"))
 #endif
        {
+               wxFileConfig config(wxEmptyString, wxEmptyString, m_config_file);
                m_reader = r;
 //form config load
                {
-                       wxFileConfig config(wxEmptyString, wxEmptyString, m_config_file);
                        wxPoint position;
                        
                        config.Read(wxT("position.x"), &position.x, 32);
@@ -506,8 +526,8 @@ public:
                if(m_program_cpu_device->GetCount() == 0){
                        *m_log << wxT("warning: flash device parameter not found\n");
                }else{
-                       m_program_cpu_device->Select(0);
-                       m_program_ppu_device->Select(0);
+                       program_device_load(m_program_cpu_device, &config, wxT("program.cpu.device"));
+                       program_device_load(m_program_ppu_device, &config, wxT("program.ppu.device"));
                }
                this->program_padding_init(m_program_cpu_padding);
                this->program_padding_init(m_program_ppu_padding);
@@ -600,6 +620,9 @@ public:
                wxSize size = this->GetSize();
                config.Write(wxT("size.x"), size.x);
                config.Write(wxT("size.y"), size.y);
+               
+               config.Write(wxT("program.cpu.device"), m_program_cpu_device->GetStringSelection());
+               config.Write(wxT("program.ppu.device"), m_program_ppu_device->GetStringSelection());
        }
 };
 
@@ -646,7 +669,7 @@ extern "C"{
 }
 int main(int c, wxChar **v)
 {
-       if(c < 2){
+       if(c < 3){
                return wxEntry(c, v);
        }
        return anago_cui(c, v);
index 8004cb2..a005496 100644 (file)
@@ -273,6 +273,120 @@ frame_main::frame_main( wxWindow* parent, wxWindowID id, const wxString& title,
        m_panel_program->Layout();
        bSizer91->Fit( m_panel_program );
        m_notebook->AddPage( m_panel_program, wxT("program"), false );
+       m_panel_wram = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
+       m_panel_wram->Hide();
+       
+       wxBoxSizer* bSizer17;
+       bSizer17 = new wxBoxSizer( wxVERTICAL );
+       
+       wxBoxSizer* bSizer221;
+       bSizer221 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_staticline111 = new wxStaticLine( m_panel_wram, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer221->Add( m_staticline111, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_staticText221 = new wxStaticText( m_panel_wram, wxID_ANY, wxT("RAM read"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText221->Wrap( -1 );
+       bSizer221->Add( m_staticText221, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_staticline71 = new wxStaticLine( m_panel_wram, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer221->Add( m_staticline71, 1, wxALL|wxALIGN_CENTER_VERTICAL, 2 );
+       
+       bSizer17->Add( bSizer221, 1, wxEXPAND, 2 );
+       
+       wxFlexGridSizer* fgSizer3;
+       fgSizer3 = new wxFlexGridSizer( 2, 2, 0, 0 );
+       fgSizer3->AddGrowableCol( 1 );
+       fgSizer3->SetFlexibleDirection( wxBOTH );
+       fgSizer3->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       m_staticText16 = new wxStaticText( m_panel_wram, wxID_ANY, wxT("&script"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText16->Wrap( -1 );
+       fgSizer3->Add( m_staticText16, 0, wxALL, 5 );
+       
+       wxArrayString m_ram_read_scriptChoices;
+       m_ram_read_script = new wxChoice( m_panel_wram, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ram_read_scriptChoices, 0 );
+       m_ram_read_script->SetSelection( 0 );
+       fgSizer3->Add( m_ram_read_script, 0, wxALL|wxEXPAND, 5 );
+       
+       m_staticText17 = new wxStaticText( m_panel_wram, wxID_ANY, wxT("RAM image"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText17->Wrap( -1 );
+       fgSizer3->Add( m_staticText17, 0, wxALL, 5 );
+       
+       m_ram_read_picker = new wxFilePickerCtrl( m_panel_wram, wxID_ANY, wxEmptyString, wxT("Select a file"), wxT("*.sav"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL );
+       fgSizer3->Add( m_ram_read_picker, 0, wxALL|wxEXPAND, 5 );
+       
+       bSizer17->Add( fgSizer3, 0, wxEXPAND, 2 );
+       
+       wxBoxSizer* bSizer18;
+       bSizer18 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_ram_read_gauge = new wxGauge( m_panel_wram, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL );
+       m_ram_read_gauge->SetMinSize( wxSize( -1,12 ) );
+       
+       bSizer18->Add( m_ram_read_gauge, 1, wxALL, 2 );
+       
+       m_ram_read_button = new wxButton( m_panel_wram, wxID_ANY, wxT("&read"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer18->Add( m_ram_read_button, 0, wxALL|wxALIGN_RIGHT, 5 );
+       
+       bSizer17->Add( bSizer18, 0, wxEXPAND, 2 );
+       
+       wxBoxSizer* bSizer22;
+       bSizer22 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_staticline12 = new wxStaticLine( m_panel_wram, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer22->Add( m_staticline12, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_staticText22 = new wxStaticText( m_panel_wram, wxID_ANY, wxT("RAM write"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText22->Wrap( -1 );
+       bSizer22->Add( m_staticText22, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
+       
+       m_staticline7 = new wxStaticLine( m_panel_wram, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
+       bSizer22->Add( m_staticline7, 1, wxALL|wxALIGN_CENTER_VERTICAL, 2 );
+       
+       bSizer17->Add( bSizer22, 0, wxEXPAND, 2 );
+       
+       wxFlexGridSizer* fgSizer31;
+       fgSizer31 = new wxFlexGridSizer( 2, 2, 0, 0 );
+       fgSizer31->AddGrowableCol( 1 );
+       fgSizer31->SetFlexibleDirection( wxBOTH );
+       fgSizer31->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       m_staticText161 = new wxStaticText( m_panel_wram, wxID_ANY, wxT("s&cript"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText161->Wrap( -1 );
+       fgSizer31->Add( m_staticText161, 0, wxALL, 5 );
+       
+       wxArrayString m_ram_write_scriptChoices;
+       m_ram_write_script = new wxChoice( m_panel_wram, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_ram_write_scriptChoices, 0 );
+       m_ram_write_script->SetSelection( 0 );
+       fgSizer31->Add( m_ram_write_script, 0, wxALL|wxEXPAND, 5 );
+       
+       m_staticText171 = new wxStaticText( m_panel_wram, wxID_ANY, wxT("RAM image"), wxDefaultPosition, wxDefaultSize, 0 );
+       m_staticText171->Wrap( -1 );
+       fgSizer31->Add( m_staticText171, 0, wxALL, 5 );
+       
+       m_ram_write_picker = new wxFilePickerCtrl( m_panel_wram, wxID_ANY, wxEmptyString, wxT("Select a file"), wxT("*.sav"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_SAVE|wxFLP_USE_TEXTCTRL );
+       fgSizer31->Add( m_ram_write_picker, 0, wxALL|wxEXPAND, 5 );
+       
+       bSizer17->Add( fgSizer31, 0, wxEXPAND, 2 );
+       
+       wxBoxSizer* bSizer181;
+       bSizer181 = new wxBoxSizer( wxHORIZONTAL );
+       
+       m_ram_write_gauge = new wxGauge( m_panel_wram, wxID_ANY, 100, wxDefaultPosition, wxDefaultSize, wxGA_HORIZONTAL );
+       m_ram_write_gauge->SetMinSize( wxSize( -1,12 ) );
+       
+       bSizer181->Add( m_ram_write_gauge, 1, wxALL, 2 );
+       
+       m_ram_write_button = new wxButton( m_panel_wram, wxID_ANY, wxT("&write"), wxDefaultPosition, wxDefaultSize, 0 );
+       bSizer181->Add( m_ram_write_button, 0, wxALL|wxALIGN_RIGHT, 5 );
+       
+       bSizer17->Add( bSizer181, 0, wxEXPAND, 2 );
+       
+       m_panel_wram->SetSizer( bSizer17 );
+       m_panel_wram->Layout();
+       bSizer17->Fit( m_panel_wram );
+       m_notebook->AddPage( m_panel_wram, wxT("workram"), false );
        m_panel_version = new wxPanel( m_notebook, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
        wxBoxSizer* bSizer30;
        bSizer30 = new wxBoxSizer( wxVERTICAL );
@@ -345,95 +459,3 @@ frame_main::~frame_main()
        m_program_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( frame_main::program_button_click ), NULL, this );
        
 }
-
-rampanel::rampanel( wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style ) : wxPanel( parent, id, pos, size, style )
-{
-       this->SetBackgroundColour( wxSystemSettings::GetColour( wxSYS_COLOUR_ACTIVEBORDER ) );
-       
-       wxBoxSizer* bSizer9;
-       bSizer9 = new wxBoxSizer( wxVERTICAL );
-       
-       wxFlexGridSizer* fgSizer1;
-       fgSizer1 = new wxFlexGridSizer( 2, 2, 0, 0 );
-       fgSizer1->AddGrowableCol( 1 );
-       fgSizer1->SetFlexibleDirection( wxBOTH );
-       fgSizer1->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
-       
-       m_script_label = new wxStaticText( this, wxID_ANY, wxT("&script"), wxDefaultPosition, wxDefaultSize, 0 );
-       m_script_label->Wrap( -1 );
-       fgSizer1->Add( m_script_label, 0, wxALL, 5 );
-       
-       wxArrayString m_script_choiceChoices;
-       m_script_choice = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_script_choiceChoices, 0 );
-       m_script_choice->SetSelection( 0 );
-       fgSizer1->Add( m_script_choice, 0, wxALL|wxEXPAND, 5 );
-       
-       m_ramimage_label = new wxStaticText( this, wxID_ANY, wxT("&RAM image"), wxDefaultPosition, wxDefaultSize, 0 );
-       m_ramimage_label->Wrap( -1 );
-       fgSizer1->Add( m_ramimage_label, 0, wxALL, 5 );
-       
-       m_ramimage_picker = new wxFilePickerCtrl( this, wxID_ANY, wxEmptyString, wxT("Select a file"), wxT("*.sav"), wxDefaultPosition, wxDefaultSize, wxFLP_DEFAULT_STYLE|wxFLP_OVERWRITE_PROMPT|wxFLP_SAVE|wxFLP_USE_TEXTCTRL );
-       fgSizer1->Add( m_ramimage_picker, 0, wxALL|wxEXPAND, 5 );
-       
-       bSizer9->Add( fgSizer1, 0, wxEXPAND, 5 );
-       
-       m_staticline1 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
-       bSizer9->Add( m_staticline1, 0, wxALL|wxEXPAND, 2 );
-       
-       wxBoxSizer* bSizer12;
-       bSizer12 = new wxBoxSizer( wxHORIZONTAL );
-       
-       m_cpu_label = new wxStaticText( this, wxID_ANY, wxT("Work RAM"), wxDefaultPosition, wxDefaultSize, 0 );
-       m_cpu_label->Wrap( -1 );
-       m_cpu_label->SetMinSize( wxSize( 80,-1 ) );
-       
-       bSizer12->Add( m_cpu_label, 0, wxALL, 5 );
-       
-       m_cpu_gauge = new wxGauge( this, wxID_ANY, 100, wxDefaultPosition, wxSize( -1,12 ), wxGA_HORIZONTAL );
-       bSizer12->Add( m_cpu_gauge, 1, wxALL|wxALIGN_CENTER_VERTICAL, 0 );
-       
-       bSizer9->Add( bSizer12, 1, wxEXPAND, 5 );
-       
-       wxBoxSizer* bSizer14;
-       bSizer14 = new wxBoxSizer( wxHORIZONTAL );
-       
-       wxArrayString m_cpu_increaseChoices;
-       m_cpu_increase = new wxChoice( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, m_cpu_increaseChoices, 0 );
-       m_cpu_increase->SetSelection( 0 );
-       m_cpu_increase->SetMinSize( wxSize( 60,-1 ) );
-       
-       bSizer14->Add( m_cpu_increase, 0, wxALL, 5 );
-       
-       m_cpu_value = new wxStaticText( this, wxID_ANY, wxT("0x000000/0x000000"), wxDefaultPosition, wxDefaultSize, 0 );
-       m_cpu_value->Wrap( -1 );
-       m_cpu_value->SetFont( wxFont( wxNORMAL_FONT->GetPointSize(), 76, 90, 90, false, wxEmptyString ) );
-       
-       bSizer14->Add( m_cpu_value, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
-       
-       bSizer9->Add( bSizer14, 1, wxALIGN_RIGHT, 5 );
-       
-       m_staticline3 = new wxStaticLine( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxLI_HORIZONTAL );
-       bSizer9->Add( m_staticline3, 0, wxEXPAND | wxALL, 2 );
-       
-       wxBoxSizer* bSizer61;
-       bSizer61 = new wxBoxSizer( wxHORIZONTAL );
-       
-       m_button = new wxButton( this, wxID_ANY, wxT("&dump"), wxDefaultPosition, wxDefaultSize, 0 );
-       bSizer61->Add( m_button, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5 );
-       
-       bSizer9->Add( bSizer61, 0, wxALIGN_RIGHT, 5 );
-       
-       this->SetSizer( bSizer9 );
-       this->Layout();
-       bSizer9->Fit( this );
-       
-       // Connect Events
-       m_button->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( rampanel::dump_button_click ), NULL, this );
-}
-
-rampanel::~rampanel()
-{
-       // Disconnect Events
-       m_button->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( rampanel::dump_button_click ), NULL, this );
-       
-}
index e32b0ce..6c2e7c6 100644 (file)
                                 </object>\r
                             </object>\r
                         </object>\r
-                        <object class="notebookpage" expanded="0">\r
+                        <object class="notebookpage" expanded="1">\r
                             <property name="bitmap"></property>\r
                             <property name="label">program</property>\r
                             <property name="select">0</property>\r
                                 </object>\r
                             </object>\r
                         </object>\r
-                        <object class="notebookpage" expanded="0">\r
-                            <property name="bitmap">tubami.bmp; Load From File</property>\r
-                            <property name="label">version</property>\r
+                        <object class="notebookpage" expanded="1">\r
+                            <property name="bitmap"></property>\r
+                            <property name="label">workram</property>\r
                             <property name="select">0</property>\r
-                            <object class="wxPanel" expanded="0">\r
+                            <object class="wxPanel" expanded="1">\r
                                 <property name="bg"></property>\r
                                 <property name="context_help"></property>\r
                                 <property name="context_menu">1</property>\r
                                 <property name="enabled">1</property>\r
                                 <property name="fg"></property>\r
                                 <property name="font"></property>\r
-                                <property name="hidden">0</property>\r
+                                <property name="hidden">1</property>\r
                                 <property name="id">wxID_ANY</property>\r
                                 <property name="maximum_size"></property>\r
                                 <property name="minimum_size"></property>\r
-                                <property name="name">m_panel_version</property>\r
+                                <property name="name">m_panel_wram</property>\r
                                 <property name="permission">protected</property>\r
                                 <property name="pos"></property>\r
                                 <property name="size"></property>\r
                                 <event name="OnSetFocus"></event>\r
                                 <event name="OnSize"></event>\r
                                 <event name="OnUpdateUI"></event>\r
-                                <object class="wxBoxSizer" expanded="0">\r
+                                <object class="wxBoxSizer" expanded="1">\r
                                     <property name="minimum_size"></property>\r
-                                    <property name="name">bSizer30</property>\r
+                                    <property name="name">bSizer17</property>\r
                                     <property name="orient">wxVERTICAL</property>\r
                                     <property name="permission">none</property>\r
-                                    <object class="sizeritem" expanded="0">\r
-                                        <property name="border">2</property>\r
-                                        <property name="flag">wxALL</property>\r
-                                        <property name="proportion">0</property>\r
-                                        <object class="wxStaticText" expanded="0">\r
-                                            <property name="bg"></property>\r
-                                            <property name="context_help"></property>\r
-                                            <property name="context_menu">1</property>\r
-                                            <property name="enabled">1</property>\r
-                                            <property name="fg"></property>\r
-                                            <property name="font">,90,92,-1,70,0</property>\r
-                                            <property name="hidden">0</property>\r
-                                            <property name="id">wxID_ANY</property>\r
-                                            <property name="label">famicom cartridge utility - anago</property>\r
-                                            <property name="maximum_size"></property>\r
-                                            <property name="minimum_size"></property>\r
-                                            <property name="name">m_version_title</property>\r
-                                            <property name="permission">protected</property>\r
-                                            <property name="pos"></property>\r
-                                            <property name="size"></property>\r
-                                            <property name="style"></property>\r
-                                            <property name="subclass"></property>\r
-                                            <property name="tooltip"></property>\r
-                                            <property name="validator_data_type"></property>\r
-                                            <property name="validator_style">wxFILTER_NONE</property>\r
-                                            <property name="validator_type">wxDefaultValidator</property>\r
-                                            <property name="validator_variable"></property>\r
-                                            <property name="window_extra_style"></property>\r
-                                            <property name="window_name"></property>\r
-                                            <property name="window_style"></property>\r
-                                            <property name="wrap">-1</property>\r
-                                            <event name="OnChar"></event>\r
-                                            <event name="OnEnterWindow"></event>\r
-                                            <event name="OnEraseBackground"></event>\r
-                                            <event name="OnKeyDown"></event>\r
-                                            <event name="OnKeyUp"></event>\r
-                                            <event name="OnKillFocus"></event>\r
-                                            <event name="OnLeaveWindow"></event>\r
-                                            <event name="OnLeftDClick"></event>\r
-                                            <event name="OnLeftDown"></event>\r
-                                            <event name="OnLeftUp"></event>\r
-                                            <event name="OnMiddleDClick"></event>\r
-                                            <event name="OnMiddleDown"></event>\r
-                                            <event name="OnMiddleUp"></event>\r
-                                            <event name="OnMotion"></event>\r
-                                            <event name="OnMouseEvents"></event>\r
-                                            <event name="OnMouseWheel"></event>\r
-                                            <event name="OnPaint"></event>\r
-                                            <event name="OnRightDClick"></event>\r
-                                            <event name="OnRightDown"></event>\r
-                                            <event name="OnRightUp"></event>\r
-                                            <event name="OnSetFocus"></event>\r
-                                            <event name="OnSize"></event>\r
-                                            <event name="OnUpdateUI"></event>\r
-                                        </object>\r
-                                    </object>\r
-                                    <object class="sizeritem" expanded="0">\r
+                                    <object class="sizeritem" expanded="1">\r
                                         <property name="border">2</property>\r
-                                        <property name="flag">wxALL</property>\r
-                                        <property name="proportion">0</property>\r
-                                        <object class="wxStaticText" expanded="0">\r
-                                            <property name="bg"></property>\r
-                                            <property name="context_help"></property>\r
-                                            <property name="context_menu">1</property>\r
-                                            <property name="enabled">1</property>\r
-                                            <property name="fg"></property>\r
-                                            <property name="font"></property>\r
-                                            <property name="hidden">0</property>\r
-                                            <property name="id">wxID_ANY</property>\r
-                                            <property name="label">(C) unagi development team 2010</property>\r
-                                            <property name="maximum_size"></property>\r
-                                            <property name="minimum_size"></property>\r
-                                            <property name="name">m_version_copyright</property>\r
-                                            <property name="permission">protected</property>\r
-                                            <property name="pos"></property>\r
-                                            <property name="size"></property>\r
-                                            <property name="style"></property>\r
-                                            <property name="subclass"></property>\r
-                                            <property name="tooltip"></property>\r
-                                            <property name="validator_data_type"></property>\r
-                                            <property name="validator_style">wxFILTER_NONE</property>\r
-                                            <property name="validator_type">wxDefaultValidator</property>\r
-                                            <property name="validator_variable"></property>\r
-                                            <property name="window_extra_style"></property>\r
-                                            <property name="window_name"></property>\r
-                                            <property name="window_style"></property>\r
-                                            <property name="wrap">-1</property>\r
-                                            <event name="OnChar"></event>\r
-                                            <event name="OnEnterWindow"></event>\r
-                                            <event name="OnEraseBackground"></event>\r
-                                            <event name="OnKeyDown"></event>\r
-                                            <event name="OnKeyUp"></event>\r
-                                            <event name="OnKillFocus"></event>\r
-                                            <event name="OnLeaveWindow"></event>\r
-                                            <event name="OnLeftDClick"></event>\r
-                                            <event name="OnLeftDown"></event>\r
-                                            <event name="OnLeftUp"></event>\r
-                                            <event name="OnMiddleDClick"></event>\r
-                                            <event name="OnMiddleDown"></event>\r
-                                            <event name="OnMiddleUp"></event>\r
-                                            <event name="OnMotion"></event>\r
-                                            <event name="OnMouseEvents"></event>\r
-                                            <event name="OnMouseWheel"></event>\r
-                                            <event name="OnPaint"></event>\r
-                                            <event name="OnRightDClick"></event>\r
-                                            <event name="OnRightDown"></event>\r
-                                            <event name="OnRightUp"></event>\r
-                                            <event name="OnSetFocus"></event>\r
-                                            <event name="OnSize"></event>\r
-                                            <event name="OnUpdateUI"></event>\r
-                                        </object>\r
-                                    </object>\r
-                                    <object class="sizeritem" expanded="0">\r
-                                        <property name="border">5</property>\r
                                         <property name="flag">wxEXPAND</property>\r
                                         <property name="proportion">1</property>\r
-                                        <object class="wxBoxSizer" expanded="0">\r
+                                        <object class="wxBoxSizer" expanded="1">\r
                                             <property name="minimum_size"></property>\r
-                                            <property name="name">bSizer16</property>\r
+                                            <property name="name">bSizer221</property>\r
                                             <property name="orient">wxHORIZONTAL</property>\r
                                             <property name="permission">none</property>\r
-                                            <object class="sizeritem" expanded="0">\r
-                                                <property name="border">2</property>\r
-                                                <property name="flag">wxALL</property>\r
-                                                <property name="proportion">0</property>\r
-                                                <object class="wxStaticBitmap" expanded="0">\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                                                <property name="proportion">1</property>\r
+                                                <object class="wxStaticLine" expanded="1">\r
                                                     <property name="bg"></property>\r
-                                                    <property name="bitmap">; Load From File</property>\r
                                                     <property name="context_help"></property>\r
                                                     <property name="context_menu">1</property>\r
                                                     <property name="enabled">1</property>\r
                                                     <property name="id">wxID_ANY</property>\r
                                                     <property name="maximum_size"></property>\r
                                                     <property name="minimum_size"></property>\r
-                                                    <property name="name">m_version_photo</property>\r
+                                                    <property name="name">m_staticline111</property>\r
                                                     <property name="permission">protected</property>\r
                                                     <property name="pos"></property>\r
-                                                    <property name="size">178,122</property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style">wxLI_HORIZONTAL</property>\r
                                                     <property name="subclass"></property>\r
-                                                    <property name="tooltip">okada</property>\r
+                                                    <property name="tooltip"></property>\r
                                                     <property name="validator_data_type"></property>\r
                                                     <property name="validator_style">wxFILTER_NONE</property>\r
                                                     <property name="validator_type">wxDefaultValidator</property>\r
                                                     <event name="OnUpdateUI"></event>\r
                                                 </object>\r
                                             </object>\r
-                                            <object class="sizeritem" expanded="0">\r
+                                            <object class="sizeritem" expanded="1">\r
                                                 <property name="border">5</property>\r
-                                                <property name="flag">wxALL</property>\r
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
                                                 <property name="proportion">0</property>\r
-                                                <object class="wxStaticText" expanded="0">\r
+                                                <object class="wxStaticText" expanded="1">\r
                                                     <property name="bg"></property>\r
                                                     <property name="context_help"></property>\r
                                                     <property name="context_menu">1</property>\r
                                                     <property name="font"></property>\r
                                                     <property name="hidden">0</property>\r
                                                     <property name="id">wxID_ANY</property>\r
-                                                    <property name="label">programmer - naruko&apos;s latest photo&#x0A;&#x0A;icon designed by hirohiroki</property>\r
+                                                    <property name="label">RAM read</property>\r
                                                     <property name="maximum_size"></property>\r
                                                     <property name="minimum_size"></property>\r
-                                                    <property name="name">m_version_developer</property>\r
+                                                    <property name="name">m_staticText221</property>\r
                                                     <property name="permission">protected</property>\r
                                                     <property name="pos"></property>\r
-                                                    <property name="size">-1,-1</property>\r
+                                                    <property name="size"></property>\r
                                                     <property name="style"></property>\r
                                                     <property name="subclass"></property>\r
                                                     <property name="tooltip"></property>\r
                                                     <property name="window_extra_style"></property>\r
                                                     <property name="window_name"></property>\r
                                                     <property name="window_style"></property>\r
-                                                    <property name="wrap">130</property>\r
+                                                    <property name="wrap">-1</property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">2</property>\r
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                                                <property name="proportion">1</property>\r
+                                                <object class="wxStaticLine" expanded="1">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_staticline71</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style">wxLI_HORIZONTAL</property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
                                                     <event name="OnChar"></event>\r
                                                     <event name="OnEnterWindow"></event>\r
                                                     <event name="OnEraseBackground"></event>\r
                                             </object>\r
                                         </object>\r
                                     </object>\r
-                                    <object class="sizeritem" expanded="0">\r
+                                    <object class="sizeritem" expanded="1">\r
                                         <property name="border">2</property>\r
-                                        <property name="flag">wxALL|wxEXPAND</property>\r
+                                        <property name="flag">wxEXPAND</property>\r
                                         <property name="proportion">0</property>\r
-                                        <object class="wxTextCtrl" expanded="0">\r
-                                            <property name="bg">wxSYS_COLOUR_ACTIVEBORDER</property>\r
-                                            <property name="context_help"></property>\r
-                                            <property name="context_menu">1</property>\r
-                                            <property name="enabled">1</property>\r
-                                            <property name="fg"></property>\r
-                                            <property name="font"></property>\r
-                                            <property name="hidden">0</property>\r
-                                            <property name="id">wxID_ANY</property>\r
-                                            <property name="maximum_size"></property>\r
-                                            <property name="maxlength">0</property>\r
-                                            <property name="minimum_size">-1,80</property>\r
-                                            <property name="name">m_version_detail</property>\r
-                                            <property name="permission">protected</property>\r
-                                            <property name="pos"></property>\r
-                                            <property name="size"></property>\r
-                                            <property name="style">wxTE_MULTILINE|wxTE_READONLY</property>\r
-                                            <property name="subclass"></property>\r
-                                            <property name="tooltip"></property>\r
-                                            <property name="validator_data_type"></property>\r
-                                            <property name="validator_style">wxFILTER_NONE</property>\r
-                                            <property name="validator_type">wxDefaultValidator</property>\r
-                                            <property name="validator_variable"></property>\r
-                                            <property name="value"></property>\r
-                                            <property name="window_extra_style"></property>\r
-                                            <property name="window_name"></property>\r
-                                            <property name="window_style"></property>\r
-                                            <event name="OnChar"></event>\r
-                                            <event name="OnEnterWindow"></event>\r
-                                            <event name="OnEraseBackground"></event>\r
-                                            <event name="OnKeyDown"></event>\r
-                                            <event name="OnKeyUp"></event>\r
-                                            <event name="OnKillFocus"></event>\r
-                                            <event name="OnLeaveWindow"></event>\r
-                                            <event name="OnLeftDClick"></event>\r
-                                            <event name="OnLeftDown"></event>\r
-                                            <event name="OnLeftUp"></event>\r
-                                            <event name="OnMiddleDClick"></event>\r
-                                            <event name="OnMiddleDown"></event>\r
-                                            <event name="OnMiddleUp"></event>\r
-                                            <event name="OnMotion"></event>\r
-                                            <event name="OnMouseEvents"></event>\r
-                                            <event name="OnMouseWheel"></event>\r
-                                            <event name="OnPaint"></event>\r
-                                            <event name="OnRightDClick"></event>\r
-                                            <event name="OnRightDown"></event>\r
-                                            <event name="OnRightUp"></event>\r
-                                            <event name="OnSetFocus"></event>\r
-                                            <event name="OnSize"></event>\r
+                                        <object class="wxFlexGridSizer" expanded="1">\r
+                                            <property name="cols">2</property>\r
+                                            <property name="flexible_direction">wxBOTH</property>\r
+                                            <property name="growablecols">1</property>\r
+                                            <property name="growablerows"></property>\r
+                                            <property name="hgap">0</property>\r
+                                            <property name="minimum_size"></property>\r
+                                            <property name="name">fgSizer3</property>\r
+                                            <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>\r
+                                            <property name="permission">none</property>\r
+                                            <property name="rows">2</property>\r
+                                            <property name="vgap">0</property>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxStaticText" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="label">&amp;script</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_staticText16</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <property name="wrap">-1</property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxEXPAND</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxChoice" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="choices"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_ram_read_script</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="selection">0</property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnChoice"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxStaticText" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="label">RAM image</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_staticText17</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <property name="wrap">-1</property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxEXPAND</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxFilePickerCtrl" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="message">Select a file</property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_ram_read_picker</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style">wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_USE_TEXTCTRL</property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="value"></property>\r
+                                                    <property name="wildcard">*.sav</property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnFileChanged"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                        </object>\r
+                                    </object>\r
+                                    <object class="sizeritem" expanded="1">\r
+                                        <property name="border">2</property>\r
+                                        <property name="flag">wxEXPAND</property>\r
+                                        <property name="proportion">0</property>\r
+                                        <object class="wxBoxSizer" expanded="1">\r
+                                            <property name="minimum_size"></property>\r
+                                            <property name="name">bSizer18</property>\r
+                                            <property name="orient">wxHORIZONTAL</property>\r
+                                            <property name="permission">none</property>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">2</property>\r
+                                                <property name="flag">wxALL</property>\r
+                                                <property name="proportion">1</property>\r
+                                                <object class="wxGauge" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size">-1,12</property>\r
+                                                    <property name="name">m_ram_read_gauge</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="range">100</property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style">wxGA_HORIZONTAL</property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="value"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxALIGN_RIGHT</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxButton" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="default">0</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="label">&amp;read</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_ram_read_button</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnButtonClick"></event>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                        </object>\r
+                                    </object>\r
+                                    <object class="sizeritem" expanded="1">\r
+                                        <property name="border">2</property>\r
+                                        <property name="flag">wxEXPAND</property>\r
+                                        <property name="proportion">0</property>\r
+                                        <object class="wxBoxSizer" expanded="1">\r
+                                            <property name="minimum_size"></property>\r
+                                            <property name="name">bSizer22</property>\r
+                                            <property name="orient">wxHORIZONTAL</property>\r
+                                            <property name="permission">none</property>\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                                                <property name="proportion">1</property>\r
+                                                <object class="wxStaticLine" expanded="1">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_staticline12</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style">wxLI_HORIZONTAL</property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxStaticText" expanded="1">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="label">RAM write</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_staticText22</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <property name="wrap">-1</property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">2</property>\r
+                                                <property name="flag">wxALL|wxALIGN_CENTER_VERTICAL</property>\r
+                                                <property name="proportion">1</property>\r
+                                                <object class="wxStaticLine" expanded="1">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_staticline7</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style">wxLI_HORIZONTAL</property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                        </object>\r
+                                    </object>\r
+                                    <object class="sizeritem" expanded="1">\r
+                                        <property name="border">2</property>\r
+                                        <property name="flag">wxEXPAND</property>\r
+                                        <property name="proportion">0</property>\r
+                                        <object class="wxFlexGridSizer" expanded="1">\r
+                                            <property name="cols">2</property>\r
+                                            <property name="flexible_direction">wxBOTH</property>\r
+                                            <property name="growablecols">1</property>\r
+                                            <property name="growablerows"></property>\r
+                                            <property name="hgap">0</property>\r
+                                            <property name="minimum_size"></property>\r
+                                            <property name="name">fgSizer31</property>\r
+                                            <property name="non_flexible_grow_mode">wxFLEX_GROWMODE_SPECIFIED</property>\r
+                                            <property name="permission">none</property>\r
+                                            <property name="rows">2</property>\r
+                                            <property name="vgap">0</property>\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxStaticText" expanded="1">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="label">s&amp;cript</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_staticText161</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <property name="wrap">-1</property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxEXPAND</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxChoice" expanded="1">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="choices"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_ram_write_script</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="selection">0</property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnChoice"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxStaticText" expanded="1">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="label">RAM image</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_staticText171</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <property name="wrap">-1</property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="1">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxEXPAND</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxFilePickerCtrl" expanded="1">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="message">Select a file</property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_ram_write_picker</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style">wxFLP_DEFAULT_STYLE|wxFLP_FILE_MUST_EXIST|wxFLP_SAVE|wxFLP_USE_TEXTCTRL</property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="value"></property>\r
+                                                    <property name="wildcard">*.sav</property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnFileChanged"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                        </object>\r
+                                    </object>\r
+                                    <object class="sizeritem" expanded="1">\r
+                                        <property name="border">2</property>\r
+                                        <property name="flag">wxEXPAND</property>\r
+                                        <property name="proportion">0</property>\r
+                                        <object class="wxBoxSizer" expanded="1">\r
+                                            <property name="minimum_size"></property>\r
+                                            <property name="name">bSizer181</property>\r
+                                            <property name="orient">wxHORIZONTAL</property>\r
+                                            <property name="permission">none</property>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">2</property>\r
+                                                <property name="flag">wxALL</property>\r
+                                                <property name="proportion">1</property>\r
+                                                <object class="wxGauge" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size">-1,12</property>\r
+                                                    <property name="name">m_ram_write_gauge</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="range">100</property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style">wxGA_HORIZONTAL</property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="value"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL|wxALIGN_RIGHT</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxButton" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="default">0</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="label">&amp;write</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_ram_write_button</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size"></property>\r
+                                                    <property name="style"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnButtonClick"></event>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                        </object>\r
+                                    </object>\r
+                                </object>\r
+                            </object>\r
+                        </object>\r
+                        <object class="notebookpage" expanded="0">\r
+                            <property name="bitmap">tubami.bmp; Load From File</property>\r
+                            <property name="label">version</property>\r
+                            <property name="select">0</property>\r
+                            <object class="wxPanel" expanded="0">\r
+                                <property name="bg"></property>\r
+                                <property name="context_help"></property>\r
+                                <property name="context_menu">1</property>\r
+                                <property name="enabled">1</property>\r
+                                <property name="fg"></property>\r
+                                <property name="font"></property>\r
+                                <property name="hidden">0</property>\r
+                                <property name="id">wxID_ANY</property>\r
+                                <property name="maximum_size"></property>\r
+                                <property name="minimum_size"></property>\r
+                                <property name="name">m_panel_version</property>\r
+                                <property name="permission">protected</property>\r
+                                <property name="pos"></property>\r
+                                <property name="size"></property>\r
+                                <property name="subclass"></property>\r
+                                <property name="tooltip"></property>\r
+                                <property name="validator_data_type"></property>\r
+                                <property name="validator_style">wxFILTER_NONE</property>\r
+                                <property name="validator_type">wxDefaultValidator</property>\r
+                                <property name="validator_variable"></property>\r
+                                <property name="window_extra_style"></property>\r
+                                <property name="window_name"></property>\r
+                                <property name="window_style">wxTAB_TRAVERSAL</property>\r
+                                <event name="OnChar"></event>\r
+                                <event name="OnEnterWindow"></event>\r
+                                <event name="OnEraseBackground"></event>\r
+                                <event name="OnKeyDown"></event>\r
+                                <event name="OnKeyUp"></event>\r
+                                <event name="OnKillFocus"></event>\r
+                                <event name="OnLeaveWindow"></event>\r
+                                <event name="OnLeftDClick"></event>\r
+                                <event name="OnLeftDown"></event>\r
+                                <event name="OnLeftUp"></event>\r
+                                <event name="OnMiddleDClick"></event>\r
+                                <event name="OnMiddleDown"></event>\r
+                                <event name="OnMiddleUp"></event>\r
+                                <event name="OnMotion"></event>\r
+                                <event name="OnMouseEvents"></event>\r
+                                <event name="OnMouseWheel"></event>\r
+                                <event name="OnPaint"></event>\r
+                                <event name="OnRightDClick"></event>\r
+                                <event name="OnRightDown"></event>\r
+                                <event name="OnRightUp"></event>\r
+                                <event name="OnSetFocus"></event>\r
+                                <event name="OnSize"></event>\r
+                                <event name="OnUpdateUI"></event>\r
+                                <object class="wxBoxSizer" expanded="0">\r
+                                    <property name="minimum_size"></property>\r
+                                    <property name="name">bSizer30</property>\r
+                                    <property name="orient">wxVERTICAL</property>\r
+                                    <property name="permission">none</property>\r
+                                    <object class="sizeritem" expanded="0">\r
+                                        <property name="border">2</property>\r
+                                        <property name="flag">wxALL</property>\r
+                                        <property name="proportion">0</property>\r
+                                        <object class="wxStaticText" expanded="0">\r
+                                            <property name="bg"></property>\r
+                                            <property name="context_help"></property>\r
+                                            <property name="context_menu">1</property>\r
+                                            <property name="enabled">1</property>\r
+                                            <property name="fg"></property>\r
+                                            <property name="font">,90,92,-1,70,0</property>\r
+                                            <property name="hidden">0</property>\r
+                                            <property name="id">wxID_ANY</property>\r
+                                            <property name="label">famicom cartridge utility - anago</property>\r
+                                            <property name="maximum_size"></property>\r
+                                            <property name="minimum_size"></property>\r
+                                            <property name="name">m_version_title</property>\r
+                                            <property name="permission">protected</property>\r
+                                            <property name="pos"></property>\r
+                                            <property name="size"></property>\r
+                                            <property name="style"></property>\r
+                                            <property name="subclass"></property>\r
+                                            <property name="tooltip"></property>\r
+                                            <property name="validator_data_type"></property>\r
+                                            <property name="validator_style">wxFILTER_NONE</property>\r
+                                            <property name="validator_type">wxDefaultValidator</property>\r
+                                            <property name="validator_variable"></property>\r
+                                            <property name="window_extra_style"></property>\r
+                                            <property name="window_name"></property>\r
+                                            <property name="window_style"></property>\r
+                                            <property name="wrap">-1</property>\r
+                                            <event name="OnChar"></event>\r
+                                            <event name="OnEnterWindow"></event>\r
+                                            <event name="OnEraseBackground"></event>\r
+                                            <event name="OnKeyDown"></event>\r
+                                            <event name="OnKeyUp"></event>\r
+                                            <event name="OnKillFocus"></event>\r
+                                            <event name="OnLeaveWindow"></event>\r
+                                            <event name="OnLeftDClick"></event>\r
+                                            <event name="OnLeftDown"></event>\r
+                                            <event name="OnLeftUp"></event>\r
+                                            <event name="OnMiddleDClick"></event>\r
+                                            <event name="OnMiddleDown"></event>\r
+                                            <event name="OnMiddleUp"></event>\r
+                                            <event name="OnMotion"></event>\r
+                                            <event name="OnMouseEvents"></event>\r
+                                            <event name="OnMouseWheel"></event>\r
+                                            <event name="OnPaint"></event>\r
+                                            <event name="OnRightDClick"></event>\r
+                                            <event name="OnRightDown"></event>\r
+                                            <event name="OnRightUp"></event>\r
+                                            <event name="OnSetFocus"></event>\r
+                                            <event name="OnSize"></event>\r
+                                            <event name="OnUpdateUI"></event>\r
+                                        </object>\r
+                                    </object>\r
+                                    <object class="sizeritem" expanded="0">\r
+                                        <property name="border">2</property>\r
+                                        <property name="flag">wxALL</property>\r
+                                        <property name="proportion">0</property>\r
+                                        <object class="wxStaticText" expanded="0">\r
+                                            <property name="bg"></property>\r
+                                            <property name="context_help"></property>\r
+                                            <property name="context_menu">1</property>\r
+                                            <property name="enabled">1</property>\r
+                                            <property name="fg"></property>\r
+                                            <property name="font"></property>\r
+                                            <property name="hidden">0</property>\r
+                                            <property name="id">wxID_ANY</property>\r
+                                            <property name="label">(C) unagi development team 2010</property>\r
+                                            <property name="maximum_size"></property>\r
+                                            <property name="minimum_size"></property>\r
+                                            <property name="name">m_version_copyright</property>\r
+                                            <property name="permission">protected</property>\r
+                                            <property name="pos"></property>\r
+                                            <property name="size"></property>\r
+                                            <property name="style"></property>\r
+                                            <property name="subclass"></property>\r
+                                            <property name="tooltip"></property>\r
+                                            <property name="validator_data_type"></property>\r
+                                            <property name="validator_style">wxFILTER_NONE</property>\r
+                                            <property name="validator_type">wxDefaultValidator</property>\r
+                                            <property name="validator_variable"></property>\r
+                                            <property name="window_extra_style"></property>\r
+                                            <property name="window_name"></property>\r
+                                            <property name="window_style"></property>\r
+                                            <property name="wrap">-1</property>\r
+                                            <event name="OnChar"></event>\r
+                                            <event name="OnEnterWindow"></event>\r
+                                            <event name="OnEraseBackground"></event>\r
+                                            <event name="OnKeyDown"></event>\r
+                                            <event name="OnKeyUp"></event>\r
+                                            <event name="OnKillFocus"></event>\r
+                                            <event name="OnLeaveWindow"></event>\r
+                                            <event name="OnLeftDClick"></event>\r
+                                            <event name="OnLeftDown"></event>\r
+                                            <event name="OnLeftUp"></event>\r
+                                            <event name="OnMiddleDClick"></event>\r
+                                            <event name="OnMiddleDown"></event>\r
+                                            <event name="OnMiddleUp"></event>\r
+                                            <event name="OnMotion"></event>\r
+                                            <event name="OnMouseEvents"></event>\r
+                                            <event name="OnMouseWheel"></event>\r
+                                            <event name="OnPaint"></event>\r
+                                            <event name="OnRightDClick"></event>\r
+                                            <event name="OnRightDown"></event>\r
+                                            <event name="OnRightUp"></event>\r
+                                            <event name="OnSetFocus"></event>\r
+                                            <event name="OnSize"></event>\r
+                                            <event name="OnUpdateUI"></event>\r
+                                        </object>\r
+                                    </object>\r
+                                    <object class="sizeritem" expanded="0">\r
+                                        <property name="border">5</property>\r
+                                        <property name="flag">wxEXPAND</property>\r
+                                        <property name="proportion">1</property>\r
+                                        <object class="wxBoxSizer" expanded="0">\r
+                                            <property name="minimum_size"></property>\r
+                                            <property name="name">bSizer16</property>\r
+                                            <property name="orient">wxHORIZONTAL</property>\r
+                                            <property name="permission">none</property>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">2</property>\r
+                                                <property name="flag">wxALL</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxStaticBitmap" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="bitmap">; Load From File</property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_version_photo</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size">178,122</property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip">okada</property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                            <object class="sizeritem" expanded="0">\r
+                                                <property name="border">5</property>\r
+                                                <property name="flag">wxALL</property>\r
+                                                <property name="proportion">0</property>\r
+                                                <object class="wxStaticText" expanded="0">\r
+                                                    <property name="bg"></property>\r
+                                                    <property name="context_help"></property>\r
+                                                    <property name="context_menu">1</property>\r
+                                                    <property name="enabled">1</property>\r
+                                                    <property name="fg"></property>\r
+                                                    <property name="font"></property>\r
+                                                    <property name="hidden">0</property>\r
+                                                    <property name="id">wxID_ANY</property>\r
+                                                    <property name="label">programmer - naruko&apos;s latest photo&#x0A;&#x0A;icon designed by hirohiroki</property>\r
+                                                    <property name="maximum_size"></property>\r
+                                                    <property name="minimum_size"></property>\r
+                                                    <property name="name">m_version_developer</property>\r
+                                                    <property name="permission">protected</property>\r
+                                                    <property name="pos"></property>\r
+                                                    <property name="size">-1,-1</property>\r
+                                                    <property name="style"></property>\r
+                                                    <property name="subclass"></property>\r
+                                                    <property name="tooltip"></property>\r
+                                                    <property name="validator_data_type"></property>\r
+                                                    <property name="validator_style">wxFILTER_NONE</property>\r
+                                                    <property name="validator_type">wxDefaultValidator</property>\r
+                                                    <property name="validator_variable"></property>\r
+                                                    <property name="window_extra_style"></property>\r
+                                                    <property name="window_name"></property>\r
+                                                    <property name="window_style"></property>\r
+                                                    <property name="wrap">130</property>\r
+                                                    <event name="OnChar"></event>\r
+                                                    <event name="OnEnterWindow"></event>\r
+                                                    <event name="OnEraseBackground"></event>\r
+                                                    <event name="OnKeyDown"></event>\r
+                                                    <event name="OnKeyUp"></event>\r
+                                                    <event name="OnKillFocus"></event>\r
+                                                    <event name="OnLeaveWindow"></event>\r
+                                                    <event name="OnLeftDClick"></event>\r
+                                                    <event name="OnLeftDown"></event>\r
+                                                    <event name="OnLeftUp"></event>\r
+                                                    <event name="OnMiddleDClick"></event>\r
+                                                    <event name="OnMiddleDown"></event>\r
+                                                    <event name="OnMiddleUp"></event>\r
+                                                    <event name="OnMotion"></event>\r
+                                                    <event name="OnMouseEvents"></event>\r
+                                                    <event name="OnMouseWheel"></event>\r
+                                                    <event name="OnPaint"></event>\r
+                                                    <event name="OnRightDClick"></event>\r
+                                                    <event name="OnRightDown"></event>\r
+                                                    <event name="OnRightUp"></event>\r
+                                                    <event name="OnSetFocus"></event>\r
+                                                    <event name="OnSize"></event>\r
+                                                    <event name="OnUpdateUI"></event>\r
+                                                </object>\r
+                                            </object>\r
+                                        </object>\r
+                                    </object>\r
+                                    <object class="sizeritem" expanded="0">\r
+                                        <property name="border">2</property>\r
+                                        <property name="flag">wxALL|wxEXPAND</property>\r
+                                        <property name="proportion">0</property>\r
+                                        <object class="wxTextCtrl" expanded="0">\r
+                                            <property name="bg">wxSYS_COLOUR_ACTIVEBORDER</property>\r
+                                            <property name="context_help"></property>\r
+                                            <property name="context_menu">1</property>\r
+                                            <property name="enabled">1</property>\r
+                                            <property name="fg"></property>\r
+                                            <property name="font"></property>\r
+                                            <property name="hidden">0</property>\r
+                                            <property name="id">wxID_ANY</property>\r
+                                            <property name="maximum_size"></property>\r
+                                            <property name="maxlength">0</property>\r
+                                            <property name="minimum_size">-1,80</property>\r
+                                            <property name="name">m_version_detail</property>\r
+                                            <property name="permission">protected</property>\r
+                                            <property name="pos"></property>\r
+                                            <property name="size"></property>\r
+                                            <property name="style">wxTE_MULTILINE|wxTE_READONLY</property>\r
+                                            <property name="subclass"></property>\r
+                                            <property name="tooltip"></property>\r
+                                            <property name="validator_data_type"></property>\r
+                                            <property name="validator_style">wxFILTER_NONE</property>\r
+                                            <property name="validator_type">wxDefaultValidator</property>\r
+                                            <property name="validator_variable"></property>\r
+                                            <property name="value"></property>\r
+                                            <property name="window_extra_style"></property>\r
+                                            <property name="window_name"></property>\r
+                                            <property name="window_style"></property>\r
+                                            <event name="OnChar"></event>\r
+                                            <event name="OnEnterWindow"></event>\r
+                                            <event name="OnEraseBackground"></event>\r
+                                            <event name="OnKeyDown"></event>\r
+                                            <event name="OnKeyUp"></event>\r
+                                            <event name="OnKillFocus"></event>\r
+                                            <event name="OnLeaveWindow"></event>\r
+                                            <event name="OnLeftDClick"></event>\r
+                                            <event name="OnLeftDown"></event>\r
+                                            <event name="OnLeftUp"></event>\r
+                                            <event name="OnMiddleDClick"></event>\r
+                                            <event name="OnMiddleDown"></event>\r
+                                            <event name="OnMiddleUp"></event>\r
+                                            <event name="OnMotion"></event>\r
+                                            <event name="OnMouseEvents"></event>\r
+                                            <event name="OnMouseWheel"></event>\r
+                                            <event name="OnPaint"></event>\r
+                                            <event name="OnRightDClick"></event>\r
+                                            <event name="OnRightDown"></event>\r
+                                            <event name="OnRightUp"></event>\r
+                                            <event name="OnSetFocus"></event>\r
+                                            <event name="OnSize"></event>\r
                                             <event name="OnText"></event>\r
                                             <event name="OnTextEnter"></event>\r
                                             <event name="OnTextMaxLen"></event>\r
                                 </object>\r
                             </object>\r
                         </object>\r
-                        <object class="notebookpage" expanded="1">\r
-                            <property name="bitmap"></property>\r
-                            <property name="label">a page</property>\r
-                            <property name="select">0</property>\r
-                            <object class="wxPanel" expanded="1">\r
-                                <property name="bg"></property>\r
-                                <property name="context_help"></property>\r
-                                <property name="context_menu">1</property>\r
-                                <property name="enabled">1</property>\r
-                                <property name="fg"></property>\r
-                                <property name="font"></property>\r
-                                <property name="hidden">1</property>\r
-                                <property name="id">wxID_ANY</property>\r
-                                <property name="maximum_size"></property>\r
-                                <property name="minimum_size"></property>\r
-                                <property name="name">m_panel_wram</property>\r
-                                <property name="permission">protected</property>\r
-                                <property name="pos"></property>\r
-                                <property name="size"></property>\r
-                                <property name="subclass"></property>\r
-                                <property name="tooltip"></property>\r
-                                <property name="validator_data_type"></property>\r
-                                <property name="validator_style">wxFILTER_NONE</property>\r
-                                <property name="validator_type">wxDefaultValidator</property>\r
-                                <property name="validator_variable"></property>\r
-                                <property name="window_extra_style"></property>\r
-                                <property name="window_name"></property>\r
-                                <property name="window_style">wxTAB_TRAVERSAL</property>\r
-                                <event name="OnChar"></event>\r
-                                <event name="OnEnterWindow"></event>\r
-                                <event name="OnEraseBackground"></event>\r
-                                <event name="OnKeyDown"></event>\r
-                                <event name="OnKeyUp"></event>\r
-                                <event name="OnKillFocus"></event>\r
-                                <event name="OnLeaveWindow"></event>\r
-                                <event name="OnLeftDClick"></event>\r
-                                <event name="OnLeftDown"></event>\r
-                                <event name="OnLeftUp"></event>\r
-                                <event name="OnMiddleDClick"></event>\r
-                                <event name="OnMiddleDown"></event>\r
-                                <event name="OnMiddleUp"></event>\r
-                                <event name="OnMotion"></event>\r
-                                <event name="OnMouseEvents"></event>\r
-                                <event name="OnMouseWheel"></event>\r
-                                <event name="OnPaint"></event>\r
-                                <event name="OnRightDClick"></event>\r
-                                <event name="OnRightDown"></event>\r
-                                <event name="OnRightUp"></event>\r
-                                <event name="OnSetFocus"></event>\r
-                                <event name="OnSize"></event>\r
-                                <event name="OnUpdateUI"></event>\r
-                            </object>\r
-                        </object>\r
                     </object>\r
                 </object>\r
                 <object class="sizeritem" expanded="0">\r
index 11fb801..59f02b6 100644 (file)
@@ -82,6 +82,25 @@ class frame_main : public wxFrame
                wxStaticLine* m_staticline31;
                wxCheckBox* m_program_compare;
                wxButton* m_program_button;
+               wxPanel* m_panel_wram;
+               wxStaticLine* m_staticline111;
+               wxStaticText* m_staticText221;
+               wxStaticLine* m_staticline71;
+               wxStaticText* m_staticText16;
+               wxChoice* m_ram_read_script;
+               wxStaticText* m_staticText17;
+               wxFilePickerCtrl* m_ram_read_picker;
+               wxGauge* m_ram_read_gauge;
+               wxButton* m_ram_read_button;
+               wxStaticLine* m_staticline12;
+               wxStaticText* m_staticText22;
+               wxStaticLine* m_staticline7;
+               wxStaticText* m_staticText161;
+               wxChoice* m_ram_write_script;
+               wxStaticText* m_staticText171;
+               wxFilePickerCtrl* m_ram_write_picker;
+               wxGauge* m_ram_write_gauge;
+               wxButton* m_ram_write_button;
                wxPanel* m_panel_version;
                wxStaticText* m_version_title;
                wxStaticText* m_version_copyright;
@@ -104,35 +123,4 @@ class frame_main : public wxFrame
        
 };
 
-///////////////////////////////////////////////////////////////////////////////
-/// Class rampanel
-///////////////////////////////////////////////////////////////////////////////
-class rampanel : public wxPanel 
-{
-       private:
-       
-       protected:
-               wxStaticText* m_script_label;
-               wxChoice* m_script_choice;
-               wxStaticText* m_ramimage_label;
-               wxFilePickerCtrl* m_ramimage_picker;
-               wxStaticLine* m_staticline1;
-               wxStaticText* m_cpu_label;
-               wxGauge* m_cpu_gauge;
-               wxChoice* m_cpu_increase;
-               wxStaticText* m_cpu_value;
-               wxStaticLine* m_staticline3;
-               wxButton* m_button;
-               
-               // Virtual event handlers, overide them in your derived class
-               virtual void dump_button_click( wxCommandEvent& event ) { event.Skip(); }
-               
-       
-       public:
-               
-               rampanel( wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( -1,-1 ), long style = wxTAB_TRAVERSAL );
-               ~rampanel();
-       
-};
-
 #endif //__anago_gui__
index e539ab6..7374ed7 100644 (file)
@@ -20,3 +20,11 @@ function dump(d, script, mappernum, increase_cpu, increase_ppu)
        nesfile_save(d, mappernum, vram);
        return;
 }
+
+function workram_rw(d, script, increase_cpu)
+{
+       dofile(script);
+       memory_new(d, board.cpu_ramsize * increase_cpu, 0);
+       cpu_ram_access(d, board.cpu_ramsize / board.cpu_banksize, board.cpu_ramsize);
+       memory_finalize(d);
+}
index 3b7f341..64c0284 100644 (file)
@@ -6,13 +6,15 @@
 
 struct reader_handle{
        void (*except)(const wgChar *str);
+       const struct textcontrol *log;
 };
 
-static const struct reader_handle *dummy_open(void (*except)(const wgChar *str))
+static const struct reader_handle *dummy_open(void (*except)(const wgChar *str), const struct textcontrol *log)
 {
        struct reader_handle *h;
        h = Malloc(sizeof(struct reader_handle));
        h->except = except;
+       h->log = log;
        return h;
 }
 
@@ -54,6 +56,14 @@ static void dummy_init(const struct reader_handle *h)
 {
 }
 
+static void dummy_cpu_write(const struct reader_handle *h, long address, long length, const uint8_t *data)
+{
+       if(length == 1){
+               h->log->append(h->log->object, wgT(" cpu_write $%04x <- $%02x\n"), (int) address, *data);
+       }
+       Sleep(4);
+}
+
 static void dummy_write(const struct reader_handle *h, long address, long length, const uint8_t *data)
 {
        Sleep(4);
@@ -99,7 +109,7 @@ static uint8_t dummy_vram_connection(const struct reader_handle *h)
 const struct reader_driver DRIVER_DUMMY = {
        .cpu = {
                .memory_read = dummy_read, 
-               .memory_write = dummy_write,
+               .memory_write = dummy_cpu_write,
                .flash_config = dummy_flash_config,
                .flash_erase = dummy_flash_erase,
                .flash_program = dummy_flash_program,
index 7e2aa31..b8f0abb 100644 (file)
@@ -40,24 +40,6 @@ SQInteger cpu_write_check(HSQUIRRELVM v)
        return range_check(v, wgT("data"), data, &range_data);
 }
 
-SQInteger script_require(HSQUIRRELVM v)
-{
-       if(sq_gettop(v) != 2){
-               return sq_throwerror(v, wgT("argument number error"));
-       }
-       if(sq_gettype(v, 2) != OT_STRING){
-               return sq_throwerror(v, wgT("argument type error"));
-       }
-       const SQChar *file;
-       if(SQ_FAILED(sq_getstring(v, 2, &file))){
-               return sq_throwerror(v, wgT("require error"));
-       }
-       if(SQ_FAILED(sqstd_dofile(v, file, SQFalse, SQTrue))){
-               return sq_throwerror(v, wgT("require error"));
-       }
-       return 0;
-}
-
 static bool connection_check_main(const struct reader_handle *h, const struct textcontrol *text, const struct reader_memory_access *m, long address)
 {
        const int size = 0x10;
index 5039c44..38e1ef0 100644 (file)
@@ -6,7 +6,6 @@ struct range{
 SQInteger script_nop(HSQUIRRELVM v);
 SQInteger range_check(HSQUIRRELVM v, const wgChar *name, long target, const struct range *range);
 SQInteger cpu_write_check(HSQUIRRELVM v);
-SQInteger script_require(HSQUIRRELVM v);
 
 struct reader_handle;
 struct reader_memory_access;
index 3641e0c..cc1d039 100644 (file)
@@ -5,6 +5,7 @@
 #include <sqstdio.h>
 #include <sqstdaux.h>
 #include "type.h"
+#include "file.h"
 #include "widget.h"
 #include "romimage.h"
 #include "memory_manage.h"
 #include "script_common.h"
 #include "script_dump.h"
 
-static SQInteger write_memory(HSQUIRRELVM v, const struct reader_handle *h, struct dump_memory_driver *t)
+static SQInteger cpu_write_1byte(HSQUIRRELVM v)
 {
+       struct dump_config *d;
        long address, data;
-       SQRESULT r = qr_argument_get(v, 2, &address, &data);
+
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
        if(SQ_FAILED(r)){
                return r;
        }
-       uint8_t d8 = (uint8_t) data;
-       t->access->memory_write(h, address, 1, &d8);
-       return 0;
-}
-static SQInteger cpu_write(HSQUIRRELVM v)
-{
-       struct dump_config *d;
-       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       r = qr_argument_get(v, 2, &address, &data);
        if(SQ_FAILED(r)){
                return r;
        }
-       return write_memory(v, d->handle, &d->cpu);
+       uint8_t d8 = (uint8_t) data;
+       d->cpu.access->memory_write(d->handle, address, 1, &d8);
+       return 0;
 }
 
-//¤³¤³¤Î printf ¤Ï debug ÍѤ˻Ĥ·¤Æ¤ª¤¯
+//ここの printf は debug 用に残しておく
 static void buffer_show(struct memory *t, long length)
 {
        int i;
@@ -90,12 +88,12 @@ static SQInteger read_memory(HSQUIRRELVM v, const struct reader_handle *h, struc
        if(SQ_FAILED(r)){
                return r;
        }
+       assert(t->memory.attribute == MEMORY_ATTR_WRITE);
        t->access->memory_read(h, &t->gauge, address, length == 0 ? 1: length, t->memory.data + t->memory.offset);
        if((length != 0) && (progress == false)){
                buffer_show(&t->memory, length);
        }
        t->memory.offset += length;
-
        return 0;
 }
 
@@ -163,7 +161,7 @@ static void memory_new_init(struct dump_memory_driver *d)
        d->gauge.value_set(d->gauge.bar, d->gauge.label, 0);
 }
 
-//test »þ/1ÅÙÌܤΠcall ¤Ç»ÈÍÑ
+//test 時/1度目の call で使用
 static SQInteger memory_new(HSQUIRRELVM v)
 {
        struct dump_config *d;
@@ -181,7 +179,7 @@ static SQInteger memory_new(HSQUIRRELVM v)
        return 0;
 }
 
-//dump »þ/2ÅÙÌܤΠcall ¤Ç nesfile_save ¤È¤·¤Æ»ÈÍÑ
+//dump 時/2度目の call で nesfile_save として使用
 static SQInteger nesfile_save(HSQUIRRELVM v)
 {
        struct dump_config *d;
@@ -218,7 +216,7 @@ static SQInteger nesfile_save(HSQUIRRELVM v)
        return 0;
 }
 
-//dump »þ/1ÅÙÌܤΠcall ¤Ç nesfile_save ¤È¤·¤Æ»ÈÍÑ
+//dump 時/1度目の call で nesfile_save として使用
 static SQInteger length_check(HSQUIRRELVM v)
 {
        struct dump_config *d;
@@ -267,7 +265,7 @@ static SQInteger read_count(HSQUIRRELVM v, const struct textcontrol *l, struct d
 static SQInteger cpu_read_count(HSQUIRRELVM v)
 {
        static const struct range range_address = {0x8000, 0x10000};
-       //length == 0 ¤Ï Âоݥ¢¥É¥ì¥¹¤ò¸Æ¤ó¤Ç¡¢¥Ð¥Ã¥Õ¥¡¤Ë¤¤¤ì¤Ê¤¤¡£mmc2, mmc4 ¤Ç»ÈÍѤ¹¤ë¡£
+       //length == 0 は 対象アドレスを呼んで、バッファにいれない。mmc2, mmc4 で使用する。
        static const struct range range_length = {0x0000, 0x4000};
        struct dump_config *d;
        SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
@@ -306,9 +304,6 @@ static bool script_execute(HSQUIRRELVM v, struct dump_config *d)
        if(SQ_FAILED(sqstd_dofile(v, wgT("dumpcore.nut"), SQFalse, SQTrue))){
                d->log.append(d->log.object, wgT("dump core script error\n"));
                ret = false;
-/*     }else if(SQ_FAILED(sqstd_dofile(v, d->script, SQFalse, SQTrue))){
-               d->log.append(d->log.object, wgT("%s open error\n"), d->script);
-               ret = false;*/
        }else{
                SQRESULT r = qr_call(
                        v, wgT("dump"), (SQUserPointer) d, d->script, 
@@ -325,11 +320,11 @@ static bool script_execute(HSQUIRRELVM v, struct dump_config *d)
        return ret;
 }
 
-static void dump_memory_driver_init(struct dump_memory_driver *dd)
+static void dump_memory_driver_init(struct dump_memory_driver *dd, enum memory_attribute at)
 {
        dd->memory.size = 0;
        dd->memory.offset = 0;
-       dd->memory.attribute = MEMORY_ATTR_WRITE;
+       dd->memory.attribute = at;
        dd->memory.transtype = TRANSTYPE_FULL;
        dd->memory.data = NULL;
        dd->read_count = 0;
@@ -337,31 +332,28 @@ static void dump_memory_driver_init(struct dump_memory_driver *dd)
 
 bool script_dump_execute(struct dump_config *d)
 {
-       dump_memory_driver_init(&d->cpu);
+       dump_memory_driver_init(&d->cpu, MEMORY_ATTR_WRITE);
        d->cpu.memory.name = wgT("Program");
        
-       dump_memory_driver_init(&d->ppu);
+       dump_memory_driver_init(&d->ppu, MEMORY_ATTR_WRITE);
        d->ppu.memory.name = wgT("Charcter");
        
        {
-               HSQUIRRELVM v = qr_open(&d->log); 
+               HSQUIRRELVM v = qr_open(&d->log);
                qr_function_register_global(v, wgT("ppu_ramfind"), script_nop);
                qr_function_register_global(v, wgT("cpu_write"), cpu_write_check);
                qr_function_register_global(v, wgT("memory_new"), memory_size_set);
                qr_function_register_global(v, wgT("nesfile_save"), length_check);
                qr_function_register_global(v, wgT("cpu_read"), cpu_read_count);
                qr_function_register_global(v, wgT("ppu_read"), ppu_read_count);
-               qr_function_register_global(v, wgT("require"), script_require);
                if(script_execute(v, d) == false){
                        qr_close(v);
                        return false;
                }
                qr_close(v);
        }
-/*     if(d->progress == true){
-               progress_init();
-       }*/
-       d->handle = d->control->open(d->except);
+
+       d->handle = d->control->open(d->except, &d->log);
        if(d->handle == NULL){
                d->log.append(d->log.object, wgT("reader open error\n"));
                return false;
@@ -375,11 +367,10 @@ bool script_dump_execute(struct dump_config *d)
                HSQUIRRELVM v = qr_open(&d->log); 
                qr_function_register_global(v, wgT("memory_new"), memory_new);
                qr_function_register_global(v, wgT("nesfile_save"), nesfile_save);
-               qr_function_register_global(v, wgT("cpu_write"), cpu_write);
+               qr_function_register_global(v, wgT("cpu_write"), cpu_write_1byte);
                qr_function_register_global(v, wgT("cpu_read"), cpu_read);
                qr_function_register_global(v, wgT("ppu_read"), ppu_read);
                qr_function_register_global(v, wgT("ppu_ramfind"), ppu_ramfind);
-               qr_function_register_global(v, wgT("require"), script_require);
                script_execute(v, d);
                qr_close(v);
        }
@@ -387,3 +378,159 @@ bool script_dump_execute(struct dump_config *d)
        d->handle = NULL;
        return true;
 }
+
+static bool workram_execute(HSQUIRRELVM v, struct dump_config *d)
+{
+       bool ret = true;
+       if(SQ_FAILED(sqstd_dofile(v, wgT("dumpcore.nut"), SQFalse, SQTrue))){
+               d->log.append(d->log.object, wgT("dump core script error\n"));
+               ret = false;
+       }else{
+               SQRESULT r = qr_call(
+                       v, wgT("workram_rw"), (SQUserPointer) d, d->script, 
+                       1, d->cpu.increase
+               );
+               if(SQ_FAILED(r)){
+                       ret = false;
+                       Free(d->cpu.memory.data);
+                       Free(d->ppu.memory.data);
+                       d->cpu.memory.data = NULL;
+                       d->ppu.memory.data = NULL;
+               }
+       }
+       return ret;
+}
+
+static SQInteger cpu_ramrw_check(HSQUIRRELVM v)
+{
+       static const struct range range_address = {0x6000, 0xdfff};
+       static const struct range range_length = {1, 0x2000};
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       return read_count(v, &d->log, &d->cpu, &range_address, &range_length);
+}
+
+static SQInteger ramimage_open(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       if(buf_load(d->cpu.memory.data, d->target, d->cpu.memory.size) == NG){
+               return r = sq_throwerror(v, wgT("RAM image open error"));
+       }
+       return 0;
+}
+
+static SQInteger memory_finalize(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       if(d->mode == MODE_RAM_READ){
+               buf_save(d->cpu.memory.data, d->target, d->cpu.memory.size);
+       }
+       Free(d->cpu.memory.data);
+       Free(d->ppu.memory.data);
+       d->cpu.memory.data = NULL;
+       d->ppu.memory.data = NULL;
+       
+       return 0;
+}
+
+static SQInteger cpu_write_ramimage(HSQUIRRELVM v)
+{
+       struct dump_config *d;
+       SQRESULT r =  qr_userpointer_get(v, (SQUserPointer) &d);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+
+       long address, length;
+       uint8_t *cmp;
+       const uint8_t *writedata = d->cpu.memory.data;
+       writedata += d->cpu.memory.offset;
+       
+       r = qr_argument_get(v, 2, &address, &length);
+       if(SQ_FAILED(r)){
+               return r;
+       }
+       cmp = Malloc(length);
+       assert(d->cpu.memory.attribute == MEMORY_ATTR_READ);
+       //&d->cpu.gauge, 
+       d->cpu.access->memory_write(
+               d->handle, address, length, writedata
+       );
+       d->cpu.access->memory_read(
+               d->handle, &d->cpu.gauge, address, length, cmp
+       );
+       d->cpu.memory.offset += length;
+
+       r = memcmp(cmp, writedata, length);
+       Free(cmp);
+       if(r != 0){
+               r = sq_throwerror(v, wgT("memory write failed"));
+       }
+       return 0;
+}
+
+bool script_workram_execute(struct dump_config *d)
+{
+       dump_memory_driver_init(&d->cpu, d->mode == MODE_RAM_READ ? MEMORY_ATTR_WRITE : MEMORY_ATTR_READ);
+       dump_memory_driver_init(&d->ppu, MEMORY_ATTR_NOTUSE);
+       d->cpu.memory.name = wgT("Workram");
+       d->ppu.memory.name = wgT("N/A");
+
+       {
+               HSQUIRRELVM v = qr_open(&d->log);
+               qr_function_register_global(v, wgT("memory_new"), memory_new);
+               qr_function_register_global(v, wgT("cpu_write"), cpu_write_check);
+               qr_function_register_global(v, wgT("cpu_ramrw"), cpu_ramrw_check);
+               qr_function_register_global(v, wgT("memory_finalize"), length_check);
+               if(workram_execute(v, d) == false){
+                       qr_close(v);
+                       return false;
+               }
+               qr_close(v);
+       }
+       
+       d->handle = d->control->open(d->except, &d->log);
+       if(d->handle == NULL){
+               d->log.append(d->log.object, wgT("reader open error\n"));
+               return false;
+       }
+       d->control->init(d->handle);
+       if(connection_check(d->handle, &d->log, d->cpu.access, d->ppu.access) == false){
+               d->control->close(d->handle);
+               return false;
+       }
+       {
+               HSQUIRRELVM v = qr_open(&d->log); 
+               qr_function_register_global(v, wgT("cpu_write"), cpu_write_1byte);
+               switch(d->mode){
+               case MODE_RAM_READ:
+                       qr_function_register_global(v, wgT("memory_new"), script_nop);
+                       qr_function_register_global(v, wgT("cpu_ramrw"), cpu_read);
+                       break;
+               case MODE_RAM_WRITE:
+                       qr_function_register_global(v, wgT("memory_new"), ramimage_open);
+                       qr_function_register_global(v, wgT("cpu_ramrw"), cpu_write_ramimage);
+                       break;
+               default:
+                       assert(0);
+                       break;
+               }
+               qr_function_register_global(v, wgT("memory_finalize"), memory_finalize);
+               workram_execute(v, d);
+               qr_close(v);
+       }
+       d->control->close(d->handle);
+       d->handle = NULL;
+       return true;
+}
index b1be3af..4f80242 100644 (file)
@@ -1,6 +1,10 @@
 #ifndef _SCRIPT_DUMP_H_
 #define _SCRIPT_DUMP_H_
+enum dump_mode{
+       MODE_ROM_DUMP, MODE_RAM_READ, MODE_RAM_WRITE
+};
 struct dump_config{
+       enum dump_mode mode;
        const wgChar *script;
        const wgChar *target;
        const struct reader_handle *handle;
@@ -18,4 +22,5 @@ struct dump_config{
        void (*except)(const wgChar *str);
 };
 bool script_dump_execute(struct dump_config *c);
+bool script_workram_execute(struct dump_config *d);
 #endif
index 4f787e3..791196e 100644 (file)
@@ -130,10 +130,9 @@ static SQInteger program_regist(HSQUIRRELVM v, const struct reader_handle *h, st
                t->command_change = false;
        }
        
-/*     printf("programming %s ROM area 0x%06x...\n", name, t->memory->offset);
-       fflush(stdout);*/
        return sq_suspendvm(v);
 }
+
 static void program_execute(const struct reader_handle *h, struct flash_memory_driver *t)
 {
        const long w = t->access->flash_program(
@@ -340,9 +339,6 @@ static bool script_execute(HSQUIRRELVM v, const wgChar *function, struct program
        if(SQ_FAILED(sqstd_dofile(v, _SC("programcore.nut"), SQFalse, SQTrue))){
                c->log.append(c->log.object, wgT("flash core script error\n"));
                ret = false;
-/*     }else if(SQ_FAILED(sqstd_dofile(v, c->script, SQFalse, SQTrue))){
-               c->log.append(c->log.object, wgT("%s open error\n"), c->script);
-               ret = false;*/
        }else{
                SQRESULT r = qr_call(
                        v, function, (SQUserPointer) c, c->script,
@@ -460,7 +456,7 @@ bool script_program_execute(struct program_config *c)
                return false;
        }
 //reader initalize
-       c->handle = c->control->open(c->except);
+       c->handle = c->control->open(c->except, &c->log);
        if(c->handle == NULL){
                c->log.append(c->log.object, wgT("reader open error\n"));
                nesbuffer_free(&rom, 0);
index 4ee3d9b..751fb1d 100644 (file)
@@ -63,16 +63,18 @@ SQRESULT qr_call(HSQUIRRELVM v, const SQChar *functionname, SQUserPointer up, co
        sq_pushroottable(v);
        sq_pushstring(v, functionname, -1);
        if(SQ_SUCCEEDED(sq_get(v,-2))){
-               int i;
                va_list ap;
-               va_start(ap, argnum);
+               int i;
+               
                sq_pushroottable(v);
                sq_pushuserpointer(v, up);
                sq_pushstring(v, scriptfile, -1);
+               va_start(ap, argnum);
                for(i = 0; i < argnum; i++){
                        sq_pushinteger(v, va_arg(ap, long));
                }
                r = sq_call(v, 3 + argnum, SQFalse, SQTrue); //calls the function 
+               va_end(ap);
        }
        sq_settop(v, top); //restores the original stack size
        return r;
index c2233c8..a7fdfde 100644 (file)
@@ -35,7 +35,7 @@ struct reader_handle{
        void (*except)(const wgChar *str);
 };
 
-static const struct reader_handle *kazzo_open(void (*except)(const wgChar *str))
+static const struct reader_handle *kazzo_open(void (*except)(const wgChar *str), const struct textcontrol *log)
 {
        struct reader_handle *h;
        usb_dev_handle *usb = device_open();
index a149628..eae5af8 100644 (file)
@@ -21,7 +21,7 @@ struct reader_memory_access{
 };
 struct reader_control{
        const wgChar *name;
-       const struct reader_handle *(*open)(void (*except)(const wgChar *str));
+       const struct reader_handle *(*open)(void (*except)(const wgChar *str), const struct textcontrol *log);
        void (*close)(const struct reader_handle *h);
        void (*init)(const struct reader_handle *h);
        void (*flash_status)(const struct reader_handle *h, uint8_t s[2]);
index 39dd1b6..52db43a 100644 (file)
@@ -126,6 +126,7 @@ void nesfile_create(const struct textcontrol *l, struct romimage *r, const wgCha
        fclose(f);
 }
 
+/*
 static inline void memory_malloc(struct memory *m)
 {
        m->data = NULL;
@@ -134,6 +135,7 @@ static inline void memory_malloc(struct memory *m)
        }
 }
 
+
 bool nesbuffer_malloc(struct romimage *r, int mode)
 {
        switch(mode){
@@ -146,7 +148,7 @@ bool nesbuffer_malloc(struct romimage *r, int mode)
                break;
        }
        return true;
-}
+}*/
 
 static inline void memory_free(struct memory *m)
 {
@@ -159,9 +161,6 @@ void nesbuffer_free(struct romimage *r, int mode)
 {
        memory_free(&(r->cpu_rom));
        memory_free(&(r->ppu_rom));
-       if(mode == MODE_RAM_READ){
-               memory_free(&(r->cpu_ram));
-       }
 }
 
 void backupram_create(const struct memory *r, const wgChar *ramfilename)
index 646f07b..c2acd79 100644 (file)
@@ -1,12 +1,6 @@
 #ifndef _ROMIAMGE_H_
 #define _ROMIAMGE_H_
-enum mode{
-       MODE_TEST,
-       MODE_ROM_DUMP,
-       MODE_RAM_READ,
-       MODE_RAM_WRITE,
-       MODE_ROM_PROGRAM
-};
+
 enum trastype{
        TRANSTYPE_EMPTY,
        TRANSTYPE_TOP,