void UIMemoryTransfer::accept() { u32 startAddress = leStartAddress->text().toUInt(0, 16); u32 endAddress = leEndAddress->text().toUInt(0, 16); if (rbDownload->isChecked() && startAddress >= endAddress) { CommonDialogs::information(QtYabause::translate("Invalid Start/End Address Combination"), QtYabause::translate("Error")); return; } mYabauseThread->pauseEmulation( false, false ); if (rbDownload->isChecked()) { // Let's do a ram dump MappedMemorySave(leFile->text().toLatin1(), startAddress, endAddress - startAddress); } else { // upload to ram and possibly execute // Is this a program? if (cbPC->checkState() == Qt::Checked) { MappedMemoryLoadExec(leFile->text().toLatin1(), startAddress); } else { MappedMemoryLoad(leFile->text().toLatin1(), startAddress); } } QDialog::accept(); }
bool YabauseThread::pauseEmulation( bool pause, bool reset ) { if ( mPause == pause && !reset ) { return true; } if ( mInit == 0 && reset ) { deInitEmulation(); } if ( mInit < 0 ) { initEmulation(); } if ( mInit < 0 ) { emit error( QtYabause::translate( "Can't initialize Yabause" ), false ); return false; } mPause = pause; if ( mPause ) { ScspMuteAudio(SCSP_MUTE_SYSTEM); killTimer( mTimerId ); mTimerId = -1; } else { ScspUnMuteAudio(SCSP_MUTE_SYSTEM); mTimerId = startTimer( 0 ); } VolatileSettings * vs = QtYabause::volatileSettings(); if (vs->value("autostart").toBool()) { if (vs->value("autostart/binary").toBool()) { MappedMemoryLoadExec( vs->value("autostart/binary/filename").toString().toLocal8Bit().constData(), vs->value("autostart/binary/address").toUInt()); } else if (vs->value("autostart/load").toBool()) { YabLoadStateSlot( QtYabause::volatileSettings()->value( "General/SaveStates", getDataDirPath() ).toString().toLatin1().constData(), vs->value("autostart/load/slot").toInt() ); } vs->setValue("autostart", false); } emit this->pause( mPause ); return true; }
LRESULT CALLBACK MemTransferDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { char tempstr[MAX_PATH]; switch (uMsg) { case WM_INITDIALOG: { SetDlgItemText(hDlg, IDC_EDITTEXT1, mtrnsfilename); sprintf(tempstr, "%08X", (int)mtrnssaddress); SetDlgItemTextA(hDlg, IDC_EDITTEXT2, tempstr); sprintf(tempstr, "%08X", (int)mtrnseaddress); SetDlgItemTextA(hDlg, IDC_EDITTEXT3, tempstr); if (mtrnsreadwrite == 0) { SendMessage(GetDlgItem(hDlg, IDC_DOWNLOADMEM), BM_SETCHECK, BST_CHECKED, 0); SendMessage(GetDlgItem(hDlg, IDC_UPLOADMEM), BM_SETCHECK, BST_UNCHECKED, 0); EnableWindow(GetDlgItem(hDlg, IDC_EDITTEXT3), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_CHECKBOX1), FALSE); } else { SendMessage(GetDlgItem(hDlg, IDC_DOWNLOADMEM), BM_SETCHECK, BST_UNCHECKED, 0); SendMessage(GetDlgItem(hDlg, IDC_UPLOADMEM), BM_SETCHECK, BST_CHECKED, 0); if (mtrnssetpc) SendMessage(GetDlgItem(hDlg, IDC_CHECKBOX1), BM_SETCHECK, BST_CHECKED, 0); EnableWindow(GetDlgItem(hDlg, IDC_EDITTEXT3), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_CHECKBOX1), TRUE); } return TRUE; } case WM_COMMAND: { switch (LOWORD(wParam)) { case IDC_BROWSE: { OPENFILENAME ofn; if (SendMessage(GetDlgItem(hDlg, IDC_DOWNLOADMEM), BM_GETCHECK, 0, 0) == BST_CHECKED) { WCHAR filter[1024]; CreateFilter(filter, 1024, "All files (*.*)", "*.*", "Binary Files", "*.BIN", NULL); SetupOFN(&ofn, OFN_DEFAULTSAVE, hDlg, filter, mtrnsfilename, sizeof(mtrnsfilename)/sizeof(TCHAR)); if (GetSaveFileName(&ofn)) SetDlgItemText(hDlg, IDC_EDITTEXT1, mtrnsfilename); } else { WCHAR filter[1024]; CreateFilter(filter, 1024, "All files (*.*)", "*.*", "Binary Files", "*.BIN", "COFF Files", "*.COF;*.COFF", NULL); // setup ofn structure SetupOFN(&ofn, OFN_DEFAULTLOAD, hDlg, filter, mtrnsfilename, sizeof(mtrnsfilename)/sizeof(TCHAR)); if (GetOpenFileName(&ofn)) SetDlgItemText(hDlg, IDC_EDITTEXT1, mtrnsfilename); } return TRUE; } case IDOK: { GetDlgItemText(hDlg, IDC_EDITTEXT1, mtrnsfilename, MAX_PATH); GetDlgItemTextA(hDlg, IDC_EDITTEXT2, tempstr, 9); sscanf(tempstr, "%08lX", &mtrnssaddress); GetDlgItemTextA(hDlg, IDC_EDITTEXT3, tempstr, 9); sscanf(tempstr, "%08lX", &mtrnseaddress); if ((mtrnseaddress - mtrnssaddress) < 0) { MessageBox (hDlg, _16("Invalid Start/End Address Combination"), _16("Error"), MB_OK | MB_ICONINFORMATION); EndDialog(hDlg, TRUE); return FALSE; } WideCharToMultiByte(CP_ACP, 0, mtrnsfilename, -1, tempstr, sizeof(tempstr), NULL, NULL); if (SendMessage(GetDlgItem(hDlg, IDC_DOWNLOADMEM), BM_GETCHECK, 0, 0) == BST_CHECKED) { // Let's do a ram dump MappedMemorySave(tempstr, mtrnssaddress, mtrnseaddress - mtrnssaddress); mtrnsreadwrite = 0; } else { // upload to ram and possibly execute mtrnsreadwrite = 1; // Is this a program? if (SendMessage(GetDlgItem(hDlg, IDC_CHECKBOX1), BM_GETCHECK, 0, 0) == BST_CHECKED) { MappedMemoryLoadExec(tempstr, mtrnssaddress); mtrnssetpc = TRUE; } else { MappedMemoryLoad(tempstr, mtrnssaddress); mtrnssetpc = FALSE; } } EndDialog(hDlg, TRUE); return TRUE; } case IDCANCEL: { EndDialog(hDlg, FALSE); return TRUE; } case IDC_UPLOADMEM: { if (HIWORD(wParam) == BN_CLICKED) { EnableWindow(GetDlgItem(hDlg, IDC_EDITTEXT3), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_CHECKBOX1), TRUE); } break; } case IDC_DOWNLOADMEM: { if (HIWORD(wParam) == BN_CLICKED) { EnableWindow(GetDlgItem(hDlg, IDC_EDITTEXT3), TRUE); EnableWindow(GetDlgItem(hDlg, IDC_CHECKBOX1), FALSE); } break; } default: break; } break; } default: break; } return FALSE; }