From 9369bed6ec289104e34cbc15b2f90c72d9f76c08 Mon Sep 17 00:00:00 2001 From: owomomo Date: Thu, 30 May 2019 01:13:59 +0800 Subject: [PATCH 01/21] New feature: iNES head editor --- src/cart.h | 5 + src/drivers/win/cheat.cpp | 3 - src/drivers/win/header_editor.cpp | 1510 +++++++++++++++++++++++++++++ src/drivers/win/header_editor.h | 23 + src/drivers/win/main.cpp | 3 + src/drivers/win/memview.cpp | 2 +- src/drivers/win/res.rc | 120 ++- src/drivers/win/resource.h | 72 +- src/drivers/win/window.cpp | 5 +- src/fceu.cpp | 145 ++- src/file.cpp | 6 +- src/ines.cpp | 16 +- src/ines.h | 50 +- vc/vc14_fceux.vcxproj | 2 + vc/vc14_fceux.vcxproj.filters | 6 + 15 files changed, 1820 insertions(+), 148 deletions(-) create mode 100644 src/drivers/win/header_editor.cpp create mode 100644 src/drivers/win/header_editor.h diff --git a/src/cart.h b/src/cart.h index 249e0c56..390f52ef 100644 --- a/src/cart.h +++ b/src/cart.h @@ -1,3 +1,6 @@ +#ifndef CART_H +#define CART_H + typedef struct { // Set by mapper/board code: void (*Power)(void); @@ -100,3 +103,5 @@ void FCEU_GeniePower(void); bool FCEU_OpenGenie(void); void FCEU_CloseGenie(void); void FCEU_KillGenie(void); + +#endif \ No newline at end of file diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index d8e8d121..22dde79b 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -1196,10 +1196,7 @@ void DoGGConv() ShowWindow(hGGConv, SW_SHOWNORMAL); SetForegroundWindow(hGGConv); } else - { hGGConv = CreateDialog(fceu_hInstance,"GGCONV",NULL,GGConvCallB); - } - return; } inline void GetCheatStr(char* buf, int a, int v, int c) diff --git a/src/drivers/win/header_editor.cpp b/src/drivers/win/header_editor.cpp new file mode 100644 index 00000000..1ea3f654 --- /dev/null +++ b/src/drivers/win/header_editor.cpp @@ -0,0 +1,1510 @@ + +#include +#include "common.h" +#include "fceu.h" +#include "types.h" +#include "x6502.h" +#include "cart.h" +#include "ines.h" + +#include "resource.h" +#include "header_editor.h" + + +// VS System type +char* vsSysList[] = { + "Normal", + "RBI Baseball", + "TKO Boxing", + "Super Xevious", + "Ice Climber", + "Dual Normal", + "Dual Raid on Bungeling Bay", + 0 +}; + +// VS PPU type +char* vsPPUList[] = { + "RP2C03B", + "RP2C03G", + "RP2C04-0001", + "RP2C04-0002", + "RP2C04-0003", + "RP2C04-0004", + "RC2C03B", + "RC2C03C", + "RC2C05-01 ($2002 AND $??=$1B)", + "RC2C05-02 ($2002 AND $3F=$3D)", + "RC2C05-03 ($2002 AND $1F=$1C)", + "RC2C05-04 ($2002 AND $1F=$1B)", + "RC2C05-05 ($2002 AND $1F=$??)", + "Reserved", + "Reserved", + "Reserved", + 0 +}; + +// Extend console type +char* extConsoleList[] = { + "Normal", + "VS. System", + "Playchoice 10", + "Bit Corp. Creator", + "V.R. Tech. VT01 monochrome", + "V.R. Tech. VT01 red / cyan", + "V.R. Tech. VT02", + "V.R. Tech. VT03", + "V.R. Tech. VT09", + "VT32", + "VT369", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + "Reserved", + 0 +}; + +// Default input device list +char* inputDevList[] = { + "Unspecified", + "Standard NES / Famicom Controllers", + "Four-score (NES)", + "Four-score (Famicom)", + "VS. System", + "VS. System (controllers swapped)", + "VS. Pinball (J)", + "VS. Zapper", + "Zapper", + "Double Zappers", + "Bandai Hyper Shot", + "Power Pad Side A", + "Power Pad Side B", + "Family Trainer Side A", + "Family Trainer Side B", + "Arkanoid Paddle (NES)", + "Arkanoid Paddle (Famicom)", + "Double Arkanoid Paddle", + "Konami Hyper Shot", + "Pachinko", + "Exciting Boxing Punching Bag", + "Jissen Mahjong", + "Party Tap", + "Oeka Kids Tablet", + "Barcode Reader", + "Miracle Piano", + "Pokkun Moguraa", + "Top Rider", + "Double-Fisted", + "Famicom 3D", + "Doremikko Keyboard", + "R.O.B. Gyro Set", + "Famicom Data Recorder", + "ASCII Turbo File", + "IGS Storage Battle Box", + "Family BASIC Keyboard", + "PEC-586 Keyboard", + "Bit Corp. Keyboard", + "Subor Keyboard", + "Subor Keyboard + Mouse A", + "Subor Keyboard + Mouse B", + "SNES Mouse", + "Multicart", + "Double SNES controllers", + "RacerMate Bicycle", + "U-Force", + "R.O.B. Stack-Up", + 0 +}; + +char** dropDownList[] = { + vsSysList, vsPPUList, extConsoleList, inputDevList, 0 +}; + +int dropDownIdList[] = { + IDC_VS_SYSTEM_COMBO, + IDC_VS_PPU_COMBO, + IDC_SYSTEM_EXTEND_COMBO, + IDC_INPUT_DEVICE_COMBO, + 0 +}; + +HWND hHeadEditor = NULL; + +bool LoadHeader(HWND parent, char* name, iNES_HEADER* header) +{ + int error = 0; + enum errors { + OK, + OPEN_FAILED, + INVALID_HEADER, + FDS_HEADER, + UNIF_HEADER + }; + + FCEUFILE* fp = FCEU_fopen(name, NULL, "rb", NULL); + if (fp) + { + if (FCEU_fread(header, 1, sizeof(iNES_HEADER), fp) == sizeof(iNES_HEADER) && !memcmp(header, "NES\x1A", 4)) + header->cleanup(); + else if (!memcmp(header, "FDS\x1A", 4)) + error = errors::FDS_HEADER; + else if (!memcmp(header, "UNIF", 4)) + error = errors::UNIF_HEADER; + else + error = errors::INVALID_HEADER; + FCEU_fclose(fp); + } + else + error = errors::OPEN_FAILED; + + if (error) + { + switch (error) + { + case errors::OPEN_FAILED: + { + char buf[1024]; + sprintf(buf, "Error opening %s!", name); + MessageBox(parent, buf, "iNES Header Editor", MB_ICONERROR | MB_OK); + break; + } + case errors::INVALID_HEADER: + MessageBox(parent, "Invalid iNES header.", "iNES Header Editor", MB_ICONERROR | MB_OK); + break; + case errors::FDS_HEADER: + MessageBox(parent, "Editing header of an FDS file is not supported.", "iNES Header Editor", MB_ICONERROR | MB_OK); + break; + case errors::UNIF_HEADER: + MessageBox(parent, "Editing header of a UNIF file is not supported.", "iNES Header Editor", MB_ICONERROR | MB_OK); + } + return false; + } + + return true; +} + +HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header) +{ + hHeadEditor = hwnd; + + + // these contols don't bother the standard + EnableWindow(GetDlgItem(hwnd, IDC_INESHEADER_GROUP), TRUE); + + // Resotore button + EnableWindow(GetDlgItem(hwnd, IDC_RESTORE_BUTTON), TRUE); + // Save as... button + EnableWindow(GetDlgItem(hwnd, IDSAVE), TRUE); + + // Version groupbox + EnableWindow(GetDlgItem(hwnd, IDC_VERSION_GROUP), TRUE); + // Standard + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_VERSION_STANDARD), TRUE); + // iNES 2.0 + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_VERSION_INES20), TRUE); + + // Mapper groupbox + EnableWindow(GetDlgItem(hwnd, IDC_MAPPER_GROUP), TRUE); + // Mapper# + EnableWindow(GetDlgItem(hwnd, IDC_MAPPER_TEXT), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_MAPPER_COMBO), TRUE); + + // PRG groupbox + EnableWindow(GetDlgItem(hwnd, IDC_PRG_GROUP), TRUE); + // PRG ROM + EnableWindow(GetDlgItem(hwnd, IDC_PRGROM_TEXT), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_PRGROM_COMBO), TRUE); + // PRG RAM will be finally determined in ToggleUnofficialPrgRamPresent() + // EnableWindow(GetDlgItem(hwnd, IDC_PRGRAM_TEXT), TRUE); + // EnableWindow(GetDlgItem(hwnd, IDC_PRGRAM_COMBO), TRUE); + // CHR ROM + EnableWindow(GetDlgItem(hwnd, IDC_CHR_GROUP), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_CHRROM_TEXT), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_CHRROM_COMBO), TRUE); + + // Mirroring groupbox + EnableWindow(GetDlgItem(hwnd, IDC_MIRRORING_GROUP), TRUE); + // Horizontal + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_MIRR_HORIZONTAL), TRUE); + // Vertical + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_MIRR_VERTICAL), TRUE); + // Four-screen + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_MIRR_4SCREEN), TRUE); + + // Region Groupbox + EnableWindow(GetDlgItem(hwnd, IDC_REGION_GROUP), TRUE); + // NTSC + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_REGION_NTSC), TRUE); + // PAL + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_REGION_PAL), TRUE); + // Multiple will be finally determined in ToggleUnofficialPrgRamPresent() + // EnableWindow(GetDlgItem(hwnd, IDC_RADIO_REGION_DUAL), TRUE); + + // Trainer + EnableWindow(GetDlgItem(hwnd, IDC_CHECK_TRAINER), TRUE); + + // System Groupbox + EnableWindow(GetDlgItem(hwnd, IDC_SYSTEM_GROUP), TRUE); + // Normal + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_SYSTEM_NORMAL), TRUE); + // VS + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_SYSTEM_VS), TRUE); + // Playchoice-10 will be finally determined in ToggleUnofficialPropertiesEnabled() + // EnableWindow(GetDlgItem(hwnd, IDC_RADIO_SYSTEM_PLAYCHOICE10), TRUE); + + ToggleINES20(hwnd, IsDlgButtonChecked(hwnd, IDC_RADIO_VERSION_INES20) == BST_CHECKED); + + SendDlgItemMessage(hwnd, IDC_SUBMAPPER_EDIT, EM_SETLIMITTEXT, 2, 0); + SendDlgItemMessage(hwnd, IDC_MISCELLANEOUS_ROMS_EDIT, EM_SETLIMITTEXT, 1, 0); + + char buf[256]; + for (int i = 0; dropDownIdList[i]; ++i) + for (int j = 0; dropDownList[i][j]; ++j) + { + sprintf(buf, "$%X %s", j, dropDownList[i][j]); + SendDlgItemMessage(hwnd, IDC_MAPPER_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, dropDownIdList[i], CB_ADDSTRING, 0, (LPARAM)buf), j); + } + + // Mapper# + extern BMAPPINGLocal bmap[]; + for (int i = 0; bmap[i].init; ++i) + { + sprintf(buf, "%d %s", bmap[i].number, bmap[i].name); + SendDlgItemMessage(hwnd, IDC_MAPPER_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_MAPPER_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), bmap[i].number); + } + + // add usually used size strings + strcpy(buf, "N/A"); + SendDlgItemMessage(hwnd, IDC_PRGROM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_PRGROM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); + SendDlgItemMessage(hwnd, IDC_CHRROM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_CHRROM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); + SendDlgItemMessage(hwnd, IDC_PRGRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_PRGRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); + SendDlgItemMessage(hwnd, IDC_CHRRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_CHRRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); + SendDlgItemMessage(hwnd, IDC_PRGNVRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_PRGNVRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); + SendDlgItemMessage(hwnd, IDC_CHRNVRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_CHRNVRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); + + int size = 128; + while (size <= 2048 * 1024) + { + if (size >= 1024 << 3) + { + // The size of CHR ROM must be multiple of 8KB + sprintf(buf, "%dKB", size / 1024); + SendDlgItemMessage(hwnd, IDC_CHRROM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_CHRROM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), size); + + // The size of PRG ROM must be multiple of 16KB + if (size >= 1024 * 16) + { + // PRG ROM + sprintf(buf, "%dKB", size / 1024); + SendDlgItemMessage(hwnd, IDC_PRGROM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_PRGROM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), size); + } + } + + if (size >= 1024) + sprintf(buf, "%dKB", size / 1024); + else + sprintf(buf, "%dB", size); + + SendDlgItemMessage(hwnd, IDC_PRGRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_PRGRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), size); + SendDlgItemMessage(hwnd, IDC_CHRRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_CHRRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), size); + SendDlgItemMessage(hwnd, IDC_PRGNVRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_PRGNVRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), size); + SendDlgItemMessage(hwnd, IDC_CHRNVRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_CHRNVRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), size); + + size <<= 1; + } + + + SetHeaderData(hwnd, header); + + return hwnd; + +} + +void ToggleINES20(HWND hwnd, bool ines20) +{ + // only ines 2.0 has these values + // these are always have when in 2.0 + // Submapper# + EnableWindow(GetDlgItem(hwnd, IDC_SUBMAPPER_TEXT), ines20); + EnableWindow(GetDlgItem(hwnd, IDC_SUBMAPPER_EDIT), ines20); + // PRG NVRAM + EnableWindow(GetDlgItem(hwnd, IDC_PRGNVRAM_COMBO), ines20); + EnableWindow(GetDlgItem(hwnd, IDC_PRGNVRAM_TEXT), ines20); + // CHR RAM + EnableWindow(GetDlgItem(hwnd, IDC_CHRRAM_COMBO), ines20); + EnableWindow(GetDlgItem(hwnd, IDC_CHRRAM_TEXT), ines20); + // CHR NVRAM + EnableWindow(GetDlgItem(hwnd, IDC_CHRNVRAM_COMBO), ines20); + EnableWindow(GetDlgItem(hwnd, IDC_CHRNVRAM_TEXT), ines20); + // Dendy in Region Groupbox + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_REGION_DENDY), ines20); + // Multiple in Regtion Groupbox + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_REGION_DUAL), ines20); + // Extend in System Groupbox + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_SYSTEM_EXTEND), ines20); + // Input Device + EnableWindow(GetDlgItem(hwnd, IDC_INPUT_DEVICE_COMBO), ines20); + EnableWindow(GetDlgItem(hwnd, IDC_INPUT_DEVICE_TEXT), ines20); + // Miscellaneous ROMs + EnableWindow(GetDlgItem(hwnd, IDC_MISCELLANEOUS_ROMS_EDIT), ines20); + EnableWindow(GetDlgItem(hwnd, IDC_MISCELLANEOUS_ROMS_TEXT), ines20); + + // enable extend dialog only when ines 2.0 and extend button is checked + ToggleExtendSystemList(hwnd, ines20 && IsDlgButtonChecked(hwnd, IDC_RADIO_SYSTEM_EXTEND) == BST_CHECKED); + // enable vs dialog only when ines 2.0 and vs button is checked + ToggleVSSystemGroup(hwnd, ines20 && IsDlgButtonChecked(hwnd, IDC_RADIO_SYSTEM_VS) == BST_CHECKED); + + + // hide "Battery / PRG-NVRAM" checkbox in ines 2.0 and show PRG NVRAM combo box, negative on the contary, because ines 1.0 has nowhere to set actural size, it can only determin it exists or not. + ShowWindow(GetDlgItem(hwnd, IDC_CHECK_BATTERYNVRAM), ines20 ? SW_HIDE : SW_SHOW); + ShowWindow(GetDlgItem(hwnd, IDC_PRGNVRAM_COMBO), ines20 ? SW_SHOW : SW_HIDE); + ShowWindow(GetDlgItem(hwnd, IDC_PRGNVRAM_TEXT), ines20 ? SW_SHOW : SW_HIDE); + + EnableWindow(GetDlgItem(hwnd, IDC_CHECK_BATTERYNVRAM), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_PRGNVRAM_COMBO), TRUE); + EnableWindow(GetDlgItem(hwnd, IDC_PRGNVRAM_TEXT), TRUE); + + + // 10th byte for the unofficial ines properties + // Unofficial Properties + EnableWindow(GetDlgItem(hwnd, IDC_CHECK_UNOFFICIAL), !ines20); + ToggleUnofficialPropertiesEnabled(hwnd, ines20, IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL) == BST_CHECKED); + + // ines 1.0 doesn't support Dendy region, switch it to PAL + if (!ines20 && IsDlgButtonChecked(hwnd, IDC_RADIO_REGION_DENDY) == BST_CHECKED) + CheckRadioButton(hwnd, IDC_RADIO_REGION_NTSC, IDC_RADIO_REGION_DENDY, IDC_RADIO_REGION_PAL); + // ines 1.0 doesn't support extend system, switch it to normal + if (!ines20 && IsDlgButtonChecked(hwnd, IDC_RADIO_SYSTEM_EXTEND) == BST_CHECKED) + CheckRadioButton(hwnd, IDC_RADIO_SYSTEM_NORMAL, IDC_RADIO_SYSTEM_EXTEND, IDC_RADIO_SYSTEM_NORMAL); + +} + +void ToggleExtendSystemList(HWND hwnd, bool enable) +{ + // Extend combo box only enabled when in iNES 2.0 and Extend System was chosen + // Extend combo box + EnableWindow(GetDlgItem(hwnd, IDC_EXTEND_SYSTEM_GROUP), enable); + EnableWindow(GetDlgItem(hwnd, IDC_SYSTEM_EXTEND_COMBO), enable); + EnableWindow(GetDlgItem(hwnd, IDC_EXTEND_SYSTEM_TEXT), enable); +} + +void ToggleVSSystemGroup(HWND hwnd, bool enable) +{ + // VS System Groupbox only enabled when in iNES 2.0 and VS System in System groupbox is chosen + // VS System Groupbox + EnableWindow(GetDlgItem(hwnd, IDC_VS_SYSTEM_GROUP), enable); + // System + EnableWindow(GetDlgItem(hwnd, IDC_VS_SYSTEM_COMBO), enable); + EnableWindow(GetDlgItem(hwnd, IDC_VS_SYSTEM_TEXT), enable); + // PPU + EnableWindow(GetDlgItem(hwnd, IDC_VS_PPU_COMBO), enable); + EnableWindow(GetDlgItem(hwnd, IDC_VS_PPU_TEXT), enable); +} + +void ToggleUnofficialPropertiesEnabled(HWND hwnd, bool ines20, bool check) +{ + bool sub_enable = !ines20 && check; + + // Unofficial Properties only available in ines 1.0 + EnableWindow(GetDlgItem(hwnd, IDC_UNOFFICIAL_GROUP), sub_enable); + EnableWindow(GetDlgItem(hwnd, IDC_CHECK_UNOFFICIAL_PRGRAM), sub_enable); + EnableWindow(GetDlgItem(hwnd, IDC_CHECK_UNOFFICIAL_EXTRA_REGION), sub_enable); + EnableWindow(GetDlgItem(hwnd, IDC_CHECK_UNOFFICIAL_BUS_CONFLICT), sub_enable); + // when unofficial properties is enabled or in ines 2.0 standard, Playchoice-10 in System groupbox is available + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_SYSTEM_PLAYCHOICE10), ines20 || sub_enable); + + ToggleUnofficialPrgRamPresent(hwnd, ines20, check, IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL_PRGRAM) == BST_CHECKED); + ToggleUnofficialExtraRegionCode(hwnd, ines20, check, IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL_EXTRA_REGION) == BST_CHECKED); + + // Playchoice-10 is not available in ines 1.0 and unofficial is not checked, switch back to normal + if (!ines20 && !check && IsDlgButtonChecked(hwnd, IDC_RADIO_SYSTEM_PLAYCHOICE10) == BST_CHECKED) + CheckRadioButton(hwnd, IDC_RADIO_SYSTEM_NORMAL, IDC_RADIO_SYSTEM_EXTEND, IDC_RADIO_SYSTEM_NORMAL); +} + +void ToggleUnofficialExtraRegionCode(HWND hwnd, bool ines20, bool unofficial_check, bool check) +{ + // The unofficial byte to determine whether multiple region is valid + + // Multiple in Region Groupbox + EnableWindow(GetDlgItem(hwnd, IDC_RADIO_REGION_DUAL), ines20 || unofficial_check && check); + + // Dual region is not avalable when in ines 1.0 and extra region in unofficial is not checked, switch it back to NTSC + if (!ines20 && (!unofficial_check || !check) && IsDlgButtonChecked(hwnd, IDC_RADIO_REGION_DUAL) == BST_CHECKED) + CheckRadioButton(hwnd, IDC_RADIO_REGION_NTSC, IDC_RADIO_REGION_DENDY, IDC_RADIO_REGION_NTSC); +} + +void ToggleUnofficialPrgRamPresent(HWND hwnd, bool ines20, bool unofficial_check, bool check) { + // The unofficial byte to determine wheter PRGRAM exists + // PRG RAM + bool enable = ines20 || !unofficial_check || check; + // When unofficial 10th byte was not set, the PRG RAM is defaultly enabled + EnableWindow(GetDlgItem(hwnd, IDC_PRGRAM_TEXT), enable); + EnableWindow(GetDlgItem(hwnd, IDC_PRGRAM_COMBO), enable); +} + +LRESULT CALLBACK HeaderEditorProc(HWND hDlg, UINT uMsg, WPARAM wP, LPARAM lP) +{ + + static iNES_HEADER* header; + + switch (uMsg) { + case WM_INITDIALOG: + { + header = (iNES_HEADER*)lP; + if (!header) + { + if (GameInfo) + DestroyWindow(hDlg); + else + EndDialog(hDlg, 0); + } else + InitHeaderEditDialog(hDlg, header); + } + break; + case WM_COMMAND: + switch (HIWORD(wP)) + { + case BN_CLICKED: + { + int id = LOWORD(wP); + switch (id) + { + case IDC_RADIO_VERSION_STANDARD: + ToggleINES20(hDlg, false); + break; + case IDC_RADIO_VERSION_INES20: + ToggleINES20(hDlg, true); + break; + case IDC_RADIO_SYSTEM_NORMAL: + case IDC_RADIO_SYSTEM_PLAYCHOICE10: + case IDC_RADIO_SYSTEM_EXTEND: + ToggleExtendSystemList(hDlg, IsDlgButtonChecked(hDlg, IDC_RADIO_SYSTEM_EXTEND) == BST_CHECKED); + case IDC_RADIO_SYSTEM_VS: + // Both ines 1.0 and 2.0 can trigger VS System, but only 2.0 enables the extra detailed properties + ToggleVSSystemGroup(hDlg, IsDlgButtonChecked(hDlg, IDC_RADIO_VERSION_INES20) == BST_CHECKED && IsDlgButtonChecked(hDlg, IDC_RADIO_SYSTEM_VS) == BST_CHECKED); + break; + case IDC_CHECK_UNOFFICIAL: + ToggleUnofficialPropertiesEnabled(hDlg, false, IsDlgButtonChecked(hDlg, IDC_CHECK_UNOFFICIAL) == BST_CHECKED); + break; + case IDC_CHECK_UNOFFICIAL_PRGRAM: + ToggleUnofficialPrgRamPresent(hDlg, false, true, IsDlgButtonChecked(hDlg, IDC_CHECK_UNOFFICIAL_PRGRAM) == BST_CHECKED); + break; + case IDC_CHECK_UNOFFICIAL_EXTRA_REGION: + ToggleUnofficialExtraRegionCode(hDlg, false, true, IsDlgButtonChecked(hDlg, IDC_CHECK_UNOFFICIAL_EXTRA_REGION) == BST_CHECKED); + break; + case IDC_RESTORE_BUTTON: + SetHeaderData(hDlg, header); + break; + case IDSAVE: + { + iNES_HEADER newHeader; + if (WriteHeaderData(hDlg, &newHeader)) + { + char name[2048]; + strcpy(name, LoadedRomFName); + if (ShowINESFileBox(hDlg, name, true)) + SaveINESFile(hDlg, name, &newHeader); + } + } + break; + case IDCLOSE: + goto wm_close; + } + } + } + break; + case WM_CLOSE: + case WM_QUIT: +wm_close: + if (GameInfo) + DestroyWindow(hDlg); + else + { + EndDialog(hDlg, 0); + LoadedRomFName[0] = 0; + } + break; + case WM_DESTROY: + hHeadEditor = NULL; + free(header); + break; + } + return false; +} + +void DoHeadEdit() +{ + if (hHeadEditor) + { + ShowWindow(hHeadEditor, SW_SHOWNORMAL); + SetForegroundWindow(hHeadEditor); + } + else + { + iNES_HEADER* header = (iNES_HEADER*)calloc(1, sizeof(iNES_HEADER)); + if (GameInfo) + { + if (LoadHeader(hAppWnd, LoadedRomFName, header)) + CreateDialogParam(fceu_hInstance, MAKEINTRESOURCE(IDD_EDIT_HEADER), hAppWnd, (DLGPROC)HeaderEditorProc, (LPARAM)header); + else + free(header); + } + else { + // temporarily borrow LoadedRomFName, when no game is loaded, it is unused. + LoadedRomFName[0] = 0; + if (ShowINESFileBox(hAppWnd, LoadedRomFName, false) && LoadHeader(hAppWnd, LoadedRomFName, header)) + DialogBoxParam(fceu_hInstance, MAKEINTRESOURCE(IDD_EDIT_HEADER), hAppWnd, (DLGPROC)HeaderEditorProc, (LPARAM)header); + else + free(header); + } + } +} + +void SetHeaderData(HWND hwnd, iNES_HEADER* header) { + + // Temporary buffers + char buf[256]; + + bool ines20 = (header->ROM_type2 & 0xC) == 8; + bool unofficial = false; + + // Check iNES 2.0 + CheckRadioButton(hwnd, IDC_RADIO_VERSION_STANDARD, IDC_RADIO_VERSION_INES20, ines20 ? IDC_RADIO_VERSION_INES20 : IDC_RADIO_VERSION_STANDARD); + + // Mapper# + int mapper = header->ROM_type >> 4 | header->ROM_type2 & 0xF0; + if (ines20) + mapper |= (header->ROM_type3 & 0xF0) << 4; + sprintf(buf, "%d ", mapper); + if (SendDlgItemMessage(hwnd, IDC_MAPPER_COMBO, CB_SELECTSTRING, 0, (LPARAM)buf) == CB_ERR) + SetDlgItemText(hwnd, IDC_MAPPER_COMBO, buf); + + // Sub Mapper + sprintf(buf, "%d", ines20 ? header->ROM_type3 >> 4 : 0); + SetDlgItemText(hwnd, IDC_SUBMAPPER_EDIT, buf); + + // PRG ROM + strcpy(buf, "N/A"); + int prg_rom = header->ROM_size; + if (ines20) { + if ((header->Upper_ROM_VROM_size & 0xF) == 0xF) + prg_rom = pow(2, header->ROM_size >> 2) * ((header->ROM_size & 3) * 2 + 1); + else { + prg_rom |= (header->Upper_ROM_VROM_size & 0xF) << 8; + prg_rom *= 1024 * 16; + } + } + else + prg_rom *= 1024 * 16; + + if (prg_rom < 1024 || prg_rom % 1024 != 0) + sprintf(buf, "%dB", prg_rom); + else + sprintf(buf, "%dKB", prg_rom / 1024); + + if (SendDlgItemMessage(hwnd, IDC_PRGROM_COMBO, CB_SELECTSTRING, 0, (LPARAM)buf) == CB_ERR) + SetDlgItemText(hwnd, IDC_PRGROM_COMBO, buf); + + // PRG RAM + strcpy(buf, "N/A"); + if (ines20) + { + int shift = header->RAM_size & 0xF; + if (shift) + { + int prg_ram = 64 << shift; + if (prg_ram >= 1024) + sprintf(buf, "%dKB", prg_ram / 1024); + else sprintf(buf, "%dB", prg_ram); + } + + } else + { + if (!(header->RAM_size & 0x10) && header->ROM_type3) + sprintf(buf, "%dKB", header->ROM_type3 ? 1 : header->ROM_type3 * 8); + } + if (SendDlgItemMessage(hwnd, IDC_PRGRAM_COMBO, CB_SELECTSTRING, 0, (LPARAM)buf) == CB_ERR) + SetDlgItemText(hwnd, IDC_PRGRAM_COMBO, buf); + + // PRG NVRAM + strcpy(buf, "N/A"); + if (ines20) + { + int shift = header->RAM_size >> 4; + if (shift) + { + int prg_nvram = 64 << shift; + if (prg_nvram >= 1024) + sprintf(buf, "%dKB", prg_nvram / 1024); + else sprintf(buf, "%dB", prg_nvram); + } + } else + CheckDlgButton(hwnd, IDC_CHECK_BATTERYNVRAM, header->ROM_type & 0x2 ? BST_CHECKED : BST_UNCHECKED); + + if (SendDlgItemMessage(hwnd, IDC_PRGNVRAM_COMBO, CB_SELECTSTRING, 0, (LPARAM)buf) == CB_ERR) + SetDlgItemText(hwnd, IDC_PRGNVRAM_COMBO, buf); + + + + // CHR ROM + strcpy(buf, "N/A"); + int chr_rom = header->VROM_size; + if (ines20) + { + if ((header->Upper_ROM_VROM_size & 0xF0) == 0xF0) + chr_rom = pow(2, header->VROM_size >> 2) * (((header->VROM_size & 3) * 2) + 1); + else + { + chr_rom |= (header->Upper_ROM_VROM_size & 0xF0) << 4; + chr_rom *= 8 * 1024; + } + } + else + chr_rom *= 8 * 1024; + + if (chr_rom < 1024 || chr_rom % 1024 != 0) + sprintf(buf, "%dB", chr_rom); + else + sprintf(buf, "%dKB", chr_rom / 1024); + if (SendDlgItemMessage(hwnd, IDC_CHRROM_COMBO, CB_SELECTSTRING, 0, (LPARAM)buf) == CB_ERR) + SetDlgItemText(hwnd, IDC_CHRROM_COMBO, buf); + + // CHR RAM + sprintf(buf, "N/A"); + if (ines20) + { + int shift = header->VRAM_size & 0xF; + if (shift) + { + int chr_ram = 64 << shift; + if (chr_ram >= 1024) + sprintf(buf, "%dKB", chr_ram / 1024); + else sprintf(buf, "%dB", chr_ram); + } + } + if (SendDlgItemMessage(hwnd, IDC_CHRRAM_COMBO, CB_SELECTSTRING, 0, (LPARAM)buf) == CB_ERR) + SetDlgItemText(hwnd, IDC_CHRRAM_COMBO, buf); + + // CHR NVRAM + sprintf(buf, "N/A"); + if (ines20) + { + int shift = header->VRAM_size >> 4; + if (shift) + { + int chr_nvram = 64 << shift; + if (chr_nvram >= 1024) + sprintf(buf, "%dKB", chr_nvram / 1024); + else sprintf(buf, "%dB", chr_nvram); + } + } + if (SendDlgItemMessage(hwnd, IDC_CHRNVRAM_COMBO, CB_SELECTSTRING, 0, (LPARAM)buf) == CB_ERR) + SetDlgItemText(hwnd, IDC_CHRNVRAM_COMBO, buf); + + // Mirroring + CheckRadioButton(hwnd, IDC_RADIO_MIRR_HORIZONTAL, IDC_RADIO_MIRR_4SCREEN, header->ROM_type & 8 ? IDC_RADIO_MIRR_4SCREEN : header->ROM_type & 1 ? IDC_RADIO_MIRR_VERTICAL : IDC_RADIO_MIRR_HORIZONTAL); + + // Region + if (ines20) + { + int region = header->TV_system & 3; + switch (region) { + case 0: + // NTSC + CheckRadioButton(hwnd, IDC_RADIO_REGION_NTSC, IDC_RADIO_REGION_DENDY, IDC_RADIO_REGION_NTSC); + break; + case 1: + // PAL + CheckRadioButton(hwnd, IDC_RADIO_REGION_NTSC, IDC_RADIO_REGION_DENDY, IDC_RADIO_REGION_PAL); + break; + case 2: + // Dual + CheckRadioButton(hwnd, IDC_RADIO_REGION_NTSC, IDC_RADIO_REGION_DENDY, IDC_RADIO_REGION_DUAL); + break; + case 3: + // Dendy + CheckRadioButton(hwnd, IDC_RADIO_REGION_NTSC, IDC_RADIO_REGION_DENDY, IDC_RADIO_REGION_DENDY); + } + } + else { + // Only the unofficial 10th byte has a dual region, we must check it first. + int region = header->RAM_size & 3; + if (region == 3 || region == 1) + { + // Check the unofficial checkmark and the region code + CheckRadioButton(hwnd, IDC_RADIO_REGION_NTSC, IDC_RADIO_REGION_DENDY, IDC_RADIO_REGION_DUAL); + unofficial = true; + } + else + // When the region in unofficial byte is inconsistent with the official byte, based on the official byte + CheckRadioButton(hwnd, IDC_RADIO_REGION_NTSC, IDC_RADIO_REGION_DENDY, header->Upper_ROM_VROM_size & 1 ? IDC_RADIO_REGION_PAL : IDC_RADIO_REGION_NTSC); + } + + // System + int system = header->ROM_type2 & 3; + switch (system) + { + default: + // Normal + case 0: + CheckRadioButton(hwnd, IDC_RADIO_SYSTEM_NORMAL, IDC_RADIO_SYSTEM_EXTEND, IDC_RADIO_SYSTEM_NORMAL); + break; + // VS. System + case 1: + CheckRadioButton(hwnd, IDC_RADIO_SYSTEM_NORMAL, IDC_RADIO_SYSTEM_EXTEND, IDC_RADIO_SYSTEM_VS); + break; + // PlayChoice-10 + case 2: + CheckRadioButton(hwnd, IDC_RADIO_SYSTEM_NORMAL, IDC_RADIO_SYSTEM_EXTEND, IDC_RADIO_SYSTEM_PLAYCHOICE10); + // PlayChoice-10 is an unofficial setting for ines 1.0 + unofficial = !ines20; + break; + // Extend + case 3: + // The 7th byte is different between ines 1.0 and 2.0, so we need to check it + if (ines20) CheckRadioButton(hwnd, IDC_RADIO_SYSTEM_NORMAL, IDC_RADIO_SYSTEM_EXTEND, IDC_RADIO_SYSTEM_EXTEND); + } + + // it's quite ambiguous to put them here, but it's better to have a default selection than leave the dropdown blank, because user might switch to ines 2.0 anytime + // Hardware type + int hardware = header->VS_hardware >> 4; + if (SendDlgItemMessage(hwnd, IDC_VS_SYSTEM_COMBO, CB_SETCURSEL, hardware, 0) == CB_ERR) + { + sprintf(buf, "$%X", hardware); + SetDlgItemText(hwnd, IDC_VS_SYSTEM_COMBO, buf); + } + // PPU type + int ppu = header->VS_hardware & 0xF; + if (SendDlgItemMessage(hwnd, IDC_VS_PPU_COMBO, CB_SETCURSEL, ppu, 0) == CB_ERR) + { + sprintf(buf, "$%X", ppu); + SetDlgItemText(hwnd, IDC_VS_SYSTEM_COMBO, buf); + } + // Extend Console + if (SendDlgItemMessage(hwnd, IDC_SYSTEM_EXTEND_COMBO, CB_SETCURSEL, ppu, 0) == CB_ERR) + { + sprintf(buf, "$%X", ppu); + SetDlgItemText(hwnd, IDC_VS_SYSTEM_COMBO, buf); + } + +// Input Device: + int input = header->reserved[1] & 0x1F; + if (SendDlgItemMessage(hwnd, IDC_INPUT_DEVICE_COMBO, CB_SETCURSEL, input, 0) == CB_ERR) + { + sprintf(buf, "$%X", input); + SetDlgItemText(hwnd, IDC_INPUT_DEVICE_COMBO, buf); + } + + // Miscellaneous ROM Area(s) + sprintf(buf, "%d", header->reserved[0] & 3); + SetDlgItemText(hwnd, IDC_MISCELLANEOUS_ROMS_EDIT, buf); + + // Trainer + CheckDlgButton(hwnd, IDC_CHECK_TRAINER, header->ROM_type & 4 ? BST_CHECKED : BST_UNCHECKED); + + // Unofficial Properties Checkmark + CheckDlgButton(hwnd, IDC_CHECK_UNOFFICIAL, unofficial ? BST_CHECKED : BST_UNCHECKED); + + // Switch the UI to the proper version + ToggleINES20(hwnd, ines20); +} + +bool WriteHeaderData(HWND hwnd, iNES_HEADER* header) +{ + // Temporary buffers + char buf[256]; + + iNES_HEADER _header; + memset(&_header, 0, sizeof(iNES_HEADER)); + + // Check iNES 2.0 + bool ines20 = IsDlgButtonChecked(hwnd, IDC_RADIO_VERSION_INES20) == BST_CHECKED; + // iNES 1.0 unofficial byte available + bool unofficial = !ines20 && IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL) == BST_CHECKED; + + // iNES 2.0 signature + if (ines20) + _header.ROM_type2 |= 8; + + // Mapper + int mapper; + if (!GetComboBoxListItemData(hwnd, IDC_MAPPER_COMBO, &mapper, buf)) + { + if (sscanf(buf, "%d", &mapper) < 1) + { + MessageBox(hwnd, "The mapper# you have entered is invalid. Please enter a decimal number or select an item from the dropdown list.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_MAPPER_COMBO)); + return false; + } + } + printf("mapper: %d\n", mapper); + + if (mapper < 4096) + { + if (mapper < 256) + { + _header.ROM_type |= (mapper & 0xF) << 4; + _header.ROM_type2 |= (mapper & 0xF0); + } else + { + if (ines20) + _header.ROM_type3 |= mapper >> 8; + else + { + sprintf(buf, "Mapper# should be less than %d in iNES %d.0 format.", 256, 1); + MessageBox(hwnd, buf, "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_MAPPER_COMBO)); + return false; + } + } + } + else { + sprintf(buf, "Mapper# should be less than %d in iNES %d.0 format.", 4096, 2); + MessageBox(hwnd, buf, "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_MAPPER_COMBO)); + return false; + } + + // Sub mapper + if (ines20) { + GetDlgItemText(hwnd, IDC_SUBMAPPER_EDIT, buf, 256); + int submapper; + if (sscanf(buf, "%d", &submapper) > 0) + { + if (submapper < 16) + _header.ROM_type3 |= submapper << 4; + else + { + MessageBox(hwnd, "The sub mapper# should less than 16 in iNES 2.0 format.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_SUBMAPPER_EDIT)); + return false; + } + } else + { + MessageBox(hwnd, "The sub mapper# you have entered is invalid. Please enter a decimal number.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_SUBMAPPER_EDIT)); + return false; + } + } + + // PRG ROM + int prg_rom; + if (GetComboBoxByteSize(hwnd, IDC_PRGROM_COMBO, &prg_rom) == 0) + { + // max value which a iNES 2.0 header can hold + if (prg_rom < 16 * 1024 * 0xEFF) + { + // try to fit the irregular value with the alternative way + if (prg_rom % (16 * 1024) != 0) + { + if (ines20) + { + // try to calculate the nearest value + bool fit = false; + int result = 0x7FFFFFFF; + for (int multiplier = 0; multiplier < 4; ++multiplier) + { + for (int exponent = 0; exponent < 64; ++exponent) + { + int new_result = pow(2, exponent) * (multiplier * 2 + 1); + if (new_result == prg_rom) + { + _header.Upper_ROM_VROM_size |= 0xF; + _header.ROM_size |= exponent << 2; + _header.ROM_size |= multiplier & 3; + fit = true; + break; + } + if (new_result > prg_rom && result > new_result) + result = new_result; + } + if (fit) break; + } + + if (!fit) + { + int result10 = (prg_rom / 16 / 1024 + 1) * 16 * 1024; + if (result10 < result) + result = result10; + char buf2[64]; + if (result % 1024 != 0) + sprintf(buf2, "%dB", result); + else + sprintf(buf2, "%dKB", result / 1024); + sprintf(buf, "PRG ROM size you entered is invalid in iNES 2.0, do you want to set to its nearest value %s?", buf2); + if (MessageBox(hwnd, buf, "Error", MB_YESNO | MB_ICONERROR) == IDYES) + SetDlgItemText(hwnd, IDC_PRGROM_COMBO, buf2); + SetFocus(GetDlgItem(hwnd, IDC_PRGROM_COMBO)); + return false; + } + } + else { + // ines 1.0 can't handle this kind of value + MessageBox(hwnd, "PRG ROM size must be multiple of 16KB in iNES 1.0", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGROM_COMBO)); + return false; + } + } + // it's multiple size of 16KB + else { + // it can be fitted in iNES 1.0 + if (prg_rom < 16 * 1024 * 0xFF) + _header.ROM_size |= prg_rom / 16 / 1024 & 0xFF; + else + { + if (ines20) + _header.Upper_ROM_VROM_size |= prg_rom / 16 / 1024 >> 8 & 0xF; + else { + MessageBox(hwnd, "PRG ROM size exceeded the limit of iNES 1.0 (4080KB).", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGROM_COMBO)); + return false; + } + } + } + } + // A too large size + else { + MessageBox(hwnd, "PRG ROM size you entered is too large to fit into a cartridge, by the way this is an NES emulator, not for XBOX360 or PlayStation2.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGROM_COMBO)); + return false; + } + } else + return false; + + // PRG RAM + if (ines20 || IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL) == BST_UNCHECKED || IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL_PRGRAM) == BST_CHECKED) + { + int prg_ram; + if (GetComboBoxByteSize(hwnd, IDC_PRGRAM_COMBO, &prg_ram) == 0) + { + if (ines20) + { + if (prg_ram < 64 << 0xF) + { + if (prg_ram % 64 == 0) + _header.RAM_size |= (int)log2(prg_ram / 64); + else + { + MessageBox(hwnd, "Invalid PRG RAM size", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGRAM_COMBO)); + return false; + } + } + else { + MessageBox(hwnd, "PRG RAM size exceeded the limit (4096KB)", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGRAM_COMBO)); + return false; + } + } + else { + if (prg_ram < 8 * 1024 * 255) + { + if (prg_ram % (8 * 1024) == 0) + _header.ROM_type3 |= prg_ram / 8 / 1024; + else { + MessageBox(hwnd, "PRG RAM size must be multiple of 8KB in iNES 1.0", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGRAM_COMBO)); + return false; + } + } + else { + MessageBox(hwnd, "PRG RAM size exceeded the limit (2040KB)", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGRAM_COMBO)); + return false; + } + } + } + else + return false; + } + + + // PRG NVRAM + if (ines20) + { + // only iNES 2.0 has value for PRG VMRAM + int prg_nvram; + if (GetComboBoxByteSize(hwnd, IDC_PRGNVRAM_COMBO, &prg_nvram) == 0) + { + if (prg_nvram < 64 << 0xF) + { + if (prg_nvram % 64 == 0) + _header.RAM_size |= (int)log2(prg_nvram / 64) << 4; + else + { + MessageBox(hwnd, "Invalid PRG NVRAM size", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGNVRAM_COMBO)); + return false; + } + } + else { + MessageBox(hwnd, "PRG NVRAM size exceeded the limit (4096KB)", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGNVRAM_COMBO)); + return false; + } + + if (prg_nvram != 0) + _header.ROM_type |= 2; + + } + else + return false; + } + else { + // iNES 1.0 is much simpler, it has only 1 bit for check + if (IsDlgButtonChecked(hwnd, IDC_CHECK_BATTERYNVRAM) == BST_CHECKED) + _header.ROM_type |= 2; + } + + // CHR ROM + int chr_rom; + if (GetComboBoxByteSize(hwnd, IDC_CHRROM_COMBO, &chr_rom) == 0) + { + // max value which a iNES 2.0 header can hold + if (chr_rom < 8 * 1024 * 0xEFF) + { + // try to fit the irregular value with the alternative way + if (chr_rom % (8 * 1024) != 0) + { + if (ines20) + { + // try to calculate the nearest value + bool fit = false; + int result = 0; + for (int multiplier = 0; multiplier < 4; ++multiplier) + { + for (int exponent = 0; exponent < 64; ++exponent) + { + int new_result = pow(2, exponent) * (multiplier * 2 + 1); + if (new_result == chr_rom) + { + _header.Upper_ROM_VROM_size |= 0xF0; + _header.VROM_size |= exponent << 2; + _header.VROM_size |= multiplier & 3; + fit = true; + break; + } + if (result > new_result && new_result > chr_rom) + result = new_result; + } + if (fit) break; + } + + if (!fit) + { + int result10 = (chr_rom / 1024 / 8 + 1) * 8 * 1024; + if (result10 < result) + result = result10; + char buf2[64]; + if (result % 1024 != 0) + sprintf(buf2, "%dB", result); + else + sprintf(buf2, "%dKB", result / 1024); + sprintf(buf, "CHR ROM size you entered is invalid in iNES 2.0, do you want to set to its nearest value %s?", buf2); + if (MessageBox(hwnd, buf, "Error", MB_YESNO | MB_ICONERROR) == IDYES) + SetDlgItemText(hwnd, IDC_CHRROM_COMBO, buf2); + SetFocus(GetDlgItem(hwnd, IDC_CHRROM_COMBO)); + return false; + } + } + else { + // ines 1.0 can't handle this kind of value + MessageBox(hwnd, "CHR ROM size must be multiple of 8KB in iNES 1.0", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_CHRROM_COMBO)); + return false; + } + } + // it's multiple size of 8KB + else { + // it can be fitted in iNES 1.0 + if (chr_rom < 8 * 1024 * 0xFF) + _header.VROM_size |= chr_rom / 8 / 1024 & 0xFF; + else + { + if (ines20) + _header.Upper_ROM_VROM_size |= chr_rom / 8 / 1024 >> 4 & 0xF0; + else + { + MessageBox(hwnd, "CHR ROM size exceeded the limit of iNES 1.0 (2040KB).", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_PRGROM_COMBO)); + return false; + } + } + } + } + // A too large size + else { + MessageBox(hwnd, "CHR ROM size you entered cannot be fitted in iNES 2.0.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_CHRROM_COMBO)); + return false; + } + } + else + return false; + + // CHR RAM + if (ines20) + { + // only iNES 2.0 has value for CHR RAM + int chr_ram; + if (GetComboBoxByteSize(hwnd, IDC_CHRRAM_COMBO, &chr_ram) == 0) + { + if (chr_ram < 64 << 0xF) + { + if (chr_ram % 64 == 0) + _header.VRAM_size |= (int)log2(chr_ram / 64); + else + { + MessageBox(hwnd, "Invalid CHR RAM size", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_CHRRAM_COMBO)); + return false; + } + } + else { + MessageBox(hwnd, "CHR RAM size exceeded the limit (4096KB)", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_CHRRAM_COMBO)); + return false; + } + } + else + return false; + } + + // CHR NVRAM + if (ines20) + { + // only iNES 2.0 has value for CHR NVRAM + int chr_nvram; + if (GetComboBoxByteSize(hwnd, IDC_CHRNVRAM_COMBO, &chr_nvram) == 0) + { + if (chr_nvram < 64 << 0xF) + { + if (chr_nvram % 64 == 0) + _header.VRAM_size |= (int)log2(chr_nvram / 64) << 4; + else { + MessageBox(hwnd, "Invalid CHR NVRAM size", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_CHRNVRAM_COMBO)); + return false; + } + } + else { + MessageBox(hwnd, "CHR NVRAM size exceeded the limit (4096KB)", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_CHRNVRAM_COMBO)); + return false; + } + + if (chr_nvram != 0) + _header.ROM_type |= 2; + } + else + return false; + } + + // Mirroring + if (IsDlgButtonChecked(hwnd, IDC_RADIO_MIRR_4SCREEN) == BST_CHECKED) + _header.ROM_type |= 8; + else if (IsDlgButtonChecked(hwnd, IDC_RADIO_MIRR_VERTICAL) == BST_CHECKED) + _header.ROM_type |= 1; + + // Region + if (IsDlgButtonChecked(hwnd, IDC_RADIO_REGION_PAL) == BST_CHECKED) + { + if (ines20) + _header.TV_system |= 1; + else { + _header.Upper_ROM_VROM_size |= 1; + if (IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL) == BST_CHECKED && IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL_EXTRA_REGION) == BST_CHECKED) + _header.RAM_size |= 2; + } + } + else if (IsDlgButtonChecked(hwnd, IDC_RADIO_REGION_DUAL) == BST_CHECKED) + { + if (ines20) + _header.TV_system |= 2; + else + _header.RAM_size |= 3; + } + else if (IsDlgButtonChecked(hwnd, IDC_RADIO_REGION_DENDY) == BST_CHECKED) + _header.TV_system |= 3; + + + // System + if (IsDlgButtonChecked(hwnd, IDC_RADIO_SYSTEM_VS) == BST_CHECKED) + { + _header.ROM_type2 |= 1; + if (ines20) { + // VS System type + int system = SendDlgItemMessage(hwnd, IDC_VS_SYSTEM_COMBO, CB_GETCURSEL, 0, 0); + if (system != CB_ERR) + _header.VS_hardware |= (system & 0xF) << 4; + // VS PPU type + int ppu = SendDlgItemMessage(hwnd, IDC_VS_PPU_COMBO, CB_GETCURSEL, 0, 0); + if (ppu != CB_ERR) + _header.VS_hardware |= ppu & 0xF; + } + } + else if (IsDlgButtonChecked(hwnd, IDC_RADIO_SYSTEM_PLAYCHOICE10) == BST_CHECKED) + _header.ROM_type2 |= 2; + else if (IsDlgButtonChecked(hwnd, IDC_RADIO_SYSTEM_EXTEND) == BST_CHECKED) + { + // Extend System + _header.ROM_type2 |= 3; + int extend = SendDlgItemMessage(hwnd, IDC_SYSTEM_EXTEND_COMBO, CB_GETCURSEL, 0, 0); + if (extend != CB_ERR) + _header.VS_hardware |= extend & 0x3F; + } + + // Input device + if (ines20) + { + int input = SendDlgItemMessage(hwnd, IDC_INPUT_DEVICE_COMBO, CB_GETCURSEL, 0, 0); + if (input != CB_ERR) + _header.reserved[1] |= input & 0x3F; + } + + // Miscellanous ROM(s) + if (ines20) + { + GetDlgItemText(hwnd, IDC_MISCELLANEOUS_ROMS_EDIT, buf, 256); + int misc_roms = 0; + if (sscanf(buf, "%d", &misc_roms) < 1) + { + MessageBox(hwnd, "Invalid miscellanous ROM(s) count. If you don't know what value should be, we recommend to set it to 0.", "ERROR", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_MISCELLANEOUS_ROMS_TEXT)); + return false; + } + if (misc_roms > 3) + { + MessageBox(hwnd, "Miscellanous ROM(s) count has exceeded the limit of iNES 2.0 (3)", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_MISCELLANEOUS_ROMS_TEXT)); + return false; + } + _header.reserved[0] |= misc_roms & 3; + } + + // iNES 1.0 unofficial properties + if (!ines20 && IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL) == BST_CHECKED) + { + // bus conflict configure in unoffcial bit of iNES 1.0 + if (IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL_BUS_CONFLICT) == BST_CHECKED) + _header.RAM_size |= 0x20; + // PRG RAM non exist bit flag + if (IsDlgButtonChecked(hwnd, IDC_CHECK_UNOFFICIAL_PRGRAM) == BST_UNCHECKED) + _header.RAM_size |= 0x10; + } + + // Trainer + if (IsDlgButtonChecked(hwnd, IDC_CHECK_TRAINER) == BST_CHECKED) + _header.ROM_type |= 4; + + extern BMAPPINGLocal bmap[]; + bool fceux_support = false; + for (int i = 0; bmap[i].init; ++i) + { + if (mapper == bmap[i].number) + { + fceux_support = true; + break; + } + } + + if (!fceux_support) + { + sprintf(buf, "FCEUX doesn't support iNES Mapper# %d, this is not a serious problem, but the ROM will not be run in FCEUX properly.\nDo you want to continue?", mapper); + if (MessageBox(hwnd, buf, "Error", MB_YESNO | MB_ICONWARNING) == IDNO) + { + SetFocus(GetDlgItem(hwnd, IDC_MAPPER_COMBO)); + return false; + } + } + + memcpy(_header.ID, "NES\x1A", 4); + + if (header) + memcpy(header, &_header, sizeof(iNES_HEADER)); + +#ifdef _DEBUG + printf("header: "); + printf("%02X ", _header.ID[0]); + printf("%02X ", _header.ID[1]); + printf("%02X ", _header.ID[2]); + printf("%02X ", _header.ID[3]); + printf("%02X ", _header.ROM_size); + printf("%02X ", _header.VROM_size); + printf("%02X ", _header.ROM_type); + printf("%02X ", _header.ROM_type2); + printf("%02X ", _header.ROM_type3); + printf("%02X ", _header.Upper_ROM_VROM_size); + printf("%02X ", _header.RAM_size); + printf("%02X ", _header.VRAM_size); + printf("%02X ", _header.TV_system); + printf("%02X ", _header.VS_hardware); + printf("%02X ", _header.reserved[0]); + printf("%02X\n", _header.reserved[1]); +#endif + + return true; +} + +int GetComboBoxByteSize(HWND hwnd, UINT id, int* value) +{ + char* name = ""; + char buf[256]; + + enum errors { + OK = 0, + FORMAT_ERR, + MINUS_ERR, + UNIT_ERR + }; + + int err = errors::OK; + + switch (id) + { + case IDC_PRGROM_COMBO: name = "PRG ROM"; break; + case IDC_PRGRAM_COMBO: name = "PRG RAM"; break; + case IDC_PRGNVRAM_COMBO: name = "PRG NVRAM"; break; + case IDC_CHRROM_COMBO: name = "CHR ROM"; break; + case IDC_CHRRAM_COMBO: name = "CHR RAM"; break; + case IDC_CHRNVRAM_COMBO: name = "CHR NVRAM"; break; + } + + if (!GetComboBoxListItemData(hwnd, id, value, buf, true)) + { + char buf2[4]; + if (sscanf(buf, "%d%[KMB]", value, buf2) < 2 || !strcmp(buf2, "")) + err = errors::FORMAT_ERR; + else + { + if (*value < 0) + err = errors::MINUS_ERR; + else if (!strcmp(buf2, "KB") || !strcmp(buf2, "K")) + *value *= 1024; + else if (!strcmp(buf2, "MB") || !strcmp(buf2, "M")) + *value *= 1024 * 1024; + else if (strcmp(buf2, "B")) + err = errors::UNIT_ERR; + } + } + + switch (err) + { + case errors::FORMAT_ERR: + sprintf(buf, "%s size you entered is invalid, it should be positive decimal integer followed with unit, e.g. 1024B, 128KB, 4MB", name); + break; + case errors::UNIT_ERR: + sprintf(buf, "The unit of %s size you entered is invalid, it must be B, KB or MB", name); + break; + case errors::MINUS_ERR: + sprintf(buf, "Negative value of %s is not supported by iNES header.", name); + break; + } + + if (err) + { + MessageBox(hwnd, buf, "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, id)); + } + + return err; +} + +bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exact) +{ + bool success = true; + *value = SendDlgItemMessage(hwnd, id, CB_GETCURSEL, 0, 0); + if (*value != CB_ERR) + *value = SendDlgItemMessage(hwnd, id, CB_GETITEMDATA, *value, 0); + else { + GetDlgItemText(hwnd, id, buf, 256); + if (exact) + *value = SendDlgItemMessage(hwnd, id, CB_FINDSTRINGEXACT, 0, (LPARAM)buf); + else + *value = SendDlgItemMessage(hwnd, id, CB_SELECTSTRING, 0, (LPARAM)buf); + if (*value != CB_ERR) + *value = SendDlgItemMessage(hwnd, id, CB_GETITEMDATA, *value, 0); + else + { + SetDlgItemText(hwnd, id, buf); + success = false; + } + } + + return success; +} + +// Warning: when in save mode, the content of buf might be overwritten by the save filename which user changed. +bool ShowINESFileBox(HWND parent, char* buf, bool save) +{ + char name[2048] = { 0 }; + if (save) + strncpy(name, buf, strcspn(buf, "|")); + + OPENFILENAME ofDlg; + memset(&ofDlg, 0, sizeof(OPENFILENAME)); + ofDlg.lStructSize = sizeof(OPENFILENAME); + ofDlg.lpstrTitle = save ? "Save NES file" : "Open NES file"; + ofDlg.lpstrFilter = "NES ROM file(*.nes)\0*.nes\0All files(*.*)\0*.*\0\0"; + ofDlg.hInstance = fceu_hInstance; + ofDlg.hwndOwner = parent; + ofDlg.nMaxFile = sizeof(name); + ofDlg.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; + ofDlg.lpstrInitialDir = save ? name : FCEU_GetPath(FCEUMKF_ROMS).c_str(); + + char* sub_name = strrchr(buf, '|'); + if (sub_name) + ofDlg.lpstrFile = sub_name + 1; + else + ofDlg.lpstrFile = name; + + + if (save ? GetSaveFileName(&ofDlg) : GetOpenFileName(&ofDlg)) + { + strcpy(buf, name); + return true; + } + + return false; +} + +bool SaveINESFile(HWND hwnd, char* path, iNES_HEADER* header) +{ + char buf[4096]; + const char* ext[] = { "nes", 0 }; + + // Source file + FCEUFILE* source = FCEU_fopen(LoadedRomFName, NULL, "rb", 0, -1, ext); + if (!source) + { + sprintf(buf, "Opening source file %s failed.", LoadedRomFName); + MessageBox(hwnd, buf, "iNES Header Editor", MB_OK | MB_ICONERROR); + return false; + } + + // Destination file + FILE* target = FCEUD_UTF8fopen(path, "wb"); + if (!target) + { + sprintf(buf, "Creating target file %s failed.", path); + MessageBox(hwnd, buf, "iNES Header Editor", MB_OK | MB_ICONERROR); + return false; + } + + memset(buf, 0, sizeof(buf)); + + // Write the header first + fwrite(header, 1, sizeof(iNES_HEADER), target); + // Skip the original header + FCEU_fseek(source, sizeof(iNES_HEADER), SEEK_SET); + int len; + while (len = FCEU_fread(buf, 1, sizeof(buf), source)) + fwrite(buf, len, 1, target); + + FCEU_fclose(source); + fclose(target); + + return true; + +} \ No newline at end of file diff --git a/src/drivers/win/header_editor.h b/src/drivers/win/header_editor.h new file mode 100644 index 00000000..39c644aa --- /dev/null +++ b/src/drivers/win/header_editor.h @@ -0,0 +1,23 @@ +#ifndef HEADEREDITOR_H +#define HEADEREDITOR_H + +extern HWND hHeadEditor; + +struct iNES_HEADER; +HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header); +bool ShowINESFileBox(HWND parent, char* buf, bool save); +void ToggleINES20(HWND hwnd, bool ines20); +void ToggleExtendSystemList(HWND hwnd, bool enable); +void ToggleVSSystemGroup(HWND hwnd, bool enable); +void ToggleUnofficialPropertiesEnabled(HWND hwnd, bool ines20, bool check); +void ToggleUnofficialExtraRegionCode(HWND hwnd, bool ines20, bool unofficial_check, bool check); +void ToggleUnofficialPrgRamPresent(HWND hwnd, bool ines20, bool unofficial_check, bool check); +void SetHeaderData(HWND hwnd, iNES_HEADER* header); +bool WriteHeaderData(HWND hwnd, iNES_HEADER* header); +int GetComboBoxByteSize(HWND hwnd, UINT id, int* value); +bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exact = false); +bool SaveINESFile(HWND hwnd, char* path, iNES_HEADER* header); +LRESULT CALLBACK HeaderEditorProc(HWND hDlg, UINT uMsg, WPARAM wP, LPARAM lP); +void DoHeadEdit(); + +#endif diff --git a/src/drivers/win/main.cpp b/src/drivers/win/main.cpp index 1ba2fdf9..6a1adfa4 100644 --- a/src/drivers/win/main.cpp +++ b/src/drivers/win/main.cpp @@ -398,6 +398,9 @@ int BlockingCheck() extern HWND logwin; if(!handled && logwin && IsChild(logwin, msg.hwnd)) handled = IsDialogMessage(logwin, &msg); + extern HWND hHeadEditor; + if (!handled && hHeadEditor && IsChild(hHeadEditor, msg.hwnd)) + handled = IsDialogMessage(hHeadEditor, &msg); /* //adelikat - Currently no accel keys are used in the main window. Uncomment this block to activate them. if(!handled) diff --git a/src/drivers/win/memview.cpp b/src/drivers/win/memview.cpp index fedd28b1..74b71089 100644 --- a/src/drivers/win/memview.cpp +++ b/src/drivers/win/memview.cpp @@ -316,7 +316,7 @@ static int GetFileData(uint32 offset){ } static int WriteFileData(uint32 addr,int data){ - if (addr < 16)MessageBox(hMemView,"Sorry", "Go bug bbit if you really want to edit the header.", MB_OK); + if (addr < 16) MessageBox(hMemView, "Use iNES Header Editor to edit the header.", "Sorry", MB_OK | MB_ICONASTERISK); if((addr >= 16) && (addr < PRGsize[0]+16)) *(uint8 *)(GetNesPRGPointer(addr-16)) = data; if((addr >= PRGsize[0]+16) && (addr < CHRsize[0]+PRGsize[0]+16)) *(uint8 *)(GetNesCHRPointer(addr-16-PRGsize[0])) = data; diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index b513395e..dddd31cc 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -13,6 +13,7 @@ ///////////////////////////////////////////////////////////////////////////// // Neutral resources + #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #pragma code_page(1252) @@ -240,6 +241,7 @@ BEGIN MENUITEM "&Trace Logger...", MENU_TRACELOGGER MENUITEM "&Code/Data Logger...", MENU_CDLOGGER MENUITEM "&Game Genie Decoder/Encoder...", MENU_GAMEGENIEDECODER + MENUITEM "&iNES Header Editor...", MENU_INESHEADEREDITOR END POPUP "&Help" BEGIN @@ -850,7 +852,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTIO CAPTION "GUI Configuration" FONT 8, "Tahoma", 0, 0, 0x0 BEGIN - DEFPUSHBUTTON "Close",BUTTON_CLOSE,65,136,56,14 + DEFPUSHBUTTON "Close",BTN_CLOSE,65,136,56,14 CONTROL "Load ""File Open"" dialog when FCEUX starts.",CB_LOAD_FILE_OPEN, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,168,12 CONTROL "Automatically hide menu on game load.",CB_AUTO_HIDE_MENU, @@ -1826,10 +1828,14 @@ BEGIN CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,68,67,10 CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,83,67,10 GROUPBOX "Greenzone saving options",IDC_STATIC,13,98,97,72 - CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES,"Button",BS_AUTORADIOBUTTON,23,109,77,10 - CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME,"Button",BS_AUTORADIOBUTTON,23,124,77,10 - CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES,"Button",BS_AUTORADIOBUTTON,23,139,77,10 - CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE,"Button",BS_AUTORADIOBUTTON,23,154,77,10 + CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, + "Button",BS_AUTORADIOBUTTON,23,109,77,10 + CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, + "Button",BS_AUTORADIOBUTTON,23,124,77,10 + CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, + "Button",BS_AUTORADIOBUTTON,23,139,77,10 + CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, + "Button",BS_AUTORADIOBUTTON,23,154,77,10 END ASSEMBLER DIALOGEX 0, 0, 202, 135 @@ -2221,10 +2227,14 @@ BEGIN CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10 GROUPBOX "File contents",IDC_STATIC,105,4,111,177 GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 - CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES,"Button",BS_AUTORADIOBUTTON,122,117,77,10 - CONTROL " every 16th frame", IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME,"Button",BS_AUTORADIOBUTTON,122,131,77,10 - CONTROL " marked frames", IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES,"Button",BS_AUTORADIOBUTTON,122,145,77,10 - CONTROL " don't save", IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE,"Button",BS_AUTORADIOBUTTON,122,159,77,10 + CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, + "Button",BS_AUTORADIOBUTTON,122,117,77,10 + CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, + "Button",BS_AUTORADIOBUTTON,122,131,77,10 + CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, + "Button",BS_AUTORADIOBUTTON,122,145,77,10 + CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, + "Button",BS_AUTORADIOBUTTON,122,159,77,10 CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10 CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10 LTEXT "every",IDC_AUTOSAVE_PERIOD_EVERY_TEXT,14,32,21,8 @@ -2259,6 +2269,73 @@ BEGIN CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,311,214 END +IDD_EDIT_HEADER DIALOGEX 0, 0, 305, 257 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "iNES Header Editor" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "iNES Header",IDC_INESHEADER_GROUP,7,3,291,231,WS_DISABLED + GROUPBOX "Version",IDC_VERSION_GROUP,14,13,93,27,WS_DISABLED + CONTROL "Standard",IDC_RADIO_VERSION_STANDARD,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,20,25,41,10 + CONTROL "iNES 2.0",IDC_RADIO_VERSION_INES20,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,64,25,40,10 + GROUPBOX "Mapper",IDC_MAPPER_GROUP,112,13,179,27,WS_DISABLED + LTEXT "#:",IDC_MAPPER_TEXT,118,25,9,8,WS_DISABLED + COMBOBOX IDC_MAPPER_COMBO,130,22,112,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "Sub#:",IDC_SUBMAPPER_TEXT,246,25,21,8,WS_DISABLED + EDITTEXT IDC_SUBMAPPER_EDIT,268,21,15,14,ES_AUTOHSCROLL | WS_DISABLED + GROUPBOX "PRG",IDC_PRG_GROUP,14,42,277,27,WS_DISABLED + LTEXT "PRG ROM:",IDC_PRGROM_TEXT,20,53,34,8,WS_DISABLED + COMBOBOX IDC_PRGROM_COMBO,56,51,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "PRG RAM:",IDC_PRGRAM_TEXT,111,53,34,8,WS_DISABLED + COMBOBOX IDC_PRGRAM_COMBO,146,51,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "Battery-backed NVRAM",IDC_CHECK_BATTERYNVRAM,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,197,53,86,10 + LTEXT "PRG NVRAM:",IDC_PRGNVRAM_TEXT,197,53,42,8,WS_DISABLED + COMBOBOX IDC_PRGNVRAM_COMBO,242,51,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + GROUPBOX "CHR",IDC_CHR_GROUP,14,71,277,27,WS_DISABLED + LTEXT "CHR ROM:",IDC_CHRROM_TEXT,20,82,35,8,WS_DISABLED + COMBOBOX IDC_CHRROM_COMBO,56,80,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "CHR RAM:",IDC_CHRRAM_TEXT,111,82,34,8,WS_DISABLED + COMBOBOX IDC_CHRRAM_COMBO,146,80,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "CHR NVRAM:",IDC_CHRNVRAM_TEXT,197,82,43,8,WS_DISABLED + COMBOBOX IDC_CHRNVRAM_COMBO,242,80,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Mirroring",IDC_MIRRORING_GROUP,14,102,59,46,WS_DISABLED + CONTROL "Horizontal",IDC_RADIO_MIRR_HORIZONTAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,19,112,48,10 + CONTROL "Vertical",IDC_RADIO_MIRR_VERTICAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,19,123,39,10 + CONTROL "Four-screen",IDC_RADIO_MIRR_4SCREEN,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,19,134,51,10 + CONTROL "Trainer",IDC_CHECK_TRAINER,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,14,152,55,10 + GROUPBOX "Region",IDC_REGION_GROUP,78,102,40,58,WS_DISABLED + CONTROL "NTSC",IDC_RADIO_REGION_NTSC,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,83,112,29,10 + CONTROL "PAL",IDC_RADIO_REGION_PAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,123,28,10 + CONTROL "Dual",IDC_RADIO_REGION_DUAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,146,30,10 + CONTROL "Dendy",IDC_RADIO_REGION_DENDY,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,134,33,10 + GROUPBOX "System",IDC_SYSTEM_GROUP,123,102,168,109,WS_DISABLED + CONTROL "Normal",IDC_RADIO_SYSTEM_NORMAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,129,114,34,10 + CONTROL "VS.",IDC_RADIO_SYSTEM_VS,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,166,114,21,10 + CONTROL "Playchoice-10",IDC_RADIO_SYSTEM_PLAYCHOICE10,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,192,114,56,10 + CONTROL "Extend",IDC_RADIO_SYSTEM_EXTEND,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,251,114,35,10 + GROUPBOX "Extend System",IDC_EXTEND_SYSTEM_GROUP,127,176,160,29,WS_DISABLED + LTEXT "Console:",IDC_EXTEND_SYSTEM_TEXT,133,189,29,8,WS_DISABLED + COMBOBOX IDC_SYSTEM_EXTEND_COMBO,165,186,115,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + GROUPBOX "VS. System",IDC_VS_SYSTEM_GROUP,127,126,160,46,WS_DISABLED + LTEXT "Hardware:",IDC_VS_SYSTEM_TEXT,134,138,35,8,WS_DISABLED + COMBOBOX IDC_VS_SYSTEM_COMBO,172,136,108,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "PPU:",IDC_VS_PPU_TEXT,134,155,16,8,WS_DISABLED + COMBOBOX IDC_VS_PPU_COMBO,154,154,126,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "iNES 1.0 Unofficial Properties",IDC_CHECK_UNOFFICIAL, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,14,164,103,10 + GROUPBOX "iNES 1.0 Unofficial Properties",IDC_UNOFFICIAL_GROUP,13,176,104,35,WS_DISABLED + CONTROL "Dual region",IDC_CHECK_UNOFFICIAL_EXTRA_REGION,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,186,48,10 + CONTROL "PRG RAM exists",IDC_CHECK_UNOFFICIAL_PRGRAM,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,70,188,43,17 + CONTROL "Bus conflict",IDC_CHECK_UNOFFICIAL_BUS_CONFLICT,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,198,49,10 + LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,101,218,44,8,WS_DISABLED + COMBOBOX IDC_INPUT_DEVICE_COMBO,147,216,143,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "Misc. ROM(s)",IDC_MISCELLANEOUS_ROMS_TEXT,29,218,48,8,WS_DISABLED + EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | WS_DISABLED + PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,7,236,44,14,WS_DISABLED + PUSHBUTTON "Save as...",IDSAVE,208,236,44,14,WS_DISABLED + DEFPUSHBUTTON "Close",IDCLOSE,254,236,44,14 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -2473,6 +2550,14 @@ BEGIN TOPMARGIN, 7 BOTTOMMARGIN, 243 END + + IDD_EDIT_HEADER, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 298 + TOPMARGIN, 7 + BOTTOMMARGIN, 250 + END END #endif // APSTUDIO_INVOKED @@ -2512,6 +2597,11 @@ BEGIN 0 END +IDD_EDIT_HEADER AFX_DIALOG_LAYOUT +BEGIN + 0 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -2683,16 +2773,6 @@ IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp" IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" -#endif // Neutral resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.S) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// @@ -2717,7 +2797,7 @@ END #endif // APSTUDIO_INVOKED -#endif // English (U.S) resources +#endif // Neutral resources ///////////////////////////////////////////////////////////////////////////// diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index b93118b9..11c89755 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated file -// for res.rc +// Microsoft Visual C++ generated include file. +// Used by res.rc // #define CLOSE_BUTTON 1 #define BUTTON_CLOSE 1 @@ -365,6 +365,7 @@ #define MENU_MV_VIEW_ROM 303 #define IDC_BTN_CHEAT_UPD 303 #define IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL 303 +#define IDD_EDIT_HEADER 303 #define MENU_ENABLE_AUTOSAVE 304 #define IDC_LABEL_ROMUSED 304 #define IDC_BTN_CHEAT_RESET 304 @@ -468,26 +469,86 @@ #define IDC_NTVIEW_SHOW_ATTRIBUTES 1009 #define IDC_NTVIEW_HIDE_PALETTES 1010 #define MW_ADDR03 1010 +#define IDSAVE 1012 #define MW_ADDR04 1013 +#define IDC_CHECK1 1013 +#define IDC_RESTORE_BUTTON 1014 #define MW_ADDR05 1016 +#define IDC_PRGROM_COMBO 1018 #define MW_ADDR06 1019 +#define IDC_CHRROM_COMBO 1019 +#define IDC_RADIO_MIRR_HORIZONTAL 1020 +#define IDC_RADIO_MIRR_VERTICAL 1021 #define MW_ADDR07 1022 +#define IDC_RADIO_MIRR_4SCREEN 1022 +#define IDC_CHECK_TRAINER 1024 #define MW_ADDR08 1025 +#define IDC_PRGRAM_COMBO 1025 +#define IDC_MAPPER_COMBO 1026 +#define IDC_SUBMAPPER_EDIT 1027 #define MW_ADDR09 1028 +#define IDC_CHRRAM_COMBO 1028 +#define IDC_PRGNVRAM_COMBO 1029 +#define IDC_CHRNVRAM_COMBO 1030 #define MW_ADDR10 1031 +#define IDC_RADIO_REGION_NTSC 1031 +#define IDC_RADIO_REGION_PAL 1032 +#define IDC_RADIO_REGION_DUAL 1033 #define MW_ADDR11 1034 +#define IDC_INPUT_DEVICE_COMBO 1036 #define MW_ADDR12 1037 +#define IDC_RADIO_REGION_DENDY 1037 +#define IDC_RADIO_SYSTEM_NORMAL 1038 +#define IDC_RADIO_SYSTEM_VS 1039 #define MW_ADDR13 1040 +#define IDC_RADIO_SYSTEM_PLAYCHOICE10 1040 +#define IDC_RADIO_SYSTEM_EXTEND 1041 #define MW_ADDR14 1043 +#define IDC_SYSTEM_EXTEND_COMBO 1043 #define MW_ADDR15 1046 +#define IDC_VS_SYSTEM_COMBO 1046 +#define IDC_VS_PPU_COMBO 1047 #define MW_ADDR16 1049 +#define IDC_MAPPER_TEXT 1049 +#define IDC_SUBMAPPER_TEXT 1050 +#define IDC_PRGROM_TEXT 1051 #define MW_ADDR17 1052 +#define IDC_CHRROM_TEXT 1053 #define MW_ADDR18 1055 +#define IDC_PRGRAM_TEXT 1055 +#define IDC_CHRRAM_TEXT 1057 #define MW_ADDR19 1058 +#define IDC_PRGNVRAM_TEXT 1059 +#define IDC_CHRNVRAM_TEXT 1060 #define MW_ADDR20 1061 +#define IDC_INESHEADER_GROUP 1063 #define MW_ADDR21 1064 +#define IDC_MIRRORING_GROUP 1064 +#define IDC_REGION_GROUP 1065 +#define IDC_SYSTEM_GROUP 1066 #define MW_ADDR22 1067 +#define IDC_VS_SYSTEM_GROUP 1067 +#define IDC_VS_SYSTEM_TEXT 1068 +#define IDC_VS_PPU_TEXT 1069 #define MW_ADDR23 1070 +#define IDC_RADIO_VERSION_STANDARD 1071 +#define IDC_RADIO_VERSION_INES20 1073 +#define IDC_VERSION_GROUP 1074 +#define IDC_MAPPER_GROUP 1075 +#define IDC_CHECK_BATTERYNVRAM 1076 +#define IDC_INPUT_DEVICE_TEXT 1077 +#define IDC_PRG_GROUP 1078 +#define IDC_CHR_GROUP 1079 +#define IDC_UNOFFICIAL_GROUP 1081 +#define IDC_CHECK_UNOFFICIAL_PRGRAM 1082 +#define IDC_CHECK_UNOFFICIAL_EXTRA_REGION 1083 +#define IDC_CHECK_UNOFFICIAL_BUS_CONFLICT 1084 +#define IDC_CHECK_UNOFFICIAL 1085 +#define IDC_MISCELLANEOUS_ROMS_TEXT 1086 +#define IDC_MISCELLANEOUS_ROMS_EDIT 1087 +#define IDC_EXTEND_SYSTEM_GROUP 1089 +#define IDC_EXTEND_SYSTEM_TEXT 1090 +#define IDC_BUTTON1 1094 #define BTN_ALLOW_LRUD 1117 #define BTN_PRESET_SET1 1119 #define BTN_PRESET_SET2 1120 @@ -704,6 +765,7 @@ #define IDC_CHEAT_VAL_LABEL 1314 #define IDC_CHEAT_COM_LABEL 1315 #define IDC_CHEAT_LABEL_KNOWN 1316 +#define MENU_INESHEADEREDITOR 40001 #define MENU_NETWORK 40040 #define MENU_PALETTE 40041 #define MENU_SOUND 40042 @@ -997,9 +1059,9 @@ // #ifdef APSTUDIO_INVOKED #ifndef APSTUDIO_READONLY_SYMBOLS -#define _APS_NEXT_RESOURCE_VALUE 303 -#define _APS_NEXT_COMMAND_VALUE 40000 -#define _APS_NEXT_CONTROL_VALUE 1011 +#define _APS_NEXT_RESOURCE_VALUE 305 +#define _APS_NEXT_COMMAND_VALUE 40002 +#define _APS_NEXT_CONTROL_VALUE 1095 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index ddfa0d37..bc68a776 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -50,6 +50,7 @@ #include "memview.h" #include "tracer.h" #include "cdlogger.h" +#include "header_editor.h" #include "throttle.h" #include "monitor.h" #include "keyboard.h" @@ -2312,7 +2313,9 @@ LRESULT FAR PASCAL AppWndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam) case MENU_GAMEGENIEDECODER: DoGGConv(); break; - + case MENU_INESHEADEREDITOR: + DoHeadEdit(); + break; //Help Menu-------------------------------------------------------------- case MENU_HELP: OpenHelpWindow(); diff --git a/src/fceu.cpp b/src/fceu.cpp index 48e4cf35..4a09a056 100644 --- a/src/fceu.cpp +++ b/src/fceu.cpp @@ -432,9 +432,7 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen strcat(fullname, "|"); strcat(fullname, fp->filename.c_str()); } else - { strcpy(fullname, name); - } // reset loaded game BEFORE it's loading. ResetGameLoaded(); @@ -469,103 +467,94 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen //try to load each different format bool FCEUXLoad(const char *name, FCEUFILE * fp); - /*if(FCEUXLoad(name,fp)) - goto endlseq;*/ - if (iNESLoad(fullname, fp, OverwriteVidMode)) - goto endlseq; - if (NSFLoad(fullname, fp)) - goto endlseq; - if (UNIFLoad(fullname, fp)) - goto endlseq; - if (FDSLoad(fullname, fp)) - goto endlseq; - if (!silent) - FCEU_PrintError("An error occurred while loading the file."); - FCEU_fclose(fp); - - delete GameInfo; - GameInfo = 0; - - return 0; - - endlseq: - - FCEU_fclose(fp); + if (iNESLoad(fullname, fp, OverwriteVidMode) || + NSFLoad(fullname, fp) || + UNIFLoad(fullname, fp) || + FDSLoad(fullname, fp)) + { #ifdef WIN32 -// ################################## Start of SP CODE ########################### - extern char LoadedRomFName[2048]; - extern int loadDebugDataFailed; + // ################################## Start of SP CODE ########################### + extern char LoadedRomFName[2048]; + extern int loadDebugDataFailed; - if ((loadDebugDataFailed = loadPreferences(mass_replace(LoadedRomFName, "|", ".").c_str()))) - if (!silent) - FCEU_printf("Couldn't load debugging data.\n"); + if ((loadDebugDataFailed = loadPreferences(mass_replace(LoadedRomFName, "|", ".").c_str()))) + if (!silent) + FCEU_printf("Couldn't load debugging data.\n"); -// ################################## End of SP CODE ########################### + // ################################## End of SP CODE ########################### #endif - if (OverwriteVidMode) - FCEU_ResetVidSys(); + if (OverwriteVidMode) + FCEU_ResetVidSys(); - if (GameInfo->type != GIT_NSF) - { - if (FSettings.GameGenie) + if (GameInfo->type != GIT_NSF && + FSettings.GameGenie && + FCEU_OpenGenie()) { - if (FCEU_OpenGenie()) - { - FCEUI_SetGameGenie(false); + FCEUI_SetGameGenie(false); #ifdef WIN32 - genie = 0; + genie = 0; #endif - } } - } - PowerNES(); - if (GameInfo->type != GIT_NSF) - FCEU_LoadGamePalette(); + PowerNES(); - FCEU_ResetPalette(); - FCEU_ResetMessages(); // Save state, status messages, etc. + if (GameInfo->type != GIT_NSF) + FCEU_LoadGamePalette(); - if (!lastpal && PAL) { - FCEU_DispMessage("PAL mode set", 0); - FCEUI_printf("PAL mode set"); - } else if (!lastdendy && dendy) { - // this won't happen, since we don't autodetect dendy, but maybe someday we will? - FCEU_DispMessage("Dendy mode set", 0); - FCEUI_printf("Dendy mode set"); - } else if ((lastpal || lastdendy) && !(PAL || dendy)) { - FCEU_DispMessage("NTSC mode set", 0); - FCEUI_printf("NTSC mode set"); - } + FCEU_ResetPalette(); + FCEU_ResetMessages(); // Save state, status messages, etc. - if (GameInfo->type != GIT_NSF) - FCEU_LoadGameCheats(0); + if (!lastpal && PAL) { + FCEU_DispMessage("PAL mode set", 0); + FCEUI_printf("PAL mode set"); + } + else if (!lastdendy && dendy) { + // this won't happen, since we don't autodetect dendy, but maybe someday we will? + FCEU_DispMessage("Dendy mode set", 0); + FCEUI_printf("Dendy mode set"); + } + else if ((lastpal || lastdendy) && !(PAL || dendy)) { + FCEU_DispMessage("NTSC mode set", 0); + FCEUI_printf("NTSC mode set"); + } - if (AutoResumePlay) - { - // load "-resume" savestate - if (FCEUSS_Load(FCEU_MakeFName(FCEUMKF_RESUMESTATE, 0, 0).c_str(), false)) - FCEU_DispMessage("Old play session resumed.", 0); - } + if (GameInfo->type != GIT_NSF) + FCEU_LoadGameCheats(0); - ResetScreenshotsCounter(); + if (AutoResumePlay) + { + // load "-resume" savestate + if (FCEUSS_Load(FCEU_MakeFName(FCEUMKF_RESUMESTATE, 0, 0).c_str(), false)) + FCEU_DispMessage("Old play session resumed.", 0); + } + + ResetScreenshotsCounter(); #if defined (WIN32) || defined (WIN64) - DoDebuggerDataReload(); // Reloads data without reopening window - CDLoggerROMChanged(); - if (hMemView) UpdateColorTable(); - if (hCheat) - { - UpdateCheatsAdded(); - UpdateCheatRelatedWindow(); - } - if (FrozenAddressCount) - FCEU_DispMessage("%d cheats active", 0, FrozenAddressCount); + DoDebuggerDataReload(); // Reloads data without reopening window + CDLoggerROMChanged(); + if (hMemView) UpdateColorTable(); + if (hCheat) + { + UpdateCheatsAdded(); + UpdateCheatRelatedWindow(); + } + if (FrozenAddressCount) + FCEU_DispMessage("%d cheats active", 0, FrozenAddressCount); #endif + } + else { + if (!silent) + FCEU_PrintError("An error occurred while loading the file."); + delete GameInfo; + GameInfo = 0; + } + + FCEU_fclose(fp); return GameInfo; } @@ -1377,7 +1366,7 @@ uint8 FCEU_ReadRomByte(uint32 i) { void FCEU_WriteRomByte(uint32 i, uint8 value) { if (i < 16) #ifdef WIN32 - MessageBox(hMemView,"Sorry", "You can't edit the ROM header.", MB_OK); + MessageBox(hMemView, "Sorry", "You can't edit the ROM header.", MB_OK); #else printf("Sorry, you can't edit the ROM header.\n"); #endif diff --git a/src/file.cpp b/src/file.cpp index a75ca968..9860d87e 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -261,9 +261,9 @@ FCEUFILE * FCEU_fopen(const char *path, const char *ipsfn, char *mode, char *ext FILE *ipsfile=0; FCEUFILE *fceufp=0; - bool read = (std::string)mode == "rb"; - bool write = (std::string)mode == "wb"; - if((read&&write) || (!read&&!write)) + bool read = !strcmp(mode, "rb"); + bool write = !strcmp(mode, "wb"); + if(read && write || !read && !write) { FCEU_PrintError("invalid file open mode specified (only wb and rb are supported)"); return 0; diff --git a/src/ines.cpp b/src/ines.cpp index 41727e74..1443b23f 100644 --- a/src/ines.cpp +++ b/src/ines.cpp @@ -63,7 +63,7 @@ static int iNES_Init(int num); static int MapperNo = 0; -static int iNES2 = 0; +int iNES2 = 0; static DECLFR(TrainerRead) { return(trainerpoo[A & 0x1FF]); @@ -443,13 +443,8 @@ static int not_power2[] = { 53, 198, 228 }; -typedef struct { - char *name; - int32 number; - void (*init)(CartInfo *); -} BMAPPINGLocal; -static BMAPPINGLocal bmap[] = { +BMAPPINGLocal bmap[] = { {"NROM", 0, NROM_Init}, {"MMC1", 1, Mapper1_Init}, {"UNROM", 2, UNROM_Init}, @@ -729,12 +724,9 @@ static BMAPPINGLocal bmap[] = { int iNESLoad(const char *name, FCEUFILE *fp, int OverwriteVidMode) { struct md5_context md5; - if (FCEU_fread(&head, 1, 16, fp) != 16) + if (FCEU_fread(&head, 1, 16, fp) != 16 || memcmp(&head, "NES\x1A", 4)) return 0; - - if (memcmp(&head, "NES\x1a", 4)) - return 0; - + head.cleanup(); memset(&iNESCart, 0, sizeof(iNESCart)); diff --git a/src/ines.h b/src/ines.h index 55ab87ad..9cdb8bc2 100644 --- a/src/ines.h +++ b/src/ines.h @@ -51,40 +51,40 @@ extern TMasterRomInfoParams MasterRomInfoParams; //mbg merge 7/19/06 changed to c++ decl format struct iNES_HEADER { - char ID[4]; /*NES^Z*/ - uint8 ROM_size; - uint8 VROM_size; - uint8 ROM_type; - uint8 ROM_type2; - uint8 ROM_type3; - uint8 Upper_ROM_VROM_size; - uint8 RAM_size; - uint8 VRAM_size; - uint8 TV_system; - uint8 VS_hardware; - uint8 reserved[2]; + char ID[4]; /*NES^Z*/ // 0-3 + uint8 ROM_size; // 4 + uint8 VROM_size; // 5 + uint8 ROM_type; // 6 + uint8 ROM_type2; // 7 + uint8 ROM_type3; // 8 + uint8 Upper_ROM_VROM_size; // 9 + uint8 RAM_size; // 10 + uint8 VRAM_size; // 11 + uint8 TV_system; // 12 + uint8 VS_hardware; // 13 + uint8 reserved[2]; // 14, 15 void cleanup() { - if(!memcmp((char *)(this)+0x7,"DiskDude",8)) - { - memset((char *)(this)+0x7,0,0x9); - } + if(!memcmp((char*)(this) + 0x7, "DiskDude", 8) || !memcmp((char*)(this) + 0x7, "demiforce", 9)) + memset((char*)(this) + 0x7, 0, 0x9); - if(!memcmp((char *)(this)+0x7,"demiforce",9)) + if(!memcmp((char*)(this) + 0xA, "Ni03", 4)) { - memset((char *)(this)+0x7,0,0x9); - } - - if(!memcmp((char *)(this)+0xA,"Ni03",4)) - { - if(!memcmp((char *)(this)+0x7,"Dis",3)) - memset((char *)(this)+0x7,0,0x9); + if(!memcmp((char*)(this) + 0x7, "Dis", 3)) + memset((char*)(this) + 0x7, 0, 0x9); else - memset((char *)(this)+0xA,0,0x6); + memset((char*)(this) + 0xA, 0, 0x6); } } }; + +typedef struct { + char *name; + int32 number; + void(*init)(CartInfo *); +} BMAPPINGLocal; + extern struct iNES_HEADER head; //for mappers usage void NSFVRC6_Init(void); diff --git a/vc/vc14_fceux.vcxproj b/vc/vc14_fceux.vcxproj index 7547ed0e..2260e32e 100644 --- a/vc/vc14_fceux.vcxproj +++ b/vc/vc14_fceux.vcxproj @@ -557,6 +557,7 @@ + @@ -1012,6 +1013,7 @@ + diff --git a/vc/vc14_fceux.vcxproj.filters b/vc/vc14_fceux.vcxproj.filters index 89f2c465..221a661b 100644 --- a/vc/vc14_fceux.vcxproj.filters +++ b/vc/vc14_fceux.vcxproj.filters @@ -1093,6 +1093,9 @@ boards + + drivers\win + @@ -1599,6 +1602,9 @@ input + + drivers\win + From d87970f4adb65d237b57c42a5a2241fafefc4713 Mon Sep 17 00:00:00 2001 From: owomomo Date: Mon, 10 Jun 2019 17:25:37 +0800 Subject: [PATCH 02/21] ... --- src/file.cpp | 6 +++--- src/ines.cpp | 16 ++++------------ 2 files changed, 7 insertions(+), 15 deletions(-) diff --git a/src/file.cpp b/src/file.cpp index a75ca968..9860d87e 100644 --- a/src/file.cpp +++ b/src/file.cpp @@ -261,9 +261,9 @@ FCEUFILE * FCEU_fopen(const char *path, const char *ipsfn, char *mode, char *ext FILE *ipsfile=0; FCEUFILE *fceufp=0; - bool read = (std::string)mode == "rb"; - bool write = (std::string)mode == "wb"; - if((read&&write) || (!read&&!write)) + bool read = !strcmp(mode, "rb"); + bool write = !strcmp(mode, "wb"); + if(read && write || !read && !write) { FCEU_PrintError("invalid file open mode specified (only wb and rb are supported)"); return 0; diff --git a/src/ines.cpp b/src/ines.cpp index 41727e74..1443b23f 100644 --- a/src/ines.cpp +++ b/src/ines.cpp @@ -63,7 +63,7 @@ static int iNES_Init(int num); static int MapperNo = 0; -static int iNES2 = 0; +int iNES2 = 0; static DECLFR(TrainerRead) { return(trainerpoo[A & 0x1FF]); @@ -443,13 +443,8 @@ static int not_power2[] = { 53, 198, 228 }; -typedef struct { - char *name; - int32 number; - void (*init)(CartInfo *); -} BMAPPINGLocal; -static BMAPPINGLocal bmap[] = { +BMAPPINGLocal bmap[] = { {"NROM", 0, NROM_Init}, {"MMC1", 1, Mapper1_Init}, {"UNROM", 2, UNROM_Init}, @@ -729,12 +724,9 @@ static BMAPPINGLocal bmap[] = { int iNESLoad(const char *name, FCEUFILE *fp, int OverwriteVidMode) { struct md5_context md5; - if (FCEU_fread(&head, 1, 16, fp) != 16) + if (FCEU_fread(&head, 1, 16, fp) != 16 || memcmp(&head, "NES\x1A", 4)) return 0; - - if (memcmp(&head, "NES\x1a", 4)) - return 0; - + head.cleanup(); memset(&iNESCart, 0, sizeof(iNESCart)); From 0c9e7659d903bb5a171e36c8a39ff7a285b9ac23 Mon Sep 17 00:00:00 2001 From: owomomo Date: Mon, 10 Jun 2019 20:59:36 +0800 Subject: [PATCH 03/21] Detail --- src/cart.h | 4 ++++ src/drivers/win/cheat.cpp | 4 ++++ src/ines.h | 5 +++++ 3 files changed, 13 insertions(+) diff --git a/src/cart.h b/src/cart.h index 249e0c56..312b2366 100644 --- a/src/cart.h +++ b/src/cart.h @@ -1,3 +1,6 @@ +#ifndef CART_H +#define CART_H + typedef struct { // Set by mapper/board code: void (*Power)(void); @@ -100,3 +103,4 @@ void FCEU_GeniePower(void); bool FCEU_OpenGenie(void); void FCEU_CloseGenie(void); void FCEU_KillGenie(void); +#endif \ No newline at end of file diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index d8e8d121..52a846a9 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -1001,6 +1001,10 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) GGConv_wndy = 0; SetWindowPos(hwndDlg, 0, GGConv_wndx, GGConv_wndy, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_CODE, EM_SETLIMITTEXT, 8, 0); + SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_ADDR, EM_SETLIMITTEXT, 5, 0); + SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_COMP, EM_SETLIMITTEXT, 2, 0); + SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_VAL, EM_SETLIMITTEXT, 2, 0); + break; case WM_CLOSE: case WM_QUIT: diff --git a/src/ines.h b/src/ines.h index 55ab87ad..caa095fd 100644 --- a/src/ines.h +++ b/src/ines.h @@ -274,4 +274,9 @@ void Mapper252_Init(CartInfo *); void Mapper253_Init(CartInfo *); void Mapper254_Init(CartInfo *); +typedef struct { + char *name; + int32 number; + void (*init)(CartInfo *); +} BMAPPINGLocal; #endif From f3d1b270b5406174edd766f6e4a0d9b8e2a3fb22 Mon Sep 17 00:00:00 2001 From: owomomo Date: Tue, 11 Jun 2019 15:14:53 +0800 Subject: [PATCH 04/21] Add an export button to cheat dialog. --- src/drivers/win/cheat.cpp | 62 +++++++++++++++++++-- src/drivers/win/res.rc | 110 ++++++++++++++++++------------------- src/drivers/win/resource.h | 3 +- 3 files changed, 114 insertions(+), 61 deletions(-) diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index 52a846a9..21bea3ef 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -634,19 +634,32 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l case IDC_BTN_CHEAT_ADDFROMFILE: { OPENFILENAME ofn; - memset(&ofn, 0, sizeof(ofn)); - ofn.lStructSize = sizeof(ofn); + memset(&ofn, 0, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); ofn.hwndOwner = hwndDlg; ofn.hInstance = fceu_hInstance; - ofn.lpstrTitle = "Open Cheats file"; + ofn.lpstrTitle = "Open cheats file"; const char filter[] = "Cheat files (*.cht)\0*.cht\0All Files (*.*)\0*.*\0\0"; ofn.lpstrFilter = filter; char nameo[2048] = { 0 }; + /* + I gave up setting the default filename for import cheat dialog, since the filename display contains a bug. + if (GameInfo) + { + char* filename; + if ((filename = strrchr(GameInfo->filename, '\\')) || (filename = strrchr(GameInfo->filename, '/'))) + strcpy(nameo, filename + 1); + else + strcpy(nameo, GameInfo->filename); + strcpy(strrchr(nameo, '.'), ".cht"); + } + */ ofn.lpstrFile = nameo; ofn.nMaxFile = 2048; + ofn.lpstrDefExt = "cht"; ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST; - std::string initdir = FCEU_GetPath(FCEUMKF_CHEAT); + std::string initdir = FCEU_GetPath(FCEUMKF_CHEAT) + PSS; ofn.lpstrInitialDir = initdir.c_str(); if (GetOpenFileName(&ofn)) @@ -662,6 +675,45 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l } } break; + case IDC_BTN_CHEAT_EXPORTTOFILE: + { + OPENFILENAME ofn; + memset(&ofn, 0, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hInstance = fceu_hInstance; + ofn.lpstrTitle = "Save cheats file"; + const char filter[] = "Cheat files (*.cht)\0*.cht\0All Files (*.*)\0*.*\0\0"; + ofn.lpstrFilter = filter; + + char nameo[2048] = { 0 }; + if (GameInfo) + { + char* filename; + if ((filename = strrchr(GameInfo->filename, '\\')) || (filename = strrchr(GameInfo->filename, '/'))) + strcpy(nameo, filename + 1); + else + strcpy(nameo, GameInfo->filename); + strcpy(strrchr(nameo, '.'), ".cht"); + } + ofn.lpstrFile = nameo; + ofn.nMaxFile = 2048; + ofn.lpstrDefExt = "cht"; + ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST; + std::string initdir = FCEU_GetPath(FCEUMKF_CHEAT) + PSS; + ofn.lpstrInitialDir = initdir.c_str(); + + if (GetSaveFileName(&ofn)) + { + FILE* file = FCEUD_UTF8fopen(nameo, "wb"); + if (file) + { + savecheats = 1; + FCEU_FlushGameCheats(file, 0); + fclose(file); + } + } + } + break; case IDC_BTN_CHEAT_RESET: FCEUI_CheatSearchBegin(); ShowResults(hwndDlg); @@ -1001,7 +1053,7 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) GGConv_wndy = 0; SetWindowPos(hwndDlg, 0, GGConv_wndx, GGConv_wndy, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_CODE, EM_SETLIMITTEXT, 8, 0); - SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_ADDR, EM_SETLIMITTEXT, 5, 0); + SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_ADDR, EM_SETLIMITTEXT, 4, 0); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_COMP, EM_SETLIMITTEXT, 2, 0); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_VAL, EM_SETLIMITTEXT, 2, 0); diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index b513395e..b8a2d514 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -13,6 +13,7 @@ ///////////////////////////////////////////////////////////////////////////// // Neutral resources + #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #pragma code_page(1252) @@ -1826,10 +1827,14 @@ BEGIN CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,68,67,10 CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,83,67,10 GROUPBOX "Greenzone saving options",IDC_STATIC,13,98,97,72 - CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES,"Button",BS_AUTORADIOBUTTON,23,109,77,10 - CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME,"Button",BS_AUTORADIOBUTTON,23,124,77,10 - CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES,"Button",BS_AUTORADIOBUTTON,23,139,77,10 - CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE,"Button",BS_AUTORADIOBUTTON,23,154,77,10 + CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, + "Button",BS_AUTORADIOBUTTON,23,109,77,10 + CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, + "Button",BS_AUTORADIOBUTTON,23,124,77,10 + CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, + "Button",BS_AUTORADIOBUTTON,23,139,77,10 + CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, + "Button",BS_AUTORADIOBUTTON,23,154,77,10 END ASSEMBLER DIALOGEX 0, 0, 202, 135 @@ -1972,47 +1977,48 @@ BEGIN LTEXT "New Selection Name:",-1,5,240,68,8 END -CHEATCONSOLE DIALOGEX 0, 0, 386, 217 +CHEATCONSOLE DIALOGEX 0, 0, 387, 218 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Cheat Search" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN GROUPBOX "Active Cheats",IDC_GROUPBOX_CHEATLIST,5,2,169,209,WS_TABSTOP - GROUPBOX "Cheat Search",IDC_GROUPBOX_CHEATSEARCH,179,2,201,209,WS_TABSTOP + GROUPBOX "Cheat Search",IDC_GROUPBOX_CHEATSEARCH,180,2,201,198,WS_TABSTOP CONTROL "",IDC_LIST_CHEATS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,11,11,157,133 - LTEXT "Name:",IDC_STATIC,12,149,22,10 - LTEXT "Value:",IDC_CHEAT_VAL_LABEL,73,163,22,8 - LTEXT "Compare:",IDC_CHEAT_COM_LABEL,117,163,34,8 - EDITTEXT IDC_CHEAT_NAME,37,147,131,12,ES_AUTOHSCROLL | ES_WANTRETURN - EDITTEXT IDC_CHEAT_ADDR,44,161,25,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_CHEAT_VAL,97,161,16,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_CHEAT_COM,152,161,16,12,ES_UPPERCASE | ES_WANTRETURN - DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,9,192,36,16 - PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,45,192,36,16 - PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,81,192,36,16 - PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,191,12,55,15 - PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,191,32,55,15 - LTEXT "0x",IDC_CHEAT_LABEL_KNOWN,216,51,9,8 - EDITTEXT IDC_CHEAT_VAL_KNOWN,227,49,18,12,ES_UPPERCASE - GROUPBOX "Previous Compare",IDC_GROUP_PREV_COM,184,63,69,132 - PUSHBUTTON "Equal",IDC_BTN_CHEAT_EQ,191,75,55,15,WS_GROUP - PUSHBUTTON "Not Equal",IDC_BTN_CHEAT_NE,191,96,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_NE_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,114,22,10 - EDITTEXT IDC_CHEAT_VAL_NE_BY,227,113,18,12,ES_UPPERCASE | ES_WANTRETURN - PUSHBUTTON "Greater Than",IDC_BTN_CHEAT_GT,191,129,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_GT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,147,22,10 - EDITTEXT IDC_CHEAT_VAL_GT_BY,227,146,18,12,ES_UPPERCASE | ES_WANTRETURN - PUSHBUTTON "Less Than",IDC_BTN_CHEAT_LT,191,162,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_LT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,180,22,10 - EDITTEXT IDC_CHEAT_VAL_LT_BY,227,179,18,12,ES_UPPERCASE | ES_WANTRETURN - GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,257,8,117,187,WS_TABSTOP - CONTROL "",IDC_CHEAT_LIST_POSSIBILITIES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,263,18,106,172 + LTEXT "Name:", IDC_STATIC, 12, 149, 22, 10 + EDITTEXT IDC_CHEAT_NAME,37,147,131,12,ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "Address:", IDC_CHEAT_ADDRESS_LABEL, 12, 163, 30, 8 + EDITTEXT IDC_CHEAT_ADDR,44,161,25,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Value:", IDC_CHEAT_VAL_LABEL, 73, 163, 22, 8 + EDITTEXT IDC_CHEAT_VAL,97,161,16,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Compare:", IDC_CHEAT_COM_LABEL, 117, 163, 34, 8 + EDITTEXT IDC_CHEAT_COM,152,161,16,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Cheat code / Game Genie:", IDC_CHEAT_CODE_GG_LABEL, 11, 177, 87, 8 + EDITTEXT IDC_CHEAT_TEXT, 105, 175, 63, 12, ES_UPPERCASE | ES_AUTOHSCROLL + DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,7,192,30,16 + PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,37,192,30,16 + PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,67,192,30,16 + PUSHBUTTON "Import...", IDC_BTN_CHEAT_ADDFROMFILE, 100, 192, 36, 16 + PUSHBUTTON "Export...", IDC_BTN_CHEAT_EXPORTTOFILE, 136, 192, 36, 16 + PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,192,12,55,15 + PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,192,32,55,15 + LTEXT "0x",IDC_CHEAT_LABEL_KNOWN,217,51,9,8 + EDITTEXT IDC_CHEAT_VAL_KNOWN,228,49,18,12,ES_UPPERCASE + GROUPBOX "Previous Compare",IDC_GROUP_PREV_COM,185,63,69,132 + PUSHBUTTON "Equal",IDC_BTN_CHEAT_EQ,192,75,55,15,WS_GROUP + PUSHBUTTON "Not Equal",IDC_BTN_CHEAT_NE,192,96,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_NE_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,114,22,10 + EDITTEXT IDC_CHEAT_VAL_NE_BY,228,113,18,12,ES_UPPERCASE | ES_WANTRETURN + PUSHBUTTON "Greater Than",IDC_BTN_CHEAT_GT,192,129,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_GT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,147,22,10 + EDITTEXT IDC_CHEAT_VAL_GT_BY,228,146,18,12,ES_UPPERCASE | ES_WANTRETURN + PUSHBUTTON "Less Than",IDC_BTN_CHEAT_LT,192,162,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_LT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,180,22,10 + EDITTEXT IDC_CHEAT_VAL_LT_BY,228,179,18,12,ES_UPPERCASE | ES_WANTRETURN + GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,258,8,117,187,WS_TABSTOP + CONTROL "",IDC_CHEAT_LIST_POSSIBILITIES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,264,18,106,172 CONTROL " Pause emulation when this window is active",IDC_CHEAT_PAUSEWHENACTIVE, - "Button",BS_AUTOCHECKBOX,185,198,157,10 - PUSHBUTTON "Import...",IDC_BTN_CHEAT_ADDFROMFILE,126,192,43,16 - EDITTEXT IDC_CHEAT_TEXT,105,175,63,12,ES_UPPERCASE | ES_AUTOHSCROLL - LTEXT "Address:",IDC_CHEAT_ADDRESS_LABEL,12,163,30,8 - LTEXT "Cheat code / Game Genie:",IDC_CHEAT_CODE_GG_LABEL,12,177,87,8 + "Button",BS_AUTOCHECKBOX,180,202,157,10 END IDD_LUA DIALOGEX 0, 0, 270, 150 @@ -2221,10 +2227,14 @@ BEGIN CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10 GROUPBOX "File contents",IDC_STATIC,105,4,111,177 GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 - CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES,"Button",BS_AUTORADIOBUTTON,122,117,77,10 - CONTROL " every 16th frame", IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME,"Button",BS_AUTORADIOBUTTON,122,131,77,10 - CONTROL " marked frames", IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES,"Button",BS_AUTORADIOBUTTON,122,145,77,10 - CONTROL " don't save", IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE,"Button",BS_AUTORADIOBUTTON,122,159,77,10 + CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, + "Button",BS_AUTORADIOBUTTON,122,117,77,10 + CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, + "Button",BS_AUTORADIOBUTTON,122,131,77,10 + CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, + "Button",BS_AUTORADIOBUTTON,122,145,77,10 + CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, + "Button",BS_AUTORADIOBUTTON,122,159,77,10 CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10 CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10 LTEXT "every",IDC_AUTOSAVE_PERIOD_EVERY_TEXT,14,32,21,8 @@ -2432,8 +2442,8 @@ BEGIN "CHEATCONSOLE", DIALOG BEGIN - RIGHTMARGIN, 385 - BOTTOMMARGIN, 216 + RIGHTMARGIN, 386 + BOTTOMMARGIN, 217 END "VIDEOCONFIG", DIALOG @@ -2683,16 +2693,6 @@ IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp" IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" -#endif // Neutral resources -///////////////////////////////////////////////////////////////////////////// - - -///////////////////////////////////////////////////////////////////////////// -// English (U.S) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// @@ -2717,7 +2717,7 @@ END #endif // APSTUDIO_INVOKED -#endif // English (U.S) resources +#endif // Neutral resources ///////////////////////////////////////////////////////////////////////////// diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index b93118b9..a48bd088 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -468,6 +468,7 @@ #define IDC_NTVIEW_SHOW_ATTRIBUTES 1009 #define IDC_NTVIEW_HIDE_PALETTES 1010 #define MW_ADDR03 1010 +#define IDC_BTN_CHEAT_EXPORTTOFILE 1011 #define MW_ADDR04 1013 #define MW_ADDR05 1016 #define MW_ADDR06 1019 @@ -999,7 +1000,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 303 #define _APS_NEXT_COMMAND_VALUE 40000 -#define _APS_NEXT_CONTROL_VALUE 1011 +#define _APS_NEXT_CONTROL_VALUE 1012 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif From 5b1805b3e4e79303b69fc555f78ddc0962b1a783 Mon Sep 17 00:00:00 2001 From: owomomo Date: Wed, 12 Jun 2019 00:18:48 +0800 Subject: [PATCH 05/21] Detail --- src/drivers/win/header_editor.cpp | 281 ++++++++++++++++++++++-------- src/drivers/win/header_editor.h | 4 +- src/drivers/win/main.cpp | 8 +- src/drivers/win/main.h | 4 +- src/drivers/win/res.rc | 36 ++-- src/ines.h | 6 - 6 files changed, 232 insertions(+), 107 deletions(-) diff --git a/src/drivers/win/header_editor.cpp b/src/drivers/win/header_editor.cpp index 1ea3f654..615442ac 100644 --- a/src/drivers/win/header_editor.cpp +++ b/src/drivers/win/header_editor.cpp @@ -131,7 +131,7 @@ int dropDownIdList[] = { HWND hHeadEditor = NULL; -bool LoadHeader(HWND parent, char* name, iNES_HEADER* header) +bool LoadHeader(HWND parent, iNES_HEADER* header) { int error = 0; enum errors { @@ -142,7 +142,10 @@ bool LoadHeader(HWND parent, char* name, iNES_HEADER* header) UNIF_HEADER }; - FCEUFILE* fp = FCEU_fopen(name, NULL, "rb", NULL); + FCEUFILE* fp = FCEU_fopen(LoadedRomFName, NULL, "rb", NULL); + if (!GameInfo) + strcpy(LoadedRomFName, fp->fullFilename.c_str()); + if (fp) { if (FCEU_fread(header, 1, sizeof(iNES_HEADER), fp) == sizeof(iNES_HEADER) && !memcmp(header, "NES\x1A", 4)) @@ -165,7 +168,7 @@ bool LoadHeader(HWND parent, char* name, iNES_HEADER* header) case errors::OPEN_FAILED: { char buf[1024]; - sprintf(buf, "Error opening %s!", name); + sprintf(buf, "Error opening %s!", LoadedRomFName); MessageBox(parent, buf, "iNES Header Editor", MB_ICONERROR | MB_OK); break; } @@ -262,7 +265,7 @@ HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header) for (int i = 0; dropDownIdList[i]; ++i) for (int j = 0; dropDownList[i][j]; ++j) { - sprintf(buf, "$%X %s", j, dropDownList[i][j]); + sprintf(buf, dropDownList[i] == inputDevList ? "$%02X %s" : "$%X %s", j, dropDownList[i][j]); SendDlgItemMessage(hwnd, IDC_MAPPER_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, dropDownIdList[i], CB_ADDSTRING, 0, (LPARAM)buf), j); } @@ -501,10 +504,9 @@ LRESULT CALLBACK HeaderEditorProc(HWND hDlg, UINT uMsg, WPARAM wP, LPARAM lP) iNES_HEADER newHeader; if (WriteHeaderData(hDlg, &newHeader)) { - char name[2048]; - strcpy(name, LoadedRomFName); - if (ShowINESFileBox(hDlg, name, true)) - SaveINESFile(hDlg, name, &newHeader); + char path[4096] = { 0 }; + if (ShowINESFileBox(hDlg, true, path)) + SaveINESFile(hDlg, path, &newHeader); } } break; @@ -545,7 +547,7 @@ void DoHeadEdit() iNES_HEADER* header = (iNES_HEADER*)calloc(1, sizeof(iNES_HEADER)); if (GameInfo) { - if (LoadHeader(hAppWnd, LoadedRomFName, header)) + if (LoadHeader(hAppWnd, header)) CreateDialogParam(fceu_hInstance, MAKEINTRESOURCE(IDD_EDIT_HEADER), hAppWnd, (DLGPROC)HeaderEditorProc, (LPARAM)header); else free(header); @@ -553,7 +555,7 @@ void DoHeadEdit() else { // temporarily borrow LoadedRomFName, when no game is loaded, it is unused. LoadedRomFName[0] = 0; - if (ShowINESFileBox(hAppWnd, LoadedRomFName, false) && LoadHeader(hAppWnd, LoadedRomFName, header)) + if (ShowINESFileBox(hAppWnd) && LoadHeader(hAppWnd, header)) DialogBoxParam(fceu_hInstance, MAKEINTRESOURCE(IDD_EDIT_HEADER), hAppWnd, (DLGPROC)HeaderEditorProc, (LPARAM)header); else free(header); @@ -788,7 +790,7 @@ void SetHeaderData(HWND hwnd, iNES_HEADER* header) { SetDlgItemText(hwnd, IDC_VS_SYSTEM_COMBO, buf); } -// Input Device: + // Input Device: int input = header->reserved[1] & 0x1F; if (SendDlgItemMessage(hwnd, IDC_INPUT_DEVICE_COMBO, CB_SETCURSEL, input, 0) == CB_ERR) { @@ -831,12 +833,9 @@ bool WriteHeaderData(HWND hwnd, iNES_HEADER* header) int mapper; if (!GetComboBoxListItemData(hwnd, IDC_MAPPER_COMBO, &mapper, buf)) { - if (sscanf(buf, "%d", &mapper) < 1) - { - MessageBox(hwnd, "The mapper# you have entered is invalid. Please enter a decimal number or select an item from the dropdown list.", "Error", MB_OK | MB_ICONERROR); - SetFocus(GetDlgItem(hwnd, IDC_MAPPER_COMBO)); - return false; - } + MessageBox(hwnd, "The mapper# you have entered is invalid. Please enter a decimal number or select an item from the dropdown list.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_MAPPER_COMBO)); + return false; } printf("mapper: %d\n", mapper); @@ -1235,13 +1234,25 @@ bool WriteHeaderData(HWND hwnd, iNES_HEADER* header) _header.ROM_type2 |= 1; if (ines20) { // VS System type - int system = SendDlgItemMessage(hwnd, IDC_VS_SYSTEM_COMBO, CB_GETCURSEL, 0, 0); - if (system != CB_ERR) + int system; + if (GetComboBoxListItemData(hwnd, IDC_VS_SYSTEM_COMBO, &system, buf) && system <= 0xF) _header.VS_hardware |= (system & 0xF) << 4; + else + { + MessageBox(hwnd, "Invalid VS System hardware type.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_VS_SYSTEM_COMBO)); + return false; + } // VS PPU type - int ppu = SendDlgItemMessage(hwnd, IDC_VS_PPU_COMBO, CB_GETCURSEL, 0, 0); - if (ppu != CB_ERR) + int ppu; + if (GetComboBoxListItemData(hwnd, IDC_VS_PPU_COMBO, &ppu, buf) && system <= 0xF) _header.VS_hardware |= ppu & 0xF; + else + { + MessageBox(hwnd, "Invalid VS System PPU type.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_VS_PPU_COMBO)); + return false; + } } } else if (IsDlgButtonChecked(hwnd, IDC_RADIO_SYSTEM_PLAYCHOICE10) == BST_CHECKED) @@ -1250,17 +1261,29 @@ bool WriteHeaderData(HWND hwnd, iNES_HEADER* header) { // Extend System _header.ROM_type2 |= 3; - int extend = SendDlgItemMessage(hwnd, IDC_SYSTEM_EXTEND_COMBO, CB_GETCURSEL, 0, 0); - if (extend != CB_ERR) + int extend; + if (GetComboBoxListItemData(hwnd, IDC_SYSTEM_EXTEND_COMBO, &extend, buf) && extend <= 0x3F) _header.VS_hardware |= extend & 0x3F; + else + { + MessageBox(hwnd, "Invalid extend system type", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_SYSTEM_EXTEND_COMBO)); + return false; + } } // Input device if (ines20) { - int input = SendDlgItemMessage(hwnd, IDC_INPUT_DEVICE_COMBO, CB_GETCURSEL, 0, 0); - if (input != CB_ERR) + int input; + if (GetComboBoxListItemData(hwnd, IDC_INPUT_DEVICE_COMBO, &input, buf, true) && input <= 0x3F) _header.reserved[1] |= input & 0x3F; + else + { + MessageBox(hwnd, "Invalid input device.", "Error", MB_OK | MB_ICONERROR); + SetFocus(GetDlgItem(hwnd, IDC_INPUT_DEVICE_COMBO)); + return false; + } } // Miscellanous ROM(s) @@ -1335,16 +1358,16 @@ bool WriteHeaderData(HWND hwnd, iNES_HEADER* header) printf("%02X ", _header.ROM_type); printf("%02X ", _header.ROM_type2); printf("%02X ", _header.ROM_type3); - printf("%02X ", _header.Upper_ROM_VROM_size); - printf("%02X ", _header.RAM_size); - printf("%02X ", _header.VRAM_size); - printf("%02X ", _header.TV_system); - printf("%02X ", _header.VS_hardware); - printf("%02X ", _header.reserved[0]); - printf("%02X\n", _header.reserved[1]); +printf("%02X ", _header.Upper_ROM_VROM_size); +printf("%02X ", _header.RAM_size); +printf("%02X ", _header.VRAM_size); +printf("%02X ", _header.TV_system); +printf("%02X ", _header.VS_hardware); +printf("%02X ", _header.reserved[0]); +printf("%02X\n", _header.reserved[1]); #endif - return true; +return true; } int GetComboBoxByteSize(HWND hwnd, UINT id, int* value) @@ -1363,12 +1386,12 @@ int GetComboBoxByteSize(HWND hwnd, UINT id, int* value) switch (id) { - case IDC_PRGROM_COMBO: name = "PRG ROM"; break; - case IDC_PRGRAM_COMBO: name = "PRG RAM"; break; - case IDC_PRGNVRAM_COMBO: name = "PRG NVRAM"; break; - case IDC_CHRROM_COMBO: name = "CHR ROM"; break; - case IDC_CHRRAM_COMBO: name = "CHR RAM"; break; - case IDC_CHRNVRAM_COMBO: name = "CHR NVRAM"; break; + case IDC_PRGROM_COMBO: name = "PRG ROM"; break; + case IDC_PRGRAM_COMBO: name = "PRG RAM"; break; + case IDC_PRGNVRAM_COMBO: name = "PRG NVRAM"; break; + case IDC_CHRROM_COMBO: name = "CHR ROM"; break; + case IDC_CHRRAM_COMBO: name = "CHR RAM"; break; + case IDC_CHRNVRAM_COMBO: name = "CHR NVRAM"; break; } if (!GetComboBoxListItemData(hwnd, id, value, buf, true)) @@ -1391,15 +1414,15 @@ int GetComboBoxByteSize(HWND hwnd, UINT id, int* value) switch (err) { - case errors::FORMAT_ERR: - sprintf(buf, "%s size you entered is invalid, it should be positive decimal integer followed with unit, e.g. 1024B, 128KB, 4MB", name); - break; - case errors::UNIT_ERR: - sprintf(buf, "The unit of %s size you entered is invalid, it must be B, KB or MB", name); - break; - case errors::MINUS_ERR: - sprintf(buf, "Negative value of %s is not supported by iNES header.", name); - break; + case errors::FORMAT_ERR: + sprintf(buf, "%s size you entered is invalid, it should be positive decimal integer followed with unit, e.g. 1024B, 128KB, 4MB", name); + break; + case errors::UNIT_ERR: + sprintf(buf, "The unit of %s size you entered is invalid, it must be B, KB or MB", name); + break; + case errors::MINUS_ERR: + sprintf(buf, "Negative value of %s is not supported by iNES header.", name); + break; } if (err) @@ -1413,22 +1436,56 @@ int GetComboBoxByteSize(HWND hwnd, UINT id, int* value) bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exact) { + bool success = true; *value = SendDlgItemMessage(hwnd, id, CB_GETCURSEL, 0, 0); if (*value != CB_ERR) *value = SendDlgItemMessage(hwnd, id, CB_GETITEMDATA, *value, 0); else { GetDlgItemText(hwnd, id, buf, 256); + if (exact) *value = SendDlgItemMessage(hwnd, id, CB_FINDSTRINGEXACT, 0, (LPARAM)buf); else *value = SendDlgItemMessage(hwnd, id, CB_SELECTSTRING, 0, (LPARAM)buf); + if (*value != CB_ERR) *value = SendDlgItemMessage(hwnd, id, CB_GETITEMDATA, *value, 0); else { - SetDlgItemText(hwnd, id, buf); - success = false; + switch (id) + { + default: + success = false; + break; + case IDC_MAPPER_COMBO: + if (!(success = sscanf(buf, "%d", value) > 0)) + success = SearchByString(hwnd, id, value, buf); + else + SetDlgItemText(hwnd, id, buf); + break; + case IDC_VS_SYSTEM_COMBO: + case IDC_VS_PPU_COMBO: + case IDC_SYSTEM_EXTEND_COMBO: + if (!(success = sscanf(buf, "$%X", value) > 0)) + success = SearchByString(hwnd, id, value, buf); + else + SetDlgItemText(hwnd, id, buf); + break; + case IDC_INPUT_DEVICE_COMBO: + if (success = sscanf(buf, "$%X", value) > 0) + { + char buf2[3]; + sprintf(buf2, "$%02X", *value); + if (SendDlgItemMessage(hwnd, id, CB_SELECTSTRING, 0, (LPARAM)buf2) == CB_ERR) + SetDlgItemText(hwnd, id, buf); + } else + success = SearchByString(hwnd, id, value, buf); + break; + } + + if (!success) + SetDlgItemText(hwnd, id, buf); } } @@ -1436,37 +1493,67 @@ bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exa } // Warning: when in save mode, the content of buf might be overwritten by the save filename which user changed. -bool ShowINESFileBox(HWND parent, char* buf, bool save) +bool ShowINESFileBox(HWND parent, bool save, char* buf) { - char name[2048] = { 0 }; + char *filename = NULL, *path = NULL; + bool success = true; + if (save) - strncpy(name, buf, strcspn(buf, "|")); - - OPENFILENAME ofDlg; - memset(&ofDlg, 0, sizeof(OPENFILENAME)); - ofDlg.lStructSize = sizeof(OPENFILENAME); - ofDlg.lpstrTitle = save ? "Save NES file" : "Open NES file"; - ofDlg.lpstrFilter = "NES ROM file(*.nes)\0*.nes\0All files(*.*)\0*.*\0\0"; - ofDlg.hInstance = fceu_hInstance; - ofDlg.hwndOwner = parent; - ofDlg.nMaxFile = sizeof(name); - ofDlg.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; - ofDlg.lpstrInitialDir = save ? name : FCEU_GetPath(FCEUMKF_ROMS).c_str(); - - char* sub_name = strrchr(buf, '|'); - if (sub_name) - ofDlg.lpstrFile = sub_name + 1; - else - ofDlg.lpstrFile = name; - - - if (save ? GetSaveFileName(&ofDlg) : GetOpenFileName(&ofDlg)) { - strcpy(buf, name); - return true; + // When open this dialog for saving prpose, the buf must be a separate buf. + if (buf && buf != LoadedRomFName) + { + extern char* GetRomName(bool force = false); + extern char* GetRomPath(bool force = false); + filename = GetRomName(true); + char* second = strchr(filename, '|'); + if (second) + { + char* _filename = (char*)calloc(1, 2048); + strcpy(_filename, second + 1); + char* third = strrchr(filename, '\\'); + if (third) + strcpy(_filename, third + 1); + free(filename); + filename = _filename; + } + strcat(filename, " [header modified].nes"); + path = GetRomPath(true); + } + else + success = false; + } + else { + if (!buf) + buf = LoadedRomFName; + filename = (char*)calloc(1, 2048); + path = (char*)calloc(1, 2048); } - return false; + if (success) + { + OPENFILENAME ofDlg; + memset(&ofDlg, 0, sizeof(OPENFILENAME)); + ofDlg.lStructSize = sizeof(OPENFILENAME); + ofDlg.lpstrTitle = save ? "Save NES file" : "Open NES file"; + ofDlg.lpstrFilter = "NES ROM file(*.nes)\0*.nes\0All files(*.*)\0*.*\0\0"; + ofDlg.hInstance = fceu_hInstance; + ofDlg.hwndOwner = parent; + ofDlg.lpstrFile = filename; + ofDlg.nMaxFile = 2048; + ofDlg.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; + ofDlg.lpstrInitialDir = path; + + if (save ? GetSaveFileName(&ofDlg) : GetOpenFileName(&ofDlg)) + strcpy(buf, filename); + else + success = false; + } + + if (filename) free(filename); + if (path) free(path); + + return success; } bool SaveINESFile(HWND hwnd, char* path, iNES_HEADER* header) @@ -1507,4 +1594,46 @@ bool SaveINESFile(HWND hwnd, char* path, iNES_HEADER* header) return true; +} + +bool SearchByString(HWND hwnd, UINT id, int* value, char* buf) +{ + if (buf[0] != ' ' && buf[0] != 0) + { + if (id == IDC_MAPPER_COMBO) + { + extern BMAPPINGLocal bmap[]; + for (int i = 0; bmap[i].init; ++i) + { + if (!stricmp(buf, bmap[i].name)) + { + SendDlgItemMessage(hwnd, id, CB_SETCURSEL, i, 0); + *value = SendDlgItemMessage(hwnd, id, CB_GETITEMDATA, i, 0); + return true; + } + } + } + else + { + for (int i = 0; dropDownIdList[i]; ++i) + { + if (dropDownIdList[i] == id) + { + char** checkList = dropDownList[i]; + for (int j = 0; checkList[j]; ++j) + { + if (!stricmp(buf, checkList[j])) + { + SendDlgItemMessage(hwnd, id, CB_SETCURSEL, j, 0); + *value = SendDlgItemMessage(hwnd, id, CB_GETITEMDATA, j, 0); + return true; + } + } + break; + } + } + } + } + + return false; } \ No newline at end of file diff --git a/src/drivers/win/header_editor.h b/src/drivers/win/header_editor.h index 39c644aa..828a1c30 100644 --- a/src/drivers/win/header_editor.h +++ b/src/drivers/win/header_editor.h @@ -5,7 +5,7 @@ extern HWND hHeadEditor; struct iNES_HEADER; HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header); -bool ShowINESFileBox(HWND parent, char* buf, bool save); +bool ShowINESFileBox(HWND parent, bool save = false, char* buf = NULL); void ToggleINES20(HWND hwnd, bool ines20); void ToggleExtendSystemList(HWND hwnd, bool enable); void ToggleVSSystemGroup(HWND hwnd, bool enable); @@ -13,8 +13,10 @@ void ToggleUnofficialPropertiesEnabled(HWND hwnd, bool ines20, bool check); void ToggleUnofficialExtraRegionCode(HWND hwnd, bool ines20, bool unofficial_check, bool check); void ToggleUnofficialPrgRamPresent(HWND hwnd, bool ines20, bool unofficial_check, bool check); void SetHeaderData(HWND hwnd, iNES_HEADER* header); +bool LoadHeader(HWND parent, iNES_HEADER* header); bool WriteHeaderData(HWND hwnd, iNES_HEADER* header); int GetComboBoxByteSize(HWND hwnd, UINT id, int* value); +bool SearchByString(HWND hwnd, UINT id, int* value, char* buf); bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exact = false); bool SaveINESFile(HWND hwnd, char* path, iNES_HEADER* header); LRESULT CALLBACK HeaderEditorProc(HWND hDlg, UINT uMsg, WPARAM wP, LPARAM lP); diff --git a/src/drivers/win/main.cpp b/src/drivers/win/main.cpp index 6a1adfa4..ef6b07a5 100644 --- a/src/drivers/win/main.cpp +++ b/src/drivers/win/main.cpp @@ -1127,14 +1127,14 @@ void FCEUD_ToggleStatusIcon(void) UpdateCheckedMenuItems(); } -char *GetRomName() +char *GetRomName(bool force) { //The purpose of this function is to format the ROM name stored in LoadedRomFName //And return a char array with just the name with path or extension //The purpose of this function is to populate a save as dialog with the ROM name as a default filename extern char LoadedRomFName[2048]; //Contains full path of ROM std::string Rom; //Will contain the formatted path - if(GameInfo) //If ROM is loaded + if(GameInfo || force) //If ROM is loaded { char drv[PATH_MAX], dir[PATH_MAX], name[PATH_MAX], ext[PATH_MAX]; splitpath(LoadedRomFName,drv,dir,name,ext); //Extract components of the ROM path @@ -1148,14 +1148,14 @@ char *GetRomName() return mystring; } -char *GetRomPath() +char *GetRomPath(bool force) { //The purpose of this function is to format the ROM name stored in LoadedRomFName //And return a char array with just the name with path or extension //The purpose of this function is to populate a save as dialog with the ROM name as a default filename extern char LoadedRomFName[2048]; //Contains full path of ROM std::string Rom; //Will contain the formatted path - if(GameInfo) //If ROM is loaded + if(GameInfo || force) //If ROM is loaded { char drv[PATH_MAX], dir[PATH_MAX], name[PATH_MAX], ext[PATH_MAX]; splitpath(LoadedRomFName,drv,dir,name,ext); //Extract components of the ROM path diff --git a/src/drivers/win/main.h b/src/drivers/win/main.h index b7d7305e..b26b123b 100644 --- a/src/drivers/win/main.h +++ b/src/drivers/win/main.h @@ -65,8 +65,8 @@ extern int vmod; extern char* directory_names[14]; -char *GetRomName(); //Checks if rom is loaded, if so, outputs the Rom name with no directory path or file extension -char *GetRomPath(); //Checks if rom is loaded, if so, outputs the Rom path only +char *GetRomName(bool force = false); //Checks if rom is loaded, if so, outputs the Rom name with no directory path or file extension +char *GetRomPath(bool force = false); //Checks if rom is loaded, if so, outputs the Rom path only ///Contains the names of the default directories. static const char *default_directory_names[13] = { diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index aa2cc398..30ebedd4 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -1986,22 +1986,22 @@ BEGIN GROUPBOX "Active Cheats",IDC_GROUPBOX_CHEATLIST,5,2,169,209,WS_TABSTOP GROUPBOX "Cheat Search",IDC_GROUPBOX_CHEATSEARCH,180,2,201,198,WS_TABSTOP CONTROL "",IDC_LIST_CHEATS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,11,11,157,133 - LTEXT "Name:", IDC_STATIC, 12, 149, 22, 10 - EDITTEXT IDC_CHEAT_NAME,37,147,131,12,ES_AUTOHSCROLL | ES_WANTRETURN - LTEXT "Address:", IDC_CHEAT_ADDRESS_LABEL, 12, 163, 30, 8 - EDITTEXT IDC_CHEAT_ADDR,44,161,25,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Value:", IDC_CHEAT_VAL_LABEL, 73, 163, 22, 8 - EDITTEXT IDC_CHEAT_VAL,97,161,16,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Compare:", IDC_CHEAT_COM_LABEL, 117, 163, 34, 8 - EDITTEXT IDC_CHEAT_COM,152,161,16,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Cheat code / Game Genie:", IDC_CHEAT_CODE_GG_LABEL, 11, 177, 87, 8 - EDITTEXT IDC_CHEAT_TEXT, 105, 175, 63, 12, ES_UPPERCASE | ES_AUTOHSCROLL - DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,7,192,30,16 + LTEXT "Name:",IDC_STATIC,12,149,22,10 + EDITTEXT IDC_CHEAT_NAME,37,147,131,12,ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "Address:",IDC_CHEAT_ADDRESS_LABEL,12,163,30,8 + EDITTEXT IDC_CHEAT_ADDR,44,161,25,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Value:",IDC_CHEAT_VAL_LABEL,73,163,22,8 + EDITTEXT IDC_CHEAT_VAL,97,161,16,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Compare:",IDC_CHEAT_COM_LABEL,117,163,34,8 + EDITTEXT IDC_CHEAT_COM,152,161,16,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Cheat code / Game Genie:",IDC_CHEAT_CODE_GG_LABEL,11,177,87,8 + EDITTEXT IDC_CHEAT_TEXT,105,175,63,12,ES_UPPERCASE | ES_AUTOHSCROLL + DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,7,192,30,16 PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,37,192,30,16 PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,67,192,30,16 - PUSHBUTTON "Import...", IDC_BTN_CHEAT_ADDFROMFILE, 100, 192, 36, 16 - PUSHBUTTON "Export...", IDC_BTN_CHEAT_EXPORTTOFILE, 136, 192, 36, 16 - PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,192,12,55,15 + PUSHBUTTON "Import...",IDC_BTN_CHEAT_ADDFROMFILE,100,192,36,16 + PUSHBUTTON "Export...",IDC_BTN_CHEAT_EXPORTTOFILE,136,192,36,16 + PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,192,12,55,15 PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,192,32,55,15 LTEXT "0x",IDC_CHEAT_LABEL_KNOWN,217,51,9,8 EDITTEXT IDC_CHEAT_VAL_KNOWN,228,49,18,12,ES_UPPERCASE @@ -2316,12 +2316,12 @@ BEGIN CONTROL "Extend",IDC_RADIO_SYSTEM_EXTEND,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,251,114,35,10 GROUPBOX "Extend System",IDC_EXTEND_SYSTEM_GROUP,127,176,160,29,WS_DISABLED LTEXT "Console:",IDC_EXTEND_SYSTEM_TEXT,133,189,29,8,WS_DISABLED - COMBOBOX IDC_SYSTEM_EXTEND_COMBO,165,186,115,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_SYSTEM_EXTEND_COMBO,165,186,115,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP GROUPBOX "VS. System",IDC_VS_SYSTEM_GROUP,127,126,160,46,WS_DISABLED LTEXT "Hardware:",IDC_VS_SYSTEM_TEXT,134,138,35,8,WS_DISABLED - COMBOBOX IDC_VS_SYSTEM_COMBO,172,136,108,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_VS_SYSTEM_COMBO,172,136,108,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP LTEXT "PPU:",IDC_VS_PPU_TEXT,134,155,16,8,WS_DISABLED - COMBOBOX IDC_VS_PPU_COMBO,154,154,126,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_VS_PPU_COMBO,154,154,126,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP CONTROL "iNES 1.0 Unofficial Properties",IDC_CHECK_UNOFFICIAL, "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,14,164,103,10 GROUPBOX "iNES 1.0 Unofficial Properties",IDC_UNOFFICIAL_GROUP,13,176,104,35,WS_DISABLED @@ -2329,7 +2329,7 @@ BEGIN CONTROL "PRG RAM exists",IDC_CHECK_UNOFFICIAL_PRGRAM,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,70,188,43,17 CONTROL "Bus conflict",IDC_CHECK_UNOFFICIAL_BUS_CONFLICT,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,198,49,10 LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,101,218,44,8,WS_DISABLED - COMBOBOX IDC_INPUT_DEVICE_COMBO,147,216,143,30,CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_INPUT_DEVICE_COMBO,147,216,143,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP LTEXT "Misc. ROM(s)",IDC_MISCELLANEOUS_ROMS_TEXT,29,218,48,8,WS_DISABLED EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | WS_DISABLED PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,7,236,44,14,WS_DISABLED diff --git a/src/ines.h b/src/ines.h index f4a3bf10..a32db278 100644 --- a/src/ines.h +++ b/src/ines.h @@ -79,12 +79,6 @@ struct iNES_HEADER { } }; -typedef struct { - char *name; - int32 number; - void(*init)(CartInfo *); -} BMAPPINGLocal; - extern struct iNES_HEADER head; //for mappers usage void NSFVRC6_Init(void); From 8ae26f4b72510e128dea4b120e0723182faa0723 Mon Sep 17 00:00:00 2001 From: owomomo Date: Wed, 12 Jun 2019 00:28:29 +0800 Subject: [PATCH 06/21] Detail --- src/drivers/win/cheat.cpp | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index 21bea3ef..8616bdd1 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -659,8 +659,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l ofn.nMaxFile = 2048; ofn.lpstrDefExt = "cht"; ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST; - std::string initdir = FCEU_GetPath(FCEUMKF_CHEAT) + PSS; - ofn.lpstrInitialDir = initdir.c_str(); + ofn.lpstrInitialDir = FCEU_GetPath(FCEUMKF_CHEAT).c_str(); if (GetOpenFileName(&ofn)) { @@ -699,8 +698,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l ofn.nMaxFile = 2048; ofn.lpstrDefExt = "cht"; ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST; - std::string initdir = FCEU_GetPath(FCEUMKF_CHEAT) + PSS; - ofn.lpstrInitialDir = initdir.c_str(); + ofn.lpstrInitialDir = FCEU_GetPath(FCEUMKF_CHEAT).c_str(); if (GetSaveFileName(&ofn)) { From 0dbcce537e5b6df450e4922d61d426d6ea798838 Mon Sep 17 00:00:00 2001 From: owomomo Date: Wed, 12 Jun 2019 00:35:56 +0800 Subject: [PATCH 07/21] Detail --- src/drivers/win/header_editor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/win/header_editor.cpp b/src/drivers/win/header_editor.cpp index 615442ac..91b050ac 100644 --- a/src/drivers/win/header_editor.cpp +++ b/src/drivers/win/header_editor.cpp @@ -794,7 +794,7 @@ void SetHeaderData(HWND hwnd, iNES_HEADER* header) { int input = header->reserved[1] & 0x1F; if (SendDlgItemMessage(hwnd, IDC_INPUT_DEVICE_COMBO, CB_SETCURSEL, input, 0) == CB_ERR) { - sprintf(buf, "$%X", input); + sprintf(buf, "$%02X", input); SetDlgItemText(hwnd, IDC_INPUT_DEVICE_COMBO, buf); } From fb1d489cfaabe19789d0444704b81e55ec7d2fc4 Mon Sep 17 00:00:00 2001 From: owomomo Date: Wed, 12 Jun 2019 22:16:01 +0800 Subject: [PATCH 08/21] Cheat console: 1. Added a global switch for all cheats, it is checked by default. Check or uncheck it can quickly tweak all cheats enabled or disabled. It's not game specific and effective to all games. 2. Added a checkmark to check behaviour of automatically load cheats. 3. Fixed a wierd bug in loading names of cheats from file. iNES Header Editor: 4. Disable iNES header editor menu when currently loaded game is not in iNES format. Others: 5. Some of the checkbox passed parameter MF_CHECKED, the right one is BST_CHECKED, though they have the same value. 6. Code/Data Logger is created by CreateDialog(), but destroyed by EndDialog()? A non-modal window should be destroy by DestroyWindow(), EndDialog() is for DialogBox(). It seems nobody noticed this bug for years. Currently there are some opposite tweaks in the config file for the new feature in cheat console, for example the unchcecked state is 1 in config file, that's for backward compatibility. The iNES header editor might not quite stable as newly baked from the oven, there might be some improvements to its code. --- src/cheat.cpp | 71 ++++--- src/cheat.h | 4 + src/driver.h | 2 + src/drivers/win/cdlogger.cpp | 2 +- src/drivers/win/cheat.cpp | 183 +++++++++++------- src/drivers/win/cheat.h | 4 + src/drivers/win/config.cpp | 4 + src/drivers/win/debugger.cpp | 6 +- src/drivers/win/debugger.h | 2 +- src/drivers/win/header_editor.cpp | 56 ++++-- src/drivers/win/header_editor.h | 2 +- src/drivers/win/main.cpp | 2 +- src/drivers/win/memview.cpp | 2 +- src/drivers/win/ramwatch.cpp | 4 +- src/drivers/win/ramwatch.h | 2 +- src/drivers/win/res.rc | 79 ++++---- src/drivers/win/resource.h | 13 +- src/drivers/win/taseditor.cpp | 8 +- src/drivers/win/taseditor/markers_manager.cpp | 4 +- src/drivers/win/window.cpp | 25 ++- src/fceu.cpp | 9 +- 21 files changed, 294 insertions(+), 190 deletions(-) diff --git a/src/cheat.cpp b/src/cheat.cpp index 031f0c04..0ac5955c 100644 --- a/src/cheat.cpp +++ b/src/cheat.cpp @@ -62,6 +62,8 @@ void FCEU_CheatAddRAM(int s, uint32 A, uint8 *p) CHEATF_SUBFAST SubCheats[256] = { 0 }; uint32 numsubcheats = 0; +int globalCheatDisabled = 0; +int disableAutoLSCheats = 0; struct CHEATF *cheats = 0, *cheatsl = 0; @@ -104,11 +106,10 @@ void RebuildSubCheats(void) SetReadHandler(SubCheats[x].addr, SubCheats[x].addr, SubCheats[x].PrevRead); numsubcheats = 0; - while(c) - { - if(c->type == 1 && c->status) + if (!globalCheatDisabled) + while(c) { - if(GetReadHandler(c->addr) != SubCheatsRead) + if(c->type == 1 && c->status && GetReadHandler(c->addr) != SubCheatsRead) { SubCheats[numsubcheats].PrevRead = GetReadHandler(c->addr); SubCheats[numsubcheats].addr = c->addr; @@ -117,9 +118,9 @@ void RebuildSubCheats(void) SetReadHandler(c->addr, c->addr, SubCheatsRead); numsubcheats++; } + c = c->next; } - c = c->next; - } + FrozenAddressCount = numsubcheats; //Update the frozen address list UpdateFrozenList(); @@ -243,7 +244,6 @@ void FCEU_LoadGameCheats(FILE *override, int override_existing) char *neo = &tbuf[4+2+2+1+1+1]; if(sscanf(tbuf, "%04x%*[:]%02x%*[:]%02x", &addr, &val, &compare) != 3) continue; - char namebuf[128]; strcpy(namebuf, neo); } else @@ -277,6 +277,31 @@ void FCEU_LoadGameCheats(FILE *override, int override_existing) fclose(fp); } +void FCEU_SaveGameCheats(FILE* fp, int release) +{ + struct CHEATF *next = cheats; + while (next) + { + if (next->type) + fputc('S', fp); + if (next->compare >= 0) + fputc('C', fp); + + if (!next->status) + fputc(':', fp); + + if (next->compare >= 0) + fprintf(fp, "%04x:%02x:%02x:%s\n", next->addr, next->val, next->compare, next->name); + else + fprintf(fp, "%04x:%02x:%s\n", next->addr, next->val, next->name); + + if (release) free(next->name); + struct CHEATF *t = next; + next = next->next; + if (release) free(t); + } +} + void FCEU_FlushGameCheats(FILE *override, int nosave) { if(CheatComp) @@ -309,7 +334,6 @@ void FCEU_FlushGameCheats(FILE *override, int nosave) if(cheats) { - struct CHEATF *next=cheats; FILE *fp; if(override) @@ -319,28 +343,7 @@ void FCEU_FlushGameCheats(FILE *override, int nosave) if(fp) { - for(;;) - { - struct CHEATF *t; - if(next->type) - fputc('S',fp); - if(next->compare>=0) - fputc('C',fp); - - if(!next->status) - fputc(':',fp); - - if(next->compare>=0) - fprintf(fp,"%04x:%02x:%02x:%s\n",next->addr,next->val,next->compare,next->name); - else - fprintf(fp,"%04x:%02x:%s\n",next->addr,next->val,next->name); - - free(next->name); - t=next; - next=next->next; - free(t); - if(!next) break; - } + FCEU_SaveGameCheats(fp, 1); if(!override) fclose(fp); } @@ -642,6 +645,14 @@ int FCEUI_ToggleCheat(uint32 which) return(-1); } +int FCEUI_GlobalToggleCheat(int global_enabled) +{ + int _numsubcheats = numsubcheats; + globalCheatDisabled = !global_enabled; + RebuildSubCheats(); + return _numsubcheats != numsubcheats; +} + static int InitCheatComp(void) { uint32 x; diff --git a/src/cheat.h b/src/cheat.h index e2cbae9f..9e8476b4 100644 --- a/src/cheat.h +++ b/src/cheat.h @@ -3,6 +3,8 @@ void FCEU_CheatAddRAM(int s, uint32 A, uint8 *p); void FCEU_LoadGameCheats(FILE *override, int override_existing = 1); void FCEU_FlushGameCheats(FILE *override, int nosave); +void FCEU_SaveGameCheats(FILE *fp, int release = 0); +int FCEUI_GlobalToggleCheat(int global_enabled); void FCEU_ApplyPeriodicCheats(void); void FCEU_PowerCheats(void); int FCEU_CalcCheatAffectedBytes(uint32 address, uint32 size); @@ -12,6 +14,8 @@ int FCEU_CheatGetByte(uint32 A); void FCEU_CheatSetByte(uint32 A, uint8 V); extern int savecheats; +extern int globalCheatDisabled; +extern int disableAutoLSCheats; int FCEU_DisableAllCheats(); diff --git a/src/driver.h b/src/driver.h index 372d9944..4ce67eeb 100644 --- a/src/driver.h +++ b/src/driver.h @@ -191,6 +191,8 @@ int FCEUI_DecodeGG(const char *str, int *a, int *v, int *c); int FCEUI_AddCheat(const char *name, uint32 addr, uint8 val, int compare, int type); int FCEUI_DelCheat(uint32 which); int FCEUI_ToggleCheat(uint32 which); +int FCEUI_GlobalToggleCheat(int global_enable); +void FCEU_SaveGameCheats(FILE *fp, int release = 0); int32 FCEUI_CheatSearchGetCount(void); void FCEUI_CheatSearchGetRange(uint32 first, uint32 last, int (*callb)(uint32 a, uint8 last, uint8 current)); diff --git a/src/drivers/win/cdlogger.cpp b/src/drivers/win/cdlogger.cpp index fb3d174c..a07de140 100644 --- a/src/drivers/win/cdlogger.cpp +++ b/src/drivers/win/cdlogger.cpp @@ -135,7 +135,7 @@ BOOL CALLBACK CDLoggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara FreeCDLog(); RenameCDLog(""); hCDLogger = 0; - EndDialog(hwndDlg, 0); + DestroyWindow(hwndDlg); } break; case WM_COMMAND: diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index eb531fe8..d6eb59d6 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -34,6 +34,8 @@ HWND hCheat = 0; //mbg merge 7/19/06 had to add HMENU hCheatcontext = 0; //Handle to cheat context menu bool pauseWhileActive = false; //For checkbox "Pause while active" +extern int globalCheatDisabled; +extern int disableAutoLSCheats; extern bool wasPausedByCheats; int CheatWindow; @@ -296,7 +298,9 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l if (ChtPosY == -32000) ChtPosY = 0; SetWindowPos(hwndDlg, 0, ChtPosX, ChtPosY, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); - CheckDlgButton(hwndDlg, IDC_CHEAT_PAUSEWHENACTIVE, pauseWhileActive ? MF_CHECKED : MF_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHEAT_PAUSEWHENACTIVE, pauseWhileActive ? BST_CHECKED : BST_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_CHEAT_GLOBAL_SWITCH, globalCheatDisabled ? BST_UNCHECKED : BST_CHECKED); + CheckDlgButton(hwndDlg, IDC_CHEAT_AUTOLOADSAVE, disableAutoLSCheats == 2 ? BST_UNCHECKED : disableAutoLSCheats == 1 ? BST_INDETERMINATE : BST_CHECKED); //setup font hFont = (HFONT)SendMessage(hwndDlg, WM_GETFONT, 0, 0); @@ -633,37 +637,10 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l } case IDC_BTN_CHEAT_ADDFROMFILE: { - OPENFILENAME ofn; - memset(&ofn, 0, sizeof(OPENFILENAME)); - ofn.lStructSize = sizeof(OPENFILENAME); - ofn.hwndOwner = hwndDlg; - ofn.hInstance = fceu_hInstance; - ofn.lpstrTitle = "Open cheats file"; - const char filter[] = "Cheat files (*.cht)\0*.cht\0All Files (*.*)\0*.*\0\0"; - ofn.lpstrFilter = filter; - - char nameo[2048] = { 0 }; - /* - I gave up setting the default filename for import cheat dialog, since the filename display contains a bug. - if (GameInfo) + char filename[2048]; + if (ShowCheatFileBox(hwndDlg, filename, false)) { - char* filename; - if ((filename = strrchr(GameInfo->filename, '\\')) || (filename = strrchr(GameInfo->filename, '/'))) - strcpy(nameo, filename + 1); - else - strcpy(nameo, GameInfo->filename); - strcpy(strrchr(nameo, '.'), ".cht"); - } - */ - ofn.lpstrFile = nameo; - ofn.nMaxFile = 2048; - ofn.lpstrDefExt = "cht"; - ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST; - ofn.lpstrInitialDir = FCEU_GetPath(FCEUMKF_CHEAT).c_str(); - - if (GetOpenFileName(&ofn)) - { - FILE* file = FCEUD_UTF8fopen(nameo, "rb"); + FILE* file = FCEUD_UTF8fopen(filename, "rb"); if (file) { FCEU_LoadGameCheats(file, 0); @@ -675,42 +652,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l } break; case IDC_BTN_CHEAT_EXPORTTOFILE: - { - OPENFILENAME ofn; - memset(&ofn, 0, sizeof(OPENFILENAME)); - ofn.lStructSize = sizeof(OPENFILENAME); - ofn.hInstance = fceu_hInstance; - ofn.lpstrTitle = "Save cheats file"; - const char filter[] = "Cheat files (*.cht)\0*.cht\0All Files (*.*)\0*.*\0\0"; - ofn.lpstrFilter = filter; - - char nameo[2048] = { 0 }; - if (GameInfo) - { - char* filename; - if ((filename = strrchr(GameInfo->filename, '\\')) || (filename = strrchr(GameInfo->filename, '/'))) - strcpy(nameo, filename + 1); - else - strcpy(nameo, GameInfo->filename); - strcpy(strrchr(nameo, '.'), ".cht"); - } - ofn.lpstrFile = nameo; - ofn.nMaxFile = 2048; - ofn.lpstrDefExt = "cht"; - ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST; - ofn.lpstrInitialDir = FCEU_GetPath(FCEUMKF_CHEAT).c_str(); - - if (GetSaveFileName(&ofn)) - { - FILE* file = FCEUD_UTF8fopen(nameo, "wb"); - if (file) - { - savecheats = 1; - FCEU_FlushGameCheats(file, 0); - fclose(file); - } - } - } + SaveCheatAs(hwndDlg); break; case IDC_BTN_CHEAT_RESET: FCEUI_CheatSearchBegin(); @@ -768,6 +710,27 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l ShowResults(hwndDlg); } break; + case IDC_CHEAT_GLOBAL_SWITCH: + if (FCEUI_GlobalToggleCheat(IsDlgButtonChecked(hwndDlg, IDC_CHEAT_GLOBAL_SWITCH))) + { + UpdateCheatRelatedWindow(); + UpdateCheatListGroupBoxUI(); + } + break; + case IDC_CHEAT_AUTOLOADSAVE: + switch (IsDlgButtonChecked(hwndDlg, IDC_CHEAT_AUTOLOADSAVE)) + { + case BST_CHECKED: disableAutoLSCheats = 0; break; + case BST_INDETERMINATE: disableAutoLSCheats = 1; break; + case BST_UNCHECKED: + if(MessageBox(hwndDlg, "If this option is unchecked, you must manually save the cheats by yourself, or all the changed you made to the cheat list would be discarded silently without any asking once you close the game!\nDo you really want to do it in this way?", "Cheat warning", MB_YESNO | MB_ICONWARNING) == IDYES) + disableAutoLSCheats = 2; + else + { + disableAutoLSCheats = 0; + CheckDlgButton(hwndDlg, IDC_CHEAT_AUTOLOADSAVE, BST_INDETERMINATE); + } + } } break; case EN_SETFOCUS: @@ -869,7 +832,6 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l if (!s) { FCEUI_SetCheat(tmpsel, name, -1, -1, -2, s ^= 1, 1); - UpdateCheatRelatedWindow(); UpdateCheatListGroupBoxUI(); } @@ -1320,4 +1282,89 @@ void UpdateCheatRelatedWindow() SendDlgItemMessage(RamWatchHWnd, IDC_WATCHLIST, LVM_GETCOUNTPERPAGE, 0, 0) + 1); } +} + +bool ShowCheatFileBox(HWND hwnd, char* buf, bool save) +{ + if (!buf) + return false; + + char filename[2048] = { 0 }; + + OPENFILENAME ofn; + memset(&ofn, 0, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.hInstance = fceu_hInstance; + ofn.hwndOwner = hwnd; + ofn.lpstrTitle = save ? "Save cheats file" : "Open cheats file"; + ofn.lpstrFilter = "Cheat files (*.cht)\0*.cht\0All Files (*.*)\0*.*\0\0"; + + // I gave up setting the default filename for import cheat dialog, since the filename display contains a bug. + if (save) + { + if (GameInfo) + { + char* _filename; + if ((_filename = strrchr(GameInfo->filename, '\\')) || (_filename = strrchr(GameInfo->filename, '/'))) + strcpy(filename, _filename + 1); + else + strcpy(filename, GameInfo->filename); + + _filename = strrchr(filename, '.'); + if (_filename) + strcpy(_filename, ".cht"); + else + strcat(filename, ".cht"); + } + } + + ofn.lpstrFile = filename; + ofn.nMaxFile = sizeof(filename); + ofn.lpstrDefExt = "cht"; + ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_FILEMUSTEXIST; + ofn.lpstrInitialDir = FCEU_GetPath(FCEUMKF_CHEAT).c_str(); + + if (save ? GetSaveFileName(&ofn) : GetOpenFileName(&ofn)) + { + strcpy(buf, filename); + return true; + } + + return false; +} + +void AskSaveCheat() +{ + if (cheats) + { + HWND hwnd = hCheat ? hCheat : hAppWnd; + if (MessageBox(hwnd, "Save cheats?", "Cheat Console", MB_YESNO | MB_ICONASTERISK) == IDYES) + SaveCheatAs(hwnd, true); + } +} + + +void SaveCheatAs(HWND hwnd, bool flush) +{ + if (cheats) + { + char filename[2048]; + if (ShowCheatFileBox(hwnd, filename, true)) + { + FILE* file = FCEUD_UTF8fopen(filename, "wb"); + if (file) + { + if (flush) + { + savecheats = 1; + FCEU_FlushGameCheats(file, 0); + } + else + FCEU_SaveGameCheats(file); + fclose(file); + } + else + MessageBox(hwnd, "Error saving cheats!", "Cheat Console", MB_OK | MB_ICONERROR); + } + } } \ No newline at end of file diff --git a/src/drivers/win/cheat.h b/src/drivers/win/cheat.h index 99939705..7552746c 100644 --- a/src/drivers/win/cheat.h +++ b/src/drivers/win/cheat.h @@ -22,8 +22,12 @@ inline void GetCheatStr(char* buf, int a, int v, int c); extern unsigned int FrozenAddressCount; extern std::vector FrozenAddresses; //void ConfigAddCheat(HWND wnd); //bbit edited:commented out this line +extern struct CHEATF* cheats; void DisableAllCheats(); +bool ShowCheatFileBox(HWND hwnd, char* buf, bool save = false); +void AskSaveCheat(); +void SaveCheatAs(HWND hwnd, bool flush = false); void UpdateCheatRelatedWindow(); diff --git a/src/drivers/win/config.cpp b/src/drivers/win/config.cpp index 8f798956..006e58c3 100644 --- a/src/drivers/win/config.cpp +++ b/src/drivers/win/config.cpp @@ -56,6 +56,8 @@ extern bool rightClickEnabled; extern bool fullscreenByDoubleclick; extern int CurrentState; extern bool pauseWhileActive; //adelikat: Cheats dialog +extern int globalCheatDisabled; +extern int disableAutoLSCheats; extern bool enableHUDrecording; extern bool disableMovieMessages; extern bool replaceP2StartWithMicrophone; @@ -466,6 +468,8 @@ static CFGSTRUCT fceuconfig[] = AC(backupSavestates), AC(compressSavestates), AC(pauseWhileActive), + AC(disableAutoLSCheats), + AC(globalCheatDisabled), AC(enableHUDrecording), AC(disableMovieMessages), AC(replaceP2StartWithMicrophone), diff --git a/src/drivers/win/debugger.cpp b/src/drivers/win/debugger.cpp index 1e9c5846..ea5d92fe 100644 --- a/src/drivers/win/debugger.cpp +++ b/src/drivers/win/debugger.cpp @@ -2475,11 +2475,11 @@ void UpdatePatcher(HWND hwndDlg){ /// Updates debugger controls that should be enabled/disabled if a game is loaded. /// @param enable Flag that indicates whether the menus should be enabled (1) or disabled (0). -void updateGameDependentMenusDebugger(unsigned int enable) { +void updateGameDependentMenusDebugger() { if (!hDebug) return; - //EnableWindow(GetDlgItem(hDebug,DEBUGLOADDEB),(enable ? 0 : 1)); + // EnableWindow(GetDlgItem(hDebug,DEBUGLOADDEB), GameInfo != 0 ? FALSE : TRUE); } void DoDebug(uint8 halt) @@ -2496,7 +2496,7 @@ void DoDebug(uint8 halt) ShowWindow(hDebug, SW_SHOWNORMAL); SetForegroundWindow(hDebug); - updateGameDependentMenusDebugger(GameInfo != 0); + updateGameDependentMenusDebugger(); if (GameInfo) UpdateDebugger(true); diff --git a/src/drivers/win/debugger.h b/src/drivers/win/debugger.h index befd1cff..3f07f5aa 100644 --- a/src/drivers/win/debugger.h +++ b/src/drivers/win/debugger.h @@ -43,7 +43,7 @@ void Disassemble(HWND hWnd, int id, int scrollid, unsigned int addr); void PrintOffsetToSeekAndBookmarkFields(int offset); void LoadGameDebuggerData(HWND hwndDlg); -void updateGameDependentMenusDebugger(unsigned int enable); +void updateGameDependentMenusDebugger(); extern bool inDebugger; diff --git a/src/drivers/win/header_editor.cpp b/src/drivers/win/header_editor.cpp index 91b050ac..02e4766c 100644 --- a/src/drivers/win/header_editor.cpp +++ b/src/drivers/win/header_editor.cpp @@ -139,7 +139,10 @@ bool LoadHeader(HWND parent, iNES_HEADER* header) OPEN_FAILED, INVALID_HEADER, FDS_HEADER, - UNIF_HEADER + UNIF_HEADER, + NSF_HEADER//, +// NSFE_HEADER, +// NSF2_HEADER }; FCEUFILE* fp = FCEU_fopen(LoadedRomFName, NULL, "rb", NULL); @@ -154,7 +157,13 @@ bool LoadHeader(HWND parent, iNES_HEADER* header) error = errors::FDS_HEADER; else if (!memcmp(header, "UNIF", 4)) error = errors::UNIF_HEADER; - else + else if (!memcmp(header, "NESM", 4)) + error = errors::NSF_HEADER; +/* else if (!memcmp(header, "NSFE", 4)) + error = errors::NSFE_HEADER; + else if (!memcmp(header, "NESM\2", 4)) + error = errors::NSF2_HEADER; +*/ else error = errors::INVALID_HEADER; FCEU_fclose(fp); } @@ -169,17 +178,23 @@ bool LoadHeader(HWND parent, iNES_HEADER* header) { char buf[1024]; sprintf(buf, "Error opening %s!", LoadedRomFName); - MessageBox(parent, buf, "iNES Header Editor", MB_ICONERROR | MB_OK); + MessageBox(parent, buf, "iNES Header Editor", MB_OK | MB_ICONERROR); break; } case errors::INVALID_HEADER: - MessageBox(parent, "Invalid iNES header.", "iNES Header Editor", MB_ICONERROR | MB_OK); + MessageBox(parent, "Invalid iNES header.", "iNES Header Editor", MB_OK | MB_ICONERROR); break; case errors::FDS_HEADER: - MessageBox(parent, "Editing header of an FDS file is not supported.", "iNES Header Editor", MB_ICONERROR | MB_OK); + MessageBox(parent, "Editing header of an FDS file is not supported.", "iNES Header Editor", MB_OK | MB_ICONERROR); break; case errors::UNIF_HEADER: - MessageBox(parent, "Editing header of a UNIF file is not supported.", "iNES Header Editor", MB_ICONERROR | MB_OK); + MessageBox(parent, "Editing header of a UNIF file is not supported.", "iNES Header Editor", MB_OK | MB_ICONERROR); + break; + case errors::NSF_HEADER: +// case errors::NSF2_HEADER: +// case errors::NSFE_HEADER: + MessageBox(parent, "Editing header of an NSF file is not supported.", "iNES Header Editor", MB_OK | MB_ICONERROR); + break; } return false; } @@ -505,7 +520,7 @@ LRESULT CALLBACK HeaderEditorProc(HWND hDlg, UINT uMsg, WPARAM wP, LPARAM lP) if (WriteHeaderData(hDlg, &newHeader)) { char path[4096] = { 0 }; - if (ShowINESFileBox(hDlg, true, path)) + if (ShowINESFileBox(hDlg, path, true)) SaveINESFile(hDlg, path, &newHeader); } } @@ -1493,7 +1508,7 @@ bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exa } // Warning: when in save mode, the content of buf might be overwritten by the save filename which user changed. -bool ShowINESFileBox(HWND parent, bool save, char* buf) +bool ShowINESFileBox(HWND parent, char* buf, bool save) { char *filename = NULL, *path = NULL; bool success = true; @@ -1532,19 +1547,20 @@ bool ShowINESFileBox(HWND parent, bool save, char* buf) if (success) { - OPENFILENAME ofDlg; - memset(&ofDlg, 0, sizeof(OPENFILENAME)); - ofDlg.lStructSize = sizeof(OPENFILENAME); - ofDlg.lpstrTitle = save ? "Save NES file" : "Open NES file"; - ofDlg.lpstrFilter = "NES ROM file(*.nes)\0*.nes\0All files(*.*)\0*.*\0\0"; - ofDlg.hInstance = fceu_hInstance; - ofDlg.hwndOwner = parent; - ofDlg.lpstrFile = filename; - ofDlg.nMaxFile = 2048; - ofDlg.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; - ofDlg.lpstrInitialDir = path; + OPENFILENAME ofn; + memset(&ofn, 0, sizeof(OPENFILENAME)); + ofn.lStructSize = sizeof(OPENFILENAME); + ofn.lpstrTitle = save ? "Save NES file" : "Open NES file"; + ofn.lpstrFilter = "NES ROM file (*.nes)\0*.nes\0All files (*.*)\0*.*\0\0"; + ofn.hInstance = fceu_hInstance; + ofn.hwndOwner = parent; + ofn.lpstrFile = filename; + ofn.nMaxFile = 2048; + ofn.Flags = OFN_EXPLORER | OFN_FILEMUSTEXIST | OFN_OVERWRITEPROMPT | OFN_HIDEREADONLY; + ofn.lpstrInitialDir = path; + ofn.lpstrDefExt = "nes"; - if (save ? GetSaveFileName(&ofDlg) : GetOpenFileName(&ofDlg)) + if (save ? GetSaveFileName(&ofn) : GetOpenFileName(&ofn)) strcpy(buf, filename); else success = false; diff --git a/src/drivers/win/header_editor.h b/src/drivers/win/header_editor.h index 828a1c30..ac5c4d75 100644 --- a/src/drivers/win/header_editor.h +++ b/src/drivers/win/header_editor.h @@ -5,7 +5,7 @@ extern HWND hHeadEditor; struct iNES_HEADER; HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header); -bool ShowINESFileBox(HWND parent, bool save = false, char* buf = NULL); +bool ShowINESFileBox(HWND parent, char* buf = NULL, bool save = false); void ToggleINES20(HWND hwnd, bool ines20); void ToggleExtendSystemList(HWND hwnd, bool enable); void ToggleVSSystemGroup(HWND hwnd, bool enable); diff --git a/src/drivers/win/main.cpp b/src/drivers/win/main.cpp index ef6b07a5..c573df0d 100644 --- a/src/drivers/win/main.cpp +++ b/src/drivers/win/main.cpp @@ -470,7 +470,7 @@ void DoFCEUExit() if (FCEUMOV_Mode(MOVIEMODE_TASEDITOR) && !exitTASEditor()) return; - if (CloseMemoryWatch() && AskSave()) //If user was asked to save changes in the memory watch dialog or ram watch, and chose cancel, don't close FCEUX! + if (CloseMemoryWatch() && AskSaveRamWatch()) //If user was asked to save changes in the memory watch dialog or ram watch, and chose cancel, don't close FCEUX! { if(goptions & GOO_CONFIRMEXIT) { diff --git a/src/drivers/win/memview.cpp b/src/drivers/win/memview.cpp index 74b71089..3a41a495 100644 --- a/src/drivers/win/memview.cpp +++ b/src/drivers/win/memview.cpp @@ -316,7 +316,7 @@ static int GetFileData(uint32 offset){ } static int WriteFileData(uint32 addr,int data){ - if (addr < 16) MessageBox(hMemView, "Use iNES Header Editor to edit the header.", "Sorry", MB_OK | MB_ICONASTERISK); + if (addr < 16) MessageBox(hMemView, "You can't edit ROM header here, however you can use iNES Header Editor to edit the header if it's an iNES format file.", "Sorry", MB_OK | MB_ICONERROR); if((addr >= 16) && (addr < PRGsize[0]+16)) *(uint8 *)(GetNesPRGPointer(addr-16)) = data; if((addr >= PRGsize[0]+16) && (addr < CHRsize[0]+PRGsize[0]+16)) *(uint8 *)(GetNesCHRPointer(addr-16-PRGsize[0])) = data; diff --git a/src/drivers/win/ramwatch.cpp b/src/drivers/win/ramwatch.cpp index 11769cf1..ea2b0886 100644 --- a/src/drivers/win/ramwatch.cpp +++ b/src/drivers/win/ramwatch.cpp @@ -234,7 +234,7 @@ void Update_RAM_Watch() } } -bool AskSave() +bool AskSaveRamWatch() { //This function asks to save changes if the watch file contents have changed //returns false only if a save was attempted but failed or was cancelled @@ -677,7 +677,7 @@ bool Load_Watches(bool clear) bool ResetWatches() { - if(!AskSave()) + if(!AskSaveRamWatch()) return false; for (;WatchCount >= 0; WatchCount--) { diff --git a/src/drivers/win/ramwatch.h b/src/drivers/win/ramwatch.h index 2df1638d..0bd53f15 100644 --- a/src/drivers/win/ramwatch.h +++ b/src/drivers/win/ramwatch.h @@ -6,7 +6,7 @@ extern bool AutoRWLoad; extern bool RWSaveWindowPos; #define MAX_RECENT_WATCHES 5 extern char rw_recent_files[MAX_RECENT_WATCHES][1024]; -extern bool AskSave(); +extern bool AskSaveRamWatch(); extern int ramw_x; extern int ramw_y; extern bool RWfileChanged; diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 30ebedd4..a55317bc 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -1978,48 +1978,51 @@ BEGIN LTEXT "New Selection Name:",-1,5,240,68,8 END -CHEATCONSOLE DIALOGEX 0, 0, 387, 218 +CHEATCONSOLE DIALOGEX 0, 0, 387, 226 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Cheat Search" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - GROUPBOX "Active Cheats",IDC_GROUPBOX_CHEATLIST,5,2,169,209,WS_TABSTOP - GROUPBOX "Cheat Search",IDC_GROUPBOX_CHEATSEARCH,180,2,201,198,WS_TABSTOP - CONTROL "",IDC_LIST_CHEATS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,11,11,157,133 - LTEXT "Name:",IDC_STATIC,12,149,22,10 - EDITTEXT IDC_CHEAT_NAME,37,147,131,12,ES_AUTOHSCROLL | ES_WANTRETURN - LTEXT "Address:",IDC_CHEAT_ADDRESS_LABEL,12,163,30,8 - EDITTEXT IDC_CHEAT_ADDR,44,161,25,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Value:",IDC_CHEAT_VAL_LABEL,73,163,22,8 - EDITTEXT IDC_CHEAT_VAL,97,161,16,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Compare:",IDC_CHEAT_COM_LABEL,117,163,34,8 - EDITTEXT IDC_CHEAT_COM,152,161,16,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Cheat code / Game Genie:",IDC_CHEAT_CODE_GG_LABEL,11,177,87,8 - EDITTEXT IDC_CHEAT_TEXT,105,175,63,12,ES_UPPERCASE | ES_AUTOHSCROLL - DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,7,192,30,16 - PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,37,192,30,16 - PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,67,192,30,16 - PUSHBUTTON "Import...",IDC_BTN_CHEAT_ADDFROMFILE,100,192,36,16 - PUSHBUTTON "Export...",IDC_BTN_CHEAT_EXPORTTOFILE,136,192,36,16 + GROUPBOX "Active Cheats",IDC_GROUPBOX_CHEATLIST,5,2,169,219,WS_TABSTOP + CONTROL "Enable cheats",IDC_CHEAT_GLOBAL_SWITCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,12,58,10 + CONTROL "Auto load / save with game",IDC_CHEAT_AUTOLOADSAVE, + "Button",BS_AUTO3STATE | WS_TABSTOP,71,12,100,10 + CONTROL "",IDC_LIST_CHEATS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,11,24,157,133 + LTEXT "Name:",IDC_STATIC,12,162,22,10 + EDITTEXT IDC_CHEAT_NAME,37,160,131,12,ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "Address:",IDC_CHEAT_ADDRESS_LABEL,12,176,30,8 + EDITTEXT IDC_CHEAT_ADDR,44,174,25,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Value:",IDC_CHEAT_VAL_LABEL,73,176,22,8 + EDITTEXT IDC_CHEAT_VAL,97,174,16,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Compare:",IDC_CHEAT_COM_LABEL,117,176,34,8 + EDITTEXT IDC_CHEAT_COM,152,174,16,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Cheat code / Game Genie:",IDC_CHEAT_CODE_GG_LABEL,11,190,87,8 + EDITTEXT IDC_CHEAT_TEXT,105,188,63,12,ES_UPPERCASE | ES_AUTOHSCROLL + DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,7,202,30,16 + PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,37,202,30,16 + PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,67,202,30,16 + PUSHBUTTON "Import...",IDC_BTN_CHEAT_ADDFROMFILE,100,202,36,16 + PUSHBUTTON "Export...",IDC_BTN_CHEAT_EXPORTTOFILE,136,202,36,16 + GROUPBOX "Cheat Search",IDC_GROUPBOX_CHEATSEARCH,180,2,201,206,WS_TABSTOP PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,192,12,55,15 - PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,192,32,55,15 - LTEXT "0x",IDC_CHEAT_LABEL_KNOWN,217,51,9,8 - EDITTEXT IDC_CHEAT_VAL_KNOWN,228,49,18,12,ES_UPPERCASE - GROUPBOX "Previous Compare",IDC_GROUP_PREV_COM,185,63,69,132 - PUSHBUTTON "Equal",IDC_BTN_CHEAT_EQ,192,75,55,15,WS_GROUP - PUSHBUTTON "Not Equal",IDC_BTN_CHEAT_NE,192,96,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_NE_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,114,22,10 - EDITTEXT IDC_CHEAT_VAL_NE_BY,228,113,18,12,ES_UPPERCASE | ES_WANTRETURN - PUSHBUTTON "Greater Than",IDC_BTN_CHEAT_GT,192,129,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_GT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,147,22,10 - EDITTEXT IDC_CHEAT_VAL_GT_BY,228,146,18,12,ES_UPPERCASE | ES_WANTRETURN - PUSHBUTTON "Less Than",IDC_BTN_CHEAT_LT,192,162,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_LT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,180,22,10 - EDITTEXT IDC_CHEAT_VAL_LT_BY,228,179,18,12,ES_UPPERCASE | ES_WANTRETURN - GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,258,8,117,187,WS_TABSTOP - CONTROL "",IDC_CHEAT_LIST_POSSIBILITIES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,264,18,106,172 - CONTROL " Pause emulation when this window is active",IDC_CHEAT_PAUSEWHENACTIVE, - "Button",BS_AUTOCHECKBOX,180,202,157,10 + PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,192,36,55,15 + LTEXT "0x",IDC_CHEAT_LABEL_KNOWN,217,55,9,8 + EDITTEXT IDC_CHEAT_VAL_KNOWN,228,53,18,12,ES_UPPERCASE + GROUPBOX "Previous Compare",IDC_GROUP_PREV_COM,185,68,69,135 + PUSHBUTTON "Equal",IDC_BTN_CHEAT_EQ,192,79,55,15,WS_GROUP + PUSHBUTTON "Not Equal",IDC_BTN_CHEAT_NE,192,99,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_NE_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,117,22,10 + EDITTEXT IDC_CHEAT_VAL_NE_BY,228,116,18,12,ES_UPPERCASE | ES_WANTRETURN + PUSHBUTTON "Greater Than",IDC_BTN_CHEAT_GT,192,134,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_GT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,152,22,10 + EDITTEXT IDC_CHEAT_VAL_GT_BY,228,151,18,12,ES_UPPERCASE | ES_WANTRETURN + PUSHBUTTON "Less Than",IDC_BTN_CHEAT_LT,192,169,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_LT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,187,22,10 + EDITTEXT IDC_CHEAT_VAL_LT_BY,228,186,18,12,ES_UPPERCASE | ES_WANTRETURN + GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,258,8,117,195,WS_TABSTOP + CONTROL "",IDC_CHEAT_LIST_POSSIBILITIES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,264,18,106,179 + CONTROL "Pause emulation when this window is active",IDC_CHEAT_PAUSEWHENACTIVE, + "Button",BS_AUTOCHECKBOX,180,211,157,10 END IDD_LUA DIALOGEX 0, 0, 270, 150 @@ -2511,7 +2514,7 @@ BEGIN "CHEATCONSOLE", DIALOG BEGIN RIGHTMARGIN, 386 - BOTTOMMARGIN, 217 + BOTTOMMARGIN, 225 END "VIDEOCONFIG", DIALOG diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index 2513aea3..31385be4 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -473,6 +473,7 @@ #define IDSAVE 1012 #define MW_ADDR04 1013 #define IDC_CHECK1 1013 +#define IDC_CHEAT_AUTOLOADSAVE 1013 #define IDC_RESTORE_BUTTON 1014 #define MW_ADDR05 1016 #define IDC_PRGROM_COMBO 1018 @@ -536,7 +537,7 @@ #define IDC_RADIO_VERSION_INES20 1073 #define IDC_VERSION_GROUP 1074 #define IDC_MAPPER_GROUP 1075 -#define IDC_CHECK_BATTERYNVRAM 1076 +#define IDC_CHECK_BATTERYNVRAM 1076 #define IDC_INPUT_DEVICE_TEXT 1077 #define IDC_PRG_GROUP 1078 #define IDC_CHR_GROUP 1079 @@ -545,11 +546,13 @@ #define IDC_CHECK_UNOFFICIAL_EXTRA_REGION 1083 #define IDC_CHECK_UNOFFICIAL_BUS_CONFLICT 1084 #define IDC_CHECK_UNOFFICIAL 1085 -#define IDC_MISCELLANEOUS_ROMS_TEXT 1086 -#define IDC_MISCELLANEOUS_ROMS_EDIT 1087 +#define IDC_MISCELLANEOUS_ROMS_TEXT 1086 +#define IDC_MISCELLANEOUS_ROMS_EDIT 1087 #define IDC_EXTEND_SYSTEM_GROUP 1089 #define IDC_EXTEND_SYSTEM_TEXT 1090 #define IDC_BUTTON1 1094 +#define IDC_CHEAT_SWITCH 1096 +#define IDC_CHEAT_GLOBAL_SWITCH 1096 #define BTN_ALLOW_LRUD 1117 #define BTN_PRESET_SET1 1119 #define BTN_PRESET_SET2 1120 @@ -766,7 +769,7 @@ #define IDC_CHEAT_VAL_LABEL 1314 #define IDC_CHEAT_COM_LABEL 1315 #define IDC_CHEAT_LABEL_KNOWN 1316 -#define MENU_INESHEADEREDITOR 40001 +#define MENU_INESHEADEREDITOR 40001 #define MENU_NETWORK 40040 #define MENU_PALETTE 40041 #define MENU_SOUND 40042 @@ -1062,7 +1065,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 305 #define _APS_NEXT_COMMAND_VALUE 40002 -#define _APS_NEXT_CONTROL_VALUE 1095 +#define _APS_NEXT_CONTROL_VALUE 1097 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/drivers/win/taseditor.cpp b/src/drivers/win/taseditor.cpp index d0daa0f8..5b8db1b5 100644 --- a/src/drivers/win/taseditor.cpp +++ b/src/drivers/win/taseditor.cpp @@ -299,11 +299,11 @@ BOOL CALLBACK newProjectProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM l break; case IDC_COPY_INPUT: p->copyCurrentInput ^= 1; - CheckDlgButton(hwndDlg, IDC_COPY_INPUT, p->copyCurrentInput?MF_CHECKED : MF_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_COPY_INPUT, p->copyCurrentInput? BST_CHECKED : BST_UNCHECKED); break; case IDC_COPY_MARKERS: p->copyCurrentMarkers ^= 1; - CheckDlgButton(hwndDlg, IDC_COPY_MARKERS, p->copyCurrentMarkers?MF_CHECKED : MF_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_COPY_MARKERS, p->copyCurrentMarkers? BST_CHECKED : BST_UNCHECKED); break; case IDOK: { @@ -792,7 +792,7 @@ BOOL CALLBACK ExportProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPara break; } } - CheckDlgButton(hwndDlg, IDC_NOTES_TO_SUBTITLES, taseditorConfig.lastExportedSubtitlesStatus?MF_CHECKED : MF_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_NOTES_TO_SUBTITLES, taseditorConfig.lastExportedSubtitlesStatus ? BST_CHECKED : BST_UNCHECKED); return TRUE; case WM_COMMAND: switch (LOWORD(wParam)) @@ -808,7 +808,7 @@ BOOL CALLBACK ExportProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM lPara break; case IDC_NOTES_TO_SUBTITLES: taseditorConfig.lastExportedSubtitlesStatus ^= 1; - CheckDlgButton(hwndDlg, IDC_NOTES_TO_SUBTITLES, taseditorConfig.lastExportedSubtitlesStatus?MF_CHECKED : MF_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_NOTES_TO_SUBTITLES, taseditorConfig.lastExportedSubtitlesStatus ? BST_CHECKED : BST_UNCHECKED); break; case IDOK: EndDialog(hwndDlg, 1); diff --git a/src/drivers/win/taseditor/markers_manager.cpp b/src/drivers/win/taseditor/markers_manager.cpp index 654a46c4..25d485e7 100644 --- a/src/drivers/win/taseditor/markers_manager.cpp +++ b/src/drivers/win/taseditor/markers_manager.cpp @@ -630,7 +630,7 @@ BOOL CALLBACK findNoteWndProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM if (taseditorConfig.findnoteWindowY == -32000) taseditorConfig.findnoteWindowY = 0; SetWindowPos(hwndDlg, 0, taseditorConfig.findnoteWindowX, taseditorConfig.findnoteWindowY, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); - CheckDlgButton(hwndDlg, IDC_MATCH_CASE, taseditorConfig.findnoteMatchCase?MF_CHECKED : MF_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_MATCH_CASE, taseditorConfig.findnoteMatchCase ? BST_CHECKED : BST_UNCHECKED); if (taseditorConfig.findnoteSearchUp) Button_SetCheck(GetDlgItem(hwndDlg, IDC_RADIO_UP), BST_CHECKED); else @@ -680,7 +680,7 @@ BOOL CALLBACK findNoteWndProc(HWND hwndDlg, UINT message, WPARAM wParam, LPARAM break; case IDC_MATCH_CASE: taseditorConfig.findnoteMatchCase ^= 1; - CheckDlgButton(hwndDlg, IDC_MATCH_CASE, taseditorConfig.findnoteMatchCase?MF_CHECKED : MF_UNCHECKED); + CheckDlgButton(hwndDlg, IDC_MATCH_CASE, taseditorConfig.findnoteMatchCase? BST_CHECKED : BST_UNCHECKED); break; case IDOK: { diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index bc68a776..bba22b8b 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -367,8 +367,9 @@ void CalcWindowSize(RECT *al) /// Updates the menu items that should only be enabled if a game is loaded. /// @param enable Flag that indicates whether the menus should be enabled (1) or disabled (0). -void updateGameDependentMenus(unsigned int enable) +void updateGameDependentMenus() { + // they are quite simple, enabled only when game is loaded const int menu_ids[]= { MENU_CLOSE_FILE, ID_FILE_SCREENSHOT, @@ -396,10 +397,14 @@ void updateGameDependentMenus(unsigned int enable) ID_TOOLS_TEXTHOOKER }; + bool enable = GameInfo != 0; for (unsigned int i = 0; i < sizeof(menu_ids) / sizeof(*menu_ids); i++) - { - EnableMenuItem(fceumenu, menu_ids[i], MF_BYCOMMAND | (enable ? MF_ENABLED : MF_GRAYED)); - } + EnableMenuItem(fceumenu, menu_ids[i], MF_BYCOMMAND | enable ? MF_ENABLED : MF_GRAYED | MF_DISABLED); + + // Special treatment for the iNES head editor, only when no game is loaded or an NES game is loaded + extern iNES_HEADER head; + enable = GameInfo == 0 || !strncmp((const char*)&head, "NES\x1A", 4); + EnableMenuItem(fceumenu, MENU_INESHEADEREDITOR, MF_BYCOMMAND | enable ? MF_ENABLED : MF_GRAYED | MF_DISABLED); } //Updates menu items which need to be checked or unchecked. @@ -1059,8 +1064,8 @@ void CloseGame() { FCEUI_CloseGame(); KillMemView(); - updateGameDependentMenus(GameInfo != 0); - updateGameDependentMenusDebugger(GameInfo != 0); + updateGameDependentMenus(); + updateGameDependentMenusDebugger(); SetMainWindowText(); } } @@ -1121,8 +1126,8 @@ bool ALoad(const char *nameo, char* innerFilename, bool silent) SetMainWindowText(); ParseGIInput(GameInfo); - updateGameDependentMenus(GameInfo != 0); - updateGameDependentMenusDebugger(GameInfo != 0); + updateGameDependentMenus(); + updateGameDependentMenusDebugger(); EmulationPaused = oldPaused; return true; } @@ -2682,8 +2687,8 @@ int CreateMainWindow() UpdateLuaRMenu(recentluamenu, recent_lua, MENU_LUA_RECENT, LUA_FIRST_RECENT_FILE); UpdateMovieRMenu(recentmoviemenu, recent_movie, MENU_MOVIE_RECENT, MOVIE_FIRST_RECENT_FILE); - updateGameDependentMenus(0); - updateGameDependentMenusDebugger(0); + updateGameDependentMenus(); + updateGameDependentMenusDebugger(); if (MainWindow_wndx==-32000) MainWindow_wndx=0; //Just in case if (MainWindow_wndy==-32000) MainWindow_wndy=0; hAppWnd = CreateWindowEx( diff --git a/src/fceu.cpp b/src/fceu.cpp index 4a09a056..4153c04d 100644 --- a/src/fceu.cpp +++ b/src/fceu.cpp @@ -189,7 +189,12 @@ static void FCEU_CloseGame(void) } if (GameInfo->type != GIT_NSF) { - FCEU_FlushGameCheats(0, 0); + if (disableAutoLSCheats == 2) + FCEU_FlushGameCheats(0, 1); + else if (disableAutoLSCheats == 1) + AskSaveCheat(); + else if (disableAutoLSCheats == 0) + FCEU_FlushGameCheats(0, 0); } GameInterface(GI_CLOSE); @@ -521,7 +526,7 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen FCEUI_printf("NTSC mode set"); } - if (GameInfo->type != GIT_NSF) + if (GameInfo->type != GIT_NSF && !disableAutoLSCheats) FCEU_LoadGameCheats(0); if (AutoResumePlay) From 29b36a801d8522c62b8a935453ce53b33ddf8e0c Mon Sep 17 00:00:00 2001 From: owomomo Date: Wed, 12 Jun 2019 22:16:01 +0800 Subject: [PATCH 09/21] Cheat console: 1. Added a global switch for all cheats, it is checked by default. Check or uncheck it can quickly tweak all cheats enabled or disabled. It's not game specific and effective to all games. 2. Added a checkmark to check behaviour of automatically load cheats. 3. Fixed a wierd bug in loading names of cheats from file. iNES Header Editor: 4. Disable iNES header editor menu when currently loaded game is not in iNES format. Others: 5. Some of the checkbox passed parameter MF_CHECKED, the right one is BST_CHECKED, though they have the same value. 6. Code/Data Logger is created by CreateDialog(), but destroyed by EndDialog()? A non-modal window should be destroy by DestroyWindow(), EndDialog() is for DialogBox(). It seems nobody noticed this bug for years. 7. Detail. Currently there are some opposite tweaks in the config file for the new feature in cheat console, for example the unchcecked state is 1 in config file, that's for backward compatibility. The iNES header editor might not quite stable as newly baked from the oven, there might be some improvements to its code. --- src/cheat.h | 3 +++ src/driver.h | 1 - src/drivers/common/cheat.h | 4 +++- src/drivers/win/cheat.cpp | 3 ++- src/drivers/win/cheat.h | 4 +++- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/cheat.h b/src/cheat.h index 9e8476b4..84e75ef7 100644 --- a/src/cheat.h +++ b/src/cheat.h @@ -1,3 +1,5 @@ +#ifndef CHEAT_H +#define CHEAT_H void FCEU_CheatResetRAM(void); void FCEU_CheatAddRAM(int s, uint32 A, uint8 *p); @@ -59,3 +61,4 @@ struct SEARCHPOSSIBLE { for (int i = 0; i < numsubcheats && count < size; ++i) \ if (SubCheats[i].addr >= address && SubCheats[i].addr < address + size) \ ++count +#endif \ No newline at end of file diff --git a/src/driver.h b/src/driver.h index 4ce67eeb..496ab636 100644 --- a/src/driver.h +++ b/src/driver.h @@ -192,7 +192,6 @@ int FCEUI_AddCheat(const char *name, uint32 addr, uint8 val, int compare, int ty int FCEUI_DelCheat(uint32 which); int FCEUI_ToggleCheat(uint32 which); int FCEUI_GlobalToggleCheat(int global_enable); -void FCEU_SaveGameCheats(FILE *fp, int release = 0); int32 FCEUI_CheatSearchGetCount(void); void FCEUI_CheatSearchGetRange(uint32 first, uint32 last, int (*callb)(uint32 a, uint8 last, uint8 current)); diff --git a/src/drivers/common/cheat.h b/src/drivers/common/cheat.h index 77619fe3..d8dc8f60 100644 --- a/src/drivers/common/cheat.h +++ b/src/drivers/common/cheat.h @@ -17,5 +17,7 @@ * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ - +#ifndef COMMON_CHEAT_H +#define COMMON_CHEAT_H void DoConsoleCheatConfig(void); +#endif \ No newline at end of file diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index d6eb59d6..b6cd9b27 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -975,8 +975,9 @@ void UpdateCheatListGroupBoxUI() EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADD), FALSE); EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_ADDFROMFILE), FALSE); } - SetDlgItemText(hCheat, IDC_GROUPBOX_CHEATLIST, temp); + + EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_EXPORTTOFILE), cheats != 0); } //Used by cheats and external dialogs such as hex editor to update items in the cheat search dialog diff --git a/src/drivers/win/cheat.h b/src/drivers/win/cheat.h index 7552746c..af9d7689 100644 --- a/src/drivers/win/cheat.h +++ b/src/drivers/win/cheat.h @@ -1,5 +1,7 @@ //-- //mbg merge 7/18/06 had to make these extern +#ifndef WIN_CHEAT_H +#define WIN_CHEAT_H extern int CheatWindow,CheatStyle; //bbit edited: this line added extern HWND hCheat; @@ -44,4 +46,4 @@ SetDlgItemText(hwnd, IDC_CHEAT_VAL, (LPTSTR)"") & \ SetDlgItemText(hwnd, IDC_CHEAT_COM, (LPTSTR)"") & \ SetDlgItemText(hwnd, IDC_CHEAT_NAME, (LPTSTR)"") & \ SetDlgItemText(hwnd, IDC_CHEAT_TEXT, (LPTSTR)"")) - +#endif \ No newline at end of file From 17a36d9b9f91ed4bd4ee1d5e9d68930b10dd5107 Mon Sep 17 00:00:00 2001 From: owomomo Date: Fri, 14 Jun 2019 16:38:41 +0800 Subject: [PATCH 10/21] Slightly adjusted the UI of header editor. --- src/drivers/win/header_editor.cpp | 4 +- src/drivers/win/res.rc | 84 +++++++++++++++---------------- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/drivers/win/header_editor.cpp b/src/drivers/win/header_editor.cpp index 02e4766c..9b842a80 100644 --- a/src/drivers/win/header_editor.cpp +++ b/src/drivers/win/header_editor.cpp @@ -55,8 +55,8 @@ char* extConsoleList[] = { "V.R. Tech. VT02", "V.R. Tech. VT03", "V.R. Tech. VT09", - "VT32", - "VT369", + "V.R. Tech. VT32", + "V.R. Tech. VT369", "Reserved", "Reserved", "Reserved", diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index a55317bc..342a97e8 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -2273,35 +2273,35 @@ BEGIN CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,311,214 END -IDD_EDIT_HEADER DIALOGEX 0, 0, 305, 257 +IDD_EDIT_HEADER DIALOGEX 0, 0, 321, 258 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "iNES Header Editor" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - GROUPBOX "iNES Header",IDC_INESHEADER_GROUP,7,3,291,231,WS_DISABLED - GROUPBOX "Version",IDC_VERSION_GROUP,14,13,93,27,WS_DISABLED - CONTROL "Standard",IDC_RADIO_VERSION_STANDARD,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,20,25,41,10 - CONTROL "iNES 2.0",IDC_RADIO_VERSION_INES20,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,64,25,40,10 - GROUPBOX "Mapper",IDC_MAPPER_GROUP,112,13,179,27,WS_DISABLED - LTEXT "#:",IDC_MAPPER_TEXT,118,25,9,8,WS_DISABLED - COMBOBOX IDC_MAPPER_COMBO,130,22,112,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "Sub#:",IDC_SUBMAPPER_TEXT,246,25,21,8,WS_DISABLED - EDITTEXT IDC_SUBMAPPER_EDIT,268,21,15,14,ES_AUTOHSCROLL | WS_DISABLED - GROUPBOX "PRG",IDC_PRG_GROUP,14,42,277,27,WS_DISABLED + GROUPBOX "iNES Header",IDC_INESHEADER_GROUP,6,3,309,231,WS_DISABLED + GROUPBOX "Version",IDC_VERSION_GROUP,14,13,79,27,WS_DISABLED + CONTROL "iNES",IDC_RADIO_VERSION_STANDARD,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,20,24,27,10 + CONTROL "NES 2.0",IDC_RADIO_VERSION_INES20,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,51,24,38,10 + GROUPBOX "Mapper",IDC_MAPPER_GROUP,98,13,210,27,WS_DISABLED + LTEXT "Mapper#:",IDC_MAPPER_TEXT,104,24,33,8,WS_DISABLED + COMBOBOX IDC_MAPPER_COMBO,139,22,115,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "Sub#:",IDC_SUBMAPPER_TEXT,261,24,21,8,WS_DISABLED + EDITTEXT IDC_SUBMAPPER_EDIT,284,21,15,14,ES_AUTOHSCROLL | WS_DISABLED + GROUPBOX "PRG",IDC_PRG_GROUP,14,42,294,27,WS_DISABLED LTEXT "PRG ROM:",IDC_PRGROM_TEXT,20,53,34,8,WS_DISABLED - COMBOBOX IDC_PRGROM_COMBO,56,51,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "PRG RAM:",IDC_PRGRAM_TEXT,111,53,34,8,WS_DISABLED - COMBOBOX IDC_PRGRAM_COMBO,146,51,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - CONTROL "Battery-backed NVRAM",IDC_CHECK_BATTERYNVRAM,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,197,53,86,10 - LTEXT "PRG NVRAM:",IDC_PRGNVRAM_TEXT,197,53,42,8,WS_DISABLED - COMBOBOX IDC_PRGNVRAM_COMBO,242,51,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - GROUPBOX "CHR",IDC_CHR_GROUP,14,71,277,27,WS_DISABLED + COMBOBOX IDC_PRGROM_COMBO,57,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "PRG RAM:",IDC_PRGRAM_TEXT,115,53,34,8,WS_DISABLED + COMBOBOX IDC_PRGRAM_COMBO,151,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "Battery-backed NVRAM",IDC_CHECK_BATTERYNVRAM,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,211,53,86,10 + LTEXT "PRG NVRAM:",IDC_PRGNVRAM_TEXT,208,53,42,8,WS_DISABLED + COMBOBOX IDC_PRGNVRAM_COMBO,253,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + GROUPBOX "CHR",IDC_CHR_GROUP,14,71,294,27,WS_DISABLED LTEXT "CHR ROM:",IDC_CHRROM_TEXT,20,82,35,8,WS_DISABLED - COMBOBOX IDC_CHRROM_COMBO,56,80,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "CHR RAM:",IDC_CHRRAM_TEXT,111,82,34,8,WS_DISABLED - COMBOBOX IDC_CHRRAM_COMBO,146,80,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "CHR NVRAM:",IDC_CHRNVRAM_TEXT,197,82,43,8,WS_DISABLED - COMBOBOX IDC_CHRNVRAM_COMBO,242,80,42,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + COMBOBOX IDC_CHRROM_COMBO,57,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "CHR RAM:",IDC_CHRRAM_TEXT,115,82,34,8,WS_DISABLED + COMBOBOX IDC_CHRRAM_COMBO,151,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "CHR NVRAM:",IDC_CHRNVRAM_TEXT,207,82,43,8,WS_DISABLED + COMBOBOX IDC_CHRNVRAM_COMBO,253,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP GROUPBOX "Mirroring",IDC_MIRRORING_GROUP,14,102,59,46,WS_DISABLED CONTROL "Horizontal",IDC_RADIO_MIRR_HORIZONTAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,19,112,48,10 CONTROL "Vertical",IDC_RADIO_MIRR_VERTICAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,19,123,39,10 @@ -2312,32 +2312,32 @@ BEGIN CONTROL "PAL",IDC_RADIO_REGION_PAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,123,28,10 CONTROL "Dual",IDC_RADIO_REGION_DUAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,146,30,10 CONTROL "Dendy",IDC_RADIO_REGION_DENDY,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,134,33,10 - GROUPBOX "System",IDC_SYSTEM_GROUP,123,102,168,109,WS_DISABLED + GROUPBOX "System",IDC_SYSTEM_GROUP,123,102,184,109,WS_DISABLED CONTROL "Normal",IDC_RADIO_SYSTEM_NORMAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,129,114,34,10 - CONTROL "VS.",IDC_RADIO_SYSTEM_VS,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,166,114,21,10 - CONTROL "Playchoice-10",IDC_RADIO_SYSTEM_PLAYCHOICE10,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,192,114,56,10 - CONTROL "Extend",IDC_RADIO_SYSTEM_EXTEND,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,251,114,35,10 - GROUPBOX "Extend System",IDC_EXTEND_SYSTEM_GROUP,127,176,160,29,WS_DISABLED - LTEXT "Console:",IDC_EXTEND_SYSTEM_TEXT,133,189,29,8,WS_DISABLED - COMBOBOX IDC_SYSTEM_EXTEND_COMBO,165,186,115,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - GROUPBOX "VS. System",IDC_VS_SYSTEM_GROUP,127,126,160,46,WS_DISABLED - LTEXT "Hardware:",IDC_VS_SYSTEM_TEXT,134,138,35,8,WS_DISABLED - COMBOBOX IDC_VS_SYSTEM_COMBO,172,136,108,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "PPU:",IDC_VS_PPU_TEXT,134,155,16,8,WS_DISABLED - COMBOBOX IDC_VS_PPU_COMBO,154,154,126,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "VS. Sys",IDC_RADIO_SYSTEM_VS,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,167,114,37,10 + CONTROL "Playchoice-10",IDC_RADIO_SYSTEM_PLAYCHOICE10,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,208,114,56,10 + CONTROL "Extend",IDC_RADIO_SYSTEM_EXTEND,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,268,114,35,10 + GROUPBOX "Extend System",IDC_EXTEND_SYSTEM_GROUP,130,176,171,29,WS_DISABLED + LTEXT "Console:",IDC_EXTEND_SYSTEM_TEXT,136,189,29,8,WS_DISABLED + COMBOBOX IDC_SYSTEM_EXTEND_COMBO,168,186,127,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + GROUPBOX "VS. System",IDC_VS_SYSTEM_GROUP,130,126,171,46,WS_DISABLED + LTEXT "Hardware:",IDC_VS_SYSTEM_TEXT,136,138,35,8,WS_DISABLED + COMBOBOX IDC_VS_SYSTEM_COMBO,174,136,121,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "PPU:",IDC_VS_PPU_TEXT,136,155,16,8,WS_DISABLED + COMBOBOX IDC_VS_PPU_COMBO,155,154,140,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP CONTROL "iNES 1.0 Unofficial Properties",IDC_CHECK_UNOFFICIAL, "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,14,164,103,10 GROUPBOX "iNES 1.0 Unofficial Properties",IDC_UNOFFICIAL_GROUP,13,176,104,35,WS_DISABLED CONTROL "Dual region",IDC_CHECK_UNOFFICIAL_EXTRA_REGION,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,186,48,10 CONTROL "PRG RAM exists",IDC_CHECK_UNOFFICIAL_PRGRAM,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,70,188,43,17 CONTROL "Bus conflict",IDC_CHECK_UNOFFICIAL_BUS_CONFLICT,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,198,49,10 - LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,101,218,44,8,WS_DISABLED - COMBOBOX IDC_INPUT_DEVICE_COMBO,147,216,143,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,106,218,44,8,WS_DISABLED + COMBOBOX IDC_INPUT_DEVICE_COMBO,153,216,154,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP LTEXT "Misc. ROM(s)",IDC_MISCELLANEOUS_ROMS_TEXT,29,218,48,8,WS_DISABLED EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | WS_DISABLED - PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,7,236,44,14,WS_DISABLED - PUSHBUTTON "Save as...",IDSAVE,208,236,44,14,WS_DISABLED - DEFPUSHBUTTON "Close",IDCLOSE,254,236,44,14 + PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,6,237,44,14,WS_DISABLED + PUSHBUTTON "Save as...",IDSAVE,223,237,44,14,WS_DISABLED + DEFPUSHBUTTON "Close",IDCLOSE,270,237,44,14 END @@ -2558,9 +2558,9 @@ BEGIN IDD_EDIT_HEADER, DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 298 + RIGHTMARGIN, 314 TOPMARGIN, 7 - BOTTOMMARGIN, 250 + BOTTOMMARGIN, 251 END END #endif // APSTUDIO_INVOKED From 5a80b67e5767331051d47acebbf6fb64ec121c64 Mon Sep 17 00:00:00 2001 From: owomomo Date: Tue, 18 Jun 2019 01:02:55 +0800 Subject: [PATCH 11/21] Rip the dialog position calculating code to a function and use it in more dialogbox. --- src/drivers/win/cheat.cpp | 24 +++++--- src/drivers/win/cheat.h | 1 + src/drivers/win/header_editor.cpp | 13 +++-- src/drivers/win/header_editor.h | 2 +- src/drivers/win/luaconsole.cpp | 45 ++------------ src/drivers/win/main.cpp | 97 ++++++++++++++++++++++--------- src/drivers/win/ram_search.cpp | 27 +-------- src/drivers/win/ram_search.h | 1 + src/drivers/win/ramwatch.cpp | 47 +++------------ src/drivers/win/res.rc | 6 +- src/drivers/win/window.cpp | 40 +++++++++++++ src/drivers/win/window.h | 1 + 12 files changed, 157 insertions(+), 147 deletions(-) diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index b6cd9b27..27df7e23 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -294,9 +294,21 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l { case WM_INITDIALOG: { - if (ChtPosX == -32000) ChtPosX = 0; //Just in case - if (ChtPosY == -32000) ChtPosY = 0; - SetWindowPos(hwndDlg, 0, ChtPosX, ChtPosY, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); + POINT pt; + if (ChtPosX != 0 && ChtPosY != 0) + { + pt.x = ChtPosX; + pt.y = ChtPosY; + pt = CalcSubWindowPos(hwndDlg, &pt); + } + else + pt = CalcSubWindowPos(hwndDlg, NULL); + + ChtPosX = pt.x; + ChtPosY = pt.y; + + + // SetWindowPos(hwndDlg, 0, ChtPosX, ChtPosY, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); CheckDlgButton(hwndDlg, IDC_CHEAT_PAUSEWHENACTIVE, pauseWhileActive ? BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHEAT_GLOBAL_SWITCH, globalCheatDisabled ? BST_UNCHECKED : BST_CHECKED); @@ -1112,10 +1124,6 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) break; } break; - case WM_MOUSEMOVE: - break; - case WM_HSCROLL: - break; } return FALSE; } @@ -1213,7 +1221,7 @@ void DoGGConv() ShowWindow(hGGConv, SW_SHOWNORMAL); SetForegroundWindow(hGGConv); } else - hGGConv = CreateDialog(fceu_hInstance,"GGCONV",NULL,GGConvCallB); + hGGConv = CreateDialog(fceu_hInstance,"GGCONV", hAppWnd, GGConvCallB); } inline void GetCheatStr(char* buf, int a, int v, int c) diff --git a/src/drivers/win/cheat.h b/src/drivers/win/cheat.h index af9d7689..8545b4d2 100644 --- a/src/drivers/win/cheat.h +++ b/src/drivers/win/cheat.h @@ -32,6 +32,7 @@ void AskSaveCheat(); void SaveCheatAs(HWND hwnd, bool flush = false); void UpdateCheatRelatedWindow(); +extern POINT CalcSubWindowPos(HWND hDlg, POINT* conf); // deselect the old one and select the new one #define ListView_MoveSelectionMark(hwnd, prevIndex, newIndex) \ diff --git a/src/drivers/win/header_editor.cpp b/src/drivers/win/header_editor.cpp index 9b842a80..7548d8c3 100644 --- a/src/drivers/win/header_editor.cpp +++ b/src/drivers/win/header_editor.cpp @@ -471,13 +471,14 @@ LRESULT CALLBACK HeaderEditorProc(HWND hDlg, UINT uMsg, WPARAM wP, LPARAM lP) { header = (iNES_HEADER*)lP; if (!header) - { - if (GameInfo) - DestroyWindow(hDlg); - else - EndDialog(hDlg, 0); - } else + goto wm_close; + else InitHeaderEditDialog(hDlg, header); + + // Put the window aside the main window when in game. + if (GameInfo) + CalcSubWindowPos(hDlg, NULL); + } break; case WM_COMMAND: diff --git a/src/drivers/win/header_editor.h b/src/drivers/win/header_editor.h index ac5c4d75..ac62e9ae 100644 --- a/src/drivers/win/header_editor.h +++ b/src/drivers/win/header_editor.h @@ -21,5 +21,5 @@ bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exa bool SaveINESFile(HWND hwnd, char* path, iNES_HEADER* header); LRESULT CALLBACK HeaderEditorProc(HWND hDlg, UINT uMsg, WPARAM wP, LPARAM lP); void DoHeadEdit(); - +extern POINT CalcSubWindowPos(HWND hDlg, POINT* conf); #endif diff --git a/src/drivers/win/luaconsole.cpp b/src/drivers/win/luaconsole.cpp index eb9d3a10..6d36df34 100644 --- a/src/drivers/win/luaconsole.cpp +++ b/src/drivers/win/luaconsole.cpp @@ -102,9 +102,9 @@ void WinLuaOnStop(int hDlgAsInt) INT_PTR CALLBACK DlgLuaScriptDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam) { - RECT r; - RECT r2; - int dx1, dy1, dx2, dy2; +// RECT r; +// RECT r2; +// int dx1, dy1, dx2, dy2; switch (msg) { @@ -113,43 +113,10 @@ INT_PTR CALLBACK DlgLuaScriptDialog(HWND hDlg, UINT msg, WPARAM wParam, LPARAM l // remove the 30000 character limit from the console control SendMessage(GetDlgItem(hDlg, IDC_LUACONSOLE),EM_LIMITTEXT,0,0); - GetWindowRect(hAppWnd, &r); - dx1 = (r.right - r.left) / 2; - dy1 = (r.bottom - r.top) / 2; - - GetWindowRect(hDlg, &r2); - dx2 = (r2.right - r2.left) / 2; - dy2 = (r2.bottom - r2.top) / 2; - - //int windowIndex = 0;//std::find(LuaScriptHWnds.begin(), LuaScriptHWnds.end(), hDlg) - LuaScriptHWnds.begin(); - //int staggerOffset = windowIndex * 24; - //r.left += staggerOffset; - //r.right += staggerOffset; - //r.top += staggerOffset; - //r.bottom += staggerOffset; - - // push it away from the main window if we can - const int width = (r.right-r.left); - const int width2 = (r2.right-r2.left); - const int rspace = GetSystemMetrics(SM_CXSCREEN)- (r.left+width2+width); - if(rspace > r.left && r.left+width2 + width < GetSystemMetrics(SM_CXSCREEN)) - { - r.right += width; - r.left += width; - } - else if((int)r.left - (int)width2 > 0) - { - r.right -= width2; - r.left -= width2; - } - else if(r.left+width2 + width < GetSystemMetrics(SM_CXSCREEN)) - { - r.right += width; - r.left += width; - } - - SetWindowPos(hDlg, NULL, r.left, r.top, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW); + extern POINT CalcSubWindowPos(HWND hDlg, POINT* conf); + CalcSubWindowPos(hDlg, NULL); + RECT r3; GetClientRect(hDlg, &r3); windowInfo.width = r3.right - r3.left; diff --git a/src/drivers/win/main.cpp b/src/drivers/win/main.cpp index c573df0d..79c475af 100644 --- a/src/drivers/win/main.cpp +++ b/src/drivers/win/main.cpp @@ -316,23 +316,24 @@ int BlockingCheck() MSG msg; moocow = 1; - while( PeekMessage( &msg, 0, 0, 0, PM_NOREMOVE ) ) + while(PeekMessage(&msg, 0, 0, 0, PM_NOREMOVE)) { - if( GetMessage( &msg, 0, 0, 0)>0 ) + if(GetMessage(&msg, 0, 0, 0) > 0) { //other accelerator capable dialogs could be added here extern HWND hwndMemWatch; int handled = 0; - if(hCheat) - if(IsChild(hCheat, msg.hwnd)) - handled = IsDialogMessage(hCheat, &msg); - if(!handled && hMemFind) - { - if(IsChild(hMemFind, msg.hwnd)) - handled = IsDialogMessage(hMemFind, &msg); - } + extern HWND hGGConv; + bool debug = IsChild(hGGConv, msg.hwnd) && msg.message == WM_KEYDOWN; + + if(hCheat && IsChild(hCheat, msg.hwnd)) + handled = IsDialogMessage(hCheat, &msg); + + if(!handled && hMemFind && IsChild(hMemFind, msg.hwnd)) + handled = IsDialogMessage(hMemFind, &msg); + if(!handled && hwndMemWatch) { if(IsChild(hwndMemWatch,msg.hwnd)) @@ -340,68 +341,110 @@ int BlockingCheck() if(!handled) handled = IsDialogMessage(hwndMemWatch,&msg); } - if(!handled && RamSearchHWnd) - { + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 3); + + if(!handled && RamSearchHWnd && IsChild(RamSearchHWnd, msg.hwnd)) handled = IsDialogMessage(RamSearchHWnd, &msg); - } + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 4); + if(!handled && RamWatchHWnd) - { - if(IsDialogMessage(RamWatchHWnd, &msg)) - { + if(handled = IsDialogMessage(RamWatchHWnd, &msg)) if(msg.message == WM_KEYDOWN) // send keydown messages to the dialog (for accelerators, and also needed for the Alt key to work) SendMessage(RamWatchHWnd, msg.message, msg.wParam, msg.lParam); - handled = true; - } - } + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 5); if(!handled && taseditorWindow.hwndTASEditor) { if(taseditorEnableAcceleratorKeys) if(IsChild(taseditorWindow.hwndTASEditor, msg.hwnd)) handled = TranslateAccelerator(taseditorWindow.hwndTASEditor, fceu_hAccel, &msg); - if(!handled && taseditorWindow.hwndTASEditor){ + if(!handled){ handled = IsDialogMessage(taseditorWindow.hwndTASEditor, &msg); } } - if(!handled && taseditorWindow.hwndFindNote) - { - if(IsChild(taseditorWindow.hwndFindNote, msg.hwnd)) - handled = IsDialogMessage(taseditorWindow.hwndFindNote, &msg); - } + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 6); + + if(!handled && taseditorWindow.hwndFindNote && IsChild(taseditorWindow.hwndFindNote, msg.hwnd)) + handled = IsDialogMessage(taseditorWindow.hwndFindNote, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 7); extern HWND uug; if(!handled && uug && IsChild(uug, msg.hwnd)) handled = IsDialogMessage(uug, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 8); + if(!handled && pwindow && IsChild(pwindow, msg.hwnd)) handled = IsDialogMessage(pwindow, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 9); + if(!handled && hCDLogger && IsChild(hCDLogger, msg.hwnd)) handled = IsDialogMessage(hCDLogger, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 10); + if(!handled && hTracer && IsChild(hTracer, msg.hwnd)) handled = IsDialogMessage(hTracer, &msg); - extern HWND hGGConv; + + if (debug && !handled) + printf("GGConv unhandled WM_KEYDOWN: %d\n", 11); + if(!handled && hGGConv && IsChild(hGGConv, msg.hwnd)) handled = IsDialogMessage(hGGConv, &msg); + + if (debug) + if(!handled) + printf("GGConv unhandled WM_KEYDOWN: %d\n", 12); + else + printf("GGConv handled\n"); + if(!handled && hDebug && IsChild(hDebug, msg.hwnd)) handled = IsDialogMessage(hDebug, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 13); + extern HWND hPPUView; if(!handled && hPPUView && IsChild(hPPUView, msg.hwnd)) handled = IsDialogMessage(hPPUView, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 14); + extern HWND hNTView; if(!handled && hNTView && IsChild(hNTView, msg.hwnd)) handled = IsDialogMessage(hNTView, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 15); + extern HWND hTextHooker; if(!handled && hTextHooker && IsChild(hTextHooker, msg.hwnd)) handled = IsDialogMessage(hTextHooker, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 16); + extern HWND LuaConsoleHWnd; if(!handled && LuaConsoleHWnd && IsChild(LuaConsoleHWnd, msg.hwnd)) handled = IsDialogMessage(LuaConsoleHWnd, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 17); + extern HWND logwin; if(!handled && logwin && IsChild(logwin, msg.hwnd)) handled = IsDialogMessage(logwin, &msg); + + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 18); + extern HWND hHeadEditor; if (!handled && hHeadEditor && IsChild(hHeadEditor, msg.hwnd)) handled = IsDialogMessage(hHeadEditor, &msg); + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 19); + /* //adelikat - Currently no accel keys are used in the main window. Uncomment this block to activate them. if(!handled) if(msg.hwnd == hAppWnd) @@ -415,6 +458,8 @@ int BlockingCheck() */ if(!handled) { + if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 20); + TranslateMessage(&msg); DispatchMessage(&msg); } diff --git a/src/drivers/win/ram_search.cpp b/src/drivers/win/ram_search.cpp index a2e38a0c..1cff7fd0 100644 --- a/src/drivers/win/ram_search.cpp +++ b/src/drivers/win/ram_search.cpp @@ -1398,38 +1398,15 @@ static BOOL SelectingByKeyboard() LRESULT CALLBACK RamSearchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { - RECT r; - RECT r2; - int dx1, dy1, dx2, dy2; + static int watchIndex=0; switch(uMsg) { case WM_INITDIALOG: { RamSearchHWnd = hDlg; - GetWindowRect(hWnd, &r); - dx1 = (r.right - r.left) / 2; - dy1 = (r.bottom - r.top) / 2; + CalcSubWindowPos(hDlg, NULL); - GetWindowRect(hDlg, &r2); - dx2 = (r2.right - r2.left) / 2; - dy2 = (r2.bottom - r2.top) / 2; - - // push it away from the main window if we can - const int width = (r.right-r.left); - const int width2 = (r2.right-r2.left); - if(r.left+width2 + width < GetSystemMetrics(SM_CXSCREEN)) - { - r.right += width; - r.left += width; - } - else if((int)r.left - (int)width2 > 0) - { - r.right -= width2; - r.left -= width2; - } - - SetWindowPos(hDlg, NULL, r.left, r.top, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW); switch(rs_o) { case '<': diff --git a/src/drivers/win/ram_search.h b/src/drivers/win/ram_search.h index 122fa82c..dad324fa 100644 --- a/src/drivers/win/ram_search.h +++ b/src/drivers/win/ram_search.h @@ -30,6 +30,7 @@ void DoRamSearchOperation(); //Perform a search extern HWND RamSearchHWnd; extern LRESULT CALLBACK RamSearchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +extern POINT CalcSubWindowPos(HWND hDlg, POINT* conf); // Too much work to do for resorting the values, and finding the biggest number // by sorting in ram list doesn't help too much in usually use, so I gave it up. diff --git a/src/drivers/win/ramwatch.cpp b/src/drivers/win/ramwatch.cpp index ea2b0886..a3460046 100644 --- a/src/drivers/win/ramwatch.cpp +++ b/src/drivers/win/ramwatch.cpp @@ -1026,47 +1026,16 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam case WM_INITDIALOG: { - RECT r, r2; - int dx1, dy1, dx2, dy2; - - GetWindowRect(hWnd, &r); //Ramwatch window - dx1 = (r.right - r.left) / 2; - dy1 = (r.bottom - r.top) / 2; - - GetWindowRect(hDlg, &r2); // TASer window - dx2 = (r2.right - r2.left) / 2; - dy2 = (r2.bottom - r2.top) / 2; - - - // push it away from the main window if we can - const int width = (r.right-r.left); - const int height = (r.bottom - r.top); - const int width2 = (r2.right-r2.left); - if(r.left+width2 + width < GetSystemMetrics(SM_CXSCREEN)) + if (RWSaveWindowPos) { - r.right += width; - r.left += width; + POINT pt = { ramw_x, ramw_y }; + pt = CalcSubWindowPos(hDlg, &pt); + ramw_x = pt.x; + ramw_y = pt.y; } - else if((int)r.left - (int)width2 > 0) - { - r.right -= width2; - r.left -= width2; - } - - //----------------------------------------------------------------------------------- - //If user has Save Window Pos selected, override default positioning - if (RWSaveWindowPos) - { - //If ramwindow is for some reason completely off screen, use default instead - if (ramw_x > (-width*2) || ramw_x < (width*2 + GetSystemMetrics(SM_CYSCREEN)) ) - r.left = ramw_x; //This also ignores cases of windows -32000 error codes - //If ramwindow is for some reason completely off screen, use default instead - if (ramw_y > (0-height*2) ||ramw_y < (height*2 + GetSystemMetrics(SM_CYSCREEN)) ) - r.top = ramw_y; //This also ignores cases of windows -32000 error codes - } - //------------------------------------------------------------------------------------- - SetWindowPos(hDlg, NULL, r.left, r.top, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW); - + else + CalcSubWindowPos(hDlg, NULL); + ramwatchmenu=GetMenu(hDlg); rwrecentmenu=CreateMenu(); UpdateRW_RMenu(rwrecentmenu, RAMMENU_FILE_RECENT, RW_MENU_FIRST_RECENT_FILE); diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 342a97e8..ab93e342 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -12,11 +12,11 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// Neutral resources +// ·ÇÌØ¶¨ÓïÑÔ resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(1252) +#pragma code_page(936) ///////////////////////////////////////////////////////////////////////////// // @@ -2801,7 +2801,7 @@ END #endif // APSTUDIO_INVOKED -#endif // Neutral resources +#endif // ·ÇÌØ¶¨ÓïÑÔ resources ///////////////////////////////////////////////////////////////////////////// diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index bba22b8b..e31f199d 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -3220,3 +3220,43 @@ void UpdateSortColumnIcon(HWND hwndListView, int sortColumn, bool sortAsc) } } } + +// Push the window away from the main FCEUX window +POINT CalcSubWindowPos(HWND hDlg, POINT* conf) +{ + POINT pt; // dialog position + RECT wR, dR; // Window rect, dialog rect + + + // Try to calc the default position, it doesn't overlap the main window and ensure it's in the screen; + GetWindowRect(hAppWnd, &wR); + GetWindowRect(hDlg, &dR); + + pt.x = wR.left; + pt.y = wR.top; + + LONG wW = wR.right - wR.left; // window width + LONG dW = dR.right - dR.left; // dialog width + + if (pt.x + wW + dW < GetSystemMetrics(SM_CXSCREEN)) + pt.x += wW; // if there is enough place for the dialog on the right, put the dialog there + else if (pt.x - dW > 0) + pt.x -= dW; // otherwise, we check if we can put it on the left + + // If the dialog has a configured window position, override the default position + if (conf) + { + LONG wH = wR.bottom - wR.top; + // It is overrided only when the configured position is not completely off screen + if (conf->x > -wW * 2 || conf->x < wW * 2 + GetSystemMetrics(SM_CXSCREEN)) + pt.x = conf->x; + if (conf->y > -wH * 2 || conf->y < wH * 2 + GetSystemMetrics(SM_CYSCREEN)) + pt.y = conf->y; + } + + // finally set the window position + SetWindowPos(hDlg, NULL, pt.x, pt.y, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW); + + // return the calculated point, maybe the caller can use it for further. + return pt; +} \ No newline at end of file diff --git a/src/drivers/win/window.h b/src/drivers/win/window.h index 3aad189b..e3f2d4d4 100644 --- a/src/drivers/win/window.h +++ b/src/drivers/win/window.h @@ -38,6 +38,7 @@ void SetMainWindowStuff(); void GetMouseData(uint32 (&md)[3]); void GetMouseRelative(int32 (&md)[3]); //void ChangeMenuItemText(int menuitem, string text); +POINT CalcSubWindowPos(HWND hDlg, POINT* conf); template inline std::string GetDlgItemText(HWND hDlg, int nIDDlgItem) { From 4adb28e1d37f5be05b20158889aae7920afc5703 Mon Sep 17 00:00:00 2001 From: owomomo Date: Tue, 18 Jun 2019 11:48:32 +0800 Subject: [PATCH 12/21] ... --- src/drivers/win/cheat.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index 27df7e23..639f719e 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -1030,6 +1030,8 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_COMP, EM_SETLIMITTEXT, 2, 0); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_VAL, EM_SETLIMITTEXT, 2, 0); + + SetWindowLong() break; case WM_CLOSE: case WM_QUIT: From 9fd9841d6fceeed87f51a8aa632563676f8cb74f Mon Sep 17 00:00:00 2001 From: owomomo Date: Tue, 18 Jun 2019 11:50:28 +0800 Subject: [PATCH 13/21] ... --- src/drivers/win/cheat.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index 639f719e..4d6efde9 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -1031,7 +1031,7 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_VAL, EM_SETLIMITTEXT, 2, 0); - SetWindowLong() + break; case WM_CLOSE: case WM_QUIT: From cc31ee1a3788617565f3f9f04fc705bad4f65656 Mon Sep 17 00:00:00 2001 From: owomomo Date: Tue, 18 Jun 2019 16:56:10 +0800 Subject: [PATCH 14/21] 1. Experimental limit the input characters for some edit control. 2. Removed HWND pwindow, since it's ambiguous and not too much used. The pallete window use it's own global HWND variable. --- src/drivers/win/cheat.cpp | 119 +++++++++++++++++++++++++++++++++--- src/drivers/win/cheat.h | 6 ++ src/drivers/win/main.cpp | 80 ++++++++++-------------- src/drivers/win/netplay.cpp | 2 +- src/drivers/win/palette.cpp | 13 ++-- src/drivers/win/window.cpp | 2 +- src/drivers/win/window.h | 2 +- src/input.cpp | 4 +- src/movie.cpp | 3 +- 9 files changed, 158 insertions(+), 73 deletions(-) diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index 4d6efde9..4348241a 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -29,8 +29,8 @@ #include "../../cheat.h" // For FCEU_LoadGameCheats() #include -static HWND pwindow = 0; //Handle to Cheats dialog -HWND hCheat = 0; //mbg merge 7/19/06 had to add +// static HWND pwindow = 0; // owomomo: removed pwindow because ambiguous, perhaps it is some obseleted early future plan from half developed old FCEUX? +HWND hCheat = 0; //Handle to Cheats dialog HMENU hCheatcontext = 0; //Handle to cheat context menu bool pauseWhileActive = false; //For checkbox "Pause while active" @@ -68,10 +68,12 @@ int GGaddr, GGcomp, GGval; char GGcode[10]; int GGlist[GGLISTSIZE]; static int dontupdateGG; //this eliminates recursive crashing +static char* ggLets = "APZLGITYEOXUKSVN"; // bool dodecode; HWND hGGConv; +WNDPROC DefaultGGConvWndProc; void EncodeGG(char *str, int a, int v, int c); void ListGGAddresses(); @@ -946,7 +948,7 @@ void ConfigCheats(HWND hParent) selcheat = -1; CheatWindow = 1; if (CheatStyle) - pwindow = hCheat = CreateDialog(fceu_hInstance, "CHEATCONSOLE", hParent, CheatConsoleCallB); + hCheat = CreateDialog(fceu_hInstance, "CHEATCONSOLE", hParent, CheatConsoleCallB); else DialogBox(fceu_hInstance, "CHEATCONSOLE", hParent, CheatConsoleCallB); UpdateCheatsAdded(); @@ -960,10 +962,10 @@ void ConfigCheats(HWND hParent) void UpdateCheatList() { - if (!pwindow) + if (!hCheat) return; else - ShowResults(pwindow); + ShowResults(hCheat); } void UpdateCheatListGroupBoxUI() @@ -1030,7 +1032,7 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_COMP, EM_SETLIMITTEXT, 2, 0); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_VAL, EM_SETLIMITTEXT, 2, 0); - + DefaultGGConvWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_GAME_GENIE_CODE), GWL_WNDPROC, (LONG)GGConvCustomWndProc); break; case WM_CLOSE: @@ -1130,12 +1132,111 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) return FALSE; } +LRESULT APIENTRY GGConvCustomWndProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP) +{ + bool through = true; + LRESULT result = 0; + + switch (msg) + { + case WM_PASTE: + { + switch (GetDlgCtrlID(GetFocus())) + { + case IDC_GAME_GENIE_CODE: + printf("PASTE\n"); + if (OpenClipboard(hDlg)) + { + HANDLE handle = GetClipboardData(CF_TEXT); + if (handle) + { + + // copy the original clipboard string + char* clipStr = (char*)GlobalLock(handle); + char* original = (char*)calloc(1, strlen(clipStr) + 1); + strcpy(original, clipStr); + GlobalUnlock(handle); + + // filter it out + char filtered[9] = { 0 }; + int filteredIndex = 0, origIndex = 0; + while (clipStr[origIndex] && filteredIndex < 9) + { + for (int i = 0; ggLets[i]; ++i) + { + if (toupper(clipStr[origIndex]) == ggLets[i]) + { + filtered[filteredIndex] = clipStr[origIndex]; + ++filteredIndex; + } + } + ++origIndex; + } + + // copy filtered str to clipboard + EmptyClipboard(); + HANDLE hNewStr = GlobalAlloc(GMEM_MOVEABLE, 9); + char* newStr = (char*)GlobalLock(hNewStr); + strcpy(newStr, filtered); + GlobalUnlock(hNewStr); + SetClipboardData(CF_TEXT, hNewStr); + + // end + CloseClipboard(); + result = CallWindowProc(DefaultGGConvWndProc, hDlg, msg, wP, lP); + through = false; + + // set it back to normal + if (OpenClipboard(hDlg)) + { + handle = GetClipboardData(CF_TEXT); + if (handle) + { + EmptyClipboard(); + HANDLE hOldStr = GlobalAlloc(GMEM_MOVEABLE, strlen(original) + 1); + char* oldStr = (char*)GlobalLock(hOldStr); + strcpy(oldStr, original); + GlobalUnlock(hOldStr); + SetClipboardData(CF_TEXT, hOldStr); + } + CloseClipboard(); + } + + // end + free(original); + } + } + } + } + break; + case WM_CHAR: + { + switch (GetDlgCtrlID(GetFocus())) + { + case IDC_GAME_GENIE_CODE: + { + through = wP == VK_BACK || GetKeyState(VK_CONTROL) & 0x8000; + if (!through) + for (int i = 0; ggLets[i]; ++i) + if (toupper(wP) == ggLets[i]) + { + through = true; + break; + } + } + + } + } + } + + return through ? CallWindowProc(DefaultGGConvWndProc, hDlg, msg, wP, lP) : result; +} + //The code in this function is a modified version //of Chris Covell's work - I'd just like to point that out void EncodeGG(char *str, int a, int v, int c) { uint8 num[8]; - static char lets[16]={'A','P','Z','L','G','I','T','Y','E','O','X','U','K','S','V','N'}; int i; a&=0x7fff; @@ -1149,14 +1250,14 @@ void EncodeGG(char *str, int a, int v, int c) if (c == -1){ num[5]+=v&8; - for(i = 0;i < 6;i++)str[i] = lets[num[i]]; + for(i = 0;i < 6;i++)str[i] = ggLets[num[i]]; str[6] = 0; } else { num[2]+=8; num[5]+=c&8; num[6]=(c&7)+((c>>4)&8); num[7]=((c>>4)&7)+(v&8); - for(i = 0;i < 8;i++)str[i] = lets[num[i]]; + for(i = 0;i < 8;i++)str[i] = ggLets[num[i]]; str[8] = 0; } return; diff --git a/src/drivers/win/cheat.h b/src/drivers/win/cheat.h index 8545b4d2..ee5a818c 100644 --- a/src/drivers/win/cheat.h +++ b/src/drivers/win/cheat.h @@ -34,6 +34,11 @@ void SaveCheatAs(HWND hwnd, bool flush = false); void UpdateCheatRelatedWindow(); extern POINT CalcSubWindowPos(HWND hDlg, POINT* conf); +extern BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); +extern WNDPROC DefaultGGConvWndProc; +extern LRESULT APIENTRY GGConvCustomWndProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP); + + // deselect the old one and select the new one #define ListView_MoveSelectionMark(hwnd, prevIndex, newIndex) \ LVITEM lvi; \ @@ -47,4 +52,5 @@ SetDlgItemText(hwnd, IDC_CHEAT_VAL, (LPTSTR)"") & \ SetDlgItemText(hwnd, IDC_CHEAT_COM, (LPTSTR)"") & \ SetDlgItemText(hwnd, IDC_CHEAT_NAME, (LPTSTR)"") & \ SetDlgItemText(hwnd, IDC_CHEAT_TEXT, (LPTSTR)"")) + #endif \ No newline at end of file diff --git a/src/drivers/win/main.cpp b/src/drivers/win/main.cpp index 79c475af..32e9a005 100644 --- a/src/drivers/win/main.cpp +++ b/src/drivers/win/main.cpp @@ -321,41 +321,37 @@ int BlockingCheck() if(GetMessage(&msg, 0, 0, 0) > 0) { //other accelerator capable dialogs could be added here - extern HWND hwndMemWatch; - int handled = 0; - extern HWND hGGConv; - bool debug = IsChild(hGGConv, msg.hwnd) && msg.message == WM_KEYDOWN; - + // Cheat console if(hCheat && IsChild(hCheat, msg.hwnd)) handled = IsDialogMessage(hCheat, &msg); + // Hex Editor -> Find if(!handled && hMemFind && IsChild(hMemFind, msg.hwnd)) handled = IsDialogMessage(hMemFind, &msg); + // Memory Watch + extern HWND hwndMemWatch; if(!handled && hwndMemWatch) { - if(IsChild(hwndMemWatch,msg.hwnd)) - handled = TranslateAccelerator(hwndMemWatch,fceu_hAccel,&msg); + if(IsChild(hwndMemWatch, msg.hwnd)) + handled = TranslateAccelerator(hwndMemWatch, fceu_hAccel, &msg); if(!handled) handled = IsDialogMessage(hwndMemWatch,&msg); } - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 3); - + // RAM Search if(!handled && RamSearchHWnd && IsChild(RamSearchHWnd, msg.hwnd)) handled = IsDialogMessage(RamSearchHWnd, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 4); - + // RAM_Watch if(!handled && RamWatchHWnd) if(handled = IsDialogMessage(RamWatchHWnd, &msg)) if(msg.message == WM_KEYDOWN) // send keydown messages to the dialog (for accelerators, and also needed for the Alt key to work) SendMessage(RamWatchHWnd, msg.message, msg.wParam, msg.lParam); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 5); - + // TAS Editor if(!handled && taseditorWindow.hwndTASEditor) { if(taseditorEnableAcceleratorKeys) @@ -366,84 +362,71 @@ int BlockingCheck() } } - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 6); - + // TAS Editor -> Find Node if(!handled && taseditorWindow.hwndFindNote && IsChild(taseditorWindow.hwndFindNote, msg.hwnd)) handled = IsDialogMessage(taseditorWindow.hwndFindNote, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 7); - + // Sound Config extern HWND uug; if(!handled && uug && IsChild(uug, msg.hwnd)) handled = IsDialogMessage(uug, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 8); - - if(!handled && pwindow && IsChild(pwindow, msg.hwnd)) - handled = IsDialogMessage(pwindow, &msg); - - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 9); + // Palette Config + extern HWND hWndPal; + if(!handled && hWndPal && IsChild(hWndPal, msg.hwnd)) + handled = IsDialogMessage(hWndPal, &msg); + // Code/Data Logger if(!handled && hCDLogger && IsChild(hCDLogger, msg.hwnd)) handled = IsDialogMessage(hCDLogger, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 10); - + // Trace Logger if(!handled && hTracer && IsChild(hTracer, msg.hwnd)) handled = IsDialogMessage(hTracer, &msg); - if (debug && !handled) - printf("GGConv unhandled WM_KEYDOWN: %d\n", 11); - + // Game Genie Encoder/Decoder + extern HWND hGGConv; if(!handled && hGGConv && IsChild(hGGConv, msg.hwnd)) handled = IsDialogMessage(hGGConv, &msg); - if (debug) - if(!handled) - printf("GGConv unhandled WM_KEYDOWN: %d\n", 12); - else - printf("GGConv handled\n"); - + // Debugger if(!handled && hDebug && IsChild(hDebug, msg.hwnd)) handled = IsDialogMessage(hDebug, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 13); - + // PPU Viewer extern HWND hPPUView; if(!handled && hPPUView && IsChild(hPPUView, msg.hwnd)) handled = IsDialogMessage(hPPUView, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 14); - + // Nametable Viewer extern HWND hNTView; if(!handled && hNTView && IsChild(hNTView, msg.hwnd)) handled = IsDialogMessage(hNTView, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 15); - + // Text Hooker extern HWND hTextHooker; if(!handled && hTextHooker && IsChild(hTextHooker, msg.hwnd)) handled = IsDialogMessage(hTextHooker, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 16); - + // Lua Scripts extern HWND LuaConsoleHWnd; if(!handled && LuaConsoleHWnd && IsChild(LuaConsoleHWnd, msg.hwnd)) handled = IsDialogMessage(LuaConsoleHWnd, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 17); - + // Logs extern HWND logwin; if(!handled && logwin && IsChild(logwin, msg.hwnd)) handled = IsDialogMessage(logwin, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 18); - + // Header Editor extern HWND hHeadEditor; if (!handled && hHeadEditor && IsChild(hHeadEditor, msg.hwnd)) handled = IsDialogMessage(hHeadEditor, &msg); - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 19); + // Netplay (Though it's quite dummy and nearly forgotten) + extern HWND netwin; + if (!handled && netwin && IsChild(netwin, msg.hwnd)) + handled = IsDialogMessage(netwin, &msg); /* //adelikat - Currently no accel keys are used in the main window. Uncomment this block to activate them. if(!handled) @@ -456,10 +439,9 @@ int BlockingCheck() } } */ + if(!handled) { - if (debug && !handled) printf("GGConv unhandled WM_KEYDOWN: %d\n", 20); - TranslateMessage(&msg); DispatchMessage(&msg); } diff --git a/src/drivers/win/netplay.cpp b/src/drivers/win/netplay.cpp index 9afbdb8d..15f84f10 100644 --- a/src/drivers/win/netplay.cpp +++ b/src/drivers/win/netplay.cpp @@ -25,7 +25,7 @@ static int recv_tcpwrap(uint8 *buf, int len); static void NetStatAdd(char *text); -static HWND netwin=0; +HWND netwin=0; static char *netstatt[64]; static int netstattcount=0; diff --git a/src/drivers/win/palette.cpp b/src/drivers/win/palette.cpp index bed79087..6b3e3095 100644 --- a/src/drivers/win/palette.cpp +++ b/src/drivers/win/palette.cpp @@ -12,6 +12,7 @@ extern int palsharpness; extern int palcontrast; extern int palbrightness; extern bool paldeemphswap; +HWND hWndPal = NULL; bool SetPalette(const char* nameo) { @@ -226,7 +227,7 @@ BOOL CALLBACK PaletteConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPa case BUTTON_CLOSE: gornk: DestroyWindow(hwndDlg); - pwindow = 0; // Yay for user race conditions. + hWndPal = 0; // Yay for user race conditions. break; } } @@ -240,13 +241,9 @@ gornk: **/ void ConfigPalette() { - if(!pwindow) - { - pwindow=CreateDialog(fceu_hInstance, "PALCONFIG" ,0 , PaletteConCallB); - } + if(!hWndPal) + hWndPal = CreateDialog(fceu_hInstance, "PALCONFIG", hAppWnd, PaletteConCallB); else - { - SetFocus(pwindow); - } + SetFocus(hWndPal); } diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index e31f199d..52edc646 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -101,7 +101,7 @@ using namespace std; //Handles---------------------------------------------- static HMENU fceumenu = 0; //Main menu. -HWND pwindow; //Client Area +// HWND pwindow; //Client Area HMENU recentmenu; //Recent Menu HMENU recentluamenu; //Recent Lua Files Menu HMENU recentmoviemenu; //Recent Movie Files Menu diff --git a/src/drivers/win/window.h b/src/drivers/win/window.h index e3f2d4d4..e17ba51f 100644 --- a/src/drivers/win/window.h +++ b/src/drivers/win/window.h @@ -19,7 +19,7 @@ struct CreateMovieParameters extern char *recent_files[]; extern char *recent_lua[]; extern char *recent_movie[]; -extern HWND pwindow; +// extern HWND pwindow; HWND GetMainHWND(); diff --git a/src/input.cpp b/src/input.cpp index 5b06d827..5f840fff 100644 --- a/src/input.cpp +++ b/src/input.cpp @@ -1117,8 +1117,8 @@ static void LaunchCodeDataLogger(void) static void LaunchCheats(void) { #ifdef WIN32 - extern HWND pwindow; - ConfigCheats(pwindow); + extern HWND hCheat; + ConfigCheats(hCheat); #endif } diff --git a/src/movie.cpp b/src/movie.cpp index 8430729c..4ba7e29c 100644 --- a/src/movie.cpp +++ b/src/movie.cpp @@ -1500,8 +1500,7 @@ bool FCEUMOV_ReadState(EMUFILE* is, uint32 size) //mbg 8/18/08 - this code can be used to turn the error message into an OK/CANCEL #ifdef WIN32 std::string msg = "There is a mismatch between savestate's movie and current movie.\ncurrent: " + currMovieData.guid.toString() + "\nsavestate: " + tempMovieData.guid.toString() + "\n\nThis means that you have loaded a savestate belonging to a different movie than the one you are playing now.\n\nContinue loading this savestate anyway?"; - extern HWND pwindow; - int result = MessageBox(pwindow,msg.c_str(),"Error loading savestate",MB_OKCANCEL); + int result = MessageBox(hAppWnd, msg.c_str(), "Error loading savestate", MB_OKCANCEL); if(result == IDCANCEL) { if (!backupSavestates) //If backups are disabled we can just resume normally since we can't restore so stop movie and inform user From 56f0db87fa749235ee2e4faacbcc0f8ecea3096a Mon Sep 17 00:00:00 2001 From: owomomo Date: Wed, 19 Jun 2019 00:56:27 +0800 Subject: [PATCH 15/21] 1. Experimental limit the input characters for some edit control. 2. Separated cheat code and game genie in Cheat window. 3. Don't show a game genie code when affected address is under 0x8000. 4. Detail: set font for some edit control, replaced some static global variable. 5. Other details. By the way, why there're so many useless brackets in some functions? --- src/drivers/win/cheat.cpp | 445 +++++++++++++++--------------- src/drivers/win/cheat.h | 21 +- src/drivers/win/header_editor.cpp | 69 ++++- src/drivers/win/header_editor.h | 12 +- src/drivers/win/ram_search.cpp | 1 - src/drivers/win/res.rc | 119 ++++---- src/drivers/win/resource.h | 18 +- src/drivers/win/window.cpp | 159 +++++++++++ src/drivers/win/window.h | 13 + 9 files changed, 550 insertions(+), 307 deletions(-) diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index 4348241a..7629da5e 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -64,19 +64,18 @@ int lbfocus = 0; int searchdone; static int knownvalue = 0; -int GGaddr, GGcomp, GGval; -char GGcode[10]; +// int GGaddr, GGcomp, GGval; +// char GGcode[10]; int GGlist[GGLISTSIZE]; static int dontupdateGG; //this eliminates recursive crashing -static char* ggLets = "APZLGITYEOXUKSVN"; +char* GameGenieLetters = "APZLGITYEOXUKSVN"; // bool dodecode; HWND hGGConv; -WNDPROC DefaultGGConvWndProc; void EncodeGG(char *str, int a, int v, int c); -void ListGGAddresses(); +void ListGGAddresses(HWND hwndDlg); uint16 StrToU16(char *s) { @@ -317,11 +316,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l CheckDlgButton(hwndDlg, IDC_CHEAT_AUTOLOADSAVE, disableAutoLSCheats == 2 ? BST_UNCHECKED : disableAutoLSCheats == 1 ? BST_INDETERMINATE : BST_CHECKED); //setup font - hFont = (HFONT)SendMessage(hwndDlg, WM_GETFONT, 0, 0); - LOGFONT lf; - GetObject(hFont, sizeof(LOGFONT), &lf); - strcpy(lf.lfFaceName, "Courier New"); - hNewFont = CreateFontIndirect(&lf); + SetupCheatFont(hwndDlg); SendDlgItemMessage(hwndDlg, IDC_CHEAT_ADDR, WM_SETFONT, (WPARAM)hNewFont, FALSE); SendDlgItemMessage(hwndDlg, IDC_CHEAT_VAL, WM_SETFONT, (WPARAM)hNewFont, FALSE); @@ -343,6 +338,22 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l SendDlgItemMessage(hwndDlg, IDC_CHEAT_VAL_GT_BY, EM_SETLIMITTEXT, 2, 0); SendDlgItemMessage(hwndDlg, IDC_CHEAT_VAL_LT_BY, EM_SETLIMITTEXT, 2, 0); SendDlgItemMessage(hwndDlg, IDC_CHEAT_TEXT, EM_SETLIMITTEXT, 10, 0); + SendDlgItemMessage(hwndDlg, IDC_CHEAT_GAME_GENIE_TEXT, EM_SETLIMITTEXT, 8, 0); + + // limit their characters + DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_ADDR), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_ADDR), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_COM), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_NAME), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL_KNOWN), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL_NE_BY), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL_GT_BY), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL_LT_BY), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_TEXT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_GAME_GENIE_TEXT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + + possiTotalCount = 0; possiItemCount = SendDlgItemMessage(hwndDlg, IDC_CHEAT_LIST_POSSIBILITIES, LVM_GETCOUNTPERPAGE, 0, 0); @@ -356,7 +367,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l //misc setup searchdone = 0; - SetDlgItemText(hwndDlg, IDC_CHEAT_VAL_KNOWN, (LPTSTR)U8ToStr(knownvalue)); + SetDlgItemText(hwndDlg, IDC_CHEAT_VAL_KNOWN, (LPCSTR)U8ToStr(knownvalue)); // Enable Context Sub-Menus hCheatcontext = LoadMenu(fceu_hInstance, "CHEATCONTEXTMENUS"); @@ -374,7 +385,6 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l wasPausedByCheats = true; FCEU_printf("Emulation paused: %d\n", EmulationPaused); } - } if (CheatStyle && possiTotalCount) { if ((!wParam) && searchdone) { @@ -384,6 +394,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l ShowResults(hwndDlg); } break; + case WM_QUIT: case WM_CLOSE: if (CheatStyle) DestroyWindow(hwndDlg); @@ -393,8 +404,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l case WM_DESTROY: CheatWindow = 0; hCheat = NULL; - DeleteObject(hFont); - DeleteObject(hNewFont); + DeleteCheatFont(); if (searchdone) FCEUI_CheatSearchSetCurrentAsOriginal(); possiList.clear(); @@ -638,12 +648,12 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l RedoCheatsCallB(name, a, v, c, s, 1, &selcheat); SendDlgItemMessage(hwndDlg, IDC_LIST_CHEATS, LVM_SETSELECTIONMARK, 0, selcheat); - SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPTSTR)U16ToStr(a)); - SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPTSTR)U8ToStr(v)); + SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPCSTR)U16ToStr(a)); + SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPCSTR)U8ToStr(v)); if (c == -1) - SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPTSTR)""); + SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPCSTR)""); else - SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPTSTR)U8ToStr(c)); + SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPCSTR)U8ToStr(c)); UpdateCheatRelatedWindow(); UpdateCheatListGroupBoxUI(); // UpdateCheatAdded(); @@ -742,7 +752,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l else { disableAutoLSCheats = 0; - CheckDlgButton(hwndDlg, IDC_CHEAT_AUTOLOADSAVE, BST_INDETERMINATE); + CheckDlgButton(hwndDlg, IDC_CHEAT_AUTOLOADSAVE, BST_CHECKED); } } } @@ -754,6 +764,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l case IDC_CHEAT_VAL: case IDC_CHEAT_COM: editMode = 0; break; case IDC_CHEAT_TEXT: editMode = 1; break; + case IDC_CHEAT_GAME_GENIE_TEXT: editMode = 2; break; } break; case EN_UPDATE: @@ -767,8 +778,13 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l { char buf[16]; uint32 a; uint8 v; int c; GetUICheatInfo(hwndDlg, NULL, &a, &v, &c); - GetCheatStr(buf, a, v, c); + buf[0] = 0; + GetCheatCodeStr(buf, a, v, c); SetDlgItemText(hwndDlg, IDC_CHEAT_TEXT, buf); + buf[0] = 0; + if (a > 0x7FFF && v != -1) + EncodeGG(buf, a, v, c); + SetDlgItemText(hwndDlg, IDC_CHEAT_GAME_GENIE_TEXT, buf); } } break; @@ -778,7 +794,7 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l { char buf[16]; GetDlgItemText(hwndDlg, IDC_CHEAT_TEXT, buf, 16); - int a = -1, v = -1; int c = -1; + int a = -1, v = -1, c = -1; if (strchr(buf, ':')) { if (strchr(buf, '?')) @@ -786,12 +802,35 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l else sscanf(buf, "%X:%X", &a, &v); } - else if (strlen(buf) == 6 || strlen(buf) == 8) + + SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPCSTR)(a == -1 ? "" : U16ToStr(a))); + SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPCSTR)(v == -1 ? "" : U8ToStr(v))); + SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPCSTR)(c == -1 ? "" : U8ToStr(c))); + buf[0] = 0; + if (a > 0x7FFF && v != -1) + EncodeGG(buf, a, v, c); + SetDlgItemText(hwndDlg, IDC_CHEAT_GAME_GENIE_TEXT, buf); + } + } + break; + case IDC_CHEAT_GAME_GENIE_TEXT: + { + if (editMode == 2) + { + char buf[16]; + GetDlgItemText(hwndDlg, IDC_CHEAT_GAME_GENIE_TEXT, buf, 16); + int a = -1, v = -1, c = -1; + if (strlen(buf) == 6 || strlen(buf) == 8) FCEUI_DecodeGG(buf, &a, &v, &c); - SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPTSTR)(a == -1 ? "" : U16ToStr(a))); - SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPTSTR)(v == -1 ? "" : U8ToStr(v))); - SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPTSTR)(c == -1 ? "" : U8ToStr(c))); + SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPCSTR)(a == -1 ? "" : U16ToStr(a))); + SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPCSTR)(v == -1 ? "" : U8ToStr(v))); + SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPCSTR)(c == -1 ? "" : U8ToStr(c))); + + buf[0] = 0; + if (a != -1 && v != -1) + GetCheatCodeStr(buf, a, v, c); + SetDlgItemText(hwndDlg, IDC_CHEAT_TEXT, buf); } } } @@ -820,15 +859,20 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l { char* name = ""; uint32 a; uint8 v; int s; int c; FCEUI_GetCheat(selcheat, &name, &a, &v, &c, &s, NULL); - SetDlgItemText(hwndDlg, IDC_CHEAT_NAME, (LPTSTR)name); - SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPTSTR)U16ToStr(a)); - SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPTSTR)U8ToStr(v)); - SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPTSTR)(c == -1 ? "" : U8ToStr(c))); + SetDlgItemText(hwndDlg, IDC_CHEAT_NAME, (LPCSTR)name); + SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPCSTR)U16ToStr(a)); + SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPCSTR)U8ToStr(v)); + SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPCSTR)(c == -1 ? "" : U8ToStr(c))); char code[32]; - GetCheatStr(code, a, v, c); - + code[0] = 0; + GetCheatCodeStr(code, a, v, c); SetDlgItemText(hwndDlg, IDC_CHEAT_TEXT, code); + code[0] = 0; + if (a > 0x7FFF && v != -1) + EncodeGG(code, a, v, c); + SetDlgItemText(hwndDlg, IDC_CHEAT_GAME_GENIE_TEXT, code); + } EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_CHEAT_DEL), selcheatcount > 0); @@ -884,10 +928,10 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l SEARCHPOSSIBLE& possible = possiList[pNMListView->iItem]; char str[16]; sprintf(str, "%04X", possible.addr); - SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPCTSTR)str); + SetDlgItemText(hwndDlg, IDC_CHEAT_ADDR, (LPCSTR)str); sprintf(str, "%02X", possible.current); - SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPCTSTR)str); - SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPTSTR)""); + SetDlgItemText(hwndDlg, IDC_CHEAT_VAL, (LPCSTR)str); + SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPCSTR)""); } } break; @@ -1003,8 +1047,8 @@ void UpdateCheatsAdded() BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { - char str[100]; - int i; +// int i; + extern void GetUIGGInfo(HWND hwndDlg, uint32* a, uint8* v, int* c); switch(uMsg) { case WM_MOVE: { @@ -1021,73 +1065,85 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) break; }; case WM_INITDIALOG: - //todo: set text limits - if (GGConv_wndx == -32000) - GGConv_wndx = 0; //Just in case - if (GGConv_wndy == -32000) - GGConv_wndy = 0; - SetWindowPos(hwndDlg, 0, GGConv_wndx, GGConv_wndy, 0, 0, SWP_NOSIZE | SWP_NOZORDER | SWP_NOOWNERZORDER); + { + POINT pt; + if (GGConv_wndx != 0 && GGConv_wndy != 0) + { + pt.x = GGConv_wndx; + pt.y = GGConv_wndy; + pt = CalcSubWindowPos(hwndDlg, &pt); + } + else + pt = CalcSubWindowPos(hwndDlg, NULL); + + GGConv_wndx = pt.x; + GGConv_wndy = pt.y; + + // text limits; SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_CODE, EM_SETLIMITTEXT, 8, 0); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_ADDR, EM_SETLIMITTEXT, 4, 0); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_COMP, EM_SETLIMITTEXT, 2, 0); SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_VAL, EM_SETLIMITTEXT, 2, 0); - DefaultGGConvWndProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_GAME_GENIE_CODE), GWL_WNDPROC, (LONG)GGConvCustomWndProc); + // setup font + SetupCheatFont(hwndDlg); - break; + SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_ADDR, WM_SETFONT, (WPARAM)hNewFont, FALSE); + SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_COMP, WM_SETFONT, (WPARAM)hNewFont, FALSE); + SendDlgItemMessage(hwndDlg, IDC_GAME_GENIE_VAL, WM_SETFONT, (WPARAM)hNewFont, FALSE); + + // limit their characters + DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_GAME_GENIE_CODE), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_GAME_GENIE_ADDR), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_GAME_GENIE_COMP), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_GAME_GENIE_VAL), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + } + break; case WM_CLOSE: case WM_QUIT: DestroyWindow(hGGConv); - hGGConv = 0; break; + case WM_DESTROY: + hGGConv = NULL; + DeleteCheatFont(); case WM_COMMAND: switch(HIWORD(wParam)) { case EN_UPDATE: if(dontupdateGG)break; dontupdateGG = 1; - switch(LOWORD(wParam)){ //lets find out what edit control got changed + switch(LOWORD(wParam)) + { + //lets find out what edit control got changed case IDC_GAME_GENIE_CODE: //The Game Genie Code - in this case decode it. - GetDlgItemText(hGGConv,IDC_GAME_GENIE_CODE,GGcode,9); - if((strlen(GGcode) != 8) && (strlen(GGcode) != 6))break; + { + char buf[9]; + GetDlgItemText(hGGConv, IDC_GAME_GENIE_CODE, buf, 9); - FCEUI_DecodeGG(GGcode, &GGaddr, &GGval, &GGcomp); + int a = -1, v = -1, c = -1; + if (strlen(buf) == 6 || strlen(buf) == 8) + FCEUI_DecodeGG(buf, &a, &v, &c); - sprintf(str,"%04X",GGaddr); - SetDlgItemText(hGGConv,IDC_GAME_GENIE_ADDR,str); - - if(GGcomp != -1) - sprintf(str,"%02X",GGcomp); - else str[0] = 0; - SetDlgItemText(hGGConv,IDC_GAME_GENIE_COMP,str); - - sprintf(str,"%02X",GGval); - SetDlgItemText(hGGConv,IDC_GAME_GENIE_VAL,str); - //ListGGAddresses(); + SetDlgItemText(hwndDlg, IDC_GAME_GENIE_ADDR, a == -1 ? "" : U16ToStr(a)); + SetDlgItemText(hwndDlg, IDC_GAME_GENIE_COMP, c == -1 ? "" : U8ToStr(c)); + SetDlgItemText(hwndDlg, IDC_GAME_GENIE_VAL, v == -1 ? "" : U8ToStr(v)); + } break; case IDC_GAME_GENIE_ADDR: case IDC_GAME_GENIE_COMP: case IDC_GAME_GENIE_VAL: - GetDlgItemText(hGGConv,IDC_GAME_GENIE_ADDR,str,5); - if(strlen(str) != 4) break; - - GetDlgItemText(hGGConv,IDC_GAME_GENIE_VAL,str,5); - if(strlen(str) != 2) {GGval = -1; break;} - - GGaddr = GetEditHex(hGGConv,IDC_GAME_GENIE_ADDR); - GGval = GetEditHex(hGGConv,IDC_GAME_GENIE_VAL); - - GetDlgItemText(hGGConv,IDC_GAME_GENIE_COMP,str,5); - if(strlen(str) != 2) GGcomp = -1; - else GGcomp = GetEditHex(hGGConv,IDC_GAME_GENIE_COMP); - - EncodeGG(GGcode, GGaddr, GGval, GGcomp); - SetDlgItemText(hGGConv,IDC_GAME_GENIE_CODE,GGcode); + uint32 a = -1; uint8 v = -1; int c = -1; + GetUIGGInfo(hwndDlg, &a, &v, &c); + + char buf[9] = { 0 }; + if (a > 0x7FFF && v != -1) + EncodeGG(buf, a, v, c); + SetDlgItemText(hwndDlg, IDC_GAME_GENIE_CODE, buf); //ListGGAddresses(); break; } - ListGGAddresses(); + ListGGAddresses(hwndDlg); dontupdateGG = 0; break; case BN_CLICKED: @@ -1095,20 +1151,22 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) case IDC_BTN_ADD_TO_CHEATS: //ConfigCheats(fceu_hInstance); - if(GGaddr < 0x8000)GGaddr += 0x8000; + char buf[9]; + uint32 a = -1; uint8 v = -1; int c = -1; + GetUIGGInfo(hwndDlg, &a, &v, &c); + GetDlgItemText(hwndDlg, IDC_GAME_GENIE_CODE, buf, 9); - if (FCEUI_AddCheat(GGcode, GGaddr, GGval, GGcomp, 1) && hCheat) { - RedoCheatsCallB(GGcode, GGaddr, GGval, GGcomp, 1, 1, NULL); + if(a < 0x8000) a += 0x8000; + + if (FCEUI_AddCheat(buf, a, v, c, 1) && hCheat) { + RedoCheatsCallB(buf, a, v, c, 1, 1, NULL); int newselcheat = SendDlgItemMessage(hCheat, IDC_LIST_CHEATS, LVM_GETITEMCOUNT, 0, 0) - 1; ListView_MoveSelectionMark(GetDlgItem(hCheat, IDC_LIST_CHEATS), selcheat, newselcheat); selcheat = newselcheat; - SetDlgItemText(hCheat, IDC_CHEAT_ADDR, (LPTSTR)U16ToStr(GGaddr)); - SetDlgItemText(hCheat, IDC_CHEAT_VAL, (LPTSTR)U8ToStr(GGval)); - if(GGcomp == -1) - SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPTSTR)""); - else - SetDlgItemText(hwndDlg, IDC_CHEAT_COM, (LPTSTR)U8ToStr(GGcomp)); + SetDlgItemText(hCheat, IDC_CHEAT_ADDR, (LPCSTR)U16ToStr(a)); + SetDlgItemText(hCheat, IDC_CHEAT_VAL, (LPCSTR)U8ToStr(v)); + SetDlgItemText(hCheat, IDC_CHEAT_COM, (LPCSTR)(c == -1 ? "" : U8ToStr(c))); EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_DEL), TRUE); EnableWindow(GetDlgItem(hCheat, IDC_BTN_CHEAT_UPD), TRUE); @@ -1121,8 +1179,7 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) case LBN_DBLCLK: switch (LOWORD(wParam)) { case IDC_LIST_GGADDRESSES: - i = SendDlgItemMessage(hwndDlg,IDC_LIST_GGADDRESSES,LB_GETCURSEL,0,0); - ChangeMemViewFocus(3,GGlist[i],-1); + ChangeMemViewFocus(3,GGlist[SendDlgItemMessage(hwndDlg, IDC_LIST_GGADDRESSES, LB_GETCURSEL, 0, 0)],-1); break; } break; @@ -1132,105 +1189,6 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) return FALSE; } -LRESULT APIENTRY GGConvCustomWndProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP) -{ - bool through = true; - LRESULT result = 0; - - switch (msg) - { - case WM_PASTE: - { - switch (GetDlgCtrlID(GetFocus())) - { - case IDC_GAME_GENIE_CODE: - printf("PASTE\n"); - if (OpenClipboard(hDlg)) - { - HANDLE handle = GetClipboardData(CF_TEXT); - if (handle) - { - - // copy the original clipboard string - char* clipStr = (char*)GlobalLock(handle); - char* original = (char*)calloc(1, strlen(clipStr) + 1); - strcpy(original, clipStr); - GlobalUnlock(handle); - - // filter it out - char filtered[9] = { 0 }; - int filteredIndex = 0, origIndex = 0; - while (clipStr[origIndex] && filteredIndex < 9) - { - for (int i = 0; ggLets[i]; ++i) - { - if (toupper(clipStr[origIndex]) == ggLets[i]) - { - filtered[filteredIndex] = clipStr[origIndex]; - ++filteredIndex; - } - } - ++origIndex; - } - - // copy filtered str to clipboard - EmptyClipboard(); - HANDLE hNewStr = GlobalAlloc(GMEM_MOVEABLE, 9); - char* newStr = (char*)GlobalLock(hNewStr); - strcpy(newStr, filtered); - GlobalUnlock(hNewStr); - SetClipboardData(CF_TEXT, hNewStr); - - // end - CloseClipboard(); - result = CallWindowProc(DefaultGGConvWndProc, hDlg, msg, wP, lP); - through = false; - - // set it back to normal - if (OpenClipboard(hDlg)) - { - handle = GetClipboardData(CF_TEXT); - if (handle) - { - EmptyClipboard(); - HANDLE hOldStr = GlobalAlloc(GMEM_MOVEABLE, strlen(original) + 1); - char* oldStr = (char*)GlobalLock(hOldStr); - strcpy(oldStr, original); - GlobalUnlock(hOldStr); - SetClipboardData(CF_TEXT, hOldStr); - } - CloseClipboard(); - } - - // end - free(original); - } - } - } - } - break; - case WM_CHAR: - { - switch (GetDlgCtrlID(GetFocus())) - { - case IDC_GAME_GENIE_CODE: - { - through = wP == VK_BACK || GetKeyState(VK_CONTROL) & 0x8000; - if (!through) - for (int i = 0; ggLets[i]; ++i) - if (toupper(wP) == ggLets[i]) - { - through = true; - break; - } - } - - } - } - } - - return through ? CallWindowProc(DefaultGGConvWndProc, hDlg, msg, wP, lP) : result; -} //The code in this function is a modified version //of Chris Covell's work - I'd just like to point that out @@ -1250,69 +1208,78 @@ void EncodeGG(char *str, int a, int v, int c) if (c == -1){ num[5]+=v&8; - for(i = 0;i < 6;i++)str[i] = ggLets[num[i]]; + for(i = 0;i < 6;i++)str[i] = GameGenieLetters[num[i]]; str[6] = 0; } else { num[2]+=8; num[5]+=c&8; num[6]=(c&7)+((c>>4)&8); num[7]=((c>>4)&7)+(v&8); - for(i = 0;i < 8;i++)str[i] = ggLets[num[i]]; + for(i = 0;i < 8;i++)str[i] = GameGenieLetters[num[i]]; str[8] = 0; } return; } -void ListGGAddresses() +void ListGGAddresses(HWND hwndDlg) { uint32 i, j = 0; //mbg merge 7/18/06 changed from int - char str[20]; - SendDlgItemMessage(hGGConv,IDC_LIST_GGADDRESSES,LB_RESETCONTENT,0,0); + char str[20], code[9]; + SendDlgItemMessage(hwndDlg, IDC_LIST_GGADDRESSES, LB_RESETCONTENT,0,0); - //also enable/disable the add GG button here - GetDlgItemText(hGGConv,IDC_GAME_GENIE_CODE,GGcode,9); + uint32 a = -1; uint8 v = -1; int c = -1; + extern void GetUIGGInfo(HWND hwnd, uint32* a, uint8* v, int* c); + GetUIGGInfo(hwndDlg, &a, &v, &c); - if((GGaddr < 0) || ((strlen(GGcode) != 8) && (strlen(GGcode) != 6)))EnableWindow(GetDlgItem(hGGConv,IDC_BTN_ADD_TO_CHEATS),FALSE); - else EnableWindow(GetDlgItem(hGGConv,IDC_BTN_ADD_TO_CHEATS),TRUE); + // also enable/disable the add GG button here + GetDlgItemText(hwndDlg, IDC_GAME_GENIE_CODE, code, 9); + EnableWindow(GetDlgItem(hwndDlg, IDC_BTN_ADD_TO_CHEATS), a >= 0 && (strlen(code) == 6 || strlen(code) == 8)); - for(i = 0;i < PRGsize[0];i+=0x2000){ - if((PRGptr[0][i+(GGaddr&0x1FFF)] == GGcomp) || (GGcomp == -1)){ - GGlist[j] = i+(GGaddr&0x1FFF)+0x10; - if(++j > GGLISTSIZE)return; - sprintf(str,"%06X",i+(GGaddr&0x1FFF)+0x10); - SendDlgItemMessage(hGGConv,IDC_LIST_GGADDRESSES,LB_ADDSTRING,0,(LPARAM)(LPSTR)str); - } - } + if (a != -1 && v != -1) + for(i = 0; i < PRGsize[0]; i += 0x2000) + if(c == -1 || PRGptr[0][i + (a & 0x1FFF)] == c){ + GGlist[j] = i + (a & 0x1FFF) + 0x10; + if(++j > GGLISTSIZE) + return; + sprintf(str, "%06X", i + (a & 0x1FFF) + 0x10); + SendDlgItemMessage(hwndDlg, IDC_LIST_GGADDRESSES, LB_ADDSTRING, 0, (LPARAM)str); + } } //A different model for this could be to have everything //set in the INITDIALOG message based on the internal //variables, and have this simply call that. -void SetGGConvFocus(int address,int compare) +void SetGGConvFocus(int address, int compare) { char str[10]; - if(!hGGConv)DoGGConv(); - GGaddr = address; - GGcomp = compare; + if(!hGGConv) + DoGGConv(); + // GGaddr = address; + // GGcomp = compare; dontupdateGG = 1; //little hack to fix a nasty bug - sprintf(str,"%04X",address); - SetDlgItemText(hGGConv,IDC_GAME_GENIE_ADDR,str); + sprintf(str, "%04X", address); + SetDlgItemText(hGGConv, IDC_GAME_GENIE_ADDR, str); dontupdateGG = 0; - sprintf(str,"%02X",GGcomp); - SetDlgItemText(hGGConv,IDC_GAME_GENIE_COMP,str); + sprintf(str, "%02X", compare); + SetDlgItemText(hGGConv, IDC_GAME_GENIE_COMP, str); + GetDlgItemText(hGGConv, IDC_GAME_GENIE_VAL, str, 3); + uint8 val = StrToU8(str); - if(GGval < 0)SetDlgItemText(hGGConv,IDC_GAME_GENIE_CODE,""); + if(val < 0) + SetDlgItemText(hGGConv, IDC_GAME_GENIE_CODE, ""); else { - EncodeGG(GGcode, GGaddr, GGval, GGcomp); - SetDlgItemText(hGGConv,IDC_GAME_GENIE_CODE,GGcode); + str[0] = 0; + if (val > 0x7FFF) + EncodeGG(str, address, val, compare); + SetDlgItemText(hGGConv, IDC_GAME_GENIE_CODE, str); } - SetFocus(GetDlgItem(hGGConv,IDC_GAME_GENIE_VAL)); + SetFocus(GetDlgItem(hGGConv, IDC_GAME_GENIE_VAL)); return; } @@ -1329,15 +1296,19 @@ void DoGGConv() inline void GetCheatStr(char* buf, int a, int v, int c) { - if (a >= 0x8000) + if (a > 0x7FFF) EncodeGG(buf, a, v, c); else { - if (c == -1) - sprintf(buf, "%04X:%02X", (int)a, (int)v); - else - sprintf(buf, "%04X?%02X:%02X", (int)a, (int)c, (int)v); + GetCheatCodeStr(buf, a, v, c); } +} +inline void GetCheatCodeStr(char* buf, int a, int v, int c) +{ + if (c == -1) + sprintf(buf, "%04X:%02X", a, v); + else + sprintf(buf, "%04X?%02X:%02X", a, c, v); } void GetUICheatInfo(HWND hwndDlg, char* name, uint32* a, uint8* v, int* c) @@ -1353,6 +1324,17 @@ void GetUICheatInfo(HWND hwndDlg, char* name, uint32* a, uint8* v, int* c) GetDlgItemText(hwndDlg, IDC_CHEAT_NAME, name, 256); } +void GetUIGGInfo(HWND hwndDlg, uint32* a, uint8* v, int* c) +{ + char buf[16]; + GetDlgItemText(hwndDlg, IDC_GAME_GENIE_ADDR, buf, 5); + *a = StrToU16(buf); + GetDlgItemText(hwndDlg, IDC_GAME_GENIE_VAL, buf, 3); + *v = StrToU8(buf); + GetDlgItemText(hwndDlg, IDC_GAME_GENIE_COMP, buf, 3); + *c = (buf[0] == 0 ? -1 : StrToU8(buf)); +} + void DisableAllCheats() { if(FCEU_DisableAllCheats() && hCheat){ @@ -1479,4 +1461,27 @@ void SaveCheatAs(HWND hwnd, bool flush) MessageBox(hwnd, "Error saving cheats!", "Cheat Console", MB_OK | MB_ICONERROR); } } +} + +void SetupCheatFont(HWND hwnd) +{ + if (!hCheat && !hGGConv) + { + hFont = (HFONT)SendMessage(hwnd, WM_GETFONT, 0, 0); + LOGFONT lf; + GetObject(hFont, sizeof(LOGFONT), &lf); + strcpy(lf.lfFaceName, "Courier New"); + hNewFont = CreateFontIndirect(&lf); + } +} + +void DeleteCheatFont() +{ + if (!hCheat && !hGGConv) + { + DeleteObject(hFont); + DeleteObject(hNewFont); + hFont = NULL; + hNewFont = NULL; + } } \ No newline at end of file diff --git a/src/drivers/win/cheat.h b/src/drivers/win/cheat.h index ee5a818c..28acc9e2 100644 --- a/src/drivers/win/cheat.h +++ b/src/drivers/win/cheat.h @@ -13,18 +13,20 @@ typedef unsigned int HWAddressType; void ConfigCheats(HWND hParent); void DoGGConv(); -void SetGGConvFocus(int address,int compare); +void SetGGConvFocus(int address, int compare); void UpdateCheatList(); void UpdateCheatListGroupBoxUI(); void UpdateCheatsAdded(); void ToggleCheatInputMode(HWND hwndDlg, int modeId); void GetUICheatInfo(HWND hwndDlg, char* name, uint32* a, uint8* v, int* c); inline void GetCheatStr(char* buf, int a, int v, int c); +inline void GetCheatCodeStr(char* buf, int a, int v, int c); extern unsigned int FrozenAddressCount; extern std::vector FrozenAddresses; //void ConfigAddCheat(HWND wnd); //bbit edited:commented out this line extern struct CHEATF* cheats; +extern char* GameGenieLetters; void DisableAllCheats(); bool ShowCheatFileBox(HWND hwnd, char* buf, bool save = false); @@ -32,11 +34,13 @@ void AskSaveCheat(); void SaveCheatAs(HWND hwnd, bool flush = false); void UpdateCheatRelatedWindow(); +void SetupCheatFont(HWND hDlg); +void DeleteCheatFont(); extern POINT CalcSubWindowPos(HWND hDlg, POINT* conf); extern BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); -extern WNDPROC DefaultGGConvWndProc; -extern LRESULT APIENTRY GGConvCustomWndProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP); +extern LRESULT APIENTRY FilterEditCtrlProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP); +extern WNDPROC DefaultEditCtrlProc; // deselect the old one and select the new one @@ -47,10 +51,11 @@ SendMessage(hwnd, LVM_SETITEMSTATE, newIndex, (LPARAM)&(lvi.state = LVIS_SELECTE SendMessage(hwnd, LVM_SETSELECTIONMARK, 0, newIndex) #define ClearCheatListText(hwnd) \ -(SetDlgItemText(hwnd, IDC_CHEAT_ADDR, (LPTSTR)"") & \ -SetDlgItemText(hwnd, IDC_CHEAT_VAL, (LPTSTR)"") & \ -SetDlgItemText(hwnd, IDC_CHEAT_COM, (LPTSTR)"") & \ -SetDlgItemText(hwnd, IDC_CHEAT_NAME, (LPTSTR)"") & \ -SetDlgItemText(hwnd, IDC_CHEAT_TEXT, (LPTSTR)"")) +(SetDlgItemText(hwnd, IDC_CHEAT_ADDR, (LPCSTR)"") & \ +SetDlgItemText(hwnd, IDC_CHEAT_VAL, (LPCSTR)"") & \ +SetDlgItemText(hwnd, IDC_CHEAT_COM, (LPCSTR)"") & \ +SetDlgItemText(hwnd, IDC_CHEAT_NAME, (LPCSTR)"") & \ +SetDlgItemText(hwnd, IDC_CHEAT_TEXT, (LPCSTR)"") & \ +SetDlgItemText(hwnd, IDC_CHEAT_GAME_GENIE_TEXT, (LPCSTR)"")) #endif \ No newline at end of file diff --git a/src/drivers/win/header_editor.cpp b/src/drivers/win/header_editor.cpp index 7548d8c3..3ff4f14a 100644 --- a/src/drivers/win/header_editor.cpp +++ b/src/drivers/win/header_editor.cpp @@ -271,11 +271,50 @@ HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header) // Playchoice-10 will be finally determined in ToggleUnofficialPropertiesEnabled() // EnableWindow(GetDlgItem(hwnd, IDC_RADIO_SYSTEM_PLAYCHOICE10), TRUE); - ToggleINES20(hwnd, IsDlgButtonChecked(hwnd, IDC_RADIO_VERSION_INES20) == BST_CHECKED); + + // Limit text + // Sub Mapper# SendDlgItemMessage(hwnd, IDC_SUBMAPPER_EDIT, EM_SETLIMITTEXT, 2, 0); + // Misc. ROM(s) SendDlgItemMessage(hwnd, IDC_MISCELLANEOUS_ROMS_EDIT, EM_SETLIMITTEXT, 1, 0); + // Assign ID to the sub edit control in these comboboxes + // PRG ROM + SetWindowLong(GetWindow(GetDlgItem(hwnd, IDC_PRGROM_COMBO), GW_CHILD), GWL_ID, IDC_PRGROM_EDIT); + // PRG RAM + SetWindowLong(GetWindow(GetDlgItem(hwnd, IDC_PRGRAM_COMBO), GW_CHILD), GWL_ID, IDC_PRGRAM_EDIT); + // PRG NVRAM + SetWindowLong(GetWindow(GetDlgItem(hwnd, IDC_PRGNVRAM_COMBO), GW_CHILD), GWL_ID, IDC_PRGNVRAM_EDIT); + // CHR ROM + SetWindowLong(GetWindow(GetDlgItem(hwnd, IDC_CHRROM_COMBO), GW_CHILD), GWL_ID, IDC_CHRROM_EDIT); + // CHR RAM + SetWindowLong(GetWindow(GetDlgItem(hwnd, IDC_CHRRAM_COMBO), GW_CHILD), GWL_ID, IDC_CHRRAM_EDIT); + // CHR NVRAM + SetWindowLong(GetWindow(GetDlgItem(hwnd, IDC_CHRNVRAM_COMBO), GW_CHILD), GWL_ID, IDC_CHRNVRAM_EDIT); + + + // Change the default wndproc of these control to limit their text + // PRG ROM + DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_PRGROM_COMBO), IDC_PRGROM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + // PRG RAM + SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_PRGRAM_COMBO), IDC_PRGRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + // PRG NVRAM + SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_PRGNVRAM_COMBO), IDC_PRGNVRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + // CHR ROM + SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRROM_COMBO), IDC_CHRROM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + // CHR RAM + SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRRAM_COMBO), IDC_CHRRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + // CHR NVRAM + SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRNVRAM_COMBO), IDC_CHRNVRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + // Sub Mapper# + SetWindowLong(GetDlgItem(hwnd, IDC_SUBMAPPER_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + // Misc. ROM(s) + SetWindowLong(GetDlgItem(hwnd, IDC_MISCELLANEOUS_ROMS_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + + + ToggleINES20(hwnd, IsDlgButtonChecked(hwnd, IDC_RADIO_VERSION_INES20) == BST_CHECKED); + char buf[256]; for (int i = 0; dropDownIdList[i]; ++i) for (int j = 0; dropDownList[i][j]; ++j) @@ -293,7 +332,7 @@ HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header) } // add usually used size strings - strcpy(buf, "N/A"); + strcpy(buf, "0B"); SendDlgItemMessage(hwnd, IDC_PRGROM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_PRGROM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); SendDlgItemMessage(hwnd, IDC_CHRROM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_CHRROM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); SendDlgItemMessage(hwnd, IDC_PRGRAM_COMBO, CB_SETITEMDATA, SendDlgItemMessage(hwnd, IDC_PRGRAM_COMBO, CB_ADDSTRING, 0, (LPARAM)buf), 0); @@ -603,7 +642,7 @@ void SetHeaderData(HWND hwnd, iNES_HEADER* header) { SetDlgItemText(hwnd, IDC_SUBMAPPER_EDIT, buf); // PRG ROM - strcpy(buf, "N/A"); + strcpy(buf, "0B"); int prg_rom = header->ROM_size; if (ines20) { if ((header->Upper_ROM_VROM_size & 0xF) == 0xF) @@ -625,7 +664,7 @@ void SetHeaderData(HWND hwnd, iNES_HEADER* header) { SetDlgItemText(hwnd, IDC_PRGROM_COMBO, buf); // PRG RAM - strcpy(buf, "N/A"); + strcpy(buf, "0B"); if (ines20) { int shift = header->RAM_size & 0xF; @@ -646,7 +685,7 @@ void SetHeaderData(HWND hwnd, iNES_HEADER* header) { SetDlgItemText(hwnd, IDC_PRGRAM_COMBO, buf); // PRG NVRAM - strcpy(buf, "N/A"); + strcpy(buf, "0B"); if (ines20) { int shift = header->RAM_size >> 4; @@ -666,7 +705,7 @@ void SetHeaderData(HWND hwnd, iNES_HEADER* header) { // CHR ROM - strcpy(buf, "N/A"); + strcpy(buf, "0B"); int chr_rom = header->VROM_size; if (ines20) { @@ -689,7 +728,7 @@ void SetHeaderData(HWND hwnd, iNES_HEADER* header) { SetDlgItemText(hwnd, IDC_CHRROM_COMBO, buf); // CHR RAM - sprintf(buf, "N/A"); + sprintf(buf, "0B"); if (ines20) { int shift = header->VRAM_size & 0xF; @@ -705,7 +744,7 @@ void SetHeaderData(HWND hwnd, iNES_HEADER* header) { SetDlgItemText(hwnd, IDC_CHRRAM_COMBO, buf); // CHR NVRAM - sprintf(buf, "N/A"); + sprintf(buf, "0B"); if (ines20) { int shift = header->VRAM_size >> 4; @@ -1374,13 +1413,13 @@ bool WriteHeaderData(HWND hwnd, iNES_HEADER* header) printf("%02X ", _header.ROM_type); printf("%02X ", _header.ROM_type2); printf("%02X ", _header.ROM_type3); -printf("%02X ", _header.Upper_ROM_VROM_size); -printf("%02X ", _header.RAM_size); -printf("%02X ", _header.VRAM_size); -printf("%02X ", _header.TV_system); -printf("%02X ", _header.VS_hardware); -printf("%02X ", _header.reserved[0]); -printf("%02X\n", _header.reserved[1]); + printf("%02X ", _header.Upper_ROM_VROM_size); + printf("%02X ", _header.RAM_size); + printf("%02X ", _header.VRAM_size); + printf("%02X ", _header.TV_system); + printf("%02X ", _header.VS_hardware); + printf("%02X ", _header.reserved[0]); + printf("%02X\n", _header.reserved[1]); #endif return true; diff --git a/src/drivers/win/header_editor.h b/src/drivers/win/header_editor.h index ac62e9ae..6548f35a 100644 --- a/src/drivers/win/header_editor.h +++ b/src/drivers/win/header_editor.h @@ -1,9 +1,11 @@ #ifndef HEADEREDITOR_H #define HEADEREDITOR_H -extern HWND hHeadEditor; - struct iNES_HEADER; + +extern HWND hHeadEditor; +void DoHeadEdit(); + HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header); bool ShowINESFileBox(HWND parent, char* buf = NULL, bool save = false); void ToggleINES20(HWND hwnd, bool ines20); @@ -19,7 +21,11 @@ int GetComboBoxByteSize(HWND hwnd, UINT id, int* value); bool SearchByString(HWND hwnd, UINT id, int* value, char* buf); bool GetComboBoxListItemData(HWND hwnd, UINT id, int* value, char* buf, bool exact = false); bool SaveINESFile(HWND hwnd, char* path, iNES_HEADER* header); + + LRESULT CALLBACK HeaderEditorProc(HWND hDlg, UINT uMsg, WPARAM wP, LPARAM lP); -void DoHeadEdit(); +extern WNDPROC DefaultEditCtrlProc; +extern LRESULT APIENTRY FilterEditCtrlProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP); + extern POINT CalcSubWindowPos(HWND hDlg, POINT* conf); #endif diff --git a/src/drivers/win/ram_search.cpp b/src/drivers/win/ram_search.cpp index 1cff7fd0..a9fd503d 100644 --- a/src/drivers/win/ram_search.cpp +++ b/src/drivers/win/ram_search.cpp @@ -1245,7 +1245,6 @@ LRESULT CustomDraw (LPARAM lParam) { case CDDS_PREPAINT : return CDRF_NOTIFYITEMDRAW; - case CDDS_ITEMPREPAINT: { int rv = CDRF_DODEFAULT; diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index ab93e342..dabbb4a8 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -12,11 +12,35 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// ·ÇÌØ¶¨ÓïÑÔ resources +// English(U.S) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\0" +END + +#endif // APSTUDIO_INVOKED -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) -LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL -#pragma code_page(936) ///////////////////////////////////////////////////////////////////////////// // @@ -1489,30 +1513,30 @@ BEGIN CONTROL "Log Bank number",IDC_CHECK_LOG_BANK_NUMBER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,211,121,100,10 END -ADDBP DIALOGEX 66, 83, 196, 130 +ADDBP DIALOGEX 66, 83, 197, 125 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Add Breakpoint..." FONT 8, "Tahoma", 0, 0, 0x0 BEGIN - LTEXT "Address:",-1,14,5,30,10 - CTEXT "-",65534,78,5,8,8 + LTEXT "&Address:",-1,14,6,30,10 EDITTEXT IDC_ADDBP_ADDR_START,48,4,30,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_ADDBP_ADDR_END,83,4,30,12,ES_UPPERCASE | ES_WANTRETURN - CONTROL "Read",IDC_ADDBP_MODE_R,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,25,35,12 - CONTROL "Write",IDC_ADDBP_MODE_W,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,49,25,35,12 - CONTROL "Execute",IDC_ADDBP_MODE_X,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,86,25,40,12 - DEFPUSHBUTTON "&OK",IDOK,99,113,42,13 - PUSHBUTTON "&Cancel",IDCANCEL,147,114,42,13 - GROUPBOX "Memory",108,9,39,174,24,WS_TABSTOP - CONTROL "CPU Mem",IDC_ADDBP_MEM_CPU,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,49,50,10 - CONTROL "PPU Mem",IDC_ADDBP_MEM_PPU,"Button",BS_AUTORADIOBUTTON,68,49,50,10 - CONTROL "Sprite Mem",IDC_ADDBP_MEM_SPR,"Button",BS_AUTORADIOBUTTON,124,49,50,10 - EDITTEXT IDC_ADDBP_CONDITION,43,72,136,14,ES_AUTOHSCROLL - LTEXT "Condition",65533,7,74,30,8 - LTEXT "Name",65532,8,92,20,8 - EDITTEXT IDC_ADDBP_NAME,43,89,136,14,ES_AUTOHSCROLL - CONTROL "Forbid",IDC_ADDBP_MODE_F,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,145,6,40,12 + CTEXT "-",65534,78,6,8,8 + EDITTEXT IDC_ADDBP_ADDR_END,87,4,30,12,ES_UPPERCASE | ES_WANTRETURN + CONTROL "&Forbid",IDC_ADDBP_MODE_F,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154,6,33,12 GROUPBOX "",112,3,18,185,50,WS_TABSTOP + CONTROL "&Read",IDC_ADDBP_MODE_R,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,25,35,12 + CONTROL "&Write",IDC_ADDBP_MODE_W,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,49,25,35,12 + CONTROL "&Execute",IDC_ADDBP_MODE_X,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,86,25,40,12 + GROUPBOX "Memory",108,9,39,174,24,WS_TABSTOP + CONTROL "&CPU Mem",IDC_ADDBP_MEM_CPU,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,49,50,10 + CONTROL "&PPU Mem",IDC_ADDBP_MEM_PPU,"Button",BS_AUTORADIOBUTTON,68,49,50,10 + CONTROL "&Sprite Mem",IDC_ADDBP_MEM_SPR,"Button",BS_AUTORADIOBUTTON,124,49,50,10 + LTEXT "C&ondition:",65533,7,74,34,8 + EDITTEXT IDC_ADDBP_CONDITION,43,72,136,14,ES_AUTOHSCROLL + LTEXT "&Name:",65532,8,92,20,8 + EDITTEXT IDC_ADDBP_NAME,43,89,136,14,ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,99,110,42,13 + PUSHBUTTON "Cancel",IDCANCEL,147,110,42,13 END NTVIEW DIALOGEX 44, 38, 352, 350 @@ -1568,18 +1592,18 @@ STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS CAPTION "Game Genie Encoder/Decoder Tool" FONT 8, "Tahoma", 0, 0, 0x0 BEGIN - EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL GROUPBOX "Game Genie Code",-1,107,5,69,42 + EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL + PUSHBUTTON "Add To Cheat List",IDC_BTN_ADD_TO_CHEATS,108,58,68,14,WS_DISABLED GROUPBOX "Address/Compare/Value",65534,9,5,91,75 LTEXT "Address:",65533,18,24,35,8 - EDITTEXT IDC_GAME_GENIE_ADDR,50,21,36,14,ES_AUTOHSCROLL - EDITTEXT IDC_GAME_GENIE_COMP,64,38,22,14,ES_AUTOHSCROLL - EDITTEXT IDC_GAME_GENIE_VAL,64,56,22,14,ES_AUTOHSCROLL + EDITTEXT IDC_GAME_GENIE_ADDR,50,21,36,14,ES_UPPERCASE | ES_AUTOHSCROLL LTEXT "Compare:",65532,17,41,37,8 + EDITTEXT IDC_GAME_GENIE_COMP,64,38,22,14,ES_UPPERCASE | ES_AUTOHSCROLL LTEXT "Value:",65531,18,58,32,8 + EDITTEXT IDC_GAME_GENIE_VAL,64,56,22,14,ES_UPPERCASE | ES_AUTOHSCROLL GROUPBOX "Possible Affected Rom File Addresses",65530,8,83,169,58 LISTBOX IDC_LIST_GGADDRESSES,67,95,54,40,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Add To Cheat List",IDC_BTN_ADD_TO_CHEATS,108,58,68,14,WS_DISABLED END MONITOR DIALOGEX 0, 0, 316, 343 @@ -1996,8 +2020,10 @@ BEGIN EDITTEXT IDC_CHEAT_VAL,97,174,16,12,ES_UPPERCASE | ES_WANTRETURN LTEXT "Compare:",IDC_CHEAT_COM_LABEL,117,176,34,8 EDITTEXT IDC_CHEAT_COM,152,174,16,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Cheat code / Game Genie:",IDC_CHEAT_CODE_GG_LABEL,11,190,87,8 - EDITTEXT IDC_CHEAT_TEXT,105,188,63,12,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "Cheat Code:",IDC_CHEAT_CODE_LABEL,12,190,42,8 + EDITTEXT IDC_CHEAT_TEXT,55,188,47,12,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "GG:",IDC_GAME_GENIE_LABEL,106,191,13,8 + EDITTEXT IDC_CHEAT_GAME_GENIE_TEXT,120,188,47,12,ES_UPPERCASE | ES_AUTOHSCROLL DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,7,202,30,16 PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,37,202,30,16 PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,67,202,30,16 @@ -2429,8 +2455,8 @@ BEGIN "ADDBP", DIALOG BEGIN - RIGHTMARGIN, 185 - BOTTOMMARGIN, 121 + RIGHTMARGIN, 195 + BOTTOMMARGIN, 123 END "NTVIEW", DIALOG @@ -2606,6 +2632,11 @@ BEGIN 0 END +ADDBP AFX_DIALOG_LAYOUT +BEGIN + 0 +END + ///////////////////////////////////////////////////////////////////////////// // @@ -2777,31 +2808,7 @@ IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp" IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\0" -END - -#endif // APSTUDIO_INVOKED - -#endif // ·ÇÌØ¶¨ÓïÑÔ resources +#endif // English(U.S.) resources ///////////////////////////////////////////////////////////////////////////// diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index 31385be4..c7775678 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -1,6 +1,6 @@ //{{NO_DEPENDENCIES}} -// Microsoft Visual C++ generated include file. -// Used by res.rc +// Microsoft Visual C++ generated include file +// for res.rc // #define CLOSE_BUTTON 1 #define BUTTON_CLOSE 1 @@ -553,16 +553,26 @@ #define IDC_BUTTON1 1094 #define IDC_CHEAT_SWITCH 1096 #define IDC_CHEAT_GLOBAL_SWITCH 1096 +#define IDC_GAME_GENIE_LABEL 1097 +#define IDC_CHEAT_GAME_GENIE_TEXT 1098 +#define IDC_CHECK2 1099 +#define IDC_SHOW_GG 1099 #define BTN_ALLOW_LRUD 1117 +#define IDC_PRGROM_EDIT 1118 +#define IDC_CHRROM_EDIT 1119 #define BTN_PRESET_SET1 1119 #define BTN_PRESET_SET2 1120 #define BTN_PRESET_SET3 1121 #define BTN_PRESET_IMPORT1 1122 #define BTN_PRESET_IMPORT2 1123 #define BTN_PRESET_IMPORT3 1124 +#define IDC_PRGRAM_EDIT 1125 #define BTN_PRESET_EXPORT1 1125 #define BTN_PRESET_EXPORT2 1126 #define BTN_PRESET_EXPORT3 1127 +#define IDC_CHRRAM_EDIT 1128 +#define IDC_PRGNVRAM_EDIT 1129 +#define IDC_CHRNVRAM_EDIT 1130 #define IDC_LIST1 1130 #define IDC_BUTTON_METADATA 1132 #define MEMW_EXPANDCOLLAPSE 1133 @@ -764,7 +774,7 @@ #define IDC_EXTRA_SCANLINES_TEXT 1309 #define IDC_DATASIZE_GROUPBOX 1310 #define IDC_DATATYPE_GROUPBOX 1311 -#define IDC_CHEAT_CODE_GG_LABEL 1312 +#define IDC_CHEAT_CODE_LABEL 1312 #define IDC_CHEAT_ADDRESS_LABEL 1313 #define IDC_CHEAT_VAL_LABEL 1314 #define IDC_CHEAT_COM_LABEL 1315 @@ -1065,7 +1075,7 @@ #ifndef APSTUDIO_READONLY_SYMBOLS #define _APS_NEXT_RESOURCE_VALUE 305 #define _APS_NEXT_COMMAND_VALUE 40002 -#define _APS_NEXT_CONTROL_VALUE 1097 +#define _APS_NEXT_CONTROL_VALUE 1100 #define _APS_NEXT_SYMED_VALUE 101 #endif #endif diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index 52edc646..ae54a9ba 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -182,6 +182,7 @@ const unsigned int MAX_NUMBER_OF_MOVIE_RECENT_FILES = sizeof(recent_movie)/sizeo int EnableBackgroundInput = 0; int ismaximized = 0; +WNDPROC DefaultEditCtrlProc; //Help Menu subtopics string moviehelp = "MovieRecording"; //Movie Recording @@ -3259,4 +3260,162 @@ POINT CalcSubWindowPos(HWND hDlg, POINT* conf) // return the calculated point, maybe the caller can use it for further. return pt; +} + +LRESULT APIENTRY FilterEditCtrlProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP) +{ + bool through = true; + LRESULT result = 0; + + switch (msg) + { + case WM_PASTE: + { + bool(*IsLetterLegal)(char) = GetIsLetterLegal(GetDlgCtrlID(hwnd)); + + if (IsLetterLegal) + { + if (OpenClipboard(hwnd)) + { + HANDLE handle = GetClipboardData(CF_TEXT); + if (handle) + { + + // copy the original clipboard string + char* clipStr = (char*)GlobalLock(handle); + char* original = (char*)calloc(1, strlen(clipStr) + 1); + strcpy(original, clipStr); + GlobalUnlock(handle); + + // filter it out + int lmt = SendMessage(hwnd, EM_GETLIMITTEXT, 0, 0); + char* filtered = (char*)calloc(1, lmt + 1); + int filteredIndex = 0, origIndex = 0; + while (clipStr[origIndex] && filteredIndex < lmt + 1) + { + if (IsLetterLegal(clipStr[origIndex])) + { + filtered[filteredIndex] = clipStr[origIndex]; + ++filteredIndex; + } + ++origIndex; + } + + // copy filtered str to clipboard + EmptyClipboard(); + HANDLE hNewStr = GlobalAlloc(GMEM_MOVEABLE, lmt); + char* newStr = (char*)GlobalLock(hNewStr); + strcpy(newStr, filtered); + GlobalUnlock(hNewStr); + SetClipboardData(CF_TEXT, hNewStr); + + // end + CloseClipboard(); + result = CallWindowProc(DefaultEditCtrlProc, hwnd, msg, wP, lP); + through = false; + free(filtered); + + // set it back to normal + if (OpenClipboard(hwnd)) + { + handle = GetClipboardData(CF_TEXT); + if (handle) + { + EmptyClipboard(); + HANDLE hOldStr = GlobalAlloc(GMEM_MOVEABLE, strlen(original) + 1); + char* oldStr = (char*)GlobalLock(hOldStr); + strcpy(oldStr, original); + GlobalUnlock(hOldStr); + SetClipboardData(CF_TEXT, hOldStr); + } + CloseClipboard(); + } + + // end + free(original); + } + } + } + } + break; + case WM_CHAR: + through = IsInputLegal(GetDlgCtrlID(GetFocus()), wP); + } + + return through ? CallWindowProc(DefaultEditCtrlProc, hwnd, msg, wP, lP) : result; +} + +bool inline (*GetIsLetterLegal(UINT id))(char letter) +{ + switch (id) + { + case IDC_CHEAT_GAME_GENIE_TEXT: + case IDC_GAME_GENIE_CODE: + return IsLetterLegalGG; + case IDC_CHEAT_ADDR: + case IDC_CHEAT_VAL: + case IDC_CHEAT_COM: + case IDC_CHEAT_NAME: + case IDC_CHEAT_VAL_KNOWN: + case IDC_CHEAT_VAL_NE_BY: + case IDC_CHEAT_VAL_GT_BY: + case IDC_CHEAT_VAL_LT_BY: + case IDC_GAME_GENIE_ADDR: + case IDC_GAME_GENIE_COMP: + case IDC_GAME_GENIE_VAL: + return IsLetterLegalHex; + case IDC_CHEAT_TEXT: + return IsLetterLegalCheat; + case IDC_PRGROM_EDIT: + case IDC_PRGRAM_EDIT: + case IDC_PRGNVRAM_EDIT: + case IDC_CHRROM_EDIT: + case IDC_CHRRAM_EDIT: + case IDC_CHRNVRAM_EDIT: + return IsLetterLegalSize; + case IDC_SUBMAPPER_EDIT: + case IDC_MISCELLANEOUS_ROMS_EDIT: + return IsLetterLegalPosDec; + } + return NULL; +} + +bool inline IsInputLegal(UINT id, char letter) +{ + bool(*IsLetterLegal)(char) = GetIsLetterLegal(id); + return !IsLetterLegal || letter == VK_BACK || GetKeyState(VK_CONTROL) & 0x8000 || IsLetterLegal(letter); +} + +bool inline IsLetterLegalGG(char letter) +{ + char ch = toupper(letter); + for (int i = 0; GameGenieLetters[i]; ++i) + if (GameGenieLetters[i] == ch) + return true; + return false; +} + +bool inline IsLetterLegalHex(char letter) +{ + return letter >= '0' && letter <= '9' || letter >= 'A' && letter <= 'F' || letter >= 'a' && letter <= 'f'; +} + +bool inline IsLetterLegalCheat(char letter) +{ + return letter >= '0' && letter <= ':' || letter >= 'A' && letter <= 'F' || letter >= 'a' && letter <= 'f' || letter == '?'; +} + +bool inline IsLetterLegalSize(char letter) +{ + return letter >= '0' && letter <= '9' || letter == 'm' || letter == 'M' || letter == 'k' || letter == 'K' || letter == 'b' || letter == 'B'; +} + +bool inline IsLetterLegalPosDec(char letter) +{ + return letter >= '0' && letter <= '9'; +} + +bool inline IsLetterLegalDec(char letter) +{ + return letter >= '0' && letter <= '9' || letter == '-'; } \ No newline at end of file diff --git a/src/drivers/win/window.h b/src/drivers/win/window.h index e17ba51f..a8c8b1a0 100644 --- a/src/drivers/win/window.h +++ b/src/drivers/win/window.h @@ -127,4 +127,17 @@ struct HOTKEYMENUINDEX { void UpdateMenuHotkeys(FCEUMENU_INDEX index); int GetCurrentContextIndex(); + +bool inline (*GetIsLetterLegal(UINT id))(char letter); +bool inline IsInputLegal(UINT id, char letter); +bool inline IsLetterLegalGG(char letter); +bool inline IsLetterLegalHex(char letter); +bool inline IsLetterLegalCheat(char letter); +bool inline IsLetterLegalDec(char letter); +bool inline IsLetterLegalPosDec(char letter); +bool inline IsLetterLegalSize(char letter); + +extern WNDPROC DefaultEditCtrlProc; +extern LRESULT APIENTRY FilterEditCtrlProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP); + #endif From f0396ef980a8a72d39fd5541c2d04ba497162915 Mon Sep 17 00:00:00 2001 From: owomomo Date: Wed, 19 Jun 2019 15:53:47 +0800 Subject: [PATCH 16/21] 1. Fixed accidentally added the cheat name control to the limit list. 2. Add text limit to Memory Watch for experiment. 3. Make the IDs of controls in Memory Watch predefined rather than directly coded, that's not quite standard in programming. Calculations to ID is not always trusted as they are automatically determined by the development tool. --- src/drivers/win/cheat.cpp | 1 - src/drivers/win/memwatch.cpp | 216 +++++++++++++++++++++-------------- src/drivers/win/res.rc | 119 ++++++++++--------- src/drivers/win/resource.h | 51 ++++++++- src/drivers/win/window.cpp | 38 +++--- 5 files changed, 260 insertions(+), 165 deletions(-) diff --git a/src/drivers/win/cheat.cpp b/src/drivers/win/cheat.cpp index 7629da5e..530a12ea 100644 --- a/src/drivers/win/cheat.cpp +++ b/src/drivers/win/cheat.cpp @@ -345,7 +345,6 @@ BOOL CALLBACK CheatConsoleCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM l SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_ADDR), GWL_WNDPROC, (LONG)FilterEditCtrlProc); SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL), GWL_WNDPROC, (LONG)FilterEditCtrlProc); SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_COM), GWL_WNDPROC, (LONG)FilterEditCtrlProc); - SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_NAME), GWL_WNDPROC, (LONG)FilterEditCtrlProc); SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL_KNOWN), GWL_WNDPROC, (LONG)FilterEditCtrlProc); SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL_NE_BY), GWL_WNDPROC, (LONG)FilterEditCtrlProc); SetWindowLong(GetDlgItem(hwndDlg, IDC_CHEAT_VAL_GT_BY), GWL_WNDPROC, (LONG)FilterEditCtrlProc); diff --git a/src/drivers/win/memwatch.cpp b/src/drivers/win/memwatch.cpp index 9f3af8a2..2ff0bf28 100644 --- a/src/drivers/win/memwatch.cpp +++ b/src/drivers/win/memwatch.cpp @@ -201,7 +201,7 @@ void MemwAddRecentFile(const char *filename) UpdateMemwRecentArray(filename, memw_recent_files, MEMW_MAX_NUMBER_OF_RECENT_FILES, memwrecentmenu, ID_FILE_RECENT, MEMW_MENU_FIRST_RECENT_FILE); } -static const int MW_ADDR_Lookup[] = { +static const int MW_ADDR[] = { MW_ADDR00,MW_ADDR01,MW_ADDR02,MW_ADDR03, MW_ADDR04,MW_ADDR05,MW_ADDR06,MW_ADDR07, MW_ADDR08,MW_ADDR09,MW_ADDR10,MW_ADDR11, @@ -209,11 +209,42 @@ static const int MW_ADDR_Lookup[] = { MW_ADDR16,MW_ADDR17,MW_ADDR18,MW_ADDR19, MW_ADDR20,MW_ADDR21,MW_ADDR22,MW_ADDR23 }; -inline int MW_ADDR(int i) { return MW_ADDR_Lookup[i] ; } -inline int MW_NAME(int i) { return MW_ADDR_Lookup[i]-1; } -inline int MW_VAL (int i) { return MW_ADDR_Lookup[i]+1; } +static const int MW_NAME[] = +{ + MW_NAME00,MW_NAME01,MW_NAME02,MW_NAME03, + MW_NAME04,MW_NAME05,MW_NAME06,MW_NAME07, + MW_NAME08,MW_NAME09,MW_NAME10,MW_NAME11, + MW_NAME12,MW_NAME13,MW_NAME14,MW_NAME15, + MW_NAME16,MW_NAME17,MW_NAME18,MW_NAME19, + MW_NAME20,MW_NAME21,MW_NAME22,MW_NAME23 +}; +static const int MW_VAL[] = { + MW_VAL00,MW_VAL01,MW_VAL02,MW_VAL03, + MW_VAL04,MW_VAL05,MW_VAL06,MW_VAL07, + MW_VAL08,MW_VAL09,MW_VAL10,MW_VAL11, + MW_VAL12,MW_VAL13,MW_VAL14,MW_VAL15, + MW_VAL16,MW_VAL17,MW_VAL18,MW_VAL19, + MW_VAL20,MW_VAL21,MW_VAL22,MW_VAL23 +}; +static const int MW_RESET[] = { + MEMW_EDIT00RESET, MEMW_EDIT01RESET, + MEMW_EDIT02RESET, MEMW_EDIT03RESET +}; +static const int MW_RESULT[] = { + EDIT00_RESULTS, EDIT01_RESULTS, + EDIT02_RESULTS, EDIT03_RESULTS +}; +static const int MW_RMADDR[] = { + MEMW_EDIT00RMADDRESS, MEMW_EDIT01RMADDRESS, + MEMW_EDIT02RMADDRESS, MEMW_EDIT03RMADDRESS +}; +static const int MW_EDITFORMULA[] = { + MEMW_EDIT00FORMULA, MEMW_EDIT01FORMULA, + MEMW_EDIT02FORMULA,MEMW_EDIT03FORMULA +}; -static const int MWNUM = ARRAY_SIZE(MW_ADDR_Lookup); + +static const int MWNUM = ARRAY_SIZE(MW_ADDR); static int yPositions[MWNUM]; static int xPositions[MWNUM]; @@ -223,7 +254,7 @@ static struct MWRec static int findIndex(WORD ctl) { for(int i=0;i than", "> by 1", "< than", "< by 1", "equal", "!equal"}; - const int kLabelControls[] = {MW_VALUELABEL1,MW_VALUELABEL2}; + const int kLabelControls[] = {MW_VALUELABEL1, MW_VALUELABEL2}; switch(uMsg) { case WM_ENTERMENULOOP: - EnableMenuItem(memwmenu,MEMW_FILE_SAVE,MF_BYCOMMAND | (fileChanged ? MF_ENABLED : MF_GRAYED)); + EnableMenuItem(memwmenu, MEMW_FILE_SAVE, MF_BYCOMMAND | fileChanged ? MF_ENABLED : MF_GRAYED); break; case WM_MOVE: { if (!IsIconic(hwndDlg)) { - RECT wrect; - GetWindowRect(hwndDlg,&wrect); - MemWatch_wndx = wrect.left; - MemWatch_wndy = wrect.top; + RECT wrect; + GetWindowRect(hwndDlg,&wrect); + MemWatch_wndx = wrect.left; + MemWatch_wndy = wrect.top; - #ifdef WIN32 - WindowBoundsCheckNoResize(MemWatch_wndx,MemWatch_wndy,wrect.right); - #endif + #ifdef WIN32 + WindowBoundsCheckNoResize(MemWatch_wndx,MemWatch_wndy,wrect.right); + #endif } break; }; case WM_INITDIALOG: - if (MemWatch_wndx==-32000) MemWatch_wndx=0; //Just in case - if (MemWatch_wndy==-32000) MemWatch_wndy=0; //-32000 bugs can happen as it is a special windows value - SetWindowPos(hwndDlg,0,MemWatch_wndx,MemWatch_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER); + POINT pt; + if (MemWatch_wndx != 0 && MemWatch_wndy != 0) + { + pt.x = MemWatch_wndx; + pt.y = MemWatch_wndy; + pt = CalcSubWindowPos(hwndDlg, &pt); + } + else + pt = CalcSubWindowPos(hwndDlg, NULL); + MemWatch_wndx = pt.x; + MemWatch_wndy = pt.y; + hdc = GetDC(hwndDlg); SelectObject (hdc, debugSystem->hFixedFont); SetTextAlign(hdc,TA_UPDATECP | TA_TOP | TA_LEFT); @@ -739,19 +779,23 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA } //find the positions where we should draw string values - for(int i=0;i=MWNUM/2) - col=1; + for(int i = 0; i < MWNUM; i++) { + int col = 0; + if(i >= MWNUM / 2) + col = 1; RECT r; - GetWindowRect(GetDlgItem(hwndDlg,MW_ADDR(i)),&r); - ScreenToClient(hwndDlg,(LPPOINT)&r); - ScreenToClient(hwndDlg,(LPPOINT)&r.right); + GetWindowRect(GetDlgItem(hwndDlg, MW_ADDR[i]), &r); + ScreenToClient(hwndDlg, (LPPOINT)&r); + ScreenToClient(hwndDlg, (LPPOINT)&r.right); yPositions[i] = r.top; - yPositions[i] += ((r.bottom-r.top)-debugSystem->fixedFontHeight)/2; //vertically center - GetWindowRect(GetDlgItem(hwndDlg,kLabelControls[col]),&r); - ScreenToClient(hwndDlg,(LPPOINT)&r); + yPositions[i] += (r.bottom - r.top - debugSystem->fixedFontHeight) / 2; //vertically center + GetWindowRect(GetDlgItem(hwndDlg, kLabelControls[col]), &r); + ScreenToClient(hwndDlg, (LPPOINT)&r); xPositions[i] = r.left; + + // experimental: limit the text length and input to hex values + SendDlgItemMessage(hwndDlg, MW_ADDR[i], EM_SETLIMITTEXT, 4, 0); + DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, MW_ADDR[i]), GWL_WNDPROC, (LONG)FilterEditCtrlProc); } //Populate Formula pulldown menus @@ -759,9 +803,9 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA { for (int y = 0; y < FMAX; y++) { - SendDlgItemMessage(hwndDlg, MEMW_EDIT00FORMULA+x,(UINT) CB_ADDSTRING, 0,(LPARAM) formula[y].c_str() ); + SendDlgItemMessage(hwndDlg, MW_EDITFORMULA[x], (UINT)CB_ADDSTRING, 0, (LPARAM)formula[y].c_str()); } - SendDlgItemMessage(hwndDlg, MEMW_EDIT00FORMULA+x, CB_SETCURSEL, 0, 0); + SendDlgItemMessage(hwndDlg, MW_EDITFORMULA[x], CB_SETCURSEL, 0, 0); } @@ -771,6 +815,7 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA editnow[x] = 0; editlast[x]= 0; } + RamChangeInitialize = true; break; @@ -870,7 +915,6 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA case MEMW_EXPANDCOLLAPSE: CollapseWindow(); break; - case MEMW_EDIT00RESET: RamChangeReset(0); break; @@ -892,7 +936,7 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA switch(HIWORD(wParam)) { - case EN_CHANGE: + case EN_CHANGE: { fileChanged = iftextchanged(); //the contents of an address box changed. re-parse it. @@ -904,44 +948,44 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA } #if 0 - case BN_CLICKED: + case BN_CLICKED: - switch(LOWORD(wParam)) - { - case 101: //Save button clicked - //StopSound(); //mbg 5/7/08 - //SaveMemWatch(); //5/13/08 Buttons removed (I didn't remove the code so it would be easy to add them back one day) - break; - case 102: //Load button clicked - //StopSound(); //mbg 5/7/08 - //LoadMemWatch(); //5/13/08 Buttons removed - break; - case 103: //Clear button clicked - //ClearAllText(); //5/13/08 Buttons removed - break; - default: - break; - } + switch(LOWORD(wParam)) + { + case 101: //Save button clicked + //StopSound(); //mbg 5/7/08 + //SaveMemWatch(); //5/13/08 Buttons removed (I didn't remove the code so it would be easy to add them back one day) + break; + case 102: //Load button clicked + //StopSound(); //mbg 5/7/08 + //LoadMemWatch(); //5/13/08 Buttons removed + break; + case 103: //Clear button clicked + //ClearAllText(); //5/13/08 Buttons removed + break; + default: + break; + } #endif - } + } #if 0 - if(!(wParam>>16)) //Close button clicked - { - switch(wParam&0xFFFF) + if(!(wParam>>16)) //Close button clicked { - case 1: - //CloseMemoryWatch(); //5/13/08 Buttons removed - break; + switch(wParam&0xFFFF) + { + case 1: + //CloseMemoryWatch(); //5/13/08 Buttons removed + break; + } } - } #endif - break; - default: - break; + break; + default: + break; - } + } return 0; } @@ -993,9 +1037,9 @@ void CreateMemWatch() int i; for(i = 0; i < MWNUM; i++) { - SetDlgItemText(hwndMemWatch,MW_VAL (i),(LPTSTR) "---"); - SetDlgItemText(hwndMemWatch,MW_ADDR(i),(LPTSTR) addresses[i]); - SetDlgItemText(hwndMemWatch,MW_NAME(i),(LPTSTR) labels[i]); + SetDlgItemText(hwndMemWatch,MW_VAL [i],(LPTSTR) "---"); + SetDlgItemText(hwndMemWatch,MW_ADDR[i],(LPTSTR) addresses[i]); + SetDlgItemText(hwndMemWatch,MW_NAME[i],(LPTSTR) labels[i]); } } if (MemWatchLoadFileOnStart) OpenMemwatchRecentFile(0); @@ -1014,10 +1058,10 @@ void AddMemWatch(char memaddress[32]) CreateMemWatch(); for(i = 0; i < MWNUM; i++) { - GetDlgItemText(hwndMemWatch,MW_ADDR(i),TempArray,32); + GetDlgItemText(hwndMemWatch,MW_ADDR[i],TempArray,32); if (TempArray[0] == 0) { - SetDlgItemText(hwndMemWatch,MW_ADDR(i),memaddress); + SetDlgItemText(hwndMemWatch,MW_ADDR[i],memaddress); break; } } @@ -1039,23 +1083,19 @@ void RamChange() //Get proper Addr edit box switch (x) { - case 0: - whichADDR = 0; break; //Addr 1 - case 1: - whichADDR = 3; break; //Addr 2 - case 2: - whichADDR = 36; break; //Addr 12 - case 3: - whichADDR = 39; break; //Addr 13 + case 0: whichADDR = 0; break; //Addr 1 + case 1: whichADDR = 1; break; //Addr 2 + case 2: whichADDR = 11; break; //Addr 12 + case 3: whichADDR = 12; break; //Addr 13 } - GetDlgItemText(hwndMemWatch, MW_ADDR00+(whichADDR), editboxnow[x], 6); //Get Address value of edit00 - SetDlgItemText(hwndMemWatch, MEMW_EDIT00RMADDRESS+x, editboxnow[x]); //Put Address value + GetDlgItemText(hwndMemWatch, MW_ADDR[whichADDR], editboxnow[x], 6); //Get Address value of edit00 + SetDlgItemText(hwndMemWatch, MW_RMADDR[x], editboxnow[x]); //Put Address value editlast[x] = editnow[x]; //Update last value editnow[x] = GetMem(mwrec.addr); //Update now value //Calculate Ram Change - int z = SendDlgItemMessage(hwndMemWatch, MEMW_EDIT00FORMULA+x,(UINT) CB_GETTOPINDEX, 0,0); + int z = SendDlgItemMessage(hwndMemWatch, MW_EDITFORMULA[x],(UINT) CB_GETTOPINDEX, 0,0); switch (z) { //Greater than------------------------------------ @@ -1102,7 +1142,7 @@ void RamChangeReset(int x) { editcount[x] = 0; sprintf(editchangem[x], "%d", editcount[x]); //Convert counter to text - SetDlgItemText(hwndMemWatch, EDIT00_RESULTS+x, editchangem[x]); //Display text in results box + SetDlgItemText(hwndMemWatch, MW_RESULT[x], editchangem[x]); //Display text in results box } void ChangeMemwMenuItemText(int menuitem, string text) diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index dabbb4a8..3cdcc631 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -12,7 +12,7 @@ #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// -// English(U.S) resources +// English(U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US @@ -1309,59 +1309,59 @@ FONT 8, "Tahoma", 0, 0, 0x0 BEGIN GROUPBOX "",IDC_STATIC,3,0,126,200 GROUPBOX "",IDC_STATIC,131,0,128,200 - EDITTEXT MW_ADDR00,6,17,30,14 - EDITTEXT 1000,41,17,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR01,6,32,30,14 - EDITTEXT 1003,41,32,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR02,6,47,30,14 - EDITTEXT 1006,41,47,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR03,6,62,30,14 - EDITTEXT 1009,41,62,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR04,6,77,30,14 - EDITTEXT 1012,41,77,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR05,6,92,30,14 - EDITTEXT 1015,41,92,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR06,6,107,30,14 - EDITTEXT 1018,41,107,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR07,6,122,30,14 - EDITTEXT 1021,41,122,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR08,6,137,30,14 - EDITTEXT 1024,41,137,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR09,6,152,30,14 - EDITTEXT 1027,41,152,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR10,6,167,30,14 - EDITTEXT 1030,41,167,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR11,6,182,30,14 - EDITTEXT 1033,41,182,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR12,135,17,30,14 - EDITTEXT 1036,171,17,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR13,135,32,30,14 - EDITTEXT 1039,171,32,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR14,135,47,30,14 - EDITTEXT 1042,171,47,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR15,135,62,30,14 - EDITTEXT 1045,171,62,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR16,135,77,30,14 - EDITTEXT 1048,171,77,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR17,135,92,30,14 - EDITTEXT 1051,171,92,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR18,135,107,30,14 - EDITTEXT 1054,171,107,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR19,135,122,30,14 - EDITTEXT 1057,171,122,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR20,135,137,30,14 - EDITTEXT 1060,171,137,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR21,135,152,30,14 - EDITTEXT 1063,171,152,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR22,135,167,30,14 - EDITTEXT 1066,171,167,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR23,135,182,30,14 - EDITTEXT 1069,171,182,55,14,ES_AUTOHSCROLL - LTEXT "Name",65428,41,7,20,8 - LTEXT "Address",65427,6,7,26,8 + EDITTEXT MW_ADDR00,6,17,30,14,ES_UPPERCASE + EDITTEXT MW_NAME00,41,17,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR01,6,32,30,14,ES_UPPERCASE + EDITTEXT MW_NAME01,41,32,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR02,6,47,30,14,ES_UPPERCASE + EDITTEXT MW_NAME02,41,47,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR03,6,62,30,14,ES_UPPERCASE + EDITTEXT MW_NAME03,41,62,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR04,6,77,30,14,ES_UPPERCASE + EDITTEXT MW_NAME04,41,77,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR05,6,92,30,14,ES_UPPERCASE + EDITTEXT MW_NAME05,41,92,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR06,6,107,30,14,ES_UPPERCASE + EDITTEXT MW_NAME06,41,107,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR07,6,122,30,14,ES_UPPERCASE + EDITTEXT MW_NAME07,41,122,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR08,6,137,30,14,ES_UPPERCASE + EDITTEXT MW_NAME08,41,137,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR09,6,152,30,14,ES_UPPERCASE + EDITTEXT MW_NAME09,41,152,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR10,6,167,30,14,ES_UPPERCASE + EDITTEXT MW_NAME10,41,167,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR11,6,182,30,14,ES_UPPERCASE + EDITTEXT MW_NAME11,41,182,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR12,135,17,30,14,ES_UPPERCASE + EDITTEXT MW_NAME12,171,17,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR13,135,32,30,14,ES_UPPERCASE + EDITTEXT MW_NAME13,171,32,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR14,135,47,30,14,ES_UPPERCASE + EDITTEXT MW_NAME14,171,47,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR15,135,62,30,14,ES_UPPERCASE + EDITTEXT MW_NAME15,171,62,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR16,135,77,30,14,ES_UPPERCASE + EDITTEXT MW_NAME16,171,77,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR17,135,92,30,14,ES_UPPERCASE + EDITTEXT MW_NAME17,171,92,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR18,135,107,30,14,ES_UPPERCASE + EDITTEXT MW_NAME18,171,107,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR19,135,122,30,14,ES_UPPERCASE + EDITTEXT MW_NAME19,171,122,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR20,135,137,30,14,ES_UPPERCASE + EDITTEXT MW_NAME20,171,137,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR21,135,152,30,14,ES_UPPERCASE + EDITTEXT MW_NAME21,171,152,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR22,135,167,30,14,ES_UPPERCASE + EDITTEXT MW_NAME22,171,167,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR23,135,182,30,14,ES_UPPERCASE + EDITTEXT MW_NAME23,171,182,55,14,ES_AUTOHSCROLL + LTEXT "Name",IDC_STATIC,41,7,20,8 + LTEXT "Address",IDC_STATIC,6,7,26,8 LTEXT "Value",MW_VALUELABEL1,101,7,19,8 - LTEXT "Name",65425,171,7,20,8 - LTEXT "Address",65424,135,7,26,8 + LTEXT "Name",IDC_STATIC,171,7,20,8 + LTEXT "Address",IDC_STATIC,135,7,26,8 LTEXT "Value",MW_VALUELABEL2,231,7,19,8 LTEXT " ",EDIT00_RESULTS,89,225,26,8 GROUPBOX "Memory Change Monitoring",IDC_STATIC,0,202,129,57,BS_CENTER @@ -2205,9 +2205,9 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSM CAPTION " Edit Watch" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - CTEXT "Address:",IDC_SPECIFICADDRESS,15,12,30,8 + CTEXT "&Address:",IDC_SPECIFICADDRESS,15,12,30,8 EDITTEXT IDC_EDIT_COMPAREADDRESS,48,10,65,12,ES_UPPERCASE | ES_AUTOHSCROLL - CTEXT "Notes:",IDC_PROMPT_TEXT,23,24,22,8 + CTEXT "&Notes:",IDC_PROMPT_TEXT,23,24,22,8 EDITTEXT IDC_PROMPT_EDIT,48,22,119,12,ES_AUTOHSCROLL GROUPBOX "Data Type",IDC_DATATYPE_GROUPBOX,14,37,75,42,0,WS_EX_TRANSPARENT CONTROL "&Signed",IDC_SIGNED,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,18,47,67,9 @@ -2217,8 +2217,8 @@ BEGIN CONTROL "&1 byte",IDC_1_BYTE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,98,47,61,11 CONTROL "&2 bytes",IDC_2_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,57,61,11 CONTROL "&4 bytes",IDC_4_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,67,61,11 - DEFPUSHBUTTON "&OK",IDOK,66,80,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,120,80,50,14 + DEFPUSHBUTTON "OK",IDOK,66,80,50,14 + PUSHBUTTON "Cancel",IDCANCEL,120,80,50,14 END DLG_SNESPAD DIALOGEX 4, 109, 243, 121 @@ -2637,6 +2637,11 @@ BEGIN 0 END +MEMWATCH AFX_DIALOG_LAYOUT +BEGIN + 0 +END + ///////////////////////////////////////////////////////////////////////////// // diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index c7775678..b61c0931 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -442,19 +442,21 @@ #define IDC_GAME_GENIE_CODE 1000 #define IDC_MEMVIEWFIND_WHAT 1000 #define IDC_BOOKMARK_DESCRIPTION 1000 +#define MW_NAME00 1000 #define MW_ADDR00 1001 -#define IDC_GAME_GENIE_ADDR 1001 #define IDC_MEMVIEWFIND_TYPE_HEX 1001 #define IDC_NTVIEW_MIRROR_HORIZONTAL 1001 #define IDC_CHECK_STOPMOVIE 1002 #define IDC_GAME_GENIE_COMP 1002 #define IDC_MEMVIEWFIND_TYPE_TEXT 1002 #define IDC_NTVIEW_MIRROR_VERTICAL 1002 +#define MW_VAL00 1002 #define LV_MAPPING 1003 #define IDC_EDIT_STOPFRAME 1003 #define IDC_GAME_GENIE_VAL 1003 #define IDC_MEMVIEWFIND_DIR_UP 1003 #define IDC_NTVIEW_MIRROR_FOUR_SCREEN 1003 +#define MW_NAME01 1003 #define MW_ADDR01 1004 #define IDC_LIST_GGADDRESSES 1004 #define IDC_MEMVIEWFIND_DIR_DOWN 1004 @@ -462,78 +464,123 @@ #define IDC_BTN_ADD_TO_CHEATS 1005 #define IDC_MEMVIEWFIND_NEXT 1005 #define IDC_NTVIEW_MIRROR_SS_TABLE_1 1005 +#define MW_VAL01 1005 #define IDC_NTVIEW_MIRROR_SS_TABLE_2 1006 +#define MW_NAME02 1006 #define MW_ADDR02 1007 #define IDC_NTVIEW_MIRROR_SS_TABLE_3 1007 #define IDC_NTVIEW_SHOW_SCROLL_LINES 1008 +#define MW_VAL02 1008 #define IDC_NTVIEW_SHOW_ATTRIBUTES 1009 +#define MW_NAME03 1009 #define IDC_NTVIEW_HIDE_PALETTES 1010 #define MW_ADDR03 1010 #define IDC_BTN_CHEAT_EXPORTTOFILE 1011 +#define MW_VAL03 1011 #define IDSAVE 1012 +#define MW_NAME04 1012 #define MW_ADDR04 1013 #define IDC_CHECK1 1013 #define IDC_CHEAT_AUTOLOADSAVE 1013 #define IDC_RESTORE_BUTTON 1014 +#define MW_VAL04 1014 +#define MW_NAME05 1015 #define MW_ADDR05 1016 +#define MW_VAL05 1017 #define IDC_PRGROM_COMBO 1018 +#define MW_NAME06 1018 #define MW_ADDR06 1019 #define IDC_CHRROM_COMBO 1019 #define IDC_RADIO_MIRR_HORIZONTAL 1020 +#define MW_VAL06 1020 #define IDC_RADIO_MIRR_VERTICAL 1021 +#define MW_NAME07 1021 #define MW_ADDR07 1022 #define IDC_RADIO_MIRR_4SCREEN 1022 +#define MW_VAL07 1023 #define IDC_CHECK_TRAINER 1024 +#define MW_NAME08 1024 #define MW_ADDR08 1025 #define IDC_PRGRAM_COMBO 1025 #define IDC_MAPPER_COMBO 1026 +#define MW_VAL08 1026 #define IDC_SUBMAPPER_EDIT 1027 +#define MW_NAME09 1027 #define MW_ADDR09 1028 #define IDC_CHRRAM_COMBO 1028 #define IDC_PRGNVRAM_COMBO 1029 +#define MW_VAL09 1029 #define IDC_CHRNVRAM_COMBO 1030 +#define MW_NAME10 1030 #define MW_ADDR10 1031 #define IDC_RADIO_REGION_NTSC 1031 #define IDC_RADIO_REGION_PAL 1032 +#define MW_VAL10 1032 #define IDC_RADIO_REGION_DUAL 1033 +#define MW_NAME11 1033 #define MW_ADDR11 1034 +#define MW_VAL11 1035 #define IDC_INPUT_DEVICE_COMBO 1036 +#define MW_NAME12 1036 #define MW_ADDR12 1037 #define IDC_RADIO_REGION_DENDY 1037 #define IDC_RADIO_SYSTEM_NORMAL 1038 +#define MW_VAL12 1038 #define IDC_RADIO_SYSTEM_VS 1039 +#define MW_NAME13 1039 #define MW_ADDR13 1040 #define IDC_RADIO_SYSTEM_PLAYCHOICE10 1040 #define IDC_RADIO_SYSTEM_EXTEND 1041 +#define MW_VAL13 1041 +#define MW_NAME14 1042 #define MW_ADDR14 1043 #define IDC_SYSTEM_EXTEND_COMBO 1043 +#define MW_VAL14 1044 +#define MW_NAME15 1045 #define MW_ADDR15 1046 #define IDC_VS_SYSTEM_COMBO 1046 #define IDC_VS_PPU_COMBO 1047 +#define MW_VAL15 1047 +#define MW_NAME16 1048 #define MW_ADDR16 1049 #define IDC_MAPPER_TEXT 1049 #define IDC_SUBMAPPER_TEXT 1050 +#define MW_VAL16 1050 #define IDC_PRGROM_TEXT 1051 +#define MW_NAME17 1051 #define MW_ADDR17 1052 #define IDC_CHRROM_TEXT 1053 +#define MW_VAL17 1053 +#define MW_NAME18 1054 #define MW_ADDR18 1055 #define IDC_PRGRAM_TEXT 1055 +#define MW_VAL18 1056 #define IDC_CHRRAM_TEXT 1057 +#define MW_NAME19 1057 #define MW_ADDR19 1058 #define IDC_PRGNVRAM_TEXT 1059 +#define MW_VAL19 1059 #define IDC_CHRNVRAM_TEXT 1060 +#define MW_NAME20 1060 #define MW_ADDR20 1061 +#define MW_VAL20 1062 #define IDC_INESHEADER_GROUP 1063 +#define MW_NAME21 1063 #define MW_ADDR21 1064 #define IDC_MIRRORING_GROUP 1064 #define IDC_REGION_GROUP 1065 +#define MW_VAL21 1065 #define IDC_SYSTEM_GROUP 1066 +#define MW_NAME22 1066 #define MW_ADDR22 1067 #define IDC_VS_SYSTEM_GROUP 1067 #define IDC_VS_SYSTEM_TEXT 1068 +#define MW_VAL22 1068 #define IDC_VS_PPU_TEXT 1069 +#define MW_NAME23 1069 #define MW_ADDR23 1070 #define IDC_RADIO_VERSION_STANDARD 1071 +#define MW_VAL23 1071 #define IDC_RADIO_VERSION_INES20 1073 #define IDC_VERSION_GROUP 1074 #define IDC_MAPPER_GROUP 1075 @@ -556,7 +603,6 @@ #define IDC_GAME_GENIE_LABEL 1097 #define IDC_CHEAT_GAME_GENIE_TEXT 1098 #define IDC_CHECK2 1099 -#define IDC_SHOW_GG 1099 #define BTN_ALLOW_LRUD 1117 #define IDC_PRGROM_EDIT 1118 #define IDC_CHRROM_EDIT 1119 @@ -779,6 +825,7 @@ #define IDC_CHEAT_VAL_LABEL 1314 #define IDC_CHEAT_COM_LABEL 1315 #define IDC_CHEAT_LABEL_KNOWN 1316 +#define IDC_GAME_GENIE_ADDR 1501 #define MENU_INESHEADEREDITOR 40001 #define MENU_NETWORK 40040 #define MENU_PALETTE 40041 diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index ae54a9ba..b4fe09e2 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -3352,27 +3352,31 @@ bool inline (*GetIsLetterLegal(UINT id))(char letter) case IDC_CHEAT_GAME_GENIE_TEXT: case IDC_GAME_GENIE_CODE: return IsLetterLegalGG; - case IDC_CHEAT_ADDR: - case IDC_CHEAT_VAL: - case IDC_CHEAT_COM: - case IDC_CHEAT_NAME: - case IDC_CHEAT_VAL_KNOWN: - case IDC_CHEAT_VAL_NE_BY: - case IDC_CHEAT_VAL_GT_BY: - case IDC_CHEAT_VAL_LT_BY: - case IDC_GAME_GENIE_ADDR: - case IDC_GAME_GENIE_COMP: - case IDC_GAME_GENIE_VAL: + + case IDC_CHEAT_ADDR: case IDC_CHEAT_VAL: case IDC_CHEAT_COM: + case IDC_CHEAT_VAL_KNOWN: case IDC_CHEAT_VAL_NE_BY: + case IDC_CHEAT_VAL_GT_BY: case IDC_CHEAT_VAL_LT_BY: + + case IDC_GAME_GENIE_ADDR: case IDC_GAME_GENIE_VAL: case IDC_GAME_GENIE_COMP: + + case MW_ADDR00: case MW_ADDR01: case MW_ADDR02: case MW_ADDR03: + case MW_ADDR04: case MW_ADDR05: case MW_ADDR06: case MW_ADDR07: + case MW_ADDR08: case MW_ADDR09: case MW_ADDR10: case MW_ADDR11: + case MW_ADDR12: case MW_ADDR13: case MW_ADDR14: case MW_ADDR15: + case MW_ADDR16: case MW_ADDR17: case MW_ADDR18: case MW_ADDR19: + case MW_ADDR20: case MW_ADDR21: case MW_ADDR22: case MW_ADDR23: return IsLetterLegalHex; + + case IDC_CHEAT_TEXT: return IsLetterLegalCheat; - case IDC_PRGROM_EDIT: - case IDC_PRGRAM_EDIT: - case IDC_PRGNVRAM_EDIT: - case IDC_CHRROM_EDIT: - case IDC_CHRRAM_EDIT: - case IDC_CHRNVRAM_EDIT: + + + case IDC_PRGROM_EDIT: case IDC_PRGRAM_EDIT: case IDC_PRGNVRAM_EDIT: + case IDC_CHRROM_EDIT: case IDC_CHRRAM_EDIT: case IDC_CHRNVRAM_EDIT: return IsLetterLegalSize; + + case IDC_SUBMAPPER_EDIT: case IDC_MISCELLANEOUS_ROMS_EDIT: return IsLetterLegalPosDec; From 4e3473ac5d333db419a6e7dfd7f0b9cdc6f8ee53 Mon Sep 17 00:00:00 2001 From: owomomo Date: Wed, 19 Jun 2019 15:53:47 +0800 Subject: [PATCH 17/21] 1. Fixed accidentally added the cheat name control to the limit list. 2. Add text limit to Memory Watch for experiment. 3. Make the IDs of controls in Memory Watch predefined rather than directly coded, that's not quite standard in programming. Calculations to ID is not always trusted as they are automatically determined by the development tool. --- src/drivers/win/res.rc | 56 +++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 3cdcc631..faffec4c 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -707,7 +707,7 @@ END DIRCONFIG DIALOGEX 63, 7, 305, 255 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Directories Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",CLOSE_BUTTON,175,230,56,14 PUSHBUTTON "Cancel",BTN_CANCEL,239,230,56,14 @@ -752,7 +752,7 @@ END DWBDIALOG DIALOG 33, 99, 250, 56 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "DWB!" -FONT 8, "Tahoma" +FONT 9, "MS Shell Dlg" BEGIN LTEXT "Text",LBL_DWBDIALOG_TEXT,7,9,237,8 PUSHBUTTON "Clear",BTN_CLEAR,64,32,50,14 @@ -762,7 +762,7 @@ END FKBDIALOG DIALOG 13, 72, 402, 194 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Family Keyboard Configuration" -FONT 8, "Tahoma" +FONT 9, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,320,170,56,14 LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Family Keyboard input.",65503,18,6,370,12 @@ -844,7 +844,7 @@ END GAMEPADDIALOG DIALOGEX 4, 109, 243, 220 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Gamepad Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,173,196,56,14 GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP @@ -874,7 +874,7 @@ END GUICONFIG DIALOGEX 16, 123, 184, 158 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "GUI Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,65,136,56,14 CONTROL "Load ""File Open"" dialog when FCEUX starts.",CB_LOAD_FILE_OPEN, @@ -896,7 +896,7 @@ END INPUTCONFIG DIALOGEX 122, 105, 349, 199 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Input Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Port 1:",102,20,31,152,50 COMBOBOX COMBO_PAD1,27,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP @@ -944,7 +944,7 @@ END MAHJONGDIALOG DIALOG 65510, 106, 340, 110 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "mahjong" -FONT 8, "Tahoma" +FONT 9, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,277,91,56,14 GROUPBOX "",321,8,8,324,73,WS_GROUP @@ -974,7 +974,7 @@ END MAPINPUT DIALOGEX 0, 0, 318, 294 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Hotkeys" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,261,274,50,14 PUSHBUTTON "Cancel",BTN_CANCEL,205,274,50,14 @@ -997,7 +997,7 @@ END NETMOO DIALOGEX 44, 59, 365, 209 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Network Play" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN EDITTEXT IDC_NETMOO_CMD_INPUT,10,137,347,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_OEMCONVERT | ES_WANTRETURN EDITTEXT IDC_NETMOO_STATUS,10,8,347,130,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL @@ -1019,7 +1019,7 @@ END NEWINPUT DIALOGEX 0, 0, 186, 66 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Enter New Input" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN CTEXT "Press a key",LBL_KEY_COMBO,31,14,122,20 PUSHBUTTON "Clear",BTN_CLEAR,95,45,50,14 @@ -1029,7 +1029,7 @@ END PALCONFIG DIALOGEX 16, 81, 228, 217 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Palette Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BUTTON_CLOSE,162,195,56,14 GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP @@ -1061,7 +1061,7 @@ END POWERPADDIALOG DIALOG 30, 123, 131, 119 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Power Pad Configuration" -FONT 8, "Tahoma" +FONT 9, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,34,95,56,14 GROUPBOX "",312,8,10,114,74,WS_GROUP @@ -1082,7 +1082,7 @@ END QUIZKINGDIALOG DIALOG 30, 123, 160, 74 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "quiz king" -FONT 8, "Tahoma" +FONT 9, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,54,56,56,14 GROUPBOX "Buzzers",312,8,7,144,39,WS_GROUP @@ -1097,7 +1097,7 @@ END SOUNDCONFIG DIALOGEX 8, 95, 334, 282 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Sound Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,280,260,44,14 GROUPBOX "Output/Output Format:",302,10,9,131,93,WS_GROUP @@ -1140,7 +1140,7 @@ END SUBORKBDIALOG DIALOGEX 13, 72, 478, 171 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Subor Keyboard Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",1,405,151,56,14 LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Keyboard input.",-1,18,6,370,12 @@ -1251,7 +1251,7 @@ END TIMINGCONFIG DIALOGEX 23, 157, 203, 110 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Timing Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",1,137,87,56,14 CONTROL "Disable speed throttling used when sound is disabled.",CB_DISABLE_SPEED_THROTTLING, @@ -1268,7 +1268,7 @@ END MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Movie Options" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",IDC_MOVIE_CLOSE,48,200,49,14,BS_CENTER CONTROL "Pause after playback",IDC_MOVIE_PAUSEAFTERPLAYBACK, @@ -1295,7 +1295,7 @@ END DWBDIALOGSIMPLE DIALOGEX 33, 99, 250, 39 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "DWBS!" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN LTEXT "Type a key, or press Escape to disable.",65429,53,14,125,8 END @@ -1305,7 +1305,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VI EXSTYLE WS_EX_ACCEPTFILES CAPTION "Memory Watch" MENU MEMWATCHMENU -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "",IDC_STATIC,3,0,126,200 GROUPBOX "",IDC_STATIC,131,0,128,200 @@ -1395,7 +1395,7 @@ END DEBUGGER DIALOGEX 54, 74, 546, 334 STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "6502 Debugger" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN CONTROL "",IDC_DEBUGGER_DISASSEMBLY,"RichEdit20A",ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_BORDER | WS_HSCROLL,18,5,316,317 SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,334,5,11,317,SBS_VERT @@ -1478,7 +1478,7 @@ END TRACER DIALOGEX 0, 0, 317, 181 STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Trace Logger" -FONT 8, "Tahoma", 400, 0, 0x0 +FONT 9, "MS Shell Dlg", 400, 0, 0x0 BEGIN EDITTEXT IDC_TRACER_LOG,3,3,300,44,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL SCROLLBAR IDC_SCRL_TRACER_LOG,303,3,11,44,SBS_VERT @@ -1516,7 +1516,7 @@ END ADDBP DIALOGEX 66, 83, 197, 125 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Add Breakpoint..." -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN LTEXT "&Address:",-1,14,6,30,10 EDITTEXT IDC_ADDBP_ADDR_START,48,4,30,12,ES_UPPERCASE | ES_WANTRETURN @@ -1542,7 +1542,7 @@ END NTVIEW DIALOGEX 44, 38, 352, 350 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Name Table Viewer" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Name Tables",IDC_NTVIEW_TABLE_BOX,2,0,347,251,WS_TABSTOP LTEXT "Refresh: More",IDC_STATIC,225,254,50,9 @@ -1571,7 +1571,7 @@ END ROMPATCHER DIALOGEX 84, 67, 304, 135 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Rom Data Editor" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN EDITTEXT IDC_ROMPATCHER_CURRENT_DATA,7,47,282,12,ES_READONLY PUSHBUTTON "Apply",IDC_ROMPATCHER_BTN_APPLY,185,92,54,14 @@ -1590,7 +1590,7 @@ END GGCONV DIALOGEX 84, 67, 186, 146 STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Game Genie Encoder/Decoder Tool" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Game Genie Code",-1,107,5,69,42 EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL @@ -1934,7 +1934,7 @@ END PPUVIEW DIALOGEX 44, 38, 353, 234 STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "PPU Viewer" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Pattern Tables",GRP_PPUVIEW_TABLES,2,-1,348,185,WS_TABSTOP LTEXT "Tile:",LBL_PPUVIEW_TILE1,6,138,50,9 @@ -2073,7 +2073,7 @@ END VIDEOCONFIG DIALOGEX 65520, 76, 511, 170 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Video Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Full Screen Settings",65453,5,3,171,141,WS_GROUP CONTROL "Full Screen (Alt + Enter or double-click)",IDC_VIDEOCONFIG_FS, @@ -2224,7 +2224,7 @@ END DLG_SNESPAD DIALOGEX 4, 109, 243, 121 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Gamepad Configuration" -FONT 8, "Tahoma", 0, 0, 0x0 +FONT 9, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,177,97,56,14 GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP From fee4fc83a897532822b0d0a5686e8c0f7195c322 Mon Sep 17 00:00:00 2001 From: owomomo Date: Thu, 20 Jun 2019 01:58:35 +0800 Subject: [PATCH 18/21] 1. Add more controls to limit input text. 2. Changed limit input behaviour to match the system default ES_NUMBER. --- src/drivers/win/debugger.cpp | 20 ++- src/drivers/win/debugger.h | 2 + src/drivers/win/header_editor.cpp | 4 - src/drivers/win/memwatch.cpp | 38 +++--- src/drivers/win/res.rc | 155 ++++++++++++++-------- src/drivers/win/video.cpp | 5 + src/drivers/win/window.cpp | 208 ++++++++++++++++++------------ src/drivers/win/window.h | 20 +-- 8 files changed, 286 insertions(+), 166 deletions(-) diff --git a/src/drivers/win/debugger.cpp b/src/drivers/win/debugger.cpp index ea5d92fe..c38feaed 100644 --- a/src/drivers/win/debugger.cpp +++ b/src/drivers/win/debugger.cpp @@ -70,7 +70,7 @@ static HMENU hDisasmcontext; //Handle to context menu static HMENU hDisasmcontextsub; //Handle to context sub menu WNDPROC IDC_DEBUGGER_DISASSEMBLY_oldWndProc = 0; -static HFONT hFont; +// static HFONT hFont; static SCROLLINFO si; bool debuggerAutoload = false; @@ -276,8 +276,12 @@ BOOL CALLBACK AddbpCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) { case WM_INITDIALOG: CenterWindow(hwndDlg); - SendDlgItemMessage(hwndDlg,IDC_ADDBP_ADDR_START,EM_SETLIMITTEXT,4,0); - SendDlgItemMessage(hwndDlg,IDC_ADDBP_ADDR_END,EM_SETLIMITTEXT,4,0); + SendDlgItemMessage(hwndDlg, IDC_ADDBP_ADDR_START, EM_SETLIMITTEXT, 4, 0); + SendDlgItemMessage(hwndDlg, IDC_ADDBP_ADDR_END, EM_SETLIMITTEXT, 4, 0); + + DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_ADDBP_ADDR_START), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_ADDBP_ADDR_END), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + if (WP_edit >= 0) { SetWindowText(hwndDlg,"Edit Breakpoint..."); @@ -359,7 +363,7 @@ BOOL CALLBACK AddbpCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) int tmp = NewBreakWindows(hwndDlg,WP_edit,(BOOL)(watchpoint[WP_edit].flags&WP_E)); if (tmp == 2 || tmp == INVALID_BREAKPOINT_CONDITION) { - MessageBox(hwndDlg, "Invalid breakpoint condition", "Error", MB_OK); + MessageBox(hwndDlg, "Invalid breakpoint condition", "Error", MB_OK | MB_ICONERROR); break; } EndDialog(hwndDlg,1); @@ -1820,6 +1824,14 @@ BOOL CALLBACK DebuggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_PPU,EM_SETLIMITTEXT,4,0); SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_SPR,EM_SETLIMITTEXT,2,0); + // limit input + DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_PCSEEK), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_PC), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_A), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_X), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_VAL_Y), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_DEBUGGER_BOOKMARK), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + //I'm lazy, disable the controls which I can't mess with right now SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_PPU,EM_SETREADONLY,TRUE,0); SendDlgItemMessage(hwndDlg,IDC_DEBUGGER_VAL_SPR,EM_SETREADONLY,TRUE,0); diff --git a/src/drivers/win/debugger.h b/src/drivers/win/debugger.h index 3f07f5aa..63e9722d 100644 --- a/src/drivers/win/debugger.h +++ b/src/drivers/win/debugger.h @@ -69,5 +69,7 @@ public: } *debugSystem; +// extern WNDPROC DefaultEditCtrlProc; +// extern LRESULT APIENTRY FilterEditCtrlProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP); #endif diff --git a/src/drivers/win/header_editor.cpp b/src/drivers/win/header_editor.cpp index 3ff4f14a..14c95733 100644 --- a/src/drivers/win/header_editor.cpp +++ b/src/drivers/win/header_editor.cpp @@ -307,10 +307,6 @@ HWND InitHeaderEditDialog(HWND hwnd, iNES_HEADER* header) SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRRAM_COMBO), IDC_CHRRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); // CHR NVRAM SetWindowLong(GetDlgItem(GetDlgItem(hwnd, IDC_CHRNVRAM_COMBO), IDC_CHRNVRAM_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); - // Sub Mapper# - SetWindowLong(GetDlgItem(hwnd, IDC_SUBMAPPER_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); - // Misc. ROM(s) - SetWindowLong(GetDlgItem(hwnd, IDC_MISCELLANEOUS_ROMS_EDIT), GWL_WNDPROC, (LONG)FilterEditCtrlProc); ToggleINES20(hwnd, IsDlgButtonChecked(hwnd, IDC_RADIO_VERSION_INES20) == BST_CHECKED); diff --git a/src/drivers/win/memwatch.cpp b/src/drivers/win/memwatch.cpp index 2ff0bf28..34f0216b 100644 --- a/src/drivers/win/memwatch.cpp +++ b/src/drivers/win/memwatch.cpp @@ -202,29 +202,29 @@ void MemwAddRecentFile(const char *filename) } static const int MW_ADDR[] = { - MW_ADDR00,MW_ADDR01,MW_ADDR02,MW_ADDR03, - MW_ADDR04,MW_ADDR05,MW_ADDR06,MW_ADDR07, - MW_ADDR08,MW_ADDR09,MW_ADDR10,MW_ADDR11, - MW_ADDR12,MW_ADDR13,MW_ADDR14,MW_ADDR15, - MW_ADDR16,MW_ADDR17,MW_ADDR18,MW_ADDR19, - MW_ADDR20,MW_ADDR21,MW_ADDR22,MW_ADDR23 + MW_ADDR00, MW_ADDR01, MW_ADDR02, MW_ADDR03, + MW_ADDR04, MW_ADDR05, MW_ADDR06, MW_ADDR07, + MW_ADDR08, MW_ADDR09, MW_ADDR10, MW_ADDR11, + MW_ADDR12, MW_ADDR13, MW_ADDR14, MW_ADDR15, + MW_ADDR16, MW_ADDR17, MW_ADDR18, MW_ADDR19, + MW_ADDR20, MW_ADDR21, MW_ADDR22, MW_ADDR23 }; static const int MW_NAME[] = { - MW_NAME00,MW_NAME01,MW_NAME02,MW_NAME03, - MW_NAME04,MW_NAME05,MW_NAME06,MW_NAME07, - MW_NAME08,MW_NAME09,MW_NAME10,MW_NAME11, - MW_NAME12,MW_NAME13,MW_NAME14,MW_NAME15, - MW_NAME16,MW_NAME17,MW_NAME18,MW_NAME19, - MW_NAME20,MW_NAME21,MW_NAME22,MW_NAME23 + MW_NAME00, MW_NAME01, MW_NAME02, MW_NAME03, + MW_NAME04, MW_NAME05, MW_NAME06, MW_NAME07, + MW_NAME08, MW_NAME09, MW_NAME10, MW_NAME11, + MW_NAME12, MW_NAME13, MW_NAME14, MW_NAME15, + MW_NAME16, MW_NAME17, MW_NAME18, MW_NAME19, + MW_NAME20, MW_NAME21, MW_NAME22, MW_NAME23 }; static const int MW_VAL[] = { - MW_VAL00,MW_VAL01,MW_VAL02,MW_VAL03, - MW_VAL04,MW_VAL05,MW_VAL06,MW_VAL07, - MW_VAL08,MW_VAL09,MW_VAL10,MW_VAL11, - MW_VAL12,MW_VAL13,MW_VAL14,MW_VAL15, - MW_VAL16,MW_VAL17,MW_VAL18,MW_VAL19, - MW_VAL20,MW_VAL21,MW_VAL22,MW_VAL23 + MW_VAL00, MW_VAL01, MW_VAL02, MW_VAL03, + MW_VAL04, MW_VAL05, MW_VAL06, MW_VAL07, + MW_VAL08, MW_VAL09, MW_VAL10, MW_VAL11, + MW_VAL12, MW_VAL13, MW_VAL14, MW_VAL15, + MW_VAL16, MW_VAL17, MW_VAL18, MW_VAL19, + MW_VAL20, MW_VAL21, MW_VAL22, MW_VAL23 }; static const int MW_RESET[] = { MEMW_EDIT00RESET, MEMW_EDIT01RESET, @@ -240,7 +240,7 @@ static const int MW_RMADDR[] = { }; static const int MW_EDITFORMULA[] = { MEMW_EDIT00FORMULA, MEMW_EDIT01FORMULA, - MEMW_EDIT02FORMULA,MEMW_EDIT03FORMULA + MEMW_EDIT02FORMULA, MEMW_EDIT03FORMULA }; diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index faffec4c..643bc61c 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -707,7 +707,7 @@ END DIRCONFIG DIALOGEX 63, 7, 305, 255 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Directories Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",CLOSE_BUTTON,175,230,56,14 PUSHBUTTON "Cancel",BTN_CANCEL,239,230,56,14 @@ -752,7 +752,7 @@ END DWBDIALOG DIALOG 33, 99, 250, 56 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "DWB!" -FONT 9, "MS Shell Dlg" +FONT 8, "MS Shell Dlg" BEGIN LTEXT "Text",LBL_DWBDIALOG_TEXT,7,9,237,8 PUSHBUTTON "Clear",BTN_CLEAR,64,32,50,14 @@ -762,7 +762,7 @@ END FKBDIALOG DIALOG 13, 72, 402, 194 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Family Keyboard Configuration" -FONT 9, "MS Shell Dlg" +FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,320,170,56,14 LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Family Keyboard input.",65503,18,6,370,12 @@ -844,7 +844,7 @@ END GAMEPADDIALOG DIALOGEX 4, 109, 243, 220 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Gamepad Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,173,196,56,14 GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP @@ -874,7 +874,7 @@ END GUICONFIG DIALOGEX 16, 123, 184, 158 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "GUI Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,65,136,56,14 CONTROL "Load ""File Open"" dialog when FCEUX starts.",CB_LOAD_FILE_OPEN, @@ -896,7 +896,7 @@ END INPUTCONFIG DIALOGEX 122, 105, 349, 199 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Input Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Port 1:",102,20,31,152,50 COMBOBOX COMBO_PAD1,27,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP @@ -944,7 +944,7 @@ END MAHJONGDIALOG DIALOG 65510, 106, 340, 110 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "mahjong" -FONT 9, "MS Shell Dlg" +FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,277,91,56,14 GROUPBOX "",321,8,8,324,73,WS_GROUP @@ -974,7 +974,7 @@ END MAPINPUT DIALOGEX 0, 0, 318, 294 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Hotkeys" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",IDOK,261,274,50,14 PUSHBUTTON "Cancel",BTN_CANCEL,205,274,50,14 @@ -987,7 +987,7 @@ END MESSAGELOG DIALOGEX 33, 38, 197, 229 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Message Log" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN EDITTEXT LBL_LOG_TEXT,1,1,194,208,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL PUSHBUTTON "Clear",CLEAR_LOG,94,211,47,14 @@ -997,7 +997,7 @@ END NETMOO DIALOGEX 44, 59, 365, 209 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Network Play" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN EDITTEXT IDC_NETMOO_CMD_INPUT,10,137,347,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_OEMCONVERT | ES_WANTRETURN EDITTEXT IDC_NETMOO_STATUS,10,8,347,130,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL @@ -1019,7 +1019,7 @@ END NEWINPUT DIALOGEX 0, 0, 186, 66 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Enter New Input" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN CTEXT "Press a key",LBL_KEY_COMBO,31,14,122,20 PUSHBUTTON "Clear",BTN_CLEAR,95,45,50,14 @@ -1029,7 +1029,7 @@ END PALCONFIG DIALOGEX 16, 81, 228, 217 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Palette Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BUTTON_CLOSE,162,195,56,14 GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP @@ -1061,7 +1061,7 @@ END POWERPADDIALOG DIALOG 30, 123, 131, 119 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Power Pad Configuration" -FONT 9, "MS Shell Dlg" +FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,34,95,56,14 GROUPBOX "",312,8,10,114,74,WS_GROUP @@ -1082,7 +1082,7 @@ END QUIZKINGDIALOG DIALOG 30, 123, 160, 74 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "quiz king" -FONT 9, "MS Shell Dlg" +FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,54,56,56,14 GROUPBOX "Buzzers",312,8,7,144,39,WS_GROUP @@ -1097,7 +1097,7 @@ END SOUNDCONFIG DIALOGEX 8, 95, 334, 282 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Sound Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,280,260,44,14 GROUPBOX "Output/Output Format:",302,10,9,131,93,WS_GROUP @@ -1140,7 +1140,7 @@ END SUBORKBDIALOG DIALOGEX 13, 72, 478, 171 STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Subor Keyboard Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",1,405,151,56,14 LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Keyboard input.",-1,18,6,370,12 @@ -1249,26 +1249,26 @@ BEGIN END TIMINGCONFIG DIALOGEX 23, 157, 203, 110 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Timing Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",1,137,87,56,14 CONTROL "Disable speed throttling used when sound is disabled.",CB_DISABLE_SPEED_THROTTLING, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,183,12 CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,102,12 CONTROL "Overclocking (old PPU only).",CB_OVERCLOCKING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,41,101,10 - EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED LTEXT "Post-render scanlines:",IDC_EXTRA_SCANLINES_TEXT,21,57,74,8,WS_DISABLED CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,87,111,10 - EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED LTEXT "VBlank scanlines:",IDC_VBLANK_SCANLINES_TEXT,21,71,76,8,WS_DISABLED END MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Movie Options" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",IDC_MOVIE_CLOSE,48,200,49,14,BS_CENTER CONTROL "Pause after playback",IDC_MOVIE_PAUSEAFTERPLAYBACK, @@ -1295,7 +1295,7 @@ END DWBDIALOGSIMPLE DIALOGEX 33, 99, 250, 39 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "DWBS!" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN LTEXT "Type a key, or press Escape to disable.",65429,53,14,125,8 END @@ -1305,7 +1305,7 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VI EXSTYLE WS_EX_ACCEPTFILES CAPTION "Memory Watch" MENU MEMWATCHMENU -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "",IDC_STATIC,3,0,126,200 GROUPBOX "",IDC_STATIC,131,0,128,200 @@ -1395,7 +1395,7 @@ END DEBUGGER DIALOGEX 54, 74, 546, 334 STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "6502 Debugger" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN CONTROL "",IDC_DEBUGGER_DISASSEMBLY,"RichEdit20A",ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_BORDER | WS_HSCROLL,18,5,316,317 SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,334,5,11,317,SBS_VERT @@ -1478,7 +1478,7 @@ END TRACER DIALOGEX 0, 0, 317, 181 STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Trace Logger" -FONT 9, "MS Shell Dlg", 400, 0, 0x0 +FONT 8, "MS Shell Dlg", 400, 0, 0x0 BEGIN EDITTEXT IDC_TRACER_LOG,3,3,300,44,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL SCROLLBAR IDC_SCRL_TRACER_LOG,303,3,11,44,SBS_VERT @@ -1516,7 +1516,7 @@ END ADDBP DIALOGEX 66, 83, 197, 125 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Add Breakpoint..." -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN LTEXT "&Address:",-1,14,6,30,10 EDITTEXT IDC_ADDBP_ADDR_START,48,4,30,12,ES_UPPERCASE | ES_WANTRETURN @@ -1540,16 +1540,16 @@ BEGIN END NTVIEW DIALOGEX 44, 38, 352, 350 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Name Table Viewer" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Name Tables",IDC_NTVIEW_TABLE_BOX,2,0,347,251,WS_TABSTOP LTEXT "Refresh: More",IDC_STATIC,225,254,50,9 CONTROL "",IDC_NTVIEW_REFRESH_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,275,254,50,11 LTEXT "Less",IDC_STATIC,325,254,18,10 - LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,253,269,65,9 - EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12 + LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,249,269,65,9 + EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12,ES_NUMBER CONTROL "Show Scroll Lines",IDC_NTVIEW_SHOW_SCROLL_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,254,69,10 CONTROL "Show Attributes",IDC_NTVIEW_SHOW_ATTRIBUTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,265,69,10 CONTROL "Ignore Palettes",IDC_NTVIEW_HIDE_PALETTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,276,69,10 @@ -1571,7 +1571,7 @@ END ROMPATCHER DIALOGEX 84, 67, 304, 135 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Rom Data Editor" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN EDITTEXT IDC_ROMPATCHER_CURRENT_DATA,7,47,282,12,ES_READONLY PUSHBUTTON "Apply",IDC_ROMPATCHER_BTN_APPLY,185,92,54,14 @@ -1590,7 +1590,7 @@ END GGCONV DIALOGEX 84, 67, 186, 146 STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Game Genie Encoder/Decoder Tool" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Game Genie Code",-1,107,5,69,42 EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL @@ -1867,15 +1867,15 @@ STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_CAPTI CAPTION "Inline Assembler" FONT 8, "MS Shell Dlg", 400, 0, 0x1 BEGIN - EDITTEXT IDC_ASSEMBLER_DISASSEMBLY,27,9,167,12,ES_READONLY - COMBOBOX IDC_ASSEMBLER_HISTORY,15,25,180,54,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_ASSEMBLER_DISASSEMBLY,23,9,171,12,ES_READONLY + COMBOBOX IDC_ASSEMBLER_HISTORY,7,25,188,54,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Apply",IDC_ASSEMBLER_APPLY,159,114,36,14 - LTEXT "PC:",-1,15,10,12,10 - LTEXT "Patch:",-1,15,41,26,9 + LTEXT "PC:",-1,8,11,12,8 + LTEXT "Patch:",-1,8,41,22,8 PUSHBUTTON "Save...",IDC_ASSEMBLER_SAVE,117,114,36,14 - PUSHBUTTON "Undo",IDC_ASSEMBLER_UNDO,15,114,35,14 - DEFPUSHBUTTON "Def",IDC_ASSEMBLER_DEFPUSHBUTTON,55,116,16,12,NOT WS_VISIBLE - LISTBOX IDC_ASSEMBLER_PATCH_DISASM,15,50,180,59,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | LBS_NOSEL | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Undo",IDC_ASSEMBLER_UNDO,6,114,36,14 + DEFPUSHBUTTON "Define",IDC_ASSEMBLER_DEFPUSHBUTTON,46,114,36,14,NOT WS_VISIBLE + LISTBOX IDC_ASSEMBLER_PATCH_DISASM,7,50,188,59,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | LBS_NOSEL | WS_VSCROLL | WS_TABSTOP END NAMEBOOKMARKDLG DIALOGEX 0, 0, 186, 73 @@ -1934,7 +1934,7 @@ END PPUVIEW DIALOGEX 44, 38, 353, 234 STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "PPU Viewer" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Pattern Tables",GRP_PPUVIEW_TABLES,2,-1,348,185,WS_TABSTOP LTEXT "Tile:",LBL_PPUVIEW_TILE1,6,138,50,9 @@ -1943,7 +1943,7 @@ BEGIN CONTROL "",CTL_PPUVIEW_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,280,151,50,11 LTEXT "Less",-1,330,151,18,10 LTEXT "Display on scanline:",-1,253,166,65,9 - EDITTEXT IDC_PPUVIEW_SCANLINE,315,164,27,12 + EDITTEXT IDC_PPUVIEW_SCANLINE,315,164,27,12,ES_NUMBER CONTROL "Sprites 8x16 mode",IDC_SPRITE16_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,151,160,10 CONTROL "Mask unused graphics (Code/Data Logger)",IDC_MASK_UNUSED_GRAPHICS, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,162,160,10 @@ -2071,9 +2071,9 @@ BEGIN END VIDEOCONFIG DIALOGEX 65520, 76, 511, 170 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Video Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Full Screen Settings",65453,5,3,171,141,WS_GROUP CONTROL "Full Screen (Alt + Enter or double-click)",IDC_VIDEOCONFIG_FS, @@ -2083,9 +2083,9 @@ BEGIN LTEXT "Sync method:",65452,11,108,46,10 COMBOBOX IDC_VIDEOCONFIG_SYNC_METHOD_FS,59,106,105,50,CBS_DROPDOWNLIST | WS_TABSTOP LTEXT "Mode:",13,11,67,23,9 - EDITTEXT IDC_VIDEOCONFIG_XRES,36,65,27,13,ES_RIGHT + EDITTEXT IDC_VIDEOCONFIG_XRES,36,65,27,13,ES_RIGHT | ES_NUMBER LTEXT "by",12,67,67,11,9 - EDITTEXT IDC_VIDEOCONFIG_YRES,79,65,27,13,ES_RIGHT + EDITTEXT IDC_VIDEOCONFIG_YRES,79,65,27,13,ES_RIGHT | ES_NUMBER LTEXT "@",11,110,67,11,9 COMBOBOX IDC_VIDEOCONFIG_BPP,122,65,32,12,CBS_DROPDOWNLIST | WS_TABSTOP LTEXT "bpp",10,157,67,14,9 @@ -2110,10 +2110,10 @@ BEGIN LTEXT "Last line:",65435,367,84,40,9 CTEXT "NTSC",65434,413,57,27,8 CTEXT "PAL/Dendy",65433,455,57,48,8 - EDITTEXT IDC_SCANLINE_FIRST_NTSC,414,66,27,12,ES_RIGHT - EDITTEXT IDC_SCANLINE_LAST_NTSC,414,83,27,12,ES_RIGHT - EDITTEXT IDC_SCANLINE_FIRST_PAL,465,66,27,12,ES_RIGHT - EDITTEXT IDC_SCANLINE_LAST_PAL,465,83,27,12,ES_RIGHT + EDITTEXT IDC_SCANLINE_FIRST_NTSC,414,66,27,12,ES_RIGHT | ES_NUMBER + EDITTEXT IDC_SCANLINE_LAST_NTSC,414,83,27,12,ES_RIGHT | ES_NUMBER + EDITTEXT IDC_SCANLINE_FIRST_PAL,465,66,27,12,ES_RIGHT | ES_NUMBER + EDITTEXT IDC_SCANLINE_LAST_PAL,465,83,27,12,ES_RIGHT | ES_NUMBER CONTROL "Clip left and right sides (8 px on each)",IDC_VIDEOCONFIG_CLIPSIDES, "Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,98,140,12 DEFPUSHBUTTON "Close",ID_CANCEL,449,150,56,14 @@ -2224,7 +2224,7 @@ END DLG_SNESPAD DIALOGEX 4, 109, 243, 121 STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Gamepad Configuration" -FONT 9, "MS Shell Dlg", 0, 0, 0x0 +FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "Close",BTN_CLOSE,177,97,56,14 GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP @@ -2312,7 +2312,7 @@ BEGIN LTEXT "Mapper#:",IDC_MAPPER_TEXT,104,24,33,8,WS_DISABLED COMBOBOX IDC_MAPPER_COMBO,139,22,115,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP LTEXT "Sub#:",IDC_SUBMAPPER_TEXT,261,24,21,8,WS_DISABLED - EDITTEXT IDC_SUBMAPPER_EDIT,284,21,15,14,ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_SUBMAPPER_EDIT,284,21,15,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED GROUPBOX "PRG",IDC_PRG_GROUP,14,42,294,27,WS_DISABLED LTEXT "PRG ROM:",IDC_PRGROM_TEXT,20,53,34,8,WS_DISABLED COMBOBOX IDC_PRGROM_COMBO,57,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP @@ -2360,7 +2360,7 @@ BEGIN LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,106,218,44,8,WS_DISABLED COMBOBOX IDC_INPUT_DEVICE_COMBO,153,216,154,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP LTEXT "Misc. ROM(s)",IDC_MISCELLANEOUS_ROMS_TEXT,29,218,48,8,WS_DISABLED - EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,6,237,44,14,WS_DISABLED PUSHBUTTON "Save as...",IDSAVE,223,237,44,14,WS_DISABLED DEFPUSHBUTTON "Close",IDCLOSE,270,237,44,14 @@ -2382,6 +2382,14 @@ BEGIN TOPMARGIN, 8 END + "DWBDIALOG", DIALOG + BEGIN + END + + "FKBDIALOG", DIALOG + BEGIN + END + "GAMEPADDIALOG", DIALOG BEGIN END @@ -2398,6 +2406,10 @@ BEGIN BOTTOMMARGIN, 191 END + "MAHJONGDIALOG", DIALOG + BEGIN + END + "NETMOO", DIALOG BEGIN LEFTMARGIN, 10 @@ -2438,6 +2450,10 @@ BEGIN BOTTOMMARGIN, 217 END + "DWBDIALOGSIMPLE", DIALOG + BEGIN + END + "MEMWATCH", DIALOG BEGIN RIGHTMARGIN, 260 @@ -2497,6 +2513,26 @@ BEGIN BEGIN END + IDD_TASEDITOR_ABOUT, DIALOG + BEGIN + END + + IDD_TASEDITOR_NEWPROJECT, DIALOG + BEGIN + END + + IDD_TASEDITOR_EXPORT, DIALOG + BEGIN + END + + IDD_TASEDITOR_FINDNOTE, DIALOG + BEGIN + END + + IDD_TASEDITOR_SAVECOMPACT, DIALOG + BEGIN + END + "ASSEMBLER", DIALOG BEGIN LEFTMARGIN, 7 @@ -2642,6 +2678,21 @@ BEGIN 0 END +ASSEMBLER AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +MEMVIEWFIND AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +VIDEOCONFIG AFX_DIALOG_LAYOUT +BEGIN + 0 +END + ///////////////////////////////////////////////////////////////////////////// // diff --git a/src/drivers/win/video.cpp b/src/drivers/win/video.cpp index e48bcd72..f20b470f 100644 --- a/src/drivers/win/video.cpp +++ b/src/drivers/win/video.cpp @@ -1288,6 +1288,11 @@ BOOL CALLBACK VideoConCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lPara EnableWindow(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), eoptions&EO_TVASPECT); EnableWindow(GetDlgItem(hwndDlg, IDC_STATIC_SLASHTEXT), eoptions&EO_TVASPECT); + DefaultEditCtrlProc = (WNDPROC)SetWindowLong(GetDlgItem(hwndDlg, IDC_WINSIZE_MUL_X), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_WINSIZE_MUL_Y), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_TVASPECT_X), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + SetWindowLong(GetDlgItem(hwndDlg, IDC_TVASPECT_Y), GWL_WNDPROC, (LONG)FilterEditCtrlProc); + break; } case WM_CLOSE: diff --git a/src/drivers/win/window.cpp b/src/drivers/win/window.cpp index b4fe09e2..0e537eeb 100644 --- a/src/drivers/win/window.cpp +++ b/src/drivers/win/window.cpp @@ -243,7 +243,7 @@ int GetCheckedAutoFirePattern() if (AFon == 4 && AFoff == 2) return MENU_AUTOFIRE_PATTERN_14; if (AFon == 5 && AFoff == 1) return MENU_AUTOFIRE_PATTERN_15; -return MENU_AUTOFIRE_PATTERN_1; + return MENU_AUTOFIRE_PATTERN_1; } int GetCheckedAutoFireOffset() @@ -3269,96 +3269,92 @@ LRESULT APIENTRY FilterEditCtrlProc(HWND hwnd, UINT msg, WPARAM wP, LPARAM lP) switch (msg) { - case WM_PASTE: - { - bool(*IsLetterLegal)(char) = GetIsLetterLegal(GetDlgCtrlID(hwnd)); - - if (IsLetterLegal) + case WM_PASTE: { - if (OpenClipboard(hwnd)) + + bool(*IsLetterLegal)(char) = GetIsLetterLegal(GetDlgCtrlID(hwnd)); + + if (IsLetterLegal) { - HANDLE handle = GetClipboardData(CF_TEXT); - if (handle) + if (OpenClipboard(hwnd)) { - - // copy the original clipboard string - char* clipStr = (char*)GlobalLock(handle); - char* original = (char*)calloc(1, strlen(clipStr) + 1); - strcpy(original, clipStr); - GlobalUnlock(handle); - - // filter it out - int lmt = SendMessage(hwnd, EM_GETLIMITTEXT, 0, 0); - char* filtered = (char*)calloc(1, lmt + 1); - int filteredIndex = 0, origIndex = 0; - while (clipStr[origIndex] && filteredIndex < lmt + 1) + HANDLE handle = GetClipboardData(CF_TEXT); + if (handle) { - if (IsLetterLegal(clipStr[origIndex])) + + // get the original clipboard string + char* clipStr = (char*)GlobalLock(handle); + + // check if the text in clipboard has illegal characters + int len = strlen(clipStr); + for (int i = 0; i < len; ++i) { - filtered[filteredIndex] = clipStr[origIndex]; - ++filteredIndex; - } - ++origIndex; - } - - // copy filtered str to clipboard - EmptyClipboard(); - HANDLE hNewStr = GlobalAlloc(GMEM_MOVEABLE, lmt); - char* newStr = (char*)GlobalLock(hNewStr); - strcpy(newStr, filtered); - GlobalUnlock(hNewStr); - SetClipboardData(CF_TEXT, hNewStr); - - // end - CloseClipboard(); - result = CallWindowProc(DefaultEditCtrlProc, hwnd, msg, wP, lP); - through = false; - free(filtered); - - // set it back to normal - if (OpenClipboard(hwnd)) - { - handle = GetClipboardData(CF_TEXT); - if (handle) - { - EmptyClipboard(); - HANDLE hOldStr = GlobalAlloc(GMEM_MOVEABLE, strlen(original) + 1); - char* oldStr = (char*)GlobalLock(hOldStr); - strcpy(oldStr, original); - GlobalUnlock(hOldStr); - SetClipboardData(CF_TEXT, hOldStr); + if (!IsLetterLegal(clipStr[i])) + { + through = false; + // Show Edit control tip, just like the control with ES_NUMBER do + ShowLetterIllegalError(hwnd, IsLetterLegal); + break; + } } + GlobalUnlock(handle); CloseClipboard(); - } - // end - free(original); + } } } } - } - break; - case WM_CHAR: - through = IsInputLegal(GetDlgCtrlID(GetFocus()), wP); + break; + case WM_CHAR: + { + bool(*IsLetterLegal)(char) = GetIsLetterLegal(GetDlgCtrlID(hwnd)); + through = IsInputLegal(GetIsLetterLegal(GetDlgCtrlID(hwnd)), wP); + if (!through) + ShowLetterIllegalError(hwnd, IsLetterLegal); + } } return through ? CallWindowProc(DefaultEditCtrlProc, hwnd, msg, wP, lP) : result; } +// return a letter legal checking function for the specified control with the given id bool inline (*GetIsLetterLegal(UINT id))(char letter) { switch (id) { + // owomomo TODO: RAM Search is a bit complicated, + // I'll handle it in later development + + + // Game genie text in Cheat and Game Genie Encoder/Decoder case IDC_CHEAT_GAME_GENIE_TEXT: case IDC_GAME_GENIE_CODE: return IsLetterLegalGG; + // Addresses in Debugger + case IDC_DEBUGGER_VAL_PCSEEK: + case IDC_DEBUGGER_VAL_PC: + case IDC_DEBUGGER_VAL_A: + case IDC_DEBUGGER_VAL_X: + case IDC_DEBUGGER_VAL_Y: + case IDC_DEBUGGER_BOOKMARK: + + // Debugger -> Add breakpoint + case IDC_ADDBP_ADDR_START: case IDC_ADDBP_ADDR_END: + + // RAM Watch / RAM Search / Cheat -> Add watch + // TODO: Some other features + // case IDC_EDIT_COMPAREADDRESS: + + // Address, Value, Compare, Known Value, Note equal, Greater than and Less than in Cheat case IDC_CHEAT_ADDR: case IDC_CHEAT_VAL: case IDC_CHEAT_COM: case IDC_CHEAT_VAL_KNOWN: case IDC_CHEAT_VAL_NE_BY: case IDC_CHEAT_VAL_GT_BY: case IDC_CHEAT_VAL_LT_BY: + // Address, Value and Compare in Game Genie Encoder/Decoder case IDC_GAME_GENIE_ADDR: case IDC_GAME_GENIE_VAL: case IDC_GAME_GENIE_COMP: + // Address controls in Memory watch case MW_ADDR00: case MW_ADDR01: case MW_ADDR02: case MW_ADDR03: case MW_ADDR04: case MW_ADDR05: case MW_ADDR06: case MW_ADDR07: case MW_ADDR08: case MW_ADDR09: case MW_ADDR10: case MW_ADDR11: @@ -3367,30 +3363,84 @@ bool inline (*GetIsLetterLegal(UINT id))(char letter) case MW_ADDR20: case MW_ADDR21: case MW_ADDR22: case MW_ADDR23: return IsLetterLegalHex; + // Size multiplier and TV Aspect in Video Config + case IDC_WINSIZE_MUL_X: case IDC_WINSIZE_MUL_Y: + case IDC_TVASPECT_X: case IDC_TVASPECT_Y: + return IsLetterLegalFloat; + // Cheat code in Cheat case IDC_CHEAT_TEXT: return IsLetterLegalCheat; - + // PRG ROM, PRG RAM, PRG NVRAM, CHR ROM, CHR RAM, CHR NVRAM in iNES Header Editor case IDC_PRGROM_EDIT: case IDC_PRGRAM_EDIT: case IDC_PRGNVRAM_EDIT: case IDC_CHRROM_EDIT: case IDC_CHRRAM_EDIT: case IDC_CHRNVRAM_EDIT: return IsLetterLegalSize; - - - case IDC_SUBMAPPER_EDIT: - case IDC_MISCELLANEOUS_ROMS_EDIT: - return IsLetterLegalPosDec; } return NULL; } -bool inline IsInputLegal(UINT id, char letter) +inline void ShowLetterIllegalError(HWND hwnd, bool(*IsLetterLegal)(char letter), bool balloon) +{ + (balloon ? ShowLetterIllegalBalloonTip : ShowLetterIllegalMessageBox)(hwnd, IsLetterLegal); +} + +void ShowLetterIllegalBalloonTip(HWND hwnd, bool(*IsLetterLegal)(char letter)) +{ + char* title = "Unacceptable Character"; + int uLen = MultiByteToWideChar(CP_ACP, NULL, title, -1, NULL, 0); + wchar_t* titleW = (wchar_t*)malloc(sizeof(wchar_t) * uLen); + MultiByteToWideChar(CP_ACP, 0, title, -1, (LPWSTR)titleW, uLen); + + char* msg = GetLetterIllegalErrMsg(IsLetterLegal); + uLen = MultiByteToWideChar(CP_ACP, NULL, msg, -1, NULL, 0); + wchar_t* msgW = (wchar_t*)malloc(sizeof(wchar_t) * uLen); + MultiByteToWideChar(CP_ACP, 0, msg, -1, (LPWSTR)msgW, uLen); + + EDITBALLOONTIP tip; + tip.cbStruct = sizeof(EDITBALLOONTIP); + tip.pszText = msgW; + tip.pszTitle = titleW; + tip.ttiIcon = TTI_ERROR; + SendMessage(hwnd, EM_SHOWBALLOONTIP, 0, (LPARAM)&tip); + + free(titleW); + free(msgW); +} + +inline void ShowLetterIllegalMessageBox(HWND hwnd, bool(*IsLetterLegal)(char letter)) +{ + MessageBox(hwnd, GetLetterIllegalErrMsg(IsLetterLegal), "Unacceptable Character", MB_OK | MB_ICONERROR); +} + +inline char* GetLetterIllegalErrMsg(bool(*IsLetterLegal)(char letter)) +{ + if (IsLetterLegal == IsLetterLegalGG) + return "You can only type Game Genie characters:\nA P Z L G I T Y E O X U K S V N"; + if (IsLetterLegal == IsLetterLegalHex) + return "You can only type characters for hexadecimal number (0-9,A-F)."; + if (IsLetterLegal == IsLetterLegalCheat) + return + "The cheat code comes into the following 2 formats:\n" + "AAAA:VV freezes the value in Address $AAAA to $VV.\n" + "AAAA?CC:VV changes the value in Address $AAAA to $VV only when it's $CC.\n" + "All the characters are hexadecimal number (0-9,A-F).\n"; + if (IsLetterLegal == IsLetterLegalFloat) + return "You can only type decimal number (decimal point is acceptable)."; + if (IsLetterLegal == IsLetterLegalSize) + return "You can only type decimal number followed with B, KB or MB."; + if (IsLetterLegal == IsLetterLegalDec) + return "You can only type decimal number (minus is acceptable)."; + + return "Your input contains invalid characters."; +} + +inline bool IsInputLegal(bool (*IsLetterLegal)(char letter), char letter) { - bool(*IsLetterLegal)(char) = GetIsLetterLegal(id); return !IsLetterLegal || letter == VK_BACK || GetKeyState(VK_CONTROL) & 0x8000 || IsLetterLegal(letter); } -bool inline IsLetterLegalGG(char letter) +inline bool IsLetterLegalGG(char letter) { char ch = toupper(letter); for (int i = 0; GameGenieLetters[i]; ++i) @@ -3399,27 +3449,27 @@ bool inline IsLetterLegalGG(char letter) return false; } -bool inline IsLetterLegalHex(char letter) +inline bool IsLetterLegalHex(char letter) { return letter >= '0' && letter <= '9' || letter >= 'A' && letter <= 'F' || letter >= 'a' && letter <= 'f'; } -bool inline IsLetterLegalCheat(char letter) +inline bool IsLetterLegalCheat(char letter) { return letter >= '0' && letter <= ':' || letter >= 'A' && letter <= 'F' || letter >= 'a' && letter <= 'f' || letter == '?'; } -bool inline IsLetterLegalSize(char letter) +inline bool IsLetterLegalSize(char letter) { return letter >= '0' && letter <= '9' || letter == 'm' || letter == 'M' || letter == 'k' || letter == 'K' || letter == 'b' || letter == 'B'; } -bool inline IsLetterLegalPosDec(char letter) -{ - return letter >= '0' && letter <= '9'; -} - -bool inline IsLetterLegalDec(char letter) +inline bool IsLetterLegalDec(char letter) { return letter >= '0' && letter <= '9' || letter == '-'; +} + +inline bool IsLetterLegalFloat(char letter) +{ + return letter >= '0' && letter <= '9' || letter == '.'; } \ No newline at end of file diff --git a/src/drivers/win/window.h b/src/drivers/win/window.h index a8c8b1a0..45cf98c5 100644 --- a/src/drivers/win/window.h +++ b/src/drivers/win/window.h @@ -128,14 +128,18 @@ struct HOTKEYMENUINDEX { void UpdateMenuHotkeys(FCEUMENU_INDEX index); int GetCurrentContextIndex(); -bool inline (*GetIsLetterLegal(UINT id))(char letter); -bool inline IsInputLegal(UINT id, char letter); -bool inline IsLetterLegalGG(char letter); -bool inline IsLetterLegalHex(char letter); -bool inline IsLetterLegalCheat(char letter); -bool inline IsLetterLegalDec(char letter); -bool inline IsLetterLegalPosDec(char letter); -bool inline IsLetterLegalSize(char letter); +inline bool (*GetIsLetterLegal(UINT id))(char letter); +inline char* GetLetterIllegalErrMsg(bool(*IsLetterLegal)(char letter)); +inline void ShowLetterIllegalError(HWND hwnd, bool(*IsLetterLegal)(char letter), bool balloon = true); +void ShowLetterIllegalBalloonTip(HWND hwnd, bool(*IsLetterLegal)(char letter)); +inline void ShowLetterIllegalMessageBox(HWND hwnd, bool(*IsLetterLegal)(char letter)); +inline bool IsInputLegal(bool(*IsLetterLegal)(char letter), char letter); +inline bool IsLetterLegalGG(char letter); +inline bool IsLetterLegalHex(char letter); +inline bool IsLetterLegalCheat(char letter); +inline bool IsLetterLegalDec(char letter); +inline bool IsLetterLegalSize(char letter); +inline bool IsLetterLegalFloat(char letter); extern WNDPROC DefaultEditCtrlProc; extern LRESULT APIENTRY FilterEditCtrlProc(HWND hDlg, UINT msg, WPARAM wP, LPARAM lP); From 647eb5ab3d6bc49379d8138ed44012e612e601c1 Mon Sep 17 00:00:00 2001 From: Moliman Date: Wed, 19 Jun 2019 22:00:11 -0400 Subject: [PATCH 19/21] Add binary data type on RAM watch * Currently support only 1 byte size --- src/drivers/win/ramwatch.cpp | 27 +++++++++++++++++++++++++++ src/drivers/win/ramwatch.h | 2 +- src/drivers/win/res.rc | 9 +++++---- src/drivers/win/resource.h | 1 + 4 files changed, 34 insertions(+), 5 deletions(-) diff --git a/src/drivers/win/ramwatch.cpp b/src/drivers/win/ramwatch.cpp index 11769cf1..10853afe 100644 --- a/src/drivers/win/ramwatch.cpp +++ b/src/drivers/win/ramwatch.cpp @@ -12,6 +12,7 @@ using namespace std; #include #include #include +#include /* #include @@ -825,6 +826,9 @@ LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara case 'h': SendDlgItemMessage(hDlg, IDC_HEX, BM_SETCHECK, BST_CHECKED, 0); break; + case 'b': + SendDlgItemMessage(hDlg, IDC_BINARY, BM_SETCHECK, BST_CHECKED, 0); + break; } } else SetDlgItemText(hDlg, IDC_EDIT_COMPAREADDRESS, "---------"); @@ -844,6 +848,7 @@ LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara EnableWindow(GetDlgItem(hDlg, IDC_SIGNED), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_UNSIGNED), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_HEX), FALSE); + EnableWindow(GetDlgItem(hDlg, IDC_BINARY), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_1_BYTE), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_2_BYTES), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_4_BYTES), FALSE); @@ -886,6 +891,8 @@ LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara watcher.Type = 'u'; else if (SendDlgItemMessage(hDlg, IDC_HEX, BM_GETCHECK, 0, 0) == BST_CHECKED) watcher.Type = 'h'; + else if (SendDlgItemMessage(hDlg, IDC_BINARY, BM_GETCHECK, 0, 0) == BST_CHECKED) + watcher.Type = 'b'; else { MessageBox(hDlg, "Type must be specified.", "Error", MB_OK | MB_ICONERROR); return true; @@ -903,6 +910,12 @@ LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara return true; } + if (watcher.Type == 'b' && (watcher.Size == 'd' || watcher.Size == 'w')) + { + MessageBox(hDlg, "Only 1 byte is supported on binary format.", "Error", MB_OK | MB_ICONERROR); + return true; + } + // address GetDlgItemText(hDlg, IDC_EDIT_COMPAREADDRESS, Str_Tmp, 1024); char *addrstr = Str_Tmp; @@ -1160,6 +1173,18 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam int i = rswatches[iNum].CurValue; int t = rswatches[iNum].Type; int size = rswatches[iNum].Size; + if (rswatches[iNum].Type == 'b') + { + auto bits = bitset<8>(i); // Currently work with 1 byte size only + int j = 0, k = 7; + while (k >= 0) + { + if (k == 3) num[j++] = ' '; + num[j++] = bits[k--] ? '1' : '0'; + } + Item->item.pszText = num; + break; + } const char* formatString = ((t == 's') ? "%d" : (t == 'u') ? "%u" : (size == 'd' ? "%08X" : size == 'w' ? "%04X" : "%02X")); switch (size) { @@ -1442,6 +1467,8 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam numberType = 1; else if(rswatches[watchIndex].Type == 'h') numberType = 2; + else if (rswatches[watchIndex].Type == 'b') + numberType = 3; // Don't open cheat dialog diff --git a/src/drivers/win/ramwatch.h b/src/drivers/win/ramwatch.h index 2df1638d..1366ae1c 100644 --- a/src/drivers/win/ramwatch.h +++ b/src/drivers/win/ramwatch.h @@ -54,7 +54,7 @@ struct AddressWatcher char* comment = NULL; // NULL means no comment, non-NULL means allocated comment bool WrongEndian; char Size; //'d' = 4 bytes, 'w' = 2 bytes, 'b' = 1 byte, and 'S' means it's a separator. - char Type;//'s' = signed integer, 'u' = unsigned, 'h' = hex, 'S' = separator + char Type;//'s' = signed integer, 'u' = unsigned, 'h' = hex, 'b' = binary, 'S' = separator short Cheats; // how many bytes are affected by cheat }; diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index b513395e..edf9f298 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -2164,7 +2164,7 @@ BEGIN PUSHBUTTON "Separator",IDC_C_WATCH_SEPARATE,225,137,36,14 END -IDD_EDITWATCH DIALOGEX 0, 0, 181, 95 +IDD_EDITWATCH DIALOGEX 0, 0, 181, 125 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION " Edit Watch" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -2173,16 +2173,17 @@ BEGIN EDITTEXT IDC_EDIT_COMPAREADDRESS,48,10,65,12,ES_UPPERCASE | ES_AUTOHSCROLL CTEXT "Notes:",IDC_PROMPT_TEXT,23,24,22,8 EDITTEXT IDC_PROMPT_EDIT,48,22,119,12,ES_AUTOHSCROLL - GROUPBOX "Data Type",IDC_DATATYPE_GROUPBOX,14,37,75,42,0,WS_EX_TRANSPARENT + GROUPBOX "Data Type",IDC_DATATYPE_GROUPBOX,14,37,75,51,0,WS_EX_TRANSPARENT CONTROL "&Signed",IDC_SIGNED,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,18,47,67,9 CONTROL "&Unsigned",IDC_UNSIGNED,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,57,67,9 CONTROL "&Hexadecimal",IDC_HEX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,67,67,9 + CONTROL "&Binary", IDC_BINARY, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 18, 77, 67, 9 GROUPBOX "Data Size",IDC_DATASIZE_GROUPBOX,94,37,73,42,0,WS_EX_TRANSPARENT CONTROL "&1 byte",IDC_1_BYTE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,98,47,61,11 CONTROL "&2 bytes",IDC_2_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,57,61,11 CONTROL "&4 bytes",IDC_4_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,67,61,11 - DEFPUSHBUTTON "&OK",IDOK,66,80,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,120,80,50,14 + DEFPUSHBUTTON "&OK",IDOK,66,90,50,14 + PUSHBUTTON "&Cancel",IDCANCEL,120,90,50,14 END DLG_SNESPAD DIALOGEX 4, 109, 243, 121 diff --git a/src/drivers/win/resource.h b/src/drivers/win/resource.h index b93118b9..badd2def 100644 --- a/src/drivers/win/resource.h +++ b/src/drivers/win/resource.h @@ -704,6 +704,7 @@ #define IDC_CHEAT_VAL_LABEL 1314 #define IDC_CHEAT_COM_LABEL 1315 #define IDC_CHEAT_LABEL_KNOWN 1316 +#define IDC_BINARY 1317 #define MENU_NETWORK 40040 #define MENU_PALETTE 40041 #define MENU_SOUND 40042 From 9ab9fd1e8251575f873d01c11263dc1ee371141b Mon Sep 17 00:00:00 2001 From: g0me3 Date: Thu, 20 Jun 2019 22:04:00 +0300 Subject: [PATCH 20/21] fix watch edit dialog --- src/drivers/win/res.rc | 5872 ++++++++++++++++++++-------------------- 1 file changed, 2989 insertions(+), 2883 deletions(-) diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 618d4517..9c5d30f9 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -1,2883 +1,2989 @@ -// Microsoft Visual C++ generated resource script. -// -#include "resource.h" - -#define APSTUDIO_READONLY_SYMBOLS -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 2 resource. -// -#include "afxres.h" - -///////////////////////////////////////////////////////////////////////////// -#undef APSTUDIO_READONLY_SYMBOLS - -///////////////////////////////////////////////////////////////////////////// -// English(U.S.) resources - -#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -#pragma code_page(1252) - -#ifdef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// TEXTINCLUDE -// - -1 TEXTINCLUDE -BEGIN - "resource.h\0" -END - -3 TEXTINCLUDE -BEGIN - "\r\0" -END - -2 TEXTINCLUDE -BEGIN - "#include ""afxres.h""\r\0" -END - -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// Icon -// - -// Icon with lowest ID value placed first to ensure application icon -// remains consistent on all systems. -IDI_ICON3 ICON "res/taseditor-icon.ico" -IDI_ICON4 ICON "res/taseditor-icon32.ico" -ICON_1 ICON "res/ICON_1.ico" -ICON_2 ICON "res/ICON_2.ico" - -///////////////////////////////////////////////////////////////////////////// -// -// Menu -// - -FCEUMENU MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "&Open...", MENU_OPEN_FILE - MENUITEM "&Close", MENU_CLOSE_FILE - MENUITEM "&Recent", MENU_RECENT_FILES - MENUITEM SEPARATOR - POPUP "&Savestate" - BEGIN - MENUITEM "&Load State", MENU_LOADSTATE - MENUITEM "&Save State", MENU_SAVESTATE - MENUITEM "Load State &From...", MENU_LOAD_STATE - MENUITEM "Save State &As...", MENU_SAVE_STATE - MENUITEM SEPARATOR - MENUITEM "&Next save slot", MENU_NEXTSAVESTATE - MENUITEM "&Previous save slot", MENU_PREVIOUSSAVESTATE - MENUITEM "&View save slots", MENU_VIEWSAVESLOTS - END - POPUP "&Movie" - BEGIN - MENUITEM "Recent", MENU_MOVIE_RECENT - MENUITEM "&Record Movie...", MENU_RECORD_MOVIE - MENUITEM "&Play Movie...", MENU_REPLAY_MOVIE - MENUITEM "&Stop Movie", MENU_STOP_MOVIE - MENUITEM "Play from &Beginning", ID_FILE_PLAYMOVIEFROMBEGINNING - MENUITEM "&Toggle Recording/Playing", ID_FILE_TOGGLE_RECORDING_MOVIE - POPUP "&Quickly Modify" - BEGIN - MENUITEM "&Insert 1 Frame", ID_FILE_INSERT_1_FRAME - MENUITEM "&Delete 1 Frame", ID_FILE_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "&Truncate at Current Frame", ID_FILE_TRUNCATE_MOVIE - END - MENUITEM SEPARATOR - POPUP "Record &Mode" - BEGIN - MENUITEM "&Next Record Mode", ID_FILE_NEXTRECORDMODE - MENUITEM SEPARATOR - MENUITEM "&Truncate", ID_FILE_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", ID_FILE_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", ID_FILE_RECORDMODE_INSERT - END - MENUITEM "&Read-only", ID_FILE_MOVIE_TOGGLEREAD - END - POPUP "&AVI/Wav" - BEGIN - MENUITEM "&Record AVI...", MENU_RECORD_AVI - MENUITEM "&Stop AVI", MENU_STOP_AVI - MENUITEM "&Record WAV...", MENU_RECORD_WAV - MENUITEM "&Stop WAV", MENU_STOP_WAV - MENUITEM SEPARATOR - MENUITEM "Enable HUD recording", ID_AVI_ENABLEHUDRECORDING - MENUITEM "Disable messages recording", ID_AVI_DISMOVIEMESSAGE - END - POPUP "&Lua" - BEGIN - MENUITEM "&Recent", MENU_LUA_RECENT - MENUITEM "&New Lua Script Window...", ID_FILE_OPENLUAWINDOW - MENUITEM "&Close All Script Windows", ID_FILE_CLOSELUAWINDOWS - END - MENUITEM "&Screenshot", ID_FILE_SCREENSHOT - MENUITEM "Save Screenshot As...", ID_FILE_SAVESCREENSHOTAS - MENUITEM SEPARATOR - MENUITEM "E&xit\tAlt+F4", MENU_EXIT - END - POPUP "&NES" - BEGIN - MENUITEM "&Reset", MENU_RESET - MENUITEM "&Power", MENU_POWER - MENUITEM SEPARATOR - MENUITEM "&Eject/Insert Disk", MENU_EJECT_DISK - MENUITEM "&Switch Disk Side", MENU_SWITCH_DISK - MENUITEM "&Insert Coin", MENU_INSERT_COIN - MENUITEM SEPARATOR - POPUP "E&mulation Speed" - BEGIN - MENUITEM "&Pause", ID_NES_PAUSE - MENUITEM "&Turbo", ID_NES_TURBO - MENUITEM SEPARATOR - MENUITEM "Speed &Up", ID_NES_SPEEDUP - MENUITEM "Slow &Down", ID_NES_SLOWDOWN - MENUITEM "&Slowest Speed", ID_NES_SLOWESTSPEED - MENUITEM "&Normal Speed", ID_NES_NORMALSPEED - MENUITEM "Set &Custom Speed", ID_EMULATIONSPEED_CUSTOMSPEED - MENUITEM SEPARATOR - MENUITEM "Set FrameAdvance Delay", ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY - MENUITEM "Set custom speed for FrameAdvance", ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE - END - END - POPUP "&Config" - BEGIN - MENUITEM "&Hide Menu", MENU_HIDE_MENU - POPUP "&Enable" - BEGIN - MENUITEM "&Run in Background", MENU_RUN_IN_BACKGROUND - MENUITEM "&Background Input", MENU_BACKGROUND_INPUT - MENUITEM "&Auto-savestates", MENU_ENABLE_AUTOSAVE - MENUITEM "&Frame Adv. - Skip Lag", MENU_DISPLAY_FA_LAGSKIP - MENUITEM "Backup Savestates", ID_ENABLE_BACKUPSAVESTATES - MENUITEM "Compress Savestates", ID_ENABLE_COMPRESSSAVESTATES - MENUITEM "&Game Genie ROM", MENU_GAME_GENIE - MENUITEM "Auto-resume old play session", ID_ENABLE_AUTORESUME - END - POPUP "&Display" - BEGIN - POPUP "&Input Display" - BEGIN - MENUITEM "&Off", MENU_INPUTDISPLAY_0 - MENUITEM "&1 player", MENU_INPUTDISPLAY_1 - MENUITEM "&2 player", MENU_INPUTDISPLAY_2 - MENUITEM "&4 player", MENU_INPUTDISPLAY_4 - MENUITEM SEPARATOR - MENUITEM "old style disp.", ID_INPUTDISPLAY_OLDSTYLEDISP - END - MENUITEM "&Lag Counter", MENU_DISPLAY_LAGCOUNTER - MENUITEM "&Frame Counter", ID_DISPLAY_FRAMECOUNTER - MENUITEM "&Rerecord Counter", ID_DISPLAY_RERECORDCOUNTER - MENUITEM "&Movie status icon", ID_DISPLAY_MOVIESTATUSICON - MENUITEM "FPS", ID_DISPLAY_FPS - MENUITEM SEPARATOR - MENUITEM "Graphics: &BG", MENU_DISPLAY_BG - MENUITEM "Graphics: &OBJ", MENU_DISPLAY_OBJ - END - MENUITEM SEPARATOR - POPUP "Region" - BEGIN - MENUITEM "NTSC", MENU_NTSC - MENUITEM "&PAL", MENU_PAL - MENUITEM "Dendy", MENU_DENDY - END - POPUP "PPU" - BEGIN - MENUITEM "Old PPU", ID_OLDPPU - MENUITEM "New PPU", ID_NEWPPU - END - POPUP "RAM Init" - BEGIN - MENUITEM "&Default", MENU_RAMINIT_DEFAULT - MENUITEM "Fill $&FF", MENU_RAMINIT_FF - MENUITEM "Fill $&00", MENU_RAMINIT_00 - MENUITEM "&Random", MENU_RAMINIT_RANDOM - END - MENUITEM SEPARATOR - MENUITEM "&Directories...", MENU_DIRECTORIES - MENUITEM "&GUI...", MENU_GUI_OPTIONS - MENUITEM "&Input...", MENU_INPUT - MENUITEM "&Network Play...", MENU_NETWORK - MENUITEM "&Palette...", MENU_PALETTE - MENUITEM "&Sound...", MENU_SOUND - MENUITEM "&Timing...", MENU_TIMING - MENUITEM "&Video...", MENU_VIDEO - MENUITEM "&Movie options...", MENU_MOVIEOPTIONS - MENUITEM "&Map Hotkeys...", MENU_HOTKEYS - MENUITEM SEPARATOR - MENUITEM "Save Config File", ID_CONFIG_SAVECONFIGFILE - END - POPUP "&Tools" - BEGIN - MENUITEM "&Cheats...", MENU_CHEATS - MENUITEM "RAM Search...", ID_RAM_SEARCH - MENUITEM "RAM Watch...", ID_RAM_WATCH - MENUITEM "&Memory Watch...", MENU_MEMORY_WATCH - MENUITEM "&TAS Editor...", MENU_TASEDITOR - MENUITEM "Convert &FCM...", MENU_CONVERT_MOVIE - MENUITEM SEPARATOR - POPUP "Autofire &Pattern" - BEGIN - MENUITEM "1 on, 1 off", MENU_AUTOFIRE_PATTERN_1 - MENUITEM "1 on, 2 off", MENU_AUTOFIRE_PATTERN_2 - MENUITEM "1 on, 3 off", MENU_AUTOFIRE_PATTERN_3 - MENUITEM "1 on, 4 off", MENU_AUTOFIRE_PATTERN_4 - MENUITEM "1 on, 5 off", MENU_AUTOFIRE_PATTERN_5 - MENUITEM "2 on, 1 off", MENU_AUTOFIRE_PATTERN_6 - MENUITEM "2 on, 2 off", MENU_AUTOFIRE_PATTERN_7 - MENUITEM "2 on, 3 off", MENU_AUTOFIRE_PATTERN_8 - MENUITEM "2 on, 4 off", MENU_AUTOFIRE_PATTERN_9 - MENUITEM "3 on, 1 off", MENU_AUTOFIRE_PATTERN_10 - MENUITEM "3 on, 2 off", MENU_AUTOFIRE_PATTERN_11 - MENUITEM "3 on, 3 off", MENU_AUTOFIRE_PATTERN_12 - MENUITEM "4 on, 1 off", MENU_AUTOFIRE_PATTERN_13 - MENUITEM "4 on, 2 off", MENU_AUTOFIRE_PATTERN_14 - MENUITEM "5 on, 1 off", MENU_AUTOFIRE_PATTERN_15 - END - POPUP "Autofire &Offset" - BEGIN - MENUITEM "0 frames", MENU_AUTOFIRE_OFFSET_1 - MENUITEM "1 frame", MENU_AUTOFIRE_OFFSET_2 - MENUITEM "2 frames", MENU_AUTOFIRE_OFFSET_3 - MENUITEM "3 frames", MENU_AUTOFIRE_OFFSET_4 - MENUITEM "4 frames", MENU_AUTOFIRE_OFFSET_5 - MENUITEM "5 frames", MENU_AUTOFIRE_OFFSET_6 - END - MENUITEM "&Alternate A and B", MENU_ALTERNATE_AB - MENUITEM SEPARATOR - MENUITEM "Te&xt Hooker...", ID_TOOLS_TEXTHOOKER - END - POPUP "&Debug" - BEGIN - MENUITEM "&Debugger...", MENU_DEBUGGER - MENUITEM "&PPU Viewer...", MENU_PPUVIEWER - MENUITEM "&Name Table Viewer...", MENU_NAMETABLEVIEWER - MENUITEM "&Hex Editor...", MENU_HEXEDITOR - MENUITEM "&Trace Logger...", MENU_TRACELOGGER - MENUITEM "&Code/Data Logger...", MENU_CDLOGGER - MENUITEM "&Game Genie Decoder/Encoder...", MENU_GAMEGENIEDECODER - MENUITEM "&iNES Header Editor...", MENU_INESHEADEREDITOR - END - POPUP "&Help" - BEGIN - MENUITEM "&Help...", MENU_HELP - MENUITEM "&Message Log", MENU_MSGLOG - MENUITEM SEPARATOR - MENUITEM "&About", MENU_ABOUT - END -END - -TASEDITORMENU MENUEX -BEGIN - POPUP "File", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "New", ID_FILE_NEW,MFT_STRING,MFS_ENABLED - MENUITEM "Open", ID_FILE_OPENPROJECT,MFT_STRING,MFS_ENABLED - MENUITEM "Save\tCtrl+S", ID_FILE_SAVEPROJECT,MFT_STRING,MFS_ENABLED - MENUITEM "Save As", ID_FILE_SAVEPROJECTAS,MFT_STRING,MFS_ENABLED - MENUITEM "Save Compact", ID_FILE_SAVECOMPACT,MFT_STRING,MFS_ENABLED - MENUITEM "Recent", ID_FILE_RECENT,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Import Input", ID_FILE_IMPORT,MFT_STRING,MFS_ENABLED - MENUITEM "Export to FM2", ID_FILE_EXPORTFM2,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Close\tAlt+F4", ID_FILE_CLOSE,MFT_STRING,MFS_ENABLED - END - POPUP "Edit", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "Undo\tCtrl+Z", ID_EDIT_UNDO,MFT_STRING,MFS_ENABLED - MENUITEM "Redo\tCtrl+Y", ID_EDIT_REDO,MFT_STRING,MFS_ENABLED - MENUITEM "Selection Undo\tCtrl+Q", ID_EDIT_SELECTIONUNDO,MFT_STRING,MFS_ENABLED - MENUITEM "Selection Redo\tCtrl+W", ID_EDIT_SELECTIONREDO,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Deselect", ID_EDIT_DESELECT,MFT_STRING,MFS_ENABLED - MENUITEM "Select All", ID_EDIT_SELECTALL,MFT_STRING,MFS_ENABLED - MENUITEM "Select between Markers\tCtrl+A", ID_EDIT_SELECTMIDMARKERS,MFT_STRING,MFS_ENABLED - MENUITEM "Reselect Clipboard\tCtrl+B", ID_EDIT_RESELECTCLIPBOARD,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Copy\tCtrl+C", ID_EDIT_COPY,MFT_STRING,MFS_ENABLED - MENUITEM "Paste\tCtrl+V", ID_EDIT_PASTE,MFT_STRING,MFS_ENABLED - MENUITEM "PasteInsert\tCtrl+Shift+V", ID_EDIT_PASTEINSERT,MFT_STRING,MFS_ENABLED - MENUITEM "Cut\tCtrl+X", ID_EDIT_CUT,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Clear\tDel", ID_EDIT_CLEAR,MFT_STRING,MFS_ENABLED - MENUITEM "Delete\tCtrl+Del", ID_EDIT_DELETE,MFT_STRING,MFS_ENABLED - MENUITEM "Clone\tCtrl+Ins", ID_EDIT_CLONEFRAMES,MFT_STRING,MFS_ENABLED - MENUITEM "Insert\tCtrl+Shift+Ins", ID_EDIT_INSERTFRAMES,MFT_STRING,MFS_ENABLED - MENUITEM "Insert # of Frames\tIns", ID_EDIT_INSERT,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Truncate movie", ID_EDIT_TRUNCATE,MFT_STRING,MFS_ENABLED - END - POPUP "View", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "Find Note window\tCtrl+F", ID_VIEW_FINDNOTE,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Display Branch Screenshots", ID_VIEW_SHOWBRANCHSCREENSHOTS,MFT_STRING,MFS_ENABLED - MENUITEM "Display Branch Descriptions", ID_VIEW_SHOWBRANCHTOOLTIPS,MFT_STRING,MFS_ENABLED - MENUITEM "Enable Hot Changes", ID_VIEW_ENABLEHOTCHANGES,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Follow Undo context", ID_VIEW_JUMPWHENMAKINGUNDO,MFT_STRING,MFS_ENABLED - MENUITEM "Follow Marker Note context", ID_VIEW_FOLLOWMARKERNOTECONTEXT,MFT_STRING,MFS_ENABLED - END - POPUP "Config", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "Project file saving options", ID_CONFIG_SAVING_OPTIONS,MFT_STRING,MFS_ENABLED - MENUITEM "Set max Undo levels", ID_CONFIG_SETMAXUNDOLEVELS,MFT_STRING,MFS_ENABLED - MENUITEM "Set Greenzone capacity", ID_CONFIG_SETGREENZONECAPACITY,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Enable Greenzoning", ID_CONFIG_ENABLEGREENZONING,MFT_STRING,MFS_ENABLED - MENUITEM "Autofire Pattern skips Lag", ID_CONFIG_PATTERNSKIPSLAG,MFT_STRING,MFS_ENABLED - MENUITEM "Auto-adjust Input according to Lag", ID_CONFIG_ADJUSTLAG,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Draw Input by dragging", ID_CONFIG_DRAWINPUTBYDRAGGING,MFT_STRING,MFS_ENABLED - MENUITEM "Combine consecutive Recordings/Draws", ID_CONFIG_COMBINECONSECUTIVERECORDINGS,MFT_STRING,MFS_ENABLED - MENUITEM "Use 1P keys for all single Recordings", ID_CONFIG_USE1PFORRECORDING,MFT_STRING,MFS_ENABLED - MENUITEM "Use Input keys for Column Set", ID_CONFIG_USEINPUTKEYSFORCOLUMNSET,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Bind Markers to Input", ID_CONFIG_BINDMARKERSTOINPUT,MFT_STRING,MFS_ENABLED - MENUITEM "Empty new Marker Notes", ID_CONFIG_EMPTYNEWMARKERNOTES,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Old control scheme for Branching", ID_CONFIG_OLDBRANCHINGCONTROLS,MFT_STRING,MFS_ENABLED - MENUITEM "Branches restore entire Movie", ID_CONFIG_BRANCHESRESTOREFULLMOVIE,MFT_STRING,MFS_ENABLED - MENUITEM "HUD in Branch screenshots", ID_CONFIG_HUDINBRANCHSCREENSHOTS,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "Autopause at the end of Movie", ID_CONFIG_AUTOPAUSEATTHEENDOFMOVIE,MFT_STRING,MFS_ENABLED - END - POPUP "Help", 65535,MFT_STRING,MFS_ENABLED - BEGIN - MENUITEM "Open TAS Editor Manual", ID_HELP_OPEN_MANUAL,MFT_STRING,MFS_ENABLED - MENUITEM "Enable Tooltips", ID_HELP_TOOLTIPS,MFT_STRING,MFS_ENABLED - MENUITEM MFT_SEPARATOR - MENUITEM "About", ID_HELP_ABOUT,MFT_STRING,MFS_ENABLED - END - POPUP "Pattern", 65535,MFT_STRING | MFT_RIGHTJUSTIFY,MFS_ENABLED - BEGIN - MENUITEM "Dummy", ID_PATTERN_TEST,MFT_STRING,MFS_ENABLED - END -END - -MEMVIEWMENU MENU -BEGIN - POPUP "&File" - BEGIN - MENUITEM "&Save Rom", MENU_MV_FILE_SAVE - MENUITEM "S&ave Rom As...", MENU_MV_FILE_SAVE_AS - MENUITEM "&Load *.TBL File", MENU_MV_FILE_LOAD_TBL - MENUITEM "&Unload *.TBL file", MENU_MV_FILE_UNLOAD_TBL - POPUP "&Dump to file" - BEGIN - MENUITEM "&Ram", MENU_MV_FILE_DUMP_RAM - MENUITEM "&PPU Memory", MENU_MV_FILE_DUMP_PPU - MENUITEM "&OAM Memory", MENU_MV_FILE_DUMP_OAM - MENUITEM "6502 64K", MENU_MV_FILE_DUMP_64K - END - POPUP "Load from &file" - BEGIN - MENUITEM "&Ram", MENU_MV_FILE_LOAD_RAM - MENUITEM "&PPU Memory", MENU_MV_FILE_LOAD_PPU - MENUITEM "&OAM Memory", MENU_MV_FILE_LOAD_OAM - END - MENUITEM "&Goto Address\tCtrl+A", MENU_MV_FILE_GOTO_ADDRESS - MENUITEM SEPARATOR - MENUITEM "&Close\tAlt+F4", ID_MEMWVIEW_FILE_CLOSE - END - POPUP "&Edit" - BEGIN - MENUITEM "&Undo\tCtrl+Z", MENU_MV_EDIT_UNDO - MENUITEM SEPARATOR - MENUITEM "&Copy", MENU_MV_EDIT_COPY - MENUITEM "&Paste", MENU_MV_EDIT_PASTE - MENUITEM SEPARATOR - MENUITEM "&Find...", MENU_MV_EDIT_FIND - END - POPUP "&View" - BEGIN - MENUITEM "&NES Memory", MENU_MV_VIEW_RAM - MENUITEM "&PPU Memory", MENU_MV_VIEW_PPU - MENUITEM "&OAM Memory", MENU_MV_VIEW_OAM - MENUITEM "&ROM File", MENU_MV_VIEW_ROM - END - POPUP "Highlighting" - BEGIN - MENUITEM "Highlight Activity", ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY - MENUITEM "Set fading period...", ID_HIGHLIGHTING_SETFADINGPERIOD - MENUITEM "Fade when paused", ID_HIGHLIGHTING_FADEWHENPAUSED - END - POPUP "&Bookmarks" - BEGIN - MENUITEM "&Remove all bookmarks", MENU_MV_BOOKMARKS_RM_ALL - END - POPUP "Help" - BEGIN - MENUITEM "&Help...", MENU_MV_HELP - END -END - -MEMWATCHMENU MENU -BEGIN - POPUP "&File " - BEGIN - MENUITEM "&New...\tCtrl+N", MEMW_FILE_NEW - MENUITEM "&Open...\tCtrl+O", MEMW_FILE_OPEN - MENUITEM "&Save\tCtrl+S", MEMW_FILE_SAVE - MENUITEM "S&ave As..\tCtrl+Shift+S", MEMW_FILE_SAVEAS - MENUITEM "&Recent", ID_FILE_RECENT - MENUITEM SEPARATOR - MENUITEM "&Close\tAlt+F4", MEMW_FILE_CLOSE - END - POPUP "&Options" - BEGIN - MENUITEM "&Load on Startup", MEMW_OPTIONS_LOADSTART - MENUITEM "Load Last &File on Startup", MEMW_OPTIONS_LOADLASTFILE - MENUITEM SEPARATOR - MENUITEM "&Collapse to 1 column", MEMW_OPTIONS_EXPANDCOLLAPSE - MENUITEM SEPARATOR - MENUITEM "Bind to Main Window", ID_OPTIONS_BINDTOMAINWINDOW - END - POPUP "&Help" - BEGIN - MENUITEM "&MemWatch Commands", MEMW_HELP_WCOMMANDS - END -END - -TASEDITORCONTEXTMENUS MENU -BEGIN - POPUP "Selected" - BEGIN - MENUITEM "Set Markers\tDbl-Clk", ID_SELECTED_SETMARKERS - MENUITEM "Remove Markers", ID_SELECTED_REMOVEMARKERS - MENUITEM SEPARATOR - MENUITEM "Deselect", ID_SELECTED_DESELECT - MENUITEM "Select between Markers\tCtrl+A", ID_SELECTED_SELECTMIDMARKERS - MENUITEM SEPARATOR - MENUITEM "Ungreenzone", ID_SELECTED_UNGREENZONE - MENUITEM SEPARATOR - MENUITEM "Clear\tDel", ID_CONTEXT_SELECTED_CLEARFRAMES - MENUITEM "Delete\tCtrl+Del", ID_CONTEXT_SELECTED_DELETEFRAMES - MENUITEM "Clone\tCtrl+Ins", ID_SELECTED_CLONE - MENUITEM "Insert\tCtrl+Shift+Ins", ID_CONTEXT_SELECTED_INSERTFRAMES - MENUITEM "Insert # of Frames\tIns", ID_CONTEXT_SELECTED_INSERTFRAMES2 - MENUITEM SEPARATOR - MENUITEM "Truncate movie", ID_CONTEXT_SELECTED_TRUNCATE - END -END - -FCEUCONTEXTMENUS MENU -BEGIN - POPUP "NoGame" - BEGIN - MENUITEM "Open ROM", FCEU_CONTEXT_OPENROM - MENUITEM "Last ROM used", FCEUX_CONTEXT_RECENTROM1 - MENUITEM SEPARATOR - MENUITEM "Help...", FCEU_CONTEXT_FCEUHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+NoMovie" - BEGIN - MENUITEM "Play Movie...", FCEUX_CONTEXT_REPLAYMOVIE - MENUITEM "Record Movie...", FCEUX_CONTEXT_RECORDMOVIE - MENUITEM "Load Last Movie", FCEUX_CONTEXT_LOADLASTMOVIE - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM "Screenshot", FCEUX_CONTEXT_SCREENSHOT - MENUITEM SEPARATOR - MENUITEM "Close ROM", FCEU_CONTEXT_CLOSEROM - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+Movie+Playing+readonly" - BEGIN - MENUITEM "Toggle to read+write", FCEUX_CONTEXT_READONLYTOGGLE - MENUITEM "Play Movie from Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING - MENUITEM "Stop Movie Replay", FCEU_CONTEXT_STOPMOVIE - MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES - MENUITEM SEPARATOR - MENUITEM "Toggle to Recording", FCEUX_CONTEXT_TOGGLE_RECORDING - POPUP "Modify Movie" - BEGIN - MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME - MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE - END - POPUP "Record Mode" - BEGIN - MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT - END - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM SEPARATOR - MENUITEM "Help....", FCEU_CONTEXT_MOVIEHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+Movie+Playing+readwrite" - BEGIN - MENUITEM "Toggle to Read-only", FCEUX_CONTEXT_READONLYTOGGLE - MENUITEM "Play Movie From Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING - MENUITEM "Stop Movie Replay", FCEU_CONTEXT_STOPMOVIE - MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES - MENUITEM "Make backup", FCEUX_CONTEXT_MAKEBACKUP - MENUITEM "Save Movie As...", FCEUX_CONTEXT_SAVEMOVIEAS - MENUITEM SEPARATOR - MENUITEM "Toggle to Recording", FCEUX_CONTEXT_TOGGLE_RECORDING - POPUP "Modify Movie" - BEGIN - MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME - MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE - END - POPUP "Record Mode" - BEGIN - MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT - END - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM SEPARATOR - MENUITEM "&Mode: Full state-movie loads", ID_CONTEXT_FULLSAVESTATES - MENUITEM SEPARATOR - MENUITEM "Help...", FCEU_CONTEXT_MOVIEHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+Movie+Recording+readonly" - BEGIN - MENUITEM "Toggle to read+write", FCEUX_CONTEXT_READONLYTOGGLE - MENUITEM "Play Movie from Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING - MENUITEM "Stop Movie Recording", FCEU_CONTEXT_STOPMOVIE - MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES - MENUITEM SEPARATOR - MENUITEM "Toggle to Playing", FCEUX_CONTEXT_TOGGLE_RECORDING - POPUP "Modify Movie" - BEGIN - MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME - MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE - END - POPUP "Record Mode" - BEGIN - MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT - END - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM SEPARATOR - MENUITEM "Help....", FCEU_CONTEXT_MOVIEHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END - POPUP "Game+Movie+Recording+readwrite" - BEGIN - MENUITEM "Toggle to Read-only", FCEUX_CONTEXT_READONLYTOGGLE - MENUITEM "Play Movie From Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING - MENUITEM "Stop Movie Recording", FCEU_CONTEXT_STOPMOVIE - MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES - MENUITEM "Make backup", FCEUX_CONTEXT_MAKEBACKUP - MENUITEM "Save Movie As...", FCEUX_CONTEXT_SAVEMOVIEAS - MENUITEM SEPARATOR - MENUITEM "Toggle to Playing", FCEUX_CONTEXT_TOGGLE_RECORDING - POPUP "Modify Movie" - BEGIN - MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME - MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME - MENUITEM SEPARATOR - MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE - END - POPUP "Record Mode" - BEGIN - MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE - MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE - MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT - END - MENUITEM SEPARATOR - MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE - MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE - MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO - MENUITEM SEPARATOR - MENUITEM "&Mode: Full state-movie loads", ID_CONTEXT_FULLSAVESTATES - MENUITEM SEPARATOR - MENUITEM "Help...", FCEU_CONTEXT_MOVIEHELP - MENUITEM SEPARATOR - MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG - END -END - -RAMWATCH_MENU MENU -BEGIN - POPUP "File" - BEGIN - MENUITEM "&New list\tCtrl N", RAMMENU_FILE_NEW - MENUITEM "&Open...\tCtrl O", RAMMENU_FILE_OPEN - MENUITEM "&Save\tCtrl S", RAMMENU_FILE_SAVE - MENUITEM "Sa&ve As...\tCtrl Shift S", RAMMENU_FILE_SAVEAS - MENUITEM "&Append file...", RAMMENU_FILE_APPEND - MENUITEM "Recent", RAMMENU_FILE_RECENT - MENUITEM SEPARATOR - MENUITEM "Auto-&load", RAMMENU_FILE_AUTOLOAD - MENUITEM "Save Window Position", RAMMENU_FILE_SAVEWINDOW - MENUITEM SEPARATOR - MENUITEM "&Close\tAlt F4", IDCANCEL - END - POPUP "Watches" - BEGIN - MENUITEM "&New Watch\tN", IDC_C_WATCH - MENUITEM "&Edit Watch\tE", IDC_C_WATCH_EDIT - MENUITEM "&Remove Watch\tR", IDC_C_WATCH_REMOVE - MENUITEM "Duplicate Watch\tA", IDC_C_WATCH_DUPLICATE - MENUITEM "Add &Separator\tS", IDC_C_WATCH_SEPARATE - MENUITEM SEPARATOR - MENUITEM "Move Up\tU", IDC_C_WATCH_UP - MENUITEM "Move Down\tD", IDC_C_WATCH_DOWN - END -END - -CHEATCONTEXTMENUS MENU -BEGIN - POPUP "CheatListPopup" - BEGIN - MENUITEM "Toggle selected Cheats", CHEAT_CONTEXT_LIST_TOGGLECHEAT - MENUITEM "Poke Cheat Value", CHEAT_CONTEXT_LIST_POKECHEATVALUE - MENUITEM "Goto in Hex Editor", CHEAT_CONTEXT_LIST_GOTOINHEXEDITOR - MENUITEM "Delete selected Cheats", CHEAT_CONTEXT_LIST_DELETESELECTEDCHEATS - END - POPUP "CheatPossiPopup" - BEGIN - MENUITEM "Add to Memory Watch", CHEAT_CONTEXT_POSSI_ADDTOMEMORYWATCH - MENUITEM "Add cheat", CHEAT_CONTEXT_POSSI_ADDCHEAT - MENUITEM "Add to RAM Watch", CHEAT_CONTEXT_POSSI_ADDTORAMWATCH - MENUITEM "Go to in Hex Editor", CHEAT_CONTEXT_POSSI_GOTOINHEXEDITOR - END -END - -DEBUGCONTEXTMENUS MENU -BEGIN - POPUP "DebugListPopup" - BEGIN - MENUITEM "Toggle Breakpoint\tDbl-Clk", DEBUGGER_CONTEXT_TOGGLEBREAK - END -END - -LUAWINDOW_MENU MENU -BEGIN - POPUP "Console" - BEGIN - MENUITEM "&Font...", IDC_LUACONSOLE_CHOOSEFONT - MENUITEM "Clear", IDC_LUACONSOLE_CLEAR - END -END - -DISASMCONTEXTMENUS MENU -BEGIN - POPUP "DisasmPopup" - BEGIN - MENUITEM "Copy\tCtrl+C", DISASM_CONTEXT_COPY - MENUITEM "Select All\tCtrl+A", DISASM_CONTEXT_SELECTALL - END -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Dialog -// - -DIRCONFIG DIALOGEX 63, 7, 305, 255 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Directories Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",CLOSE_BUTTON,175,230,56,14 - PUSHBUTTON "Cancel",BTN_CANCEL,239,230,56,14 - EDITTEXT 113,71,9,158,12,ES_AUTOHSCROLL - EDITTEXT EDIT_ROMS,71,27,158,12,ES_AUTOHSCROLL - EDITTEXT 101,71,45,158,12,ES_AUTOHSCROLL - EDITTEXT 102,71,63,158,12,ES_AUTOHSCROLL - EDITTEXT 103,71,81,158,12,ES_AUTOHSCROLL - EDITTEXT 104,71,99,158,12,ES_AUTOHSCROLL - EDITTEXT 105,71,117,158,12,ES_AUTOHSCROLL - EDITTEXT 106,71,135,158,12,ES_AUTOHSCROLL - EDITTEXT 107,71,153,158,12,ES_AUTOHSCROLL - EDITTEXT 110,71,171,158,12,ES_AUTOHSCROLL - EDITTEXT 111,71,189,158,12,ES_AUTOHSCROLL - EDITTEXT 112,71,207,158,12,ES_AUTOHSCROLL - PUSHBUTTON "Browse...",213,239,8,56,14 - PUSHBUTTON "Browse...",BUTTON_ROMS,239,26,56,14 - PUSHBUTTON "Browse...",201,239,44,56,14 - PUSHBUTTON "Browse...",202,239,62,56,14 - PUSHBUTTON "Browse...",203,239,80,56,14 - PUSHBUTTON "Browse...",204,239,98,56,14 - PUSHBUTTON "Browse...",205,239,116,56,14 - PUSHBUTTON "Browse...",206,239,134,56,14 - PUSHBUTTON "Browse...",207,239,152,56,14 - PUSHBUTTON "Browse...",210,239,170,56,14 - PUSHBUTTON "Browse...",211,239,188,56,14 - PUSHBUTTON "Browse...",212,239,206,56,14 - LTEXT "Base Directory",IDC_STATIC,10,10,47,8 - LTEXT "Roms",IDC_STATIC,10,28,19,8 - LTEXT "Battery Saves",IDC_STATIC,10,46,45,8 - LTEXT "Save States",IDC_STATIC,10,64,41,9 - LTEXT "FDS Bios Rom",IDC_STATIC,10,82,47,8 - LTEXT "Screenshots",IDC_STATIC,10,100,40,8 - LTEXT "Cheats",IDC_STATIC,10,118,23,8 - LTEXT "Movies",IDC_STATIC,10,136,24,8 - LTEXT "Memory Watch",IDC_STATIC,10,154,52,9 - LTEXT "Input Presets",IDC_STATIC,10,172,42,8 - LTEXT "Lua Scripts",IDC_STATIC,10,190,36,8 - LTEXT "Avi Output",IDC_STATIC,10,208,34,8 -END - -DWBDIALOG DIALOG 33, 99, 250, 56 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "DWB!" -FONT 8, "MS Shell Dlg" -BEGIN - LTEXT "Text",LBL_DWBDIALOG_TEXT,7,9,237,8 - PUSHBUTTON "Clear",BTN_CLEAR,64,32,50,14 - PUSHBUTTON "Close",BTN_CLOSE,188,33,50,14 -END - -FKBDIALOG DIALOG 13, 72, 402, 194 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Family Keyboard Configuration" -FONT 8, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON "Close",BTN_CLOSE,320,170,56,14 - LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Family Keyboard input.",65503,18,6,370,12 - GROUPBOX "",65502,11,22,380,133,WS_GROUP - PUSHBUTTON "F1",300,22,43,32,12 - PUSHBUTTON "1",308,30,59,16,12 - PUSHBUTTON "F2",301,60,43,32,12 - PUSHBUTTON "F3",302,98,43,32,12 - PUSHBUTTON "F4",303,136,43,32,12 - PUSHBUTTON "F5",304,174,43,32,12 - PUSHBUTTON "F6",305,212,43,32,12 - PUSHBUTTON "F7",306,250,43,32,12 - PUSHBUTTON "F8",307,288,43,32,12 - PUSHBUTTON "2",309,49,59,16,12 - PUSHBUTTON "3",310,68,59,16,12 - PUSHBUTTON "4",311,87,59,16,12 - PUSHBUTTON "5",312,106,59,16,12 - PUSHBUTTON "6",313,125,59,16,12 - PUSHBUTTON "7",314,144,59,16,12 - PUSHBUTTON "8",315,163,59,16,12 - PUSHBUTTON "9",316,182,59,16,12 - PUSHBUTTON "0",317,201,59,16,12 - PUSHBUTTON "-",318,220,59,16,12 - PUSHBUTTON "^",319,239,59,16,12 - PUSHBUTTON "\\",320,258,59,16,12 - PUSHBUTTON "STP",321,277,59,16,12 - PUSHBUTTON "ESC",322,22,75,16,12 - PUSHBUTTON "Q",323,41,75,16,12 - PUSHBUTTON "W",324,60,75,16,12 - PUSHBUTTON "E",325,79,75,16,12 - PUSHBUTTON "R",326,98,75,16,12 - PUSHBUTTON "T",327,117,75,16,12 - PUSHBUTTON "Y",328,136,75,16,12 - PUSHBUTTON "U",329,155,75,16,12 - PUSHBUTTON "I",330,174,75,16,12 - PUSHBUTTON "O",331,193,75,16,12 - PUSHBUTTON "P",332,212,75,16,12 - PUSHBUTTON "@",333,231,75,16,12 - PUSHBUTTON "[",334,250,75,16,12 - PUSHBUTTON "RETURN",335,272,75,32,12 - PUSHBUTTON "CTR",336,26,91,16,12 - PUSHBUTTON "A",337,45,91,16,12 - PUSHBUTTON "S",338,64,91,16,12 - PUSHBUTTON "D",339,83,91,16,12 - PUSHBUTTON "F",340,102,91,16,12 - PUSHBUTTON "G",341,121,91,16,12 - PUSHBUTTON "H",342,140,91,16,12 - PUSHBUTTON "J",343,159,91,16,12 - PUSHBUTTON "K",344,178,91,16,12 - PUSHBUTTON "L",345,197,91,16,12 - PUSHBUTTON ";",346,216,91,16,12 - PUSHBUTTON ":",347,235,91,16,12 - PUSHBUTTON "]",348,254,91,16,12 - PUSHBUTTON "KANA",349,273,91,16,12 - PUSHBUTTON "Z",351,55,107,16,12 - PUSHBUTTON "X",352,74,107,16,12 - PUSHBUTTON "C",353,93,107,16,12 - PUSHBUTTON "V",354,112,107,16,12 - PUSHBUTTON "B",355,131,107,16,12 - PUSHBUTTON "N",356,150,107,16,12 - PUSHBUTTON "M",357,169,107,16,12 - PUSHBUTTON ",",358,188,107,16,12 - PUSHBUTTON ".",359,207,107,16,12 - PUSHBUTTON "/",360,226,107,16,12 - PUSHBUTTON "",361,245,107,16,12 - PUSHBUTTON "SHIFT",350,19,107,32,12 - PUSHBUTTON "SHIFT",362,265,107,32,12 - PUSHBUTTON "GRPH",363,74,123,16,12 - PUSHBUTTON "SPACE",364,93,123,149,12 - PUSHBUTTON "CLR",365,316,67,16,12 - PUSHBUTTON "INS",366,335,67,16,12 - PUSHBUTTON "DEL",367,354,67,16,12 - PUSHBUTTON "UP",368,327,83,32,12 - PUSHBUTTON "LEFT",369,310,99,32,12 - PUSHBUTTON "RIGHT",370,346,99,32,12 - PUSHBUTTON "DOWN",371,327,115,32,12 -END - -GAMEPADDIALOG DIALOGEX 4, 109, 243, 220 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Gamepad Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",BTN_CLOSE,173,196,56,14 - GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP - PUSHBUTTON "Up",304,35,27,24,12 - PUSHBUTTON "Left",306,9,45,25,12 - PUSHBUTTON "Right",307,60,45,24,12 - PUSHBUTTON "Down",305,35,64,24,12 - PUSHBUTTON "Select",302,91,45,26,12 - PUSHBUTTON "Start",303,126,45,26,12 - PUSHBUTTON "B",301,169,45,16,12 - PUSHBUTTON "A",300,195,45,16,12 - PUSHBUTTON "Turbo B",309,154,29,32,12 - PUSHBUTTON "Turbo A",308,195,29,32,12 - GROUPBOX "",GRP_GAMEPAD2,4,101,232,82,WS_GROUP - PUSHBUTTON "Up",316,35,120,24,12 - PUSHBUTTON "Left",318,9,138,25,12 - PUSHBUTTON "Right",319,60,138,24,12 - PUSHBUTTON "Down",317,35,157,24,12 - PUSHBUTTON "Select",314,91,138,26,12 - PUSHBUTTON "Start",315,126,138,26,12 - PUSHBUTTON "B",313,169,138,16,12 - PUSHBUTTON "A",312,195,138,16,12 - PUSHBUTTON "Turbo B",321,154,122,32,12 - PUSHBUTTON "Turbo A",320,195,122,32,12 -END - -GUICONFIG DIALOGEX 16, 123, 184, 158 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "GUI Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",BTN_CLOSE,65,136,56,14 - CONTROL "Load ""File Open"" dialog when FCEUX starts.",CB_LOAD_FILE_OPEN, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,168,12 - CONTROL "Automatically hide menu on game load.",CB_AUTO_HIDE_MENU, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,23,168,12 - CONTROL "Ask confirmation on exit attempt.",CB_ASK_EXIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,38,168,12 - CONTROL "Disable screen saver while game is loaded.",CB_DISABLE_SCREEN_SAVER, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,53,168,12 - CONTROL "Enable right-click context menu",CB_ENABLECONTEXTMENU, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,68,168,12 - CONTROL "Switch fullscreen by double-click",CB_FS_BY_DOUBLECLICK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,84,168,12 - CONTROL "Partially disable Visual Themes (Requires restart)",CB_PARTIALVISUALTHEME, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,100,168,12 - CONTROL "Single Instance Mode",IDC_SINGLEINSTANCE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,117,167,10 -END - -INPUTCONFIG DIALOGEX 122, 105, 349, 199 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Input Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "Port 1:",102,20,31,152,50 - COMBOBOX COMBO_PAD1,27,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Configure",BTN_PORT1,109,43,56,14 - GROUPBOX "Port 2:",103,176,31,152,50 - COMBOBOX COMBO_PAD2,183,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Configure",BTN_PORT2,265,41,56,14 - GROUPBOX "NES-style Input Ports",108,10,8,328,83 - GROUPBOX "Famicom Expansion Port:",109,176,93,162,50 - COMBOBOX COMBO_FAM,183,122,84,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Configure",BTN_FAM,275,105,56,14 - CONTROL "",65487,"Static",SS_BLACKFRAME,27,41,71,12 - CONTROL "",65486,"Static",SS_BLACKFRAME,183,41,71,12 - CONTROL "",65485,"Static",SS_BLACKFRAME,183,106,84,12 - CTEXT "",TXT_PAD1,30,42,65,10 - CTEXT "",TXT_PAD2,186,42,65,10 - CTEXT "",TXT_FAM,186,107,78,10 - PUSHBUTTON "Set",BTN_AUTO_HOLD,19,157,45,13 - LTEXT "not assigned",LBL_AUTO_HOLD,71,159,87,8 - PUSHBUTTON "Clear",BTN_CLEAR_AH,19,172,45,13 - LTEXT "not assigned",LBL_CLEAR_AH,71,174,87,8 - DEFPUSHBUTTON "Close",BTN_CLOSE,282,177,56,14 - GROUPBOX "Input Presets",113,10,93,162,50 - CONTROL "Allow Left+Right / Up+Down",BTN_ALLOW_LRUD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,183,157,107,10 - PUSHBUTTON "Set",BTN_PRESET_SET1,34,103,37,11 - PUSHBUTTON "Set",BTN_PRESET_SET2,34,115,37,11 - PUSHBUTTON "Set",BTN_PRESET_SET3,34,127,37,11 - PUSHBUTTON "Import",BTN_PRESET_IMPORT1,84,103,37,11 - PUSHBUTTON "Import",BTN_PRESET_IMPORT2,84,115,37,11 - PUSHBUTTON "Import",BTN_PRESET_IMPORT3,84,127,37,11 - PUSHBUTTON "Export",BTN_PRESET_EXPORT1,123,103,37,11 - PUSHBUTTON "Export",BTN_PRESET_EXPORT2,123,115,37,11 - PUSHBUTTON "Export",BTN_PRESET_EXPORT3,123,127,37,11 - GROUPBOX "Auto-Hold",118,10,146,162,44 - GROUPBOX "Emulation",119,176,146,162,25 - CTEXT "1",IDC_STATIC,18,105,8,8 - CTEXT "2",IDC_STATIC,18,116,8,8 - CTEXT "3",IDC_STATIC,18,128,8,8 - CONTROL "Attach four-score (implies four gamepads)",CHECK_ENABLE_FOURSCORE, - "Button",BS_AUTOCHECKBOX,18,18,142,12 - CONTROL "Replace Port 2 Start With Microphone",CHECK_ENABLE_MICROPHONE, - "Button",BS_AUTOCHECKBOX,174,18,142,12 -END - -MAHJONGDIALOG DIALOG 65510, 106, 340, 110 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "mahjong" -FONT 8, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON "Close",BTN_CLOSE,277,91,56,14 - GROUPBOX "",321,8,8,324,73,WS_GROUP - PUSHBUTTON "A",300,14,42,16,12 - PUSHBUTTON "B",301,36,42,16,12 - PUSHBUTTON "C",302,58,42,16,12 - PUSHBUTTON "D",303,80,42,16,12 - PUSHBUTTON "E",304,102,42,16,12 - PUSHBUTTON "F",305,124,42,16,12 - PUSHBUTTON "G",306,146,42,16,12 - PUSHBUTTON "H",307,168,42,16,12 - PUSHBUTTON "I",308,190,42,16,12 - PUSHBUTTON "J",309,212,42,16,12 - PUSHBUTTON "K",310,234,42,16,12 - PUSHBUTTON "L",311,256,42,16,12 - PUSHBUTTON "M",312,278,42,16,12 - PUSHBUTTON " ",313,302,40,20,15 - PUSHBUTTON "SEL",314,124,58,16,12 - PUSHBUTTON "ST",315,146,58,16,12 - PUSHBUTTON " ",316,168,58,16,12 - PUSHBUTTON " ",317,190,58,16,12 - PUSHBUTTON " ",318,212,58,16,12 - PUSHBUTTON " ",319,234,58,16,12 - PUSHBUTTON " ",320,256,58,16,12 -END - -MAPINPUT DIALOGEX 0, 0, 318, 294 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Hotkeys" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",IDOK,261,274,50,14 - PUSHBUTTON "Cancel",BTN_CANCEL,205,274,50,14 - CONTROL "List2",LV_MAPPING,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,7,7,304,243 - PUSHBUTTON "Restore Defaults",BTN_RESTORE_DEFAULTS,7,274,75,14 - COMBOBOX COMBO_FILTER,32,255,279,193,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Filter:",65484,6,255,21,12,SS_CENTERIMAGE | NOT WS_GROUP -END - -MESSAGELOG DIALOGEX 33, 38, 197, 229 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Message Log" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - EDITTEXT LBL_LOG_TEXT,1,1,194,208,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL - PUSHBUTTON "Clear",CLEAR_LOG,94,211,47,14 - PUSHBUTTON "Close",CLOSE_LOG,146,211,47,14 -END - -NETMOO DIALOGEX 44, 59, 365, 209 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Network Play" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - EDITTEXT IDC_NETMOO_CMD_INPUT,10,137,347,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_OEMCONVERT | ES_WANTRETURN - EDITTEXT IDC_NETMOO_STATUS,10,8,347,130,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL - RTEXT "Remote Host:",65481,13,167,44,8 - EDITTEXT IDC_NETMOO_HOST,60,165,90,12 - EDITTEXT IDC_NETMOO_PORT,151,165,27,12 - GROUPBOX "Settings",100,10,154,347,47,WS_GROUP - DEFPUSHBUTTON "Connect",BTN_NETMOO_CONNECT,296,163,56,14 - EDITTEXT IDC_NETMOO_NICK,282,182,70,12,ES_AUTOHSCROLL - RTEXT "Local Players:",65480,187,167,46,8 - RTEXT "Nickname:",65479,238,184,40,8 - COMBOBOX COMBO_NETMOO_LOCAL_PLAYERS,238,165,28,51,CBS_DROPDOWNLIST | WS_TABSTOP - RTEXT "Game Key:",65478,127,184,39,8 - EDITTEXT IDC_NETMOO_KEY,169,182,67,12 - RTEXT "Password:",65477,19,184,37,8 - EDITTEXT IDC_NETMOO_PASS,60,182,67,12,ES_PASSWORD -END - -NEWINPUT DIALOGEX 0, 0, 186, 66 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Enter New Input" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - CTEXT "Press a key",LBL_KEY_COMBO,31,14,122,20 - PUSHBUTTON "Clear",BTN_CLEAR,95,45,50,14 - PUSHBUTTON "OK",BTN_OK,40,45,50,14 -END - -PALCONFIG DIALOGEX 16, 81, 228, 217 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Palette Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",BUTTON_CLOSE,162,195,56,14 - GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP - DEFPUSHBUTTON "&Load Palette...",BTN_PALETTE_LOAD,18,39,58,14 - CONTROL "Enabled",CHECK_PALETTE_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,22,87,12 - CONTROL "Tint",CTL_TINT_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,44,91,11 - GROUPBOX "NTSC Color Emulation",101,115,8,103,81,WS_GROUP - CONTROL "Hue",CTL_HUE_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,69,91,11 - CTEXT "Hue",64395,124,59,85,8,WS_DISABLED - CTEXT "Tint",65463,123,34,85,8,WS_DISABLED - CONTROL "Force Grayscale",CHECK_PALETTE_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,57,85,12 - CONTROL "Use Custom Palette",CHECK_PALETTE_CUSTOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,22,85,12 - GROUPBOX "PAL Emulation",IDC_STATIC,10,89,208,66,WS_DISABLED - CONTROL "",CTL_PALSAT_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,78,110,70,15 - LTEXT "Saturation:",STATIC_SATVALUE,83,100,58,8,WS_DISABLED - PUSHBUTTON "Reset",BTN_PALETTE_RESET,161,132,50,14,WS_DISABLED - CONTROL "",CTL_PALNOTCH_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,11,110,68,15 - LTEXT "Notch:",STATIC_NOTCHVALUE,16,100,46,8,WS_DISABLED - CONTROL "",CTL_PALSHARP_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,156,109,61,15 - LTEXT "Sharpness:",STATIC_SHARPVALUE,161,99,50,8,WS_DISABLED - LTEXT "NTSC Color Emulation overrides Internal default Palette.\nIndividual Game Palette overrides Internal+NTSC Palettes.\nCustom Palette overrides all of the above.\nPAL Emulation overrides other choices when PAL filter is selected",IDC_STATIC,10,159,208,33 - CONTROL "",CTL_PALCONTRAST_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,11,134,67,15 - LTEXT "Contrast: ",STATIC_CONTRASTVALUE,16,126,55,8,WS_DISABLED - CONTROL "",CTL_PALBRIGHT_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,78,133,70,15 - LTEXT "Brightness: ",STATIC_BRIGHTVALUE,83,125,61,8,WS_DISABLED - CONTROL "De-emphasis bit swap",CHECK_DEEMPH_SWAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,73,83,10 -END - -POWERPADDIALOG DIALOG 30, 123, 131, 119 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Power Pad Configuration" -FONT 8, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON "Close",BTN_CLOSE,34,95,56,14 - GROUPBOX "",312,8,10,114,74,WS_GROUP - PUSHBUTTON "1",300,21,23,16,12 - PUSHBUTTON "2",301,43,23,16,12 - PUSHBUTTON "3",302,70,23,16,12 - PUSHBUTTON "4",303,91,23,16,12 - PUSHBUTTON "5",304,21,41,16,12 - PUSHBUTTON "6",305,43,41,16,12 - PUSHBUTTON "7",306,70,41,16,12 - PUSHBUTTON "8",307,91,41,16,12 - PUSHBUTTON "9",308,21,59,16,12 - PUSHBUTTON "10",309,43,59,16,12 - PUSHBUTTON "11",310,70,59,16,12 - PUSHBUTTON "12",311,91,59,16,12 -END - -QUIZKINGDIALOG DIALOG 30, 123, 160, 74 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "quiz king" -FONT 8, "MS Shell Dlg" -BEGIN - DEFPUSHBUTTON "Close",BTN_CLOSE,54,56,56,14 - GROUPBOX "Buzzers",312,8,7,144,39,WS_GROUP - PUSHBUTTON "1",300,16,23,16,12 - PUSHBUTTON "2",301,38,23,16,12 - PUSHBUTTON "3",302,60,23,16,12 - PUSHBUTTON "4",303,82,23,16,12 - PUSHBUTTON "5",304,104,23,16,12 - PUSHBUTTON "6",305,126,23,16,12 -END - -SOUNDCONFIG DIALOGEX 8, 95, 334, 282 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Sound Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",BTN_CLOSE,280,260,44,14 - GROUPBOX "Output/Output Format:",302,10,9,131,93,WS_GROUP - CONTROL "Sound enabled.",CHECK_SOUND_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,22,117,12 - GROUPBOX "Buffering:",127,150,9,131,93,WS_GROUP - CONTROL "Use Global Focus",CHECK_SOUND_GLOBAL_FOCUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,157,22,100,12 - CTEXT "Sound Latency",65459,162,50,107,8 - CONTROL "",CTL_LATENCY_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,162,70,107,13 - GROUPBOX "Master",125,19,142,44,93,WS_GROUP - CONTROL "",CTL_VOLUME_TRACKBAR,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,27,150,28,83 - LTEXT "15 ms",65458,160,87,20,8 - LTEXT "200 ms",65457,250,87,25,8 - LTEXT "ms",65456,211,60,19,8 - LTEXT "Quality:",65455,17,43,27,10 - COMBOBOX COMBO_SOUND_QUALITY,50,40,67,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Rate:",65461,17,64,22,10 - COMBOBOX COMBO_SOUND_RATE,50,61,53,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Hz",65460,108,64,15,9 - LTEXT "Depth:",65462,17,85,27,10 - COMBOBOX COMBO_SOUND_8BIT,50,82,67,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "Mute frame advance",CHECK_SOUND_MUTEFA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,110,87,11 - CONTROL "Mute Turbo",CHECK_SOUND_MUTETURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,138,111,53,10 - GROUPBOX "Triangle",131,70,142,44,93,WS_GROUP - CONTROL "",CTL_VOLUME_TRACKBAR_TRIANGLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,78,150,28,83 - GROUPBOX "Square1",132,121,142,44,93,WS_GROUP - CONTROL "",CTL_VOLUME_TRACKBAR_SQUARE1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,129,150,28,83 - GROUPBOX "Square2",133,170,142,44,93,WS_GROUP - CONTROL "",CTL_VOLUME_TRACKBAR_SQUARE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,178,150,28,83 - GROUPBOX "Noise",134,221,142,44,93,WS_GROUP - CONTROL "",CTL_VOLUME_TRACKBAR_NOISE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,229,150,28,83 - GROUPBOX "PCM",135,271,142,44,93,WS_GROUP - CONTROL "",CTL_VOLUME_TRACKBAR_PCM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,279,150,28,83 - GROUPBOX "Volume Control",IDC_VOLUMEGROUP,10,127,314,127 - PUSHBUTTON "Restore defaults",IDC_SOUND_RESTOREDEFAULTVOL,19,238,56,11 - LTEXT "",ID_SOUND_TRITOP,76,135,38,8 - LTEXT "",ID_SOUND_QUALITYNOTIFY,170,133,144,8 - CONTROL "Swap Duty Cycles",CHECK_SOUND_SWAPDUTY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,239,110,74,10 -END - -SUBORKBDIALOG DIALOGEX 13, 72, 478, 171 -STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Subor Keyboard Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",1,405,151,56,14 - LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Keyboard input.",-1,18,6,370,12 - GROUPBOX "",-1,9,22,461,123,WS_GROUP - PUSHBUTTON "Esc",300,20,36,16,12 - PUSHBUTTON "F1",301,58,37,16,12 - PUSHBUTTON "F2",302,78,37,16,12 - PUSHBUTTON "F3",303,98,37,16,12 - PUSHBUTTON "F4",304,118,37,16,12 - PUSHBUTTON "F5",305,143,37,16,12 - PUSHBUTTON "F6",306,163,37,16,12 - PUSHBUTTON "F7",307,183,37,16,12 - PUSHBUTTON "F8",308,203,37,16,12 - PUSHBUTTON "F9",309,229,37,16,12 - PUSHBUTTON "F10",310,249,37,16,12 - PUSHBUTTON "F11",311,268,37,16,12 - PUSHBUTTON "F12",312,288,37,16,12 - PUSHBUTTON "Pause",313,318,36,16,12 - PUSHBUTTON "`",314,20,60,16,12 - PUSHBUTTON "1",315,39,60,16,12 - PUSHBUTTON "2",316,58,60,16,12 - PUSHBUTTON "3",317,77,60,16,12 - PUSHBUTTON "4",318,96,60,16,12 - PUSHBUTTON "5",319,115,60,16,12 - PUSHBUTTON "6",320,134,60,16,12 - PUSHBUTTON "7",321,153,60,16,12 - PUSHBUTTON "8",322,172,60,16,12 - PUSHBUTTON "9",323,191,60,16,12 - PUSHBUTTON "0",324,210,60,16,12 - PUSHBUTTON "-",325,229,60,16,12 - PUSHBUTTON "=",326,248,60,16,12 - PUSHBUTTON "BS",327,286,60,16,12 - PUSHBUTTON "Ins",328,318,59,16,12 - PUSHBUTTON "Home",329,337,59,16,12 - PUSHBUTTON "NL",330,385,59,16,12 - PUSHBUTTON "/",331,405,59,16,12 - PUSHBUTTON "*",332,425,59,16,12 - PUSHBUTTON "-",333,444,59,16,12 - PUSHBUTTON "PUp",334,357,59,16,12 - PUSHBUTTON "TAB",335,20,76,24,12 - PUSHBUTTON "Q",336,47,76,16,12 - PUSHBUTTON "W",337,66,76,16,12 - PUSHBUTTON "E",338,85,76,16,12 - PUSHBUTTON "R",339,104,76,16,12 - PUSHBUTTON "T",340,123,76,16,12 - PUSHBUTTON "Y",341,142,76,16,12 - PUSHBUTTON "U",342,161,76,16,12 - PUSHBUTTON "I",343,180,76,16,12 - PUSHBUTTON "O",344,199,76,16,12 - PUSHBUTTON "P",345,218,76,16,12 - PUSHBUTTON "[",346,237,76,16,12 - PUSHBUTTON "]",347,256,76,16,12 - PUSHBUTTON "Enter",348,274,76,28,29 - PUSHBUTTON "Del",349,318,75,16,12 - PUSHBUTTON "End",350,338,75,16,12 - PUSHBUTTON "PDn",351,357,75,16,12 - PUSHBUTTON "7",352,385,75,16,12 - PUSHBUTTON "8",353,405,75,16,12 - PUSHBUTTON "9",354,425,75,16,12 - PUSHBUTTON "+",355,444,75,16,28 - PUSHBUTTON "CL",356,20,92,27,12 - PUSHBUTTON "A",357,52,92,16,12 - PUSHBUTTON "S",358,71,92,16,12 - PUSHBUTTON "D",359,90,92,16,12 - PUSHBUTTON "F",360,109,92,16,12 - PUSHBUTTON "G",361,128,92,16,12 - PUSHBUTTON "H",362,147,92,16,12 - PUSHBUTTON "J",363,166,92,16,12 - PUSHBUTTON "K",364,185,92,16,12 - PUSHBUTTON "L",365,204,92,16,12 - PUSHBUTTON ";",366,223,92,16,12 - PUSHBUTTON "'",367,242,92,16,12 - PUSHBUTTON "4",368,385,91,16,12 - PUSHBUTTON "5",369,405,91,16,12 - PUSHBUTTON "6",370,425,91,16,12 - PUSHBUTTON "SHIFT",371,20,108,37,12 - PUSHBUTTON "Z",372,62,108,16,12 - PUSHBUTTON "X",373,81,108,16,12 - PUSHBUTTON "C",374,100,108,16,12 - PUSHBUTTON "V",375,119,108,16,12 - PUSHBUTTON "B",376,138,108,16,12 - PUSHBUTTON "N",377,157,108,16,12 - PUSHBUTTON "M",378,176,108,16,12 - PUSHBUTTON ",",379,195,108,16,12 - PUSHBUTTON ".",380,214,108,16,12 - PUSHBUTTON "/",381,233,108,16,12 - PUSHBUTTON "\\",382,267,60,16,12 - PUSHBUTTON "Up",383,337,108,16,12 - PUSHBUTTON "1",384,385,107,16,12 - PUSHBUTTON "2",385,405,107,16,12 - PUSHBUTTON "3",386,425,107,16,12 - PUSHBUTTON "CTRL",387,20,123,28,12 - PUSHBUTTON "ALT",388,66,123,27,12 - PUSHBUTTON "SPACE",389,96,123,130,12 - PUSHBUTTON "Left",390,318,123,16,12 - PUSHBUTTON "Dn",391,337,123,16,12 - PUSHBUTTON "Right",392,357,123,16,12 - PUSHBUTTON "0",393,386,123,35,12 - PUSHBUTTON ".",394,425,123,16,12 - PUSHBUTTON "SHIFT",395,254,108,48,12 - PUSHBUTTON "ALT",396,229,123,29,12 - PUSHBUTTON "CTRL",397,274,123,28,12 - PUSHBUTTON "Break",398,337,36,16,12 - PUSHBUTTON "Reset",399,357,36,16,12 - PUSHBUTTON "Enter",400,444,107,16,28 -END - -TIMINGCONFIG DIALOGEX 23, 157, 203, 110 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Timing Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",1,137,87,56,14 - CONTROL "Disable speed throttling used when sound is disabled.",CB_DISABLE_SPEED_THROTTLING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,183,12 - CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,102,12 - CONTROL "Overclocking (old PPU only).",CB_OVERCLOCKING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,41,101,10 - EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED - LTEXT "Post-render scanlines:",IDC_EXTRA_SCANLINES_TEXT,21,57,74,8,WS_DISABLED - CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,87,111,10 - EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED - LTEXT "VBlank scanlines:",IDC_VBLANK_SCANLINES_TEXT,21,71,76,8,WS_DISABLED -END - -MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Movie Options" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",IDC_MOVIE_CLOSE,48,200,49,14,BS_CENTER - CONTROL "Pause after playback",IDC_MOVIE_PAUSEAFTERPLAYBACK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,26,110,10 - CONTROL "Bind savestates to movies",IDC_MOVIE_BINDSAVESTATES, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,64,111,10 - CONTROL "Display movie subtitles",IDC_MOVIE_DISPLAYSUBTITLES, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,83,102,10 - CONTROL "Put movie subtitles in AVI",IDC_MOVIE_SUBTITLESINAVI, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,101,102,10 - CONTROL "Automatically backup movies",IDC_MOVIE_AUTOBACKUP, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,122,114,10 - CONTROL "Load full savestate-movies:",IDC_FULLSAVESTATES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,141,110,10 - LTEXT "Loading states in record mode",IDC_STATIC,25,153,106,8 - LTEXT "will not immediately truncate",IDC_STATIC,25,163,107,8 - LTEXT "movie, next frame input will.",IDC_STATIC,25,173,108,8 - CONTROL "Close after playback",IDC_MOVIE_CLOSEAFTERPLAYBACK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,45,89,10 - CONTROL "Always suggest Read-Only replay",IDC_MOVIE_SUGGEST_READONLY, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,8,125,10 - LTEXT "(VBA-rr and SNES9x style)",IDC_STATIC,25,184,93,8 -END - -DWBDIALOGSIMPLE DIALOGEX 33, 99, 250, 39 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "DWBS!" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - LTEXT "Type a key, or press Escape to disable.",65429,53,14,125,8 -END - -MEMWATCH DIALOGEX 0, 0, 261, 270 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Memory Watch" -MENU MEMWATCHMENU -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "",IDC_STATIC,3,0,126,200 - GROUPBOX "",IDC_STATIC,131,0,128,200 - EDITTEXT MW_ADDR00,6,17,30,14,ES_UPPERCASE - EDITTEXT MW_NAME00,41,17,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR01,6,32,30,14,ES_UPPERCASE - EDITTEXT MW_NAME01,41,32,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR02,6,47,30,14,ES_UPPERCASE - EDITTEXT MW_NAME02,41,47,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR03,6,62,30,14,ES_UPPERCASE - EDITTEXT MW_NAME03,41,62,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR04,6,77,30,14,ES_UPPERCASE - EDITTEXT MW_NAME04,41,77,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR05,6,92,30,14,ES_UPPERCASE - EDITTEXT MW_NAME05,41,92,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR06,6,107,30,14,ES_UPPERCASE - EDITTEXT MW_NAME06,41,107,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR07,6,122,30,14,ES_UPPERCASE - EDITTEXT MW_NAME07,41,122,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR08,6,137,30,14,ES_UPPERCASE - EDITTEXT MW_NAME08,41,137,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR09,6,152,30,14,ES_UPPERCASE - EDITTEXT MW_NAME09,41,152,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR10,6,167,30,14,ES_UPPERCASE - EDITTEXT MW_NAME10,41,167,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR11,6,182,30,14,ES_UPPERCASE - EDITTEXT MW_NAME11,41,182,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR12,135,17,30,14,ES_UPPERCASE - EDITTEXT MW_NAME12,171,17,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR13,135,32,30,14,ES_UPPERCASE - EDITTEXT MW_NAME13,171,32,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR14,135,47,30,14,ES_UPPERCASE - EDITTEXT MW_NAME14,171,47,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR15,135,62,30,14,ES_UPPERCASE - EDITTEXT MW_NAME15,171,62,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR16,135,77,30,14,ES_UPPERCASE - EDITTEXT MW_NAME16,171,77,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR17,135,92,30,14,ES_UPPERCASE - EDITTEXT MW_NAME17,171,92,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR18,135,107,30,14,ES_UPPERCASE - EDITTEXT MW_NAME18,171,107,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR19,135,122,30,14,ES_UPPERCASE - EDITTEXT MW_NAME19,171,122,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR20,135,137,30,14,ES_UPPERCASE - EDITTEXT MW_NAME20,171,137,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR21,135,152,30,14,ES_UPPERCASE - EDITTEXT MW_NAME21,171,152,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR22,135,167,30,14,ES_UPPERCASE - EDITTEXT MW_NAME22,171,167,55,14,ES_AUTOHSCROLL - EDITTEXT MW_ADDR23,135,182,30,14,ES_UPPERCASE - EDITTEXT MW_NAME23,171,182,55,14,ES_AUTOHSCROLL - LTEXT "Name",IDC_STATIC,41,7,20,8 - LTEXT "Address",IDC_STATIC,6,7,26,8 - LTEXT "Value",MW_VALUELABEL1,101,7,19,8 - LTEXT "Name",IDC_STATIC,171,7,20,8 - LTEXT "Address",IDC_STATIC,135,7,26,8 - LTEXT "Value",MW_VALUELABEL2,231,7,19,8 - LTEXT " ",EDIT00_RESULTS,89,225,26,8 - GROUPBOX "Memory Change Monitoring",IDC_STATIC,0,202,129,57,BS_CENTER - LTEXT "Address",IDC_STATIC,6,213,26,8 - LTEXT "Count",IDC_STATIC,90,213,20,8 - LTEXT "Formula",IDC_STATIC,47,213,26,8 - LTEXT " ",MEMW_EDIT00RMADDRESS,7,225,24,8 - PUSHBUTTON " ",MEMW_EDIT00RESET,115,225,11,7 - LTEXT "reset",IDC_STATIC,112,213,16,8 - COMBOBOX MEMW_EDIT00FORMULA,37,223,48,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT " ",MEMW_EDIT01RMADDRESS,7,241,24,8 - COMBOBOX MEMW_EDIT01FORMULA,37,241,48,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT " ",EDIT01_RESULTS,89,241,25,8 - PUSHBUTTON " ",MEMW_EDIT01RESET,115,241,11,7 - LTEXT " ",EDIT02_RESULTS,217,225,26,8 - LTEXT "Address",IDC_STATIC,133,213,26,8 - LTEXT "Formula",IDC_STATIC,173,213,26,8 - LTEXT " ",MEMW_EDIT02RMADDRESS,135,225,24,8 - PUSHBUTTON " ",MEMW_EDIT02RESET,242,225,11,7 - LTEXT "reset",IDC_STATIC,239,213,16,8 - COMBOBOX MEMW_EDIT02FORMULA,165,223,48,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT " ",MEMW_EDIT03RMADDRESS,135,241,24,8 - COMBOBOX MEMW_EDIT03FORMULA,165,241,48,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - LTEXT " ",EDIT03_RESULTS,217,241,28,8 - PUSHBUTTON " ",MEMW_EDIT03RESET,242,241,11,7 - GROUPBOX "Memory Change Monitoring",IDC_STATIC,131,202,129,57,BS_CENTER - LTEXT "Count",IDC_STATIC,217,213,20,8 - PUSHBUTTON "<",MEMW_EXPANDCOLLAPSE,1,259,11,10 -END - -DEBUGGER DIALOGEX 54, 74, 546, 334 -STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -CAPTION "6502 Debugger" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - CONTROL "",IDC_DEBUGGER_DISASSEMBLY,"RichEdit20A",ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_BORDER | WS_HSCROLL,18,5,316,317 - SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,334,5,11,317,SBS_VERT - GROUPBOX "Status Flags",401,434,140,106,35,WS_TABSTOP - CONTROL "N",IDC_DEBUGGER_FLAG_N,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,440,149,18,12 - CONTROL "V",IDC_DEBUGGER_FLAG_V,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,466,149,18,12 - CONTROL "U",IDC_DEBUGGER_FLAG_U,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,491,149,18,12 - CONTROL "B",IDC_DEBUGGER_FLAG_B,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,149,18,12 - CONTROL "D",IDC_DEBUGGER_FLAG_D,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,440,161,18,12 - CONTROL "I",IDC_DEBUGGER_FLAG_I,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,466,161,18,12 - CONTROL "Z",IDC_DEBUGGER_FLAG_Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,491,161,18,12 - CONTROL "C",IDC_DEBUGGER_FLAG_C,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,161,18,12 - GROUPBOX "Breakpoints",IDC_DEBUGGER_BREAKPOINTS,434,2,106,138,WS_TABSTOP - LISTBOX IDC_DEBUGGER_BP_LIST,438,11,98,96,LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL - PUSHBUTTON "Add",IDC_DEBUGGER_BP_ADD,438,109,31,15 - PUSHBUTTON "Delete",IDC_DEBUGGER_BP_DEL,472,109,31,15,WS_DISABLED - PUSHBUTTON "Edit",IDC_DEBUGGER_BP_EDIT,505,109,31,15,WS_DISABLED - PUSHBUTTON "Run",IDC_DEBUGGER_RUN,351,5,38,14 - PUSHBUTTON "Step Into",IDC_DEBUGGER_STEP_IN,392,5,39,14 - PUSHBUTTON "Step Out",IDC_DEBUGGER_STEP_OUT,351,21,38,14 - PUSHBUTTON "Step Over",IDC_DEBUGGER_STEP_OVER,392,21,39,14 - LTEXT "A:",IDC_STATIC,351,92,9,8 - LTEXT "X:",65534,378,92,9,8 - LTEXT "Y:",65533,406,92,9,8 - LTEXT "PC:",65532,349,74,13,8 - EDITTEXT IDC_DEBUGGER_VAL_A,359,90,15,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_DEBUGGER_VAL_X,387,90,15,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_DEBUGGER_VAL_Y,415,90,15,12,ES_UPPERCASE | ES_WANTRETURN - EDITTEXT IDC_DEBUGGER_VAL_PC,361,72,27,12,ES_UPPERCASE | ES_WANTRETURN - GROUPBOX "Stack",IDC_DEBUGGER_VAL_S,349,104,81,71,WS_TABSTOP - EDITTEXT IDC_DEBUGGER_STACK_CONTENTS,353,113,73,58,ES_MULTILINE | ES_UPPERCASE | ES_NOHIDESEL | ES_READONLY | WS_VSCROLL - PUSHBUTTON "Seek PC",IDC_DEBUGGER_SEEK_PC,392,71,39,14 - PUSHBUTTON "Seek To:",IDC_DEBUGGER_SEEK_TO,351,54,38,14 - EDITTEXT IDC_DEBUGGER_VAL_PCSEEK,392,55,38,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "PPU:",65531,353,179,17,10 - LTEXT "Sprite:",65530,353,191,20,10 - LTEXT "Scanline:",IDC_STATIC,353,203,31,8 - LTEXT "Pixel:",IDC_STATIC,353,216,17,8 - EDITTEXT IDC_DEBUGGER_VAL_PPU,372,179,25,12,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT - EDITTEXT IDC_DEBUGGER_VAL_SPR,375,191,15,12,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT - EDITTEXT IDC_DEBUGGER_VAL_SLINE,384,203,14,12,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT - EDITTEXT IDC_DEBUGGER_VAL_PPUPIXEL,373,216,14,12,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT - GROUPBOX "",IDC_DEBUGGER_VAL_S2,349,174,51,53,WS_TABSTOP - EDITTEXT IDC_DEBUGGER_VAL_CYCLES_COUNT,443,179,47,12,ES_NOHIDESEL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT - EDITTEXT IDC_DEBUGGER_VAL_CYCLES_COUNT2,492,179,54,12,ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT - EDITTEXT IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT,442,204,47,12,ES_NOHIDESEL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT - EDITTEXT IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT2,491,204,55,12,ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT - CONTROL "",IDC_DEBUGGER_ADDR_LINE,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,4,323,341,11 - CONTROL "Break on Bad Opcodes",IDC_DEBUGGER_BREAK_ON_BAD_OP, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,440,126,94,10 - CONTROL "Symbolic debug",IDC_DEBUGGER_ENABLE_SYMBOLIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,261,62,10 - PUSHBUTTON "Reload Symbols",IDC_DEBUGGER_RELOAD_SYMS,472,283,64,14 - GROUPBOX "Address Bookmarks",45535,349,228,115,88 - LISTBOX LIST_DEBUGGER_BOOKMARKS,353,238,76,73,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - EDITTEXT IDC_DEBUGGER_BOOKMARK,432,238,28,14,ES_AUTOHSCROLL - PUSHBUTTON "Add",IDC_DEBUGGER_BOOKMARK_ADD,431,256,30,14 - PUSHBUTTON "Delete",IDC_DEBUGGER_BOOKMARK_DEL,431,272,30,14 - PUSHBUTTON "Rom Patcher",IDC_DEBUGGER_ROM_PATCHER,472,299,64,14 - PUSHBUTTON "Default window size",IDC_DEBUGGER_RESTORESIZE,348,318,68,14 - PUSHBUTTON "Run Line",IDC_DEBUGGER_RUN_LINE,351,37,38,14 - PUSHBUTTON "128 Lines",IDC_DEBUGGER_RUN_FRAME2,392,37,39,14 - CONTROL ".DEB files",DEBUGLOADDEB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,463,319,42,13 - CONTROL "Auto-open",DEBUGAUTOLOAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,417,319,45,13 - LTEXT "CPU cycles:",IDC_STATIC,403,179,39,8 - PUSHBUTTON "Reset counters",IDC_DEBUGGER_RESET_COUNTERS,470,229,68,14 - CONTROL "Break when exceed",IDC_DEBUGGER_BREAK_ON_CYCLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,405,191,78,10 - EDITTEXT IDC_DEBUGGER_CYCLES_EXCEED,484,190,55,12,ES_UPPERCASE | ES_NOHIDESEL | ES_WANTRETURN | ES_NUMBER - LTEXT "Instructions:",IDC_STATIC,403,204,39,8 - CONTROL "Break when exceed",IDC_DEBUGGER_BREAK_ON_INSTRUCTIONS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,405,216,78,10 - EDITTEXT IDC_DEBUGGER_INSTRUCTIONS_EXCEED,484,215,55,12,ES_UPPERCASE | ES_NOHIDESEL | ES_WANTRETURN | ES_NUMBER - GROUPBOX "",IDC_STATIC,468,241,72,75 - CONTROL "ROM offsets",IDC_DEBUGGER_ROM_OFFSETS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,249,62,10 - PUSHBUTTON "Name",IDC_DEBUGGER_BOOKMARK_NAME,431,288,30,14 - EDITTEXT IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL,4,5,14,317,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED - CONTROL "Register names",IDC_DEBUGGER_PREDEFINED_REGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,272,65,10 - CONTROL "IDA font",DEBUGIDAFONT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,506,319,38,13 -END - -TRACER DIALOGEX 0, 0, 317, 181 -STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -CAPTION "Trace Logger" -FONT 8, "MS Shell Dlg", 400, 0, 0x0 -BEGIN - EDITTEXT IDC_TRACER_LOG,3,3,300,44,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL - SCROLLBAR IDC_SCRL_TRACER_LOG,303,3,11,44,SBS_VERT - CONTROL "Log last",IDC_RADIO_LOG_LAST,"Button",BS_AUTORADIOBUTTON | BS_LEFT,9,53,38,10 - COMBOBOX IDC_TRACER_LOG_SIZE,49,52,46,13,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "lines",IDC_TEXT_LINES_TO_THIS_WINDOW,97,54,20,10 - DEFPUSHBUTTON "Start Logging",IDC_BTN_START_STOP_LOGGING,126,51,65,15,BS_CENTER | BS_VCENTER - CONTROL "Log to File",IDC_RADIO_LOG_TO_FILE,"Button",BS_AUTORADIOBUTTON | BS_LEFT,9,70,46,10 - PUSHBUTTON "Browse...",IDC_BTN_LOG_BROWSE,56,68,39,14,BS_CENTER | BS_VCENTER - CONTROL "Automatically update this window while logging",IDC_CHECK_LOG_UPDATE_WINDOW, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,70,156,10 - GROUPBOX "Log Options",IDC_GROUP_LOG_OPTIONS,3,85,311,65 - CONTROL "Log state of registers",IDC_CHECK_LOG_REGISTERS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,96,99,10 - CONTROL "Log Processor status flags",IDC_CHECK_LOG_PROCESSOR_STATUS, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,96,96,10 - CONTROL "To the left from disassembly",IDC_CHECK_LOG_STATUSES_TO_THE_LEFT, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,211,96,100,10 - CONTROL "Log Frames count",IDC_CHECK_LOG_FRAMES_COUNT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,109,98,10 - CONTROL "Log Cycles count",IDC_CHECK_LOG_CYCLES_COUNT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,109,94,10 - CONTROL "Log Instructions count",IDC_CHECK_LOG_INSTRUCTIONS_COUNT, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,211,109,100,10 - CONTROL "Log emulator messages",IDC_CHECK_LOG_MESSAGES,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,122,97,10 - CONTROL "Log breakpoint hits",IDC_CHECK_LOG_BREAKPOINTS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,122,91,10 - CONTROL "Symbolic trace",IDC_CHECK_SYMBOLIC_TRACING,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,135,96,10 - CONTROL "Use Stack Pointer for code tabbing (nesting visualization)",IDC_CHECK_CODE_TABBING, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,135,196,10 - GROUPBOX "Extra Log Options that work with the Code/Data Logger",IDC_EXTRA_LOG_OPTIONS,3,151,311,26 - CONTROL "Only log newly mapped code",IDC_CHECK_LOG_NEW_INSTRUCTIONS, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,162,102,10 - CONTROL "Only log code that accesses newly mapped data",IDC_CHECK_LOG_NEW_DATA, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,112,162,171,10 - CONTROL "Log Bank number",IDC_CHECK_LOG_BANK_NUMBER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,211,121,100,10 -END - -ADDBP DIALOGEX 66, 83, 197, 125 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Add Breakpoint..." -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - LTEXT "&Address:",-1,14,6,30,10 - EDITTEXT IDC_ADDBP_ADDR_START,48,4,30,12,ES_UPPERCASE | ES_WANTRETURN - CTEXT "-",65534,78,6,8,8 - EDITTEXT IDC_ADDBP_ADDR_END,87,4,30,12,ES_UPPERCASE | ES_WANTRETURN - CONTROL "&Forbid",IDC_ADDBP_MODE_F,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154,6,33,12 - GROUPBOX "",112,3,18,185,50,WS_TABSTOP - CONTROL "&Read",IDC_ADDBP_MODE_R,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,25,35,12 - CONTROL "&Write",IDC_ADDBP_MODE_W,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,49,25,35,12 - CONTROL "&Execute",IDC_ADDBP_MODE_X,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,86,25,40,12 - GROUPBOX "Memory",108,9,39,174,24,WS_TABSTOP - CONTROL "&CPU Mem",IDC_ADDBP_MEM_CPU,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,49,50,10 - CONTROL "&PPU Mem",IDC_ADDBP_MEM_PPU,"Button",BS_AUTORADIOBUTTON,68,49,50,10 - CONTROL "&Sprite Mem",IDC_ADDBP_MEM_SPR,"Button",BS_AUTORADIOBUTTON,124,49,50,10 - LTEXT "C&ondition:",65533,7,74,34,8 - EDITTEXT IDC_ADDBP_CONDITION,43,72,136,14,ES_AUTOHSCROLL - LTEXT "&Name:",65532,8,92,20,8 - EDITTEXT IDC_ADDBP_NAME,43,89,136,14,ES_AUTOHSCROLL - DEFPUSHBUTTON "OK",IDOK,99,110,42,13 - PUSHBUTTON "Cancel",IDCANCEL,147,110,42,13 -END - -NTVIEW DIALOGEX 44, 38, 352, 350 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Name Table Viewer" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "Name Tables",IDC_NTVIEW_TABLE_BOX,2,0,347,251,WS_TABSTOP - LTEXT "Refresh: More",IDC_STATIC,225,254,50,9 - CONTROL "",IDC_NTVIEW_REFRESH_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,275,254,50,11 - LTEXT "Less",IDC_STATIC,325,254,18,10 - LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,249,269,65,9 - EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12,ES_NUMBER - CONTROL "Show Scroll Lines",IDC_NTVIEW_SHOW_SCROLL_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,254,69,10 - CONTROL "Show Attributes",IDC_NTVIEW_SHOW_ATTRIBUTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,265,69,10 - CONTROL "Ignore Palettes",IDC_NTVIEW_HIDE_PALETTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,276,69,10 - GROUPBOX "Current Mirroring",IDC_STATIC,2,289,170,59 - CONTROL "Horizontal",IDC_NTVIEW_MIRROR_HORIZONTAL,"Button",BS_AUTORADIOBUTTON,6,300,47,10 - CONTROL "Vertical",IDC_NTVIEW_MIRROR_VERTICAL,"Button",BS_AUTORADIOBUTTON,6,311,39,10 - CONTROL "Four Screen",IDC_NTVIEW_MIRROR_FOUR_SCREEN,"Button",BS_AUTORADIOBUTTON,6,322,55,10 - CONTROL "Single Screen 0",IDC_NTVIEW_MIRROR_SS_TABLE_0,"Button",BS_AUTORADIOBUTTON,85,300,75,10 - CONTROL "Single Screen 1",IDC_NTVIEW_MIRROR_SS_TABLE_1,"Button",BS_AUTORADIOBUTTON,85,311,75,10 - CONTROL "Single Screen 2",IDC_NTVIEW_MIRROR_SS_TABLE_2,"Button",BS_AUTORADIOBUTTON,85,322,75,10 - CONTROL "Single Screen 3",IDC_NTVIEW_MIRROR_SS_TABLE_3,"Button",BS_AUTORADIOBUTTON,85,333,75,10 - GROUPBOX "Properties",IDC_STATIC,174,289,175,59 - LTEXT "Tile ID:",IDC_NTVIEW_PROPERTIES_LINE_1,184,300,150,10 - LTEXT "X / Y:",IDC_NTVIEW_PROPERTIES_LINE_2,184,311,150,10 - LTEXT "PPU Address:",IDC_NTVIEW_PROPERTIES_LINE_3,184,322,150,10 - LTEXT "Attribute:",IDC_NTVIEW_PROPERTIES_LINE_4,184,333,150,10 -END - -ROMPATCHER DIALOGEX 84, 67, 304, 135 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Rom Data Editor" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - EDITTEXT IDC_ROMPATCHER_CURRENT_DATA,7,47,282,12,ES_READONLY - PUSHBUTTON "Apply",IDC_ROMPATCHER_BTN_APPLY,185,92,54,14 - PUSHBUTTON "Save Rom File...",IDC_ROMPATCHER_BTN_SAVE,4,114,65,14,WS_DISABLED - EDITTEXT IDC_ROMPATCHER_PATCH_DATA,7,93,172,13,ES_AUTOHSCROLL - GROUPBOX "Current Data At Offset",IDC_ROMPATCHER_CURRENT_DATA_BOX,3,36,292,43 - GROUPBOX "Offset",IDC_ROMPATCHER_OFFSET_BOX,4,4,291,27 - EDITTEXT IDC_ROMPATCHER_OFFSET,83,12,47,14,ES_AUTOHSCROLL - CONTROL ".Nes File Address",IDC_ROMPATCHER_DOTNES_OFFSET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,14,71,10 - PUSHBUTTON "Edit This Offset",IDC_ROMPATCHER_BTN_EDIT,135,12,65,14 - LTEXT "Disassembled: ",106,7,63,45,12 - EDITTEXT IDC_ROMPATCHER_DISASSEMBLY,56,62,234,14,ES_AUTOHSCROLL | ES_READONLY - GROUPBOX "Patch Data",108,3,81,292,30 -END - -GGCONV DIALOGEX 84, 67, 186, 146 -STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Game Genie Encoder/Decoder Tool" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "Game Genie Code",-1,107,5,69,42 - EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL - PUSHBUTTON "Add To Cheat List",IDC_BTN_ADD_TO_CHEATS,108,58,68,14,WS_DISABLED - GROUPBOX "Address/Compare/Value",65534,9,5,91,75 - LTEXT "Address:",65533,18,24,35,8 - EDITTEXT IDC_GAME_GENIE_ADDR,50,21,36,14,ES_UPPERCASE | ES_AUTOHSCROLL - LTEXT "Compare:",65532,17,41,37,8 - EDITTEXT IDC_GAME_GENIE_COMP,64,38,22,14,ES_UPPERCASE | ES_AUTOHSCROLL - LTEXT "Value:",65531,18,58,32,8 - EDITTEXT IDC_GAME_GENIE_VAL,64,56,22,14,ES_UPPERCASE | ES_AUTOHSCROLL - GROUPBOX "Possible Affected Rom File Addresses",65530,8,83,169,58 - LISTBOX IDC_LIST_GGADDRESSES,67,95,54,40,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP -END - -MONITOR DIALOGEX 0, 0, 316, 343 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "RAM Filter" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Rules",-1,7,7,295,182 - GROUPBOX "Results",-1,10,193,292,135 - LTEXT "1st rule",-1,16,20,40,8 - LTEXT "2nd rule",-1,16,36,40,8 - LTEXT "3rd rule",-1,16,55,40,8 - LTEXT "4th rule",-1,16,71,40,8 - LTEXT "5th rule",-1,16,89,40,8 - COMBOBOX 3000,66,17,135,85,CBS_DROPDOWNLIST | WS_TABSTOP - COMBOBOX 3001,66,34,135,90,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX 3002,66,50,135,97,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX 3003,66,68,135,101,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - COMBOBOX 3004,66,84,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - EDITTEXT 3010,208,18,26,12,ES_AUTOHSCROLL - EDITTEXT 3011,208,34,26,13,ES_AUTOHSCROLL - EDITTEXT 3012,208,50,26,12,ES_AUTOHSCROLL - EDITTEXT 3013,208,68,26,13,ES_AUTOHSCROLL - EDITTEXT 3014,208,84,26,12,ES_AUTOHSCROLL - PUSHBUTTON "Apply rule",3021,240,34,50,13 - PUSHBUTTON "Apply rule",3022,240,50,50,14 - PUSHBUTTON "Apply rule",3023,240,68,50,14 - PUSHBUTTON "Apply rule",3024,240,84,50,14 - LISTBOX 3100,18,206,272,102,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Apply rule",3020,240,17,50,14 - LTEXT "6th rule",-1,16,105,40,8 - COMBOBOX 3005,66,102,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - EDITTEXT 3015,208,102,26,12,ES_AUTOHSCROLL - PUSHBUTTON "Apply rule",3025,240,102,50,14 - LTEXT "7th rule",-1,16,121,40,8 - COMBOBOX 3006,66,119,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - EDITTEXT 3016,208,119,26,12,ES_AUTOHSCROLL - PUSHBUTTON "Apply rule",3026,240,119,50,14 - LTEXT "9th rule",-1,16,156,40,8 - COMBOBOX 3008,66,153,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - EDITTEXT 3018,208,153,26,12,ES_AUTOHSCROLL - PUSHBUTTON "Apply rule",3028,240,153,50,14 - LTEXT "8th rule",-1,16,140,40,8 - COMBOBOX 3007,66,135,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - EDITTEXT 3017,208,135,26,12,ES_AUTOHSCROLL - PUSHBUTTON "Apply rule",3027,240,135,50,14 - LTEXT "10th rule",-1,16,172,40,8 - COMBOBOX 3009,66,169,135,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - EDITTEXT 3019,208,170,26,12,ES_AUTOHSCROLL - PUSHBUTTON "Apply rule",3029,240,169,50,14 - LTEXT "Number of results:",-1,19,313,60,8 - LTEXT "",3101,90,313,60,8 -END - -MEMVIEWFIND DIALOGEX 0, 0, 282, 81 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Find" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - EDITTEXT IDC_MEMVIEWFIND_WHAT,47,7,171,14,ES_AUTOHSCROLL - LTEXT "Find What:",-1,7,9,38,8 - GROUPBOX "Type",-1,83,29,187,45 - CONTROL "Hex",IDC_MEMVIEWFIND_TYPE_HEX,"Button",BS_AUTORADIOBUTTON | WS_GROUP,93,43,29,10 - CONTROL "Text (Uses Currently Loaded Table as Reference)",IDC_MEMVIEWFIND_TYPE_TEXT, - "Button",BS_AUTORADIOBUTTON,93,56,172,10 - GROUPBOX "Direction",-1,9,29,65,44 - CONTROL "Up",IDC_MEMVIEWFIND_DIR_UP,"Button",BS_AUTORADIOBUTTON | WS_GROUP,18,43,25,10 - CONTROL "Down",IDC_MEMVIEWFIND_DIR_DOWN,"Button",BS_AUTORADIOBUTTON,18,56,35,10 - DEFPUSHBUTTON "Find Next",IDC_MEMVIEWFIND_NEXT,225,7,50,14 -END - -IDD_RECORDINP DIALOGEX 0, 0, 276, 86 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Record input" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",1,167,66,50,14 - GROUPBOX "",65501,3,0,269,60 - RTEXT "File:",65500,28,11,24,10,SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_RIGHT - PUSHBUTTON "Cancel",2,221,66,50,14 - EDITTEXT IDC_EDIT_FILENAME,55,10,189,12,ES_AUTOHSCROLL - PUSHBUTTON "...",IDC_BUTTON_BROWSEFILE,249,10,18,14 - COMBOBOX IDC_COMBO_RECORDFROM,55,25,189,154,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - RTEXT "Record From:",65498,9,27,43,8,0,WS_EX_RIGHT - EDITTEXT IDC_EDIT_AUTHOR,55,41,189,14,ES_AUTOHSCROLL - RTEXT "Author:",65502,18,43,34,10,SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_RIGHT -END - -IDD_REPLAYINP DIALOGEX 0, 0, 300, 202 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Play Movie" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "OK",1,189,183,50,14 - GROUPBOX "",65497,3,0,293,179 - RTEXT "File:",65498,8,11,24,10,SS_CENTERIMAGE | NOT WS_GROUP - COMBOBOX IDC_COMBO_FILENAME,35,10,257,128,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Cancel",2,243,183,50,14 - RTEXT "Length:",64397,10,67,59,8 - RTEXT "Frames:",65496,10,78,59,8 - RTEXT "Record Count:",65495,10,89,59,8 - RTEXT "ROM Used:",65493,10,111,59,8 - RTEXT "ROM Checksum:",65492,10,122,59,8 - RTEXT "Recorded From:",65491,10,100,59,8 - RTEXT "Emulator Used:",65490,10,144,59,8 - RTEXT "Current ROM Sum:",65489,8,133,61,8 - CONTROL "Pause movie at frame",IDC_CHECK_STOPMOVIE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,49,83,10 - EDITTEXT IDC_EDIT_STOPFRAME,103,47,39,12,ES_AUTOHSCROLL | ES_NUMBER - GROUPBOX "Parameters",IDC_STATIC,13,25,278,40 - PUSHBUTTON "Metadata...",IDC_BUTTON_METADATA,239,71,50,14 - EDITTEXT IDC_LABEL_EMULATORUSED,76,144,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - EDITTEXT IDC_LABEL_CURRCHECKSUM,76,133,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - EDITTEXT IDC_LABEL_ROMCHECKSUM,76,122,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - EDITTEXT IDC_LABEL_ROMUSED,76,111,187,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - EDITTEXT IDC_LABEL_RECORDEDFROM,76,100,123,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - CONTROL "Open &Read-Only",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,36,69,10 - EDITTEXT IDC_LABEL_UNDOCOUNT,76,89,59,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - EDITTEXT IDC_LABEL_FRAMES,76,78,59,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - EDITTEXT IDC_LABEL_LENGTH,76,67,59,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - RTEXT "Pal:",65494,10,155,59,8 - EDITTEXT IDC_LABEL_PALUSED,76,155,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP - RTEXT "New PPU:",65499,10,166,59,8 - EDITTEXT IDC_LABEL_NEWPPUUSED,76,166,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP -END - -TASEDITOR DIALOGEX 0, 0, 326, 348 -STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -CAPTION "TAS Editor" -MENU TASEDITORMENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "",IDC_PROGRESS_BUTTON,"Button",BS_OWNERDRAW,200,36,116,12 - CONTROL "",IDC_BRANCHES_BUTTON,"Button",BS_OWNERDRAW,207,167,104,10 - CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER,5,13,187,316 - GROUPBOX " Playback ",IDC_PLAYBACK_BOX,197,0,123,62,BS_CENTER,WS_EX_RIGHT - GROUPBOX " Recorder ",IDC_RECORDER_BOX,197,63,123,46,BS_CENTER,WS_EX_RIGHT - GROUPBOX " Splicer ",IDC_SPLICER_BOX,197,110,123,30,BS_CENTER,WS_EX_RIGHT - GROUPBOX " Lua ",IDC_LUA_BOX,197,141,123,26,BS_CENTER,WS_EX_RIGHT - GROUPBOX " Bookmarks ",IDC_BOOKMARKS_BOX,197,168,123,102,BS_CENTER,WS_EX_RIGHT - GROUPBOX " History ",IDC_HISTORY_BOX,197,271,123,53,BS_CENTER,WS_EX_RIGHT - PUSHBUTTON "<<",TASEDITOR_REWIND_FULL,201,9,23,14,NOT WS_TABSTOP - PUSHBUTTON "<",TASEDITOR_REWIND,224,9,23,14,NOT WS_TABSTOP - PUSHBUTTON "||",TASEDITOR_PLAYSTOP,247,9,23,14,NOT WS_TABSTOP - PUSHBUTTON ">",TASEDITOR_FORWARD,270,9,23,14,NOT WS_TABSTOP - PUSHBUTTON ">>",TASEDITOR_FORWARD_FULL,293,9,23,14,NOT WS_TABSTOP - CONTROL "",IDC_PROGRESS1,"msctls_progress32",PBS_SMOOTH | WS_BORDER,201,39,115,6 - CONTROL " Follow cursor",CHECK_FOLLOW_CURSOR,"Button",BS_AUTOCHECKBOX,203,25,56,12 - CONTROL " Auto-restore last position",CHECK_AUTORESTORE_PLAYBACK, - "Button",BS_AUTOCHECKBOX,203,48,109,12 - CONTROL "",IDC_BOOKMARKSLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSCROLL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | NOT WS_VISIBLE | WS_BORDER,202,177,113,89 - CONTROL "",IDC_HISTORYLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOLABELWRAP | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER,202,280,113,40 - CONTROL " All",IDC_RADIO_ALL,"Button",BS_AUTORADIOBUTTON,291,71,24,10 - CONTROL " 1P",IDC_RADIO_1P,"Button",BS_AUTORADIOBUTTON,203,83,25,10 - CONTROL " 2P",IDC_RADIO_2P,"Button",BS_AUTORADIOBUTTON,232,83,25,10 - CONTROL " 3P",IDC_RADIO_3P,"Button",BS_AUTORADIOBUTTON,262,83,24,10 - CONTROL " 4P",IDC_RADIO_4P,"Button",BS_AUTORADIOBUTTON,291,83,24,10 - CONTROL " Superimpose",IDC_SUPERIMPOSE,"Button",BS_AUTO3STATE,203,96,55,10 - PUSHBUTTON "<<",TASEDITOR_PREV_MARKER,202,328,23,14,NOT WS_TABSTOP - PUSHBUTTON "Similar",TASEDITOR_FIND_BEST_SIMILAR_MARKER,225,328,34,14,NOT WS_TABSTOP - PUSHBUTTON "More",TASEDITOR_FIND_NEXT_SIMILAR_MARKER,259,328,34,14,NOT WS_TABSTOP - PUSHBUTTON ">>",TASEDITOR_NEXT_MARKER,292,328,23,14,NOT WS_TABSTOP - EDITTEXT IDC_PLAYBACK_MARKER_EDIT,65,0,127,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - RTEXT "Marker 0",IDC_PLAYBACK_MARKER,3,2,60,10,SS_NOTIFY,WS_EX_RIGHT - EDITTEXT IDC_SELECTION_MARKER_EDIT,65,329,127,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - RTEXT "Marker 99999",IDC_SELECTION_MARKER,3,331,60,10,SS_NOTIFY,WS_EX_RIGHT - CONTROL "",IDC_BRANCHES_BITMAP,"Static",SS_OWNERDRAW | SS_NOTIFY | SS_REALSIZEIMAGE | NOT WS_VISIBLE,202,177,113,89 - CONTROL " Turbo seek",CHECK_TURBO_SEEK,"Button",BS_AUTOCHECKBOX,263,25,50,12 - LTEXT "Selection: 0 rows, 16 columns",IDC_TEXT_SELECTION,204,118,112,10,SS_NOTIFY - LTEXT "Clipboard: 0 rows, 16 columns",IDC_TEXT_CLIPBOARD,203,128,114,10,SS_NOTIFY - CONTROL " Recording",IDC_RECORDING,"Button",BS_AUTO3STATE,203,71,81,10 - PUSHBUTTON "Run function",TASEDITOR_RUN_MANUAL,202,150,54,14,WS_DISABLED | NOT WS_TABSTOP - CONTROL "Auto function",IDC_RUN_AUTO,"Button",BS_AUTOCHECKBOX,261,152,55,10 - CONTROL " Use pattern",IDC_USEPATTERN,"Button",BS_AUTOCHECKBOX,262,96,53,10 -END - -IDD_TASEDITOR_ABOUT DIALOGEX 0, 0, 238, 78 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "About" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDCANCEL,94,55,50,14 - ICON IDI_ICON4,IDC_STATIC,11,11,20,20 - LTEXT "TAS Editor",IDC_TASEDITOR_NAME,43,8,84,13 - LTEXT "Version 1.01",IDC_STATIC,60,25,45,8 - LTEXT "Created by AnS",IDC_STATIC,138,12,58,8 - LTEXT "Originated from TASEdit",IDC_STATIC,138,25,85,9,SS_NOPREFIX - LTEXT "made by zeromus & adelikat",IDC_STATIC,138,35,96,9,SS_NOPREFIX -END - -IDD_TASEDITOR_NEWPROJECT DIALOGEX 0, 0, 171, 100 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Create New Project" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,7,80,50,14 - PUSHBUTTON "Cancel",IDCANCEL,114,80,50,14 - CONTROL " Copy current Input",IDC_COPY_INPUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,80,14,75,10 - CONTROL " 1 player",IDC_RADIO_1PLAYER,"Button",BS_AUTORADIOBUTTON,16,14,45,10 - CONTROL " 2 players",IDC_RADIO_2PLAYERS,"Button",BS_AUTORADIOBUTTON,16,27,45,10 - CONTROL " Fourscore",IDC_RADIO_FOURSCORE,"Button",BS_AUTORADIOBUTTON,16,40,45,10 - CONTROL " Copy current Markers",IDC_COPY_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,80,27,83,10 - GROUPBOX "Input type",IDC_STATIC,5,3,67,52,BS_CENTER - EDITTEXT IDC_EDIT_AUTHOR,36,61,127,13,ES_AUTOHSCROLL - LTEXT "Author:",IDC_STATIC,8,63,26,9 -END - -IDD_TASEDITOR_EXPORT DIALOGEX 0, 0, 158, 86 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Export to FM2" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "Export",IDOK,7,66,50,14 - PUSHBUTTON "Cancel",IDCANCEL,100,66,50,14 - CONTROL " 1 player",IDC_RADIO_1PLAYER,"Button",BS_AUTORADIOBUTTON | WS_GROUP,8,8,47,10 - CONTROL " 2 players",IDC_RADIO_2PLAYERS,"Button",BS_AUTORADIOBUTTON,8,21,47,10 - CONTROL " Fourscore",IDC_RADIO_FOURSCORE,"Button",BS_AUTORADIOBUTTON,8,35,47,10 - CONTROL " Convert Marker Notes to Movie Subtitles",IDC_NOTES_TO_SUBTITLES, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,50,146,10 -END - -IDD_TASEDITOR_FINDNOTE DIALOGEX 0, 0, 228, 49 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Find Note" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "Find next",IDOK,171,5,51,14 - PUSHBUTTON "Close",IDCANCEL,171,23,51,14 - EDITTEXT IDC_NOTE_TO_FIND,6,6,160,12,ES_AUTOHSCROLL - CONTROL " Match case",IDC_MATCH_CASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,23,53,10 - GROUPBOX "Direction",IDC_STATIC,82,20,83,24,BS_CENTER - CONTROL " Up",IDC_RADIO_UP,"Button",BS_AUTORADIOBUTTON | WS_GROUP,90,30,29,10 - CONTROL " Down",IDC_RADIO_DOWN,"Button",BS_AUTORADIOBUTTON,125,30,32,10 -END - -IDD_TASEDITOR_SAVECOMPACT DIALOGEX 0, 0, 123, 197 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Save Compact" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "Save",IDOK,8,176,50,14 - PUSHBUTTON "Cancel",IDCANCEL,66,176,50,14 - CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,8,89,10 - CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,23,67,10 - CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,38,67,10 - CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,53,67,10 - CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,68,67,10 - CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,83,67,10 - GROUPBOX "Greenzone saving options",IDC_STATIC,13,98,97,72 - CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, - "Button",BS_AUTORADIOBUTTON,23,109,77,10 - CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, - "Button",BS_AUTORADIOBUTTON,23,124,77,10 - CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, - "Button",BS_AUTORADIOBUTTON,23,139,77,10 - CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, - "Button",BS_AUTORADIOBUTTON,23,154,77,10 -END - -ASSEMBLER DIALOGEX 0, 0, 202, 135 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Inline Assembler" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - EDITTEXT IDC_ASSEMBLER_DISASSEMBLY,23,9,171,12,ES_READONLY - COMBOBOX IDC_ASSEMBLER_HISTORY,7,25,188,54,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "Apply",IDC_ASSEMBLER_APPLY,159,114,36,14 - LTEXT "PC:",-1,8,11,12,8 - LTEXT "Patch:",-1,8,41,22,8 - PUSHBUTTON "Save...",IDC_ASSEMBLER_SAVE,117,114,36,14 - PUSHBUTTON "Undo",IDC_ASSEMBLER_UNDO,6,114,36,14 - DEFPUSHBUTTON "Define",IDC_ASSEMBLER_DEFPUSHBUTTON,46,114,36,14,NOT WS_VISIBLE - LISTBOX IDC_ASSEMBLER_PATCH_DISASM,7,50,188,59,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | LBS_NOSEL | WS_VSCROLL | WS_TABSTOP -END - -NAMEBOOKMARKDLG DIALOGEX 0, 0, 186, 73 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Bookmark name" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - LTEXT "Bookmark name",IDC_BOOKMARK_NAME_TEXT,68,14,58,8 - EDITTEXT IDC_BOOKMARK_DESCRIPTION,7,28,172,14,ES_AUTOHSCROLL - DEFPUSHBUTTON "&OK",IDOK,67,52,50,14 -END - -CDLOGGER DIALOGEX 0, 0, 307, 254 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Code Data Logger" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - PUSHBUTTON "Load...",BTN_CDLOGGER_LOAD,7,122,50,14 - PUSHBUTTON "Save",BTN_CDLOGGER_SAVE,249,105,50,14 - GROUPBOX "Code/Data Log Status",-1,3,5,300,195,BS_CENTER - DEFPUSHBUTTON "Start",BTN_CDLOGGER_START_PAUSE,127,105,50,14 - GROUPBOX "Address Label Logger",65534,3,201,300,49,BS_CENTER - PUSHBUTTON "Load...",111,7,231,50,14,WS_DISABLED - PUSHBUTTON "Start",112,127,231,50,14,WS_DISABLED - PUSHBUTTON "Save...",113,249,231,50,14,WS_DISABLED - LTEXT "4067 - 29.5%",LBL_CDLOGGER_CODECOUNT,34,27,72,11 - GROUPBOX "PRG Logged as Code",65533,25,16,84,27 - GROUPBOX "PRG Logged as Data",65532,113,16,84,27 - LTEXT "7092 - 37.2%",LBL_CDLOGGER_DATACOUNT,122,27,71,9 - GROUPBOX "PRG not Logged",65531,201,16,79,27 - LTEXT "6072 - 32.7%",LBL_CDLOGGER_UNDEFCOUNT,210,27,66,8 - LTEXT "Itsa me, the Code/Data Logger! Press Start to play!",65530,67,78,172,11 - PUSHBUTTON "Reset Log",BTN_CDLOGGER_RESET,7,105,50,14 - PUSHBUTTON "Save as...",BTN_CDLOGGER_SAVE_AS,250,122,50,14 - PUSHBUTTON "Save Stripped Data...",BTN_CDLOGGER_SAVE_STRIPPED,196,155,90,14 - PUSHBUTTON "Save Unused Data...",BTN_CDLOGGER_SAVE_UNUSED,196,172,90,14 - LTEXT "4067 - 29.5%",LBL_CDLOGGER_RENDERCOUNT,34,56,72,11 - GROUPBOX "CHR Rendered",ID_CHR1,25,45,84,27 - GROUPBOX "CHR Logged as Data",ID_CHR2,113,45,84,27 - LTEXT "7092 - 37.2%",LBL_CDLOGGER_VROMREADCOUNT,122,56,71,9 - GROUPBOX "CHR not Logged",ID_CHR3,201,45,79,27 - LTEXT "6072 - 32.7%",LBL_CDLOGGER_UNDEFVROMCOUNT,210,56,66,9 - LTEXT "CDL file:",ID_STATIC,12,92,29,11 - LTEXT "",ID_CDLFILENAME,43,92,252,11,SS_PATHELLIPSIS - CONTROL " Auto-resume logging when loading ROMs",IDC_AUTORESUMECDLOGGING, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,179,153,11 - CONTROL " Auto-save .CDL when closing ROMs",IDC_AUTOSAVECDL, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,153,143,11 - CONTROL " Auto-load .CDL when opening this window",IDC_AUTOLOADCDL, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,166,154,11 - GROUPBOX "Generate ROM",65529,183,142,116,52 - GROUPBOX "Logging workflow options",65528,8,142,171,52 -END - -PPUVIEW DIALOGEX 44, 38, 353, 234 -STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "PPU Viewer" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "Pattern Tables",GRP_PPUVIEW_TABLES,2,-1,348,185,WS_TABSTOP - LTEXT "Tile:",LBL_PPUVIEW_TILE1,6,138,50,9 - LTEXT "Tile:",LBL_PPUVIEW_TILE2,178,138,50,9 - LTEXT "Refresh: More",-1,230,151,50,9 - CONTROL "",CTL_PPUVIEW_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,280,151,50,11 - LTEXT "Less",-1,330,151,18,10 - LTEXT "Display on scanline:",-1,253,166,65,9 - EDITTEXT IDC_PPUVIEW_SCANLINE,315,164,27,12,ES_NUMBER - CONTROL "Sprites 8x16 mode",IDC_SPRITE16_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,151,160,10 - CONTROL "Mask unused graphics (Code/Data Logger)",IDC_MASK_UNUSED_GRAPHICS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,162,160,10 - CONTROL "Invert the mask (Code/Data Logger)",IDC_INVERT_THE_MASK, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,173,160,10 - GROUPBOX "Palettes",LBL_PPUVIEW_PALETTES,2,185,348,46,WS_TABSTOP -END - -ARCHIVECHOOSERDIALOG DIALOGEX 0, 0, 265, 159 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Choose File From Archive" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,146,138,50,14 - PUSHBUTTON "Cancel",IDCANCEL,208,138,50,14 - LISTBOX IDC_LIST1,7,7,251,120,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP -END - -TEXTHOOKER DIALOGEX 0, 0, 456, 327 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -EXSTYLE WS_EX_ACCEPTFILES -CAPTION "Text Hooker" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Selection Window",1,0,0,183,164,0,WS_EX_NOPARENTNOTIFY - EDITTEXT 102,207,13,216,94,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | NOT WS_BORDER | WS_VSCROLL,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE - GROUPBOX "Hooked Text",103,200,0,229,131,0,WS_EX_NOPARENTNOTIFY - PUSHBUTTON "Load Table",104,3,169,60,14,0,WS_EX_NOPARENTNOTIFY - PUSHBUTTON "Clear Selection",105,67,169,60,14,0,WS_EX_NOPARENTNOTIFY - PUSHBUTTON "Pause",106,67,190,60,14,0,WS_EX_NOPARENTNOTIFY - PUSHBUTTON "Snap",107,130,169,60,35,0,WS_EX_NOPARENTNOTIFY - PUSHBUTTON "Clear Buffer",108,208,111,60,14,0,WS_EX_NOPARENTNOTIFY - EDITTEXT 111,5,249,115,14,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE - PUSHBUTTON "Save Selection",112,130,249,60,14,0,WS_EX_NOPARENTNOTIFY - PUSHBUTTON "Save Table",113,3,190,60,14,0,WS_EX_NOPARENTNOTIFY - PUSHBUTTON "Load Selection",114,130,268,60,14,0,WS_EX_NOPARENTNOTIFY - GROUPBOX "Translated Text",115,200,140,229,117,0,WS_EX_NOPARENTNOTIFY - EDITTEXT 116,207,156,214,95,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | NOT WS_BORDER | WS_VSCROLL,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE - PUSHBUTTON "Excite.co.jp",117,281,111,60,14,0,WS_EX_NOPARENTNOTIFY - LTEXT "Scanline:",118,5,210,50,8,0,WS_EX_NOPARENTNOTIFY - LTEXT "Update every x frames:",119,68,210,79,8,0,WS_EX_NOPARENTNOTIFY - EDITTEXT 120,5,220,52,14,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE - EDITTEXT 121,68,220,52,14,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE - PUSHBUTTON "Trim",122,351,111,60,14 - COMBOBOX 109,5,269,115,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Japanese:",-1,5,283,47,9 - EDITTEXT 131,5,292,115,14,ES_AUTOHSCROLL - LTEXT "English:",-1,130,283,47,9 - EDITTEXT 132,130,292,115,14,ES_AUTOHSCROLL - PUSHBUTTON "Add Definition",133,253,292,60,14 - CONTROL "Selection Window",341,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,324,261,80,9 - CONTROL "Word Substitution",342,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,324,274,80,9 - LTEXT "(han)dakuten mark position:",-1,324,286,92,8 - CONTROL "Above",343,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,324,297,37,10 - CONTROL "Right",344,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,363,297,33,10 - LTEXT "New Selection Name:",-1,5,240,68,8 -END - -CHEATCONSOLE DIALOGEX 0, 0, 387, 226 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Cheat Search" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "Active Cheats",IDC_GROUPBOX_CHEATLIST,5,2,169,219,WS_TABSTOP - CONTROL "Enable cheats",IDC_CHEAT_GLOBAL_SWITCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,12,58,10 - CONTROL "Auto load / save with game",IDC_CHEAT_AUTOLOADSAVE, - "Button",BS_AUTO3STATE | WS_TABSTOP,71,12,100,10 - CONTROL "",IDC_LIST_CHEATS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,11,24,157,133 - LTEXT "Name:",IDC_STATIC,12,162,22,10 - EDITTEXT IDC_CHEAT_NAME,37,160,131,12,ES_AUTOHSCROLL | ES_WANTRETURN - LTEXT "Address:",IDC_CHEAT_ADDRESS_LABEL,12,176,30,8 - EDITTEXT IDC_CHEAT_ADDR,44,174,25,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Value:",IDC_CHEAT_VAL_LABEL,73,176,22,8 - EDITTEXT IDC_CHEAT_VAL,97,174,16,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Compare:",IDC_CHEAT_COM_LABEL,117,176,34,8 - EDITTEXT IDC_CHEAT_COM,152,174,16,12,ES_UPPERCASE | ES_WANTRETURN - LTEXT "Cheat Code:",IDC_CHEAT_CODE_LABEL,12,190,42,8 - EDITTEXT IDC_CHEAT_TEXT,55,188,47,12,ES_UPPERCASE | ES_AUTOHSCROLL - LTEXT "GG:",IDC_GAME_GENIE_LABEL,106,191,13,8 - EDITTEXT IDC_CHEAT_GAME_GENIE_TEXT,120,188,47,12,ES_UPPERCASE | ES_AUTOHSCROLL - DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,7,202,30,16 - PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,37,202,30,16 - PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,67,202,30,16 - PUSHBUTTON "Import...",IDC_BTN_CHEAT_ADDFROMFILE,100,202,36,16 - PUSHBUTTON "Export...",IDC_BTN_CHEAT_EXPORTTOFILE,136,202,36,16 - GROUPBOX "Cheat Search",IDC_GROUPBOX_CHEATSEARCH,180,2,201,206,WS_TABSTOP - PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,192,12,55,15 - PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,192,36,55,15 - LTEXT "0x",IDC_CHEAT_LABEL_KNOWN,217,55,9,8 - EDITTEXT IDC_CHEAT_VAL_KNOWN,228,53,18,12,ES_UPPERCASE - GROUPBOX "Previous Compare",IDC_GROUP_PREV_COM,185,68,69,135 - PUSHBUTTON "Equal",IDC_BTN_CHEAT_EQ,192,79,55,15,WS_GROUP - PUSHBUTTON "Not Equal",IDC_BTN_CHEAT_NE,192,99,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_NE_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,117,22,10 - EDITTEXT IDC_CHEAT_VAL_NE_BY,228,116,18,12,ES_UPPERCASE | ES_WANTRETURN - PUSHBUTTON "Greater Than",IDC_BTN_CHEAT_GT,192,134,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_GT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,152,22,10 - EDITTEXT IDC_CHEAT_VAL_GT_BY,228,151,18,12,ES_UPPERCASE | ES_WANTRETURN - PUSHBUTTON "Less Than",IDC_BTN_CHEAT_LT,192,169,55,15 - CONTROL "By:",IDC_CHEAT_CHECK_LT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,187,22,10 - EDITTEXT IDC_CHEAT_VAL_LT_BY,228,186,18,12,ES_UPPERCASE | ES_WANTRETURN - GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,258,8,117,195,WS_TABSTOP - CONTROL "",IDC_CHEAT_LIST_POSSIBILITIES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,264,18,106,179 - CONTROL "Pause emulation when this window is active",IDC_CHEAT_PAUSEWHENACTIVE, - "Button",BS_AUTOCHECKBOX,180,211,157,10 -END - -IDD_LUA DIALOGEX 0, 0, 270, 150 -STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME -EXSTYLE WS_EX_APPWINDOW -CAPTION "Lua Script" -MENU LUAWINDOW_MENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - PUSHBUTTON "&Browse...",IDC_BUTTON_LUABROWSE,7,31,48,16 - PUSHBUTTON "&Run",IDC_BUTTON_LUARUN,213,31,50,16 - PUSHBUTTON "&Stop",IDC_BUTTON_LUASTOP,160,31,50,16 - EDITTEXT IDC_EDIT_LUAPATH,7,16,256,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_LUAARGS,47,50,216,14,ES_AUTOHSCROLL - EDITTEXT IDC_LUACONSOLE,7,80,256,60,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL - LTEXT "Output Console:",IDC_STATIC,7,70,56,8 - LTEXT "Script File:",IDC_STATIC,7,7,36,8 - LTEXT "Arguments:",IDC_STATIC,7,52,40,8 - PUSHBUTTON "Edit",IDC_BUTTON_LUAEDIT,58,31,46,16 -END - -VIDEOCONFIG DIALOGEX 65520, 76, 511, 170 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Video Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - GROUPBOX "Full Screen Settings",65453,5,3,171,141,WS_GROUP - CONTROL "Full Screen (Alt + Enter or double-click)",IDC_VIDEOCONFIG_FS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,15,157,12 - CONTROL "Enter full screen mode after game is loaded",IDC_VIDEOCONFIG_AUTO_FS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,29,154,12 - LTEXT "Sync method:",65452,11,108,46,10 - COMBOBOX IDC_VIDEOCONFIG_SYNC_METHOD_FS,59,106,105,50,CBS_DROPDOWNLIST | WS_TABSTOP - LTEXT "Mode:",13,11,67,23,9 - EDITTEXT IDC_VIDEOCONFIG_XRES,36,65,27,13,ES_RIGHT | ES_NUMBER - LTEXT "by",12,67,67,11,9 - EDITTEXT IDC_VIDEOCONFIG_YRES,79,65,27,13,ES_RIGHT | ES_NUMBER - LTEXT "@",11,110,67,11,9 - COMBOBOX IDC_VIDEOCONFIG_BPP,122,65,32,12,CBS_DROPDOWNLIST | WS_TABSTOP - LTEXT "bpp",10,157,67,14,9 - LTEXT "Special Filter:",65444,11,91,46,9 - COMBOBOX IDC_VIDEOCONFIG_SCALER_FS,59,89,105,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Windowed Settings",65441,182,3,164,141,WS_GROUP - LTEXT "Size Multiplier:",65440,190,22,50,8 - CTEXT "X:",65439,253,10,26,8 - CTEXT "Y:",65438,304,10,26,8 - EDITTEXT IDC_WINSIZE_MUL_X,244,20,44,12,ES_AUTOHSCROLL - EDITTEXT IDC_WINSIZE_MUL_Y,295,20,44,12,ES_AUTOHSCROLL - CONTROL "Force integral scaling factors",IDC_FORCE_INT_VIDEO_SCALARS, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,50,136,12 - CONTROL "Force aspect ratio correction",IDC_FORCE_ASPECT_CORRECTION, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,64,136,12 - LTEXT "Special Filter:",65429,188,91,46,9 - COMBOBOX IDC_VIDEOCONFIG_SCALER_WIN,236,89,103,47,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - LTEXT "Sync method:",65437,188,108,46,9 - COMBOBOX IDC_VIDEOCONFIG_SYNC_METHOD_WIN,236,106,103,47,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Drawing Area",65494,351,50,154,65,WS_GROUP - LTEXT "First line:",65436,367,68,40,9 - LTEXT "Last line:",65435,367,84,40,9 - CTEXT "NTSC",65434,413,57,27,8 - CTEXT "PAL/Dendy",65433,455,57,48,8 - EDITTEXT IDC_SCANLINE_FIRST_NTSC,414,66,27,12,ES_RIGHT | ES_NUMBER - EDITTEXT IDC_SCANLINE_LAST_NTSC,414,83,27,12,ES_RIGHT | ES_NUMBER - EDITTEXT IDC_SCANLINE_FIRST_PAL,465,66,27,12,ES_RIGHT | ES_NUMBER - EDITTEXT IDC_SCANLINE_LAST_PAL,465,83,27,12,ES_RIGHT | ES_NUMBER - CONTROL "Clip left and right sides (8 px on each)",IDC_VIDEOCONFIG_CLIPSIDES, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,98,140,12 - DEFPUSHBUTTON "Close",ID_CANCEL,449,150,56,14 - CONTROL "Allow more than 8 sprites per scanline",IDC_VIDEOCONFIG_NO8LIM, - "Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,128,138,11 - GROUPBOX "Emulation",65430,351,117,154,27,WS_GROUP - CONTROL "Best Fit",IDC_VIDEOCONFIG_BESTFIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,14,41,12 - CONTROL "Hide mouse cursor",IDC_VIDEOCONFIG_HIDEMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,43,87,12 - GROUPBOX "Aspect ratio",65495,351,3,154,45,WS_GROUP - CONTROL "BG color",IDC_VIDEOCONFIG_CONSOLE_BGCOLOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,401,14,44,12 - CONTROL "TV Aspect",IDC_VIDEOCONFIG_TVASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,29,48,12 - GROUPBOX "When resizing the window",65431,188,38,152,43,WS_GROUP - CONTROL "Square pixels",IDC_VIDEOCONFIG_SQUARE_PIXELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,448,14,55,12 - EDITTEXT IDC_TVASPECT_X,407,28,41,12,ES_AUTOHSCROLL | WS_DISABLED - EDITTEXT IDC_TVASPECT_Y,458,28,41,12,ES_AUTOHSCROLL | WS_DISABLED - CTEXT "/",IDC_STATIC_SLASHTEXT,449,31,8,8,WS_DISABLED - LTEXT "DirectDraw:",65454,11,126,46,10 - LTEXT "DirectDraw:",65455,188,125,46,10 - COMBOBOX IDC_VIDEOCONFIG_DIRECTDRAW_FS,59,123,105,50,CBS_DROPDOWNLIST | WS_TABSTOP - COMBOBOX IDC_VIDEOCONFIG_DIRECTDRAW_WIN,236,123,103,47,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -END - -IDD_RAMSEARCH DIALOGEX 0, 0, 287, 292 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION " RAM Search" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "",IDC_RAMLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,9,9,214,151,WS_EX_CLIENTEDGE - PUSHBUTTON "&Search",IDC_C_SEARCH,226,9,52,16 - PUSHBUTTON "&Add Cheat",IDC_C_ADDCHEAT,226,130,52,14,WS_DISABLED - PUSHBUTTON "&Watch",IDC_C_WATCH,226,114,52,14 - PUSHBUTTON "&Reset",IDC_C_RESET,226,27,52,16 - PUSHBUTTON "&Eliminate",IDC_C_ELIMINATE,226,98,52,14 - GROUPBOX "Comparison Operator",IDC_STATIC,10,166,102,120,0,WS_EX_TRANSPARENT - CONTROL "Less Than",IDC_LESSTHAN,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,178,95,11 - CONTROL "Greater Than",IDC_MORETHAN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,191,95,11 - CONTROL "Less Than or Equal To",IDC_NOMORETHAN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,204,95,11 - CONTROL "Greater Than or Equal To",IDC_NOLESSTHAN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,217,95,11 - CONTROL "Equal To",IDC_EQUALTO,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,230,95,11 - CONTROL "Not Equal To",IDC_DIFFERENTFROM,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,243,95,11 - CONTROL "Different By:",IDC_DIFFERENTBY,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,256,52,11 - CONTROL "Modulo",IDC_MODULO,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,269,35,11 - EDITTEXT IDC_EDIT_DIFFBY,69,255,38,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED - EDITTEXT IDC_EDIT_MODBY,51,267,38,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED - GROUPBOX "Compare To / By",IDC_STATIC,118,166,153,60,0,WS_EX_TRANSPARENT - CONTROL "Previous Value",IDC_PREVIOUSVALUE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,121,176,67,10 - CONTROL "Specific Value:",IDC_SPECIFICVALUE,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,188,67,10 - CONTROL "Specific Address:",IDC_SPECIFICADDRESS,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,200,67,10 - CONTROL "Number of Changes:",IDC_NUMBEROFCHANGES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,212,76,10 - EDITTEXT IDC_EDIT_COMPAREVALUE,203,187,63,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED - EDITTEXT IDC_EDIT_COMPAREADDRESS,203,199,63,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED - EDITTEXT IDC_EDIT_COMPARECHANGES,203,211,63,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED - GROUPBOX "Data Type / Display",IDC_STATIC,196,228,75,45,0,WS_EX_TRANSPARENT - CONTROL "Signed",IDC_SIGNED,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,200,238,67,9 - CONTROL "Unsigned",IDC_UNSIGNED,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,200,249,67,9 - CONTROL "Hexadecimal",IDC_HEX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,200,260,67,9 - CONTROL "Autosearch",IDC_C_AUTOSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,275,57,11 - GROUPBOX "Data Size",IDC_STATIC,117,228,73,58,0,WS_EX_TRANSPARENT - CONTROL "1 byte",IDC_1_BYTE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,121,238,61,11 - CONTROL "2 bytes",IDC_2_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,249,61,11 - CONTROL "4 bytes",IDC_4_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,260,61,11 - CONTROL "Check Misaligned",IDC_MISALIGN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,273,65,8 - PUSHBUTTON "&Clear Change Counts",IDC_C_RESET_CHANGES,226,45,52,20,BS_MULTILINE - PUSHBUTTON "&Undo",IDC_C_UNDO,226,67,52,16,WS_DISABLED - LTEXT "Is",IDC_STATIC,92,270,12,8 - CONTROL "Search ROM",IDC_C_SEARCHROM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,227,85,54,11 - PUSHBUTTON "&Hex Editor",IDC_C_HEXEDITOR,226,146,52,14 -END - -IDD_RAMWATCH DIALOGEX 0, 0, 269, 298 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "RAM Watch" -MENU RAMWATCH_MENU -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CONTROL "",IDC_WATCHLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,9,9,210,279,WS_EX_CLIENTEDGE - PUSHBUTTON "Edit",IDC_C_WATCH_EDIT,226,66,34,14 - PUSHBUTTON "Remove",IDC_C_WATCH_REMOVE,226,83,34,14 - PUSHBUTTON "New",IDC_C_WATCH,226,100,34,14 - PUSHBUTTON "Duplicate",IDC_C_WATCH_DUPLICATE,226,117,34,14 - PUSHBUTTON "Add Cheat",IDC_C_ADDCHEAT,223,168,42,16,WS_DISABLED - GROUPBOX "Watches",IDC_STATIC,222,11,42,145 - CONTROL "",ID_WATCHES_UPDOWN,"msctls_updown32",WS_TABSTOP,232,23,19,36 - PUSHBUTTON "Separator",IDC_C_WATCH_SEPARATE,225,137,36,14 -END - -IDD_EDITWATCH DIALOGEX 0, 0, 181, 125 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION " Edit Watch" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - CTEXT "&Address:",IDC_SPECIFICADDRESS,15,12,30,8 - EDITTEXT IDC_EDIT_COMPAREADDRESS,48,10,65,12,ES_UPPERCASE | ES_AUTOHSCROLL - CTEXT "&Notes:",IDC_PROMPT_TEXT,23,24,22,8 - EDITTEXT IDC_PROMPT_EDIT,48,22,119,12,ES_AUTOHSCROLL - GROUPBOX "Data Type",IDC_DATATYPE_GROUPBOX,14,37,75,51,0,WS_EX_TRANSPARENT - CONTROL "&Signed",IDC_SIGNED,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,18,47,67,9 - CONTROL "&Unsigned",IDC_UNSIGNED,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,57,67,9 - CONTROL "&Hexadecimal",IDC_HEX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,67,67,9 - CONTROL "&Binary", IDC_BINARY, "Button", BS_AUTORADIOBUTTON | WS_TABSTOP, 18, 77, 67, 9 - GROUPBOX "Data Size",IDC_DATASIZE_GROUPBOX,94,37,73,42,0,WS_EX_TRANSPARENT - CONTROL "&1 byte",IDC_1_BYTE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,98,47,61,11 - CONTROL "&2 bytes",IDC_2_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,57,61,11 - CONTROL "&4 bytes",IDC_4_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,67,61,11 - DEFPUSHBUTTON "&OK",IDOK,66,90,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,120,90,50,147 -END - -DLG_SNESPAD DIALOGEX 4, 109, 243, 121 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Gamepad Configuration" -FONT 8, "MS Shell Dlg", 0, 0, 0x0 -BEGIN - DEFPUSHBUTTON "Close",BTN_CLOSE,177,97,56,14 - GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP - PUSHBUTTON "Up",304,35,36,24,12 - PUSHBUTTON "Left",306,9,54,25,12 - PUSHBUTTON "Right",307,60,54,24,12 - PUSHBUTTON "Down",305,35,73,24,12 - PUSHBUTTON "Select",302,91,54,26,12 - PUSHBUTTON "Start",303,126,54,26,12 - PUSHBUTTON "Y",301,164,53,16,12 - PUSHBUTTON "B",300,181,66,16,12 - PUSHBUTTON "A",308,199,53,16,12 - PUSHBUTTON "X",309,181,40,16,12 - PUSHBUTTON "L",310,10,19,32,12 - PUSHBUTTON "R",311,198,19,32,12 -END - -IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Project file saving options" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,109,187,50,14 - PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14 - CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10 - CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10 - CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10 - CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10 - CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10 - CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10 - GROUPBOX "File contents",IDC_STATIC,105,4,111,177 - GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 - CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, - "Button",BS_AUTORADIOBUTTON,122,117,77,10 - CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, - "Button",BS_AUTORADIOBUTTON,122,131,77,10 - CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, - "Button",BS_AUTORADIOBUTTON,122,145,77,10 - CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, - "Button",BS_AUTORADIOBUTTON,122,159,77,10 - CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10 - CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10 - LTEXT "every",IDC_AUTOSAVE_PERIOD_EVERY_TEXT,14,32,21,8 - EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER - LTEXT "minutes",IDC_AUTOSAVE_PERIOD_MINUTES_TEXT,64,32,28,8 - GROUPBOX "Settings",IDC_STATIC,6,4,91,177 -END - -IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Symbolic Debug Naming" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "OK",IDOK,132,62,50,14 - PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14 - LTEXT "File",IDC_STATIC,7,7,15,9 - EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP - LTEXT "Address",IDC_STATIC,6,26,30,10 - EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL - LTEXT "Name",IDC_STATIC,83,26,22,10 - LTEXT "Comment",IDC_STATIC,6,45,37,10 - EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL - EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP -END - -IDD_REPLAY_METADATA DIALOGEX 0, 0, 325, 250 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Movie Metadata" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - DEFPUSHBUTTON "Close",IDCANCEL,268,229,50,14 - CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,311,214 -END - -IDD_EDIT_HEADER DIALOGEX 0, 0, 321, 258 -STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "iNES Header Editor" -FONT 8, "MS Shell Dlg", 400, 0, 0x1 -BEGIN - GROUPBOX "iNES Header",IDC_INESHEADER_GROUP,6,3,309,231,WS_DISABLED - GROUPBOX "Version",IDC_VERSION_GROUP,14,13,79,27,WS_DISABLED - CONTROL "iNES",IDC_RADIO_VERSION_STANDARD,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,20,24,27,10 - CONTROL "NES 2.0",IDC_RADIO_VERSION_INES20,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,51,24,38,10 - GROUPBOX "Mapper",IDC_MAPPER_GROUP,98,13,210,27,WS_DISABLED - LTEXT "Mapper#:",IDC_MAPPER_TEXT,104,24,33,8,WS_DISABLED - COMBOBOX IDC_MAPPER_COMBO,139,22,115,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "Sub#:",IDC_SUBMAPPER_TEXT,261,24,21,8,WS_DISABLED - EDITTEXT IDC_SUBMAPPER_EDIT,284,21,15,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED - GROUPBOX "PRG",IDC_PRG_GROUP,14,42,294,27,WS_DISABLED - LTEXT "PRG ROM:",IDC_PRGROM_TEXT,20,53,34,8,WS_DISABLED - COMBOBOX IDC_PRGROM_COMBO,57,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "PRG RAM:",IDC_PRGRAM_TEXT,115,53,34,8,WS_DISABLED - COMBOBOX IDC_PRGRAM_COMBO,151,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - CONTROL "Battery-backed NVRAM",IDC_CHECK_BATTERYNVRAM,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,211,53,86,10 - LTEXT "PRG NVRAM:",IDC_PRGNVRAM_TEXT,208,53,42,8,WS_DISABLED - COMBOBOX IDC_PRGNVRAM_COMBO,253,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - GROUPBOX "CHR",IDC_CHR_GROUP,14,71,294,27,WS_DISABLED - LTEXT "CHR ROM:",IDC_CHRROM_TEXT,20,82,35,8,WS_DISABLED - COMBOBOX IDC_CHRROM_COMBO,57,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "CHR RAM:",IDC_CHRRAM_TEXT,115,82,34,8,WS_DISABLED - COMBOBOX IDC_CHRRAM_COMBO,151,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "CHR NVRAM:",IDC_CHRNVRAM_TEXT,207,82,43,8,WS_DISABLED - COMBOBOX IDC_CHRNVRAM_COMBO,253,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - GROUPBOX "Mirroring",IDC_MIRRORING_GROUP,14,102,59,46,WS_DISABLED - CONTROL "Horizontal",IDC_RADIO_MIRR_HORIZONTAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,19,112,48,10 - CONTROL "Vertical",IDC_RADIO_MIRR_VERTICAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,19,123,39,10 - CONTROL "Four-screen",IDC_RADIO_MIRR_4SCREEN,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,19,134,51,10 - CONTROL "Trainer",IDC_CHECK_TRAINER,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,14,152,55,10 - GROUPBOX "Region",IDC_REGION_GROUP,78,102,40,58,WS_DISABLED - CONTROL "NTSC",IDC_RADIO_REGION_NTSC,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,83,112,29,10 - CONTROL "PAL",IDC_RADIO_REGION_PAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,123,28,10 - CONTROL "Dual",IDC_RADIO_REGION_DUAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,146,30,10 - CONTROL "Dendy",IDC_RADIO_REGION_DENDY,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,134,33,10 - GROUPBOX "System",IDC_SYSTEM_GROUP,123,102,184,109,WS_DISABLED - CONTROL "Normal",IDC_RADIO_SYSTEM_NORMAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,129,114,34,10 - CONTROL "VS. Sys",IDC_RADIO_SYSTEM_VS,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,167,114,37,10 - CONTROL "Playchoice-10",IDC_RADIO_SYSTEM_PLAYCHOICE10,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,208,114,56,10 - CONTROL "Extend",IDC_RADIO_SYSTEM_EXTEND,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,268,114,35,10 - GROUPBOX "Extend System",IDC_EXTEND_SYSTEM_GROUP,130,176,171,29,WS_DISABLED - LTEXT "Console:",IDC_EXTEND_SYSTEM_TEXT,136,189,29,8,WS_DISABLED - COMBOBOX IDC_SYSTEM_EXTEND_COMBO,168,186,127,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - GROUPBOX "VS. System",IDC_VS_SYSTEM_GROUP,130,126,171,46,WS_DISABLED - LTEXT "Hardware:",IDC_VS_SYSTEM_TEXT,136,138,35,8,WS_DISABLED - COMBOBOX IDC_VS_SYSTEM_COMBO,174,136,121,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "PPU:",IDC_VS_PPU_TEXT,136,155,16,8,WS_DISABLED - COMBOBOX IDC_VS_PPU_COMBO,155,154,140,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - CONTROL "iNES 1.0 Unofficial Properties",IDC_CHECK_UNOFFICIAL, - "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,14,164,103,10 - GROUPBOX "iNES 1.0 Unofficial Properties",IDC_UNOFFICIAL_GROUP,13,176,104,35,WS_DISABLED - CONTROL "Dual region",IDC_CHECK_UNOFFICIAL_EXTRA_REGION,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,186,48,10 - CONTROL "PRG RAM exists",IDC_CHECK_UNOFFICIAL_PRGRAM,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,70,188,43,17 - CONTROL "Bus conflict",IDC_CHECK_UNOFFICIAL_BUS_CONFLICT,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,198,49,10 - LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,106,218,44,8,WS_DISABLED - COMBOBOX IDC_INPUT_DEVICE_COMBO,153,216,154,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP - LTEXT "Misc. ROM(s)",IDC_MISCELLANEOUS_ROMS_TEXT,29,218,48,8,WS_DISABLED - EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED - PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,6,237,44,14,WS_DISABLED - PUSHBUTTON "Save as...",IDSAVE,223,237,44,14,WS_DISABLED - DEFPUSHBUTTON "Close",IDCLOSE,270,237,44,14 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// DESIGNINFO -// - -#ifdef APSTUDIO_INVOKED -GUIDELINES DESIGNINFO -BEGIN - "DIRCONFIG", DIALOG - BEGIN - LEFTMARGIN, 10 - RIGHTMARGIN, 295 - TOPMARGIN, 8 - END - - "DWBDIALOG", DIALOG - BEGIN - END - - "FKBDIALOG", DIALOG - BEGIN - END - - "GAMEPADDIALOG", DIALOG - BEGIN - END - - "GUICONFIG", DIALOG - BEGIN - END - - "INPUTCONFIG", DIALOG - BEGIN - LEFTMARGIN, 10 - RIGHTMARGIN, 338 - TOPMARGIN, 8 - BOTTOMMARGIN, 191 - END - - "MAHJONGDIALOG", DIALOG - BEGIN - END - - "NETMOO", DIALOG - BEGIN - LEFTMARGIN, 10 - RIGHTMARGIN, 357 - TOPMARGIN, 8 - BOTTOMMARGIN, 201 - END - - "PALCONFIG", DIALOG - BEGIN - LEFTMARGIN, 10 - RIGHTMARGIN, 218 - TOPMARGIN, 8 - BOTTOMMARGIN, 209 - END - - "SOUNDCONFIG", DIALOG - BEGIN - LEFTMARGIN, 10 - RIGHTMARGIN, 324 - TOPMARGIN, 8 - BOTTOMMARGIN, 274 - END - - "TIMINGCONFIG", DIALOG - BEGIN - LEFTMARGIN, 10 - RIGHTMARGIN, 193 - TOPMARGIN, 8 - BOTTOMMARGIN, 101 - END - - "MOVIEOPTIONS", DIALOG - BEGIN - LEFTMARGIN, 4 - RIGHTMARGIN, 138 - TOPMARGIN, 8 - BOTTOMMARGIN, 217 - END - - "DWBDIALOGSIMPLE", DIALOG - BEGIN - END - - "MEMWATCH", DIALOG - BEGIN - RIGHTMARGIN, 260 - BOTTOMMARGIN, 269 - END - - "DEBUGGER", DIALOG - BEGIN - BOTTOMMARGIN, 332 - END - - "TRACER", DIALOG - BEGIN - END - - "ADDBP", DIALOG - BEGIN - RIGHTMARGIN, 195 - BOTTOMMARGIN, 123 - END - - "NTVIEW", DIALOG - BEGIN - END - - "GGCONV", DIALOG - BEGIN - END - - "MONITOR", DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 312 - TOPMARGIN, 7 - BOTTOMMARGIN, 336 - END - - "MEMVIEWFIND", DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 275 - TOPMARGIN, 7 - BOTTOMMARGIN, 74 - END - - "IDD_RECORDINP", DIALOG - BEGIN - BOTTOMMARGIN, 66 - END - - "IDD_REPLAYINP", DIALOG - BEGIN - BOTTOMMARGIN, 198 - END - - "TASEDITOR", DIALOG - BEGIN - END - - IDD_TASEDITOR_ABOUT, DIALOG - BEGIN - END - - IDD_TASEDITOR_NEWPROJECT, DIALOG - BEGIN - END - - IDD_TASEDITOR_EXPORT, DIALOG - BEGIN - END - - IDD_TASEDITOR_FINDNOTE, DIALOG - BEGIN - END - - IDD_TASEDITOR_SAVECOMPACT, DIALOG - BEGIN - END - - "ASSEMBLER", DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 195 - TOPMARGIN, 7 - BOTTOMMARGIN, 128 - END - - "NAMEBOOKMARKDLG", DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 179 - TOPMARGIN, 7 - BOTTOMMARGIN, 66 - END - - "CDLOGGER", DIALOG - BEGIN - END - - "PPUVIEW", DIALOG - BEGIN - END - - "ARCHIVECHOOSERDIALOG", DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 258 - TOPMARGIN, 7 - BOTTOMMARGIN, 152 - END - - "TEXTHOOKER", DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 449 - TOPMARGIN, 7 - BOTTOMMARGIN, 320 - END - - "CHEATCONSOLE", DIALOG - BEGIN - RIGHTMARGIN, 386 - BOTTOMMARGIN, 225 - END - - "VIDEOCONFIG", DIALOG - BEGIN - END - - IDD_RAMSEARCH, DIALOG - BEGIN - END - - IDD_RAMWATCH, DIALOG - BEGIN - END - - IDD_EDITWATCH, DIALOG - BEGIN - BOTTOMMARGIN, 94 - END - - DLG_SNESPAD, DIALOG - BEGIN - END - - IDD_TASEDITOR_SAVINGOPTIONS, DIALOG - BEGIN - END - - IDD_SYMBOLIC_DEBUG_NAMING, DIALOG - BEGIN - BOTTOMMARGIN, 82 - END - - "IDD_REPLAY_METADATA", DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 318 - TOPMARGIN, 7 - BOTTOMMARGIN, 243 - END - - IDD_EDIT_HEADER, DIALOG - BEGIN - LEFTMARGIN, 7 - RIGHTMARGIN, 314 - TOPMARGIN, 7 - BOTTOMMARGIN, 251 - END -END -#endif // APSTUDIO_INVOKED - - -///////////////////////////////////////////////////////////////////////////// -// -// AFX_DIALOG_LAYOUT -// - -NTVIEW AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -TIMINGCONFIG AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -IDD_TASEDITOR_SAVINGOPTIONS AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -IDD_EDITWATCH AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -GGCONV AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -CHEATCONSOLE AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -IDD_EDIT_HEADER AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -ADDBP AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -MEMWATCH AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -ASSEMBLER AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -MEMVIEWFIND AFX_DIALOG_LAYOUT -BEGIN - 0 -END - -VIDEOCONFIG AFX_DIALOG_LAYOUT -BEGIN - 0 -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Accelerator -// - -IDR_TASEDITOR_ACCELERATORS ACCELERATORS -BEGIN - "A", ACCEL_CTRL_A, VIRTKEY, CONTROL, NOINVERT - "B", ACCEL_CTRL_B, VIRTKEY, CONTROL, NOINVERT - "C", ACCEL_CTRL_C, VIRTKEY, CONTROL, NOINVERT - VK_DELETE, ACCEL_CTRL_DELETE, VIRTKEY, CONTROL, NOINVERT - VK_DOWN, ACCEL_CTRL_DOWN, VIRTKEY, CONTROL, NOINVERT - VK_END, ACCEL_CTRL_END, VIRTKEY, CONTROL, NOINVERT - "F", ACCEL_CTRL_F, VIRTKEY, CONTROL, NOINVERT - VK_HOME, ACCEL_CTRL_HOME, VIRTKEY, CONTROL, NOINVERT - VK_INSERT, ACCEL_CTRL_INSERT, VIRTKEY, CONTROL, NOINVERT - VK_LEFT, ACCEL_CTRL_LEFT, VIRTKEY, CONTROL, NOINVERT - VK_NEXT, ACCEL_CTRL_PGDN, VIRTKEY, CONTROL, NOINVERT - VK_PRIOR, ACCEL_CTRL_PGUP, VIRTKEY, CONTROL, NOINVERT - "Q", ACCEL_CTRL_Q, VIRTKEY, CONTROL, NOINVERT - VK_RIGHT, ACCEL_CTRL_RIGHT, VIRTKEY, CONTROL, NOINVERT - "S", ACCEL_CTRL_S, VIRTKEY, CONTROL, NOINVERT - VK_INSERT, ACCEL_CTRL_SHIFT_INS, VIRTKEY, SHIFT, CONTROL, NOINVERT - "V", ACCEL_CTRL_SHIFT_V, VIRTKEY, SHIFT, CONTROL, NOINVERT - VK_UP, ACCEL_CTRL_UP, VIRTKEY, CONTROL, NOINVERT - "V", ACCEL_CTRL_V, VIRTKEY, CONTROL, NOINVERT - "W", ACCEL_CTRL_W, VIRTKEY, CONTROL, NOINVERT - "X", ACCEL_CTRL_X, VIRTKEY, CONTROL, NOINVERT - "Y", ACCEL_CTRL_Y, VIRTKEY, CONTROL, NOINVERT - "Z", ACCEL_CTRL_Z, VIRTKEY, CONTROL, NOINVERT - VK_DELETE, ACCEL_DEL, VIRTKEY, NOINVERT - VK_END, ACCEL_END, VIRTKEY, NOINVERT - VK_HOME, ACCEL_HOME, VIRTKEY, NOINVERT - VK_INSERT, ACCEL_INS, VIRTKEY, NOINVERT - VK_NEXT, ACCEL_PGDN, VIRTKEY, NOINVERT - VK_PRIOR, ACCEL_PGUP, VIRTKEY, NOINVERT - VK_DOWN, ACCEL_SHIFT_DOWN, VIRTKEY, SHIFT, NOINVERT - VK_END, ACCEL_SHIFT_END, VIRTKEY, SHIFT, NOINVERT - VK_HOME, ACCEL_SHIFT_HOME, VIRTKEY, SHIFT, NOINVERT - VK_LEFT, ACCEL_SHIFT_LEFT, VIRTKEY, SHIFT, NOINVERT - VK_NEXT, ACCEL_SHIFT_PGDN, VIRTKEY, SHIFT, NOINVERT - VK_PRIOR, ACCEL_SHIFT_PGUP, VIRTKEY, SHIFT, NOINVERT - VK_RIGHT, ACCEL_SHIFT_RIGHT, VIRTKEY, SHIFT, NOINVERT - VK_UP, ACCEL_SHIFT_UP, VIRTKEY, SHIFT, NOINVERT -END - -IDR_RWACCELERATOR ACCELERATORS -BEGIN - "N", RAMMENU_FILE_NEW, VIRTKEY, CONTROL - "O", RAMMENU_FILE_OPEN, VIRTKEY, CONTROL - "S", RAMMENU_FILE_SAVE, VIRTKEY, CONTROL - "S", RAMMENU_FILE_SAVEAS, VIRTKEY, SHIFT, CONTROL - "A", IDC_C_WATCH_DUPLICATE, VIRTKEY - "E", IDC_C_WATCH_EDIT, VIRTKEY - "D", IDC_C_WATCH_DOWN, VIRTKEY - "U", IDC_C_WATCH_UP, VIRTKEY - "N", IDC_C_WATCH, VIRTKEY - "R", IDC_C_WATCH_REMOVE, VIRTKEY -END - - -///////////////////////////////////////////////////////////////////////////// -// -// Bitmap -// - -IDB_BITMAP0 BITMAP "res\\te_0.bmp" -IDB_BITMAP1 BITMAP "res\\te_1.bmp" -IDB_BITMAP2 BITMAP "res\\te_2.bmp" -IDB_BITMAP3 BITMAP "res\\te_3.bmp" -IDB_BITMAP4 BITMAP "res\\te_4.bmp" -IDB_BITMAP5 BITMAP "res\\te_5.bmp" -IDB_BITMAP6 BITMAP "res\\te_6.bmp" -IDB_BITMAP7 BITMAP "res\\te_7.bmp" -IDB_BITMAP8 BITMAP "res\\te_8.bmp" -IDB_BITMAP9 BITMAP "res\\te_9.bmp" -IDB_BITMAP10 BITMAP "res\\te_10.bmp" -IDB_BITMAP11 BITMAP "res\\te_11.bmp" -IDB_BITMAP12 BITMAP "res\\te_12.bmp" -IDB_BITMAP13 BITMAP "res\\te_13.bmp" -IDB_BITMAP14 BITMAP "res\\te_14.bmp" -IDB_BITMAP15 BITMAP "res\\te_15.bmp" -IDB_BITMAP16 BITMAP "res\\te_16.bmp" -IDB_BITMAP17 BITMAP "res\\te_17.bmp" -IDB_BITMAP18 BITMAP "res\\te_18.bmp" -IDB_BITMAP19 BITMAP "res\\te_19.bmp" -IDB_TE_ARROW BITMAP "res\\te_arrow.bmp" -IDB_TE_GREEN_ARROW BITMAP "res\\te_green_arrow.bmp" -IDB_TE_GREEN_BLUE_ARROW BITMAP "res\\te_green_blue_arrow.bmp" -IDB_PIANO_0 BITMAP "res\\te_piano_0.bmp" -IDB_PIANO_1 BITMAP "res\\te_piano_1.bmp" -IDB_PIANO_2 BITMAP "res\\te_piano_2.bmp" -IDB_PIANO_3 BITMAP "res\\te_piano_3.bmp" -IDB_PIANO_4 BITMAP "res\\te_piano_4.bmp" -IDB_PIANO_5 BITMAP "res\\te_piano_5.bmp" -IDB_PIANO_6 BITMAP "res\\te_piano_6.bmp" -IDB_PIANO_7 BITMAP "res\\te_piano_7.bmp" -IDB_PIANO_8 BITMAP "res\\te_piano_8.bmp" -IDB_PIANO_9 BITMAP "res\\te_piano_9.bmp" -IDB_PIANO_10 BITMAP "res\\te_piano_10.bmp" -IDB_PIANO_11 BITMAP "res\\te_piano_11.bmp" -IDB_PIANO_12 BITMAP "res\\te_piano_12.bmp" -IDB_PIANO_13 BITMAP "res\\te_piano_13.bmp" -IDB_PIANO_14 BITMAP "res\\te_piano_14.bmp" -IDB_PIANO_15 BITMAP "res\\te_piano_15.bmp" -IDB_PIANO_16 BITMAP "res\\te_piano_16.bmp" -IDB_PIANO_17 BITMAP "res\\te_piano_17.bmp" -IDB_PIANO_18 BITMAP "res\\te_piano_18.bmp" -IDB_PIANO_19 BITMAP "res\\te_piano_19.bmp" -IDB_PIANO_PLAYBACK_0 BITMAP "res\\te_piano_0_playback.bmp" -IDB_PIANO_PLAYBACK_1 BITMAP "res\\te_piano_1_playback.bmp" -IDB_PIANO_PLAYBACK_2 BITMAP "res\\te_piano_2_playback.bmp" -IDB_PIANO_PLAYBACK_3 BITMAP "res\\te_piano_3_playback.bmp" -IDB_PIANO_PLAYBACK_4 BITMAP "res\\te_piano_4_playback.bmp" -IDB_PIANO_PLAYBACK_5 BITMAP "res\\te_piano_5_playback.bmp" -IDB_PIANO_PLAYBACK_6 BITMAP "res\\te_piano_6_playback.bmp" -IDB_PIANO_PLAYBACK_7 BITMAP "res\\te_piano_7_playback.bmp" -IDB_PIANO_PLAYBACK_8 BITMAP "res\\te_piano_8_playback.bmp" -IDB_PIANO_PLAYBACK_9 BITMAP "res\\te_piano_9_playback.bmp" -IDB_PIANO_PLAYBACK_10 BITMAP "res\\te_piano_10_playback.bmp" -IDB_PIANO_PLAYBACK_11 BITMAP "res\\te_piano_11_playback.bmp" -IDB_PIANO_PLAYBACK_12 BITMAP "res\\te_piano_12_playback.bmp" -IDB_PIANO_PLAYBACK_13 BITMAP "res\\te_piano_13_playback.bmp" -IDB_PIANO_PLAYBACK_14 BITMAP "res\\te_piano_14_playback.bmp" -IDB_PIANO_PLAYBACK_15 BITMAP "res\\te_piano_15_playback.bmp" -IDB_PIANO_PLAYBACK_16 BITMAP "res\\te_piano_16_playback.bmp" -IDB_PIANO_PLAYBACK_17 BITMAP "res\\te_piano_17_playback.bmp" -IDB_PIANO_PLAYBACK_18 BITMAP "res\\te_piano_18_playback.bmp" -IDB_PIANO_PLAYBACK_19 BITMAP "res\\te_piano_19_playback.bmp" -IDB_PIANO_LOSTPOS_0 BITMAP "res\\te_piano_0_lostpos.bmp" -IDB_PIANO_LOSTPOS_1 BITMAP "res\\te_piano_1_lostpos.bmp" -IDB_PIANO_LOSTPOS_2 BITMAP "res\\te_piano_2_lostpos.bmp" -IDB_PIANO_LOSTPOS_3 BITMAP "res\\te_piano_3_lostpos.bmp" -IDB_PIANO_LOSTPOS_4 BITMAP "res\\te_piano_4_lostpos.bmp" -IDB_PIANO_LOSTPOS_5 BITMAP "res\\te_piano_5_lostpos.bmp" -IDB_PIANO_LOSTPOS_6 BITMAP "res\\te_piano_6_lostpos.bmp" -IDB_PIANO_LOSTPOS_7 BITMAP "res\\te_piano_7_lostpos.bmp" -IDB_PIANO_LOSTPOS_8 BITMAP "res\\te_piano_8_lostpos.bmp" -IDB_PIANO_LOSTPOS_9 BITMAP "res\\te_piano_9_lostpos.bmp" -IDB_PIANO_LOSTPOS_10 BITMAP "res\\te_piano_10_lostpos.bmp" -IDB_PIANO_LOSTPOS_11 BITMAP "res\\te_piano_11_lostpos.bmp" -IDB_PIANO_LOSTPOS_12 BITMAP "res\\te_piano_12_lostpos.bmp" -IDB_PIANO_LOSTPOS_13 BITMAP "res\\te_piano_13_lostpos.bmp" -IDB_PIANO_LOSTPOS_14 BITMAP "res\\te_piano_14_lostpos.bmp" -IDB_PIANO_LOSTPOS_15 BITMAP "res\\te_piano_15_lostpos.bmp" -IDB_PIANO_LOSTPOS_16 BITMAP "res\\te_piano_16_lostpos.bmp" -IDB_PIANO_LOSTPOS_17 BITMAP "res\\te_piano_17_lostpos.bmp" -IDB_PIANO_LOSTPOS_18 BITMAP "res\\te_piano_18_lostpos.bmp" -IDB_PIANO_LOSTPOS_19 BITMAP "res\\te_piano_19_lostpos.bmp" -IDB_BITMAP_SELECTED0 BITMAP "res\\te_0_selected.bmp" -IDB_BITMAP_SELECTED1 BITMAP "res\\te_1_selected.bmp" -IDB_BITMAP_SELECTED2 BITMAP "res\\te_2_selected.bmp" -IDB_BITMAP_SELECTED3 BITMAP "res\\te_3_selected.bmp" -IDB_BITMAP_SELECTED4 BITMAP "res\\te_4_selected.bmp" -IDB_BITMAP_SELECTED5 BITMAP "res\\te_5_selected.bmp" -IDB_BITMAP_SELECTED6 BITMAP "res\\te_6_selected.bmp" -IDB_BITMAP_SELECTED7 BITMAP "res\\te_7_selected.bmp" -IDB_BITMAP_SELECTED8 BITMAP "res\\te_8_selected.bmp" -IDB_BITMAP_SELECTED9 BITMAP "res\\te_9_selected.bmp" -IDB_BITMAP_SELECTED10 BITMAP "res\\te_10_selected.bmp" -IDB_BITMAP_SELECTED11 BITMAP "res\\te_11_selected.bmp" -IDB_BITMAP_SELECTED12 BITMAP "res\\te_12_selected.bmp" -IDB_BITMAP_SELECTED13 BITMAP "res\\te_13_selected.bmp" -IDB_BITMAP_SELECTED14 BITMAP "res\\te_14_selected.bmp" -IDB_BITMAP_SELECTED15 BITMAP "res\\te_15_selected.bmp" -IDB_BITMAP_SELECTED16 BITMAP "res\\te_16_selected.bmp" -IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp" -IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" -IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" -IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" -#endif // English(U.S.) resources -///////////////////////////////////////////////////////////////////////////// - - - -#ifndef APSTUDIO_INVOKED -///////////////////////////////////////////////////////////////////////////// -// -// Generated from the TEXTINCLUDE 3 resource. -// - - -///////////////////////////////////////////////////////////////////////////// -#endif // not APSTUDIO_INVOKED - +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#include "afxres.h" +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (United States) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\0" +END + +2 TEXTINCLUDE +BEGIN + "#include ""afxres.h""\r\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_ICON3 ICON "res/taseditor-icon.ico" + +IDI_ICON4 ICON "res/taseditor-icon32.ico" + +ICON_1 ICON "res/ICON_1.ico" + +ICON_2 ICON "res/ICON_2.ico" + + +///////////////////////////////////////////////////////////////////////////// +// +// Menu +// + +FCEUMENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&Open...", MENU_OPEN_FILE + MENUITEM "&Close", MENU_CLOSE_FILE + MENUITEM "&Recent", MENU_RECENT_FILES + MENUITEM SEPARATOR + POPUP "&Savestate" + BEGIN + MENUITEM "&Load State", MENU_LOADSTATE + MENUITEM "&Save State", MENU_SAVESTATE + MENUITEM "Load State &From...", MENU_LOAD_STATE + MENUITEM "Save State &As...", MENU_SAVE_STATE + MENUITEM SEPARATOR + MENUITEM "&Next save slot", MENU_NEXTSAVESTATE + MENUITEM "&Previous save slot", MENU_PREVIOUSSAVESTATE + MENUITEM "&View save slots", MENU_VIEWSAVESLOTS + END + POPUP "&Movie" + BEGIN + MENUITEM "Recent", MENU_MOVIE_RECENT + MENUITEM "&Record Movie...", MENU_RECORD_MOVIE + MENUITEM "&Play Movie...", MENU_REPLAY_MOVIE + MENUITEM "&Stop Movie", MENU_STOP_MOVIE + MENUITEM "Play from &Beginning", ID_FILE_PLAYMOVIEFROMBEGINNING + MENUITEM "&Toggle Recording/Playing", ID_FILE_TOGGLE_RECORDING_MOVIE + POPUP "&Quickly Modify" + BEGIN + MENUITEM "&Insert 1 Frame", ID_FILE_INSERT_1_FRAME + MENUITEM "&Delete 1 Frame", ID_FILE_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "&Truncate at Current Frame", ID_FILE_TRUNCATE_MOVIE + END + MENUITEM SEPARATOR + POPUP "Record &Mode" + BEGIN + MENUITEM "&Next Record Mode", ID_FILE_NEXTRECORDMODE + MENUITEM SEPARATOR + MENUITEM "&Truncate", ID_FILE_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", ID_FILE_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", ID_FILE_RECORDMODE_INSERT + END + MENUITEM "&Read-only", ID_FILE_MOVIE_TOGGLEREAD + END + POPUP "&AVI/Wav" + BEGIN + MENUITEM "&Record AVI...", MENU_RECORD_AVI + MENUITEM "&Stop AVI", MENU_STOP_AVI + MENUITEM "&Record WAV...", MENU_RECORD_WAV + MENUITEM "&Stop WAV", MENU_STOP_WAV + MENUITEM SEPARATOR + MENUITEM "Enable HUD recording", ID_AVI_ENABLEHUDRECORDING + MENUITEM "Disable messages recording", ID_AVI_DISMOVIEMESSAGE + END + POPUP "&Lua" + BEGIN + MENUITEM "&Recent", MENU_LUA_RECENT + MENUITEM "&New Lua Script Window...", ID_FILE_OPENLUAWINDOW + MENUITEM "&Close All Script Windows", ID_FILE_CLOSELUAWINDOWS + END + MENUITEM "&Screenshot", ID_FILE_SCREENSHOT + MENUITEM "Save Screenshot As...", ID_FILE_SAVESCREENSHOTAS + MENUITEM SEPARATOR + MENUITEM "E&xit\tAlt+F4", MENU_EXIT + END + POPUP "&NES" + BEGIN + MENUITEM "&Reset", MENU_RESET + MENUITEM "&Power", MENU_POWER + MENUITEM SEPARATOR + MENUITEM "&Eject/Insert Disk", MENU_EJECT_DISK + MENUITEM "&Switch Disk Side", MENU_SWITCH_DISK + MENUITEM "&Insert Coin", MENU_INSERT_COIN + MENUITEM SEPARATOR + POPUP "E&mulation Speed" + BEGIN + MENUITEM "&Pause", ID_NES_PAUSE + MENUITEM "&Turbo", ID_NES_TURBO + MENUITEM SEPARATOR + MENUITEM "Speed &Up", ID_NES_SPEEDUP + MENUITEM "Slow &Down", ID_NES_SLOWDOWN + MENUITEM "&Slowest Speed", ID_NES_SLOWESTSPEED + MENUITEM "&Normal Speed", ID_NES_NORMALSPEED + MENUITEM "Set &Custom Speed", ID_EMULATIONSPEED_CUSTOMSPEED + MENUITEM SEPARATOR + MENUITEM "Set FrameAdvance Delay", ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY + MENUITEM "Set custom speed for FrameAdvance", ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE + END + END + POPUP "&Config" + BEGIN + MENUITEM "&Hide Menu", MENU_HIDE_MENU + POPUP "&Enable" + BEGIN + MENUITEM "&Run in Background", MENU_RUN_IN_BACKGROUND + MENUITEM "&Background Input", MENU_BACKGROUND_INPUT + MENUITEM "&Auto-savestates", MENU_ENABLE_AUTOSAVE + MENUITEM "&Frame Adv. - Skip Lag", MENU_DISPLAY_FA_LAGSKIP + MENUITEM "Backup Savestates", ID_ENABLE_BACKUPSAVESTATES + MENUITEM "Compress Savestates", ID_ENABLE_COMPRESSSAVESTATES + MENUITEM "&Game Genie ROM", MENU_GAME_GENIE + MENUITEM "Auto-resume old play session", ID_ENABLE_AUTORESUME + END + POPUP "&Display" + BEGIN + POPUP "&Input Display" + BEGIN + MENUITEM "&Off", MENU_INPUTDISPLAY_0 + MENUITEM "&1 player", MENU_INPUTDISPLAY_1 + MENUITEM "&2 player", MENU_INPUTDISPLAY_2 + MENUITEM "&4 player", MENU_INPUTDISPLAY_4 + MENUITEM SEPARATOR + MENUITEM "old style disp.", ID_INPUTDISPLAY_OLDSTYLEDISP + END + MENUITEM "&Lag Counter", MENU_DISPLAY_LAGCOUNTER + MENUITEM "&Frame Counter", ID_DISPLAY_FRAMECOUNTER + MENUITEM "&Rerecord Counter", ID_DISPLAY_RERECORDCOUNTER + MENUITEM "&Movie status icon", ID_DISPLAY_MOVIESTATUSICON + MENUITEM "FPS", ID_DISPLAY_FPS + MENUITEM SEPARATOR + MENUITEM "Graphics: &BG", MENU_DISPLAY_BG + MENUITEM "Graphics: &OBJ", MENU_DISPLAY_OBJ + END + MENUITEM SEPARATOR + POPUP "Region" + BEGIN + MENUITEM "NTSC", MENU_NTSC + MENUITEM "&PAL", MENU_PAL + MENUITEM "Dendy", MENU_DENDY + END + POPUP "PPU" + BEGIN + MENUITEM "Old PPU", ID_OLDPPU + MENUITEM "New PPU", ID_NEWPPU + END + POPUP "RAM Init" + BEGIN + MENUITEM "&Default", MENU_RAMINIT_DEFAULT + MENUITEM "Fill $&FF", MENU_RAMINIT_FF + MENUITEM "Fill $&00", MENU_RAMINIT_00 + MENUITEM "&Random", MENU_RAMINIT_RANDOM + END + MENUITEM SEPARATOR + MENUITEM "&Directories...", MENU_DIRECTORIES + MENUITEM "&GUI...", MENU_GUI_OPTIONS + MENUITEM "&Input...", MENU_INPUT + MENUITEM "&Network Play...", MENU_NETWORK + MENUITEM "&Palette...", MENU_PALETTE + MENUITEM "&Sound...", MENU_SOUND + MENUITEM "&Timing...", MENU_TIMING + MENUITEM "&Video...", MENU_VIDEO + MENUITEM "&Movie options...", MENU_MOVIEOPTIONS + MENUITEM "&Map Hotkeys...", MENU_HOTKEYS + MENUITEM SEPARATOR + MENUITEM "Save Config File", ID_CONFIG_SAVECONFIGFILE + END + POPUP "&Tools" + BEGIN + MENUITEM "&Cheats...", MENU_CHEATS + MENUITEM "RAM Search...", ID_RAM_SEARCH + MENUITEM "RAM Watch...", ID_RAM_WATCH + MENUITEM "&Memory Watch...", MENU_MEMORY_WATCH + MENUITEM "&TAS Editor...", MENU_TASEDITOR + MENUITEM "Convert &FCM...", MENU_CONVERT_MOVIE + MENUITEM SEPARATOR + POPUP "Autofire &Pattern" + BEGIN + MENUITEM "1 on, 1 off", MENU_AUTOFIRE_PATTERN_1 + MENUITEM "1 on, 2 off", MENU_AUTOFIRE_PATTERN_2 + MENUITEM "1 on, 3 off", MENU_AUTOFIRE_PATTERN_3 + MENUITEM "1 on, 4 off", MENU_AUTOFIRE_PATTERN_4 + MENUITEM "1 on, 5 off", MENU_AUTOFIRE_PATTERN_5 + MENUITEM "2 on, 1 off", MENU_AUTOFIRE_PATTERN_6 + MENUITEM "2 on, 2 off", MENU_AUTOFIRE_PATTERN_7 + MENUITEM "2 on, 3 off", MENU_AUTOFIRE_PATTERN_8 + MENUITEM "2 on, 4 off", MENU_AUTOFIRE_PATTERN_9 + MENUITEM "3 on, 1 off", MENU_AUTOFIRE_PATTERN_10 + MENUITEM "3 on, 2 off", MENU_AUTOFIRE_PATTERN_11 + MENUITEM "3 on, 3 off", MENU_AUTOFIRE_PATTERN_12 + MENUITEM "4 on, 1 off", MENU_AUTOFIRE_PATTERN_13 + MENUITEM "4 on, 2 off", MENU_AUTOFIRE_PATTERN_14 + MENUITEM "5 on, 1 off", MENU_AUTOFIRE_PATTERN_15 + END + POPUP "Autofire &Offset" + BEGIN + MENUITEM "0 frames", MENU_AUTOFIRE_OFFSET_1 + MENUITEM "1 frame", MENU_AUTOFIRE_OFFSET_2 + MENUITEM "2 frames", MENU_AUTOFIRE_OFFSET_3 + MENUITEM "3 frames", MENU_AUTOFIRE_OFFSET_4 + MENUITEM "4 frames", MENU_AUTOFIRE_OFFSET_5 + MENUITEM "5 frames", MENU_AUTOFIRE_OFFSET_6 + END + MENUITEM "&Alternate A and B", MENU_ALTERNATE_AB + MENUITEM SEPARATOR + MENUITEM "Te&xt Hooker...", ID_TOOLS_TEXTHOOKER + END + POPUP "&Debug" + BEGIN + MENUITEM "&Debugger...", MENU_DEBUGGER + MENUITEM "&PPU Viewer...", MENU_PPUVIEWER + MENUITEM "&Name Table Viewer...", MENU_NAMETABLEVIEWER + MENUITEM "&Hex Editor...", MENU_HEXEDITOR + MENUITEM "&Trace Logger...", MENU_TRACELOGGER + MENUITEM "&Code/Data Logger...", MENU_CDLOGGER + MENUITEM "&Game Genie Decoder/Encoder...", MENU_GAMEGENIEDECODER + MENUITEM "&iNES Header Editor...", MENU_INESHEADEREDITOR + END + POPUP "&Help" + BEGIN + MENUITEM "&Help...", MENU_HELP + MENUITEM "&Message Log", MENU_MSGLOG + MENUITEM SEPARATOR + MENUITEM "&About", MENU_ABOUT + END +END + +TASEDITORMENU MENUEX +BEGIN + POPUP "File", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "New", ID_FILE_NEW,MFT_STRING,MFS_ENABLED + MENUITEM "Open", ID_FILE_OPENPROJECT,MFT_STRING,MFS_ENABLED + MENUITEM "Save\tCtrl+S", ID_FILE_SAVEPROJECT,MFT_STRING,MFS_ENABLED + MENUITEM "Save As", ID_FILE_SAVEPROJECTAS,MFT_STRING,MFS_ENABLED + MENUITEM "Save Compact", ID_FILE_SAVECOMPACT,MFT_STRING,MFS_ENABLED + MENUITEM "Recent", ID_FILE_RECENT,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Import Input", ID_FILE_IMPORT,MFT_STRING,MFS_ENABLED + MENUITEM "Export to FM2", ID_FILE_EXPORTFM2,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Close\tAlt+F4", ID_FILE_CLOSE,MFT_STRING,MFS_ENABLED + END + POPUP "Edit", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "Undo\tCtrl+Z", ID_EDIT_UNDO,MFT_STRING,MFS_ENABLED + MENUITEM "Redo\tCtrl+Y", ID_EDIT_REDO,MFT_STRING,MFS_ENABLED + MENUITEM "Selection Undo\tCtrl+Q", ID_EDIT_SELECTIONUNDO,MFT_STRING,MFS_ENABLED + MENUITEM "Selection Redo\tCtrl+W", ID_EDIT_SELECTIONREDO,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Deselect", ID_EDIT_DESELECT,MFT_STRING,MFS_ENABLED + MENUITEM "Select All", ID_EDIT_SELECTALL,MFT_STRING,MFS_ENABLED + MENUITEM "Select between Markers\tCtrl+A", ID_EDIT_SELECTMIDMARKERS,MFT_STRING,MFS_ENABLED + MENUITEM "Reselect Clipboard\tCtrl+B", ID_EDIT_RESELECTCLIPBOARD,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Copy\tCtrl+C", ID_EDIT_COPY,MFT_STRING,MFS_ENABLED + MENUITEM "Paste\tCtrl+V", ID_EDIT_PASTE,MFT_STRING,MFS_ENABLED + MENUITEM "PasteInsert\tCtrl+Shift+V", ID_EDIT_PASTEINSERT,MFT_STRING,MFS_ENABLED + MENUITEM "Cut\tCtrl+X", ID_EDIT_CUT,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Clear\tDel", ID_EDIT_CLEAR,MFT_STRING,MFS_ENABLED + MENUITEM "Delete\tCtrl+Del", ID_EDIT_DELETE,MFT_STRING,MFS_ENABLED + MENUITEM "Clone\tCtrl+Ins", ID_EDIT_CLONEFRAMES,MFT_STRING,MFS_ENABLED + MENUITEM "Insert\tCtrl+Shift+Ins", ID_EDIT_INSERTFRAMES,MFT_STRING,MFS_ENABLED + MENUITEM "Insert # of Frames\tIns", ID_EDIT_INSERT,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Truncate movie", ID_EDIT_TRUNCATE,MFT_STRING,MFS_ENABLED + END + POPUP "View", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "Find Note window\tCtrl+F", ID_VIEW_FINDNOTE,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Display Branch Screenshots", ID_VIEW_SHOWBRANCHSCREENSHOTS,MFT_STRING,MFS_ENABLED + MENUITEM "Display Branch Descriptions", ID_VIEW_SHOWBRANCHTOOLTIPS,MFT_STRING,MFS_ENABLED + MENUITEM "Enable Hot Changes", ID_VIEW_ENABLEHOTCHANGES,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Follow Undo context", ID_VIEW_JUMPWHENMAKINGUNDO,MFT_STRING,MFS_ENABLED + MENUITEM "Follow Marker Note context", ID_VIEW_FOLLOWMARKERNOTECONTEXT,MFT_STRING,MFS_ENABLED + END + POPUP "Config", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "Project file saving options", ID_CONFIG_SAVING_OPTIONS,MFT_STRING,MFS_ENABLED + MENUITEM "Set max Undo levels", ID_CONFIG_SETMAXUNDOLEVELS,MFT_STRING,MFS_ENABLED + MENUITEM "Set Greenzone capacity", ID_CONFIG_SETGREENZONECAPACITY,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Enable Greenzoning", ID_CONFIG_ENABLEGREENZONING,MFT_STRING,MFS_ENABLED + MENUITEM "Autofire Pattern skips Lag", ID_CONFIG_PATTERNSKIPSLAG,MFT_STRING,MFS_ENABLED + MENUITEM "Auto-adjust Input according to Lag", ID_CONFIG_ADJUSTLAG,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Draw Input by dragging", ID_CONFIG_DRAWINPUTBYDRAGGING,MFT_STRING,MFS_ENABLED + MENUITEM "Combine consecutive Recordings/Draws", ID_CONFIG_COMBINECONSECUTIVERECORDINGS,MFT_STRING,MFS_ENABLED + MENUITEM "Use 1P keys for all single Recordings", ID_CONFIG_USE1PFORRECORDING,MFT_STRING,MFS_ENABLED + MENUITEM "Use Input keys for Column Set", ID_CONFIG_USEINPUTKEYSFORCOLUMNSET,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Bind Markers to Input", ID_CONFIG_BINDMARKERSTOINPUT,MFT_STRING,MFS_ENABLED + MENUITEM "Empty new Marker Notes", ID_CONFIG_EMPTYNEWMARKERNOTES,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Old control scheme for Branching", ID_CONFIG_OLDBRANCHINGCONTROLS,MFT_STRING,MFS_ENABLED + MENUITEM "Branches restore entire Movie", ID_CONFIG_BRANCHESRESTOREFULLMOVIE,MFT_STRING,MFS_ENABLED + MENUITEM "HUD in Branch screenshots", ID_CONFIG_HUDINBRANCHSCREENSHOTS,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "Autopause at the end of Movie", ID_CONFIG_AUTOPAUSEATTHEENDOFMOVIE,MFT_STRING,MFS_ENABLED + END + POPUP "Help", 65535,MFT_STRING,MFS_ENABLED + BEGIN + MENUITEM "Open TAS Editor Manual", ID_HELP_OPEN_MANUAL,MFT_STRING,MFS_ENABLED + MENUITEM "Enable Tooltips", ID_HELP_TOOLTIPS,MFT_STRING,MFS_ENABLED + MENUITEM MFT_SEPARATOR + MENUITEM "About", ID_HELP_ABOUT,MFT_STRING,MFS_ENABLED + END + POPUP "Pattern", 65535,MFT_STRING | MFT_RIGHTJUSTIFY,MFS_ENABLED + BEGIN + MENUITEM "Dummy", ID_PATTERN_TEST,MFT_STRING,MFS_ENABLED + END +END + +MEMVIEWMENU MENU +BEGIN + POPUP "&File" + BEGIN + MENUITEM "&Save Rom", MENU_MV_FILE_SAVE + MENUITEM "S&ave Rom As...", MENU_MV_FILE_SAVE_AS + MENUITEM "&Load *.TBL File", MENU_MV_FILE_LOAD_TBL + MENUITEM "&Unload *.TBL file", MENU_MV_FILE_UNLOAD_TBL + POPUP "&Dump to file" + BEGIN + MENUITEM "&Ram", MENU_MV_FILE_DUMP_RAM + MENUITEM "&PPU Memory", MENU_MV_FILE_DUMP_PPU + MENUITEM "&OAM Memory", MENU_MV_FILE_DUMP_OAM + MENUITEM "6502 64K", MENU_MV_FILE_DUMP_64K + END + POPUP "Load from &file" + BEGIN + MENUITEM "&Ram", MENU_MV_FILE_LOAD_RAM + MENUITEM "&PPU Memory", MENU_MV_FILE_LOAD_PPU + MENUITEM "&OAM Memory", MENU_MV_FILE_LOAD_OAM + END + MENUITEM "&Goto Address\tCtrl+A", MENU_MV_FILE_GOTO_ADDRESS + MENUITEM SEPARATOR + MENUITEM "&Close\tAlt+F4", ID_MEMWVIEW_FILE_CLOSE + END + POPUP "&Edit" + BEGIN + MENUITEM "&Undo\tCtrl+Z", MENU_MV_EDIT_UNDO + MENUITEM SEPARATOR + MENUITEM "&Copy", MENU_MV_EDIT_COPY + MENUITEM "&Paste", MENU_MV_EDIT_PASTE + MENUITEM SEPARATOR + MENUITEM "&Find...", MENU_MV_EDIT_FIND + END + POPUP "&View" + BEGIN + MENUITEM "&NES Memory", MENU_MV_VIEW_RAM + MENUITEM "&PPU Memory", MENU_MV_VIEW_PPU + MENUITEM "&OAM Memory", MENU_MV_VIEW_OAM + MENUITEM "&ROM File", MENU_MV_VIEW_ROM + END + POPUP "Highlighting" + BEGIN + MENUITEM "Highlight Activity", ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY + MENUITEM "Set fading period...", ID_HIGHLIGHTING_SETFADINGPERIOD + MENUITEM "Fade when paused", ID_HIGHLIGHTING_FADEWHENPAUSED + END + POPUP "&Bookmarks" + BEGIN + MENUITEM "&Remove all bookmarks", MENU_MV_BOOKMARKS_RM_ALL + END + POPUP "Help" + BEGIN + MENUITEM "&Help...", MENU_MV_HELP + END +END + +MEMWATCHMENU MENU +BEGIN + POPUP "&File " + BEGIN + MENUITEM "&New...\tCtrl+N", MEMW_FILE_NEW + MENUITEM "&Open...\tCtrl+O", MEMW_FILE_OPEN + MENUITEM "&Save\tCtrl+S", MEMW_FILE_SAVE + MENUITEM "S&ave As..\tCtrl+Shift+S", MEMW_FILE_SAVEAS + MENUITEM "&Recent", ID_FILE_RECENT + MENUITEM SEPARATOR + MENUITEM "&Close\tAlt+F4", MEMW_FILE_CLOSE + END + POPUP "&Options" + BEGIN + MENUITEM "&Load on Startup", MEMW_OPTIONS_LOADSTART + MENUITEM "Load Last &File on Startup", MEMW_OPTIONS_LOADLASTFILE + MENUITEM SEPARATOR + MENUITEM "&Collapse to 1 column", MEMW_OPTIONS_EXPANDCOLLAPSE + MENUITEM SEPARATOR + MENUITEM "Bind to Main Window", ID_OPTIONS_BINDTOMAINWINDOW + END + POPUP "&Help" + BEGIN + MENUITEM "&MemWatch Commands", MEMW_HELP_WCOMMANDS + END +END + +TASEDITORCONTEXTMENUS MENU +BEGIN + POPUP "Selected" + BEGIN + MENUITEM "Set Markers\tDbl-Clk", ID_SELECTED_SETMARKERS + MENUITEM "Remove Markers", ID_SELECTED_REMOVEMARKERS + MENUITEM SEPARATOR + MENUITEM "Deselect", ID_SELECTED_DESELECT + MENUITEM "Select between Markers\tCtrl+A", ID_SELECTED_SELECTMIDMARKERS + MENUITEM SEPARATOR + MENUITEM "Ungreenzone", ID_SELECTED_UNGREENZONE + MENUITEM SEPARATOR + MENUITEM "Clear\tDel", ID_CONTEXT_SELECTED_CLEARFRAMES + MENUITEM "Delete\tCtrl+Del", ID_CONTEXT_SELECTED_DELETEFRAMES + MENUITEM "Clone\tCtrl+Ins", ID_SELECTED_CLONE + MENUITEM "Insert\tCtrl+Shift+Ins", ID_CONTEXT_SELECTED_INSERTFRAMES + MENUITEM "Insert # of Frames\tIns", ID_CONTEXT_SELECTED_INSERTFRAMES2 + MENUITEM SEPARATOR + MENUITEM "Truncate movie", ID_CONTEXT_SELECTED_TRUNCATE + END +END + +FCEUCONTEXTMENUS MENU +BEGIN + POPUP "NoGame" + BEGIN + MENUITEM "Open ROM", FCEU_CONTEXT_OPENROM + MENUITEM "Last ROM used", FCEUX_CONTEXT_RECENTROM1 + MENUITEM SEPARATOR + MENUITEM "Help...", FCEU_CONTEXT_FCEUHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+NoMovie" + BEGIN + MENUITEM "Play Movie...", FCEUX_CONTEXT_REPLAYMOVIE + MENUITEM "Record Movie...", FCEUX_CONTEXT_RECORDMOVIE + MENUITEM "Load Last Movie", FCEUX_CONTEXT_LOADLASTMOVIE + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM "Screenshot", FCEUX_CONTEXT_SCREENSHOT + MENUITEM SEPARATOR + MENUITEM "Close ROM", FCEU_CONTEXT_CLOSEROM + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+Movie+Playing+readonly" + BEGIN + MENUITEM "Toggle to read+write", FCEUX_CONTEXT_READONLYTOGGLE + MENUITEM "Play Movie from Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING + MENUITEM "Stop Movie Replay", FCEU_CONTEXT_STOPMOVIE + MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES + MENUITEM SEPARATOR + MENUITEM "Toggle to Recording", FCEUX_CONTEXT_TOGGLE_RECORDING + POPUP "Modify Movie" + BEGIN + MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME + MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE + END + POPUP "Record Mode" + BEGIN + MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT + END + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM SEPARATOR + MENUITEM "Help....", FCEU_CONTEXT_MOVIEHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+Movie+Playing+readwrite" + BEGIN + MENUITEM "Toggle to Read-only", FCEUX_CONTEXT_READONLYTOGGLE + MENUITEM "Play Movie From Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING + MENUITEM "Stop Movie Replay", FCEU_CONTEXT_STOPMOVIE + MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES + MENUITEM "Make backup", FCEUX_CONTEXT_MAKEBACKUP + MENUITEM "Save Movie As...", FCEUX_CONTEXT_SAVEMOVIEAS + MENUITEM SEPARATOR + MENUITEM "Toggle to Recording", FCEUX_CONTEXT_TOGGLE_RECORDING + POPUP "Modify Movie" + BEGIN + MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME + MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE + END + POPUP "Record Mode" + BEGIN + MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT + END + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM SEPARATOR + MENUITEM "&Mode: Full state-movie loads", ID_CONTEXT_FULLSAVESTATES + MENUITEM SEPARATOR + MENUITEM "Help...", FCEU_CONTEXT_MOVIEHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+Movie+Recording+readonly" + BEGIN + MENUITEM "Toggle to read+write", FCEUX_CONTEXT_READONLYTOGGLE + MENUITEM "Play Movie from Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING + MENUITEM "Stop Movie Recording", FCEU_CONTEXT_STOPMOVIE + MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES + MENUITEM SEPARATOR + MENUITEM "Toggle to Playing", FCEUX_CONTEXT_TOGGLE_RECORDING + POPUP "Modify Movie" + BEGIN + MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME + MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE + END + POPUP "Record Mode" + BEGIN + MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT + END + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM SEPARATOR + MENUITEM "Help....", FCEU_CONTEXT_MOVIEHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END + POPUP "Game+Movie+Recording+readwrite" + BEGIN + MENUITEM "Toggle to Read-only", FCEUX_CONTEXT_READONLYTOGGLE + MENUITEM "Play Movie From Beginning", FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING + MENUITEM "Stop Movie Recording", FCEU_CONTEXT_STOPMOVIE + MENUITEM "View comments and subtitles", FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES + MENUITEM "Make backup", FCEUX_CONTEXT_MAKEBACKUP + MENUITEM "Save Movie As...", FCEUX_CONTEXT_SAVEMOVIEAS + MENUITEM SEPARATOR + MENUITEM "Toggle to Playing", FCEUX_CONTEXT_TOGGLE_RECORDING + POPUP "Modify Movie" + BEGIN + MENUITEM "Insert 1 Frame", FCEUX_CONTEXT_INSERT_1_FRAME + MENUITEM "Delete 1 Frame", FCEUX_CONTEXT_DELETE_1_FRAME + MENUITEM SEPARATOR + MENUITEM "Truncate at Current Frame", FCEUX_CONTEXT_TRUNCATE_MOVIE + END + POPUP "Record Mode" + BEGIN + MENUITEM "&Truncate", FCEUX_CONTEXT_RECORDMODE_TRUNCATE + MENUITEM "&Overwrite[W]", FCEUX_CONTEXT_RECORDMODE_OVERWRITE + MENUITEM "&Insert[I]", FCEUX_CONTEXT_RECORDMODE_INSERT + END + MENUITEM SEPARATOR + MENUITEM "Undo savestate", FCEUX_CONTEXT_UNDOSAVESTATE + MENUITEM "Undo loadstate", FCEUX_CONTEXT_UNDOLOADSTATE + MENUITEM "Rewind to last auto-save", FCEUX_CONTEXT_REWINDTOLASTAUTO + MENUITEM SEPARATOR + MENUITEM "&Mode: Full state-movie loads", ID_CONTEXT_FULLSAVESTATES + MENUITEM SEPARATOR + MENUITEM "Help...", FCEU_CONTEXT_MOVIEHELP + MENUITEM SEPARATOR + MENUITEM "Use Config > Gui to get zapper right click", FCEUX_CONTEXT_GUICONFIG + END +END + +RAMWATCH_MENU MENU +BEGIN + POPUP "File" + BEGIN + MENUITEM "&New list\tCtrl N", RAMMENU_FILE_NEW + MENUITEM "&Open...\tCtrl O", RAMMENU_FILE_OPEN + MENUITEM "&Save\tCtrl S", RAMMENU_FILE_SAVE + MENUITEM "Sa&ve As...\tCtrl Shift S", RAMMENU_FILE_SAVEAS + MENUITEM "&Append file...", RAMMENU_FILE_APPEND + MENUITEM "Recent", RAMMENU_FILE_RECENT + MENUITEM SEPARATOR + MENUITEM "Auto-&load", RAMMENU_FILE_AUTOLOAD + MENUITEM "Save Window Position", RAMMENU_FILE_SAVEWINDOW + MENUITEM SEPARATOR + MENUITEM "&Close\tAlt F4", IDCANCEL + END + POPUP "Watches" + BEGIN + MENUITEM "&New Watch\tN", IDC_C_WATCH + MENUITEM "&Edit Watch\tE", IDC_C_WATCH_EDIT + MENUITEM "&Remove Watch\tR", IDC_C_WATCH_REMOVE + MENUITEM "Duplicate Watch\tA", IDC_C_WATCH_DUPLICATE + MENUITEM "Add &Separator\tS", IDC_C_WATCH_SEPARATE + MENUITEM SEPARATOR + MENUITEM "Move Up\tU", IDC_C_WATCH_UP + MENUITEM "Move Down\tD", IDC_C_WATCH_DOWN + END +END + +CHEATCONTEXTMENUS MENU +BEGIN + POPUP "CheatListPopup" + BEGIN + MENUITEM "Toggle selected Cheats", CHEAT_CONTEXT_LIST_TOGGLECHEAT + MENUITEM "Poke Cheat Value", CHEAT_CONTEXT_LIST_POKECHEATVALUE + MENUITEM "Goto in Hex Editor", CHEAT_CONTEXT_LIST_GOTOINHEXEDITOR + MENUITEM "Delete selected Cheats", CHEAT_CONTEXT_LIST_DELETESELECTEDCHEATS + END + POPUP "CheatPossiPopup" + BEGIN + MENUITEM "Add to Memory Watch", CHEAT_CONTEXT_POSSI_ADDTOMEMORYWATCH + MENUITEM "Add cheat", CHEAT_CONTEXT_POSSI_ADDCHEAT + MENUITEM "Add to RAM Watch", CHEAT_CONTEXT_POSSI_ADDTORAMWATCH + MENUITEM "Go to in Hex Editor", CHEAT_CONTEXT_POSSI_GOTOINHEXEDITOR + END +END + +DEBUGCONTEXTMENUS MENU +BEGIN + POPUP "DebugListPopup" + BEGIN + MENUITEM "Toggle Breakpoint\tDbl-Clk", DEBUGGER_CONTEXT_TOGGLEBREAK + END +END + +LUAWINDOW_MENU MENU +BEGIN + POPUP "Console" + BEGIN + MENUITEM "&Font...", IDC_LUACONSOLE_CHOOSEFONT + MENUITEM "Clear", IDC_LUACONSOLE_CLEAR + END +END + +DISASMCONTEXTMENUS MENU +BEGIN + POPUP "DisasmPopup" + BEGIN + MENUITEM "Copy\tCtrl+C", DISASM_CONTEXT_COPY + MENUITEM "Select All\tCtrl+A", DISASM_CONTEXT_SELECTALL + END +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Dialog +// + +DIRCONFIG DIALOGEX 63, 7, 305, 255 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Directories Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",CLOSE_BUTTON,175,230,56,14 + PUSHBUTTON "Cancel",BTN_CANCEL,239,230,56,14 + EDITTEXT 113,71,9,158,12,ES_AUTOHSCROLL + EDITTEXT EDIT_ROMS,71,27,158,12,ES_AUTOHSCROLL + EDITTEXT 101,71,45,158,12,ES_AUTOHSCROLL + EDITTEXT 102,71,63,158,12,ES_AUTOHSCROLL + EDITTEXT 103,71,81,158,12,ES_AUTOHSCROLL + EDITTEXT 104,71,99,158,12,ES_AUTOHSCROLL + EDITTEXT 105,71,117,158,12,ES_AUTOHSCROLL + EDITTEXT 106,71,135,158,12,ES_AUTOHSCROLL + EDITTEXT 107,71,153,158,12,ES_AUTOHSCROLL + EDITTEXT 110,71,171,158,12,ES_AUTOHSCROLL + EDITTEXT 111,71,189,158,12,ES_AUTOHSCROLL + EDITTEXT 112,71,207,158,12,ES_AUTOHSCROLL + PUSHBUTTON "Browse...",213,239,8,56,14 + PUSHBUTTON "Browse...",BUTTON_ROMS,239,26,56,14 + PUSHBUTTON "Browse...",201,239,44,56,14 + PUSHBUTTON "Browse...",202,239,62,56,14 + PUSHBUTTON "Browse...",203,239,80,56,14 + PUSHBUTTON "Browse...",204,239,98,56,14 + PUSHBUTTON "Browse...",205,239,116,56,14 + PUSHBUTTON "Browse...",206,239,134,56,14 + PUSHBUTTON "Browse...",207,239,152,56,14 + PUSHBUTTON "Browse...",210,239,170,56,14 + PUSHBUTTON "Browse...",211,239,188,56,14 + PUSHBUTTON "Browse...",212,239,206,56,14 + LTEXT "Base Directory",IDC_STATIC,10,10,47,8 + LTEXT "Roms",IDC_STATIC,10,28,19,8 + LTEXT "Battery Saves",IDC_STATIC,10,46,45,8 + LTEXT "Save States",IDC_STATIC,10,64,41,9 + LTEXT "FDS Bios Rom",IDC_STATIC,10,82,47,8 + LTEXT "Screenshots",IDC_STATIC,10,100,40,8 + LTEXT "Cheats",IDC_STATIC,10,118,23,8 + LTEXT "Movies",IDC_STATIC,10,136,24,8 + LTEXT "Memory Watch",IDC_STATIC,10,154,52,9 + LTEXT "Input Presets",IDC_STATIC,10,172,42,8 + LTEXT "Lua Scripts",IDC_STATIC,10,190,36,8 + LTEXT "Avi Output",IDC_STATIC,10,208,34,8 +END + +DWBDIALOG DIALOG 33, 99, 250, 56 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "DWB!" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Text",LBL_DWBDIALOG_TEXT,7,9,237,8 + PUSHBUTTON "Clear",BTN_CLEAR,64,32,50,14 + PUSHBUTTON "Close",BTN_CLOSE,188,33,50,14 +END + +FKBDIALOG DIALOG 13, 72, 402, 194 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Family Keyboard Configuration" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "Close",BTN_CLOSE,320,170,56,14 + LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Family Keyboard input.",65503,18,6,370,12 + GROUPBOX "",65502,11,22,380,133,WS_GROUP + PUSHBUTTON "F1",300,22,43,32,12 + PUSHBUTTON "1",308,30,59,16,12 + PUSHBUTTON "F2",301,60,43,32,12 + PUSHBUTTON "F3",302,98,43,32,12 + PUSHBUTTON "F4",303,136,43,32,12 + PUSHBUTTON "F5",304,174,43,32,12 + PUSHBUTTON "F6",305,212,43,32,12 + PUSHBUTTON "F7",306,250,43,32,12 + PUSHBUTTON "F8",307,288,43,32,12 + PUSHBUTTON "2",309,49,59,16,12 + PUSHBUTTON "3",310,68,59,16,12 + PUSHBUTTON "4",311,87,59,16,12 + PUSHBUTTON "5",312,106,59,16,12 + PUSHBUTTON "6",313,125,59,16,12 + PUSHBUTTON "7",314,144,59,16,12 + PUSHBUTTON "8",315,163,59,16,12 + PUSHBUTTON "9",316,182,59,16,12 + PUSHBUTTON "0",317,201,59,16,12 + PUSHBUTTON "-",318,220,59,16,12 + PUSHBUTTON "^",319,239,59,16,12 + PUSHBUTTON "\\",320,258,59,16,12 + PUSHBUTTON "STP",321,277,59,16,12 + PUSHBUTTON "ESC",322,22,75,16,12 + PUSHBUTTON "Q",323,41,75,16,12 + PUSHBUTTON "W",324,60,75,16,12 + PUSHBUTTON "E",325,79,75,16,12 + PUSHBUTTON "R",326,98,75,16,12 + PUSHBUTTON "T",327,117,75,16,12 + PUSHBUTTON "Y",328,136,75,16,12 + PUSHBUTTON "U",329,155,75,16,12 + PUSHBUTTON "I",330,174,75,16,12 + PUSHBUTTON "O",331,193,75,16,12 + PUSHBUTTON "P",332,212,75,16,12 + PUSHBUTTON "@",333,231,75,16,12 + PUSHBUTTON "[",334,250,75,16,12 + PUSHBUTTON "RETURN",335,272,75,32,12 + PUSHBUTTON "CTR",336,26,91,16,12 + PUSHBUTTON "A",337,45,91,16,12 + PUSHBUTTON "S",338,64,91,16,12 + PUSHBUTTON "D",339,83,91,16,12 + PUSHBUTTON "F",340,102,91,16,12 + PUSHBUTTON "G",341,121,91,16,12 + PUSHBUTTON "H",342,140,91,16,12 + PUSHBUTTON "J",343,159,91,16,12 + PUSHBUTTON "K",344,178,91,16,12 + PUSHBUTTON "L",345,197,91,16,12 + PUSHBUTTON ";",346,216,91,16,12 + PUSHBUTTON ":",347,235,91,16,12 + PUSHBUTTON "]",348,254,91,16,12 + PUSHBUTTON "KANA",349,273,91,16,12 + PUSHBUTTON "Z",351,55,107,16,12 + PUSHBUTTON "X",352,74,107,16,12 + PUSHBUTTON "C",353,93,107,16,12 + PUSHBUTTON "V",354,112,107,16,12 + PUSHBUTTON "B",355,131,107,16,12 + PUSHBUTTON "N",356,150,107,16,12 + PUSHBUTTON "M",357,169,107,16,12 + PUSHBUTTON ",",358,188,107,16,12 + PUSHBUTTON ".",359,207,107,16,12 + PUSHBUTTON "/",360,226,107,16,12 + PUSHBUTTON "",361,245,107,16,12 + PUSHBUTTON "SHIFT",350,19,107,32,12 + PUSHBUTTON "SHIFT",362,265,107,32,12 + PUSHBUTTON "GRPH",363,74,123,16,12 + PUSHBUTTON "SPACE",364,93,123,149,12 + PUSHBUTTON "CLR",365,316,67,16,12 + PUSHBUTTON "INS",366,335,67,16,12 + PUSHBUTTON "DEL",367,354,67,16,12 + PUSHBUTTON "UP",368,327,83,32,12 + PUSHBUTTON "LEFT",369,310,99,32,12 + PUSHBUTTON "RIGHT",370,346,99,32,12 + PUSHBUTTON "DOWN",371,327,115,32,12 +END + +GAMEPADDIALOG DIALOGEX 4, 109, 243, 220 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Gamepad Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",BTN_CLOSE,173,196,56,14 + GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP + PUSHBUTTON "Up",304,35,27,24,12 + PUSHBUTTON "Left",306,9,45,25,12 + PUSHBUTTON "Right",307,60,45,24,12 + PUSHBUTTON "Down",305,35,64,24,12 + PUSHBUTTON "Select",302,91,45,26,12 + PUSHBUTTON "Start",303,126,45,26,12 + PUSHBUTTON "B",301,169,45,16,12 + PUSHBUTTON "A",300,195,45,16,12 + PUSHBUTTON "Turbo B",309,154,29,32,12 + PUSHBUTTON "Turbo A",308,195,29,32,12 + GROUPBOX "",GRP_GAMEPAD2,4,101,232,82,WS_GROUP + PUSHBUTTON "Up",316,35,120,24,12 + PUSHBUTTON "Left",318,9,138,25,12 + PUSHBUTTON "Right",319,60,138,24,12 + PUSHBUTTON "Down",317,35,157,24,12 + PUSHBUTTON "Select",314,91,138,26,12 + PUSHBUTTON "Start",315,126,138,26,12 + PUSHBUTTON "B",313,169,138,16,12 + PUSHBUTTON "A",312,195,138,16,12 + PUSHBUTTON "Turbo B",321,154,122,32,12 + PUSHBUTTON "Turbo A",320,195,122,32,12 +END + +GUICONFIG DIALOGEX 16, 123, 184, 158 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "GUI Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",BTN_CLOSE,65,136,56,14 + CONTROL "Load ""File Open"" dialog when FCEUX starts.",CB_LOAD_FILE_OPEN, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,8,168,12 + CONTROL "Automatically hide menu on game load.",CB_AUTO_HIDE_MENU, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,23,168,12 + CONTROL "Ask confirmation on exit attempt.",CB_ASK_EXIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,38,168,12 + CONTROL "Disable screen saver while game is loaded.",CB_DISABLE_SCREEN_SAVER, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,53,168,12 + CONTROL "Enable right-click context menu",CB_ENABLECONTEXTMENU, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,68,168,12 + CONTROL "Switch fullscreen by double-click",CB_FS_BY_DOUBLECLICK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,84,168,12 + CONTROL "Partially disable Visual Themes (Requires restart)",CB_PARTIALVISUALTHEME, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,100,168,12 + CONTROL "Single Instance Mode",IDC_SINGLEINSTANCE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,117,167,10 +END + +INPUTCONFIG DIALOGEX 122, 105, 349, 199 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Input Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "Port 1:",102,20,31,152,50 + COMBOBOX COMBO_PAD1,27,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Configure",BTN_PORT1,109,43,56,14 + GROUPBOX "Port 2:",103,176,31,152,50 + COMBOBOX COMBO_PAD2,183,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Configure",BTN_PORT2,265,41,56,14 + GROUPBOX "NES-style Input Ports",108,10,8,328,83 + GROUPBOX "Famicom Expansion Port:",109,176,93,162,50 + COMBOBOX COMBO_FAM,183,122,84,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Configure",BTN_FAM,275,105,56,14 + CONTROL "",65487,"Static",SS_BLACKFRAME,27,41,71,12 + CONTROL "",65486,"Static",SS_BLACKFRAME,183,41,71,12 + CONTROL "",65485,"Static",SS_BLACKFRAME,183,106,84,12 + CTEXT "",TXT_PAD1,30,42,65,10 + CTEXT "",TXT_PAD2,186,42,65,10 + CTEXT "",TXT_FAM,186,107,78,10 + PUSHBUTTON "Set",BTN_AUTO_HOLD,19,157,45,13 + LTEXT "not assigned",LBL_AUTO_HOLD,71,159,87,8 + PUSHBUTTON "Clear",BTN_CLEAR_AH,19,172,45,13 + LTEXT "not assigned",LBL_CLEAR_AH,71,174,87,8 + DEFPUSHBUTTON "Close",BTN_CLOSE,282,177,56,14 + GROUPBOX "Input Presets",113,10,93,162,50 + CONTROL "Allow Left+Right / Up+Down",BTN_ALLOW_LRUD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,183,157,107,10 + PUSHBUTTON "Set",BTN_PRESET_SET1,34,103,37,11 + PUSHBUTTON "Set",BTN_PRESET_SET2,34,115,37,11 + PUSHBUTTON "Set",BTN_PRESET_SET3,34,127,37,11 + PUSHBUTTON "Import",BTN_PRESET_IMPORT1,84,103,37,11 + PUSHBUTTON "Import",BTN_PRESET_IMPORT2,84,115,37,11 + PUSHBUTTON "Import",BTN_PRESET_IMPORT3,84,127,37,11 + PUSHBUTTON "Export",BTN_PRESET_EXPORT1,123,103,37,11 + PUSHBUTTON "Export",BTN_PRESET_EXPORT2,123,115,37,11 + PUSHBUTTON "Export",BTN_PRESET_EXPORT3,123,127,37,11 + GROUPBOX "Auto-Hold",118,10,146,162,44 + GROUPBOX "Emulation",119,176,146,162,25 + CTEXT "1",IDC_STATIC,18,105,8,8 + CTEXT "2",IDC_STATIC,18,116,8,8 + CTEXT "3",IDC_STATIC,18,128,8,8 + CONTROL "Attach four-score (implies four gamepads)",CHECK_ENABLE_FOURSCORE, + "Button",BS_AUTOCHECKBOX,18,18,142,12 + CONTROL "Replace Port 2 Start With Microphone",CHECK_ENABLE_MICROPHONE, + "Button",BS_AUTOCHECKBOX,174,18,142,12 +END + +MAHJONGDIALOG DIALOG 65510, 106, 340, 110 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "mahjong" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "Close",BTN_CLOSE,277,91,56,14 + GROUPBOX "",321,8,8,324,73,WS_GROUP + PUSHBUTTON "A",300,14,42,16,12 + PUSHBUTTON "B",301,36,42,16,12 + PUSHBUTTON "C",302,58,42,16,12 + PUSHBUTTON "D",303,80,42,16,12 + PUSHBUTTON "E",304,102,42,16,12 + PUSHBUTTON "F",305,124,42,16,12 + PUSHBUTTON "G",306,146,42,16,12 + PUSHBUTTON "H",307,168,42,16,12 + PUSHBUTTON "I",308,190,42,16,12 + PUSHBUTTON "J",309,212,42,16,12 + PUSHBUTTON "K",310,234,42,16,12 + PUSHBUTTON "L",311,256,42,16,12 + PUSHBUTTON "M",312,278,42,16,12 + PUSHBUTTON " ",313,302,40,20,15 + PUSHBUTTON "SEL",314,124,58,16,12 + PUSHBUTTON "ST",315,146,58,16,12 + PUSHBUTTON " ",316,168,58,16,12 + PUSHBUTTON " ",317,190,58,16,12 + PUSHBUTTON " ",318,212,58,16,12 + PUSHBUTTON " ",319,234,58,16,12 + PUSHBUTTON " ",320,256,58,16,12 +END + +MAPINPUT DIALOGEX 0, 0, 318, 294 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Hotkeys" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",IDOK,261,274,50,14 + PUSHBUTTON "Cancel",BTN_CANCEL,205,274,50,14 + CONTROL "List2",LV_MAPPING,"SysListView32",LVS_REPORT | WS_BORDER | WS_TABSTOP,7,7,304,243 + PUSHBUTTON "Restore Defaults",BTN_RESTORE_DEFAULTS,7,274,75,14 + COMBOBOX COMBO_FILTER,32,255,279,193,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Filter:",65484,6,255,21,12,SS_CENTERIMAGE | NOT WS_GROUP +END + +MESSAGELOG DIALOGEX 33, 38, 197, 229 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Message Log" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + EDITTEXT LBL_LOG_TEXT,1,1,194,208,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL + PUSHBUTTON "Clear",CLEAR_LOG,94,211,47,14 + PUSHBUTTON "Close",CLOSE_LOG,146,211,47,14 +END + +NETMOO DIALOGEX 44, 59, 365, 209 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Network Play" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + EDITTEXT IDC_NETMOO_CMD_INPUT,10,137,347,12,ES_MULTILINE | ES_AUTOVSCROLL | ES_AUTOHSCROLL | ES_OEMCONVERT | ES_WANTRETURN + EDITTEXT IDC_NETMOO_STATUS,10,8,347,130,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL + RTEXT "Remote Host:",65481,13,167,44,8 + EDITTEXT IDC_NETMOO_HOST,60,165,90,12 + EDITTEXT IDC_NETMOO_PORT,151,165,27,12 + GROUPBOX "Settings",100,10,154,347,47,WS_GROUP + DEFPUSHBUTTON "Connect",BTN_NETMOO_CONNECT,296,163,56,14 + EDITTEXT IDC_NETMOO_NICK,282,182,70,12,ES_AUTOHSCROLL + RTEXT "Local Players:",65480,187,167,46,8 + RTEXT "Nickname:",65479,238,184,40,8 + COMBOBOX COMBO_NETMOO_LOCAL_PLAYERS,238,165,28,51,CBS_DROPDOWNLIST | WS_TABSTOP + RTEXT "Game Key:",65478,127,184,39,8 + EDITTEXT IDC_NETMOO_KEY,169,182,67,12 + RTEXT "Password:",65477,19,184,37,8 + EDITTEXT IDC_NETMOO_PASS,60,182,67,12,ES_PASSWORD +END + +NEWINPUT DIALOGEX 0, 0, 186, 66 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Enter New Input" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + CTEXT "Press a key",LBL_KEY_COMBO,31,14,122,20 + PUSHBUTTON "Clear",BTN_CLEAR,95,45,50,14 + PUSHBUTTON "OK",BTN_OK,40,45,50,14 +END + +PALCONFIG DIALOGEX 16, 81, 228, 217 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Palette Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",BUTTON_CLOSE,162,195,56,14 + GROUPBOX "NES Palette",302,10,8,102,81,WS_GROUP + DEFPUSHBUTTON "&Load Palette...",BTN_PALETTE_LOAD,18,39,58,14 + CONTROL "Enabled",CHECK_PALETTE_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,22,87,12 + CONTROL "Tint",CTL_TINT_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,44,91,11 + GROUPBOX "NTSC Color Emulation",101,115,8,103,81,WS_GROUP + CONTROL "Hue",CTL_HUE_TRACKBAR,"msctls_trackbar32",WS_DISABLED | WS_TABSTOP,121,69,91,11 + CTEXT "Hue",64395,124,59,85,8,WS_DISABLED + CTEXT "Tint",65463,123,34,85,8,WS_DISABLED + CONTROL "Force Grayscale",CHECK_PALETTE_GRAYSCALE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,57,85,12 + CONTROL "Use Custom Palette",CHECK_PALETTE_CUSTOM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,22,85,12 + GROUPBOX "PAL Emulation",IDC_STATIC,10,89,208,66,WS_DISABLED + CONTROL "",CTL_PALSAT_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,78,110,70,15 + LTEXT "Saturation:",STATIC_SATVALUE,83,100,58,8,WS_DISABLED + PUSHBUTTON "Reset",BTN_PALETTE_RESET,161,132,50,14,WS_DISABLED + CONTROL "",CTL_PALNOTCH_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,11,110,68,15 + LTEXT "Notch:",STATIC_NOTCHVALUE,16,100,46,8,WS_DISABLED + CONTROL "",CTL_PALSHARP_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,156,109,61,15 + LTEXT "Sharpness:",STATIC_SHARPVALUE,161,99,50,8,WS_DISABLED + LTEXT "NTSC Color Emulation overrides Internal default Palette.\nIndividual Game Palette overrides Internal+NTSC Palettes.\nCustom Palette overrides all of the above.\nPAL Emulation overrides other choices when PAL filter is selected",IDC_STATIC,10,159,208,33 + CONTROL "",CTL_PALCONTRAST_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,11,134,67,15 + LTEXT "Contrast: ",STATIC_CONTRASTVALUE,16,126,55,8,WS_DISABLED + CONTROL "",CTL_PALBRIGHT_TRACKBAR,"msctls_trackbar32",TBS_NOTICKS | WS_DISABLED | WS_TABSTOP,78,133,70,15 + LTEXT "Brightness: ",STATIC_BRIGHTVALUE,83,125,61,8,WS_DISABLED + CONTROL "De-emphasis bit swap",CHECK_DEEMPH_SWAP,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,73,83,10 +END + +POWERPADDIALOG DIALOG 30, 123, 131, 119 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Power Pad Configuration" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "Close",BTN_CLOSE,34,95,56,14 + GROUPBOX "",312,8,10,114,74,WS_GROUP + PUSHBUTTON "1",300,21,23,16,12 + PUSHBUTTON "2",301,43,23,16,12 + PUSHBUTTON "3",302,70,23,16,12 + PUSHBUTTON "4",303,91,23,16,12 + PUSHBUTTON "5",304,21,41,16,12 + PUSHBUTTON "6",305,43,41,16,12 + PUSHBUTTON "7",306,70,41,16,12 + PUSHBUTTON "8",307,91,41,16,12 + PUSHBUTTON "9",308,21,59,16,12 + PUSHBUTTON "10",309,43,59,16,12 + PUSHBUTTON "11",310,70,59,16,12 + PUSHBUTTON "12",311,91,59,16,12 +END + +QUIZKINGDIALOG DIALOG 30, 123, 160, 74 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "quiz king" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "Close",BTN_CLOSE,54,56,56,14 + GROUPBOX "Buzzers",312,8,7,144,39,WS_GROUP + PUSHBUTTON "1",300,16,23,16,12 + PUSHBUTTON "2",301,38,23,16,12 + PUSHBUTTON "3",302,60,23,16,12 + PUSHBUTTON "4",303,82,23,16,12 + PUSHBUTTON "5",304,104,23,16,12 + PUSHBUTTON "6",305,126,23,16,12 +END + +SOUNDCONFIG DIALOGEX 8, 95, 334, 282 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Sound Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",BTN_CLOSE,280,260,44,14 + GROUPBOX "Output/Output Format:",302,10,9,131,93,WS_GROUP + CONTROL "Sound enabled.",CHECK_SOUND_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,22,117,12 + GROUPBOX "Buffering:",127,150,9,131,93,WS_GROUP + CONTROL "Use Global Focus",CHECK_SOUND_GLOBAL_FOCUS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,157,22,100,12 + CTEXT "Sound Latency",65459,162,50,107,8 + CONTROL "",CTL_LATENCY_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,162,70,107,13 + GROUPBOX "Master",125,19,142,44,93,WS_GROUP + CONTROL "",CTL_VOLUME_TRACKBAR,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,27,150,28,83 + LTEXT "15 ms",65458,160,87,20,8 + LTEXT "200 ms",65457,250,87,25,8 + LTEXT "ms",65456,211,60,19,8 + LTEXT "Quality:",65455,17,43,27,10 + COMBOBOX COMBO_SOUND_QUALITY,50,40,67,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Rate:",65461,17,64,22,10 + COMBOBOX COMBO_SOUND_RATE,50,61,53,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Hz",65460,108,64,15,9 + LTEXT "Depth:",65462,17,85,27,10 + COMBOBOX COMBO_SOUND_8BIT,50,82,67,45,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + CONTROL "Mute frame advance",CHECK_SOUND_MUTEFA,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,110,87,11 + CONTROL "Mute Turbo",CHECK_SOUND_MUTETURBO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,138,111,53,10 + GROUPBOX "Triangle",131,70,142,44,93,WS_GROUP + CONTROL "",CTL_VOLUME_TRACKBAR_TRIANGLE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,78,150,28,83 + GROUPBOX "Square1",132,121,142,44,93,WS_GROUP + CONTROL "",CTL_VOLUME_TRACKBAR_SQUARE1,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,129,150,28,83 + GROUPBOX "Square2",133,170,142,44,93,WS_GROUP + CONTROL "",CTL_VOLUME_TRACKBAR_SQUARE2,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,178,150,28,83 + GROUPBOX "Noise",134,221,142,44,93,WS_GROUP + CONTROL "",CTL_VOLUME_TRACKBAR_NOISE,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,229,150,28,83 + GROUPBOX "PCM",135,271,142,44,93,WS_GROUP + CONTROL "",CTL_VOLUME_TRACKBAR_PCM,"msctls_trackbar32",TBS_AUTOTICKS | TBS_VERT | TBS_BOTH | WS_TABSTOP,279,150,28,83 + GROUPBOX "Volume Control",IDC_VOLUMEGROUP,10,127,314,127 + PUSHBUTTON "Restore defaults",IDC_SOUND_RESTOREDEFAULTVOL,19,238,56,11 + LTEXT "",ID_SOUND_TRITOP,76,135,38,8 + LTEXT "",ID_SOUND_QUALITYNOTIFY,170,133,144,8 + CONTROL "Swap Duty Cycles",CHECK_SOUND_SWAPDUTY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,239,110,74,10 +END + +SUBORKBDIALOG DIALOGEX 13, 72, 478, 171 +STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Subor Keyboard Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",1,405,151,56,14 + LTEXT "Remember to push the ""Scroll Lock"" key during emulation to enable Keyboard input.",-1,18,6,370,12 + GROUPBOX "",-1,9,22,461,123,WS_GROUP + PUSHBUTTON "Esc",300,20,36,16,12 + PUSHBUTTON "F1",301,58,37,16,12 + PUSHBUTTON "F2",302,78,37,16,12 + PUSHBUTTON "F3",303,98,37,16,12 + PUSHBUTTON "F4",304,118,37,16,12 + PUSHBUTTON "F5",305,143,37,16,12 + PUSHBUTTON "F6",306,163,37,16,12 + PUSHBUTTON "F7",307,183,37,16,12 + PUSHBUTTON "F8",308,203,37,16,12 + PUSHBUTTON "F9",309,229,37,16,12 + PUSHBUTTON "F10",310,249,37,16,12 + PUSHBUTTON "F11",311,268,37,16,12 + PUSHBUTTON "F12",312,288,37,16,12 + PUSHBUTTON "Pause",313,318,36,16,12 + PUSHBUTTON "`",314,20,60,16,12 + PUSHBUTTON "1",315,39,60,16,12 + PUSHBUTTON "2",316,58,60,16,12 + PUSHBUTTON "3",317,77,60,16,12 + PUSHBUTTON "4",318,96,60,16,12 + PUSHBUTTON "5",319,115,60,16,12 + PUSHBUTTON "6",320,134,60,16,12 + PUSHBUTTON "7",321,153,60,16,12 + PUSHBUTTON "8",322,172,60,16,12 + PUSHBUTTON "9",323,191,60,16,12 + PUSHBUTTON "0",324,210,60,16,12 + PUSHBUTTON "-",325,229,60,16,12 + PUSHBUTTON "=",326,248,60,16,12 + PUSHBUTTON "BS",327,286,60,16,12 + PUSHBUTTON "Ins",328,318,59,16,12 + PUSHBUTTON "Home",329,337,59,16,12 + PUSHBUTTON "NL",330,385,59,16,12 + PUSHBUTTON "/",331,405,59,16,12 + PUSHBUTTON "*",332,425,59,16,12 + PUSHBUTTON "-",333,444,59,16,12 + PUSHBUTTON "PUp",334,357,59,16,12 + PUSHBUTTON "TAB",335,20,76,24,12 + PUSHBUTTON "Q",336,47,76,16,12 + PUSHBUTTON "W",337,66,76,16,12 + PUSHBUTTON "E",338,85,76,16,12 + PUSHBUTTON "R",339,104,76,16,12 + PUSHBUTTON "T",340,123,76,16,12 + PUSHBUTTON "Y",341,142,76,16,12 + PUSHBUTTON "U",342,161,76,16,12 + PUSHBUTTON "I",343,180,76,16,12 + PUSHBUTTON "O",344,199,76,16,12 + PUSHBUTTON "P",345,218,76,16,12 + PUSHBUTTON "[",346,237,76,16,12 + PUSHBUTTON "]",347,256,76,16,12 + PUSHBUTTON "Enter",348,274,76,28,29 + PUSHBUTTON "Del",349,318,75,16,12 + PUSHBUTTON "End",350,338,75,16,12 + PUSHBUTTON "PDn",351,357,75,16,12 + PUSHBUTTON "7",352,385,75,16,12 + PUSHBUTTON "8",353,405,75,16,12 + PUSHBUTTON "9",354,425,75,16,12 + PUSHBUTTON "+",355,444,75,16,28 + PUSHBUTTON "CL",356,20,92,27,12 + PUSHBUTTON "A",357,52,92,16,12 + PUSHBUTTON "S",358,71,92,16,12 + PUSHBUTTON "D",359,90,92,16,12 + PUSHBUTTON "F",360,109,92,16,12 + PUSHBUTTON "G",361,128,92,16,12 + PUSHBUTTON "H",362,147,92,16,12 + PUSHBUTTON "J",363,166,92,16,12 + PUSHBUTTON "K",364,185,92,16,12 + PUSHBUTTON "L",365,204,92,16,12 + PUSHBUTTON ";",366,223,92,16,12 + PUSHBUTTON "'",367,242,92,16,12 + PUSHBUTTON "4",368,385,91,16,12 + PUSHBUTTON "5",369,405,91,16,12 + PUSHBUTTON "6",370,425,91,16,12 + PUSHBUTTON "SHIFT",371,20,108,37,12 + PUSHBUTTON "Z",372,62,108,16,12 + PUSHBUTTON "X",373,81,108,16,12 + PUSHBUTTON "C",374,100,108,16,12 + PUSHBUTTON "V",375,119,108,16,12 + PUSHBUTTON "B",376,138,108,16,12 + PUSHBUTTON "N",377,157,108,16,12 + PUSHBUTTON "M",378,176,108,16,12 + PUSHBUTTON ",",379,195,108,16,12 + PUSHBUTTON ".",380,214,108,16,12 + PUSHBUTTON "/",381,233,108,16,12 + PUSHBUTTON "\\",382,267,60,16,12 + PUSHBUTTON "Up",383,337,108,16,12 + PUSHBUTTON "1",384,385,107,16,12 + PUSHBUTTON "2",385,405,107,16,12 + PUSHBUTTON "3",386,425,107,16,12 + PUSHBUTTON "CTRL",387,20,123,28,12 + PUSHBUTTON "ALT",388,66,123,27,12 + PUSHBUTTON "SPACE",389,96,123,130,12 + PUSHBUTTON "Left",390,318,123,16,12 + PUSHBUTTON "Dn",391,337,123,16,12 + PUSHBUTTON "Right",392,357,123,16,12 + PUSHBUTTON "0",393,386,123,35,12 + PUSHBUTTON ".",394,425,123,16,12 + PUSHBUTTON "SHIFT",395,254,108,48,12 + PUSHBUTTON "ALT",396,229,123,29,12 + PUSHBUTTON "CTRL",397,274,123,28,12 + PUSHBUTTON "Break",398,337,36,16,12 + PUSHBUTTON "Reset",399,357,36,16,12 + PUSHBUTTON "Enter",400,444,107,16,28 +END + +TIMINGCONFIG DIALOGEX 23, 157, 203, 110 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Timing Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",1,137,87,56,14 + CONTROL "Disable speed throttling used when sound is disabled.",CB_DISABLE_SPEED_THROTTLING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,8,183,12 + CONTROL "Set high-priority thread.",CB_SET_HIGH_PRIORITY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,24,102,12 + CONTROL "Overclocking (old PPU only).",CB_OVERCLOCKING,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,41,101,10 + EDITTEXT IDC_EXTRA_SCANLINES,104,55,84,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + LTEXT "Post-render scanlines:",IDC_EXTRA_SCANLINES_TEXT,21,57,74,8,WS_DISABLED + CONTROL "Don't overclock 7-bit samples.",CB_SKIP_7BIT,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,10,87,111,10 + EDITTEXT IDC_VBLANK_SCANLINES,104,68,84,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + LTEXT "VBlank scanlines:",IDC_VBLANK_SCANLINES_TEXT,21,71,76,8,WS_DISABLED +END + +MOVIEOPTIONS DIALOGEX 65520, 76, 147, 222 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Movie Options" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",IDC_MOVIE_CLOSE,48,200,49,14,BS_CENTER + CONTROL "Pause after playback",IDC_MOVIE_PAUSEAFTERPLAYBACK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,26,110,10 + CONTROL "Bind savestates to movies",IDC_MOVIE_BINDSAVESTATES, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,64,111,10 + CONTROL "Display movie subtitles",IDC_MOVIE_DISPLAYSUBTITLES, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,83,102,10 + CONTROL "Put movie subtitles in AVI",IDC_MOVIE_SUBTITLESINAVI, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,33,101,102,10 + CONTROL "Automatically backup movies",IDC_MOVIE_AUTOBACKUP, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,122,114,10 + CONTROL "Load full savestate-movies:",IDC_FULLSAVESTATES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,141,110,10 + LTEXT "Loading states in record mode",IDC_STATIC,25,153,106,8 + LTEXT "will not immediately truncate",IDC_STATIC,25,163,107,8 + LTEXT "movie, next frame input will.",IDC_STATIC,25,173,108,8 + CONTROL "Close after playback",IDC_MOVIE_CLOSEAFTERPLAYBACK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,45,89,10 + CONTROL "Always suggest Read-Only replay",IDC_MOVIE_SUGGEST_READONLY, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,8,125,10 + LTEXT "(VBA-rr and SNES9x style)",IDC_STATIC,25,184,93,8 +END + +DWBDIALOGSIMPLE DIALOGEX 33, 99, 250, 39 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "DWBS!" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "Type a key, or press Escape to disable.",65429,53,14,125,8 +END + +MEMWATCH DIALOGEX 0, 0, 261, 270 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_ACCEPTFILES +CAPTION "Memory Watch" +MENU MEMWATCHMENU +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "",IDC_STATIC,3,0,126,200 + GROUPBOX "",IDC_STATIC,131,0,128,200 + EDITTEXT MW_ADDR00,6,17,30,14,ES_UPPERCASE + EDITTEXT MW_NAME00,41,17,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR01,6,32,30,14,ES_UPPERCASE + EDITTEXT MW_NAME01,41,32,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR02,6,47,30,14,ES_UPPERCASE + EDITTEXT MW_NAME02,41,47,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR03,6,62,30,14,ES_UPPERCASE + EDITTEXT MW_NAME03,41,62,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR04,6,77,30,14,ES_UPPERCASE + EDITTEXT MW_NAME04,41,77,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR05,6,92,30,14,ES_UPPERCASE + EDITTEXT MW_NAME05,41,92,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR06,6,107,30,14,ES_UPPERCASE + EDITTEXT MW_NAME06,41,107,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR07,6,122,30,14,ES_UPPERCASE + EDITTEXT MW_NAME07,41,122,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR08,6,137,30,14,ES_UPPERCASE + EDITTEXT MW_NAME08,41,137,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR09,6,152,30,14,ES_UPPERCASE + EDITTEXT MW_NAME09,41,152,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR10,6,167,30,14,ES_UPPERCASE + EDITTEXT MW_NAME10,41,167,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR11,6,182,30,14,ES_UPPERCASE + EDITTEXT MW_NAME11,41,182,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR12,135,17,30,14,ES_UPPERCASE + EDITTEXT MW_NAME12,171,17,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR13,135,32,30,14,ES_UPPERCASE + EDITTEXT MW_NAME13,171,32,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR14,135,47,30,14,ES_UPPERCASE + EDITTEXT MW_NAME14,171,47,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR15,135,62,30,14,ES_UPPERCASE + EDITTEXT MW_NAME15,171,62,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR16,135,77,30,14,ES_UPPERCASE + EDITTEXT MW_NAME16,171,77,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR17,135,92,30,14,ES_UPPERCASE + EDITTEXT MW_NAME17,171,92,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR18,135,107,30,14,ES_UPPERCASE + EDITTEXT MW_NAME18,171,107,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR19,135,122,30,14,ES_UPPERCASE + EDITTEXT MW_NAME19,171,122,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR20,135,137,30,14,ES_UPPERCASE + EDITTEXT MW_NAME20,171,137,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR21,135,152,30,14,ES_UPPERCASE + EDITTEXT MW_NAME21,171,152,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR22,135,167,30,14,ES_UPPERCASE + EDITTEXT MW_NAME22,171,167,55,14,ES_AUTOHSCROLL + EDITTEXT MW_ADDR23,135,182,30,14,ES_UPPERCASE + EDITTEXT MW_NAME23,171,182,55,14,ES_AUTOHSCROLL + LTEXT "Name",IDC_STATIC,41,7,20,8 + LTEXT "Address",IDC_STATIC,6,7,26,8 + LTEXT "Value",MW_VALUELABEL1,101,7,19,8 + LTEXT "Name",IDC_STATIC,171,7,20,8 + LTEXT "Address",IDC_STATIC,135,7,26,8 + LTEXT "Value",MW_VALUELABEL2,231,7,19,8 + LTEXT " ",EDIT00_RESULTS,89,225,26,8 + GROUPBOX "Memory Change Monitoring",IDC_STATIC,0,202,129,57,BS_CENTER + LTEXT "Address",IDC_STATIC,6,213,26,8 + LTEXT "Count",IDC_STATIC,90,213,20,8 + LTEXT "Formula",IDC_STATIC,47,213,26,8 + LTEXT " ",MEMW_EDIT00RMADDRESS,7,225,24,8 + PUSHBUTTON " ",MEMW_EDIT00RESET,115,225,11,7 + LTEXT "reset",IDC_STATIC,112,213,16,8 + COMBOBOX MEMW_EDIT00FORMULA,37,223,48,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + LTEXT " ",MEMW_EDIT01RMADDRESS,7,241,24,8 + COMBOBOX MEMW_EDIT01FORMULA,37,241,48,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + LTEXT " ",EDIT01_RESULTS,89,241,25,8 + PUSHBUTTON " ",MEMW_EDIT01RESET,115,241,11,7 + LTEXT " ",EDIT02_RESULTS,217,225,26,8 + LTEXT "Address",IDC_STATIC,133,213,26,8 + LTEXT "Formula",IDC_STATIC,173,213,26,8 + LTEXT " ",MEMW_EDIT02RMADDRESS,135,225,24,8 + PUSHBUTTON " ",MEMW_EDIT02RESET,242,225,11,7 + LTEXT "reset",IDC_STATIC,239,213,16,8 + COMBOBOX MEMW_EDIT02FORMULA,165,223,48,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + LTEXT " ",MEMW_EDIT03RMADDRESS,135,241,24,8 + COMBOBOX MEMW_EDIT03FORMULA,165,241,48,30,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + LTEXT " ",EDIT03_RESULTS,217,241,28,8 + PUSHBUTTON " ",MEMW_EDIT03RESET,242,241,11,7 + GROUPBOX "Memory Change Monitoring",IDC_STATIC,131,202,129,57,BS_CENTER + LTEXT "Count",IDC_STATIC,217,213,20,8 + PUSHBUTTON "<",MEMW_EXPANDCOLLAPSE,1,259,11,10 +END + +DEBUGGER DIALOGEX 54, 74, 546, 334 +STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "6502 Debugger" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + CONTROL "",IDC_DEBUGGER_DISASSEMBLY,"RichEdit20A",ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_BORDER | WS_HSCROLL,18,5,316,317 + SCROLLBAR IDC_DEBUGGER_DISASSEMBLY_VSCR,334,5,11,317,SBS_VERT + GROUPBOX "Status Flags",401,434,140,106,35,WS_TABSTOP + CONTROL "N",IDC_DEBUGGER_FLAG_N,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,440,149,18,12 + CONTROL "V",IDC_DEBUGGER_FLAG_V,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,466,149,18,12 + CONTROL "U",IDC_DEBUGGER_FLAG_U,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,491,149,18,12 + CONTROL "B",IDC_DEBUGGER_FLAG_B,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,149,18,12 + CONTROL "D",IDC_DEBUGGER_FLAG_D,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,440,161,18,12 + CONTROL "I",IDC_DEBUGGER_FLAG_I,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,466,161,18,12 + CONTROL "Z",IDC_DEBUGGER_FLAG_Z,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,491,161,18,12 + CONTROL "C",IDC_DEBUGGER_FLAG_C,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,516,161,18,12 + GROUPBOX "Breakpoints",IDC_DEBUGGER_BREAKPOINTS,434,2,106,138,WS_TABSTOP + LISTBOX IDC_DEBUGGER_BP_LIST,438,11,98,96,LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | WS_VSCROLL + PUSHBUTTON "Add",IDC_DEBUGGER_BP_ADD,438,109,31,15 + PUSHBUTTON "Delete",IDC_DEBUGGER_BP_DEL,472,109,31,15,WS_DISABLED + PUSHBUTTON "Edit",IDC_DEBUGGER_BP_EDIT,505,109,31,15,WS_DISABLED + PUSHBUTTON "Run",IDC_DEBUGGER_RUN,351,5,38,14 + PUSHBUTTON "Step Into",IDC_DEBUGGER_STEP_IN,392,5,39,14 + PUSHBUTTON "Step Out",IDC_DEBUGGER_STEP_OUT,351,21,38,14 + PUSHBUTTON "Step Over",IDC_DEBUGGER_STEP_OVER,392,21,39,14 + LTEXT "A:",IDC_STATIC,351,92,9,8 + LTEXT "X:",65534,378,92,9,8 + LTEXT "Y:",65533,406,92,9,8 + LTEXT "PC:",65532,349,74,13,8 + EDITTEXT IDC_DEBUGGER_VAL_A,359,90,15,12,ES_UPPERCASE | ES_WANTRETURN + EDITTEXT IDC_DEBUGGER_VAL_X,387,90,15,12,ES_UPPERCASE | ES_WANTRETURN + EDITTEXT IDC_DEBUGGER_VAL_Y,415,90,15,12,ES_UPPERCASE | ES_WANTRETURN + EDITTEXT IDC_DEBUGGER_VAL_PC,361,72,27,12,ES_UPPERCASE | ES_WANTRETURN + GROUPBOX "Stack",IDC_DEBUGGER_VAL_S,349,104,81,71,WS_TABSTOP + EDITTEXT IDC_DEBUGGER_STACK_CONTENTS,353,113,73,58,ES_MULTILINE | ES_UPPERCASE | ES_NOHIDESEL | ES_READONLY | WS_VSCROLL + PUSHBUTTON "Seek PC",IDC_DEBUGGER_SEEK_PC,392,71,39,14 + PUSHBUTTON "Seek To:",IDC_DEBUGGER_SEEK_TO,351,54,38,14 + EDITTEXT IDC_DEBUGGER_VAL_PCSEEK,392,55,38,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "PPU:",65531,353,179,17,10 + LTEXT "Sprite:",65530,353,191,20,10 + LTEXT "Scanline:",IDC_STATIC,353,203,31,8 + LTEXT "Pixel:",IDC_STATIC,353,216,17,8 + EDITTEXT IDC_DEBUGGER_VAL_PPU,372,179,25,12,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT + EDITTEXT IDC_DEBUGGER_VAL_SPR,375,191,15,12,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT + EDITTEXT IDC_DEBUGGER_VAL_SLINE,384,203,14,12,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER,WS_EX_TRANSPARENT + EDITTEXT IDC_DEBUGGER_VAL_PPUPIXEL,373,216,14,12,ES_UPPERCASE | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT + GROUPBOX "",IDC_DEBUGGER_VAL_S2,349,174,51,53,WS_TABSTOP + EDITTEXT IDC_DEBUGGER_VAL_CYCLES_COUNT,443,179,47,12,ES_NOHIDESEL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT + EDITTEXT IDC_DEBUGGER_VAL_CYCLES_COUNT2,492,179,54,12,ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT + EDITTEXT IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT,442,204,47,12,ES_NOHIDESEL | ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT + EDITTEXT IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT2,491,204,55,12,ES_READONLY | ES_WANTRETURN | NOT WS_BORDER | NOT WS_TABSTOP,WS_EX_TRANSPARENT + CONTROL "",IDC_DEBUGGER_ADDR_LINE,"Static",SS_LEFTNOWORDWRAP | WS_GROUP,4,323,341,11 + CONTROL "Break on Bad Opcodes",IDC_DEBUGGER_BREAK_ON_BAD_OP, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,440,126,94,10 + CONTROL "Symbolic debug",IDC_DEBUGGER_ENABLE_SYMBOLIC,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,261,62,10 + PUSHBUTTON "Reload Symbols",IDC_DEBUGGER_RELOAD_SYMS,472,283,64,14 + GROUPBOX "Address Bookmarks",45535,349,228,115,88 + LISTBOX LIST_DEBUGGER_BOOKMARKS,353,238,76,73,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + EDITTEXT IDC_DEBUGGER_BOOKMARK,432,238,28,14,ES_AUTOHSCROLL + PUSHBUTTON "Add",IDC_DEBUGGER_BOOKMARK_ADD,431,256,30,14 + PUSHBUTTON "Delete",IDC_DEBUGGER_BOOKMARK_DEL,431,272,30,14 + PUSHBUTTON "Rom Patcher",IDC_DEBUGGER_ROM_PATCHER,472,299,64,14 + PUSHBUTTON "Default window size",IDC_DEBUGGER_RESTORESIZE,348,318,68,14 + PUSHBUTTON "Run Line",IDC_DEBUGGER_RUN_LINE,351,37,38,14 + PUSHBUTTON "128 Lines",IDC_DEBUGGER_RUN_FRAME2,392,37,39,14 + CONTROL ".DEB files",DEBUGLOADDEB,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,463,319,42,13 + CONTROL "Auto-open",DEBUGAUTOLOAD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,417,319,45,13 + LTEXT "CPU cycles:",IDC_STATIC,403,179,39,8 + PUSHBUTTON "Reset counters",IDC_DEBUGGER_RESET_COUNTERS,470,229,68,14 + CONTROL "Break when exceed",IDC_DEBUGGER_BREAK_ON_CYCLES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,405,191,78,10 + EDITTEXT IDC_DEBUGGER_CYCLES_EXCEED,484,190,55,12,ES_UPPERCASE | ES_NOHIDESEL | ES_WANTRETURN | ES_NUMBER + LTEXT "Instructions:",IDC_STATIC,403,204,39,8 + CONTROL "Break when exceed",IDC_DEBUGGER_BREAK_ON_INSTRUCTIONS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,405,216,78,10 + EDITTEXT IDC_DEBUGGER_INSTRUCTIONS_EXCEED,484,215,55,12,ES_UPPERCASE | ES_NOHIDESEL | ES_WANTRETURN | ES_NUMBER + GROUPBOX "",IDC_STATIC,468,241,72,75 + CONTROL "ROM offsets",IDC_DEBUGGER_ROM_OFFSETS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,249,62,10 + PUSHBUTTON "Name",IDC_DEBUGGER_BOOKMARK_NAME,431,288,30,14 + EDITTEXT IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL,4,5,14,317,ES_MULTILINE | ES_AUTOHSCROLL | ES_READONLY | WS_DISABLED + CONTROL "Register names",IDC_DEBUGGER_PREDEFINED_REGS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,473,272,65,10 + CONTROL "IDA font",DEBUGIDAFONT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,506,319,38,13 +END + +TRACER DIALOGEX 0, 0, 317, 181 +STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "Trace Logger" +FONT 8, "MS Shell Dlg", 400, 0, 0x0 +BEGIN + EDITTEXT IDC_TRACER_LOG,3,3,300,44,ES_MULTILINE | ES_NOHIDESEL | ES_READONLY | WS_HSCROLL + SCROLLBAR IDC_SCRL_TRACER_LOG,303,3,11,44,SBS_VERT + CONTROL "Log last",IDC_RADIO_LOG_LAST,"Button",BS_AUTORADIOBUTTON | BS_LEFT,9,53,38,10 + COMBOBOX IDC_TRACER_LOG_SIZE,49,52,46,13,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "lines",IDC_TEXT_LINES_TO_THIS_WINDOW,97,54,20,10 + DEFPUSHBUTTON "Start Logging",IDC_BTN_START_STOP_LOGGING,126,51,65,15,BS_CENTER | BS_VCENTER + CONTROL "Log to File",IDC_RADIO_LOG_TO_FILE,"Button",BS_AUTORADIOBUTTON | BS_LEFT,9,70,46,10 + PUSHBUTTON "Browse...",IDC_BTN_LOG_BROWSE,56,68,39,14,BS_CENTER | BS_VCENTER + CONTROL "Automatically update this window while logging",IDC_CHECK_LOG_UPDATE_WINDOW, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,70,156,10 + GROUPBOX "Log Options",IDC_GROUP_LOG_OPTIONS,3,85,311,65 + CONTROL "Log state of registers",IDC_CHECK_LOG_REGISTERS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,96,99,10 + CONTROL "Log Processor status flags",IDC_CHECK_LOG_PROCESSOR_STATUS, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,96,96,10 + CONTROL "To the left from disassembly",IDC_CHECK_LOG_STATUSES_TO_THE_LEFT, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,211,96,100,10 + CONTROL "Log Frames count",IDC_CHECK_LOG_FRAMES_COUNT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,109,98,10 + CONTROL "Log Cycles count",IDC_CHECK_LOG_CYCLES_COUNT,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,109,94,10 + CONTROL "Log Instructions count",IDC_CHECK_LOG_INSTRUCTIONS_COUNT, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,211,109,100,10 + CONTROL "Log emulator messages",IDC_CHECK_LOG_MESSAGES,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,122,97,10 + CONTROL "Log breakpoint hits",IDC_CHECK_LOG_BREAKPOINTS,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,122,91,10 + CONTROL "Symbolic trace",IDC_CHECK_SYMBOLIC_TRACING,"Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,135,96,10 + CONTROL "Use Stack Pointer for code tabbing (nesting visualization)",IDC_CHECK_CODE_TABBING, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,135,196,10 + GROUPBOX "Extra Log Options that work with the Code/Data Logger",IDC_EXTRA_LOG_OPTIONS,3,151,311,26 + CONTROL "Only log newly mapped code",IDC_CHECK_LOG_NEW_INSTRUCTIONS, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,162,102,10 + CONTROL "Only log code that accesses newly mapped data",IDC_CHECK_LOG_NEW_DATA, + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,112,162,171,10 + CONTROL "Log Bank number",IDC_CHECK_LOG_BANK_NUMBER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,211,121,100,10 +END + +ADDBP DIALOGEX 66, 83, 197, 125 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Add Breakpoint..." +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + LTEXT "&Address:",-1,14,6,30,10 + EDITTEXT IDC_ADDBP_ADDR_START,48,4,30,12,ES_UPPERCASE | ES_WANTRETURN + CTEXT "-",65534,78,6,8,8 + EDITTEXT IDC_ADDBP_ADDR_END,87,4,30,12,ES_UPPERCASE | ES_WANTRETURN + CONTROL "&Forbid",IDC_ADDBP_MODE_F,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,154,6,33,12 + GROUPBOX "",112,3,18,185,50,WS_TABSTOP + CONTROL "&Read",IDC_ADDBP_MODE_R,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,25,35,12 + CONTROL "&Write",IDC_ADDBP_MODE_W,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,49,25,35,12 + CONTROL "&Execute",IDC_ADDBP_MODE_X,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,86,25,40,12 + GROUPBOX "Memory",108,9,39,174,24,WS_TABSTOP + CONTROL "&CPU Mem",IDC_ADDBP_MEM_CPU,"Button",BS_AUTORADIOBUTTON | WS_GROUP,13,49,50,10 + CONTROL "&PPU Mem",IDC_ADDBP_MEM_PPU,"Button",BS_AUTORADIOBUTTON,68,49,50,10 + CONTROL "&Sprite Mem",IDC_ADDBP_MEM_SPR,"Button",BS_AUTORADIOBUTTON,124,49,50,10 + LTEXT "C&ondition:",65533,7,74,34,8 + EDITTEXT IDC_ADDBP_CONDITION,43,72,136,14,ES_AUTOHSCROLL + LTEXT "&Name:",65532,8,92,20,8 + EDITTEXT IDC_ADDBP_NAME,43,89,136,14,ES_AUTOHSCROLL + DEFPUSHBUTTON "OK",IDOK,99,110,42,13 + PUSHBUTTON "Cancel",IDCANCEL,147,110,42,13 +END + +NTVIEW DIALOGEX 44, 38, 352, 350 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Name Table Viewer" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "Name Tables",IDC_NTVIEW_TABLE_BOX,2,0,347,251,WS_TABSTOP + LTEXT "Refresh: More",IDC_STATIC,225,254,50,9 + CONTROL "",IDC_NTVIEW_REFRESH_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,275,254,50,11 + LTEXT "Less",IDC_STATIC,325,254,18,10 + LTEXT "Display on scanline:",IDC_NTVIEW_SCANLINE_TEXT,249,269,65,9 + EDITTEXT IDC_NTVIEW_SCANLINE,315,267,27,12,ES_NUMBER + CONTROL "Show Scroll Lines",IDC_NTVIEW_SHOW_SCROLL_LINES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,254,69,10 + CONTROL "Show Attributes",IDC_NTVIEW_SHOW_ATTRIBUTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,265,69,10 + CONTROL "Ignore Palettes",IDC_NTVIEW_HIDE_PALETTES,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,276,69,10 + GROUPBOX "Current Mirroring",IDC_STATIC,2,289,170,59 + CONTROL "Horizontal",IDC_NTVIEW_MIRROR_HORIZONTAL,"Button",BS_AUTORADIOBUTTON,6,300,47,10 + CONTROL "Vertical",IDC_NTVIEW_MIRROR_VERTICAL,"Button",BS_AUTORADIOBUTTON,6,311,39,10 + CONTROL "Four Screen",IDC_NTVIEW_MIRROR_FOUR_SCREEN,"Button",BS_AUTORADIOBUTTON,6,322,55,10 + CONTROL "Single Screen 0",IDC_NTVIEW_MIRROR_SS_TABLE_0,"Button",BS_AUTORADIOBUTTON,85,300,75,10 + CONTROL "Single Screen 1",IDC_NTVIEW_MIRROR_SS_TABLE_1,"Button",BS_AUTORADIOBUTTON,85,311,75,10 + CONTROL "Single Screen 2",IDC_NTVIEW_MIRROR_SS_TABLE_2,"Button",BS_AUTORADIOBUTTON,85,322,75,10 + CONTROL "Single Screen 3",IDC_NTVIEW_MIRROR_SS_TABLE_3,"Button",BS_AUTORADIOBUTTON,85,333,75,10 + GROUPBOX "Properties",IDC_STATIC,174,289,175,59 + LTEXT "Tile ID:",IDC_NTVIEW_PROPERTIES_LINE_1,184,300,150,10 + LTEXT "X / Y:",IDC_NTVIEW_PROPERTIES_LINE_2,184,311,150,10 + LTEXT "PPU Address:",IDC_NTVIEW_PROPERTIES_LINE_3,184,322,150,10 + LTEXT "Attribute:",IDC_NTVIEW_PROPERTIES_LINE_4,184,333,150,10 +END + +ROMPATCHER DIALOGEX 84, 67, 304, 135 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Rom Data Editor" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + EDITTEXT IDC_ROMPATCHER_CURRENT_DATA,7,47,282,12,ES_READONLY + PUSHBUTTON "Apply",IDC_ROMPATCHER_BTN_APPLY,185,92,54,14 + PUSHBUTTON "Save Rom File...",IDC_ROMPATCHER_BTN_SAVE,4,114,65,14,WS_DISABLED + EDITTEXT IDC_ROMPATCHER_PATCH_DATA,7,93,172,13,ES_AUTOHSCROLL + GROUPBOX "Current Data At Offset",IDC_ROMPATCHER_CURRENT_DATA_BOX,3,36,292,43 + GROUPBOX "Offset",IDC_ROMPATCHER_OFFSET_BOX,4,4,291,27 + EDITTEXT IDC_ROMPATCHER_OFFSET,83,12,47,14,ES_AUTOHSCROLL + CONTROL ".Nes File Address",IDC_ROMPATCHER_DOTNES_OFFSET,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,10,14,71,10 + PUSHBUTTON "Edit This Offset",IDC_ROMPATCHER_BTN_EDIT,135,12,65,14 + LTEXT "Disassembled: ",106,7,63,45,12 + EDITTEXT IDC_ROMPATCHER_DISASSEMBLY,56,62,234,14,ES_AUTOHSCROLL | ES_READONLY + GROUPBOX "Patch Data",108,3,81,292,30 +END + +GGCONV DIALOGEX 84, 67, 186, 146 +STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Game Genie Encoder/Decoder Tool" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "Game Genie Code",-1,107,5,69,42 + EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL + PUSHBUTTON "Add To Cheat List",IDC_BTN_ADD_TO_CHEATS,108,58,68,14,WS_DISABLED + GROUPBOX "Address/Compare/Value",65534,9,5,91,75 + LTEXT "Address:",65533,18,24,35,8 + EDITTEXT IDC_GAME_GENIE_ADDR,50,21,36,14,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "Compare:",65532,17,41,37,8 + EDITTEXT IDC_GAME_GENIE_COMP,64,38,22,14,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "Value:",65531,18,58,32,8 + EDITTEXT IDC_GAME_GENIE_VAL,64,56,22,14,ES_UPPERCASE | ES_AUTOHSCROLL + GROUPBOX "Possible Affected Rom File Addresses",65530,8,83,169,58 + LISTBOX IDC_LIST_GGADDRESSES,67,95,54,40,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP +END + +MONITOR DIALOGEX 0, 0, 316, 343 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "RAM Filter" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "Rules",-1,7,7,295,182 + GROUPBOX "Results",-1,10,193,292,135 + LTEXT "1st rule",-1,16,20,40,8 + LTEXT "2nd rule",-1,16,36,40,8 + LTEXT "3rd rule",-1,16,55,40,8 + LTEXT "4th rule",-1,16,71,40,8 + LTEXT "5th rule",-1,16,89,40,8 + COMBOBOX 3000,66,17,135,85,CBS_DROPDOWNLIST | WS_TABSTOP + COMBOBOX 3001,66,34,135,90,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX 3002,66,50,135,97,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX 3003,66,68,135,101,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + COMBOBOX 3004,66,84,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + EDITTEXT 3010,208,18,26,12,ES_AUTOHSCROLL + EDITTEXT 3011,208,34,26,13,ES_AUTOHSCROLL + EDITTEXT 3012,208,50,26,12,ES_AUTOHSCROLL + EDITTEXT 3013,208,68,26,13,ES_AUTOHSCROLL + EDITTEXT 3014,208,84,26,12,ES_AUTOHSCROLL + PUSHBUTTON "Apply rule",3021,240,34,50,13 + PUSHBUTTON "Apply rule",3022,240,50,50,14 + PUSHBUTTON "Apply rule",3023,240,68,50,14 + PUSHBUTTON "Apply rule",3024,240,84,50,14 + LISTBOX 3100,18,206,272,102,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Apply rule",3020,240,17,50,14 + LTEXT "6th rule",-1,16,105,40,8 + COMBOBOX 3005,66,102,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + EDITTEXT 3015,208,102,26,12,ES_AUTOHSCROLL + PUSHBUTTON "Apply rule",3025,240,102,50,14 + LTEXT "7th rule",-1,16,121,40,8 + COMBOBOX 3006,66,119,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + EDITTEXT 3016,208,119,26,12,ES_AUTOHSCROLL + PUSHBUTTON "Apply rule",3026,240,119,50,14 + LTEXT "9th rule",-1,16,156,40,8 + COMBOBOX 3008,66,153,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + EDITTEXT 3018,208,153,26,12,ES_AUTOHSCROLL + PUSHBUTTON "Apply rule",3028,240,153,50,14 + LTEXT "8th rule",-1,16,140,40,8 + COMBOBOX 3007,66,135,135,122,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + EDITTEXT 3017,208,135,26,12,ES_AUTOHSCROLL + PUSHBUTTON "Apply rule",3027,240,135,50,14 + LTEXT "10th rule",-1,16,172,40,8 + COMBOBOX 3009,66,169,135,85,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + EDITTEXT 3019,208,170,26,12,ES_AUTOHSCROLL + PUSHBUTTON "Apply rule",3029,240,169,50,14 + LTEXT "Number of results:",-1,19,313,60,8 + LTEXT "",3101,90,313,60,8 +END + +MEMVIEWFIND DIALOGEX 0, 0, 282, 81 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Find" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + EDITTEXT IDC_MEMVIEWFIND_WHAT,47,7,171,14,ES_AUTOHSCROLL + LTEXT "Find What:",-1,7,9,38,8 + GROUPBOX "Type",-1,83,29,187,45 + CONTROL "Hex",IDC_MEMVIEWFIND_TYPE_HEX,"Button",BS_AUTORADIOBUTTON | WS_GROUP,93,43,29,10 + CONTROL "Text (Uses Currently Loaded Table as Reference)",IDC_MEMVIEWFIND_TYPE_TEXT, + "Button",BS_AUTORADIOBUTTON,93,56,172,10 + GROUPBOX "Direction",-1,9,29,65,44 + CONTROL "Up",IDC_MEMVIEWFIND_DIR_UP,"Button",BS_AUTORADIOBUTTON | WS_GROUP,18,43,25,10 + CONTROL "Down",IDC_MEMVIEWFIND_DIR_DOWN,"Button",BS_AUTORADIOBUTTON,18,56,35,10 + DEFPUSHBUTTON "Find Next",IDC_MEMVIEWFIND_NEXT,225,7,50,14 +END + +IDD_RECORDINP DIALOGEX 0, 0, 276, 86 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Record input" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",1,167,66,50,14 + GROUPBOX "",65501,3,0,269,60 + RTEXT "File:",65500,28,11,24,10,SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_RIGHT + PUSHBUTTON "Cancel",2,221,66,50,14 + EDITTEXT IDC_EDIT_FILENAME,55,10,189,12,ES_AUTOHSCROLL + PUSHBUTTON "...",IDC_BUTTON_BROWSEFILE,249,10,18,14 + COMBOBOX IDC_COMBO_RECORDFROM,55,25,189,154,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + RTEXT "Record From:",65498,9,27,43,8,0,WS_EX_RIGHT + EDITTEXT IDC_EDIT_AUTHOR,55,41,189,14,ES_AUTOHSCROLL + RTEXT "Author:",65502,18,43,34,10,SS_CENTERIMAGE | NOT WS_GROUP,WS_EX_RIGHT +END + +IDD_REPLAYINP DIALOGEX 0, 0, 300, 202 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Play Movie" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "OK",1,189,183,50,14 + GROUPBOX "",65497,3,0,293,179 + RTEXT "File:",65498,8,11,24,10,SS_CENTERIMAGE | NOT WS_GROUP + COMBOBOX IDC_COMBO_FILENAME,35,10,257,128,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Cancel",2,243,183,50,14 + RTEXT "Length:",64397,10,67,59,8 + RTEXT "Frames:",65496,10,78,59,8 + RTEXT "Record Count:",65495,10,89,59,8 + RTEXT "ROM Used:",65493,10,111,59,8 + RTEXT "ROM Checksum:",65492,10,122,59,8 + RTEXT "Recorded From:",65491,10,100,59,8 + RTEXT "Emulator Used:",65490,10,144,59,8 + RTEXT "Current ROM Sum:",65489,8,133,61,8 + CONTROL "Pause movie at frame",IDC_CHECK_STOPMOVIE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,49,83,10 + EDITTEXT IDC_EDIT_STOPFRAME,103,47,39,12,ES_AUTOHSCROLL | ES_NUMBER + GROUPBOX "Parameters",IDC_STATIC,13,25,278,40 + PUSHBUTTON "Metadata...",IDC_BUTTON_METADATA,239,71,50,14 + EDITTEXT IDC_LABEL_EMULATORUSED,76,144,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + EDITTEXT IDC_LABEL_CURRCHECKSUM,76,133,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + EDITTEXT IDC_LABEL_ROMCHECKSUM,76,122,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + EDITTEXT IDC_LABEL_ROMUSED,76,111,187,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + EDITTEXT IDC_LABEL_RECORDEDFROM,76,100,123,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + CONTROL "Open &Read-Only",IDC_CHECK_READONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,19,36,69,10 + EDITTEXT IDC_LABEL_UNDOCOUNT,76,89,59,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + EDITTEXT IDC_LABEL_FRAMES,76,78,59,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + EDITTEXT IDC_LABEL_LENGTH,76,67,59,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + RTEXT "Pal:",65494,10,155,59,8 + EDITTEXT IDC_LABEL_PALUSED,76,155,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP + RTEXT "New PPU:",65499,10,166,59,8 + EDITTEXT IDC_LABEL_NEWPPUUSED,76,166,155,12,ES_READONLY | NOT WS_BORDER | NOT WS_TABSTOP +END + +TASEDITOR DIALOGEX 0, 0, 326, 348 +STYLE DS_SETFONT | DS_SETFOREGROUND | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +CAPTION "TAS Editor" +MENU TASEDITORMENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_PROGRESS_BUTTON,"Button",BS_OWNERDRAW,200,36,116,12 + CONTROL "",IDC_BRANCHES_BUTTON,"Button",BS_OWNERDRAW,207,167,104,10 + CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER,5,13,187,316 + GROUPBOX " Playback ",IDC_PLAYBACK_BOX,197,0,123,62,BS_CENTER,WS_EX_RIGHT + GROUPBOX " Recorder ",IDC_RECORDER_BOX,197,63,123,46,BS_CENTER,WS_EX_RIGHT + GROUPBOX " Splicer ",IDC_SPLICER_BOX,197,110,123,30,BS_CENTER,WS_EX_RIGHT + GROUPBOX " Lua ",IDC_LUA_BOX,197,141,123,26,BS_CENTER,WS_EX_RIGHT + GROUPBOX " Bookmarks ",IDC_BOOKMARKS_BOX,197,168,123,102,BS_CENTER,WS_EX_RIGHT + GROUPBOX " History ",IDC_HISTORY_BOX,197,271,123,53,BS_CENTER,WS_EX_RIGHT + PUSHBUTTON "<<",TASEDITOR_REWIND_FULL,201,9,23,14,NOT WS_TABSTOP + PUSHBUTTON "<",TASEDITOR_REWIND,224,9,23,14,NOT WS_TABSTOP + PUSHBUTTON "||",TASEDITOR_PLAYSTOP,247,9,23,14,NOT WS_TABSTOP + PUSHBUTTON ">",TASEDITOR_FORWARD,270,9,23,14,NOT WS_TABSTOP + PUSHBUTTON ">>",TASEDITOR_FORWARD_FULL,293,9,23,14,NOT WS_TABSTOP + CONTROL "",IDC_PROGRESS1,"msctls_progress32",PBS_SMOOTH | WS_BORDER,201,39,115,6 + CONTROL " Follow cursor",CHECK_FOLLOW_CURSOR,"Button",BS_AUTOCHECKBOX,203,25,56,12 + CONTROL " Auto-restore last position",CHECK_AUTORESTORE_PLAYBACK, + "Button",BS_AUTOCHECKBOX,203,48,109,12 + CONTROL "",IDC_BOOKMARKSLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOSCROLL | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | NOT WS_VISIBLE | WS_BORDER,202,177,113,89 + CONTROL "",IDC_HISTORYLIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_NOLABELWRAP | LVS_ALIGNLEFT | LVS_OWNERDATA | LVS_NOCOLUMNHEADER | LVS_NOSORTHEADER | WS_BORDER,202,280,113,40 + CONTROL " All",IDC_RADIO_ALL,"Button",BS_AUTORADIOBUTTON,291,71,24,10 + CONTROL " 1P",IDC_RADIO_1P,"Button",BS_AUTORADIOBUTTON,203,83,25,10 + CONTROL " 2P",IDC_RADIO_2P,"Button",BS_AUTORADIOBUTTON,232,83,25,10 + CONTROL " 3P",IDC_RADIO_3P,"Button",BS_AUTORADIOBUTTON,262,83,24,10 + CONTROL " 4P",IDC_RADIO_4P,"Button",BS_AUTORADIOBUTTON,291,83,24,10 + CONTROL " Superimpose",IDC_SUPERIMPOSE,"Button",BS_AUTO3STATE,203,96,55,10 + PUSHBUTTON "<<",TASEDITOR_PREV_MARKER,202,328,23,14,NOT WS_TABSTOP + PUSHBUTTON "Similar",TASEDITOR_FIND_BEST_SIMILAR_MARKER,225,328,34,14,NOT WS_TABSTOP + PUSHBUTTON "More",TASEDITOR_FIND_NEXT_SIMILAR_MARKER,259,328,34,14,NOT WS_TABSTOP + PUSHBUTTON ">>",TASEDITOR_NEXT_MARKER,292,328,23,14,NOT WS_TABSTOP + EDITTEXT IDC_PLAYBACK_MARKER_EDIT,65,0,127,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP + RTEXT "Marker 0",IDC_PLAYBACK_MARKER,3,2,60,10,SS_NOTIFY,WS_EX_RIGHT + EDITTEXT IDC_SELECTION_MARKER_EDIT,65,329,127,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP + RTEXT "Marker 99999",IDC_SELECTION_MARKER,3,331,60,10,SS_NOTIFY,WS_EX_RIGHT + CONTROL "",IDC_BRANCHES_BITMAP,"Static",SS_OWNERDRAW | SS_NOTIFY | SS_REALSIZEIMAGE | NOT WS_VISIBLE,202,177,113,89 + CONTROL " Turbo seek",CHECK_TURBO_SEEK,"Button",BS_AUTOCHECKBOX,263,25,50,12 + LTEXT "Selection: 0 rows, 16 columns",IDC_TEXT_SELECTION,204,118,112,10,SS_NOTIFY + LTEXT "Clipboard: 0 rows, 16 columns",IDC_TEXT_CLIPBOARD,203,128,114,10,SS_NOTIFY + CONTROL " Recording",IDC_RECORDING,"Button",BS_AUTO3STATE,203,71,81,10 + PUSHBUTTON "Run function",TASEDITOR_RUN_MANUAL,202,150,54,14,WS_DISABLED | NOT WS_TABSTOP + CONTROL "Auto function",IDC_RUN_AUTO,"Button",BS_AUTOCHECKBOX,261,152,55,10 + CONTROL " Use pattern",IDC_USEPATTERN,"Button",BS_AUTOCHECKBOX,262,96,53,10 +END + +IDD_TASEDITOR_ABOUT DIALOGEX 0, 0, 238, 78 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "About" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDCANCEL,94,55,50,14 + ICON IDI_ICON4,IDC_STATIC,11,11,20,20 + LTEXT "TAS Editor",IDC_TASEDITOR_NAME,43,8,84,13 + LTEXT "Version 1.01",IDC_STATIC,60,25,45,8 + LTEXT "Created by AnS",IDC_STATIC,138,12,58,8 + LTEXT "Originated from TASEdit",IDC_STATIC,138,25,85,9,SS_NOPREFIX + LTEXT "made by zeromus & adelikat",IDC_STATIC,138,35,96,9,SS_NOPREFIX +END + +IDD_TASEDITOR_NEWPROJECT DIALOGEX 0, 0, 171, 100 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Create New Project" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,7,80,50,14 + PUSHBUTTON "Cancel",IDCANCEL,114,80,50,14 + CONTROL " Copy current Input",IDC_COPY_INPUT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,80,14,75,10 + CONTROL " 1 player",IDC_RADIO_1PLAYER,"Button",BS_AUTORADIOBUTTON,16,14,45,10 + CONTROL " 2 players",IDC_RADIO_2PLAYERS,"Button",BS_AUTORADIOBUTTON,16,27,45,10 + CONTROL " Fourscore",IDC_RADIO_FOURSCORE,"Button",BS_AUTORADIOBUTTON,16,40,45,10 + CONTROL " Copy current Markers",IDC_COPY_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,80,27,83,10 + GROUPBOX "Input type",IDC_STATIC,5,3,67,52,BS_CENTER + EDITTEXT IDC_EDIT_AUTHOR,36,61,127,13,ES_AUTOHSCROLL + LTEXT "Author:",IDC_STATIC,8,63,26,9 +END + +IDD_TASEDITOR_EXPORT DIALOGEX 0, 0, 158, 86 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Export to FM2" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "Export",IDOK,7,66,50,14 + PUSHBUTTON "Cancel",IDCANCEL,100,66,50,14 + CONTROL " 1 player",IDC_RADIO_1PLAYER,"Button",BS_AUTORADIOBUTTON | WS_GROUP,8,8,47,10 + CONTROL " 2 players",IDC_RADIO_2PLAYERS,"Button",BS_AUTORADIOBUTTON,8,21,47,10 + CONTROL " Fourscore",IDC_RADIO_FOURSCORE,"Button",BS_AUTORADIOBUTTON,8,35,47,10 + CONTROL " Convert Marker Notes to Movie Subtitles",IDC_NOTES_TO_SUBTITLES, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,8,50,146,10 +END + +IDD_TASEDITOR_FINDNOTE DIALOGEX 0, 0, 228, 49 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Find Note" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "Find next",IDOK,171,5,51,14 + PUSHBUTTON "Close",IDCANCEL,171,23,51,14 + EDITTEXT IDC_NOTE_TO_FIND,6,6,160,12,ES_AUTOHSCROLL + CONTROL " Match case",IDC_MATCH_CASE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,9,23,53,10 + GROUPBOX "Direction",IDC_STATIC,82,20,83,24,BS_CENTER + CONTROL " Up",IDC_RADIO_UP,"Button",BS_AUTORADIOBUTTON | WS_GROUP,90,30,29,10 + CONTROL " Down",IDC_RADIO_DOWN,"Button",BS_AUTORADIOBUTTON,125,30,32,10 +END + +IDD_TASEDITOR_SAVECOMPACT DIALOGEX 0, 0, 123, 197 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Save Compact" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "Save",IDOK,8,176,50,14 + PUSHBUTTON "Cancel",IDCANCEL,66,176,50,14 + CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,8,89,10 + CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,23,67,10 + CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,38,67,10 + CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,53,67,10 + CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,68,67,10 + CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,83,67,10 + GROUPBOX "Greenzone saving options",IDC_STATIC,13,98,97,72 + CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, + "Button",BS_AUTORADIOBUTTON,23,109,77,10 + CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, + "Button",BS_AUTORADIOBUTTON,23,124,77,10 + CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, + "Button",BS_AUTORADIOBUTTON,23,139,77,10 + CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, + "Button",BS_AUTORADIOBUTTON,23,154,77,10 +END + +ASSEMBLER DIALOGEX 0, 0, 202, 135 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Inline Assembler" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + EDITTEXT IDC_ASSEMBLER_DISASSEMBLY,23,9,171,12,ES_READONLY + COMBOBOX IDC_ASSEMBLER_HISTORY,7,25,188,54,CBS_DROPDOWN | WS_VSCROLL | WS_TABSTOP + PUSHBUTTON "Apply",IDC_ASSEMBLER_APPLY,159,114,36,14 + LTEXT "PC:",-1,8,11,12,8 + LTEXT "Patch:",-1,8,41,22,8 + PUSHBUTTON "Save...",IDC_ASSEMBLER_SAVE,117,114,36,14 + PUSHBUTTON "Undo",IDC_ASSEMBLER_UNDO,6,114,36,14 + DEFPUSHBUTTON "Define",IDC_ASSEMBLER_DEFPUSHBUTTON,46,114,36,14,NOT WS_VISIBLE + LISTBOX IDC_ASSEMBLER_PATCH_DISASM,7,50,188,59,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | LBS_NOSEL | WS_VSCROLL | WS_TABSTOP +END + +NAMEBOOKMARKDLG DIALOGEX 0, 0, 186, 73 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Bookmark name" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + LTEXT "Bookmark name",IDC_BOOKMARK_NAME_TEXT,68,14,58,8 + EDITTEXT IDC_BOOKMARK_DESCRIPTION,7,28,172,14,ES_AUTOHSCROLL + DEFPUSHBUTTON "&OK",IDOK,67,52,50,14 +END + +CDLOGGER DIALOGEX 0, 0, 307, 254 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_ACCEPTFILES +CAPTION "Code Data Logger" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + PUSHBUTTON "Load...",BTN_CDLOGGER_LOAD,7,122,50,14 + PUSHBUTTON "Save",BTN_CDLOGGER_SAVE,249,105,50,14 + GROUPBOX "Code/Data Log Status",-1,3,5,300,195,BS_CENTER + DEFPUSHBUTTON "Start",BTN_CDLOGGER_START_PAUSE,127,105,50,14 + GROUPBOX "Address Label Logger",65534,3,201,300,49,BS_CENTER + PUSHBUTTON "Load...",111,7,231,50,14,WS_DISABLED + PUSHBUTTON "Start",112,127,231,50,14,WS_DISABLED + PUSHBUTTON "Save...",113,249,231,50,14,WS_DISABLED + LTEXT "4067 - 29.5%",LBL_CDLOGGER_CODECOUNT,34,27,72,11 + GROUPBOX "PRG Logged as Code",65533,25,16,84,27 + GROUPBOX "PRG Logged as Data",65532,113,16,84,27 + LTEXT "7092 - 37.2%",LBL_CDLOGGER_DATACOUNT,122,27,71,9 + GROUPBOX "PRG not Logged",65531,201,16,79,27 + LTEXT "6072 - 32.7%",LBL_CDLOGGER_UNDEFCOUNT,210,27,66,8 + LTEXT "Itsa me, the Code/Data Logger! Press Start to play!",65530,67,78,172,11 + PUSHBUTTON "Reset Log",BTN_CDLOGGER_RESET,7,105,50,14 + PUSHBUTTON "Save as...",BTN_CDLOGGER_SAVE_AS,250,122,50,14 + PUSHBUTTON "Save Stripped Data...",BTN_CDLOGGER_SAVE_STRIPPED,196,155,90,14 + PUSHBUTTON "Save Unused Data...",BTN_CDLOGGER_SAVE_UNUSED,196,172,90,14 + LTEXT "4067 - 29.5%",LBL_CDLOGGER_RENDERCOUNT,34,56,72,11 + GROUPBOX "CHR Rendered",ID_CHR1,25,45,84,27 + GROUPBOX "CHR Logged as Data",ID_CHR2,113,45,84,27 + LTEXT "7092 - 37.2%",LBL_CDLOGGER_VROMREADCOUNT,122,56,71,9 + GROUPBOX "CHR not Logged",ID_CHR3,201,45,79,27 + LTEXT "6072 - 32.7%",LBL_CDLOGGER_UNDEFVROMCOUNT,210,56,66,9 + LTEXT "CDL file:",ID_STATIC,12,92,29,11 + LTEXT "",ID_CDLFILENAME,43,92,252,11,SS_PATHELLIPSIS + CONTROL " Auto-resume logging when loading ROMs",IDC_AUTORESUMECDLOGGING, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,179,153,11 + CONTROL " Auto-save .CDL when closing ROMs",IDC_AUTOSAVECDL, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,153,143,11 + CONTROL " Auto-load .CDL when opening this window",IDC_AUTOLOADCDL, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,13,166,154,11 + GROUPBOX "Generate ROM",65529,183,142,116,52 + GROUPBOX "Logging workflow options",65528,8,142,171,52 +END + +PPUVIEW DIALOGEX 44, 38, 353, 234 +STYLE DS_SETFONT | DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "PPU Viewer" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "Pattern Tables",GRP_PPUVIEW_TABLES,2,-1,348,185,WS_TABSTOP + LTEXT "Tile:",LBL_PPUVIEW_TILE1,6,138,50,9 + LTEXT "Tile:",LBL_PPUVIEW_TILE2,178,138,50,9 + LTEXT "Refresh: More",-1,230,151,50,9 + CONTROL "",CTL_PPUVIEW_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,280,151,50,11 + LTEXT "Less",-1,330,151,18,10 + LTEXT "Display on scanline:",-1,253,166,65,9 + EDITTEXT IDC_PPUVIEW_SCANLINE,315,164,27,12,ES_NUMBER + CONTROL "Sprites 8x16 mode",IDC_SPRITE16_MODE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,151,160,10 + CONTROL "Mask unused graphics (Code/Data Logger)",IDC_MASK_UNUSED_GRAPHICS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,162,160,10 + CONTROL "Invert the mask (Code/Data Logger)",IDC_INVERT_THE_MASK, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,6,173,160,10 + GROUPBOX "Palettes",LBL_PPUVIEW_PALETTES,2,185,348,46,WS_TABSTOP +END + +ARCHIVECHOOSERDIALOG DIALOGEX 0, 0, 265, 159 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Choose File From Archive" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,146,138,50,14 + PUSHBUTTON "Cancel",IDCANCEL,208,138,50,14 + LISTBOX IDC_LIST1,7,7,251,120,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP +END + +TEXTHOOKER DIALOGEX 0, 0, 456, 327 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +EXSTYLE WS_EX_ACCEPTFILES +CAPTION "Text Hooker" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "Selection Window",1,0,0,183,164,0,WS_EX_NOPARENTNOTIFY + EDITTEXT 102,207,13,216,94,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | NOT WS_BORDER | WS_VSCROLL,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE + GROUPBOX "Hooked Text",103,200,0,229,131,0,WS_EX_NOPARENTNOTIFY + PUSHBUTTON "Load Table",104,3,169,60,14,0,WS_EX_NOPARENTNOTIFY + PUSHBUTTON "Clear Selection",105,67,169,60,14,0,WS_EX_NOPARENTNOTIFY + PUSHBUTTON "Pause",106,67,190,60,14,0,WS_EX_NOPARENTNOTIFY + PUSHBUTTON "Snap",107,130,169,60,35,0,WS_EX_NOPARENTNOTIFY + PUSHBUTTON "Clear Buffer",108,208,111,60,14,0,WS_EX_NOPARENTNOTIFY + EDITTEXT 111,5,249,115,14,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE + PUSHBUTTON "Save Selection",112,130,249,60,14,0,WS_EX_NOPARENTNOTIFY + PUSHBUTTON "Save Table",113,3,190,60,14,0,WS_EX_NOPARENTNOTIFY + PUSHBUTTON "Load Selection",114,130,268,60,14,0,WS_EX_NOPARENTNOTIFY + GROUPBOX "Translated Text",115,200,140,229,117,0,WS_EX_NOPARENTNOTIFY + EDITTEXT 116,207,156,214,95,ES_MULTILINE | ES_AUTOVSCROLL | ES_WANTRETURN | NOT WS_BORDER | WS_VSCROLL,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE + PUSHBUTTON "Excite.co.jp",117,281,111,60,14,0,WS_EX_NOPARENTNOTIFY + LTEXT "Scanline:",118,5,210,50,8,0,WS_EX_NOPARENTNOTIFY + LTEXT "Update every x frames:",119,68,210,79,8,0,WS_EX_NOPARENTNOTIFY + EDITTEXT 120,5,220,52,14,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE + EDITTEXT 121,68,220,52,14,ES_AUTOHSCROLL | NOT WS_BORDER,WS_EX_NOPARENTNOTIFY | WS_EX_CLIENTEDGE + PUSHBUTTON "Trim",122,351,111,60,14 + COMBOBOX 109,5,269,115,100,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Japanese:",-1,5,283,47,9 + EDITTEXT 131,5,292,115,14,ES_AUTOHSCROLL + LTEXT "English:",-1,130,283,47,9 + EDITTEXT 132,130,292,115,14,ES_AUTOHSCROLL + PUSHBUTTON "Add Definition",133,253,292,60,14 + CONTROL "Selection Window",341,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,324,261,80,9 + CONTROL "Word Substitution",342,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,324,274,80,9 + LTEXT "(han)dakuten mark position:",-1,324,286,92,8 + CONTROL "Above",343,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,324,297,37,10 + CONTROL "Right",344,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,363,297,33,10 + LTEXT "New Selection Name:",-1,5,240,68,8 +END + +CHEATCONSOLE DIALOGEX 0, 0, 387, 226 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Cheat Search" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "Active Cheats",IDC_GROUPBOX_CHEATLIST,5,2,169,219,WS_TABSTOP + CONTROL "Enable cheats",IDC_CHEAT_GLOBAL_SWITCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,12,58,10 + CONTROL "Auto load / save with game",IDC_CHEAT_AUTOLOADSAVE, + "Button",BS_AUTO3STATE | WS_TABSTOP,71,12,100,10 + CONTROL "",IDC_LIST_CHEATS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,11,24,157,133 + LTEXT "Name:",IDC_STATIC,12,162,22,10 + EDITTEXT IDC_CHEAT_NAME,37,160,131,12,ES_AUTOHSCROLL | ES_WANTRETURN + LTEXT "Address:",IDC_CHEAT_ADDRESS_LABEL,12,176,30,8 + EDITTEXT IDC_CHEAT_ADDR,44,174,25,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Value:",IDC_CHEAT_VAL_LABEL,73,176,22,8 + EDITTEXT IDC_CHEAT_VAL,97,174,16,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Compare:",IDC_CHEAT_COM_LABEL,117,176,34,8 + EDITTEXT IDC_CHEAT_COM,152,174,16,12,ES_UPPERCASE | ES_WANTRETURN + LTEXT "Cheat Code:",IDC_CHEAT_CODE_LABEL,12,190,42,8 + EDITTEXT IDC_CHEAT_TEXT,55,188,47,12,ES_UPPERCASE | ES_AUTOHSCROLL + LTEXT "GG:",IDC_GAME_GENIE_LABEL,106,191,13,8 + EDITTEXT IDC_CHEAT_GAME_GENIE_TEXT,120,188,47,12,ES_UPPERCASE | ES_AUTOHSCROLL + DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,7,202,30,16 + PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,37,202,30,16 + PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,67,202,30,16 + PUSHBUTTON "Import...",IDC_BTN_CHEAT_ADDFROMFILE,100,202,36,16 + PUSHBUTTON "Export...",IDC_BTN_CHEAT_EXPORTTOFILE,136,202,36,16 + GROUPBOX "Cheat Search",IDC_GROUPBOX_CHEATSEARCH,180,2,201,206,WS_TABSTOP + PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,192,12,55,15 + PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,192,36,55,15 + LTEXT "0x",IDC_CHEAT_LABEL_KNOWN,217,55,9,8 + EDITTEXT IDC_CHEAT_VAL_KNOWN,228,53,18,12,ES_UPPERCASE + GROUPBOX "Previous Compare",IDC_GROUP_PREV_COM,185,68,69,135 + PUSHBUTTON "Equal",IDC_BTN_CHEAT_EQ,192,79,55,15,WS_GROUP + PUSHBUTTON "Not Equal",IDC_BTN_CHEAT_NE,192,99,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_NE_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,117,22,10 + EDITTEXT IDC_CHEAT_VAL_NE_BY,228,116,18,12,ES_UPPERCASE | ES_WANTRETURN + PUSHBUTTON "Greater Than",IDC_BTN_CHEAT_GT,192,134,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_GT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,152,22,10 + EDITTEXT IDC_CHEAT_VAL_GT_BY,228,151,18,12,ES_UPPERCASE | ES_WANTRETURN + PUSHBUTTON "Less Than",IDC_BTN_CHEAT_LT,192,169,55,15 + CONTROL "By:",IDC_CHEAT_CHECK_LT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,204,187,22,10 + EDITTEXT IDC_CHEAT_VAL_LT_BY,228,186,18,12,ES_UPPERCASE | ES_WANTRETURN + GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,258,8,117,195,WS_TABSTOP + CONTROL "",IDC_CHEAT_LIST_POSSIBILITIES,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,264,18,106,179 + CONTROL "Pause emulation when this window is active",IDC_CHEAT_PAUSEWHENACTIVE, + "Button",BS_AUTOCHECKBOX,180,211,157,10 +END + +IDD_LUA DIALOGEX 0, 0, 270, 150 +STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CLIPCHILDREN | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +EXSTYLE WS_EX_APPWINDOW +CAPTION "Lua Script" +MENU LUAWINDOW_MENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + PUSHBUTTON "&Browse...",IDC_BUTTON_LUABROWSE,7,31,48,16 + PUSHBUTTON "&Run",IDC_BUTTON_LUARUN,213,31,50,16 + PUSHBUTTON "&Stop",IDC_BUTTON_LUASTOP,160,31,50,16 + EDITTEXT IDC_EDIT_LUAPATH,7,16,256,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_LUAARGS,47,50,216,14,ES_AUTOHSCROLL + EDITTEXT IDC_LUACONSOLE,7,80,256,60,ES_MULTILINE | ES_AUTOVSCROLL | ES_READONLY | WS_VSCROLL + LTEXT "Output Console:",IDC_STATIC,7,70,56,8 + LTEXT "Script File:",IDC_STATIC,7,7,36,8 + LTEXT "Arguments:",IDC_STATIC,7,52,40,8 + PUSHBUTTON "Edit",IDC_BUTTON_LUAEDIT,58,31,46,16 +END + +VIDEOCONFIG DIALOGEX 65520, 76, 511, 170 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Video Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + GROUPBOX "Full Screen Settings",65453,5,3,171,141,WS_GROUP + CONTROL "Full Screen (Alt + Enter or double-click)",IDC_VIDEOCONFIG_FS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,15,157,12 + CONTROL "Enter full screen mode after game is loaded",IDC_VIDEOCONFIG_AUTO_FS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,29,154,12 + LTEXT "Sync method:",65452,11,108,46,10 + COMBOBOX IDC_VIDEOCONFIG_SYNC_METHOD_FS,59,106,105,50,CBS_DROPDOWNLIST | WS_TABSTOP + LTEXT "Mode:",13,11,67,23,9 + EDITTEXT IDC_VIDEOCONFIG_XRES,36,65,27,13,ES_RIGHT | ES_NUMBER + LTEXT "by",12,67,67,11,9 + EDITTEXT IDC_VIDEOCONFIG_YRES,79,65,27,13,ES_RIGHT | ES_NUMBER + LTEXT "@",11,110,67,11,9 + COMBOBOX IDC_VIDEOCONFIG_BPP,122,65,32,12,CBS_DROPDOWNLIST | WS_TABSTOP + LTEXT "bpp",10,157,67,14,9 + LTEXT "Special Filter:",65444,11,91,46,9 + COMBOBOX IDC_VIDEOCONFIG_SCALER_FS,59,89,105,46,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Windowed Settings",65441,182,3,164,141,WS_GROUP + LTEXT "Size Multiplier:",65440,190,22,50,8 + CTEXT "X:",65439,253,10,26,8 + CTEXT "Y:",65438,304,10,26,8 + EDITTEXT IDC_WINSIZE_MUL_X,244,20,44,12,ES_AUTOHSCROLL + EDITTEXT IDC_WINSIZE_MUL_Y,295,20,44,12,ES_AUTOHSCROLL + CONTROL "Force integral scaling factors",IDC_FORCE_INT_VIDEO_SCALARS, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,50,136,12 + CONTROL "Force aspect ratio correction",IDC_FORCE_ASPECT_CORRECTION, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,195,64,136,12 + LTEXT "Special Filter:",65429,188,91,46,9 + COMBOBOX IDC_VIDEOCONFIG_SCALER_WIN,236,89,103,47,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Sync method:",65437,188,108,46,9 + COMBOBOX IDC_VIDEOCONFIG_SYNC_METHOD_WIN,236,106,103,47,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Drawing Area",65494,351,50,154,65,WS_GROUP + LTEXT "First line:",65436,367,68,40,9 + LTEXT "Last line:",65435,367,84,40,9 + CTEXT "NTSC",65434,413,57,27,8 + CTEXT "PAL/Dendy",65433,455,57,48,8 + EDITTEXT IDC_SCANLINE_FIRST_NTSC,414,66,27,12,ES_RIGHT | ES_NUMBER + EDITTEXT IDC_SCANLINE_LAST_NTSC,414,83,27,12,ES_RIGHT | ES_NUMBER + EDITTEXT IDC_SCANLINE_FIRST_PAL,465,66,27,12,ES_RIGHT | ES_NUMBER + EDITTEXT IDC_SCANLINE_LAST_PAL,465,83,27,12,ES_RIGHT | ES_NUMBER + CONTROL "Clip left and right sides (8 px on each)",IDC_VIDEOCONFIG_CLIPSIDES, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,98,140,12 + DEFPUSHBUTTON "Close",ID_CANCEL,449,150,56,14 + CONTROL "Allow more than 8 sprites per scanline",IDC_VIDEOCONFIG_NO8LIM, + "Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,128,138,11 + GROUPBOX "Emulation",65430,351,117,154,27,WS_GROUP + CONTROL "Best Fit",IDC_VIDEOCONFIG_BESTFIT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,14,41,12 + CONTROL "Hide mouse cursor",IDC_VIDEOCONFIG_HIDEMOUSE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,11,43,87,12 + GROUPBOX "Aspect ratio",65495,351,3,154,45,WS_GROUP + CONTROL "BG color",IDC_VIDEOCONFIG_CONSOLE_BGCOLOR,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,401,14,44,12 + CONTROL "TV Aspect",IDC_VIDEOCONFIG_TVASPECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,357,29,48,12 + GROUPBOX "When resizing the window",65431,188,38,152,43,WS_GROUP + CONTROL "Square pixels",IDC_VIDEOCONFIG_SQUARE_PIXELS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,448,14,55,12 + EDITTEXT IDC_TVASPECT_X,407,28,41,12,ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_TVASPECT_Y,458,28,41,12,ES_AUTOHSCROLL | WS_DISABLED + CTEXT "/",IDC_STATIC_SLASHTEXT,449,31,8,8,WS_DISABLED + LTEXT "DirectDraw:",65454,11,126,46,10 + LTEXT "DirectDraw:",65455,188,125,46,10 + COMBOBOX IDC_VIDEOCONFIG_DIRECTDRAW_FS,59,123,105,50,CBS_DROPDOWNLIST | WS_TABSTOP + COMBOBOX IDC_VIDEOCONFIG_DIRECTDRAW_WIN,236,123,103,47,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP +END + +IDD_RAMSEARCH DIALOGEX 0, 0, 287, 292 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION " RAM Search" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_RAMLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,9,9,214,151,WS_EX_CLIENTEDGE + PUSHBUTTON "&Search",IDC_C_SEARCH,226,9,52,16 + PUSHBUTTON "&Add Cheat",IDC_C_ADDCHEAT,226,130,52,14,WS_DISABLED + PUSHBUTTON "&Watch",IDC_C_WATCH,226,114,52,14 + PUSHBUTTON "&Reset",IDC_C_RESET,226,27,52,16 + PUSHBUTTON "&Eliminate",IDC_C_ELIMINATE,226,98,52,14 + GROUPBOX "Comparison Operator",IDC_STATIC,10,166,102,120,0,WS_EX_TRANSPARENT + CONTROL "Less Than",IDC_LESSTHAN,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,14,178,95,11 + CONTROL "Greater Than",IDC_MORETHAN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,191,95,11 + CONTROL "Less Than or Equal To",IDC_NOMORETHAN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,204,95,11 + CONTROL "Greater Than or Equal To",IDC_NOLESSTHAN,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,217,95,11 + CONTROL "Equal To",IDC_EQUALTO,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,230,95,11 + CONTROL "Not Equal To",IDC_DIFFERENTFROM,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,243,95,11 + CONTROL "Different By:",IDC_DIFFERENTBY,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,256,52,11 + CONTROL "Modulo",IDC_MODULO,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,14,269,35,11 + EDITTEXT IDC_EDIT_DIFFBY,69,255,38,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_EDIT_MODBY,51,267,38,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED + GROUPBOX "Compare To / By",IDC_STATIC,118,166,153,60,0,WS_EX_TRANSPARENT + CONTROL "Previous Value",IDC_PREVIOUSVALUE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,121,176,67,10 + CONTROL "Specific Value:",IDC_SPECIFICVALUE,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,188,67,10 + CONTROL "Specific Address:",IDC_SPECIFICADDRESS,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,200,67,10 + CONTROL "Number of Changes:",IDC_NUMBEROFCHANGES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,212,76,10 + EDITTEXT IDC_EDIT_COMPAREVALUE,203,187,63,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_EDIT_COMPAREADDRESS,203,199,63,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED + EDITTEXT IDC_EDIT_COMPARECHANGES,203,211,63,12,ES_UPPERCASE | ES_AUTOHSCROLL | WS_DISABLED + GROUPBOX "Data Type / Display",IDC_STATIC,196,228,75,45,0,WS_EX_TRANSPARENT + CONTROL "Signed",IDC_SIGNED,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,200,238,67,9 + CONTROL "Unsigned",IDC_UNSIGNED,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,200,249,67,9 + CONTROL "Hexadecimal",IDC_HEX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,200,260,67,9 + CONTROL "Autosearch",IDC_C_AUTOSEARCH,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,200,275,57,11 + GROUPBOX "Data Size",IDC_STATIC,117,228,73,58,0,WS_EX_TRANSPARENT + CONTROL "1 byte",IDC_1_BYTE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,121,238,61,11 + CONTROL "2 bytes",IDC_2_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,249,61,11 + CONTROL "4 bytes",IDC_4_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,121,260,61,11 + CONTROL "Check Misaligned",IDC_MISALIGN,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,121,273,65,8 + PUSHBUTTON "&Clear Change Counts",IDC_C_RESET_CHANGES,226,45,52,20,BS_MULTILINE + PUSHBUTTON "&Undo",IDC_C_UNDO,226,67,52,16,WS_DISABLED + LTEXT "Is",IDC_STATIC,92,270,12,8 + CONTROL "Search ROM",IDC_C_SEARCHROM,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,227,85,54,11 + PUSHBUTTON "&Hex Editor",IDC_C_HEXEDITOR,226,146,52,14 +END + +IDD_RAMWATCH DIALOGEX 0, 0, 269, 298 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "RAM Watch" +MENU RAMWATCH_MENU +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CONTROL "",IDC_WATCHLIST,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_OWNERDATA | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,9,9,210,279,WS_EX_CLIENTEDGE + PUSHBUTTON "Edit",IDC_C_WATCH_EDIT,226,66,34,14 + PUSHBUTTON "Remove",IDC_C_WATCH_REMOVE,226,83,34,14 + PUSHBUTTON "New",IDC_C_WATCH,226,100,34,14 + PUSHBUTTON "Duplicate",IDC_C_WATCH_DUPLICATE,226,117,34,14 + PUSHBUTTON "Add Cheat",IDC_C_ADDCHEAT,223,168,42,16,WS_DISABLED + GROUPBOX "Watches",IDC_STATIC,222,11,42,145 + CONTROL "",ID_WATCHES_UPDOWN,"msctls_updown32",WS_TABSTOP,232,23,19,36 + PUSHBUTTON "Separator",IDC_C_WATCH_SEPARATE,225,137,36,14 +END + +IDD_EDITWATCH DIALOGEX 0, 0, 181, 125 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION " Edit Watch" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + CTEXT "&Address:",IDC_SPECIFICADDRESS,15,12,30,8 + EDITTEXT IDC_EDIT_COMPAREADDRESS,48,10,65,12,ES_UPPERCASE | ES_AUTOHSCROLL + CTEXT "&Notes:",IDC_PROMPT_TEXT,23,24,22,8 + EDITTEXT IDC_PROMPT_EDIT,48,22,119,12,ES_AUTOHSCROLL + GROUPBOX "Data Type",IDC_DATATYPE_GROUPBOX,14,37,75,51,0,WS_EX_TRANSPARENT + CONTROL "&Signed",IDC_SIGNED,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,18,47,67,9 + CONTROL "&Unsigned",IDC_UNSIGNED,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,57,67,9 + CONTROL "&Hexadecimal",IDC_HEX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,67,67,9 + CONTROL "&Binary",IDC_BINARY,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,77,67,9 + GROUPBOX "Data Size",IDC_DATASIZE_GROUPBOX,94,37,73,42,0,WS_EX_TRANSPARENT + CONTROL "&1 byte",IDC_1_BYTE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,98,47,61,11 + CONTROL "&2 bytes",IDC_2_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,57,61,11 + CONTROL "&4 bytes",IDC_4_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,67,61,11 + DEFPUSHBUTTON "&OK",IDOK,66,97,50,14 + PUSHBUTTON "&Cancel",IDCANCEL,117,97,50,15 +END + +DLG_SNESPAD DIALOGEX 4, 109, 243, 121 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Gamepad Configuration" +FONT 8, "MS Shell Dlg", 0, 0, 0x0 +BEGIN + DEFPUSHBUTTON "Close",BTN_CLOSE,177,97,56,14 + GROUPBOX "",GRP_GAMEPAD1,4,8,232,82,WS_GROUP + PUSHBUTTON "Up",304,35,36,24,12 + PUSHBUTTON "Left",306,9,54,25,12 + PUSHBUTTON "Right",307,60,54,24,12 + PUSHBUTTON "Down",305,35,73,24,12 + PUSHBUTTON "Select",302,91,54,26,12 + PUSHBUTTON "Start",303,126,54,26,12 + PUSHBUTTON "Y",301,164,53,16,12 + PUSHBUTTON "B",300,181,66,16,12 + PUSHBUTTON "A",308,199,53,16,12 + PUSHBUTTON "X",309,181,40,16,12 + PUSHBUTTON "L",310,10,19,32,12 + PUSHBUTTON "R",311,198,19,32,12 +END + +IDD_TASEDITOR_SAVINGOPTIONS DIALOGEX 0, 0, 223, 208 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | DS_CENTER | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Project file saving options" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,109,187,50,14 + PUSHBUTTON "Cancel",IDCANCEL,165,187,50,14 + CONTROL " Binary format of Input",IDC_CHECK_BINARY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,17,89,10 + CONTROL " Markers",IDC_CHECK_MARKERS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,32,67,10 + CONTROL " Bookmarks",IDC_CHECK_BOOKMARKS,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,47,67,10 + CONTROL " History",IDC_CHECK_HISTORY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,62,67,10 + CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,77,67,10 + CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,67,10 + GROUPBOX "File contents",IDC_STATIC,105,4,111,177 + GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 + CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, + "Button",BS_AUTORADIOBUTTON,122,117,77,10 + CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, + "Button",BS_AUTORADIOBUTTON,122,131,77,10 + CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, + "Button",BS_AUTORADIOBUTTON,122,145,77,10 + CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, + "Button",BS_AUTORADIOBUTTON,122,159,77,10 + CONTROL " Autosave project",IDC_AUTOSAVE_PROJECT,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,17,81,10 + CONTROL " silently",IDC_SILENT_AUTOSAVE,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,47,42,10 + LTEXT "every",IDC_AUTOSAVE_PERIOD_EVERY_TEXT,14,32,21,8 + EDITTEXT IDC_AUTOSAVE_PERIOD,36,30,24,14,ES_AUTOHSCROLL | ES_NUMBER + LTEXT "minutes",IDC_AUTOSAVE_PERIOD_MINUTES_TEXT,64,32,28,8 + GROUPBOX "Settings",IDC_STATIC,6,4,91,177 +END + +IDD_SYMBOLIC_DEBUG_NAMING DIALOGEX 0, 0, 245, 83 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU +CAPTION "Symbolic Debug Naming" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "OK",IDOK,132,62,50,14 + PUSHBUTTON "Cancel",IDCANCEL,189,62,50,14 + LTEXT "File",IDC_STATIC,7,7,15,9 + EDITTEXT IDC_SYMBOLIC_ADDRESS,38,24,33,13,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP + LTEXT "Address",IDC_STATIC,6,26,30,10 + EDITTEXT IDC_SYMBOLIC_NAME,107,24,132,13,ES_AUTOHSCROLL + LTEXT "Name",IDC_STATIC,83,26,22,10 + LTEXT "Comment",IDC_STATIC,6,45,37,10 + EDITTEXT IDC_SYMBOLIC_COMMENT,45,43,194,13,ES_AUTOHSCROLL + EDITTEXT IDC_SYMBOLIC_FILENAME,24,6,215,12,ES_AUTOHSCROLL | ES_READONLY | NOT WS_TABSTOP +END + +IDD_REPLAY_METADATA DIALOGEX 0, 0, 325, 250 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Movie Metadata" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + DEFPUSHBUTTON "Close",IDCANCEL,268,229,50,14 + CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,7,7,311,214 +END + +IDD_EDIT_HEADER DIALOGEX 0, 0, 321, 258 +STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "iNES Header Editor" +FONT 8, "MS Shell Dlg", 400, 0, 0x1 +BEGIN + GROUPBOX "iNES Header",IDC_INESHEADER_GROUP,6,3,309,231,WS_DISABLED + GROUPBOX "Version",IDC_VERSION_GROUP,14,13,79,27,WS_DISABLED + CONTROL "iNES",IDC_RADIO_VERSION_STANDARD,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,20,24,27,10 + CONTROL "NES 2.0",IDC_RADIO_VERSION_INES20,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,51,24,38,10 + GROUPBOX "Mapper",IDC_MAPPER_GROUP,98,13,210,27,WS_DISABLED + LTEXT "Mapper#:",IDC_MAPPER_TEXT,104,24,33,8,WS_DISABLED + COMBOBOX IDC_MAPPER_COMBO,139,22,115,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "Sub#:",IDC_SUBMAPPER_TEXT,261,24,21,8,WS_DISABLED + EDITTEXT IDC_SUBMAPPER_EDIT,284,21,15,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + GROUPBOX "PRG",IDC_PRG_GROUP,14,42,294,27,WS_DISABLED + LTEXT "PRG ROM:",IDC_PRGROM_TEXT,20,53,34,8,WS_DISABLED + COMBOBOX IDC_PRGROM_COMBO,57,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "PRG RAM:",IDC_PRGRAM_TEXT,115,53,34,8,WS_DISABLED + COMBOBOX IDC_PRGRAM_COMBO,151,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "Battery-backed NVRAM",IDC_CHECK_BATTERYNVRAM,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,211,53,86,10 + LTEXT "PRG NVRAM:",IDC_PRGNVRAM_TEXT,208,53,42,8,WS_DISABLED + COMBOBOX IDC_PRGNVRAM_COMBO,253,51,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + GROUPBOX "CHR",IDC_CHR_GROUP,14,71,294,27,WS_DISABLED + LTEXT "CHR ROM:",IDC_CHRROM_TEXT,20,82,35,8,WS_DISABLED + COMBOBOX IDC_CHRROM_COMBO,57,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "CHR RAM:",IDC_CHRRAM_TEXT,115,82,34,8,WS_DISABLED + COMBOBOX IDC_CHRRAM_COMBO,151,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "CHR NVRAM:",IDC_CHRNVRAM_TEXT,207,82,43,8,WS_DISABLED + COMBOBOX IDC_CHRNVRAM_COMBO,253,80,46,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | CBS_UPPERCASE | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Mirroring",IDC_MIRRORING_GROUP,14,102,59,46,WS_DISABLED + CONTROL "Horizontal",IDC_RADIO_MIRR_HORIZONTAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,19,112,48,10 + CONTROL "Vertical",IDC_RADIO_MIRR_VERTICAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,19,123,39,10 + CONTROL "Four-screen",IDC_RADIO_MIRR_4SCREEN,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,19,134,51,10 + CONTROL "Trainer",IDC_CHECK_TRAINER,"Button",BS_AUTOCHECKBOX | WS_DISABLED | WS_TABSTOP,14,152,55,10 + GROUPBOX "Region",IDC_REGION_GROUP,78,102,40,58,WS_DISABLED + CONTROL "NTSC",IDC_RADIO_REGION_NTSC,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,83,112,29,10 + CONTROL "PAL",IDC_RADIO_REGION_PAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,123,28,10 + CONTROL "Dual",IDC_RADIO_REGION_DUAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,146,30,10 + CONTROL "Dendy",IDC_RADIO_REGION_DENDY,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,83,134,33,10 + GROUPBOX "System",IDC_SYSTEM_GROUP,123,102,184,109,WS_DISABLED + CONTROL "Normal",IDC_RADIO_SYSTEM_NORMAL,"Button",BS_AUTORADIOBUTTON | WS_DISABLED | WS_GROUP | WS_TABSTOP,129,114,34,10 + CONTROL "VS. Sys",IDC_RADIO_SYSTEM_VS,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,167,114,37,10 + CONTROL "Playchoice-10",IDC_RADIO_SYSTEM_PLAYCHOICE10,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,208,114,56,10 + CONTROL "Extend",IDC_RADIO_SYSTEM_EXTEND,"Button",BS_AUTORADIOBUTTON | WS_DISABLED,268,114,35,10 + GROUPBOX "Extend System",IDC_EXTEND_SYSTEM_GROUP,130,176,171,29,WS_DISABLED + LTEXT "Console:",IDC_EXTEND_SYSTEM_TEXT,136,189,29,8,WS_DISABLED + COMBOBOX IDC_SYSTEM_EXTEND_COMBO,168,186,127,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + GROUPBOX "VS. System",IDC_VS_SYSTEM_GROUP,130,126,171,46,WS_DISABLED + LTEXT "Hardware:",IDC_VS_SYSTEM_TEXT,136,138,35,8,WS_DISABLED + COMBOBOX IDC_VS_SYSTEM_COMBO,174,136,121,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "PPU:",IDC_VS_PPU_TEXT,136,155,16,8,WS_DISABLED + COMBOBOX IDC_VS_PPU_COMBO,155,154,140,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + CONTROL "iNES 1.0 Unofficial Properties",IDC_CHECK_UNOFFICIAL, + "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,14,164,103,10 + GROUPBOX "iNES 1.0 Unofficial Properties",IDC_UNOFFICIAL_GROUP,13,176,104,35,WS_DISABLED + CONTROL "Dual region",IDC_CHECK_UNOFFICIAL_EXTRA_REGION,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,186,48,10 + CONTROL "PRG RAM exists",IDC_CHECK_UNOFFICIAL_PRGRAM,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,70,188,43,17 + CONTROL "Bus conflict",IDC_CHECK_UNOFFICIAL_BUS_CONFLICT,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,198,49,10 + LTEXT "Input device:",IDC_INPUT_DEVICE_TEXT,106,218,44,8,WS_DISABLED + COMBOBOX IDC_INPUT_DEVICE_COMBO,153,216,154,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP + LTEXT "Misc. ROM(s)",IDC_MISCELLANEOUS_ROMS_TEXT,29,218,48,8,WS_DISABLED + EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED + PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,6,237,44,14,WS_DISABLED + PUSHBUTTON "Save as...",IDSAVE,223,237,44,14,WS_DISABLED + DEFPUSHBUTTON "Close",IDCLOSE,270,237,44,14 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// DESIGNINFO +// + +#ifdef APSTUDIO_INVOKED +GUIDELINES DESIGNINFO +BEGIN + "DIRCONFIG", DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 295 + TOPMARGIN, 8 + END + + "DWBDIALOG", DIALOG + BEGIN + END + + "FKBDIALOG", DIALOG + BEGIN + END + + "GAMEPADDIALOG", DIALOG + BEGIN + END + + "GUICONFIG", DIALOG + BEGIN + END + + "INPUTCONFIG", DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 338 + TOPMARGIN, 8 + BOTTOMMARGIN, 191 + END + + "MAHJONGDIALOG", DIALOG + BEGIN + END + + "NETMOO", DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 357 + TOPMARGIN, 8 + BOTTOMMARGIN, 201 + END + + "PALCONFIG", DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 218 + TOPMARGIN, 8 + BOTTOMMARGIN, 209 + END + + "SOUNDCONFIG", DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 324 + TOPMARGIN, 8 + BOTTOMMARGIN, 274 + END + + "TIMINGCONFIG", DIALOG + BEGIN + LEFTMARGIN, 10 + RIGHTMARGIN, 193 + TOPMARGIN, 8 + BOTTOMMARGIN, 101 + END + + "MOVIEOPTIONS", DIALOG + BEGIN + LEFTMARGIN, 4 + RIGHTMARGIN, 138 + TOPMARGIN, 8 + BOTTOMMARGIN, 217 + END + + "DWBDIALOGSIMPLE", DIALOG + BEGIN + END + + "MEMWATCH", DIALOG + BEGIN + RIGHTMARGIN, 260 + BOTTOMMARGIN, 269 + END + + "DEBUGGER", DIALOG + BEGIN + BOTTOMMARGIN, 332 + END + + "TRACER", DIALOG + BEGIN + END + + "ADDBP", DIALOG + BEGIN + RIGHTMARGIN, 195 + BOTTOMMARGIN, 123 + END + + "NTVIEW", DIALOG + BEGIN + END + + "GGCONV", DIALOG + BEGIN + END + + "MONITOR", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 312 + TOPMARGIN, 7 + BOTTOMMARGIN, 336 + END + + "MEMVIEWFIND", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 275 + TOPMARGIN, 7 + BOTTOMMARGIN, 74 + END + + "IDD_RECORDINP", DIALOG + BEGIN + BOTTOMMARGIN, 66 + END + + "IDD_REPLAYINP", DIALOG + BEGIN + BOTTOMMARGIN, 198 + END + + "TASEDITOR", DIALOG + BEGIN + END + + IDD_TASEDITOR_ABOUT, DIALOG + BEGIN + END + + IDD_TASEDITOR_NEWPROJECT, DIALOG + BEGIN + END + + IDD_TASEDITOR_EXPORT, DIALOG + BEGIN + END + + IDD_TASEDITOR_FINDNOTE, DIALOG + BEGIN + END + + IDD_TASEDITOR_SAVECOMPACT, DIALOG + BEGIN + END + + "ASSEMBLER", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 195 + TOPMARGIN, 7 + BOTTOMMARGIN, 128 + END + + "NAMEBOOKMARKDLG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 179 + TOPMARGIN, 7 + BOTTOMMARGIN, 66 + END + + "CDLOGGER", DIALOG + BEGIN + END + + "PPUVIEW", DIALOG + BEGIN + END + + "ARCHIVECHOOSERDIALOG", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 258 + TOPMARGIN, 7 + BOTTOMMARGIN, 152 + END + + "TEXTHOOKER", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 449 + TOPMARGIN, 7 + BOTTOMMARGIN, 320 + END + + "CHEATCONSOLE", DIALOG + BEGIN + RIGHTMARGIN, 386 + BOTTOMMARGIN, 225 + END + + "VIDEOCONFIG", DIALOG + BEGIN + END + + IDD_RAMSEARCH, DIALOG + BEGIN + END + + IDD_RAMWATCH, DIALOG + BEGIN + END + + IDD_EDITWATCH, DIALOG + BEGIN + BOTTOMMARGIN, 94 + END + + DLG_SNESPAD, DIALOG + BEGIN + END + + IDD_TASEDITOR_SAVINGOPTIONS, DIALOG + BEGIN + END + + IDD_SYMBOLIC_DEBUG_NAMING, DIALOG + BEGIN + BOTTOMMARGIN, 82 + END + + "IDD_REPLAY_METADATA", DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 318 + TOPMARGIN, 7 + BOTTOMMARGIN, 243 + END + + IDD_EDIT_HEADER, DIALOG + BEGIN + LEFTMARGIN, 7 + RIGHTMARGIN, 314 + TOPMARGIN, 7 + BOTTOMMARGIN, 251 + END +END +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// AFX_DIALOG_LAYOUT +// + +NTVIEW AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +TIMINGCONFIG AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_TASEDITOR_SAVINGOPTIONS AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_EDITWATCH AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +GGCONV AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +CHEATCONSOLE AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_EDIT_HEADER AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +ADDBP AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +MEMWATCH AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +ASSEMBLER AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +MEMVIEWFIND AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +VIDEOCONFIG AFX_DIALOG_LAYOUT +BEGIN + 0 +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Accelerator +// + +IDR_TASEDITOR_ACCELERATORS ACCELERATORS +BEGIN + "A", ACCEL_CTRL_A, VIRTKEY, CONTROL, NOINVERT + "B", ACCEL_CTRL_B, VIRTKEY, CONTROL, NOINVERT + "C", ACCEL_CTRL_C, VIRTKEY, CONTROL, NOINVERT + VK_DELETE, ACCEL_CTRL_DELETE, VIRTKEY, CONTROL, NOINVERT + VK_DOWN, ACCEL_CTRL_DOWN, VIRTKEY, CONTROL, NOINVERT + VK_END, ACCEL_CTRL_END, VIRTKEY, CONTROL, NOINVERT + "F", ACCEL_CTRL_F, VIRTKEY, CONTROL, NOINVERT + VK_HOME, ACCEL_CTRL_HOME, VIRTKEY, CONTROL, NOINVERT + VK_INSERT, ACCEL_CTRL_INSERT, VIRTKEY, CONTROL, NOINVERT + VK_LEFT, ACCEL_CTRL_LEFT, VIRTKEY, CONTROL, NOINVERT + VK_NEXT, ACCEL_CTRL_PGDN, VIRTKEY, CONTROL, NOINVERT + VK_PRIOR, ACCEL_CTRL_PGUP, VIRTKEY, CONTROL, NOINVERT + "Q", ACCEL_CTRL_Q, VIRTKEY, CONTROL, NOINVERT + VK_RIGHT, ACCEL_CTRL_RIGHT, VIRTKEY, CONTROL, NOINVERT + "S", ACCEL_CTRL_S, VIRTKEY, CONTROL, NOINVERT + VK_INSERT, ACCEL_CTRL_SHIFT_INS, VIRTKEY, SHIFT, CONTROL, NOINVERT + "V", ACCEL_CTRL_SHIFT_V, VIRTKEY, SHIFT, CONTROL, NOINVERT + VK_UP, ACCEL_CTRL_UP, VIRTKEY, CONTROL, NOINVERT + "V", ACCEL_CTRL_V, VIRTKEY, CONTROL, NOINVERT + "W", ACCEL_CTRL_W, VIRTKEY, CONTROL, NOINVERT + "X", ACCEL_CTRL_X, VIRTKEY, CONTROL, NOINVERT + "Y", ACCEL_CTRL_Y, VIRTKEY, CONTROL, NOINVERT + "Z", ACCEL_CTRL_Z, VIRTKEY, CONTROL, NOINVERT + VK_DELETE, ACCEL_DEL, VIRTKEY, NOINVERT + VK_END, ACCEL_END, VIRTKEY, NOINVERT + VK_HOME, ACCEL_HOME, VIRTKEY, NOINVERT + VK_INSERT, ACCEL_INS, VIRTKEY, NOINVERT + VK_NEXT, ACCEL_PGDN, VIRTKEY, NOINVERT + VK_PRIOR, ACCEL_PGUP, VIRTKEY, NOINVERT + VK_DOWN, ACCEL_SHIFT_DOWN, VIRTKEY, SHIFT, NOINVERT + VK_END, ACCEL_SHIFT_END, VIRTKEY, SHIFT, NOINVERT + VK_HOME, ACCEL_SHIFT_HOME, VIRTKEY, SHIFT, NOINVERT + VK_LEFT, ACCEL_SHIFT_LEFT, VIRTKEY, SHIFT, NOINVERT + VK_NEXT, ACCEL_SHIFT_PGDN, VIRTKEY, SHIFT, NOINVERT + VK_PRIOR, ACCEL_SHIFT_PGUP, VIRTKEY, SHIFT, NOINVERT + VK_RIGHT, ACCEL_SHIFT_RIGHT, VIRTKEY, SHIFT, NOINVERT + VK_UP, ACCEL_SHIFT_UP, VIRTKEY, SHIFT, NOINVERT +END + +IDR_RWACCELERATOR ACCELERATORS +BEGIN + "N", RAMMENU_FILE_NEW, VIRTKEY, CONTROL + "O", RAMMENU_FILE_OPEN, VIRTKEY, CONTROL + "S", RAMMENU_FILE_SAVE, VIRTKEY, CONTROL + "S", RAMMENU_FILE_SAVEAS, VIRTKEY, SHIFT, CONTROL + "A", IDC_C_WATCH_DUPLICATE, VIRTKEY + "E", IDC_C_WATCH_EDIT, VIRTKEY + "D", IDC_C_WATCH_DOWN, VIRTKEY + "U", IDC_C_WATCH_UP, VIRTKEY + "N", IDC_C_WATCH, VIRTKEY + "R", IDC_C_WATCH_REMOVE, VIRTKEY +END + + +///////////////////////////////////////////////////////////////////////////// +// +// Bitmap +// + +IDB_BITMAP0 BITMAP "res\\te_0.bmp" + +IDB_BITMAP1 BITMAP "res\\te_1.bmp" + +IDB_BITMAP2 BITMAP "res\\te_2.bmp" + +IDB_BITMAP3 BITMAP "res\\te_3.bmp" + +IDB_BITMAP4 BITMAP "res\\te_4.bmp" + +IDB_BITMAP5 BITMAP "res\\te_5.bmp" + +IDB_BITMAP6 BITMAP "res\\te_6.bmp" + +IDB_BITMAP7 BITMAP "res\\te_7.bmp" + +IDB_BITMAP8 BITMAP "res\\te_8.bmp" + +IDB_BITMAP9 BITMAP "res\\te_9.bmp" + +IDB_BITMAP10 BITMAP "res\\te_10.bmp" + +IDB_BITMAP11 BITMAP "res\\te_11.bmp" + +IDB_BITMAP12 BITMAP "res\\te_12.bmp" + +IDB_BITMAP13 BITMAP "res\\te_13.bmp" + +IDB_BITMAP14 BITMAP "res\\te_14.bmp" + +IDB_BITMAP15 BITMAP "res\\te_15.bmp" + +IDB_BITMAP16 BITMAP "res\\te_16.bmp" + +IDB_BITMAP17 BITMAP "res\\te_17.bmp" + +IDB_BITMAP18 BITMAP "res\\te_18.bmp" + +IDB_BITMAP19 BITMAP "res\\te_19.bmp" + +IDB_TE_ARROW BITMAP "res\\te_arrow.bmp" + +IDB_TE_GREEN_ARROW BITMAP "res\\te_green_arrow.bmp" + +IDB_TE_GREEN_BLUE_ARROW BITMAP "res\\te_green_blue_arrow.bmp" + +IDB_PIANO_0 BITMAP "res\\te_piano_0.bmp" + +IDB_PIANO_1 BITMAP "res\\te_piano_1.bmp" + +IDB_PIANO_2 BITMAP "res\\te_piano_2.bmp" + +IDB_PIANO_3 BITMAP "res\\te_piano_3.bmp" + +IDB_PIANO_4 BITMAP "res\\te_piano_4.bmp" + +IDB_PIANO_5 BITMAP "res\\te_piano_5.bmp" + +IDB_PIANO_6 BITMAP "res\\te_piano_6.bmp" + +IDB_PIANO_7 BITMAP "res\\te_piano_7.bmp" + +IDB_PIANO_8 BITMAP "res\\te_piano_8.bmp" + +IDB_PIANO_9 BITMAP "res\\te_piano_9.bmp" + +IDB_PIANO_10 BITMAP "res\\te_piano_10.bmp" + +IDB_PIANO_11 BITMAP "res\\te_piano_11.bmp" + +IDB_PIANO_12 BITMAP "res\\te_piano_12.bmp" + +IDB_PIANO_13 BITMAP "res\\te_piano_13.bmp" + +IDB_PIANO_14 BITMAP "res\\te_piano_14.bmp" + +IDB_PIANO_15 BITMAP "res\\te_piano_15.bmp" + +IDB_PIANO_16 BITMAP "res\\te_piano_16.bmp" + +IDB_PIANO_17 BITMAP "res\\te_piano_17.bmp" + +IDB_PIANO_18 BITMAP "res\\te_piano_18.bmp" + +IDB_PIANO_19 BITMAP "res\\te_piano_19.bmp" + +IDB_PIANO_PLAYBACK_0 BITMAP "res\\te_piano_0_playback.bmp" + +IDB_PIANO_PLAYBACK_1 BITMAP "res\\te_piano_1_playback.bmp" + +IDB_PIANO_PLAYBACK_2 BITMAP "res\\te_piano_2_playback.bmp" + +IDB_PIANO_PLAYBACK_3 BITMAP "res\\te_piano_3_playback.bmp" + +IDB_PIANO_PLAYBACK_4 BITMAP "res\\te_piano_4_playback.bmp" + +IDB_PIANO_PLAYBACK_5 BITMAP "res\\te_piano_5_playback.bmp" + +IDB_PIANO_PLAYBACK_6 BITMAP "res\\te_piano_6_playback.bmp" + +IDB_PIANO_PLAYBACK_7 BITMAP "res\\te_piano_7_playback.bmp" + +IDB_PIANO_PLAYBACK_8 BITMAP "res\\te_piano_8_playback.bmp" + +IDB_PIANO_PLAYBACK_9 BITMAP "res\\te_piano_9_playback.bmp" + +IDB_PIANO_PLAYBACK_10 BITMAP "res\\te_piano_10_playback.bmp" + +IDB_PIANO_PLAYBACK_11 BITMAP "res\\te_piano_11_playback.bmp" + +IDB_PIANO_PLAYBACK_12 BITMAP "res\\te_piano_12_playback.bmp" + +IDB_PIANO_PLAYBACK_13 BITMAP "res\\te_piano_13_playback.bmp" + +IDB_PIANO_PLAYBACK_14 BITMAP "res\\te_piano_14_playback.bmp" + +IDB_PIANO_PLAYBACK_15 BITMAP "res\\te_piano_15_playback.bmp" + +IDB_PIANO_PLAYBACK_16 BITMAP "res\\te_piano_16_playback.bmp" + +IDB_PIANO_PLAYBACK_17 BITMAP "res\\te_piano_17_playback.bmp" + +IDB_PIANO_PLAYBACK_18 BITMAP "res\\te_piano_18_playback.bmp" + +IDB_PIANO_PLAYBACK_19 BITMAP "res\\te_piano_19_playback.bmp" + +IDB_PIANO_LOSTPOS_0 BITMAP "res\\te_piano_0_lostpos.bmp" + +IDB_PIANO_LOSTPOS_1 BITMAP "res\\te_piano_1_lostpos.bmp" + +IDB_PIANO_LOSTPOS_2 BITMAP "res\\te_piano_2_lostpos.bmp" + +IDB_PIANO_LOSTPOS_3 BITMAP "res\\te_piano_3_lostpos.bmp" + +IDB_PIANO_LOSTPOS_4 BITMAP "res\\te_piano_4_lostpos.bmp" + +IDB_PIANO_LOSTPOS_5 BITMAP "res\\te_piano_5_lostpos.bmp" + +IDB_PIANO_LOSTPOS_6 BITMAP "res\\te_piano_6_lostpos.bmp" + +IDB_PIANO_LOSTPOS_7 BITMAP "res\\te_piano_7_lostpos.bmp" + +IDB_PIANO_LOSTPOS_8 BITMAP "res\\te_piano_8_lostpos.bmp" + +IDB_PIANO_LOSTPOS_9 BITMAP "res\\te_piano_9_lostpos.bmp" + +IDB_PIANO_LOSTPOS_10 BITMAP "res\\te_piano_10_lostpos.bmp" + +IDB_PIANO_LOSTPOS_11 BITMAP "res\\te_piano_11_lostpos.bmp" + +IDB_PIANO_LOSTPOS_12 BITMAP "res\\te_piano_12_lostpos.bmp" + +IDB_PIANO_LOSTPOS_13 BITMAP "res\\te_piano_13_lostpos.bmp" + +IDB_PIANO_LOSTPOS_14 BITMAP "res\\te_piano_14_lostpos.bmp" + +IDB_PIANO_LOSTPOS_15 BITMAP "res\\te_piano_15_lostpos.bmp" + +IDB_PIANO_LOSTPOS_16 BITMAP "res\\te_piano_16_lostpos.bmp" + +IDB_PIANO_LOSTPOS_17 BITMAP "res\\te_piano_17_lostpos.bmp" + +IDB_PIANO_LOSTPOS_18 BITMAP "res\\te_piano_18_lostpos.bmp" + +IDB_PIANO_LOSTPOS_19 BITMAP "res\\te_piano_19_lostpos.bmp" + +IDB_BITMAP_SELECTED0 BITMAP "res\\te_0_selected.bmp" + +IDB_BITMAP_SELECTED1 BITMAP "res\\te_1_selected.bmp" + +IDB_BITMAP_SELECTED2 BITMAP "res\\te_2_selected.bmp" + +IDB_BITMAP_SELECTED3 BITMAP "res\\te_3_selected.bmp" + +IDB_BITMAP_SELECTED4 BITMAP "res\\te_4_selected.bmp" + +IDB_BITMAP_SELECTED5 BITMAP "res\\te_5_selected.bmp" + +IDB_BITMAP_SELECTED6 BITMAP "res\\te_6_selected.bmp" + +IDB_BITMAP_SELECTED7 BITMAP "res\\te_7_selected.bmp" + +IDB_BITMAP_SELECTED8 BITMAP "res\\te_8_selected.bmp" + +IDB_BITMAP_SELECTED9 BITMAP "res\\te_9_selected.bmp" + +IDB_BITMAP_SELECTED10 BITMAP "res\\te_10_selected.bmp" + +IDB_BITMAP_SELECTED11 BITMAP "res\\te_11_selected.bmp" + +IDB_BITMAP_SELECTED12 BITMAP "res\\te_12_selected.bmp" + +IDB_BITMAP_SELECTED13 BITMAP "res\\te_13_selected.bmp" + +IDB_BITMAP_SELECTED14 BITMAP "res\\te_14_selected.bmp" + +IDB_BITMAP_SELECTED15 BITMAP "res\\te_15_selected.bmp" + +IDB_BITMAP_SELECTED16 BITMAP "res\\te_16_selected.bmp" + +IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp" + +IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" + +IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" + +IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" + +#endif // English (United States) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + From e1f52e6ffb20b27bbe25f1c463f68b7b4d7ef04e Mon Sep 17 00:00:00 2001 From: g0me3 Date: Thu, 20 Jun 2019 22:32:27 +0300 Subject: [PATCH 21/21] little bit win gui polishing --- src/drivers/win/res.rc | 114 +++++++++++++++++++++++++++++------------ 1 file changed, 82 insertions(+), 32 deletions(-) diff --git a/src/drivers/win/res.rc b/src/drivers/win/res.rc index 9c5d30f9..70d22e6a 100644 --- a/src/drivers/win/res.rc +++ b/src/drivers/win/res.rc @@ -898,31 +898,31 @@ BEGIN END INPUTCONFIG DIALOGEX 122, 105, 349, 199 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Input Configuration" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN GROUPBOX "Port 1:",102,20,31,152,50 - COMBOBOX COMBO_PAD1,27,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Configure",BTN_PORT1,109,43,56,14 - GROUPBOX "Port 2:",103,176,31,152,50 - COMBOBOX COMBO_PAD2,183,57,71,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Configure",BTN_PORT2,265,41,56,14 + COMBOBOX COMBO_PAD1,27,57,74,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Configure",BTN_PORT1,109,40,56,14 + GROUPBOX "Port 2:",103,176,31,162,50 + COMBOBOX COMBO_PAD2,183,57,84,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + DEFPUSHBUTTON "Configure",BTN_PORT2,275,40,56,14 GROUPBOX "NES-style Input Ports",108,10,8,328,83 GROUPBOX "Famicom Expansion Port:",109,176,93,162,50 COMBOBOX COMBO_FAM,183,122,84,60,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "Configure",BTN_FAM,275,105,56,14 - CONTROL "",65487,"Static",SS_BLACKFRAME,27,41,71,12 - CONTROL "",65486,"Static",SS_BLACKFRAME,183,41,71,12 + CONTROL "",65487,"Static",SS_BLACKFRAME,27,41,74,12 + CONTROL "",65486,"Static",SS_BLACKFRAME,183,41,84,12 CONTROL "",65485,"Static",SS_BLACKFRAME,183,106,84,12 - CTEXT "",TXT_PAD1,30,42,65,10 - CTEXT "",TXT_PAD2,186,42,65,10 + CTEXT "",TXT_PAD1,30,42,68,10 + CTEXT "",TXT_PAD2,186,42,78,10 CTEXT "",TXT_FAM,186,107,78,10 PUSHBUTTON "Set",BTN_AUTO_HOLD,19,157,45,13 LTEXT "not assigned",LBL_AUTO_HOLD,71,159,87,8 PUSHBUTTON "Clear",BTN_CLEAR_AH,19,172,45,13 LTEXT "not assigned",LBL_CLEAR_AH,71,174,87,8 - DEFPUSHBUTTON "Close",BTN_CLOSE,282,177,56,14 + DEFPUSHBUTTON "Close",BTN_CLOSE,275,177,56,14 GROUPBOX "Input Presets",113,10,93,162,50 CONTROL "Allow Left+Right / Up+Down",BTN_ALLOW_LRUD,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,183,157,107,10 PUSHBUTTON "Set",BTN_PRESET_SET1,34,103,37,11 @@ -934,7 +934,7 @@ BEGIN PUSHBUTTON "Export",BTN_PRESET_EXPORT1,123,103,37,11 PUSHBUTTON "Export",BTN_PRESET_EXPORT2,123,115,37,11 PUSHBUTTON "Export",BTN_PRESET_EXPORT3,123,127,37,11 - GROUPBOX "Auto-Hold",118,10,146,162,44 + GROUPBOX "Auto-Hold",118,10,146,162,46 GROUPBOX "Emulation",119,176,146,162,25 CTEXT "1",IDC_STATIC,18,105,8,8 CTEXT "2",IDC_STATIC,18,116,8,8 @@ -1480,7 +1480,7 @@ BEGIN END TRACER DIALOGEX 0, 0, 317, 181 -STYLE DS_SETFONT | DS_3DLOOK | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME +STYLE DS_SETFONT | DS_3DLOOK | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME CAPTION "Trace Logger" FONT 8, "MS Shell Dlg", 400, 0, 0x0 BEGIN @@ -1513,12 +1513,12 @@ BEGIN CONTROL "Only log newly mapped code",IDC_CHECK_LOG_NEW_INSTRUCTIONS, "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,8,162,102,10 CONTROL "Only log code that accesses newly mapped data",IDC_CHECK_LOG_NEW_DATA, - "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,112,162,171,10 + "Button",BS_AUTOCHECKBOX | BS_LEFT | WS_TABSTOP,113,162,171,10 CONTROL "Log Bank number",IDC_CHECK_LOG_BANK_NUMBER,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,211,121,100,10 END -ADDBP DIALOGEX 66, 83, 197, 125 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +ADDBP DIALOGEX 66, 83, 197, 127 +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Add Breakpoint..." FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -1573,7 +1573,7 @@ BEGIN END ROMPATCHER DIALOGEX 84, 67, 304, 135 -STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +STYLE DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | DS_FIXEDSYS | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Rom Data Editor" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN @@ -1702,7 +1702,7 @@ CAPTION "Play Movie" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN DEFPUSHBUTTON "OK",1,189,183,50,14 - GROUPBOX "",65497,3,0,293,179 + GROUPBOX "",65497,3,0,293,180 RTEXT "File:",65498,8,11,24,10,SS_CENTERIMAGE | NOT WS_GROUP COMBOBOX IDC_COMBO_FILENAME,35,10,257,128,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP PUSHBUTTON "Cancel",2,243,183,50,14 @@ -1966,7 +1966,7 @@ BEGIN LISTBOX IDC_LIST1,7,7,251,120,LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP END -TEXTHOOKER DIALOGEX 0, 0, 456, 327 +TEXTHOOKER DIALOGEX 0, 0, 437, 314 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_ACCEPTFILES CAPTION "Text Hooker" @@ -2198,13 +2198,13 @@ BEGIN PUSHBUTTON "Remove",IDC_C_WATCH_REMOVE,226,83,34,14 PUSHBUTTON "New",IDC_C_WATCH,226,100,34,14 PUSHBUTTON "Duplicate",IDC_C_WATCH_DUPLICATE,226,117,34,14 - PUSHBUTTON "Add Cheat",IDC_C_ADDCHEAT,223,168,42,16,WS_DISABLED - GROUPBOX "Watches",IDC_STATIC,222,11,42,145 + PUSHBUTTON "Add Cheat",IDC_C_ADDCHEAT,222,163,42,16,WS_DISABLED + GROUPBOX "Watches",IDC_STATIC,222,6,42,152 CONTROL "",ID_WATCHES_UPDOWN,"msctls_updown32",WS_TABSTOP,232,23,19,36 PUSHBUTTON "Separator",IDC_C_WATCH_SEPARATE,225,137,36,14 END -IDD_EDITWATCH DIALOGEX 0, 0, 181, 125 +IDD_EDITWATCH DIALOGEX 0, 0, 177, 115 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION " Edit Watch" FONT 8, "MS Shell Dlg", 400, 0, 0x1 @@ -2213,17 +2213,17 @@ BEGIN EDITTEXT IDC_EDIT_COMPAREADDRESS,48,10,65,12,ES_UPPERCASE | ES_AUTOHSCROLL CTEXT "&Notes:",IDC_PROMPT_TEXT,23,24,22,8 EDITTEXT IDC_PROMPT_EDIT,48,22,119,12,ES_AUTOHSCROLL - GROUPBOX "Data Type",IDC_DATATYPE_GROUPBOX,14,37,75,51,0,WS_EX_TRANSPARENT + GROUPBOX "Data Type",IDC_DATATYPE_GROUPBOX,14,37,75,53,0,WS_EX_TRANSPARENT CONTROL "&Signed",IDC_SIGNED,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,18,47,67,9 CONTROL "&Unsigned",IDC_UNSIGNED,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,57,67,9 CONTROL "&Hexadecimal",IDC_HEX,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,67,67,9 CONTROL "&Binary",IDC_BINARY,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,18,77,67,9 - GROUPBOX "Data Size",IDC_DATASIZE_GROUPBOX,94,37,73,42,0,WS_EX_TRANSPARENT + GROUPBOX "Data Size",IDC_DATASIZE_GROUPBOX,94,37,73,52,0,WS_EX_TRANSPARENT CONTROL "&1 byte",IDC_1_BYTE,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,98,47,61,11 CONTROL "&2 bytes",IDC_2_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,57,61,11 CONTROL "&4 bytes",IDC_4_BYTES,"Button",BS_AUTORADIOBUTTON | WS_TABSTOP,98,67,61,11 - DEFPUSHBUTTON "&OK",IDOK,66,97,50,14 - PUSHBUTTON "&Cancel",IDCANCEL,117,97,50,15 + DEFPUSHBUTTON "&OK",IDOK,66,93,50,14 + PUSHBUTTON "&Cancel",IDCANCEL,118,93,50,14 END DLG_SNESPAD DIALOGEX 4, 109, 243, 121 @@ -2358,7 +2358,7 @@ BEGIN COMBOBOX IDC_VS_PPU_COMBO,155,154,140,30,CBS_DROPDOWN | CBS_AUTOHSCROLL | WS_DISABLED | WS_VSCROLL | WS_TABSTOP CONTROL "iNES 1.0 Unofficial Properties",IDC_CHECK_UNOFFICIAL, "Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,14,164,103,10 - GROUPBOX "iNES 1.0 Unofficial Properties",IDC_UNOFFICIAL_GROUP,13,176,104,35,WS_DISABLED + GROUPBOX "iNES 1.0 Unofficial Properties",IDC_UNOFFICIAL_GROUP,13,176,105,35,WS_DISABLED CONTROL "Dual region",IDC_CHECK_UNOFFICIAL_EXTRA_REGION,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,186,48,10 CONTROL "PRG RAM exists",IDC_CHECK_UNOFFICIAL_PRGRAM,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,70,188,43,17 CONTROL "Bus conflict",IDC_CHECK_UNOFFICIAL_BUS_CONFLICT,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_DISABLED | WS_TABSTOP,19,198,49,10 @@ -2368,7 +2368,7 @@ BEGIN EDITTEXT IDC_MISCELLANEOUS_ROMS_EDIT,14,215,12,14,ES_AUTOHSCROLL | ES_NUMBER | WS_DISABLED PUSHBUTTON "Restore",IDC_RESTORE_BUTTON,6,237,44,14,WS_DISABLED PUSHBUTTON "Save as...",IDSAVE,223,237,44,14,WS_DISABLED - DEFPUSHBUTTON "Close",IDCLOSE,270,237,44,14 + DEFPUSHBUTTON "Close",IDCLOSE,271,237,44,14 END @@ -2431,6 +2431,14 @@ BEGIN BOTTOMMARGIN, 209 END + "POWERPADDIALOG", DIALOG + BEGIN + END + + "QUIZKINGDIALOG", DIALOG + BEGIN + END + "SOUNDCONFIG", DIALOG BEGIN LEFTMARGIN, 10 @@ -2439,6 +2447,10 @@ BEGIN BOTTOMMARGIN, 274 END + "SUBORKBDIALOG", DIALOG + BEGIN + END + "TIMINGCONFIG", DIALOG BEGIN LEFTMARGIN, 10 @@ -2477,13 +2489,17 @@ BEGIN "ADDBP", DIALOG BEGIN RIGHTMARGIN, 195 - BOTTOMMARGIN, 123 + BOTTOMMARGIN, 125 END "NTVIEW", DIALOG BEGIN END + "ROMPATCHER", DIALOG + BEGIN + END + "GGCONV", DIALOG BEGIN END @@ -2573,9 +2589,9 @@ BEGIN "TEXTHOOKER", DIALOG BEGIN LEFTMARGIN, 7 - RIGHTMARGIN, 449 + RIGHTMARGIN, 430 TOPMARGIN, 7 - BOTTOMMARGIN, 320 + BOTTOMMARGIN, 307 END "CHEATCONSOLE", DIALOG @@ -2584,6 +2600,10 @@ BEGIN BOTTOMMARGIN, 225 END + IDD_LUA, DIALOG + BEGIN + END + "VIDEOCONFIG", DIALOG BEGIN END @@ -2598,7 +2618,7 @@ BEGIN IDD_EDITWATCH, DIALOG BEGIN - BOTTOMMARGIN, 94 + BOTTOMMARGIN, 112 END DLG_SNESPAD, DIALOG @@ -2698,6 +2718,36 @@ BEGIN 0 END +INPUTCONFIG AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_REPLAYINP AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +IDD_RAMWATCH AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +TRACER AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +TEXTHOOKER AFX_DIALOG_LAYOUT +BEGIN + 0 +END + +ROMPATCHER AFX_DIALOG_LAYOUT +BEGIN + 0 +END + ///////////////////////////////////////////////////////////////////////////// //