Use .bml instead of .cht. Add fallbacks where loading.

This commit is contained in:
Brandon Wright 2018-04-30 17:19:33 -05:00
parent 074965bd1c
commit e3838a2dad
5 changed files with 57 additions and 54 deletions

View File

@ -766,7 +766,7 @@ static void S9xLoadCheatsFromBMLNode (bml_node *n)
return; return;
} }
bool8 S9xLoadCheatFileClassic (const char *filename) static bool8 S9xLoadCheatFileClassic (const char *filename)
{ {
FILE *fs; FILE *fs;
uint8 data[28]; uint8 data[28];

View File

@ -375,7 +375,7 @@ void
S9xAutoSaveSRAM (void) S9xAutoSaveSRAM (void)
{ {
Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR)); Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR));
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR)); S9xSaveCheatFile (S9xGetFilename (".bml", CHEAT_DIR));
return; return;
} }

View File

@ -1788,7 +1788,8 @@ bool8 CMemory::LoadROMInt (int32 ROMfillSize)
S9xReset(); S9xReset();
S9xDeleteCheats(); S9xDeleteCheats();
S9xLoadCheatFile(S9xGetFilename(".cht", CHEAT_DIR)); if (!S9xLoadCheatFile(S9xGetFilename(".bml", CHEAT_DIR)))
S9xLoadCheatFile(S9xGetFilename(".cht", CHEAT_DIR));
return (TRUE); return (TRUE);
} }
@ -1954,7 +1955,8 @@ bool8 CMemory::LoadMultiCartInt ()
S9xReset(); S9xReset();
S9xDeleteCheats(); S9xDeleteCheats();
S9xLoadCheatFile(S9xGetFilename(".cht", CHEAT_DIR)); if (!S9xLoadCheatFile(S9xGetFilename(".bml", CHEAT_DIR)))
S9xLoadCheatFile(S9xGetFilename(".cht", CHEAT_DIR));
return (TRUE); return (TRUE);
} }

View File

@ -1620,7 +1620,7 @@ void S9xExit (void)
Memory.SaveSRAM(S9xGetFilename(".srm", SRAM_DIR)); Memory.SaveSRAM(S9xGetFilename(".srm", SRAM_DIR));
S9xResetSaveTimer(FALSE); S9xResetSaveTimer(FALSE);
S9xSaveCheatFile(S9xGetFilename(".cht", CHEAT_DIR)); S9xSaveCheatFile(S9xGetFilename(".bml", CHEAT_DIR));
S9xUnmapAllControls(); S9xUnmapAllControls();
S9xDeinitDisplay(); S9xDeinitDisplay();
Memory.Deinit(); Memory.Deinit();
@ -1792,7 +1792,8 @@ int main (int argc, char **argv)
if (Settings.ApplyCheats) if (Settings.ApplyCheats)
{ {
S9xLoadCheatFile(S9xGetFilename(".cht", CHEAT_DIR)); if (!S9xLoadCheatFile(S9xGetFilename(".bml", CHEAT_DIR)))
S9xLoadCheatFile(S9xGetFilename(".cht", CHEAT_DIR));
} }
S9xParseArgsForCheats(argv, argc); S9xParseArgsForCheats(argv, argc);

View File

