fix resource compile missing ID issue
bind many more windows positions to configfile change configfile to a text format fixes sf [ 1962795 ] Config file changes
This commit is contained in:
parent
efcb2c8e8f
commit
b662f92cfe
|
@ -7,7 +7,7 @@
|
||||||
* it under the terms of the GNU General Public License as published by
|
* it under the terms of the GNU General Public License as published by
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
* the Free Software Foundation; either version 2 of the License, or
|
||||||
* (at your option) any later version.
|
* (at your option) any later version.
|
||||||
*
|
*fs
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
@ -31,6 +31,7 @@
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "../../types.h"
|
#include "../../types.h"
|
||||||
|
#include "../../driver.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
|
||||||
static int FReadString(FILE *fp, char *str, int n)
|
static int FReadString(FILE *fp, char *str, int n)
|
||||||
|
@ -48,6 +49,87 @@ static int FReadString(FILE *fp, char *str, int n)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include <map>
|
||||||
|
#include <string>
|
||||||
|
typedef std::map<std::string,std::string> CFGMAP;
|
||||||
|
static CFGMAP cfgmap;
|
||||||
|
|
||||||
|
static void cfg_Parse(FILE *fp)
|
||||||
|
{
|
||||||
|
//yes... it is a homebrewed key-value-pair parser
|
||||||
|
std::string key,value;
|
||||||
|
enum {
|
||||||
|
NEWLINE, KEY, SEPARATOR, VALUE, COMMENT
|
||||||
|
} state = NEWLINE;
|
||||||
|
bool bail = false;
|
||||||
|
for(;;)
|
||||||
|
{
|
||||||
|
int c = fgetc(fp);
|
||||||
|
if(c == -1)
|
||||||
|
goto bail;
|
||||||
|
bool iswhitespace = (c==' '||c=='\t');
|
||||||
|
bool iscommentchar = (c=='#');
|
||||||
|
bool isnewline = (c==10||c==13);
|
||||||
|
switch(state)
|
||||||
|
{
|
||||||
|
case NEWLINE:
|
||||||
|
if(iswhitespace) goto done;
|
||||||
|
if(iscommentchar) goto docomment;
|
||||||
|
if(isnewline) goto done;
|
||||||
|
key = "";
|
||||||
|
value = "";
|
||||||
|
goto dokey;
|
||||||
|
break;
|
||||||
|
case COMMENT:
|
||||||
|
docomment:
|
||||||
|
state = COMMENT;
|
||||||
|
if(isnewline) state = NEWLINE;
|
||||||
|
break;
|
||||||
|
case KEY:
|
||||||
|
dokey: //dookie
|
||||||
|
state = KEY;
|
||||||
|
if(iswhitespace) goto doseparator;
|
||||||
|
if(isnewline) goto commit;
|
||||||
|
key += c;
|
||||||
|
break;
|
||||||
|
case SEPARATOR:
|
||||||
|
doseparator:
|
||||||
|
state = SEPARATOR;
|
||||||
|
if(isnewline) goto commit;
|
||||||
|
if(!iswhitespace) goto dovalue;
|
||||||
|
break;
|
||||||
|
case VALUE:
|
||||||
|
dovalue:
|
||||||
|
state = VALUE;
|
||||||
|
if(isnewline) goto commit;
|
||||||
|
value += c;
|
||||||
|
}
|
||||||
|
goto done;
|
||||||
|
|
||||||
|
bail:
|
||||||
|
bail = true;
|
||||||
|
if(state == VALUE) goto commit;
|
||||||
|
commit:
|
||||||
|
cfgmap[key] = value;
|
||||||
|
state = NEWLINE;
|
||||||
|
if(bail) break;
|
||||||
|
done: ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cfg_Save(FILE *fp)
|
||||||
|
{
|
||||||
|
for(CFGMAP::iterator it(cfgmap.begin()); it != cfgmap.end(); it++)
|
||||||
|
{
|
||||||
|
if(it->first.size()>30 || it->second.size()>30)
|
||||||
|
{
|
||||||
|
int zzz=9;
|
||||||
|
}
|
||||||
|
fprintf(fp,"%s %s\n",it->first.c_str(),it->second.c_str());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
static void GetValueR(FILE *fp, char *str, void *v, int c)
|
static void GetValueR(FILE *fp, char *str, void *v, int c)
|
||||||
{
|
{
|
||||||
char buf[256];
|
char buf[256];
|
||||||
|
@ -93,7 +175,7 @@ void SetValueR(FILE *fp, const char *str, void *v, int c)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses a configuration structure and saves information from the structure into a file.
|
* Parses a c onfiguration structure and saves information from the structure into a file.
|
||||||
*
|
*
|
||||||
* @param cfgst The configuration structure.
|
* @param cfgst The configuration structure.
|
||||||
* @param fp File handle.
|
* @param fp File handle.
|
||||||
|
@ -105,12 +187,10 @@ void SaveParse(const CFGSTRUCT *cfgst, FILE *fp)
|
||||||
while(cfgst[x].ptr)
|
while(cfgst[x].ptr)
|
||||||
{
|
{
|
||||||
|
|
||||||
if(!cfgst[x].name) // Link to new config structure
|
//structure contains another embedded structure.
|
||||||
{
|
//recurse.
|
||||||
SaveParse((CFGSTRUCT*)cfgst[x].ptr, fp); // Recursion is sexy. I could
|
if(!cfgst[x].name) {
|
||||||
// save a little stack space if I made
|
SaveParse((CFGSTRUCT*)cfgst[x].ptr, fp);
|
||||||
// the file pointer a non-local
|
|
||||||
// variable...
|
|
||||||
x++;
|
x++;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -135,26 +215,6 @@ void SaveParse(const CFGSTRUCT *cfgst, FILE *fp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Stores information from a configuration struct into a configuration file.
|
|
||||||
*
|
|
||||||
* @param filename Name of the configuration file
|
|
||||||
* @param cfgst The configuration struct
|
|
||||||
**/
|
|
||||||
void SaveFCEUConfig(const char *filename, const CFGSTRUCT *cfgst)
|
|
||||||
{
|
|
||||||
FILE *fp = fopen(filename,"wb");
|
|
||||||
|
|
||||||
if(fp==NULL)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
SaveParse(cfgst, fp);
|
|
||||||
|
|
||||||
fclose(fp);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Parses information from a file into a configuration structure.
|
* Parses information from a file into a configuration structure.
|
||||||
*
|
*
|
||||||
|
@ -179,21 +239,204 @@ void LoadParse(CFGSTRUCT *cfgst, FILE *fp)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Loads config information from the config file.
|
static void StringToBytes(std::string& str, void* data, int len)
|
||||||
*
|
|
||||||
* @param filename Name of the config file.
|
|
||||||
**/
|
|
||||||
void LoadFCEUConfig(const char *filename, CFGSTRUCT *cfgst)
|
|
||||||
{
|
{
|
||||||
FILE *fp = fopen(filename,"rb");
|
if(str.size()>2 && str[0] == '0' && toupper(str[1]) == 'X')
|
||||||
|
goto hex;
|
||||||
|
|
||||||
|
if(len==1) {
|
||||||
|
int x = atoi(str.c_str());
|
||||||
|
*(unsigned char*)data = x;
|
||||||
|
return;
|
||||||
|
} else if(len==2) {
|
||||||
|
int x = atoi(str.c_str());
|
||||||
|
*(unsigned short*)data = x;
|
||||||
|
return;
|
||||||
|
} else if(len==4) {
|
||||||
|
int x = atoi(str.c_str());
|
||||||
|
*(unsigned int*)data = x;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//else it had better be hex
|
||||||
|
FCEUD_PrintError("Config error: no hex data found somewhere it is required");
|
||||||
|
hex:
|
||||||
|
int amt = len;
|
||||||
|
int bytesAvailable = str.size()/2;
|
||||||
|
if(bytesAvailable < amt)
|
||||||
|
amt = bytesAvailable;
|
||||||
|
const char* cstr = str.c_str()+2;
|
||||||
|
for(int i=0;i<amt;i++) {
|
||||||
|
char a = toupper(cstr[i*2]);
|
||||||
|
char b = toupper(cstr[i*2+1]);
|
||||||
|
if(a>='A') a=a-'A'+10;
|
||||||
|
else a-='0';
|
||||||
|
if(b>='A') b=b-'A'+10;
|
||||||
|
else b-='0';
|
||||||
|
unsigned char val = ((unsigned char)a<<4)|(unsigned char)b;
|
||||||
|
((unsigned char*)data)[i] = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static std::string BytesToString(void* data, int len)
|
||||||
|
{
|
||||||
|
char temp[16];
|
||||||
|
if(len==1) {
|
||||||
|
sprintf(temp,"%d",*(unsigned char*)data);
|
||||||
|
return temp;
|
||||||
|
} else if(len==2) {
|
||||||
|
sprintf(temp,"%d",*(unsigned short*)data);
|
||||||
|
return temp;
|
||||||
|
} else if(len==4) {
|
||||||
|
sprintf(temp,"%d",*(unsigned int*)data);
|
||||||
|
return temp;
|
||||||
|
}
|
||||||
|
std::string ret;
|
||||||
|
ret.resize(len*2+2);
|
||||||
|
char* str= (char*)ret.c_str();
|
||||||
|
str[0] = '0';
|
||||||
|
str[1] = 'x';
|
||||||
|
str += 2;
|
||||||
|
for(int i=0;i<len;i++)
|
||||||
|
{
|
||||||
|
int a = (((unsigned char*)data)[i]>>4);
|
||||||
|
int b = (((unsigned char*)data)[i])&15;
|
||||||
|
if(a>9) a += 'A'-10;
|
||||||
|
else a += '0';
|
||||||
|
if(b>9) b += 'A'-10;
|
||||||
|
else b += '0';
|
||||||
|
str[i*2] = a;
|
||||||
|
str[i*2+1] = b;
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void cfg_OldToNew(const CFGSTRUCT *cfgst)
|
||||||
|
{
|
||||||
|
int x=0;
|
||||||
|
|
||||||
|
while(cfgst[x].ptr)
|
||||||
|
{
|
||||||
|
//structure contains another embedded structure. recurse.
|
||||||
|
if(!cfgst[x].name) {
|
||||||
|
cfg_OldToNew((CFGSTRUCT*)cfgst[x].ptr);
|
||||||
|
x++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cfgst[x].len)
|
||||||
|
{
|
||||||
|
//binary data
|
||||||
|
cfgmap[cfgst[x].name] = BytesToString(cfgst[x].ptr,cfgst[x].len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//string data
|
||||||
|
if(*(char*)cfgst[x].ptr)
|
||||||
|
cfgmap[cfgst[x].name] = *(char**)cfgst[x].ptr;
|
||||||
|
else cfgmap[cfgst[x].name] = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void cfg_NewToOld(CFGSTRUCT *cfgst)
|
||||||
|
{
|
||||||
|
int x=0;
|
||||||
|
|
||||||
|
while(cfgst[x].ptr)
|
||||||
|
{
|
||||||
|
//structure contains another embedded structure. recurse.
|
||||||
|
if(!cfgst[x].name) {
|
||||||
|
cfg_NewToOld((CFGSTRUCT*)cfgst[x].ptr);
|
||||||
|
x++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if the key was not found, skip it
|
||||||
|
if(cfgmap.find(std::string(cfgst[x].name)) == cfgmap.end())
|
||||||
|
{
|
||||||
|
x++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(cfgst[x].len)
|
||||||
|
{
|
||||||
|
//binary data
|
||||||
|
StringToBytes(cfgmap[cfgst[x].name],cfgst[x].ptr,cfgst[x].len);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//string data
|
||||||
|
if(*(char*)cfgst[x].ptr)
|
||||||
|
free(cfgst[x].ptr);
|
||||||
|
std::string& str = cfgmap[cfgst[x].name];
|
||||||
|
if(str == "")
|
||||||
|
*(char**)cfgst[x].ptr = 0;
|
||||||
|
else
|
||||||
|
*(char**)cfgst[x].ptr = strdup(cfgmap[cfgst[x].name].c_str());
|
||||||
|
}
|
||||||
|
|
||||||
|
x++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//saves the old fceu98 format
|
||||||
|
void SaveFCEUConfig_old(const char *filename, const CFGSTRUCT *cfgst)
|
||||||
|
{
|
||||||
|
FILE *fp = fopen(filename,"wb");
|
||||||
|
|
||||||
if(fp==NULL)
|
if(fp==NULL)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
LoadParse(cfgst, fp);
|
SaveParse(cfgst, fp);
|
||||||
|
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SaveFCEUConfig(const char *filename, const CFGSTRUCT *cfgst)
|
||||||
|
{
|
||||||
|
FILE *fp = fopen(filename,"wb");
|
||||||
|
|
||||||
|
if(fp==NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
fp = fopen(filename,"wb");
|
||||||
|
cfg_OldToNew(cfgst);
|
||||||
|
cfg_Save(fp);
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
//loads the old fceu98 format
|
||||||
|
void LoadFCEUConfig_old(const char *filename, CFGSTRUCT *cfgst)
|
||||||
|
{
|
||||||
|
FILE *fp = fopen(filename,"rb");
|
||||||
|
|
||||||
|
if(fp==NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
LoadParse(cfgst,fp);
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LoadFCEUConfig(const char *filename, CFGSTRUCT *cfgst)
|
||||||
|
{
|
||||||
|
FILE *fp = fopen(filename,"rb");
|
||||||
|
|
||||||
|
cfgmap.clear();
|
||||||
|
|
||||||
|
//make sure there is a version key set
|
||||||
|
cfgmap["!version"] = "1";
|
||||||
|
|
||||||
|
if(fp==NULL)
|
||||||
|
return;
|
||||||
|
|
||||||
|
cfg_Parse(fp);
|
||||||
|
cfg_NewToOld(cfgst);
|
||||||
|
|
||||||
|
fclose(fp);
|
||||||
|
}
|
|
@ -46,6 +46,8 @@ static char BBcaption[] = "Basic Bot v0.3.4a by qFox";
|
||||||
// save/load version
|
// save/load version
|
||||||
static int BBsaveload = 2;
|
static int BBsaveload = 2;
|
||||||
|
|
||||||
|
int BasicBot_wndx=0, BasicBot_wndy=0;
|
||||||
|
|
||||||
static HWND hwndBasicBot = 0; // GUI handle
|
static HWND hwndBasicBot = 0; // GUI handle
|
||||||
static bool BotRunning = false; // Is the bot computing or not?
|
static bool BotRunning = false; // Is the bot computing or not?
|
||||||
static bool ResetStatsASAP = false; // Do we need to reset the stats asap? (when pressing reset in gui)
|
static bool ResetStatsASAP = false; // Do we need to reset the stats asap? (when pressing reset in gui)
|
||||||
|
@ -2414,7 +2416,16 @@ static BOOL CALLBACK BasicBotCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA
|
||||||
// cant change gui controls in this event
|
// cant change gui controls in this event
|
||||||
// seems to be a inherited "feature", for backwards
|
// seems to be a inherited "feature", for backwards
|
||||||
// compatibility.
|
// compatibility.
|
||||||
|
SetWindowPos(hwndDlg,0,BasicBot_wndx,BasicBot_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER);
|
||||||
break;
|
break;
|
||||||
|
case WM_MOVE: {
|
||||||
|
RECT wrect;
|
||||||
|
GetWindowRect(hwndDlg,&wrect);
|
||||||
|
BasicBot_wndx = wrect.left;
|
||||||
|
BasicBot_wndy = wrect.top;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
case WM_CLOSE:
|
case WM_CLOSE:
|
||||||
case WM_QUIT:
|
case WM_QUIT:
|
||||||
CrashWindow();
|
CrashWindow();
|
||||||
|
|
|
@ -37,6 +37,9 @@ void SaveStrippedRom();
|
||||||
|
|
||||||
extern iNES_HEADER head; //defined in ines.c
|
extern iNES_HEADER head; //defined in ines.c
|
||||||
extern uint8 *trainerpoo;
|
extern uint8 *trainerpoo;
|
||||||
|
|
||||||
|
int CDLogger_wndx=0, CDLogger_wndy=0;
|
||||||
|
|
||||||
//extern uint8 *ROM;
|
//extern uint8 *ROM;
|
||||||
//extern uint8 *VROM;
|
//extern uint8 *VROM;
|
||||||
|
|
||||||
|
@ -49,7 +52,15 @@ char loadedcdfile[1024];
|
||||||
|
|
||||||
BOOL CALLBACK CDLoggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
BOOL CALLBACK CDLoggerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
|
||||||
switch(uMsg) {
|
switch(uMsg) {
|
||||||
|
case WM_MOVE: {
|
||||||
|
RECT wrect;
|
||||||
|
GetWindowRect(hwndDlg,&wrect);
|
||||||
|
CDLogger_wndx = wrect.left;
|
||||||
|
CDLogger_wndy = wrect.top;
|
||||||
|
break;
|
||||||
|
};
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
|
SetWindowPos(hwndDlg,0,CDLogger_wndx,CDLogger_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER);
|
||||||
hCDLogger = hwndDlg;
|
hCDLogger = hwndDlg;
|
||||||
codecount = datacount = 0;
|
codecount = datacount = 0;
|
||||||
undefinedcount = PRGsize[0];
|
undefinedcount = PRGsize[0];
|
||||||
|
|
|
@ -34,6 +34,7 @@ int CheatStyle=1;
|
||||||
|
|
||||||
int selcheat;
|
int selcheat;
|
||||||
int ChtPosX,ChtPosY;
|
int ChtPosX,ChtPosY;
|
||||||
|
int GGConv_wndx=0, GGConv_wndy=0;
|
||||||
static HFONT hFont,hNewFont;
|
static HFONT hFont,hNewFont;
|
||||||
|
|
||||||
static int scrollindex;
|
static int scrollindex;
|
||||||
|
@ -517,8 +518,16 @@ BOOL CALLBACK GGConvCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
switch(uMsg) {
|
switch(uMsg) {
|
||||||
|
case WM_MOVE: {
|
||||||
|
RECT wrect;
|
||||||
|
GetWindowRect(hwndDlg,&wrect);
|
||||||
|
GGConv_wndx = wrect.left;
|
||||||
|
GGConv_wndy = wrect.top;
|
||||||
|
break;
|
||||||
|
};
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
//todo: set text limits
|
//todo: set text limits
|
||||||
|
SetWindowPos(hwndDlg,0,GGConv_wndx,GGConv_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER);
|
||||||
break;
|
break;
|
||||||
case WM_CREATE:
|
case WM_CREATE:
|
||||||
|
|
||||||
|
|
|
@ -40,6 +40,7 @@ extern int autoHoldKey, autoHoldClearKey;
|
||||||
extern int frame_display;
|
extern int frame_display;
|
||||||
extern int input_display;
|
extern int input_display;
|
||||||
extern char *BasicBotDir;
|
extern char *BasicBotDir;
|
||||||
|
extern int disableUDLR;
|
||||||
|
|
||||||
//window positions:
|
//window positions:
|
||||||
extern int ChtPosX,ChtPosY;
|
extern int ChtPosX,ChtPosY;
|
||||||
|
@ -49,6 +50,12 @@ extern int MemFind_wndx, MemFind_wndy;
|
||||||
extern int NTViewPosX,NTViewPosY;
|
extern int NTViewPosX,NTViewPosY;
|
||||||
extern int PPUViewPosX,PPUViewPosY;
|
extern int PPUViewPosX,PPUViewPosY;
|
||||||
extern int MainWindow_wndx, MainWindow_wndy;
|
extern int MainWindow_wndx, MainWindow_wndy;
|
||||||
|
extern int BasicBot_wndx, BasicBot_wndy;
|
||||||
|
extern int MemWatch_wndx, MemWatch_wndy;
|
||||||
|
extern int Monitor_wndx, Monitor_wndy;
|
||||||
|
extern int Tracer_wndx, Tracer_wndy;
|
||||||
|
extern int CDLogger_wndx, CDLogger_wndy;
|
||||||
|
extern int GGConv_wndx, GGConv_wndy;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Structure that contains configuration information
|
* Structure that contains configuration information
|
||||||
|
@ -160,12 +167,14 @@ static CFGSTRUCT fceuconfig[] = {
|
||||||
AC(autoHoldClearKey),
|
AC(autoHoldClearKey),
|
||||||
AC(frame_display),
|
AC(frame_display),
|
||||||
AC(input_display),
|
AC(input_display),
|
||||||
ACS(MemWatchDir), //mbg merge 7/18/06 removed
|
ACS(MemWatchDir),
|
||||||
ACS(BasicBotDir),
|
ACS(BasicBotDir),
|
||||||
AC(EnableBackgroundInput),
|
AC(EnableBackgroundInput),
|
||||||
AC(MemWatchLoadOnStart),
|
AC(MemWatchLoadOnStart),
|
||||||
AC(MemWatchLoadFileOnStart),
|
AC(MemWatchLoadFileOnStart),
|
||||||
|
|
||||||
|
AC(disableUDLR),
|
||||||
|
|
||||||
//window positions
|
//window positions
|
||||||
AC(ChtPosX),
|
AC(ChtPosX),
|
||||||
AC(ChtPosY),
|
AC(ChtPosY),
|
||||||
|
@ -181,6 +190,18 @@ static CFGSTRUCT fceuconfig[] = {
|
||||||
AC(PPUViewPosY),
|
AC(PPUViewPosY),
|
||||||
AC(MainWindow_wndx),
|
AC(MainWindow_wndx),
|
||||||
AC(MainWindow_wndy),
|
AC(MainWindow_wndy),
|
||||||
|
AC(BasicBot_wndx),
|
||||||
|
AC(BasicBot_wndy),
|
||||||
|
AC(MemWatch_wndx),
|
||||||
|
AC(MemWatch_wndy),
|
||||||
|
AC(Monitor_wndx),
|
||||||
|
AC(Monitor_wndy),
|
||||||
|
AC(Tracer_wndx),
|
||||||
|
AC(Tracer_wndy),
|
||||||
|
AC(CDLogger_wndx),
|
||||||
|
AC(CDLogger_wndy),
|
||||||
|
AC(GGConv_wndx),
|
||||||
|
AC(GGConv_wndy),
|
||||||
|
|
||||||
//ACS(memwLastfile[2048]),
|
//ACS(memwLastfile[2048]),
|
||||||
ENDCFGSTRUCT
|
ENDCFGSTRUCT
|
||||||
|
|
|
@ -136,7 +136,7 @@ static int DIPS=0;
|
||||||
//#define KEY(__a) keys_nr[MKK(__a)]
|
//#define KEY(__a) keys_nr[MKK(__a)]
|
||||||
|
|
||||||
int cidisabled=0;
|
int cidisabled=0;
|
||||||
static int disableUDLR=0;
|
int disableUDLR=0;
|
||||||
|
|
||||||
#define MK(x) {{BUTTC_KEYBOARD},{0},{MKK(x)},1}
|
#define MK(x) {{BUTTC_KEYBOARD},{0},{MKK(x)},1}
|
||||||
#define MC(x) {{BUTTC_KEYBOARD},{0},{x},1}
|
#define MC(x) {{BUTTC_KEYBOARD},{0},{x},1}
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#include "..\..\debug.h"
|
#include "..\..\debug.h"
|
||||||
#include "debugger.h"
|
#include "debugger.h"
|
||||||
|
|
||||||
|
int MemWatch_wndx=0, MemWatch_wndy=0;
|
||||||
static HDC hdc;
|
static HDC hdc;
|
||||||
static HWND hwndMemWatch=0;
|
static HWND hwndMemWatch=0;
|
||||||
static char addresses[24][16];
|
static char addresses[24][16];
|
||||||
|
@ -666,7 +667,16 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA
|
||||||
|
|
||||||
switch(uMsg)
|
switch(uMsg)
|
||||||
{
|
{
|
||||||
|
case WM_MOVE: {
|
||||||
|
RECT wrect;
|
||||||
|
GetWindowRect(hwndDlg,&wrect);
|
||||||
|
MemWatch_wndx = wrect.left;
|
||||||
|
MemWatch_wndy = wrect.top;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
|
SetWindowPos(hwndDlg,0,MemWatch_wndx,MemWatch_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER);
|
||||||
hdc = GetDC(hwndDlg);
|
hdc = GetDC(hwndDlg);
|
||||||
SelectObject (hdc, debugSystem->hFixedFont);
|
SelectObject (hdc, debugSystem->hFixedFont);
|
||||||
SetTextAlign(hdc,TA_UPDATECP | TA_TOP | TA_LEFT);
|
SetTextAlign(hdc,TA_UPDATECP | TA_TOP | TA_LEFT);
|
||||||
|
|
|
@ -34,6 +34,7 @@ const char* rule_strings[] = { "Any", "Exact value", "All but value", "Less than
|
||||||
|
|
||||||
unsigned char snapshots[NUMBER_OF_RULES][SIZE_OF_RAM];// = { first_snapshot, second_snapshot, third_snapshot, fourth_snapshot, fifth_snapshot };
|
unsigned char snapshots[NUMBER_OF_RULES][SIZE_OF_RAM];// = { first_snapshot, second_snapshot, third_snapshot, fourth_snapshot, fifth_snapshot };
|
||||||
|
|
||||||
|
int Monitor_wndx=0, Monitor_wndy=0;
|
||||||
unsigned int last_button = 0;
|
unsigned int last_button = 0;
|
||||||
|
|
||||||
BOOL verify_rule(unsigned int rule_number, unsigned int chosen_rule, unsigned int offset, unsigned int value)
|
BOOL verify_rule(unsigned int rule_number, unsigned int chosen_rule, unsigned int offset, unsigned int value)
|
||||||
|
@ -220,7 +221,16 @@ unsigned int ruleBox_to_ruleInput(unsigned int ruleBox)
|
||||||
BOOL CALLBACK MonitorCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
BOOL CALLBACK MonitorCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
{
|
{
|
||||||
switch(uMsg) {
|
switch(uMsg) {
|
||||||
|
case WM_MOVE: {
|
||||||
|
RECT wrect;
|
||||||
|
GetWindowRect(hwndDlg,&wrect);
|
||||||
|
Monitor_wndx = wrect.left;
|
||||||
|
Monitor_wndy = wrect.top;
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
|
SetWindowPos(hwndDlg,0,Monitor_wndx,Monitor_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER);
|
||||||
monitor_open = 1;
|
monitor_open = 1;
|
||||||
// CenterWindow(hwndDlg);
|
// CenterWindow(hwndDlg);
|
||||||
|
|
||||||
|
|
Binary file not shown.
|
@ -304,6 +304,7 @@
|
||||||
#define MEMW_OPTIONS_LOADLASTFILE 40114
|
#define MEMW_OPTIONS_LOADLASTFILE 40114
|
||||||
#define ID_RECENT_ 40115
|
#define ID_RECENT_ 40115
|
||||||
#define ID_RECENT_1 40116
|
#define ID_RECENT_1 40116
|
||||||
|
#define ID_FILE_RECENT 40117
|
||||||
#define MENU_LOG_SOUND 40120
|
#define MENU_LOG_SOUND 40120
|
||||||
#define MW_ValueLabel2 65423
|
#define MW_ValueLabel2 65423
|
||||||
#define MW_ValueLabel1 65426
|
#define MW_ValueLabel1 65426
|
||||||
|
@ -316,7 +317,7 @@
|
||||||
#ifdef APSTUDIO_INVOKED
|
#ifdef APSTUDIO_INVOKED
|
||||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||||
#define _APS_NEXT_RESOURCE_VALUE 108
|
#define _APS_NEXT_RESOURCE_VALUE 108
|
||||||
#define _APS_NEXT_COMMAND_VALUE 40117
|
#define _APS_NEXT_COMMAND_VALUE 40118
|
||||||
#define _APS_NEXT_CONTROL_VALUE 1129
|
#define _APS_NEXT_CONTROL_VALUE 1129
|
||||||
#define _APS_NEXT_SYMED_VALUE 101
|
#define _APS_NEXT_SYMED_VALUE 101
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -54,6 +54,8 @@ int tracelogbufusedsize;
|
||||||
|
|
||||||
FILE *LOG_FP;
|
FILE *LOG_FP;
|
||||||
|
|
||||||
|
int Tracer_wndx=0, Tracer_wndy=0;
|
||||||
|
|
||||||
void ShowLogDirDialog(void);
|
void ShowLogDirDialog(void);
|
||||||
void BeginLoggingSequence(void);
|
void BeginLoggingSequence(void);
|
||||||
void LogInstruction(void);
|
void LogInstruction(void);
|
||||||
|
@ -69,8 +71,15 @@ BOOL CALLBACK TracerCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
||||||
int i;
|
int i;
|
||||||
LOGFONT lf;
|
LOGFONT lf;
|
||||||
switch(uMsg) {
|
switch(uMsg) {
|
||||||
|
case WM_MOVE: {
|
||||||
|
RECT wrect;
|
||||||
|
GetWindowRect(hwndDlg,&wrect);
|
||||||
|
Tracer_wndx = wrect.left;
|
||||||
|
Tracer_wndy = wrect.top;
|
||||||
|
break;
|
||||||
|
};
|
||||||
case WM_INITDIALOG:
|
case WM_INITDIALOG:
|
||||||
//CenterWindow(hwndDlg);
|
SetWindowPos(hwndDlg,0,Tracer_wndx,Tracer_wndy,0,0,SWP_NOSIZE|SWP_NOZORDER|SWP_NOOWNERZORDER);
|
||||||
hTracer = hwndDlg;
|
hTracer = hwndDlg;
|
||||||
|
|
||||||
//setup font
|
//setup font
|
||||||
|
|
Loading…
Reference in New Issue