@ -1382,7 +1382,7 @@ int HandleKeyMessage(WPARAM wParam, LPARAM lParam)
{ {
case VK_ESCAPE: case VK_ESCAPE:
if( if(
GUI.outputMethod!=DIRECTDRAW && GUI.outputMethod!=DIRECTDRAW &&
GUI.FullScreen && !GUI.EmulateFullscreen) GUI.FullScreen && !GUI.EmulateFullscreen)
ToggleFullScreen(); ToggleFullScreen();
else else
@ -1870,11 +1870,11 @@ LRESULT CALLBACK WinProc(
case ID_OPTIONS_DISPLAY: case ID_OPTIONS_DISPLAY:
{ {
RestoreGUIDisplay (); RestoreGUIDisplay ();
if(GUI.FullScreen) if(GUI.FullScreen)
ToggleFullScreen(); ToggleFullScreen();
DialogBox(g_hInst, MAKEINTRESOURCE(IDD_NEWDISPLAY), hWnd, DlgFunky); DialogBox(g_hInst, MAKEINTRESOURCE(IDD_NEWDISPLAY), hWnd, DlgFunky);
SwitchToGDI(); SwitchToGDI();
RestoreSNESDisplay (); RestoreSNESDisplay ();
@ -2059,55 +2059,55 @@ LRESULT CALLBACK WinProc(
} }
break; break;
case ID_SOUND_16MS: case ID_SOUND_16MS:
GUI.SoundBufferSize = 16; GUI.SoundBufferSize = 16;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_32MS: case ID_SOUND_32MS:
GUI.SoundBufferSize = 32; GUI.SoundBufferSize = 32;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_48MS: case ID_SOUND_48MS:
GUI.SoundBufferSize = 48; GUI.SoundBufferSize = 48;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_64MS: case ID_SOUND_64MS:
GUI.SoundBufferSize = 64; GUI.SoundBufferSize = 64;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_80MS: case ID_SOUND_80MS:
GUI.SoundBufferSize = 80; GUI.SoundBufferSize = 80;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_96MS: case ID_SOUND_96MS:
GUI.SoundBufferSize = 96; GUI.SoundBufferSize = 96;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_112MS: case ID_SOUND_112MS:
GUI.SoundBufferSize = 112; GUI.SoundBufferSize = 112;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_128MS: case ID_SOUND_128MS:
GUI.SoundBufferSize = 128; GUI.SoundBufferSize = 128;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_144MS: case ID_SOUND_144MS:
GUI.SoundBufferSize = 144; GUI.SoundBufferSize = 144;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_160MS: case ID_SOUND_160MS:
GUI.SoundBufferSize = 160; GUI.SoundBufferSize = 160;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_176MS: case ID_SOUND_176MS:
GUI.SoundBufferSize = 176; GUI.SoundBufferSize = 176;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_194MS: case ID_SOUND_194MS:
GUI.SoundBufferSize = 194; GUI.SoundBufferSize = 194;
ReInitSound(); ReInitSound();
break; break;
case ID_SOUND_210MS: case ID_SOUND_210MS:
GUI.SoundBufferSize = 210; GUI.SoundBufferSize = 210;
ReInitSound(); ReInitSound();
break; break;
@ -2307,7 +2307,7 @@ LRESULT CALLBACK WinProc(
case ID_CHEAT_ENTER: case ID_CHEAT_ENTER:
RestoreGUIDisplay (); RestoreGUIDisplay ();
DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CHEATER), hWnd, DlgCheater); DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CHEATER), hWnd, DlgCheater);
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR)); S9xSaveCheatFile (S9xGetFilename (".bml", CHEAT_DIR));
RestoreSNESDisplay (); RestoreSNESDisplay ();
break; break;
case ID_CHEAT_SEARCH: case ID_CHEAT_SEARCH:
@ -2326,7 +2326,7 @@ LRESULT CALLBACK WinProc(
case ID_CHEAT_SEARCH_MODAL: case ID_CHEAT_SEARCH_MODAL:
RestoreGUIDisplay (); RestoreGUIDisplay ();
DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CHEAT_SEARCH), hWnd, DlgCheatSearch); // modal DialogBox(g_hInst, MAKEINTRESOURCE(IDD_CHEAT_SEARCH), hWnd, DlgCheatSearch); // modal
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR)); S9xSaveCheatFile (S9xGetFilename (".bml", CHEAT_DIR));
RestoreSNESDisplay (); RestoreSNESDisplay ();
break; break;
case ID_CHEAT_APPLY: case ID_CHEAT_APPLY:
@ -3331,7 +3331,7 @@ void ControlPadFlagsToS9xPseudoPointer(uint32 p)
static void ProcessInput(void) static void ProcessInput(void)
{ {
extern void S9xWinScanJoypads (); extern void S9xWinScanJoypads ();
#ifdef NETPLAY_SUPPORT #ifdef NETPLAY_SUPPORT
if (!Settings.NetPlay) if (!Settings.NetPlay)
#endif #endif
@ -3653,7 +3653,7 @@ loop_exit:
if (!Settings.StopEmulation) if (!Settings.StopEmulation)
{ {
Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR)); Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR));
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR)); S9xSaveCheatFile (S9xGetFilename (".bml", CHEAT_DIR));
} }
//if (!VOODOO_MODE && !GUI.FullScreen) //if (!VOODOO_MODE && !GUI.FullScreen)
// GetWindowRect (GUI.hWnd, &GUI.window_size); // GetWindowRect (GUI.hWnd, &GUI.window_size);
@ -4026,7 +4026,7 @@ static void CheckMenuStates ()
mii.fState = !Settings.StopEmulation ? MFS_ENABLED : MFS_DISABLED; mii.fState = !Settings.StopEmulation ? MFS_ENABLED : MFS_DISABLED;
SetMenuItemInfo (GUI.hMenu, ID_FILE_AVI_RECORDING, FALSE, &mii); SetMenuItemInfo (GUI.hMenu, ID_FILE_AVI_RECORDING, FALSE, &mii);
memset(&mii, 0, sizeof(mii)); memset(&mii, 0, sizeof(mii));
mii.cbSize = sizeof(mii); mii.cbSize = sizeof(mii);
mii.fMask = MIIM_STRING; mii.fMask = MIIM_STRING;
@ -4093,7 +4093,7 @@ static bool LoadROM(const TCHAR *filename, const TCHAR *filename2 /*= NULL*/) {
if (!Settings.StopEmulation) { if (!Settings.StopEmulation) {
Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR)); Memory.SaveSRAM (S9xGetFilename (".srm", SRAM_DIR));
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR)); S9xSaveCheatFile (S9xGetFilename (".bml", CHEAT_DIR));
} }
if(filename2) if(filename2)
@ -4259,9 +4259,9 @@ HRESULT Win7_JLSetRecentGames(ICustomDestinationList *pcdl, IObjectArray *poaRem
return S_FALSE; return S_FALSE;
} }
HRESULT hr = CoCreateInstance HRESULT hr = CoCreateInstance
(CLSID_EnumerableObjectCollection, (CLSID_EnumerableObjectCollection,
NULL, NULL,
CLSCTX_INPROC_SERVER, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&poc)); IID_PPV_ARGS(&poc));
if (SUCCEEDED(hr)) { if (SUCCEEDED(hr)) {
UINT max_list = MIN(maxSlots,GUI.MaxRecentGames); UINT max_list = MIN(maxSlots,GUI.MaxRecentGames);
@ -4285,12 +4285,12 @@ HRESULT Win7_JLSetRecentGames(ICustomDestinationList *pcdl, IObjectArray *poaRem
} }
void Win7_CreateJumpList() void Win7_CreateJumpList()
{ {
ICustomDestinationList *pcdl; ICustomDestinationList *pcdl;
HRESULT hr = CoCreateInstance( HRESULT hr = CoCreateInstance(
CLSID_DestinationList, CLSID_DestinationList,
NULL, NULL,
CLSCTX_INPROC_SERVER, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pcdl)); IID_PPV_ARGS(&pcdl));
if (SUCCEEDED(hr)) { if (SUCCEEDED(hr)) {
UINT maxSlots; UINT maxSlots;
@ -4401,27 +4401,27 @@ BOOL CreateToolTip(int toolID, HWND hDlg, TCHAR* pText)
// hDlg: the handle of the dialog box. // hDlg: the handle of the dialog box.
// pText: the text that appears in the tooltip. // pText: the text that appears in the tooltip.
// g_hInst: the global instance handle. // g_hInst: the global instance handle.
if (!toolID || !hDlg || !pText) if (!toolID || !hDlg || !pText)
{ {
return FALSE; return FALSE;
} }
// Get the window of the tool. // Get the window of the tool.
HWND hwndTool = GetDlgItem(hDlg, toolID); HWND hwndTool = GetDlgItem(hDlg, toolID);
// Create the tooltip. // Create the tooltip.
HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL, HWND hwndTip = CreateWindowEx(NULL, TOOLTIPS_CLASS, NULL,
WS_POPUP |TTS_ALWAYSTIP | TTS_BALLOON, WS_POPUP |TTS_ALWAYSTIP | TTS_BALLOON,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT,
hDlg, NULL, hDlg, NULL,
g_hInst, NULL); g_hInst, NULL);
if (!hwndTool || !hwndTip) if (!hwndTool || !hwndTip)
{ {
return FALSE; return FALSE;
} }
// Associate the tooltip with the tool. // Associate the tooltip with the tool.
TOOLINFO toolInfo = { 0 }; TOOLINFO toolInfo = { 0 };
toolInfo.cbSize = sizeof(toolInfo); toolInfo.cbSize = sizeof(toolInfo);
@ -4448,7 +4448,7 @@ INT_PTR CALLBACK DlgSoundConf(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
CreateToolTip(IDC_INRATEEDIT,hDlg,TEXT("For each 'Input rate' samples generated by the SNES, 'Playback rate' samples will produced. If you experience crackling you can try to lower this setting.")); CreateToolTip(IDC_INRATEEDIT,hDlg,TEXT("For each 'Input rate' samples generated by the SNES, 'Playback rate' samples will produced. If you experience crackling you can try to lower this setting."));
CreateToolTip(IDC_INRATE,hDlg,TEXT("For each 'Input rate' samples generated by the SNES, 'Playback rate' samples will produced. If you experience crackling you can try to lower this setting.")); CreateToolTip(IDC_INRATE,hDlg,TEXT("For each 'Input rate' samples generated by the SNES, 'Playback rate' samples will produced. If you experience crackling you can try to lower this setting."));
CreateToolTip(IDC_DYNRATECONTROL, hDlg, TEXT("Try to dynamically adjust the input rate to never overflow or underflow the sound buffer. Only works with XAudio2.")); CreateToolTip(IDC_DYNRATECONTROL, hDlg, TEXT("Try to dynamically adjust the input rate to never overflow or underflow the sound buffer. Only works with XAudio2."));
int pos; int pos;
pos = SendDlgItemMessage(hDlg, IDC_DRIVER, CB_INSERTSTRING,-1,(LPARAM)TEXT("Snes9x DirectSound")); pos = SendDlgItemMessage(hDlg, IDC_DRIVER, CB_INSERTSTRING,-1,(LPARAM)TEXT("Snes9x DirectSound"));
SendDlgItemMessage(hDlg, IDC_DRIVER, CB_SETITEMDATA,pos,WIN_SNES9X_DIRECT_SOUND_DRIVER); SendDlgItemMessage(hDlg, IDC_DRIVER, CB_SETITEMDATA,pos,WIN_SNES9X_DIRECT_SOUND_DRIVER);
@ -4497,7 +4497,7 @@ INT_PTR CALLBACK DlgSoundConf(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
SendDlgItemMessage(hDlg, IDC_SLIDER_VOLUME_TURBO, TBM_SETTICFREQ, 10, 0); SendDlgItemMessage(hDlg, IDC_SLIDER_VOLUME_TURBO, TBM_SETTICFREQ, 10, 0);
_sntprintf(valTxt, 10, TEXT("%d"), GUI.VolumeTurbo); _sntprintf(valTxt, 10, TEXT("%d"), GUI.VolumeTurbo);
Edit_SetText(GetDlgItem(hDlg, IDC_EDIT_VOLUME_TURBO), valTxt); Edit_SetText(GetDlgItem(hDlg, IDC_EDIT_VOLUME_TURBO), valTxt);
SendDlgItemMessage(hDlg, IDC_RATE, CB_INSERTSTRING,0,(LPARAM)TEXT("8 KHz")); SendDlgItemMessage(hDlg, IDC_RATE, CB_INSERTSTRING,0,(LPARAM)TEXT("8 KHz"));
SendDlgItemMessage(hDlg, IDC_RATE, CB_INSERTSTRING,1,(LPARAM)TEXT("11 KHz")); SendDlgItemMessage(hDlg, IDC_RATE, CB_INSERTSTRING,1,(LPARAM)TEXT("11 KHz"));
@ -4625,7 +4625,7 @@ INT_PTR CALLBACK DlgSoundConf(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
} }
GUI.SoundBufferSize=(16*(1+(SendDlgItemMessage(hDlg,IDC_BUFLEN,CB_GETCURSEL,0,0)))); GUI.SoundBufferSize=(16*(1+(SendDlgItemMessage(hDlg,IDC_BUFLEN,CB_GETCURSEL,0,0))));
Edit_GetText(GetDlgItem(hDlg,IDC_INRATEEDIT),valTxt,10); Edit_GetText(GetDlgItem(hDlg,IDC_INRATEEDIT),valTxt,10);
int sliderVal=_tstoi(valTxt); int sliderVal=_tstoi(valTxt);
Settings.SoundInputRate = sliderVal>0?sliderVal:32000; Settings.SoundInputRate = sliderVal>0?sliderVal:32000;
@ -4641,9 +4641,9 @@ INT_PTR CALLBACK DlgSoundConf(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
GUI.VolumeTurbo = (sliderVal >= 0 && sliderVal <= 100) ? sliderVal : 100; GUI.VolumeTurbo = (sliderVal >= 0 && sliderVal <= 100) ? sliderVal : 100;
WinSaveConfigFile(); WinSaveConfigFile();
// already done in WinProc on return // already done in WinProc on return
// ReInitSound(); // ReInitSound();
} /* FALL THROUGH */ } /* FALL THROUGH */
@ -7740,7 +7740,7 @@ updateFilterBox2:
GUI.filterMessagFont = IsDlgButtonChecked(hDlg, IDC_MESSAGES_SCALE); GUI.filterMessagFont = IsDlgButtonChecked(hDlg, IDC_MESSAGES_SCALE);
GUI.DoubleBuffered = (bool)(IsDlgButtonChecked(hDlg, IDC_DBLBUFFER)==BST_CHECKED); GUI.DoubleBuffered = (bool)(IsDlgButtonChecked(hDlg, IDC_DBLBUFFER)==BST_CHECKED);
GUI.Vsync = (bool)(IsDlgButtonChecked(hDlg, IDC_VSYNC GUI.Vsync = (bool)(IsDlgButtonChecked(hDlg, IDC_VSYNC
)==BST_CHECKED); )==BST_CHECKED);
if(IsDlgButtonChecked(hDlg, IDC_AUTOFRAME)) if(IsDlgButtonChecked(hDlg, IDC_AUTOFRAME))
{ {
@ -7819,7 +7819,7 @@ updateFilterBox2:
GUI.BlendHiRes = prevBlendHires; GUI.BlendHiRes = prevBlendHires;
lstrcpy(GUI.D3DshaderFileName,prevD3DShaderFile); lstrcpy(GUI.D3DshaderFileName,prevD3DShaderFile);
lstrcpy(GUI.OGLshaderFileName,prevOGLShaderFile); lstrcpy(GUI.OGLshaderFileName,prevOGLShaderFile);
} }
EndDialog(hDlg,0); EndDialog(hDlg,0);
@ -8610,7 +8610,7 @@ INT_PTR CALLBACK DlgCheater(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
/* Description */ /* Description */
ITEM_QUERY(lvi, IDC_CHEAT_LIST, 1, buf, CHEAT_SIZE); ITEM_QUERY(lvi, IDC_CHEAT_LIST, 1, buf, CHEAT_SIZE);
SetDlgItemText(hDlg, IDC_CHEAT_DESCRIPTION, lvi.pszText); SetDlgItemText(hDlg, IDC_CHEAT_DESCRIPTION, lvi.pszText);
internal_change = true; internal_change = true;
} }
sel_idx=ListView_GetSelectionMark(GetDlgItem(hDlg, IDC_CHEAT_LIST)); sel_idx=ListView_GetSelectionMark(GetDlgItem(hDlg, IDC_CHEAT_LIST));
@ -8659,7 +8659,7 @@ INT_PTR CALLBACK DlgCheater(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
delete[] valid_cheat; delete[] valid_cheat;
int curr_idx=-1; int curr_idx=-1;
LVITEM lvi; LVITEM lvi;
memset(&lvi, 0, sizeof(LVITEM)); memset(&lvi, 0, sizeof(LVITEM));
lvi.mask=LVIF_TEXT; lvi.mask=LVIF_TEXT;
@ -8765,7 +8765,7 @@ INT_PTR CALLBACK DlgCheater(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
switch(HIWORD(wParam)) switch(HIWORD(wParam))
{ {
case EN_CHANGE: case EN_CHANGE:
char temp[CHEAT_SIZE]; char temp[CHEAT_SIZE];
char *valid_cheat = NULL; char *valid_cheat = NULL;
GetDlgItemTextA(hDlg, IDC_CHEAT_CODE, temp, CHEAT_SIZE); GetDlgItemTextA(hDlg, IDC_CHEAT_CODE, temp, CHEAT_SIZE);
@ -8814,7 +8814,7 @@ INT_PTR CALLBACK DlgCheater(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
lvi.pszText=wcode; lvi.pszText=wcode;
lvi.cchTextMax = CHEAT_SIZE; lvi.cchTextMax = CHEAT_SIZE;
ListView_GetItem(GetDlgItem(hDlg, IDC_CHEAT_LIST), &lvi); ListView_GetItem(GetDlgItem(hDlg, IDC_CHEAT_LIST), &lvi);
memset(&lvi, 0, sizeof(LV_ITEM)); memset(&lvi, 0, sizeof(LV_ITEM));
lvi.iItem= k; lvi.iItem= k;
lvi.iSubItem=1; lvi.iSubItem=1;
@ -8822,7 +8822,7 @@ INT_PTR CALLBACK DlgCheater(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
lvi.pszText=wdescription; lvi.pszText=wdescription;
lvi.cchTextMax = CHEAT_SIZE; lvi.cchTextMax = CHEAT_SIZE;
ListView_GetItem(GetDlgItem(hDlg, IDC_CHEAT_LIST), &lvi); ListView_GetItem(GetDlgItem(hDlg, IDC_CHEAT_LIST), &lvi);
WideToUtf8 code(wcode); WideToUtf8 code(wcode);
WideToUtf8 description(wdescription); WideToUtf8 description(wdescription);
@ -9111,7 +9111,7 @@ INT_PTR CALLBACK DlgCheatSearch(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lPara
case WM_DESTROY: case WM_DESTROY:
{ {
cheatSearchHWND = NULL; cheatSearchHWND = NULL;
S9xSaveCheatFile (S9xGetFilename (".cht", CHEAT_DIR)); S9xSaveCheatFile (S9xGetFilename (".bml", CHEAT_DIR));
break; break;
} }