Merge pull request #51 from owomomo/master

Updated some features of Cheat Dialog
This commit is contained in:
CaH4e3 2019-05-11 21:43:29 +03:00 committed by GitHub
commit 5dc4f288a3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
24 changed files with 1433 additions and 1512 deletions

View File

@ -40,7 +40,7 @@ static uint8 *CheatRPtrs[64];
vector<uint16> FrozenAddresses; //List of addresses that are currently frozen vector<uint16> FrozenAddresses; //List of addresses that are currently frozen
void UpdateFrozenList(void); //Function that populates the list of frozen addresses void UpdateFrozenList(void); //Function that populates the list of frozen addresses
unsigned int FrozenAddressCount=0; //Keeps up with the Frozen address count, necessary for using in other dialogs (such as hex editor) unsigned int FrozenAddressCount = 0; //Keeps up with the Frozen address count, necessary for using in other dialogs (such as hex editor)
void FCEU_CheatResetRAM(void) void FCEU_CheatResetRAM(void)
{ {
@ -60,9 +60,9 @@ void FCEU_CheatAddRAM(int s, uint32 A, uint8 *p)
} }
CHEATF_SUBFAST SubCheats[256]; CHEATF_SUBFAST SubCheats[256] = { 0 };
uint32 numsubcheats=0; uint32 numsubcheats = 0;
struct CHEATF *cheats=0,*cheatsl=0; struct CHEATF *cheats = 0, *cheatsl = 0;
#define CHEATC_NONE 0x8000 #define CHEATC_NONE 0x8000
@ -74,7 +74,7 @@ int savecheats = 0;
static DECLFR(SubCheatsRead) static DECLFR(SubCheatsRead)
{ {
CHEATF_SUBFAST *s=SubCheats; CHEATF_SUBFAST *s = SubCheats;
int x=numsubcheats; int x=numsubcheats;
do do
@ -99,40 +99,35 @@ static DECLFR(SubCheatsRead)
void RebuildSubCheats(void) void RebuildSubCheats(void)
{ {
uint32 x; uint32 x;
struct CHEATF *c=cheats; struct CHEATF *c = cheats;
for(x=0;x<numsubcheats;x++) for(x = 0; x < numsubcheats; x++)
SetReadHandler(SubCheats[x].addr,SubCheats[x].addr,SubCheats[x].PrevRead); SetReadHandler(SubCheats[x].addr, SubCheats[x].addr, SubCheats[x].PrevRead);
numsubcheats=0; numsubcheats = 0;
while(c) while(c)
{ {
if(c->type==1 && c->status) if(c->type == 1 && c->status)
{ {
if(GetReadHandler(c->addr)==SubCheatsRead) if(GetReadHandler(c->addr) != SubCheatsRead)
{ {
/* Prevent a catastrophe by this check. */ SubCheats[numsubcheats].PrevRead = GetReadHandler(c->addr);
//FCEU_DispMessage("oops",0); SubCheats[numsubcheats].addr = c->addr;
} SubCheats[numsubcheats].val = c->val;
else SubCheats[numsubcheats].compare = c->compare;
{ SetReadHandler(c->addr, c->addr, SubCheatsRead);
SubCheats[numsubcheats].PrevRead=GetReadHandler(c->addr);
SubCheats[numsubcheats].addr=c->addr;
SubCheats[numsubcheats].val=c->val;
SubCheats[numsubcheats].compare=c->compare;
SetReadHandler(c->addr,c->addr,SubCheatsRead);
numsubcheats++; numsubcheats++;
} }
} }
c=c->next; c = c->next;
} }
FrozenAddressCount = numsubcheats; //Update the frozen address list FrozenAddressCount = numsubcheats; //Update the frozen address list
UpdateFrozenList(); UpdateFrozenList();
//FCEUI_DispMessage("Active Cheats: %d",0, FrozenAddresses.size()/*FrozenAddressCount*/); //Debug
} }
void FCEU_PowerCheats() void FCEU_PowerCheats()
{ {
numsubcheats=0; /* Quick hack to prevent setting of ancient read addresses. */ numsubcheats = 0; /* Quick hack to prevent setting of ancient read addresses. */
RebuildSubCheats(); RebuildSubCheats();
} }
@ -144,41 +139,47 @@ int FCEU_CalcCheatAffectedBytes(uint32 address, uint32 size) {
return count; return count;
} }
static int AddCheatEntry(char *name, uint32 addr, uint8 val, int compare, int status, int type); static int AddCheatEntry(const char *name, uint32 addr, uint8 val, int compare, int status, int type);
static void CheatMemErr(void) static void CheatMemErr(void)
{ {
FCEUD_PrintError("Error allocating memory for cheat data."); FCEUD_PrintError("Error allocating memory for cheat data.");
} }
/* This function doesn't allocate any memory for "name" */ static int AddCheatEntry(const char *name, uint32 addr, uint8 val, int compare, int status, int type)
static int AddCheatEntry(char *name, uint32 addr, uint8 val, int compare, int status, int type)
{ {
struct CHEATF *temp; struct CHEATF *temp;
if(!(temp=(struct CHEATF *)FCEU_dmalloc(sizeof(struct CHEATF)))) if(!(temp = (struct CHEATF *)FCEU_dmalloc(sizeof(struct CHEATF))))
{ {
CheatMemErr(); CheatMemErr();
return(0); return(0);
} }
temp->name=name;
temp->addr=addr; temp->name = strcpy((char*) FCEU_dmalloc(strlen(name) + 1), name);
temp->val=val; temp->addr = addr;
temp->status=status; temp->val = val;
temp->compare=compare; temp->status = status;
temp->type=type; temp->compare = compare;
temp->next=0; temp->type = type;
temp->next = 0;
if(cheats) if(cheats)
{ {
cheatsl->next=temp; cheatsl->next = temp;
cheatsl=temp; cheatsl = temp;
} }
else else
cheats=cheatsl=temp; cheats = cheatsl = temp;
return(1); return (1);
} }
void FCEU_LoadGameCheats(FILE *override) /* The "override_existing" parameter is used only in cheat dialog import.
Since the default behaviour will reset numsubcheats to 0 everytime,
In game loading, this is absolutely right, but when importing in cheat window,
resetting numsubcheats to 0 will override existed cheat items to make them
invalid.
*/
void FCEU_LoadGameCheats(FILE *override, int override_existing)
{ {
FILE *fp; FILE *fp;
unsigned int addr; unsigned int addr;
@ -188,85 +189,90 @@ void FCEU_LoadGameCheats(FILE *override)
unsigned int compare; unsigned int compare;
int x; int x;
char linebuf[2048]; char linebuf[2048] = { 0 };
char *namebuf; char namebuf[128] = { 0 };
int tc=0; int tc = 0;
char *fn; char *fn;
numsubcheats=savecheats=0; savecheats = 0;
if (override_existing)
numsubcheats = 0;
if(override) if(override)
fp = override; fp = override;
else else
{ {
fn=strdup(FCEU_MakeFName(FCEUMKF_CHEAT,0,0).c_str()); fn = strdup(FCEU_MakeFName(FCEUMKF_CHEAT, 0, 0).c_str());
fp=FCEUD_UTF8fopen(fn,"rb"); fp = FCEUD_UTF8fopen(fn, "rb");
free(fn); free(fn);
if(!fp) return; if (!fp) {
return;
}
} }
FCEU_DispMessage("Cheats file loaded.",0); //Tells user a cheats file was loaded. while(fgets(linebuf, 2048, fp) != nullptr)
while(fgets(linebuf,2048,fp) != nullptr)
{ {
char *tbuf=linebuf; char *tbuf = linebuf;
int doc=0; int doc = 0;
addr=val=compare=status=type=0; addr = val = compare = status = type = 0;
if(tbuf[0]=='S') if(tbuf[0] == 'S')
{ {
tbuf++; tbuf++;
type=1; type = 1;
} }
else type=0; else
type = 0;
if(tbuf[0]=='C') if(tbuf[0] == 'C')
{ {
tbuf++; tbuf++;
doc=1; doc = 1;
} }
if(tbuf[0]==':') if(tbuf[0] == ':')
{ {
tbuf++; tbuf++;
status=0; status = 0;
} }
else status=1; else status = 1;
if(doc) if(doc)
{ {
char *neo=&tbuf[4+2+2+1+1+1]; char *neo = &tbuf[4+2+2+1+1+1];
if(sscanf(tbuf,"%04x%*[:]%02x%*[:]%02x",&addr,&val,&compare)!=3) if(sscanf(tbuf, "%04x%*[:]%02x%*[:]%02x", &addr, &val, &compare) != 3)
continue; continue;
if (!(namebuf=(char *)FCEU_dmalloc(strlen(neo)+1))) char namebuf[128];
return; strcpy(namebuf, neo);
strcpy(namebuf,neo);
} }
else else
{ {
char *neo=&tbuf[4+2+1+1]; char *neo = &tbuf[4+2+1+1];
if(sscanf(tbuf,"%04x%*[:]%02x",&addr,&val)!=2) if(sscanf(tbuf, "%04x%*[:]%02x", &addr, &val) != 2)
continue; continue;
if (!(namebuf=(char *)FCEU_dmalloc(strlen(neo)+1))) strcpy(namebuf, neo);
return;
strcpy(namebuf,neo);
} }
for(x=0;x<(int)strlen(namebuf);x++) for(x = 0; x < (int)strlen(namebuf); x++)
{ {
if(namebuf[x]==10 || namebuf[x]==13) if(namebuf[x] == 10 || namebuf[x] == 13)
{ {
namebuf[x]=0; namebuf[x] = 0;
break; break;
} }
else if(namebuf[x] > 0x00 && namebuf[x] < 0x20) else if(namebuf[x] > 0x00 && namebuf[x] < 0x20)
namebuf[x]=0x20; namebuf[x] = 0x20;
} }
AddCheatEntry(namebuf,addr,val,doc?compare:-1,status,type); AddCheatEntry(namebuf, addr, val, doc ? compare : -1, status, type);
tc++; tc++;
} }
RebuildSubCheats(); RebuildSubCheats();
FCEU_DispMessage("Cheats file loaded.", 0); //Tells user a cheats file was loaded.
if(!override) if(!override)
fclose(fp); fclose(fp);
} }
@ -355,23 +361,13 @@ void FCEU_FlushGameCheats(FILE *override, int nosave)
int FCEUI_AddCheat(const char *name, uint32 addr, uint8 val, int compare, int type) int FCEUI_AddCheat(const char *name, uint32 addr, uint8 val, int compare, int type)
{ {
char *t;
if(!(t=(char *)FCEU_dmalloc(strlen(name)+1))) if(!AddCheatEntry(name, addr, val, compare, 1, type))
{ return 0;
CheatMemErr(); savecheats = 1;
return(0);
}
strcpy(t,name);
if(!AddCheatEntry(t,addr,val,compare,1,type))
{
free(t);
return(0);
}
savecheats=1;
RebuildSubCheats(); RebuildSubCheats();
return(1); return 1;
} }
int FCEUI_DelCheat(uint32 which) int FCEUI_DelCheat(uint32 which)
@ -588,43 +584,40 @@ int FCEUI_DecodePAR(const char *str, int *a, int *v, int *c, int *type)
int FCEUI_SetCheat(uint32 which, const char *name, int32 a, int32 v, int c, int s, int type) int FCEUI_SetCheat(uint32 which, const char *name, int32 a, int32 v, int c, int s, int type)
{ {
struct CHEATF *next=cheats; struct CHEATF *next = cheats;
uint32 x=0; uint32 x = 0;
while(next) while(next)
{ {
if(x==which) if(x == which)
{ {
if(name) if(name)
{ {
char *t; char *t;
if((t=(char *)realloc(next->name, strlen(name)+1))) if((t = (char *)realloc(next->name, strlen(name) + 1)))
{ strcpy(next->name = t, name);
next->name=t;
strcpy(next->name,name);
}
else else
return(0); return 0;
} }
if(a>=0) if(a >= 0)
next->addr=a; next->addr = a;
if(v>=0) if(v >= 0)
next->val=v; next->val = v;
if(s>=0) if(s >= 0)
next->status=s; next->status = s;
if(c>=-1) if(c >= -1)
next->compare=c; next->compare = c;
next->type=type; next->type = type;
savecheats=1; savecheats = 1;
RebuildSubCheats(); RebuildSubCheats();
return(1); return 1;
} }
next=next->next; next = next->next;
x++; x++;
} }
return(0); return 0;
} }
/* Convenience function. */ /* Convenience function. */
@ -731,7 +724,7 @@ void FCEUI_CheatSearchGet(int (*callb)(uint32 a, uint8 last, uint8 current, void
void FCEUI_CheatSearchGetRange(uint32 first, uint32 last, int (*callb)(uint32 a, uint8 last, uint8 current)) void FCEUI_CheatSearchGetRange(uint32 first, uint32 last, int (*callb)(uint32 a, uint8 last, uint8 current))
{ {
uint32 x; uint32 x;
uint32 in=0; uint32 in = 0;
if(!CheatComp) if(!CheatComp)
{ {
@ -740,14 +733,15 @@ void FCEUI_CheatSearchGetRange(uint32 first, uint32 last, int (*callb)(uint32 a,
return; return;
} }
for(x=0;x<0x10000;x++) for(x = 0; x < 0x10000; x++)
if(!(CheatComp[x]&CHEATC_NOSHOW) && CheatRPtrs[x>>10]) if(!(CheatComp[x] & CHEATC_NOSHOW) && CheatRPtrs[x >> 10])
{ {
if(in>=first) if(in >= first)
if(!callb(x,CheatComp[x],CheatRPtrs[x>>10][x])) if(!callb(x, CheatComp[x], CheatRPtrs[x >> 10][x]))
break; break;
in++; in++;
if(in>last) return; if(in > last)
return;
} }
} }
@ -793,130 +787,56 @@ void FCEUI_CheatSearchEnd(int type, uint8 v1, uint8 v2)
} }
} }
switch (type)
if(!type) // Change to a specific value.
{ {
for(x=0;x<0x10000;x++) default:
if(!(CheatComp[x]&CHEATC_NOSHOW)) case FCEU_SEARCH_SPECIFIC_CHANGE: // Change to a specific value
{ for (x = 0; x < 0x10000; ++x)
if(CheatComp[x]==v1 && CheatRPtrs[x>>10][x]==v2) if (!(CheatComp[x] & CHEATC_NOSHOW) && (CheatComp[x] != v1 || CheatRPtrs[x >> 10][x] != v2))
{ CheatComp[x] |= CHEATC_EXCLUDED;
break;
} case FCEU_SEARCH_RELATIVE_CHANGE: // Search for relative change (between values).
else for (x = 0; x < 0x10000; x++)
CheatComp[x]|=CHEATC_EXCLUDED; if (!(CheatComp[x] & CHEATC_NOSHOW) && (CheatComp[x] != v1 || CAbs(CheatComp[x] - CheatRPtrs[x >> 10][x]) != v2))
} CheatComp[x] |= CHEATC_EXCLUDED;
} break;
else if(type==1) // Search for relative change(between values). case FCEU_SEARCH_PUERLY_RELATIVE_CHANGE: // Purely relative change.
{ for (x = 0x000; x<0x10000; x++)
for(x=0;x<0x10000;x++) if (!(CheatComp[x] & CHEATC_NOSHOW) && CAbs(CheatComp[x] - CheatRPtrs[x >> 10][x]) != v2)
if(!(CheatComp[x]&CHEATC_NOSHOW)) CheatComp[x] |= CHEATC_EXCLUDED;
{ break;
if(CheatComp[x]==v1 && CAbs(CheatComp[x]-CheatRPtrs[x>>10][x])==v2) case FCEU_SEARCH_ANY_CHANGE: // Any change.
{ for (x = 0x000; x < 0x10000; x++)
if (!(CheatComp[x] & CHEATC_NOSHOW) && CheatComp[x] == CheatRPtrs[x >> 10][x])
} CheatComp[x] |= CHEATC_EXCLUDED;
else break;
CheatComp[x]|=CHEATC_EXCLUDED; case FCEU_SEARCH_NEWVAL_KNOWN: // new value = known
} for (x = 0x000; x < 0x10000; x++)
} if (!(CheatComp[x] & CHEATC_NOSHOW) && CheatRPtrs[x >> 10][x] != v1)
else if(type==2) // Purely relative change. CheatComp[x] |= CHEATC_EXCLUDED;
{ break;
for(x=0x000;x<0x10000;x++) case FCEU_SEARCH_NEWVAL_GT: // new value greater than
if(!(CheatComp[x]&CHEATC_NOSHOW)) for (x = 0x000; x < 0x10000; x++)
{ if (!(CheatComp[x] & CHEATC_NOSHOW) && CheatComp[x] >= CheatRPtrs[x >> 10][x])
if(CAbs(CheatComp[x]-CheatRPtrs[x>>10][x])==v2) CheatComp[x] |= CHEATC_EXCLUDED;
{ break;
case FCEU_SEARCH_NEWVAL_LT: // new value less than
} for (x = 0x000; x < 0x10000; x++)
else if (!(CheatComp[x] & CHEATC_NOSHOW) && CheatComp[x] <= CheatRPtrs[x >> 10][x])
CheatComp[x]|=CHEATC_EXCLUDED; CheatComp[x] |= CHEATC_EXCLUDED;
} break;
} case FCEU_SEARCH_NEWVAL_GT_KNOWN: // new value greater than by known value
else if(type==3) // Any change. for (x = 0x000; x < 0x10000; x++)
{ if (!(CheatComp[x] & CHEATC_NOSHOW) && CheatRPtrs[x >> 10][x] - CheatComp[x] != v2)
for(x=0x000;x<0x10000;x++) CheatComp[x] |= CHEATC_EXCLUDED;
if(!(CheatComp[x]&CHEATC_NOSHOW)) break;
{ case FCEU_SEARCH_NEWVAL_LT_KNOWN: // new value less than by known value
if(CheatComp[x]!=CheatRPtrs[x>>10][x]) for (x = 0x000; x < 0x10000; x++)
{ if (!(CheatComp[x] & CHEATC_NOSHOW) && (CheatComp[x] - CheatRPtrs[x >> 10][x]) != v2)
CheatComp[x] |= CHEATC_EXCLUDED;
} break;
else
CheatComp[x]|=CHEATC_EXCLUDED;
} }
}
else if(type==4) // new value = known
{
for(x=0x000;x<0x10000;x++)
if(!(CheatComp[x]&CHEATC_NOSHOW))
{
if(CheatRPtrs[x>>10][x]==v1)
{
}
else
CheatComp[x]|=CHEATC_EXCLUDED;
}
}
else if(type==5) // new value greater than
{
for(x=0x000;x<0x10000;x++)
if(!(CheatComp[x]&CHEATC_NOSHOW))
{
if(CheatComp[x]<CheatRPtrs[x>>10][x])
{
}
else
CheatComp[x]|=CHEATC_EXCLUDED;
}
}
else if(type==6) // new value less than
{
for(x=0x000;x<0x10000;x++)
if(!(CheatComp[x]&CHEATC_NOSHOW))
{
if(CheatComp[x]>CheatRPtrs[x>>10][x])
{
}
else
CheatComp[x]|=CHEATC_EXCLUDED;
}
}
else if(type==7) // new value greater than by known value
{
for(x=0x000;x<0x10000;x++)
if(!(CheatComp[x]&CHEATC_NOSHOW))
{
if((CheatRPtrs[x>>10][x]-CheatComp[x])==v2)
{
}
else
CheatComp[x]|=CHEATC_EXCLUDED;
}
}
else if(type==8) // new value less than by known value
{
for(x=0x000;x<0x10000;x++)
if(!(CheatComp[x]&CHEATC_NOSHOW))
{
if((CheatComp[x]-CheatRPtrs[x>>10][x])==v2)
{
}
else
CheatComp[x]|=CHEATC_EXCLUDED;
}
}
} }
int FCEU_CheatGetByte(uint32 A) int FCEU_CheatGetByte(uint32 A)
@ -947,7 +867,7 @@ void UpdateFrozenList(void)
uint32 x; uint32 x;
FrozenAddresses.clear(); //Clear vector and repopulate FrozenAddresses.clear(); //Clear vector and repopulate
for(x=0;x<numsubcheats;x++) for(x = 0; x < numsubcheats; x++)
{ {
FrozenAddresses.push_back(SubCheats[x].addr); FrozenAddresses.push_back(SubCheats[x].addr);
//FCEU_printf("Address %d: %d \n",x,FrozenAddresses[x]); //Debug //FCEU_printf("Address %d: %d \n",x,FrozenAddresses[x]); //Debug
@ -958,7 +878,7 @@ void UpdateFrozenList(void)
// disable all cheats // disable all cheats
int FCEU_DisableAllCheats(){ int FCEU_DisableAllCheats(){
int count = 0; int count = 0;
struct CHEATF *next=cheats; struct CHEATF *next = cheats;
while(next) while(next)
{ {
if(next->status){ if(next->status){
@ -967,7 +887,7 @@ int FCEU_DisableAllCheats(){
next->status = 0; next->status = 0;
next = next->next; next = next->next;
} }
savecheats=1; savecheats = 1;
RebuildSubCheats(); RebuildSubCheats();
return count; return count;
} }

View File

@ -1,7 +1,7 @@
void FCEU_CheatResetRAM(void); void FCEU_CheatResetRAM(void);
void FCEU_CheatAddRAM(int s, uint32 A, uint8 *p); void FCEU_CheatAddRAM(int s, uint32 A, uint8 *p);
void FCEU_LoadGameCheats(FILE *override); void FCEU_LoadGameCheats(FILE *override, int override_existing = 1);
void FCEU_FlushGameCheats(FILE *override, int nosave); void FCEU_FlushGameCheats(FILE *override, int nosave);
void FCEU_ApplyPeriodicCheats(void); void FCEU_ApplyPeriodicCheats(void);
void FCEU_PowerCheats(void); void FCEU_PowerCheats(void);
@ -24,7 +24,7 @@ typedef struct {
struct CHEATF { struct CHEATF {
struct CHEATF *next; struct CHEATF *next;
char *name; char *name = "";
uint16 addr; uint16 addr;
uint8 val; uint8 val;
int compare; /* -1 for no compare. */ int compare; /* -1 for no compare. */
@ -32,9 +32,26 @@ struct CHEATF {
int status; int status;
}; };
struct SEARCHPOSSIBLE {
uint16 addr;
uint8 previous;
uint8 current;
bool update;
};
#define FCEU_SEARCH_SPECIFIC_CHANGE 0
#define FCEU_SEARCH_RELATIVE_CHANGE 1
#define FCEU_SEARCH_PUERLY_RELATIVE_CHANGE 2
#define FCEU_SEARCH_ANY_CHANGE 3
#define FCEU_SEARCH_NEWVAL_KNOWN 4
#define FCEU_SEARCH_NEWVAL_GT 5
#define FCEU_SEARCH_NEWVAL_LT 6
#define FCEU_SEARCH_NEWVAL_GT_KNOWN 7
#define FCEU_SEARCH_NEWVAL_LT_KNOWN 8
#define CalcAddressRangeCheatCount(count, address, size) \ #define CalcAddressRangeCheatCount(count, address, size) \
count = 0; \ count = 0; \
for (int i = 0; i < numsubcheats && count < size; ++i) \ for (int i = 0; i < numsubcheats && count < size; ++i) \
if (SubCheats[i].addr >= address && SubCheats[i].addr < address + size) \ if (SubCheats[i].addr >= address && SubCheats[i].addr < address + size) \
++count; ++count

View File

@ -14,7 +14,9 @@ inline FILE *FCEUD_UTF8fopen(const std::string &n, const char *mode) { return FC
EMUFILE_FILE* FCEUD_UTF8_fstream(const char *n, const char *m); EMUFILE_FILE* FCEUD_UTF8_fstream(const char *n, const char *m);
inline EMUFILE_FILE* FCEUD_UTF8_fstream(const std::string &n, const char *m) { return FCEUD_UTF8_fstream(n.c_str(),m); } inline EMUFILE_FILE* FCEUD_UTF8_fstream(const std::string &n, const char *m) { return FCEUD_UTF8_fstream(n.c_str(),m); }
FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex); FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex);
FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex, bool* userCancel);
FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename); FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename);
FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename, bool* userCancel);
ArchiveScanRecord FCEUD_ScanArchive(std::string fname); ArchiveScanRecord FCEUD_ScanArchive(std::string fname);
//mbg 7/23/06 //mbg 7/23/06

View File

@ -275,10 +275,6 @@ public:
} }
}; };
// indicator for the open in archive dialog that if the load was canceled by the user.
// TODO: Since I can't think of a better way to indicate it, hope someone could imporve it.
extern bool archiveManuallyCanceled;
static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
{ {
switch(uMsg) switch(uMsg)
@ -289,7 +285,7 @@ static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM
for(uint32 i=0;i<currFileSelectorContext->size();i++) for(uint32 i=0;i<currFileSelectorContext->size();i++)
{ {
std::string& name = (*currFileSelectorContext)[i].name; std::string& name = (*currFileSelectorContext)[i].name;
SendMessage(hwndListbox,LB_ADDSTRING,0,(LPARAM)name.c_str()); SendMessage(hwndListbox, LB_ADDSTRING, 0, (LPARAM)name.c_str());
} }
} }
break; break;
@ -310,9 +306,6 @@ static BOOL CALLBACK ArchiveFileSelectorCallback(HWND hwndDlg, UINT uMsg, WPARAM
case IDCANCEL: case IDCANCEL:
EndDialog(hwndDlg, LB_ERR); EndDialog(hwndDlg, LB_ERR);
// Tell the parent window that the operation was canceled rather than loading error
// TODO: find a better way to do this.
archiveManuallyCanceled = true;
return TRUE; return TRUE;
} }
break; break;
@ -493,7 +486,7 @@ extern HWND hAppWnd;
//TODO - factor out the filesize and name extraction code from below (it is already done once above) //TODO - factor out the filesize and name extraction code from below (it is already done once above)
static FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename, int innerIndex) static FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename, int innerIndex, bool* userCancel)
{ {
FCEUFILE* fp = 0; FCEUFILE* fp = 0;
@ -565,7 +558,11 @@ static FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, s
delete ms; delete ms;
} }
} //if returned a file from the fileselector }
else {
if(userCancel)
*userCancel = true;
}//if returned a file from the fileselector
} //if we opened the 7z correctly } //if we opened the 7z correctly
object->Release(); object->Release();
@ -574,11 +571,26 @@ static FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, s
return fp; return fp;
} }
static FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename, int innerIndex)
{
return FCEUD_OpenArchive(asr, fname, innerFilename, innerIndex, NULL);
}
FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex, bool* userCancel)
{
return FCEUD_OpenArchive(asr, fname, 0, innerIndex, userCancel);
}
FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex) FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex)
{ {
return FCEUD_OpenArchive(asr, fname, 0, innerIndex); return FCEUD_OpenArchive(asr, fname, 0, innerIndex);
} }
FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename, bool* userCancel)
{
return FCEUD_OpenArchive(asr, fname, innerFilename, -1, userCancel);
}
FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename) FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename)
{ {
return FCEUD_OpenArchive(asr, fname, innerFilename, -1); return FCEUD_OpenArchive(asr, fname, innerFilename, -1);

View File

@ -11,8 +11,10 @@ void initArchiveSystem();
//if you want to autopilot this, pass in an innerfilename to try and automatically load //if you want to autopilot this, pass in an innerfilename to try and automatically load
FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename); FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename);
FCEUFILE* FCEUD_OpenArchive(ArchiveScanRecord& asr, std::string& fname, std::string* innerFilename, bool* userCancel);
FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex); FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex);
FCEUFILE* FCEUD_OpenArchiveIndex(ArchiveScanRecord& asr, std::string& fname, int innerIndex, bool* userCancel);
//scans a file to see if it is an archive you can handle //scans a file to see if it is an archive you can handle
ArchiveScanRecord FCEUD_ScanArchive(std::string fname); ArchiveScanRecord FCEUD_ScanArchive(std::string fname);

File diff suppressed because it is too large Load Diff

View File

@ -3,13 +3,21 @@
extern int CheatWindow,CheatStyle; //bbit edited: this line added extern int CheatWindow,CheatStyle; //bbit edited: this line added
extern HWND hCheat; extern HWND hCheat;
HWND InitializeCheatList(HWND hwndDlg);
void RedoCheatsLB(HWND hwndDlg); void RedoCheatsLB(HWND hwndDlg);
typedef unsigned int HWAddressType;
void ConfigCheats(HWND hParent); void ConfigCheats(HWND hParent);
void DoGGConv(); void DoGGConv();
void SetGGConvFocus(int address,int compare); void SetGGConvFocus(int address,int compare);
void UpdateCheatList(); void UpdateCheatList();
void UpdateCheatListGroupBoxUI();
void UpdateCheatsAdded(); 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);
extern unsigned int FrozenAddressCount; extern unsigned int FrozenAddressCount;
extern std::vector<uint16> FrozenAddresses; extern std::vector<uint16> FrozenAddresses;
@ -17,4 +25,19 @@ extern std::vector<uint16> FrozenAddresses;
void DisableAllCheats(); void DisableAllCheats();
void UpdateCheatWindowRelatedWindow(); void UpdateCheatRelatedWindow();
// deselect the old one and select the new one
#define ListView_MoveSelectionMark(hwnd, prevIndex, newIndex) \
LVITEM lvi; \
SendMessage(hwnd, LVM_SETITEMSTATE, prevIndex, (LPARAM)&(lvi.mask = LVIF_STATE, lvi.stateMask = LVIS_SELECTED, lvi.state = 0, lvi)), \
SendMessage(hwnd, LVM_SETITEMSTATE, newIndex, (LPARAM)&(lvi.state = LVIS_SELECTED, lvi)), \
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)""))

View File

@ -23,7 +23,7 @@ else if (filter > EMUCMDTYPE_MISC && filter < EMUCMDTYPE_MAX || filter == EMUCMD
else \ else \
lpListView->iSubItem = mapInputSortCol; \ lpListView->iSubItem = mapInputSortCol; \
if (SendMessage(hwndListView, LVM_SORTITEMS, (WPARAM)lpListView, (LPARAM)MapInputItemSortFunc)) \ if (SendMessage(hwndListView, LVM_SORTITEMS, (WPARAM)lpListView, (LPARAM)MapInputItemSortFunc)) \
UpdateSortColumnIcon(hwndListView, mapInputSortCol, mapInputSortAsc); UpdateSortColumnIcon(hwndListView, mapInputSortCol, mapInputSortAsc)
void KeyboardUpdateState(void); //mbg merge 7/17/06 yech had to add this void KeyboardUpdateState(void); //mbg merge 7/17/06 yech had to add this
@ -602,23 +602,18 @@ HWND InitializeListView(HWND hwndDlg)
// Init ListView columns. // Init ListView columns.
memset(&lv, 0, sizeof(lv)); memset(&lv, 0, sizeof(lv));
lv.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH; lv.mask = LVCF_TEXT | LVCF_WIDTH;
lv.fmt = LVCFMT_LEFT;
lv.pszText = "Type"; lv.pszText = "Type";
lv.cx = 80; lv.cx = 80;
SendMessage(hwndListView, LVM_INSERTCOLUMN, (WPARAM)0, (LPARAM)&lv); SendMessage(hwndListView, LVM_INSERTCOLUMN, (WPARAM)0, (LPARAM)&lv);
memset(&lv, 0, sizeof(lv));
lv.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH;
lv.fmt = LVCFMT_LEFT;
lv.pszText = "Command"; lv.pszText = "Command";
lv.cx = 240; lv.cx = 240;
SendMessage(hwndListView, LVM_INSERTCOLUMN, (WPARAM)1, (LPARAM)&lv); SendMessage(hwndListView, LVM_INSERTCOLUMN, (WPARAM)1, (LPARAM)&lv);
memset(&lv, 0, sizeof(lv)); lv.mask ^= LVCF_WIDTH;
lv.mask = LVCF_FMT | LVCF_TEXT;
lv.fmt = LVCFMT_LEFT; lv.fmt = LVCFMT_LEFT;
lv.pszText = "Input"; lv.pszText = "Input";
@ -768,9 +763,10 @@ BOOL CALLBACK MapInputDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM
break; break;
case WM_CLOSE: case WM_CLOSE:
EndDialog(hwndDlg, 0);
break;
case WM_DESTROY: case WM_DESTROY:
case WM_QUIT: case WM_QUIT:
EndDialog(hwndDlg, 0);
break; break;
case WM_NOTIFY: case WM_NOTIFY:

View File

@ -933,23 +933,19 @@ void FreezeRam(int address, int mode, int final){
if (mode == 0 || mode == -1) if (mode == 0 || mode == -1)
{ {
//mbg merge 6/29/06 - added argument //mbg merge 6/29/06 - added argument
FCEUI_ListCheats(DeleteCheatCallB,0); FCEUI_ListCheats(DeleteCheatCallB, 0);
if(mode == 0 && cheatwasdeleted != -1)FCEUI_AddCheat("",address,GetMem(address),-1,1); if(mode == 0 && cheatwasdeleted != -1)
FCEUI_AddCheat("", address, GetMem(address), -1, 1);
} }
else else
{ {
//mbg merge 6/29/06 - added argument //mbg merge 6/29/06 - added argument
FCEUI_ListCheats(DeleteCheatCallB,0); FCEUI_ListCheats(DeleteCheatCallB, 0);
FCEUI_AddCheat("",address,GetMem(address),-1,1); FCEUI_AddCheat("", address, GetMem(address), -1, 1);
} }
//if (final)
//{
//if(hCheat)RedoCheatsLB(hCheat);
UpdateColorTable();
//}
UpdateCheatsAdded(); UpdateCheatsAdded();
UpdateCheatRelatedWindow();
} }
} }

View File

@ -702,7 +702,7 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA
const int FMAX = 6; const int FMAX = 6;
string formula[FMAX] = {"> than", "> by 1", "< than", "< by 1", "equal", "!equal"}; string formula[FMAX] = {"> than", "> by 1", "< than", "< by 1", "equal", "!equal"};
const int kLabelControls[] = {MW_ValueLabel1,MW_ValueLabel2}; const int kLabelControls[] = {MW_VALUELABEL1,MW_VALUELABEL2};
switch(uMsg) switch(uMsg)
{ {
@ -847,9 +847,6 @@ static BOOL CALLBACK MemWatchCallB(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARA
RamChange(); RamChange();
break; break;
case MEMW_FILE_RECENT:
break;
case MEMW_OPTIONS_LOADSTART: //Load on Start up case MEMW_OPTIONS_LOADSTART: //Load on Start up
MemWatchLoadOnStart ^= 1; MemWatchLoadOnStart ^= 1;
CheckMenuItem(memwmenu, MEMW_OPTIONS_LOADSTART, MemWatchLoadOnStart ? MF_CHECKED : MF_UNCHECKED); CheckMenuItem(memwmenu, MEMW_OPTIONS_LOADSTART, MemWatchLoadOnStart ? MF_CHECKED : MF_UNCHECKED);

View File

@ -32,9 +32,9 @@
#include "../../cheat.h" #include "../../cheat.h"
#include "resource.h" #include "resource.h"
#include "cheat.h"
#include "ram_search.h" #include "ram_search.h"
#include "ramwatch.h" #include "ramwatch.h"
#include "cheat.h"
#include <assert.h> #include <assert.h>
#include <commctrl.h> #include <commctrl.h>
#include <list> #include <list>
@ -1078,9 +1078,6 @@ void signal_new_frame ()
bool RamSearchClosed = false;
bool RamWatchClosed = false;
void ResetResults() void ResetResults()
{ {
reset_address_info(); reset_address_info();
@ -1093,39 +1090,26 @@ void CloseRamWindows() //Close the Ram Search & Watch windows when rom closes
ResetWatches(); ResetWatches();
ResetResults(); ResetResults();
if (RamSearchHWnd) if (RamSearchHWnd)
{
SendMessage(RamSearchHWnd,WM_CLOSE,NULL,NULL); SendMessage(RamSearchHWnd,WM_CLOSE,NULL,NULL);
RamSearchClosed = true;
}
if (RamWatchHWnd) if (RamWatchHWnd)
{
SendMessage(RamWatchHWnd,WM_CLOSE,NULL,NULL); SendMessage(RamWatchHWnd,WM_CLOSE,NULL,NULL);
RamWatchClosed = true;
}
} }
void ReopenRamWindows() //Reopen them when a new Rom is loaded void ReopenRamWindows() //Reopen them when a new Rom is loaded
{ {
HWND hwnd = GetActiveWindow(); HWND hwnd = GetActiveWindow();
if (RamSearchClosed)
{
RamSearchClosed = false;
if(!RamSearchHWnd) if(!RamSearchHWnd)
{ {
reset_address_info(); reset_address_info();
LRESULT CALLBACK RamSearchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam); LRESULT CALLBACK RamSearchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam);
RamSearchHWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_RAMSEARCH), hWnd, (DLGPROC) RamSearchProc); RamSearchHWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_RAMSEARCH), hWnd, (DLGPROC) RamSearchProc);
} }
}
if (RamWatchClosed || AutoRWLoad) if (AutoRWLoad)
{ OpenRWRecentFile(0);
RamWatchClosed = false;
if(!RamWatchHWnd) if (!RamWatchHWnd)
{
if (AutoRWLoad) OpenRWRecentFile(0);
RamWatchHWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_RAMWATCH), hWnd, (DLGPROC) RamWatchProc); RamWatchHWnd = CreateDialog(hInst, MAKEINTRESOURCE(IDD_RAMWATCH), hWnd, (DLGPROC) RamWatchProc);
}
}
if (hwnd == hWnd && hwnd != GetActiveWindow()) if (hwnd == hWnd && hwnd != GetActiveWindow())
SetActiveWindow(hWnd); // restore focus to the main window if it had it before SetActiveWindow(hWnd); // restore focus to the main window if it had it before
@ -1835,22 +1819,23 @@ LRESULT CALLBACK RamSearchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
// Don't open cheat dialog // Don't open cheat dialog
switch (sizeType) { switch (sizeType) {
case 0: { case 0:
FCEUI_AddCheat("",address,curvalue,-1,1); FCEUI_AddCheat("",address,curvalue, -1, 1);
break; } break;
case 1: { case 1:
FCEUI_AddCheat("",address,curvalue & 0xFF, -1, 1);
FCEUI_AddCheat("",address + 1,(curvalue & 0xFF00) / 0x100, -1, 1);
break;
case 2:
FCEUI_AddCheat("",address,curvalue & 0xFF,-1,1); FCEUI_AddCheat("",address,curvalue & 0xFF,-1,1);
FCEUI_AddCheat("",address + 1,(curvalue & 0xFF00) / 0x100,-1,1); FCEUI_AddCheat("",address + 1,(curvalue & 0xFF00) / 0x100, -1, 1);
break; } FCEUI_AddCheat("",address + 2,(curvalue & 0xFF0000) / 0x10000, -1, 1);
case 2: { FCEUI_AddCheat("",address + 3,(curvalue & 0xFF000000) / 0x1000000, -1, 1);
FCEUI_AddCheat("",address,curvalue & 0xFF,-1,1); break;
FCEUI_AddCheat("",address + 1,(curvalue & 0xFF00) / 0x100,-1,1);
FCEUI_AddCheat("",address + 2,(curvalue & 0xFF0000) / 0x10000,-1,1);
FCEUI_AddCheat("",address + 3,(curvalue & 0xFF000000) / 0x1000000,-1,1);
break; }
} }
UpdateCheatsAdded(); UpdateCheatsAdded();
UpdateCheatRelatedWindow();
watchItemIndex = ListView_GetNextItem(ramListControl, watchItemIndex, LVNI_SELECTED); watchItemIndex = ListView_GetNextItem(ramListControl, watchItemIndex, LVNI_SELECTED);
@ -1959,30 +1944,36 @@ invalid_field:
case IDC_C_WATCH: case IDC_C_WATCH:
{ {
HWND ramListControl = GetDlgItem(hDlg,IDC_RAMLIST); HWND ramListControl = GetDlgItem(hDlg,IDC_RAMLIST);
int selCount = ListView_GetSelectedCount(ramListControl); int selCount = SendMessage(ramListControl, LVM_GETSELECTEDCOUNT, 0, 0);
if (selCount > 0)
bool inserted = false;
int watchItemIndex = ListView_GetNextItem(ramListControl, -1, LVNI_SELECTED);
while (watchItemIndex >= 0)
{ {
AddressWatcher tempWatch; AddressWatcher tempWatch;
tempWatch.Address = CALL_WITH_T_SIZE_TYPES_1(GetHardwareAddressFromItemIndex, rs_type_size,rs_t=='s',noMisalign, watchItemIndex);
tempWatch.Size = rs_type_size; tempWatch.Size = rs_type_size;
tempWatch.Type = rs_t; tempWatch.Type = rs_t;
tempWatch.WrongEndian = 0; //Replace when I get little endian working tempWatch.WrongEndian = 0; //Replace when I get little endian working
tempWatch.comment = NULL; tempWatch.comment = NULL;
if (selCount == 1) bool inserted = false;
inserted |= InsertWatch(tempWatch, hDlg);
else
inserted |= InsertWatch(tempWatch);
watchItemIndex = ListView_GetNextItem(ramListControl, watchItemIndex, LVNI_SELECTED); AddressWatcher* watches = (AddressWatcher*)malloc(selCount * sizeof(AddressWatcher));
int i = 0;
int watchItemIndex = -1;
while ((watchItemIndex = SendMessage(ramListControl, LVM_GETNEXTITEM, watchItemIndex, LVNI_SELECTED)) >= 0)
{
tempWatch.Address = CALL_WITH_T_SIZE_TYPES_1(GetHardwareAddressFromItemIndex, rs_type_size, rs_t == 's', noMisalign, watchItemIndex);
watches[i] = tempWatch;
++i;
} }
// bring up the ram watch window if it's not already showing so the user knows where the watch went // bring up the ram watch window if it's not already showing so the user knows where the watch went
if(inserted && !RamWatchHWnd) if ((selCount == 1 ?
InsertWatch(watches[0], hDlg) : InsertWatches(watches, hDlg, selCount))
&& !RamWatchHWnd)
SendMessage(hWnd, WM_COMMAND, ID_RAM_WATCH, 0); SendMessage(hWnd, WM_COMMAND, ID_RAM_WATCH, 0);
SetForegroundWindow(RamSearchHWnd); SetForegroundWindow(RamSearchHWnd);
free(watches);
}
{rv = true; break;} {rv = true; break;}
} }
@ -2045,15 +2036,6 @@ invalid_field:
signal_new_size(); signal_new_size();
{rv = true; break;} {rv = true; break;}
} }
//case IDOK:
case IDCANCEL:
RamSearchHWnd = NULL;
/* if (theApp.pauseDuringCheatSearch)
EndDialog(hDlg, true); // this should never be called on a modeless dialog
else
*/
DestroyWindow(hDlg);
{rv = true; break;}
} }
// check refresh for comparison preview color update // check refresh for comparison preview color update
@ -2097,12 +2079,12 @@ invalid_field:
return rv; return rv;
} break; } break;
case WM_CLOSE:
// case WM_CLOSE: DestroyWindow(hDlg);
break;
case WM_DESTROY: case WM_DESTROY:
RamSearchHWnd = NULL; RamSearchHWnd = NULL;
// theApp.modelessCheatDialogIsOpen = false; // theApp.modelessCheatDialogIsOpen = false;
// return true;
break; break;
} }

View File

@ -4,7 +4,6 @@
extern char rs_type_size; extern char rs_type_size;
extern int ResultCount; extern int ResultCount;
typedef unsigned int HWAddressType;
unsigned int sizeConv(unsigned int index,char size, char *prevSize = &rs_type_size, bool usePrev = false); unsigned int sizeConv(unsigned int index,char size, char *prevSize = &rs_type_size, bool usePrev = false);
unsigned int GetRamValue(unsigned int Addr,char Size); unsigned int GetRamValue(unsigned int Addr,char Size);

View File

@ -5,9 +5,9 @@
using namespace std; using namespace std;
#include "resource.h" #include "resource.h"
#include "ram_search.h"
#include "ramwatch.h"
#include "cheat.h" #include "cheat.h"
#include "ramwatch.h"
#include "ram_search.h"
#include <assert.h> #include <assert.h>
#include <windows.h> #include <windows.h>
#include <commctrl.h> #include <commctrl.h>
@ -34,7 +34,7 @@ bool RWSaveWindowPos = false; //Keeps track of whether Save Window position is c
char currentWatch[1024]; char currentWatch[1024];
int ramw_x, ramw_y; //Used to store ramwatch dialog window positions int ramw_x, ramw_y; //Used to store ramwatch dialog window positions
std::map<int, AddressWatcher> rswatches; std::map<int, AddressWatcher> rswatches;
int WatchCount=0; int WatchCount = 0;
char applicationPath[2048]; char applicationPath[2048];
struct InitRamWatch struct InitRamWatch
@ -119,73 +119,18 @@ bool InsertWatch(const AddressWatcher& Watch)
NewWatch.Cheats = FCEU_CalcCheatAffectedBytes(NewWatch.Address, WatchSizeConv(NewWatch)); NewWatch.Cheats = FCEU_CalcCheatAffectedBytes(NewWatch.Address, WatchSizeConv(NewWatch));
NewWatch.comment = strcpy((char*)malloc(strlen(Watch.comment) + 2), Watch.comment); NewWatch.comment = strcpy((char*)malloc(strlen(Watch.comment) + 2), Watch.comment);
// currently it's impossible to add a separator from outside RAM Watch, so no need to check the handle
if (NewWatch.Type == 'S') if (NewWatch.Type == 'S')
separatorCache[i] = SeparatorCache(RamWatchHWnd, NewWatch.comment); separatorCache[i] = SeparatorCache(RamWatchHWnd, NewWatch.comment);
ListView_SetItemCount(GetDlgItem(RamWatchHWnd,IDC_WATCHLIST),WatchCount); // In case the window is not open and somebody call this method outside.
if (RamWatchHWnd)
ListView_SetItemCount(GetDlgItem(RamWatchHWnd, IDC_WATCHLIST), WatchCount);
RWfileChanged = true; RWfileChanged = true;
return true; return true;
} }
/*
LRESULT CALLBACK PromptWatchNameProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) //Gets the description of a watched address
{
RECT r;
RECT r2;
int dx1, dy1, dx2, dy2;
switch(uMsg)
{
case WM_INITDIALOG:
//Clear_Sound_Buffer();
GetWindowRect(hWnd, &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;
//SetWindowPos(hDlg, NULL, max(0, r.left + (dx1 - dx2)), max(0, r.top + (dy1 - dy2)), NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW);
SetWindowPos(hDlg, NULL, r.left, r.top, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW);
strcpy(Str_Tmp,"Enter a name for this RAM address.");
SendDlgItemMessage(hDlg,IDC_PROMPT_TEXT,WM_SETTEXT,0,(LPARAM)Str_Tmp);
strcpy(Str_Tmp,"");
SendDlgItemMessage(hDlg,IDC_PROMPT_TEXT2,WM_SETTEXT,0,(LPARAM)Str_Tmp);
return true;
break;
case WM_COMMAND:
switch(LOWORD(wParam))
{
case IDOK:
{
GetDlgItemText(hDlg,IDC_PROMPT_EDIT,Str_Tmp,80);
InsertWatch(rswatches[WatchCount],Str_Tmp);
EndDialog(hDlg, true);
return true;
break;
}
case IDCANCEL:
EndDialog(hDlg, false);
return false;
break;
}
break;
case WM_CLOSE:
EndDialog(hDlg, false);
return false;
break;
}
return false;
}
*/
bool InsertWatch(const AddressWatcher& Watch, HWND parent) bool InsertWatch(const AddressWatcher& Watch, HWND parent)
{ {
if(!VerifyWatchNotAlreadyAdded(Watch)) if(!VerifyWatchNotAlreadyAdded(Watch))
@ -198,13 +143,47 @@ bool InsertWatch(const AddressWatcher& Watch, HWND parent)
int prevWatchCount = WatchCount; int prevWatchCount = WatchCount;
rswatches[WatchCount] = Watch; int tmpWatchIndex;
rswatches[WatchCount].CurValue = GetCurrentValue(rswatches[WatchCount]); if (parent == RamWatchHWnd)
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), parent, (DLGPROC)EditWatchProc, (LPARAM)WatchCount); tmpWatchIndex = WatchCount;
else if (parent == RamSearchHWnd)
tmpWatchIndex = -2;
else if (parent == hCheat)
tmpWatchIndex = -3;
else
tmpWatchIndex = -4;
rswatches[tmpWatchIndex] = Watch;
rswatches[tmpWatchIndex].CurValue = GetCurrentValue(rswatches[tmpWatchIndex]);
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), parent, (DLGPROC)EditWatchProc, tmpWatchIndex);
rswatches.erase(tmpWatchIndex);
return WatchCount > prevWatchCount; return WatchCount > prevWatchCount;
} }
bool InsertWatches(const AddressWatcher* watches, HWND parent, const int count)
{
if (count == 1)
return InsertWatch(watches[0], parent);
else
{
bool success = false;
char comment[256];
rswatches[-1] = watches[0];
rswatches[-1].comment = comment;
if(DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), parent, (DLGPROC)EditWatchProc, (LPARAM)-1))
for (int i = 0; i < count; ++i)
{
AddressWatcher watcher = watches[i];
watcher.comment = rswatches[-1].comment;
success |= InsertWatch(watcher);
}
rswatches.erase(-1);
return success;
}
return false;
}
void Update_RAM_Watch() void Update_RAM_Watch()
{ {
BOOL watchChanged[MAX_WATCH_COUNT] = {0}; BOOL watchChanged[MAX_WATCH_COUNT] = {0};
@ -800,7 +779,9 @@ void RefreshWatchListSelectedItemControlStatus(HWND hDlg)
LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) //Gets info for a RAM Watch, and then inserts it into the Watch List LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) //Gets info for a RAM Watch, and then inserts it into the Watch List
{ {
static int index; // since there are 3 windows can pops up the add watch dialog, we should store them separately.
// 0 for ram watch, 1 for ram search, 2 for cheat dialog.
static int indexes[4];
switch(uMsg) switch(uMsg)
{ {
@ -810,12 +791,18 @@ LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
GetWindowRect(hWnd, &r); GetWindowRect(hWnd, &r);
SetWindowPos(hDlg, NULL, r.left, r.top, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW); SetWindowPos(hDlg, NULL, r.left, r.top, NULL, NULL, SWP_NOSIZE | SWP_NOZORDER | SWP_SHOWWINDOW);
index = (int)lParam; AddressWatcher& watcher = rswatches[lParam];
AddressWatcher& watcher = rswatches[index];
if (watcher.Type != 'S') { if (watcher.Type != 'S') {
char Str_Tmp[1024]; char Str_Tmp[1024];
// -1 means batch add
if (lParam != -1)
{
sprintf(Str_Tmp, "%04X", watcher.Address); sprintf(Str_Tmp, "%04X", watcher.Address);
SetDlgItemText(hDlg, IDC_EDIT_COMPAREADDRESS, Str_Tmp); SetDlgItemText(hDlg, IDC_EDIT_COMPAREADDRESS, Str_Tmp);
} else
// Add multiple watches
SetDlgItemText(hDlg, IDC_EDIT_COMPAREADDRESS, "(multiple)");
switch (watcher.Size) switch (watcher.Size)
{ {
case 'b': case 'b':
@ -847,7 +834,9 @@ LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
SetDlgItemText(hDlg, IDC_PROMPT_EDIT, watcher.comment); SetDlgItemText(hDlg, IDC_PROMPT_EDIT, watcher.comment);
HWND parent = GetParent(hDlg); HWND parent = GetParent(hDlg);
if (watcher.Type == 'S' || parent == RamSearchHWnd) indexes[GetDlgStoreIndex(parent)] = lParam;
if (watcher.Type == 'S' || parent == RamSearchHWnd || parent == hCheat)
{ {
EnableWindow(GetDlgItem(hDlg, IDC_SPECIFICADDRESS), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_SPECIFICADDRESS), FALSE);
EnableWindow(GetDlgItem(hDlg, IDC_DATATYPE_GROUPBOX), FALSE); EnableWindow(GetDlgItem(hDlg, IDC_DATATYPE_GROUPBOX), FALSE);
@ -871,18 +860,25 @@ LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
{ {
case IDOK: case IDOK:
{ {
char Str_Tmp[1024]; char Str_Tmp[256];
HWND parent = GetParent(hDlg);
int index = indexes[GetDlgStoreIndex(parent)];
// not a single watch editing operation
if (index != -1)
{
// a normal watch, copy it to a temporary one // a normal watch, copy it to a temporary one
AddressWatcher watcher = rswatches[index]; AddressWatcher watcher = rswatches[index];
if (watcher.comment != NULL) // if (watcher.comment != NULL)
watcher.comment = strcpy((char*)malloc(strlen(watcher.comment) + 2), watcher.comment); // watcher.comment = strcpy((char*)malloc(strlen(watcher.comment) + 2), watcher.comment);
// It's from ram watch window, not a separator // It's from ram watch window, not a separator
// When it's from ram search window, all the information required is already set, // When it's from ram search or cheat window, all the information required is already set,
// so this is also unecessary // so this is also unecessary
if (RamWatchHWnd && RamWatchHWnd == GetParent(hDlg) && watcher.Type != 'S') if (RamWatchHWnd && RamWatchHWnd == GetParent(hDlg) && watcher.Type != 'S')
{ {
GetDlgItemText(hDlg, IDC_PROMPT_EDIT, Str_Tmp, 1024); GetDlgItemText(hDlg, IDC_PROMPT_EDIT, Str_Tmp, 256);
// type // type
if (SendDlgItemMessage(hDlg, IDC_SIGNED, BM_GETCHECK, 0, 0) == BST_CHECKED) if (SendDlgItemMessage(hDlg, IDC_SIGNED, BM_GETCHECK, 0, 0) == BST_CHECKED)
@ -933,14 +929,22 @@ LRESULT CALLBACK EditWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lPara
watcher.comment = Str_Tmp; watcher.comment = Str_Tmp;
// finallly update the watch list // finallly update the watch list
if (index < WatchCount) if (index >= 0 && index < WatchCount)
// it's a watch editing operation. // it's a watch editing operation.
// Only ram watch window can edit a watch, the ram search window only add watch. // Only ram watch window can edit a watch, the ram search window and cheat window only add watch.
EditWatch(index, watcher); EditWatch(index, watcher);
else else
InsertWatch(watcher); InsertWatch(watcher);
if (RamWatchHWnd) if (RamWatchHWnd)
ListView_SetItemCount(GetDlgItem(RamWatchHWnd, IDC_WATCHLIST), WatchCount); ListView_SetItemCount(GetDlgItem(RamWatchHWnd, IDC_WATCHLIST), WatchCount);
}
else {
// a multiple watches insert operation, just asking for a comment
AddressWatcher& watcher = rswatches[index];
// comment
GetDlgItemText(hDlg, IDC_PROMPT_EDIT, Str_Tmp, 80);
strcpy(watcher.comment, Str_Tmp);
}
EndDialog(hDlg, true); EndDialog(hDlg, true);
RWfileChanged = true; RWfileChanged = true;
@ -1021,7 +1025,8 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
//regSetDwordValue(RAMWY, ramw_y); TODO //regSetDwordValue(RAMWY, ramw_y); TODO
} break; } break;
case WM_INITDIALOG: { case WM_INITDIALOG:
{
RECT r, r2; RECT r, r2;
int dx1, dy1, dx2, dy2; int dx1, dy1, dx2, dy2;
@ -1126,20 +1131,18 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
{ {
case LVN_ITEMCHANGED: // selection changed event case LVN_ITEMCHANGED: // selection changed event
{ {
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)lP; NMLISTVIEW* pNMListView = (NMLISTVIEW*)lP;
if(pNMListView->uNewState & LVIS_FOCUSED || if(pNMListView->uNewState & LVIS_FOCUSED ||
(pNMListView->uNewState ^ pNMListView->uOldState) & LVIS_SELECTED) (pNMListView->uNewState ^ pNMListView->uOldState) & LVIS_SELECTED)
{
// disable buttons that we don't have the right number of selected items for // disable buttons that we don't have the right number of selected items for
RefreshWatchListSelectedCountControlStatus(hDlg, pNMListView->iItem); RefreshWatchListSelectedCountControlStatus(hDlg, pNMListView->iItem);
}
} break; } break;
case LVN_GETDISPINFO: case LVN_GETDISPINFO:
{ {
LV_DISPINFO *Item = (LV_DISPINFO *)lParam; NMLVDISPINFO *Item = (NMLVDISPINFO*)lParam;
const unsigned int iNum = Item->item.iItem; const unsigned int iNum = Item->item.iItem;
if (rswatches[iNum].Type != 'S') if (rswatches[iNum].Type != 'S')
{ {
@ -1278,17 +1281,13 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
case RAMMENU_FILE_SAVE: case RAMMENU_FILE_SAVE:
QuickSaveWatches(); QuickSaveWatches();
break; break;
case RAMMENU_FILE_SAVEAS: case RAMMENU_FILE_SAVEAS:
//case IDC_C_SAVE:
return Save_Watches(); return Save_Watches();
case RAMMENU_FILE_OPEN: case RAMMENU_FILE_OPEN:
return Load_Watches(true); return Load_Watches(true);
case RAMMENU_FILE_APPEND: case RAMMENU_FILE_APPEND:
//case IDC_C_LOAD:
return Load_Watches(false); return Load_Watches(false);
case RAMMENU_FILE_NEW: case RAMMENU_FILE_NEW:
//case IDC_C_RESET:
ResetWatches(); ResetWatches();
return true; return true;
case IDC_C_WATCH_REMOVE: case IDC_C_WATCH_REMOVE:
@ -1301,7 +1300,7 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
ListView_DeleteItem(watchListControl, watchIndex); ListView_DeleteItem(watchListControl, watchIndex);
watchIndex = ListView_GetNextItem(watchListControl, -1, LVNI_ALL | LVNI_SELECTED); watchIndex = ListView_GetNextItem(watchListControl, -1, LVNI_ALL | LVNI_SELECTED);
} }
RWfileChanged=true; RWfileChanged = true;
SetFocus(GetDlgItem(hDlg,IDC_WATCHLIST)); SetFocus(GetDlgItem(hDlg,IDC_WATCHLIST));
return true; return true;
} }
@ -1309,7 +1308,7 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
watchIndex = ListView_GetSelectionMark(GetDlgItem(hDlg,IDC_WATCHLIST)); watchIndex = ListView_GetSelectionMark(GetDlgItem(hDlg,IDC_WATCHLIST));
if(watchIndex != -1) if(watchIndex != -1)
{ {
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC) EditWatchProc,(LPARAM)watchIndex); DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC)EditWatchProc, watchIndex);
SetFocus(GetDlgItem(hDlg,IDC_WATCHLIST)); SetFocus(GetDlgItem(hDlg,IDC_WATCHLIST));
} }
return true; return true;
@ -1320,7 +1319,7 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
target.WrongEndian = 0; target.WrongEndian = 0;
target.Size = 'b'; target.Size = 'b';
target.Type = 's'; target.Type = 's';
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC)EditWatchProc, (LPARAM)WatchCount); DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_EDITWATCH), hDlg, (DLGPROC)EditWatchProc, WatchCount);
SetFocus(GetDlgItem(hDlg, IDC_WATCHLIST)); SetFocus(GetDlgItem(hDlg, IDC_WATCHLIST));
return true; return true;
} }
@ -1462,8 +1461,10 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
FCEUI_AddCheat("", address + 3, (rswatches[watchIndex].CurValue & 0xFF000000) / 0x1000000, -1, 1); FCEUI_AddCheat("", address + 3, (rswatches[watchIndex].CurValue & 0xFF000000) / 0x1000000, -1, 1);
break; break;
} }
UpdateCheatsAdded(); UpdateCheatsAdded();
UpdateCheatWindowRelatedWindow(); UpdateCheatRelatedWindow();
} }
else else
MessageBox(hDlg, "Sorry, you can't add cheat to a separator.", "Ram Watch", MB_ICONERROR | MB_OK); MessageBox(hDlg, "Sorry, you can't add cheat to a separator.", "Ram Watch", MB_ICONERROR | MB_OK);
@ -1493,12 +1494,9 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
return true; return true;
} break; } break;
// case WM_CLOSE: case WM_CLOSE:
// RamWatchHWnd = NULL; DestroyWindow(hDlg);
// DragAcceptFiles(hDlg, FALSE); break;
// DestroyWindow(hDlg);
// return false;
case WM_DESTROY: case WM_DESTROY:
// this is the correct place // this is the correct place
RamWatchHWnd = NULL; RamWatchHWnd = NULL;
@ -1507,7 +1505,6 @@ LRESULT CALLBACK RamWatchProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
// release the hdc related objects // release the hdc related objects
SeparatorCache::DeInit(); SeparatorCache::DeInit();
break; break;
case WM_DROPFILES: case WM_DROPFILES:
@ -1532,6 +1529,8 @@ void UpdateWatchCheats() {
void SeparatorCache::Init(HWND hBox) void SeparatorCache::Init(HWND hBox)
{ {
if (!iHeight)
{
RECT ir; RECT ir;
ir.left = LVIR_BOUNDS; ir.left = LVIR_BOUNDS;
@ -1540,14 +1539,23 @@ void SeparatorCache::Init(HWND hBox)
SendMessage(hBox, LVM_GETITEMRECT, 0, (LPARAM)&ir); SendMessage(hBox, LVM_GETITEMRECT, 0, (LPARAM)&ir);
SendMessage(hBox, LVM_SETITEMCOUNT, count, 0); SendMessage(hBox, LVM_SETITEMCOUNT, count, 0);
sepOffY = (iHeight = ir.bottom - ir.top) / 2; iHeight = ir.bottom - ir.top;
}
if (!sepOffY)
sepOffY = iHeight / 2;
if (!sepPen)
sepPen = CreatePen(PS_SOLID, 1, RGB(160, 160, 160)); sepPen = CreatePen(PS_SOLID, 1, RGB(160, 160, 160));
if (!sepPenSel)
sepPenSel = CreatePen(PS_SOLID, 1, RGB(224, 224, 224)); sepPenSel = CreatePen(PS_SOLID, 1, RGB(224, 224, 224));
if (!sepFon)
{
LOGFONT logFont; LOGFONT logFont;
GetObject((HANDLE)SendMessage(hBox, WM_GETFONT, NULL, NULL), sizeof(logFont), &logFont); GetObject((HANDLE)SendMessage(hBox, WM_GETFONT, NULL, NULL), sizeof(logFont), &logFont);
sepFon = (HFONT)CreateFontIndirect((logFont.lfWeight = FW_SEMIBOLD, &logFont)); sepFon = (HFONT)CreateFontIndirect((logFont.lfWeight = FW_SEMIBOLD, &logFont));
}
} }
void SeparatorCache::DeInit() void SeparatorCache::DeInit()
@ -1555,6 +1563,10 @@ void SeparatorCache::DeInit()
DeleteObject(sepPen); DeleteObject(sepPen);
DeleteObject(sepPenSel); DeleteObject(sepPenSel);
DeleteObject(sepFon); DeleteObject(sepFon);
sepPen = NULL;
sepPenSel = NULL;
sepFon = NULL;
} }

View File

@ -17,18 +17,6 @@ extern bool RWfileChanged;
#define RAMWX "RamwX" #define RAMWX "RamwX"
#define RAMWY "RamwY" #define RAMWY "RamwY"
// AddressWatcher is self-contained now
struct AddressWatcher
{
unsigned int Address; // hardware address
unsigned int CurValue;
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
short Cheats; // how many bytes are affected by cheat
};
// Cache all the things required for drawing separator // Cache all the things required for drawing separator
// to prevent creating and destroying them repeatedly when painting // to prevent creating and destroying them repeatedly when painting
struct SeparatorCache struct SeparatorCache
@ -58,9 +46,23 @@ extern char Watch_Dir[1024];
extern HWND RamWatchHWnd; extern HWND RamWatchHWnd;
extern HACCEL RamWatchAccels; extern HACCEL RamWatchAccels;
// AddressWatcher is self-contained now
struct AddressWatcher
{
unsigned int Address; // hardware address
unsigned int CurValue;
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
short Cheats; // how many bytes are affected by cheat
};
bool InsertWatch(const AddressWatcher& Watch); bool InsertWatch(const AddressWatcher& Watch);
bool InsertWatch(const AddressWatcher& Watch, HWND parent); // asks user for comment) bool InsertWatch(const AddressWatcher& Watch, HWND parent); // asks user for comment
bool EditWatch(int watchIndex, AddressWatcher& watcher); bool InsertWatches(const AddressWatcher* watches, HWND parent, const int count);
bool InsertWatch(int watchIndex, const AddressWatcher& watcher);
bool EditWatch(int watchIndex, const AddressWatcher& watcher);
bool RemoveWatch(int watchIndex); bool RemoveWatch(int watchIndex);
void Update_RAM_Watch(); void Update_RAM_Watch();
@ -76,4 +78,9 @@ extern HWND RamWatchHWnd;
#define WatchSizeConv(watch) (watch.Type == 'S' ? 0 : watch.Size == 'd' ? 4 : watch.Size == 'w' ? 2 : watch.Size == 'b' ? 1 : 0) #define WatchSizeConv(watch) (watch.Type == 'S' ? 0 : watch.Size == 'd' ? 4 : watch.Size == 'w' ? 2 : watch.Size == 'b' ? 1 : 0)
#define SizeConvWatch(size) (size == 4 ? 'd' : size == 2 ? 'w' : size == 1 : 'b' : 0) #define SizeConvWatch(size) (size == 4 ? 'd' : size == 2 ? 'w' : size == 1 : 'b' : 0)
#define GetDlgStoreIndex(parent) \
(parent == RamWatchHWnd ? 0 : \
parent == RamSearchHWnd ? 1 : \
parent == hCheat ? 2 : 3)
#endif #endif

View File

@ -269,11 +269,6 @@ void UpdateReplayDialog(HWND hwndDlg)
free(fn); free(fn);
} }
else
{
EnableWindow(GetDlgItem(hwndDlg,IDC_EDIT_OFFSET),FALSE);
EnableWindow(GetDlgItem(hwndDlg,IDC_EDIT_FROM),FALSE);
}
if(doClear) if(doClear)
{ {
@ -731,8 +726,8 @@ BOOL CALLBACK ReplayDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LPARAM lP
case IDYES: case IDYES:
extern void DisableAllCheats(); extern void DisableAllCheats();
DisableAllCheats(); DisableAllCheats();
extern void UpdateCheatWindowRelatedWindow(); extern void UpdateCheatRelatedWindow();
UpdateCheatWindowRelatedWindow(); UpdateCheatRelatedWindow();
} }
} }
@ -957,6 +952,23 @@ static BOOL CALLBACK RecordDialogProc(HWND hwndDlg, UINT uMsg, WPARAM wParam, LP
{ {
case IDOK: case IDOK:
{ {
extern unsigned int FrozenAddressCount;
if (FrozenAddressCount)
{
char ch[512];
sprintf(ch, "You have %d activated cheats. If this is not your intentional, it can cause playback prblems! Do you want to disable all of them and continue?", FrozenAddressCount);
switch (MessageBox(hwndDlg, ch, "Movie recording problem", MB_YESNOCANCEL | MB_ICONEXCLAMATION))
{
case IDCANCEL:
return TRUE;
case IDYES:
extern void DisableAllCheats();
DisableAllCheats();
extern void UpdateCheatRelatedWindow();
UpdateCheatRelatedWindow();
}
}
LONG lIndex = SendDlgItemMessage(hwndDlg, IDC_COMBO_RECORDFROM, CB_GETCURSEL, 0, 0); LONG lIndex = SendDlgItemMessage(hwndDlg, IDC_COMBO_RECORDFROM, CB_GETCURSEL, 0, 0);
p->szFilename = GetRecordPath(hwndDlg); p->szFilename = GetRecordPath(hwndDlg);
p->recordFrom = (int)lIndex; p->recordFrom = (int)lIndex;

View File

@ -12,8 +12,7 @@
#undef APSTUDIO_READONLY_SYMBOLS #undef APSTUDIO_READONLY_SYMBOLS
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// // Neutral resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU) #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_NEU)
LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
#pragma code_page(1252) #pragma code_page(1252)
@ -25,8 +24,8 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL
// Icon with lowest ID value placed first to ensure application icon // Icon with lowest ID value placed first to ensure application icon
// remains consistent on all systems. // remains consistent on all systems.
IDI_ICON3 ICON "res\\taseditor-icon.ico" IDI_ICON3 ICON "res/taseditor-icon.ico"
IDI_ICON4 ICON "res\\taseditor-icon32.ico" IDI_ICON4 ICON "res/taseditor-icon32.ico"
ICON_1 ICON "res/ICON_1.ico" ICON_1 ICON "res/ICON_1.ico"
ICON_2 ICON "res/ICON_2.ico" ICON_2 ICON "res/ICON_2.ico"
@ -206,14 +205,14 @@ BEGIN
MENUITEM "1 on, 1 off", MENU_AUTOFIRE_PATTERN_1 MENUITEM "1 on, 1 off", MENU_AUTOFIRE_PATTERN_1
MENUITEM "1 on, 2 off", MENU_AUTOFIRE_PATTERN_2 MENUITEM "1 on, 2 off", MENU_AUTOFIRE_PATTERN_2
MENUITEM "1 on, 3 off", MENU_AUTOFIRE_PATTERN_3 MENUITEM "1 on, 3 off", MENU_AUTOFIRE_PATTERN_3
MENUITEM "1 on, 4 off", ID_DEBUG_DEBUGGER MENUITEM "1 on, 4 off", MENU_AUTOFIRE_PATTERN_4
MENUITEM "1 on, 5 off", ID_DEBUG_PPUVIEWER MENUITEM "1 on, 5 off", MENU_AUTOFIRE_PATTERN_5
MENUITEM "2 on, 1 off", ID_DEBUG_NAMETABLEVIEWER MENUITEM "2 on, 1 off", MENU_AUTOFIRE_PATTERN_6
MENUITEM "2 on, 2 off", ID_DEBUG_HEXEDITOR MENUITEM "2 on, 2 off", MENU_AUTOFIRE_PATTERN_7
MENUITEM "2 on, 3 off", ID_DEBUG_TRACELOGGER MENUITEM "2 on, 3 off", MENU_AUTOFIRE_PATTERN_8
MENUITEM "2 on, 4 off", MENU_AUTOFIRE_PATTERN_9 MENUITEM "2 on, 4 off", MENU_AUTOFIRE_PATTERN_9
MENUITEM "3 on, 1 off", ID_DEBUG_GAMEGENIEDECODER MENUITEM "3 on, 1 off", MENU_AUTOFIRE_PATTERN_10
MENUITEM "3 on, 2 off", ID_DEBUG_CDLOGGER MENUITEM "3 on, 2 off", MENU_AUTOFIRE_PATTERN_11
MENUITEM "3 on, 3 off", MENU_AUTOFIRE_PATTERN_12 MENUITEM "3 on, 3 off", MENU_AUTOFIRE_PATTERN_12
MENUITEM "4 on, 1 off", MENU_AUTOFIRE_PATTERN_13 MENUITEM "4 on, 1 off", MENU_AUTOFIRE_PATTERN_13
MENUITEM "4 on, 2 off", MENU_AUTOFIRE_PATTERN_14 MENUITEM "4 on, 2 off", MENU_AUTOFIRE_PATTERN_14
@ -633,10 +632,17 @@ CHEATCONTEXTMENUS MENU
BEGIN BEGIN
POPUP "CheatListPopup" POPUP "CheatListPopup"
BEGIN BEGIN
MENUITEM "Toggle selected Cheats\tDbl-Clk", CHEAT_CONTEXT_TOGGLECHEAT MENUITEM "Toggle selected Cheats", CHEAT_CONTEXT_LIST_TOGGLECHEAT
MENUITEM "Poke Cheat Value", CHEAT_CONTEXT_POKECHEATVALUE MENUITEM "Poke Cheat Value", CHEAT_CONTEXT_LIST_POKECHEATVALUE
MENUITEM "Goto in Hex Editor", CHEAT_CONTEXT_GOTOINHEXEDITOR MENUITEM "Goto in Hex Editor", CHEAT_CONTEXT_LIST_GOTOINHEXEDITOR
MENUITEM "Delete selected Cheats", ID_CHEATLISTPOPUP_DELETESELECTEDCHEATS 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
END END
@ -1071,7 +1077,7 @@ BEGIN
GROUPBOX "Output/Output Format:",302,10,9,131,93,WS_GROUP 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 CONTROL "Sound enabled.",CHECK_SOUND_ENABLED,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,17,22,117,12
GROUPBOX "Buffering:",127,150,9,131,93,WS_GROUP GROUPBOX "Buffering:",127,150,9,131,93,WS_GROUP
CONTROL "Use Global Focus",124,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,157,22,100,12 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 CTEXT "Sound Latency",65459,162,50,107,8
CONTROL "",CTL_LATENCY_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,162,70,107,13 CONTROL "",CTL_LATENCY_TRACKBAR,"msctls_trackbar32",WS_TABSTOP,162,70,107,13
GROUPBOX "Master",125,19,142,44,93,WS_GROUP GROUPBOX "Master",125,19,142,44,93,WS_GROUP
@ -1327,10 +1333,10 @@ BEGIN
EDITTEXT 1069,171,182,55,14,ES_AUTOHSCROLL EDITTEXT 1069,171,182,55,14,ES_AUTOHSCROLL
LTEXT "Name",65428,41,7,20,8 LTEXT "Name",65428,41,7,20,8
LTEXT "Address",65427,6,7,26,8 LTEXT "Address",65427,6,7,26,8
LTEXT "Value",MW_ValueLabel1,101,7,19,8 LTEXT "Value",MW_VALUELABEL1,101,7,19,8
LTEXT "Name",65425,171,7,20,8 LTEXT "Name",65425,171,7,20,8
LTEXT "Address",65424,135,7,26,8 LTEXT "Address",65424,135,7,26,8
LTEXT "Value",MW_ValueLabel2,231,7,19,8 LTEXT "Value",MW_VALUELABEL2,231,7,19,8
LTEXT " ",EDIT00_RESULTS,89,225,26,8 LTEXT " ",EDIT00_RESULTS,89,225,26,8
GROUPBOX "Memory Change Monitoring",IDC_STATIC,0,202,129,57,BS_CENTER GROUPBOX "Memory Change Monitoring",IDC_STATIC,0,202,129,57,BS_CENTER
LTEXT "Address",IDC_STATIC,6,213,26,8 LTEXT "Address",IDC_STATIC,6,213,26,8
@ -1560,7 +1566,7 @@ STYLE DS_SYSMODAL | DS_SETFONT | DS_MODALFRAME | DS_3DLOOK | WS_MINIMIZEBOX | WS
CAPTION "Game Genie Encoder/Decoder Tool" CAPTION "Game Genie Encoder/Decoder Tool"
FONT 8, "Tahoma", 0, 0, 0x0 FONT 8, "Tahoma", 0, 0, 0x0
BEGIN BEGIN
EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_AUTOHSCROLL EDITTEXT IDC_GAME_GENIE_CODE,115,22,53,14,ES_UPPERCASE | ES_AUTOHSCROLL
GROUPBOX "Game Genie Code",-1,107,5,69,42 GROUPBOX "Game Genie Code",-1,107,5,69,42
GROUPBOX "Address/Compare/Value",65534,9,5,91,75 GROUPBOX "Address/Compare/Value",65534,9,5,91,75
LTEXT "Address:",65533,18,24,35,8 LTEXT "Address:",65533,18,24,35,8
@ -1820,10 +1826,10 @@ BEGIN
CONTROL " Piano Roll",IDC_CHECK_PIANO_ROLL,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,68,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 CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,23,83,67,10
GROUPBOX "Greenzone saving options",IDC_STATIC,13,98,97,72 GROUPBOX "Greenzone saving options",IDC_STATIC,13,98,97,72
CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,23,109,77,10 CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES,"Button",BS_AUTORADIOBUTTON,23,109,77,10
CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,23,124,77,10 CONTROL " every 16th frame",IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME,"Button",BS_AUTORADIOBUTTON,23,124,77,10
CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,23,139,77,10 CONTROL " marked frames",IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES,"Button",BS_AUTORADIOBUTTON,23,139,77,10
CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,23,154,77,10 CONTROL " don't save",IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE,"Button",BS_AUTORADIOBUTTON,23,154,77,10
END END
ASSEMBLER DIALOGEX 0, 0, 202, 135 ASSEMBLER DIALOGEX 0, 0, 202, 135
@ -1966,46 +1972,47 @@ BEGIN
LTEXT "New Selection Name:",-1,5,240,68,8 LTEXT "New Selection Name:",-1,5,240,68,8
END END
CHEATCONSOLE DIALOGEX 0, 0, 379, 189 CHEATCONSOLE DIALOGEX 0, 0, 386, 217
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU
CAPTION "Cheat Search" CAPTION "Cheat Search"
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
GROUPBOX "Active Cheats",201,5,2,129,182,WS_TABSTOP GROUPBOX "Active Cheats",IDC_GROUPBOX_CHEATLIST,5,2,169,209,WS_TABSTOP
GROUPBOX "Cheat Search",202,140,2,233,182,WS_TABSTOP GROUPBOX "Cheat Search",IDC_GROUPBOX_CHEATSEARCH,179,2,201,209,WS_TABSTOP
LISTBOX IDC_LIST_CHEATS,11,11,118,98,LBS_NOINTEGRALHEIGHT | LBS_EXTENDEDSEL | WS_VSCROLL CONTROL "",IDC_LIST_CHEATS,"SysListView32",LVS_REPORT | LVS_SHOWSELALWAYS | LVS_NOSORTHEADER | WS_BORDER | WS_TABSTOP,11,11,157,133
LTEXT "Name:",IDC_STATIC,12,114,22,10 LTEXT "Name:",IDC_STATIC,12,149,22,10
LTEXT "Addr:",IDC_STATIC,12,130,18,10 LTEXT "Value:",IDC_CHEAT_VAL_LABEL,73,163,22,8
LTEXT "Val:",IDC_STATIC,61,130,12,10 LTEXT "Compare:",IDC_CHEAT_COM_LABEL,117,163,34,8
LTEXT "Cmp:",IDC_STATIC,95,130,16,10 EDITTEXT IDC_CHEAT_NAME,37,147,131,12,ES_AUTOHSCROLL | ES_WANTRETURN
EDITTEXT IDC_CHEAT_NAME,35,112,94,12,ES_AUTOHSCROLL | ES_WANTRETURN EDITTEXT IDC_CHEAT_ADDR,44,161,25,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_ADDR,31,128,25,12,ES_UPPERCASE | ES_WANTRETURN EDITTEXT IDC_CHEAT_VAL,97,161,16,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_VAL,74,128,16,12,ES_UPPERCASE | ES_WANTRETURN EDITTEXT IDC_CHEAT_COM,152,161,16,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_COM,113,128,16,12,ES_UPPERCASE | ES_WANTRETURN DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,9,192,36,16
DEFPUSHBUTTON "Add",IDC_BTN_CHEAT_ADD,11,144,36,16 PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,45,192,36,16
PUSHBUTTON "Delete",IDC_BTN_CHEAT_DEL,52,144,36,16 PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,81,192,36,16
PUSHBUTTON "Update",IDC_BTN_CHEAT_UPD,93,144,36,16 PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,191,12,55,15
PUSHBUTTON "Reset",IDC_BTN_CHEAT_RESET,146,12,55,15 PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,191,32,55,15
PUSHBUTTON "Known Value:",IDC_BTN_CHEAT_KNOWN,146,31,55,15 LTEXT "0x",IDC_CHEAT_LABEL_KNOWN,216,51,9,8
LTEXT "0x",IDC_STATIC,205,34,9,8 EDITTEXT IDC_CHEAT_VAL_KNOWN,227,49,18,12,ES_UPPERCASE
EDITTEXT IDC_CHEAT_VAL_KNOWN,215,32,18,12,ES_UPPERCASE GROUPBOX "Previous Compare",IDC_GROUP_PREV_COM,184,63,69,132
GROUPBOX "Previous Compare",204,145,49,113,115 PUSHBUTTON "Equal",IDC_BTN_CHEAT_EQ,191,75,55,15,WS_GROUP
PUSHBUTTON "Equal",IDC_BTN_CHEAT_EQ,151,62,55,15,WS_GROUP PUSHBUTTON "Not Equal",IDC_BTN_CHEAT_NE,191,96,55,15
PUSHBUTTON "Not Equal",IDC_BTN_CHEAT_NE,151,87,55,15 CONTROL "By:",IDC_CHEAT_CHECK_NE_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,114,22,10
CONTROL "By:",IDC_CHEAT_CHECK_NE_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,90,22,10 EDITTEXT IDC_CHEAT_VAL_NE_BY,227,113,18,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_VAL_NE_BY,234,89,18,12,ES_UPPERCASE | ES_WANTRETURN PUSHBUTTON "Greater Than",IDC_BTN_CHEAT_GT,191,129,55,15
PUSHBUTTON "Greater Than",IDC_BTN_CHEAT_GT,151,114,55,15 CONTROL "By:",IDC_CHEAT_CHECK_GT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,147,22,10
CONTROL "By:",IDC_CHEAT_CHECK_GT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,117,22,10 EDITTEXT IDC_CHEAT_VAL_GT_BY,227,146,18,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_VAL_GT_BY,234,116,18,12,ES_UPPERCASE | ES_WANTRETURN PUSHBUTTON "Less Than",IDC_BTN_CHEAT_LT,191,162,55,15
PUSHBUTTON "Less Than",IDC_BTN_CHEAT_LT,151,141,55,15 CONTROL "By:",IDC_CHEAT_CHECK_LT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,203,180,22,10
CONTROL "By:",IDC_CHEAT_CHECK_LT_BY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,210,144,22,10 EDITTEXT IDC_CHEAT_VAL_LT_BY,227,179,18,12,ES_UPPERCASE | ES_WANTRETURN
EDITTEXT IDC_CHEAT_VAL_LT_BY,234,143,18,12,ES_UPPERCASE | ES_WANTRETURN GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,257,8,117,187,WS_TABSTOP
GROUPBOX "Possibilities",IDC_CHEAT_BOX_POSSIBILITIES,263,8,105,156,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
LISTBOX IDC_CHEAT_LIST_POSSIBILITIES,268,18,85,142,LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_WANTKEYBOARDINPUT | WS_TABSTOP
SCROLLBAR IDC_CHEAT_SCRL_POSSIBILITIES,354,18,10,142,SBS_VERT
CONTROL " Pause emulation when this window is active",IDC_CHEAT_PAUSEWHENACTIVE, CONTROL " Pause emulation when this window is active",IDC_CHEAT_PAUSEWHENACTIVE,
"Button",BS_AUTOCHECKBOX,147,169,157,10 "Button",BS_AUTOCHECKBOX,185,198,157,10
PUSHBUTTON "Add from CHT file...",IDC_BTN_CHEAT_ADDFROMFILE,23,163,93,16 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
END END
IDD_LUA DIALOGEX 0, 0, 270, 150 IDD_LUA DIALOGEX 0, 0, 270, 150
@ -2142,7 +2149,7 @@ END
IDD_RAMWATCH DIALOGEX 0, 0, 269, 298 IDD_RAMWATCH DIALOGEX 0, 0, 269, 298
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION " RAM Watch" CAPTION "RAM Watch"
MENU RAMWATCH_MENU MENU RAMWATCH_MENU
FONT 8, "MS Shell Dlg", 400, 0, 0x1 FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN BEGIN
@ -2214,10 +2221,10 @@ BEGIN
CONTROL " Selection",IDC_CHECK_SELECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,122,92,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 "File contents",IDC_STATIC,105,4,111,177
GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69 GROUPBOX "Greenzone saving options",IDC_STATIC,112,106,97,69
CONTROL " all frames",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,122,117,77,10 CONTROL " all frames",IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES,"Button",BS_AUTORADIOBUTTON,122,117,77,10
CONTROL " every 16th frame",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,122,131,77,10 CONTROL " every 16th frame", IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME,"Button",BS_AUTORADIOBUTTON,122,131,77,10
CONTROL " marked frames",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,122,145,77,10 CONTROL " marked frames", IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES,"Button",BS_AUTORADIOBUTTON,122,145,77,10
CONTROL " don't save",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,122,159,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 " 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 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 LTEXT "every",IDC_AUTOSAVE_PERIOD_EVERY_TEXT,14,32,21,8
@ -2425,7 +2432,8 @@ BEGIN
"CHEATCONSOLE", DIALOG "CHEATCONSOLE", DIALOG
BEGIN BEGIN
BOTTOMMARGIN, 188 RIGHTMARGIN, 385
BOTTOMMARGIN, 216
END END
"VIDEOCONFIG", DIALOG "VIDEOCONFIG", DIALOG
@ -2499,6 +2507,11 @@ BEGIN
0 0
END END
CHEATCONSOLE AFX_DIALOG_LAYOUT
BEGIN
0
END
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// //
@ -2670,12 +2683,12 @@ IDB_BITMAP_SELECTED17 BITMAP "res\\te_17_selected.bmp"
IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp" IDB_BITMAP_SELECTED18 BITMAP "res\\te_18_selected.bmp"
IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp" IDB_BITMAP_SELECTED19 BITMAP "res\\te_19_selected.bmp"
IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp" IDB_BRANCH_SPRITESHEET BITMAP "res\\branch_spritesheet.bmp"
#endif #endif // Neutral resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////
// English(U.S.) resources // English (U.S) resources
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
@ -2704,7 +2717,7 @@ END
#endif // APSTUDIO_INVOKED #endif // APSTUDIO_INVOKED
#endif // English(U.S.) resources #endif // English (U.S) resources
///////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////

View File

@ -1,11 +1,10 @@
//{{NO_DEPENDENCIES}} //{{NO_DEPENDENCIES}}
// Microsoft Visual C++ 生成的包含文件。 // Microsoft Visual C++ generated file
// 供 res.rc 使用 // for res.rc
// //
#define CLOSE_BUTTON 1 #define CLOSE_BUTTON 1
#define BUTTON_CLOSE 1 #define BUTTON_CLOSE 1
#define BTN_CLOSE 1 #define BTN_CLOSE 1
#define IDB_CLOSE_LOG 1
#define MENU_OPEN_FILE 100 #define MENU_OPEN_FILE 100
#define EDIT_ROMS 100 #define EDIT_ROMS 100
#define LBL_LOG_TEXT 100 #define LBL_LOG_TEXT 100
@ -16,11 +15,9 @@
#define GRP_GAMEPAD1 100 #define GRP_GAMEPAD1 100
#define IDC_TRACER_LOG 100 #define IDC_TRACER_LOG 100
#define MENU_MV_FILE_SAVE 100 #define MENU_MV_FILE_SAVE 100
#define IDC_VIDEOCONFIG_MODE 100
#define IDC_ROMPATCHER_OFFSET_BOX 100 #define IDC_ROMPATCHER_OFFSET_BOX 100
#define IDC_ASSEMBLER_HISTORY 100 #define IDC_ASSEMBLER_HISTORY 100
#define MENU_CLOSE_FILE 101 #define MENU_CLOSE_FILE 101
#define IDI_ICON1 101
#define CB_DISABLE_SPEED_THROTTLING 101 #define CB_DISABLE_SPEED_THROTTLING 101
#define LBL_CDLOGGER_DATACOUNT 101 #define LBL_CDLOGGER_DATACOUNT 101
#define GRP_PPUVIEW_TABLES 101 #define GRP_PPUVIEW_TABLES 101
@ -34,7 +31,6 @@
#define IDC_ROMPATCHER_DOTNES_OFFSET 101 #define IDC_ROMPATCHER_DOTNES_OFFSET 101
#define IDC_NTVIEW_TABLE_BOX 101 #define IDC_NTVIEW_TABLE_BOX 101
#define IDC_ASSEMBLER_DISASSEMBLY 101 #define IDC_ASSEMBLER_DISASSEMBLY 101
#define IDI_ICON2 102
#define MENU_RECENT_FILES 102 #define MENU_RECENT_FILES 102
#define CB_LOAD_FILE_OPEN 102 #define CB_LOAD_FILE_OPEN 102
#define LBL_CDLOGGER_UNDEFCOUNT 102 #define LBL_CDLOGGER_UNDEFCOUNT 102
@ -95,7 +91,6 @@
#define IDC_TEXT_LINES_TO_THIS_WINDOW 106 #define IDC_TEXT_LINES_TO_THIS_WINDOW 106
#define BTN_PORT2 107 #define BTN_PORT2 107
#define BTN_CDLOGGER_SAVE 107 #define BTN_CDLOGGER_SAVE 107
#define IDC_CHEAT_SCRL_POSSIBILITIES 107
#define IDC_DEBUGGER_STEP_OVER 107 #define IDC_DEBUGGER_STEP_OVER 107
#define IDC_ADDBP_MEM_SPR 107 #define IDC_ADDBP_MEM_SPR 107
#define IDC_ROMPATCHER_DISASSEMBLY 107 #define IDC_ROMPATCHER_DISASSEMBLY 107
@ -109,10 +104,8 @@
#define IDC_CHEAT_VAL_GT_BY 109 #define IDC_CHEAT_VAL_GT_BY 109
#define IDC_DEBUGGER_SEEK_TO 109 #define IDC_DEBUGGER_SEEK_TO 109
#define IDC_ROMPATCHER_PATCH_DATA 109 #define IDC_ROMPATCHER_PATCH_DATA 109
#define IDC_ADDBP_MODE_X2 109
#define IDC_ADDBP_MODE_F 109 #define IDC_ADDBP_MODE_F 109
#define BTN_CDLOGGER_SAVE_UNUSED 109 #define BTN_CDLOGGER_SAVE_UNUSED 109
#define IDC_VIDEOCONFIG_43 109
#define IDC_VIDEOCONFIG_TVASPECT 109 #define IDC_VIDEOCONFIG_TVASPECT 109
#define IDC_GROUP_LOG_OPTIONS 109 #define IDC_GROUP_LOG_OPTIONS 109
#define IDC_CHEAT_VAL_LT_BY 110 #define IDC_CHEAT_VAL_LT_BY 110
@ -131,7 +124,6 @@
#define IDC_CHECK_LOG_PROCESSOR_STATUS 111 #define IDC_CHECK_LOG_PROCESSOR_STATUS 111
#define IDC_DEBUGGER_RELOAD_SYMS 111 #define IDC_DEBUGGER_RELOAD_SYMS 111
#define IDC_ROMPATCHER_BTN_SAVE 111 #define IDC_ROMPATCHER_BTN_SAVE 111
#define IDC_CHEAT_VAL2 111
#define IDC_CHEAT_COM 111 #define IDC_CHEAT_COM 111
#define IDC_VIDEOCONFIG_DIRECTDRAW_FS 111 #define IDC_VIDEOCONFIG_DIRECTDRAW_FS 111
#define BTN_AUTO_HOLD 112 #define BTN_AUTO_HOLD 112
@ -142,49 +134,36 @@
#define IDC_EXTRA_LOG_OPTIONS 113 #define IDC_EXTRA_LOG_OPTIONS 113
#define BTN_CLEAR_AH 114 #define BTN_CLEAR_AH 114
#define IDC_CHECK_LOG_NEW_INSTRUCTIONS 114 #define IDC_CHECK_LOG_NEW_INSTRUCTIONS 114
#define IDD_DIALOG1 114
#define IDC_DEBUGGER_RUN_LINE 114 #define IDC_DEBUGGER_RUN_LINE 114
#define LBL_CDLOGGER_VROMREADCOUNT 114 #define LBL_CDLOGGER_VROMREADCOUNT 114
#define LBL_AUTO_HOLD 115 #define LBL_AUTO_HOLD 115
#define IDC_CHECK_LOG_NEW_DATA 115 #define IDC_CHECK_LOG_NEW_DATA 115
#define IDD_DIALOG2 115
#define IDC_DEBUGGER_STEP_OUT3 115
#define IDC_DEBUGGER_RUN_FRAME2 115 #define IDC_DEBUGGER_RUN_FRAME2 115
#define LBL_CDLOGGER_UNDEFVROMCOUNT 115 #define LBL_CDLOGGER_UNDEFVROMCOUNT 115
#define LBL_CLEAR_AH 116 #define LBL_CLEAR_AH 116
#define IDC_CHECK_LOG_UPDATE_WINDOW 116 #define IDC_CHECK_LOG_UPDATE_WINDOW 116
#define IDC_DEBUGGER_RESET_CYCLES_COUNTER 116
#define IDC_DEBUGGER_RESET_COUNTERS 116 #define IDC_DEBUGGER_RESET_COUNTERS 116
#define CHEAT_CONTEXT_TOGGLECHEAT 117 #define CHEAT_CONTEXT_LIST_TOGGLECHEAT 117
#define IDC_DEBUGGER_RESET_ON_STEP 117
#define IDC_DEBUGGER_BREAK_ON_CYCLES 117 #define IDC_DEBUGGER_BREAK_ON_CYCLES 117
#define IDC_CHECK_LINES_TABBING 117
#define IDC_CHECK_CODE_TABBING 117 #define IDC_CHECK_CODE_TABBING 117
#define CHEAT_CONTEXT_POKECHEATVALUE 118 #define CHEAT_CONTEXT_LIST_POKECHEATVALUE 118
#define IDC_DEBUGGER_RESET_ON_BP0 118
#define IDC_CHECK_LOG_STATUSES_TO_THE_LEFT 118 #define IDC_CHECK_LOG_STATUSES_TO_THE_LEFT 118
#define IDC_DEBUGGER_BOOKMARK_DEL2 118
#define IDC_DEBUGGER_BOOKMARK_NAME 118 #define IDC_DEBUGGER_BOOKMARK_NAME 118
#define CHEAT_CONTEXT_GOTOINHEXEDITOR 119 #define CHEAT_CONTEXT_LIST_GOTOINHEXEDITOR 119
#define IDC_DEBUGGER_BREAK_ON_INSTRUCTIONS 119 #define IDC_DEBUGGER_BREAK_ON_INSTRUCTIONS 119
#define IDC_CHECK_LOG_FRAME_NUMBER 119
#define IDC_CHECK_LOG_FRAMES_COUNT 119 #define IDC_CHECK_LOG_FRAMES_COUNT 119
#define IDC_CHECK_LOG_CYCLES_COUNT 120 #define IDC_CHECK_LOG_CYCLES_COUNT 120
#define IDC_CHECK_LOG_FRAME_NUMBER3 121 #define CHEAT_CONTEXT_LIST_DELETESELECTEDCHEATS 120
#define IDC_CHECK_LOG_INSTRUCTIONS_COUNT 121 #define IDC_CHECK_LOG_INSTRUCTIONS_COUNT 121
#define COMBO_SOUND_8BIT 122 #define COMBO_SOUND_8BIT 122
#define IDD_DIALOG3 123
#define IDC_CHECK_SYMBOLIC_TRACING 123 #define IDC_CHECK_SYMBOLIC_TRACING 123
#define CHECK_SOUND_GLOBAL_FOCUS 124 #define CHECK_SOUND_GLOBAL_FOCUS 124
#define INSERTCOMMENTSUBTITLE 124
#define IDC_CHECK_LOG_MESSAGES 124 #define IDC_CHECK_LOG_MESSAGES 124
#define IDC_CHECK_LOG_BREAKPOINTS 125 #define IDC_CHECK_LOG_BREAKPOINTS 125
#define CHECK_SOUND_ENABLED 126 #define CHECK_SOUND_ENABLED 126
#define CTL_LATENCY_TRACKBAR 128 #define CTL_LATENCY_TRACKBAR 128
#define COMBO_SOUND_QUALITY 129 #define COMBO_SOUND_QUALITY 129
#define CHECK_SOUND_MUTEFA 130 #define CHECK_SOUND_MUTEFA 130
#define IDC_DISABLE_HW_ACCEL_WIN 130
#define IDC_DISABLE_HW_ACCEL_FS 131
#define DEBUGGER_CONTEXT_TOGGLEBREAK 132 #define DEBUGGER_CONTEXT_TOGGLEBREAK 132
#define MENU_RECORD_MOVIE 141 #define MENU_RECORD_MOVIE 141
#define MENU_REPLAY_MOVIE 142 #define MENU_REPLAY_MOVIE 142
@ -238,6 +217,7 @@
#define IDC_DEBUGGER_FLAG_N 200 #define IDC_DEBUGGER_FLAG_N 200
#define IDC_ADDBP_ADDR_START 200 #define IDC_ADDBP_ADDR_START 200
#define MENU_POWER 201 #define MENU_POWER 201
#define IDC_GROUPBOX_CHEATLIST 201
#define TXT_PAD2 201 #define TXT_PAD2 201
#define IDC_BUTTON_BROWSEFILE 201 #define IDC_BUTTON_BROWSEFILE 201
#define IDC_CHECK_READONLY 201 #define IDC_CHECK_READONLY 201
@ -260,6 +240,7 @@
#define IDC_ADDBP_CONDITION 202 #define IDC_ADDBP_CONDITION 202
#define IDC_ASSEMBLER_SAVE 202 #define IDC_ASSEMBLER_SAVE 202
#define IDD_TASEDITOR_NEWPROJECT 202 #define IDD_TASEDITOR_NEWPROJECT 202
#define IDC_GROUPBOX_CHEATSEARCH 202
#define MENU_SWITCH_DISK 203 #define MENU_SWITCH_DISK 203
#define IDC_NETMOO_NICK 203 #define IDC_NETMOO_NICK 203
#define IDC_CHEAT_BOX_POSSIBILITIES 203 #define IDC_CHEAT_BOX_POSSIBILITIES 203
@ -269,11 +250,10 @@
#define IDC_ASSEMBLER_UNDO 203 #define IDC_ASSEMBLER_UNDO 203
#define MENU_INSERT_COIN 204 #define MENU_INSERT_COIN 204
#define COMBO_NETMOO_LOCAL_PLAYERS 204 #define COMBO_NETMOO_LOCAL_PLAYERS 204
#define MENU_MV_EDIT_FIND_NEXT 204
#define IDC_DEBUGGER_FLAG_D 204 #define IDC_DEBUGGER_FLAG_D 204
#define IDC_GROUP_PREV_COM 204
#define IDC_NETMOO_KEY 205 #define IDC_NETMOO_KEY 205
#define IDC_DEBUGGER_FLAG_I 205 #define IDC_DEBUGGER_FLAG_I 205
#define IDB_BITMAP20 205
#define IDB_TE_GREEN_ARROW 205 #define IDB_TE_GREEN_ARROW 205
#define IDC_NETMOO_PASS 206 #define IDC_NETMOO_PASS 206
#define IDC_DEBUGGER_FLAG_Z 206 #define IDC_DEBUGGER_FLAG_Z 206
@ -365,13 +345,10 @@
#define IDD_TASEDITOR_SAVINGOPTIONS 289 #define IDD_TASEDITOR_SAVINGOPTIONS 289
#define IDD_SYMBOLIC_DEBUG_NAMING 290 #define IDD_SYMBOLIC_DEBUG_NAMING 290
#define DLG_SNESPAD 291 #define DLG_SNESPAD 291
#define IDB_PNG2 298
#define MENU_HIDE_MENU 300 #define MENU_HIDE_MENU 300
#define COMBO_FILTER 300 #define COMBO_FILTER 300
#define IDC_EDIT_AUTHORINFO 300
#define IDC_LABEL_LENGTH 300 #define IDC_LABEL_LENGTH 300
#define MENU_MV_VIEW_RAM 300 #define MENU_MV_VIEW_RAM 300
#define IDC_RADIO_SCALE 300
#define IDC_DEBUGGER_DISASSEMBLY 300 #define IDC_DEBUGGER_DISASSEMBLY 300
#define IDC_ASSEMBLER_DEFPUSHBUTTON 300 #define IDC_ASSEMBLER_DEFPUSHBUTTON 300
#define MENU_RUN_IN_BACKGROUND 301 #define MENU_RUN_IN_BACKGROUND 301
@ -379,20 +356,14 @@
#define IDC_LABEL_FRAMES 301 #define IDC_LABEL_FRAMES 301
#define IDC_BTN_CHEAT_ADD 301 #define IDC_BTN_CHEAT_ADD 301
#define MENU_MV_VIEW_PPU 301 #define MENU_MV_VIEW_PPU 301
#define IDC_RADIO_STRETCH 301
#define IDC_DEBUGGER_DISASSEMBLY_VSCR 301 #define IDC_DEBUGGER_DISASSEMBLY_VSCR 301
#define MENU_BACKGROUND_INPUT 302 #define MENU_BACKGROUND_INPUT 302
#define IDC_LABEL_UNDOCOUNT 302 #define IDC_LABEL_UNDOCOUNT 302
#define IDC_BTN_CHEAT_DEL 302 #define IDC_BTN_CHEAT_DEL 302
#define IDC_VIDEOCONFIG_XSCALE 302
#define IDC_DEBUGGER_BP_LIST 302 #define IDC_DEBUGGER_BP_LIST 302
#define MENU_MV_VIEW_OAM 302 #define MENU_MV_VIEW_OAM 302
#define MENU_MV_VIEW_ROM 303 #define MENU_MV_VIEW_ROM 303
#define MENU_SHOW_STATUS_ICON 303
#define IDC_LABEL_AUTHORINFO 303
#define IDC_BTN_CHEAT_UPD 303 #define IDC_BTN_CHEAT_UPD 303
#define IDC_VIDEOCONFIG_YSCALE 303
#define IDC_DEBUGGER_DISASSEMBLY2 303
#define IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL 303 #define IDC_DEBUGGER_DISASSEMBLY_LEFT_PANEL 303
#define MENU_ENABLE_AUTOSAVE 304 #define MENU_ENABLE_AUTOSAVE 304
#define IDC_LABEL_ROMUSED 304 #define IDC_LABEL_ROMUSED 304
@ -416,10 +387,8 @@
#define IDC_LABEL_PALUSED 309 #define IDC_LABEL_PALUSED 309
#define MENU_GAME_GENIE 310 #define MENU_GAME_GENIE 310
#define IDC_DEBUGGER_VAL_PPU 310 #define IDC_DEBUGGER_VAL_PPU 310
#define IDC_LABEL_PALUSED2 310
#define IDC_LABEL_NEWPPUUSED 310 #define IDC_LABEL_NEWPPUUSED 310
#define IDC_DEBUGGER_VAL_SPR 311 #define IDC_DEBUGGER_VAL_SPR 311
#define IDC_LABEL_TWEAKCOUNT 311
#define IDC_BTN_CHEAT_ADDFROMFILE 311 #define IDC_BTN_CHEAT_ADDFROMFILE 311
#define IDC_DEBUGGER_BOOKMARK 312 #define IDC_DEBUGGER_BOOKMARK 312
#define IDC_DEBUGGER_CYCLES_EXCEED 313 #define IDC_DEBUGGER_CYCLES_EXCEED 313
@ -430,7 +399,6 @@
#define MENU_NTSC 330 #define MENU_NTSC 330
#define MENU_PAL 331 #define MENU_PAL 331
#define MENU_DENDY 332 #define MENU_DENDY 332
#define CHECK_DISABLE_FOURSCORE 400
#define MENU_MV_BOOKMARKS_RM_ALL 400 #define MENU_MV_BOOKMARKS_RM_ALL 400
#define IDC_WINSIZE_MUL_X 400 #define IDC_WINSIZE_MUL_X 400
#define IDC_CHEAT_CHECK_NE_BY 401 #define IDC_CHEAT_CHECK_NE_BY 401
@ -442,9 +410,7 @@
#define IDC_CHEAT_CHECK_LT_BY 403 #define IDC_CHEAT_CHECK_LT_BY 403
#define IDC_FORCE_ASPECT_CORRECTION 403 #define IDC_FORCE_ASPECT_CORRECTION 403
#define IDC_DEBUGGER_VAL_S 403 #define IDC_DEBUGGER_VAL_S 403
#define IDC_VIDEOCONFIG_ASPECT_X 404
#define IDC_TVASPECT_X 404 #define IDC_TVASPECT_X 404
#define IDC_VIDEOCONFIG_ASPECT_Y 405
#define IDC_DEBUGGER_VAL_S2 405 #define IDC_DEBUGGER_VAL_S2 405
#define IDC_TVASPECT_Y 405 #define IDC_TVASPECT_Y 405
#define IDC_VIDEOCONFIG_SCALER_WIN 406 #define IDC_VIDEOCONFIG_SCALER_WIN 406
@ -464,29 +430,23 @@
#define IDC_DEBUGGER_VAL_CYCLES_COUNT 503 #define IDC_DEBUGGER_VAL_CYCLES_COUNT 503
#define CTL_VOLUME_TRACKBAR_NOISE 504 #define CTL_VOLUME_TRACKBAR_NOISE 504
#define IDC_DEBUGGER_VAL_PPUPIXEL 504 #define IDC_DEBUGGER_VAL_PPUPIXEL 504
#define IDC_SCANLINE_FIRST_NTSC2 504
#define CTL_VOLUME_TRACKBAR_NOISE2 505
#define CTL_VOLUME_TRACKBAR_PCM 505 #define CTL_VOLUME_TRACKBAR_PCM 505
#define IDC_DEBUGGER_VAL_CYCLES_COUNT2 505 #define IDC_DEBUGGER_VAL_CYCLES_COUNT2 505
#define IDC_DEBUGGER_VAL_CYCLES_COUNT3 506
#define IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT 506 #define IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT 506
#define IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT2 507 #define IDC_DEBUGGER_VAL_INSTRUCTIONS_COUNT2 507
#define IDC_VIDEOCONFIG_NO8LIM 600 #define IDC_VIDEOCONFIG_NO8LIM 600
#define IDC_DEBUGGER_ROM_PATCHER 602 #define IDC_DEBUGGER_ROM_PATCHER 602
#define LIST_DEBUGGER_BOOKMARKS 701 #define LIST_DEBUGGER_BOOKMARKS 701
#define BTN_CANCEL 800 #define BTN_CANCEL 800
#define IDC_EDIT_OFFSET 1000
#define IDC_GAME_GENIE_CODE 1000 #define IDC_GAME_GENIE_CODE 1000
#define IDC_MEMVIEWFIND_WHAT 1000 #define IDC_MEMVIEWFIND_WHAT 1000
#define IDC_BOOKMARK_DESCRIPTION 1000 #define IDC_BOOKMARK_DESCRIPTION 1000
#define MW_ADDR00 1001 #define MW_ADDR00 1001
#define IDC_EDIT_FROM 1001
#define IDC_GAME_GENIE_ADDR 1001 #define IDC_GAME_GENIE_ADDR 1001
#define IDC_MEMVIEWFIND_TYPE_HEX 1001 #define IDC_MEMVIEWFIND_TYPE_HEX 1001
#define IDC_NTVIEW_MIRROR_HORIZONTAL 1001 #define IDC_NTVIEW_MIRROR_HORIZONTAL 1001
#define IDC_CHECK_STOPMOVIE 1002 #define IDC_CHECK_STOPMOVIE 1002
#define IDC_GAME_GENIE_COMP 1002 #define IDC_GAME_GENIE_COMP 1002
#define IDC_TRACER_STATS 1002
#define IDC_MEMVIEWFIND_TYPE_TEXT 1002 #define IDC_MEMVIEWFIND_TYPE_TEXT 1002
#define IDC_NTVIEW_MIRROR_VERTICAL 1002 #define IDC_NTVIEW_MIRROR_VERTICAL 1002
#define LV_MAPPING 1003 #define LV_MAPPING 1003
@ -512,7 +472,6 @@
#define MW_ADDR05 1016 #define MW_ADDR05 1016
#define MW_ADDR06 1019 #define MW_ADDR06 1019
#define MW_ADDR07 1022 #define MW_ADDR07 1022
#define GUI_BOT_BOTMODE 1025
#define MW_ADDR08 1025 #define MW_ADDR08 1025
#define MW_ADDR09 1028 #define MW_ADDR09 1028
#define MW_ADDR10 1031 #define MW_ADDR10 1031
@ -529,7 +488,6 @@
#define MW_ADDR21 1064 #define MW_ADDR21 1064
#define MW_ADDR22 1067 #define MW_ADDR22 1067
#define MW_ADDR23 1070 #define MW_ADDR23 1070
#define GUI_BOT_PART_LAST 1090
#define BTN_ALLOW_LRUD 1117 #define BTN_ALLOW_LRUD 1117
#define BTN_PRESET_SET1 1119 #define BTN_PRESET_SET1 1119
#define BTN_PRESET_SET2 1120 #define BTN_PRESET_SET2 1120
@ -541,48 +499,36 @@
#define BTN_PRESET_EXPORT2 1126 #define BTN_PRESET_EXPORT2 1126
#define BTN_PRESET_EXPORT3 1127 #define BTN_PRESET_EXPORT3 1127
#define IDC_LIST1 1130 #define IDC_LIST1 1130
#define IDC_HACKY2 1131
#define IDC_HACKY1 1132
#define IDC_BUTTON_METADATA 1132 #define IDC_BUTTON_METADATA 1132
#define IDC_HACKYEXPORT 1133
#define IDC_BUTTON1 1133
#define MEMW_EXPANDCOLLAPSE 1133 #define MEMW_EXPANDCOLLAPSE 1133
#define IDC_SOUND_RESTOREDEFAULTVOL 1133 #define IDC_SOUND_RESTOREDEFAULTVOL 1133
#define TASEDITOR_REWIND 1133 #define TASEDITOR_REWIND 1133
#define IDC_BUTTON2 1134
#define TASEDITOR_FORWARD 1134 #define TASEDITOR_FORWARD 1134
#define IDC_BUTTON3 1135
#define TASEDITOR_REWIND_FULL 1135 #define TASEDITOR_REWIND_FULL 1135
#define IDC_BUTTON4 1136
#define TASEDITOR_FORWARD_FULL 1136 #define TASEDITOR_FORWARD_FULL 1136
#define TASEDITOR_PLAYSTOP 1137 #define TASEDITOR_PLAYSTOP 1137
#define IDC_RADIO1 1138 #define IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES 1138
#define IDC_RADIO_UP 1138 #define IDC_RADIO_UP 1138
#define IDC_RADIO2 1139
#define IDC_RADIO_ALL 1139 #define IDC_RADIO_ALL 1139
#define IDC_RADIO3 1140 #define IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME 1139
#define IDC_RADIO_1P 1140 #define IDC_RADIO_1P 1140
#define IDC_RADIO4 1141 #define IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES 1140
#define IDC_RADIO_2P 1141 #define IDC_RADIO_2P 1141
#define IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE 1141
#define MEMW_EDIT00FORMULA 1142 #define MEMW_EDIT00FORMULA 1142
#define IDC_RADIO5 1142
#define IDC_RADIO_3P 1142 #define IDC_RADIO_3P 1142
#define MEMW_EDIT01FORMULA 1143 #define MEMW_EDIT01FORMULA 1143
#define IDC_RADIO6 1143
#define IDC_RADIO_4P 1143 #define IDC_RADIO_4P 1143
#define IDC_PROGRESS_BUTTON 1144 #define IDC_PROGRESS_BUTTON 1144
#define MEMW_EDIT02FORMULA 1144 #define MEMW_EDIT02FORMULA 1144
#define IDC_BUTTON7 1145
#define MEMW_EDIT03FORMULA 1145 #define MEMW_EDIT03FORMULA 1145
#define TASEDITOR_PREV_MARKER 1145 #define TASEDITOR_PREV_MARKER 1145
#define IDC_BUTTON8 1146
#define TASEDITOR_FIND_BEST_SIMILAR_MARKER 1146 #define TASEDITOR_FIND_BEST_SIMILAR_MARKER 1146
#define IDC_EDIT1 1147
#define IDC_SELECTION_MARKER_EDIT 1147 #define IDC_SELECTION_MARKER_EDIT 1147
#define IDC_NOTE_TO_FIND 1147 #define IDC_NOTE_TO_FIND 1147
#define IDC_AUTOSAVE_PERIOD 1147 #define IDC_AUTOSAVE_PERIOD 1147
#define IDC_EXTRA_SCANLINES 1147 #define IDC_EXTRA_SCANLINES 1147
#define IDC_BUTTON9 1148 #define IDC_CHEAT_TEXT 1147
#define TASEDITOR_FIND_NEXT_SIMILAR_MARKER 1148 #define TASEDITOR_FIND_NEXT_SIMILAR_MARKER 1148
#define IDC_SYMBOLIC_ADDRESS 1148 #define IDC_SYMBOLIC_ADDRESS 1148
#define IDC_VBLANK_SCANLINES 1148 #define IDC_VBLANK_SCANLINES 1148
@ -593,15 +539,10 @@
#define TASEDITOR_NEXT_MARKER 1151 #define TASEDITOR_NEXT_MARKER 1151
#define IDC_SYMBOLIC_COMMENT 1151 #define IDC_SYMBOLIC_COMMENT 1151
#define IDC_BRANCHES_BUTTON 1152 #define IDC_BRANCHES_BUTTON 1152
#define IDC_JUMP_PLAYBACK_BUTTON 1153
#define IDC_EDIT2 1154
#define IDC_PLAYBACK_MARKER_EDIT 1154 #define IDC_PLAYBACK_MARKER_EDIT 1154
#define IDC_JUMP_SELECTION_BUTTON 1155
#define TASEDITOR_RUN_MANUAL 1156 #define TASEDITOR_RUN_MANUAL 1156
#define CHECK_SOUND_MUTETURBO 1179 #define CHECK_SOUND_MUTETURBO 1179
#define IDC_EDIT_AUTHOR 1180 #define IDC_EDIT_AUTHOR 1180
#define MEMW_STATIC 1181
#define MEMW_RESULTS 1184
#define MEMW_EDIT00RESET 1184 #define MEMW_EDIT00RESET 1184
#define MEMW_EDIT01RESET 1185 #define MEMW_EDIT01RESET 1185
#define MEMW_EDIT02RESET 1186 #define MEMW_EDIT02RESET 1186
@ -611,24 +552,19 @@
#define MEMW_EDIT02RMADDRESS 1190 #define MEMW_EDIT02RMADDRESS 1190
#define MEMW_EDIT03RMADDRESS 1191 #define MEMW_EDIT03RMADDRESS 1191
#define IDC_DEBUGGER_RESTORESIZE 1191 #define IDC_DEBUGGER_RESTORESIZE 1191
#define MEMW_EDIT04RMADDRESS 1192
#define IDC_MOVIE_CLOSE 1192 #define IDC_MOVIE_CLOSE 1192
#define EDIT00_RESULTS 1193 #define EDIT00_RESULTS 1193
#define IDC_MOVIE_PAUSEAFTERPLAYBACK 1193 #define IDC_MOVIE_PAUSEAFTERPLAYBACK 1193
#define EDIT01_RESULTS 1194 #define EDIT01_RESULTS 1194
#define IDC_MOVIE_BINDSAVESTATES 1194 #define IDC_MOVIE_BINDSAVESTATES 1194
#define EDIT02_RESULTS 1195 #define EDIT02_RESULTS 1195
#define IDC_MOVIE_DISPLAYSTATUSICON 1195
#define EDIT03_RESULTS 1196 #define EDIT03_RESULTS 1196
#define IDC_MOVIE_DISPLAYSUBTITLES 1196 #define IDC_MOVIE_DISPLAYSUBTITLES 1196
#define IDC_MOVIE_SUBTITLESINAVI 1197 #define IDC_MOVIE_SUBTITLESINAVI 1197
#define IDC_MOVIE_AUTOBACKUP 1198 #define IDC_MOVIE_AUTOBACKUP 1198
#define IDC_SOUNDS_RESTOREDEFAULTS 1199
#define BTN_CANCELED 1200
#define ID_SOUND_TRITOP 1201 #define ID_SOUND_TRITOP 1201
#define IDC_MOVIE_SUGGEST_READONLY 1201 #define IDC_MOVIE_SUGGEST_READONLY 1201
#define ID_SOUND_QUALITYNOTIFY 1202 #define ID_SOUND_QUALITYNOTIFY 1202
#define IDC_CHECK1 1203
#define CB_ENABLECONTEXTMENU 1203 #define CB_ENABLECONTEXTMENU 1203
#define DEBUGAUTOLOAD 1203 #define DEBUGAUTOLOAD 1203
#define IDC_CHEAT_PAUSEWHENACTIVE 1203 #define IDC_CHEAT_PAUSEWHENACTIVE 1203
@ -645,36 +581,24 @@
#define CHECK_DEEMPH_SWAP 1203 #define CHECK_DEEMPH_SWAP 1203
#define IDC_CHECK_LOG_BANK_NUMBER 1203 #define IDC_CHECK_LOG_BANK_NUMBER 1203
#define IDC_VOLUMEGROUP 1204 #define IDC_VOLUMEGROUP 1204
#define IDC_OMITBLANK 1204
#define IDC_CHECK3 1204
#define IDC_CHECK_MARKERS 1204 #define IDC_CHECK_MARKERS 1204
#define IDC_RECORDING 1204 #define IDC_RECORDING 1204
#define IDC_COPY_MARKERS 1204 #define IDC_COPY_MARKERS 1204
#define IDC_AUTORESUMECDLOGGING2 1204
#define IDC_AUTOSAVECDL 1204 #define IDC_AUTOSAVECDL 1204
#define IDC_INVERT_THE_MASK 1204 #define IDC_INVERT_THE_MASK 1204
#define IDC_DEBUGGER_PREDEFINEDREGS 1204
#define IDC_DEBUGGER_PREDEFINED_REGS 1204 #define IDC_DEBUGGER_PREDEFINED_REGS 1204
#define IDC_RAMLIST 1205 #define IDC_RAMLIST 1205
#define IDC_CHECK4 1205
#define IDC_CHECK_BOOKMARKS 1205 #define IDC_CHECK_BOOKMARKS 1205
#define IDC_SUPERIMPOSE2 1205
#define IDC_RUN_AUTO 1205 #define IDC_RUN_AUTO 1205
#define IDC_AUTOLOADCDL 1205 #define IDC_AUTOLOADCDL 1205
#define IDC_INVERT_THE_MASK2 1205
#define IDC_SPRITE16_MODE 1205 #define IDC_SPRITE16_MODE 1205
#define IDC_C_SEARCH 1206 #define IDC_C_SEARCH 1206
#define IDC_CHECK5 1206
#define IDC_CHECK_GREENZONE 1206
#define IDC_USEPATTERN 1206 #define IDC_USEPATTERN 1206
#define IDC_C_ADDCHEAT 1207 #define IDC_C_ADDCHEAT 1207
#define IDC_CHECK6 1207
#define IDC_CHECK_HISTORY 1207 #define IDC_CHECK_HISTORY 1207
#define IDC_C_WATCH 1208 #define IDC_C_WATCH 1208
#define IDC_CHECK7 1208
#define IDC_CHECK_SELECTION 1208 #define IDC_CHECK_SELECTION 1208
#define IDC_C_RESET 1209 #define IDC_C_RESET 1209
#define IDC_CHECK8 1209
#define IDC_CHECK_PIANO_ROLL 1209 #define IDC_CHECK_PIANO_ROLL 1209
#define IDC_C_ELIMINATE 1210 #define IDC_C_ELIMINATE 1210
#define IDC_LESSTHAN 1211 #define IDC_LESSTHAN 1211
@ -705,18 +629,14 @@
#define IDC_C_RESET_CHANGES 1236 #define IDC_C_RESET_CHANGES 1236
#define IDC_C_UNDO 1237 #define IDC_C_UNDO 1237
#define IDC_WATCHLIST 1238 #define IDC_WATCHLIST 1238
#define IDC_C_ELIMINATE2 1238
#define IDC_C_HEXEDITOR 1238 #define IDC_C_HEXEDITOR 1238
#define IDC_C_WATCH_EDIT 1239 #define IDC_C_WATCH_EDIT 1239
#define IDC_C_WATCH_REMOVE 1240 #define IDC_C_WATCH_REMOVE 1240
#define IDC_C_WATCH_DUPLICATE 1241 #define IDC_C_WATCH_DUPLICATE 1241
#define ID_WATCHES_UPDOWN 1242 #define ID_WATCHES_UPDOWN 1242
#define IDC_C_WATCH_UP 1243 #define IDC_C_WATCH_UP 1243
#define IDC_C_WATCH_DUPLICATE2 1243
#define IDC_C_WATCH_Separator 1243
#define IDC_C_WATCH_DOWN 1244 #define IDC_C_WATCH_DOWN 1244
#define IDC_PROMPT_TEXT 1245 #define IDC_PROMPT_TEXT 1245
#define IDC_PROMPT_TEXT2 1246
#define IDC_PROMPT_EDIT 1247 #define IDC_PROMPT_EDIT 1247
#define IDC_BUTTON_LUABROWSE 1248 #define IDC_BUTTON_LUABROWSE 1248
#define IDC_BUTTON_LUARUN 1249 #define IDC_BUTTON_LUARUN 1249
@ -733,26 +653,20 @@
#define IDC_SINGLEINSTANCE 1258 #define IDC_SINGLEINSTANCE 1258
#define IDC_MOVIE_CLOSEAFTERPLAYBACK 1258 #define IDC_MOVIE_CLOSEAFTERPLAYBACK 1258
#define IDC_C_WATCH_SEPARATE 1259 #define IDC_C_WATCH_SEPARATE 1259
#define IDC_TWEAKCOUNT 1260
#define CHECK_AUTORESTORE_PLAYBACK 1261 #define CHECK_AUTORESTORE_PLAYBACK 1261
#define CB_FS_BY_DOUBLECLICK 1261 #define CB_FS_BY_DOUBLECLICK 1261
#define IDC_PROGRESS1 1262 #define IDC_PROGRESS1 1262
#define CHECK_FOLLOW_CURSOR 1263 #define CHECK_FOLLOW_CURSOR 1263
#define IDC_BOOKMARKS_BOX 1264 #define IDC_BOOKMARKS_BOX 1264
#define IDC_BRANCHES_BITMAP 1265 #define IDC_BRANCHES_BITMAP 1265
#define IDC_SCREENSHOT_BITMAP 1266
#define CHECK_TURBO_SEEK 1266 #define CHECK_TURBO_SEEK 1266
#define IDC_TEXT_SELECTION 1267 #define IDC_TEXT_SELECTION 1267
#define IDC_TEXT_CLIPBOARD 1268 #define IDC_TEXT_CLIPBOARD 1268
#define IDC_RADIO_1PLAYER 1269 #define IDC_RADIO_1PLAYER 1269
#define IDC_TEXT_SELECTION2 1269
#define CHECK_AUTOADJUSTINPUTDUETOLAG 1269
#define IDC_RADIO_2PLAYERS 1270 #define IDC_RADIO_2PLAYERS 1270
#define IDC_PLAYBACK_MARKER 1270 #define IDC_PLAYBACK_MARKER 1270
#define IDC_RADIO_FOURSCORE 1271 #define IDC_RADIO_FOURSCORE 1271
#define IDC_SELECTION_MARKER 1271 #define IDC_SELECTION_MARKER 1271
#define IDC_NOTE_TOOLTIP_EDIT 1272
#define IDC_SELECTION_MARKER2 1272
#define IDC_RADIO_DOWN 1273 #define IDC_RADIO_DOWN 1273
#define IDC_PLAYBACK_BOX 1275 #define IDC_PLAYBACK_BOX 1275
#define IDC_RECORDER_BOX 1276 #define IDC_RECORDER_BOX 1276
@ -767,8 +681,6 @@
#define ID_CHR2 1284 #define ID_CHR2 1284
#define ID_CHR3 1285 #define ID_CHR3 1285
#define ID_STATIC 1286 #define ID_STATIC 1286
#define ID_CDL_OPTIONS 1287
#define ID_CDL_GENERATEROM 1288
#define CTL_PALSAT_TRACKBAR 1291 #define CTL_PALSAT_TRACKBAR 1291
#define CB_SKIP_7BIT 1293 #define CB_SKIP_7BIT 1293
#define STATIC_SATVALUE 1294 #define STATIC_SATVALUE 1294
@ -780,9 +692,6 @@
#define STATIC_CONTRASTVALUE 1300 #define STATIC_CONTRASTVALUE 1300
#define CTL_PALBRIGHT_TRACKBAR 1301 #define CTL_PALBRIGHT_TRACKBAR 1301
#define STATIC_BRIGHTVALUE 1302 #define STATIC_BRIGHTVALUE 1302
#define IDC_RICHEDIT21 1304
#define IDC_RICHEDIT_DISASM 1304
#define IDC_CHECK2 1305
#define DEBUGIDAFONT 1305 #define DEBUGIDAFONT 1305
#define IDC_AUTOSAVE_PERIOD_EVERY_TEXT 1306 #define IDC_AUTOSAVE_PERIOD_EVERY_TEXT 1306
#define IDC_AUTOSAVE_PERIOD_MINUTES_TEXT 1307 #define IDC_AUTOSAVE_PERIOD_MINUTES_TEXT 1307
@ -790,6 +699,11 @@
#define IDC_EXTRA_SCANLINES_TEXT 1309 #define IDC_EXTRA_SCANLINES_TEXT 1309
#define IDC_DATASIZE_GROUPBOX 1310 #define IDC_DATASIZE_GROUPBOX 1310
#define IDC_DATATYPE_GROUPBOX 1311 #define IDC_DATATYPE_GROUPBOX 1311
#define IDC_CHEAT_CODE_GG_LABEL 1312
#define IDC_CHEAT_ADDRESS_LABEL 1313
#define IDC_CHEAT_VAL_LABEL 1314
#define IDC_CHEAT_COM_LABEL 1315
#define IDC_CHEAT_LABEL_KNOWN 1316
#define MENU_NETWORK 40040 #define MENU_NETWORK 40040
#define MENU_PALETTE 40041 #define MENU_PALETTE 40041
#define MENU_SOUND 40042 #define MENU_SOUND 40042
@ -799,7 +713,6 @@
#define MENU_ABOUT 40046 #define MENU_ABOUT 40046
#define MENU_MSGLOG 40047 #define MENU_MSGLOG 40047
#define MENU_CHEATS 40048 #define MENU_CHEATS 40048
#define MENU_BASIC_BOT 40049
#define MENU_AUTOFIRE_PATTERN_1 40050 #define MENU_AUTOFIRE_PATTERN_1 40050
#define MENU_AUTOFIRE_PATTERN_2 40051 #define MENU_AUTOFIRE_PATTERN_2 40051
#define MENU_AUTOFIRE_PATTERN_3 40052 #define MENU_AUTOFIRE_PATTERN_3 40052
@ -829,7 +742,6 @@
#define MENU_AUTOFIRE_OFFSET_5 40069 #define MENU_AUTOFIRE_OFFSET_5 40069
#define MENU_AUTOFIRE_OFFSET_6 40070 #define MENU_AUTOFIRE_OFFSET_6 40070
#define MENU_ALTERNATE_AB 40071 #define MENU_ALTERNATE_AB 40071
#define MENU_EXTERNAL_INPUT 40072
#define MENU_PPUVIEWER 40074 #define MENU_PPUVIEWER 40074
#define MENU_NAMETABLEVIEWER 40075 #define MENU_NAMETABLEVIEWER 40075
#define MENU_HEXEDITOR 40076 #define MENU_HEXEDITOR 40076
@ -838,7 +750,6 @@
#define MENU_GAMEGENIEDECODER 40079 #define MENU_GAMEGENIEDECODER 40079
#define MENU_DEBUGGER 40080 #define MENU_DEBUGGER 40080
#define MENU_MEMORY_WATCH 40081 #define MENU_MEMORY_WATCH 40081
#define MENU_RAMFILTER 40082
#define ID_FILE_RECENT 40100 #define ID_FILE_RECENT 40100
#define MEMW_HELP_WCOMMANDS 40101 #define MEMW_HELP_WCOMMANDS 40101
#define MEMW_OPTIONS_LOADLASTFILE 40102 #define MEMW_OPTIONS_LOADLASTFILE 40102
@ -846,71 +757,33 @@
#define MEMW_FILE_OPEN 40104 #define MEMW_FILE_OPEN 40104
#define MEMW_FILE_SAVE 40105 #define MEMW_FILE_SAVE 40105
#define MEMW_FILE_SAVEAS 40106 #define MEMW_FILE_SAVEAS 40106
#define MEMW_FILE_RECENT 40107
#define MEMW_FILE_CLOSE 40108 #define MEMW_FILE_CLOSE 40108
#define MEMW_OPTIONS_LOADSTART 40109 #define MEMW_OPTIONS_LOADSTART 40109
#define ID_FILE_RECORDMODE_TRUNCATE 40110 #define ID_FILE_RECORDMODE_TRUNCATE 40110
#define ID_FILE_RECORDMODE_OVERWRITE 40111 #define ID_FILE_RECORDMODE_OVERWRITE 40111
#define ID_FILE_RECORDMODE_INSERT 40112 #define ID_FILE_RECORDMODE_INSERT 40112
#define ID_FILE_RECORDMODE_XOR 40113
#define FCEUX_CONTEXT_RECORDMODE_TRUNCATE 40115 #define FCEUX_CONTEXT_RECORDMODE_TRUNCATE 40115
#define FCEUX_CONTEXT_RECORDMODE_OVERWRITE 40116 #define FCEUX_CONTEXT_RECORDMODE_OVERWRITE 40116
#define FCEUX_CONTEXT_RECORDMODE_INSERT 40117 #define FCEUX_CONTEXT_RECORDMODE_INSERT 40117
#define FCEUX_CONTEXT_RECORDMODE_XOR 40118
#define MENU_RECORD_WAV 40120 #define MENU_RECORD_WAV 40120
#define MENU_STOP_WAV 40121 #define MENU_STOP_WAV 40121
#define MENU_TASEDIT 40124
#define MENU_PAUSEAFTERPLAYBACK 40126
#define ID_FILE_NEXTRECORDMODE 40127 #define ID_FILE_NEXTRECORDMODE 40127
#define ID_FILE_PREVRECORDMODE 40128 #define ID_FILE_PREVRECORDMODE 40128
#define ACCEL_CTRL_O 40130 #define ACCEL_CTRL_O 40130
#define ACCEL_CTRL_E 40131
#define ACCEL_CTRL_W 40132 #define ACCEL_CTRL_W 40132
#define ACCEL_CTRL_S 40134 #define ACCEL_CTRL_S 40134
#define ACCEL_CTRL_SHIFT_S 40135 #define ACCEL_CTRL_SHIFT_S 40135
#define ACCEL_CTRL_N 40136 #define ACCEL_CTRL_N 40136
#define ACCEL_CTRL_C 40138 #define ACCEL_CTRL_C 40138
#define MENU_HELP 40140 #define MENU_HELP 40140
#define ID_FILE_OOADFM2 40141
#define ID_FILE_OPENFM2 40142
#define ID_FILE_SAVEFM2 40143
#define ID_TWEAKS_DISPLAYBG 40144
#define ID_TWEAKS_DISPLAYOBJ 40145
#define ID_ 40146
#define MENU_DISPLAY_BG 40147 #define MENU_DISPLAY_BG 40147
#define MENU_DISPLAY_OBJ 40148 #define MENU_DISPLAY_OBJ 40148
#define ID_FILE_CONVERTMOVIE 40149
#define MENU_CONVERT_MOVIE 40150 #define MENU_CONVERT_MOVIE 40150
#define ID_STRAY_INSERTFRAMES 40151
#define MENU_INSERTFRAMES 40152
#define ID_SELECTED_INSERTFRAME 40153
#define ID_SELECTED_DELETEFRAME 40154
#define MENU_DELETEFRAME 40155
#define MENU_DELETEFRAMES 40156
#define MENU_STRAY_INSERTFRAMES 40157
#define ID_TOOLS_TEXTHOOKER 40158 #define ID_TOOLS_TEXTHOOKER 40158
#define ID_Menu 40159
#define ID_STRAY_TRUNCATE 40160
#define ID_SELECTED_BRANCH 40161
#define ID_SELECTED_INSERTMARKER 40162
#define ID_SELECTED_CREATEMACRO 40163
#define ID_EDIT 40164
#define ID_EDIT_COPY40165 40165
#define ID_EDIT_PASTE40166 40166
#define ID_EDIT_CUT40167 40167
#define ID_EDIT_COPYTONEW 40168
#define ID_EDIT_DELETE 40169 #define ID_EDIT_DELETE 40169
#define ID_HELP_TASEDITHELP 40170
#define ID_FILE_NEWPROJECTCTRL 40171
#define ID_FILE_SAVEPROJECT 40172 #define ID_FILE_SAVEPROJECT 40172
#define ID_FILE_SAVEAS 40173
#define ID_FILE_CLOSECTRL 40174
#define ID_Menu40175 40175
#define ID_Menu40176 40176
#define ID_EDIT_TRUNCATE 40177 #define ID_EDIT_TRUNCATE 40177
#define ID_FILE_IMPORT 40178 #define ID_FILE_IMPORT 40178
#define ID_FILE_NEWPROJECT 40179
#define ID_FILE_OPEN_PROJECT 40180
#define ID_FILE_OPENPROJECT 40181 #define ID_FILE_OPENPROJECT 40181
#define ID_FILE_SAVEPROJECTAS 40182 #define ID_FILE_SAVEPROJECTAS 40182
#define ID_FILE_EXPORTFM2 40183 #define ID_FILE_EXPORTFM2 40183
@ -918,27 +791,13 @@
#define ACCEL_CTRL_V 40195 #define ACCEL_CTRL_V 40195
#define ACCEL_CTRL_SHIFT_V 40196 #define ACCEL_CTRL_SHIFT_V 40196
#define ACCEL_CTRL_DELETE 40197 #define ACCEL_CTRL_DELETE 40197
#define ID_ACCEL_CTRL_T 40198
#define ACCEL_CTRL_T 40198
#define ACCEL_CTRL_B 40199 #define ACCEL_CTRL_B 40199
#define ID_CONTEXT_SELECTED_TRUNCATE 40200 #define ID_CONTEXT_SELECTED_TRUNCATE 40200
#define ID_CONTEXT_STRAY_TRUNCATE 40201
#define ID_VIEW 40202
#define MENU_CONTEXT_STRAY_INSERTFRAMES 40203
#define ID_CONTEXT_SELECTED_INSERTFRAMES 40204 #define ID_CONTEXT_SELECTED_INSERTFRAMES 40204
#define ID_CONTEXT_SELECTED_DELETEFRAMES 40205 #define ID_CONTEXT_SELECTED_DELETEFRAMES 40205
#define ID_SELECTED_REMOVEMARKER 40206
#define ID_CONTEXT_SELECTED_PASTETONEW 40207
#define ID_CONTEXT_SELECTED_BRANCH 40210
#define ID_EDIT_BRANCHCTRL 40211
#define ID_EDIT_BRANCH 40212
#define ID_EDIT_SELECTALL 40214 #define ID_EDIT_SELECTALL 40214
#define ID_EDIT_REMOVEMARKER 40215
#define ID_FILE_CLOSECTRL40216 40216
#define ID_MEMWVIEW_FILE_CLOSE 40217 #define ID_MEMWVIEW_FILE_CLOSE 40217
#define ID_FILE_CLOSE40218 40218
#define MENU_MV_FILE_GOTO_ADDRESS 40219 #define MENU_MV_FILE_GOTO_ADDRESS 40219
#define MENU_BASIC_BOT2 40220
#define ID_FILE_TRUNCATE_MOVIE 40221 #define ID_FILE_TRUNCATE_MOVIE 40221
#define FCEUX_CONTEXT_TRUNCATE_MOVIE 40222 #define FCEUX_CONTEXT_TRUNCATE_MOVIE 40222
#define ID_FILE_INSERT_1_FRAME 40223 #define ID_FILE_INSERT_1_FRAME 40223
@ -947,140 +806,54 @@
#define FCEUX_CONTEXT_DELETE_1_FRAME 40226 #define FCEUX_CONTEXT_DELETE_1_FRAME 40226
#define ID_FILE_OPENLUAWINDOW 40229 #define ID_FILE_OPENLUAWINDOW 40229
#define ID_FILE_CLOSELUAWINDOWS 40230 #define ID_FILE_CLOSELUAWINDOWS 40230
#define ID_CONFIG_DISPLAY 40231
#define ID_DISPLAY_INPUTDISPLAY 40232
#define ID_DISPLAY_LAGCOUNTER 40233
#define FCUE_DISPLAY_INPUTDISPLAY 40234
#define FCEU_DISPLAY_LAGCOUNTER 40235
#define MENU_DISPLAY_INPUTDISPLAY 40236
#define MENU_DISPLAY_LAGCOUNTER 40237 #define MENU_DISPLAY_LAGCOUNTER 40237
#define ID_DISPLAY_FRAMEADV 40238
#define MENU_DISPLAY_FA_LAGSKIP 40239 #define MENU_DISPLAY_FA_LAGSKIP 40239
#define ID_DISPLAY_INPUTDISPLAY40240 40240
#define ID_LAGCOUNTER_OFF 40241
#define ID_LAGCOUNTER_1PLAYER 40242
#define ID_LAGCOUNTER_2PLAYER 40243
#define ID_LAGCOUNTER_4PLAYER 40244
#define ID_DISPLAY_LAGCOUNTER40245 40245
#define MENU_INPUTDISPLAY_OFF 40246
#define MENU_INPUTDISPLAY_1P 40247
#define MENU_INPUTDISPLAY_2P 40248
#define MENU_INPUTDISPLAY_4P 40249
#define MENU_INPUTDISPLAY_0 40250 #define MENU_INPUTDISPLAY_0 40250
#define MENU_INPUTDISPLAY_1 40251 #define MENU_INPUTDISPLAY_1 40251
#define MENU_INPUTDISPLAY_2 40252 #define MENU_INPUTDISPLAY_2 40252
#define MENU_INPUTDISPLAY_4 40253 #define MENU_INPUTDISPLAY_4 40253
#define ID_DISPLAY_FRAMECOUNTER 40254 #define ID_DISPLAY_FRAMECOUNTER 40254
#define ID_CONFIG_BINDSAVESTATESTOMOVIE 40255
#define MENU_CONFIG_BINDSAVES 40256 #define MENU_CONFIG_BINDSAVES 40256
#define MEMVIEW_HELP 40257
#define MENU_MV_HELP 40258 #define MENU_MV_HELP 40258
#define ID_DISPLAY_MOVESUBTITLES 40259
#define ID_DISPLAY_MOVIESUBTITLES 40260
#define ID_DISPLAY_MOVIESUBTITLESINAVI 40261
#define ID_DISPLAY_MOVIESUBTITLES_AVI 40262
#define ID_NES_PAUSE 40263 #define ID_NES_PAUSE 40263
#define ID_NES_FRAMEADVANCE 40264
#define ID_NES_SPEEDUP 40265 #define ID_NES_SPEEDUP 40265
#define ID_NES_SLOWDOWN 40266 #define ID_NES_SLOWDOWN 40266
#define ID_NES_FASTESTSPEED 40267
#define ID_NES_NORMALSPEED 40268 #define ID_NES_NORMALSPEED 40268
#define ID_NES_TURBO 40269 #define ID_NES_TURBO 40269
#define ID_NES_SLOWESTSPEED 40270 #define ID_NES_SLOWESTSPEED 40270
#define ID_NES_EMULATIONSPEED 40271
#define ID_FILE_SCREENSHOT 40272 #define ID_FILE_SCREENSHOT 40272
#define ID_FILE_RESTARTMOVIE 40273
#define ID_FILE_PLAYMOVIEFROMBEGINNING 40274 #define ID_FILE_PLAYMOVIEFROMBEGINNING 40274
#define ID_GAME_INSERTSUBTITLE 40275
#define ID_GAME_INSERTCOMMENT 40276
#define ID_GAME_HELP 40277
#define ID_GAME_REPLAYMOVIE 40278
#define ID_GAME_HELP40279 40279
#define FCEU_CONTEXT_INSERTSUBTITLE 40280
#define FCEU_CONTEXT_MOVIEHELP 40281 #define FCEU_CONTEXT_MOVIEHELP 40281
#define FCEUX_CONTEXT_REPLAYMOVIE 40282 #define FCEUX_CONTEXT_REPLAYMOVIE 40282
#define FCEU_CONTEXT_ROMHELP 40283
#define ID_NOGAME_OPENROM 40284
#define ID_NOGAME_HELP 40285
#define FCEU_CONTEXT_OPENROM 40286 #define FCEU_CONTEXT_OPENROM 40286
#define FCEU_CONTEXT_FCEUHELP 40287 #define FCEU_CONTEXT_FCEUHELP 40287
#define FCEU_CONTEXT_INSERTCOMMENT 40288
#define ID_FILE_MOVIE 40289
#define ID_FILE_RECORDAVI 40290
#define ID_FILE_LUA 40291
#define ID_NES_EMULATION 40292
#define ID_GAME_PLAYMOVIEFROMBEGINNING 40293
#define ID_GAME_STOPMOVIE 40294
#define FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING 40295 #define FCEU_CONTEXT_PLAYMOVIEFROMBEGINNING 40295
#define FCEU_CONTEXT_STOPMOVIE 40296 #define FCEU_CONTEXT_STOPMOVIE 40296
#define ID_GAME_CLOSEROM 40297
#define FCEU_CONTEXT_CLOSEROM 40298 #define FCEU_CONTEXT_CLOSEROM 40298
#define ID_GAME_PLAYMOVIEFROMBEGINNING40299 40299
#define ID_GAME_STOPMOVIERECORDING 40300
#define ID_GAME_HELP40301 40301
#define ID_GAME_RECORDMOVIE 40302
#define FCEUX_CONTEXT_RECORDMOVIE 40303 #define FCEUX_CONTEXT_RECORDMOVIE 40303
#define ID_GAME_SCREENSHOT 40304
#define FCEUX_CONTEXT_SCREENSHOT 40305 #define FCEUX_CONTEXT_SCREENSHOT 40305
#define ID_GAME_REWINDTOLASTAUTO 40306
#define FCEUX_CONTEXT_REWINDTOLASTAUTO 40307 #define FCEUX_CONTEXT_REWINDTOLASTAUTO 40307
#define ID_GAME_REWINDTOLASTAUTO40308 40308
#define ID_GAME_REWINDTOLASTAUTO40309 40309
#define ID_GAME_VIEWCOMMENTSSUBTITLES 40310
#define FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES 40311 #define FCEUX_CONTEXT_VIEWCOMMENTSSUBTITLES 40311
#define ID_GAME_VIEWCOMMENTSSUBTITLES40312 40312
#define ID_OPTIONS_COLLAPSETO1COLUMN 40313
#define MEMW_OPTIONS_EXPANDCOLLAPSE 40314 #define MEMW_OPTIONS_EXPANDCOLLAPSE 40314
#define ID_GAME_UNDOLOADSTATE 40315
#define FCEUX_CONTEXT_UNDOLOADSTATE 40316 #define FCEUX_CONTEXT_UNDOLOADSTATE 40316
#define ID_GAME_UNDOLOADSTATE40317 40317
#define ID_GAME_UNDOLOADSTATE40318 40318
#define ID_GAME_MAKEBACKUP 40319
#define FCEUX_CONTEXT_MAKEBACKUP 40320 #define FCEUX_CONTEXT_MAKEBACKUP 40320
#define ID_CONFIG_MOVIEOPTIONS 40321
#define MENU_MOVIEOPTIONS 40322 #define MENU_MOVIEOPTIONS 40322
#define ID_GAME_UNDOSAVESTATE 40323
#define FCEUX_CONTEXT_UNDOSAVESTATE 40324 #define FCEUX_CONTEXT_UNDOSAVESTATE 40324
#define ID_GAME_UNDOSAVESTATE40325 40325
#define ID_GAME_UNDOSAVESTATE40326 40326
#define ID_NOGAME_OPENMOSTRECENTROM 40327
#define FCEUX_CONTEXT_RECENTROM1 40328 #define FCEUX_CONTEXT_RECENTROM1 40328
#define ID_NES_EMULATION40329 40329
#define ID_MOVIE_TOGGLEREAD 40330
#define ID_FILE_MOVIE_TOGGLEREAD 40331 #define ID_FILE_MOVIE_TOGGLEREAD 40331
#define ID_LUA_RELOADLUASCRIPT 40332
#define ID_FILE_LUA_RELOADLUASCRIPT 40333
#define ID_GAME_SWITCHTOREAD 40334
#define FCEUX_CONTEXT_READONLYTOGGLE 40335 #define FCEUX_CONTEXT_READONLYTOGGLE 40335
#define ID_GAME_TOGGLETOREAD 40336
#define ID_FILE_SAVESTATE 40337
#define ID_CONFIG_ENABLE 40338
#define ID_SAVESTATE_QUICKSAVE 40339
#define ID_SAVESTATE_QUICKLOAD 40340
#define ID_SAVESTATE 40341
#define ID_LOADSTATE 40342
#define MENU_LOADSTATE 40343 #define MENU_LOADSTATE 40343
#define MENU_SAVESTATE 40344 #define MENU_SAVESTATE 40344
#define ID_SAVESTATE_NEXTSAVESLOT 40345
#define ID_SAVESTATE_PREVIOUSSAVESLOT 40346
#define MENU_NEXTSAVESTATE 40347 #define MENU_NEXTSAVESTATE 40347
#define MENU_PREVIOUSSAVESTATE 40348 #define MENU_PREVIOUSSAVESTATE 40348
#define ID_SAVESTATE_VIEWSAVESLOTS 40349
#define MENU_VIEWSAVESLOTS 40350 #define MENU_VIEWSAVESLOTS 40350
#define ID_LUA_RECENT 40351
#define MENU_LUA_RECENT 40352 #define MENU_LUA_RECENT 40352
#define ID_Menu40353 40353
#define MENU_MOVIE_RECENT 40354 #define MENU_MOVIE_RECENT 40354
#define ID_GAME_LOADLASTMOVIE 40355
#define FCEUX_CONTEXT_LOADLASTMOVIE 40356 #define FCEUX_CONTEXT_LOADLASTMOVIE 40356
#define ID_GAME_SAVEMOVIEAS 40357
#define FCEUX_CONTEXT_SAVEMOVIEAS 40358 #define FCEUX_CONTEXT_SAVEMOVIEAS 40358
#define ID_FILE_TOGGLE_RECORDING_MOVIE 40359 #define ID_FILE_TOGGLE_RECORDING_MOVIE 40359
#define FCEUX_CONTEXT_TOGGLE_RECORDING 40360 #define FCEUX_CONTEXT_TOGGLE_RECORDING 40360
#define ID_OPTIONS_BINDTOMAINWINDOW 40361 #define ID_OPTIONS_BINDTOMAINWINDOW 40361
#define ID_CONFIG_PPU 40362
#define ID_PPU_NEWPPU 40363
#define ID_PPU_OLDPPU 40364
#define ID_NEWPPU 40365 #define ID_NEWPPU 40365
#define ID_OLDPPU 40366 #define ID_OLDPPU 40366
#define ID_CONFIG_SAVECONFIGFILE 40367 #define ID_CONFIG_SAVECONFIGFILE 40367
@ -1098,67 +871,40 @@
#define RW_MENU_LAST_RECENT_FILE 40400 #define RW_MENU_LAST_RECENT_FILE 40400
#define ID_ENABLE_BACKUPSAVESTATES 40401 #define ID_ENABLE_BACKUPSAVESTATES 40401
#define ID_ENABLE_COMPRESSSAVESTATES 40402 #define ID_ENABLE_COMPRESSSAVESTATES 40402
#define ID_AVI_DISABLEMOV 40403
#define ID_AVI_DISMOVIEMESS 40404
#define ID_AVI_DISMOVIEMESSAGE 40405 #define ID_AVI_DISMOVIEMESSAGE 40405
#define ID_INPUTDISPLAY_OLDSTYLEDISP 40406 #define ID_INPUTDISPLAY_OLDSTYLEDISP 40406
#define ID_GAME_RECOVERY 40407
#define ID_SAVESTATE_RECOVERY 40408
#define ID_CONTEXT_FULLSAVESTATES 40409 #define ID_CONTEXT_FULLSAVESTATES 40409
#define ID_CHEATLISTPOPUP_DELETESELECTEDCHEATS 40410
#define ID_FILE_SAVESCREENSHOTAS 40411 #define ID_FILE_SAVESCREENSHOTAS 40411
#define ID_WATCHES_ADDSEPARATOR 40412
#define ID_WATCHES_SEPARATOR 40413
#define IDC_C_WATCHES_SEPARATOR 40414
#define IDC_C_WATCH_SEPARATORS 40415
#define IDC_C_WATCH_Separa 40416
#define ID_GAME_USECONFIG 40417
#define FCEUX_CONTEXT_GUICONFIG 40418 #define FCEUX_CONTEXT_GUICONFIG 40418
#define ID_SELECTED_INSERTFRAMES 40422
#define ID_CONTEXT_SELECTED_INSERTFRAME 40423
#define ID_SELECTED_INSERTFRAMES40424 40424
#define ID_CONTEXT_SELECTED_INSERTFRAMES2 40425 #define ID_CONTEXT_SELECTED_INSERTFRAMES2 40425
#define ACCEL_CTRL_F 40429 #define ACCEL_CTRL_F 40429
#define ACCEL_CTRL_P 40430
#define ID_CONFIG_SETGREENZONECAPACITY 40432 #define ID_CONFIG_SETGREENZONECAPACITY 40432
#define ACCEL_CTRL_INSERT 40433 #define ACCEL_CTRL_INSERT 40433
#define ID_DISPLAY_RERECORDCOUNTER 40436 #define ID_DISPLAY_RERECORDCOUNTER 40436
#define ID_DISPLAY_MOVIESTATUSICON 40437 #define ID_DISPLAY_MOVIESTATUSICON 40437
#define ID_AVI_DISPLAYHUD 40438
#define ID_AVI_STOPWAV 40439
#define ID_AVI_ENABLEHUDRECORDING 40440 #define ID_AVI_ENABLEHUDRECORDING 40440
#define ID_VIEW_SHOWDOTINEMPTYCELLS 40441
#define ACCEL_INS 40442 #define ACCEL_INS 40442
#define ACCEL_DEL 40443 #define ACCEL_DEL 40443
#define ID_SELECTED_CLEARSELECTION 40445
#define ID_CONTEXT_SELECTED_CLEARSELECTION 40446
#define ID_CONTEXT_SELECTED_CLEARFRAMES 40447 #define ID_CONTEXT_SELECTED_CLEARFRAMES 40447
#define ID_VIEW_SHOW 40448
#define ID_EDIT_CLEAR 40450 #define ID_EDIT_CLEAR 40450
#define ID_EDIT_INSERTFRAMES 40451 #define ID_EDIT_INSERTFRAMES 40451
#define ID_EDIT_INSERT 40452 #define ID_EDIT_INSERT 40452
#define ID_EDIT_SELECTBETWEENMARKERS 40453
#define ID_CONFIG_BINDMARKERSTOINPUT 40454 #define ID_CONFIG_BINDMARKERSTOINPUT 40454
#define ACCEL_CTRL_A 40455 #define ACCEL_CTRL_A 40455
#define ID_EDIT_SELECTMIDMARKERS 40457 #define ID_EDIT_SELECTMIDMARKERS 40457
#define ID_SELECTED_SELECTMIDMARKERS 40458 #define ID_SELECTED_SELECTMIDMARKERS 40458
#define ID_EDIT_CLONEFRAME 40459
#define ID_EDIT_CLONEFRAMES 40460 #define ID_EDIT_CLONEFRAMES 40460
#define ACCEL_SHIFT_INS 40461
#define ACCEL_CTRL_SHIFT_INS 40461 #define ACCEL_CTRL_SHIFT_INS 40461
#define ID_SELECTED_CLONE 40463 #define ID_SELECTED_CLONE 40463
#define ID_CONFIG_Q 40464
#define ACCEL_CTRL_Z 40465 #define ACCEL_CTRL_Z 40465
#define ACCEL_CTRL_Y 40466 #define ACCEL_CTRL_Y 40466
#define ID_EDIT_UNDO 40468 #define ID_EDIT_UNDO 40468
#define ID_EDIT_REDO 40469 #define ID_EDIT_REDO 40469
#define ID_CONFIG_SETMAXUNDOLEVELS 40470 #define ID_CONFIG_SETMAXUNDOLEVELS 40470
#define ID_VIEW_X 40471
#define ID_VIEW_JUMPWHENMAKINGUNDO 40472 #define ID_VIEW_JUMPWHENMAKINGUNDO 40472
#define ID_CONFIG_BRANCHESRESTOREFULLMOVIE 40473 #define ID_CONFIG_BRANCHESRESTOREFULLMOVIE 40473
#define ID_CONFIG_OLDBRANCHINGCONTROLS 40474 #define ID_CONFIG_OLDBRANCHINGCONTROLS 40474
#define ID_CONFIG_HUDINBRANCHSCREENSHOTS 40475 #define ID_CONFIG_HUDINBRANCHSCREENSHOTS 40475
#define ID_CONFIG_SETAUTOSAVEPERIOD 40476
#define ACCEL_CTRL_Q 40478 #define ACCEL_CTRL_Q 40478
#define ID_EDIT_SELECTIONUNDO 40481 #define ID_EDIT_SELECTIONUNDO 40481
#define ID_EDIT_SELECTIONREDO 40482 #define ID_EDIT_SELECTIONREDO 40482
@ -1167,49 +913,29 @@
#define ID_HELP_ABOUT 40485 #define ID_HELP_ABOUT 40485
#define ID_VIEW_ENABLEHOTCHANGES 40488 #define ID_VIEW_ENABLEHOTCHANGES 40488
#define ID_VIEW_SHOWBRANCHSCREENSHOTS 40489 #define ID_VIEW_SHOWBRANCHSCREENSHOTS 40489
#define ID_CONFIG_USE1PFORRECORDING2P 40490
#define ID_CONFIG_USE1PFORRECORDING 40491 #define ID_CONFIG_USE1PFORRECORDING 40491
#define ID_CONFIG_COMBINECONSECUTIVERECORDINGS 40492 #define ID_CONFIG_COMBINECONSECUTIVERECORDINGS 40492
#define ACCEL_SHIFT_V 40493
#define ID_EDIT_PASTEINSERT 40495 #define ID_EDIT_PASTEINSERT 40495
#define ID_SELECTED_SETMARKER 40498
#define ID_SELECTED_CLEARMARKER 40499
#define ID_SELECTED_REMOVEMARKER40500 40500
#define ID_CONFIG_KEYBOARDCONTROLSINPIANOROLL 40501
#define ACCEL_CTRL_PGUP 40502 #define ACCEL_CTRL_PGUP 40502
#define ACCEL_CTRL_PGDN 40503 #define ACCEL_CTRL_PGDN 40503
#define ACCEL_SHIFT_PGUP 40504 #define ACCEL_SHIFT_PGUP 40504
#define ACCEL_SHIFT_PGDN 40505 #define ACCEL_SHIFT_PGDN 40505
#define ID_ACCELERATOR40506 40506
#define ID_VIEW_FOLLOWMARKERNOTECONTEXT 40507 #define ID_VIEW_FOLLOWMARKERNOTECONTEXT 40507
#define ID_VIEW_SHOWBRANCHTOOLTIPS 40508 #define ID_VIEW_SHOWBRANCHTOOLTIPS 40508
#define ID_CONFIG_USEINPUTKEYSFORCOLUMNSET 40509 #define ID_CONFIG_USEINPUTKEYSFORCOLUMNSET 40509
#define ID_CONFIG_EMPTYNEWMARKERNOTES 40510 #define ID_CONFIG_EMPTYNEWMARKERNOTES 40510
#define ID_EDIT_FINDNOTE 40513
#define ID_CONFIG_REAPPEARINGFINDNOTEDIALOG 40514
#define ID_VIEW_FINDNOTE 40515 #define ID_VIEW_FINDNOTE 40515
#define ID_CONFIG_SILENTAUTOSAVE 40516
#define ID_FILE_CLOSE 40517 #define ID_FILE_CLOSE 40517
#define ID_EDIT_PASTE 40520 #define ID_EDIT_PASTE 40520
#define ID_EDIT_COPY 40521 #define ID_EDIT_COPY 40521
#define ID_EDIT_CUT 40522 #define ID_EDIT_CUT 40522
#define ID_HELP_TASEDITORHELP 40523
#define MENU_TASEDITOR 40524 #define MENU_TASEDITOR 40524
#define ID_FILE_NEW 40525 #define ID_FILE_NEW 40525
#define ID_HELP_SHOWTOOLTIPS 40526
#define ID_HELP_TOOLTIPS 40527 #define ID_HELP_TOOLTIPS 40527
#define ID_STRAY_UNPAUSEEMULATOR 40528
#define ID_STRAY_UNPAUSE 40529
#define ID_STRAY_TRUNCATE40530 40530
#define ID_PATTERN 40531
#define ID_PATTERN_TESTPATTERN 40532
#define ID_PATTERN40533 40533
#define ID_PATTERN_TEST 40534 #define ID_PATTERN_TEST 40534
#define ID_CONFIG_COLUMNSETPATTERNSKIPSLAG 40535
#define ID_EDIT_DESELECT 40536 #define ID_EDIT_DESELECT 40536
#define ID_SELECTED_DESELECT 40537 #define ID_SELECTED_DESELECT 40537
#define ID_CONFIG_DRAWINPUTBYDRAGGING 40539 #define ID_CONFIG_DRAWINPUTBYDRAGGING 40539
#define ID_CONFIG_DOUBLECLICKONFRAME 40540
#define ACCEL_CTRL_UP 40541 #define ACCEL_CTRL_UP 40541
#define ACCEL_CTRL_DOWN 40542 #define ACCEL_CTRL_DOWN 40542
#define ACCEL_CTRL_LEFT 40543 #define ACCEL_CTRL_LEFT 40543
@ -1229,54 +955,42 @@
#define ID_CONFIG_AUTOPAUSEATTHEENDOFMOVIE 40559 #define ID_CONFIG_AUTOPAUSEATTHEENDOFMOVIE 40559
#define ID_SELECTED_SETMARKERS 40560 #define ID_SELECTED_SETMARKERS 40560
#define ID_SELECTED_REMOVEMARKERS 40561 #define ID_SELECTED_REMOVEMARKERS 40561
#define ACCEL_CTRL_SPACEBAR 40563
#define ACCEL_CTRL_SPACE 40563
#define ID_HELP_OPEN_MANUAL 40564 #define ID_HELP_OPEN_MANUAL 40564
#define ID_DISPLAY_FPS 40565 #define ID_DISPLAY_FPS 40565
#define ID_CONFIG_AUTO 40566
#define ID_CONFIG_ADJUSTLAG 40567 #define ID_CONFIG_ADJUSTLAG 40567
#define ID_CONFIG_PATTERNSKIPSLAG 40568 #define ID_CONFIG_PATTERNSKIPSLAG 40568
#define CLEAR_LOG 40569 #define CLEAR_LOG 40569
#define CLOSE_LOG 40570 #define CLOSE_LOG 40570
#define ID_SELECTED_UNGREENZONE 40571 #define ID_SELECTED_UNGREENZONE 40571
#define ID_SELECTED_F 40572 #define CHEAT_CONTEXT_POSSI_GOTOINHEXEDITOR 40572
#define ID_CONFIG_ENABLEGREENZONING 40573 #define ID_CONFIG_ENABLEGREENZONING 40573
#define ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY 40574 #define ID_EMULATIONSPEED_SETFRAMEADVANCEDELAY 40574
#define ID_Menu40575 40575
#define ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE 40576 #define ID_EMULATIONSPEED_SETCUSTOMSPEEDFORFRAMEADVANCE 40576
#define ID_EMULATIONSPEED_CUSTOMSPEED 40577 #define ID_EMULATIONSPEED_CUSTOMSPEED 40577
#define ID_ENABLE_AUTO 40578
#define ID_ENABLE_AUTORESUME 40579 #define ID_ENABLE_AUTORESUME 40579
#define ID_CONFIG_COMPACTQUICKSAVING 40580
#define ID_CONFIG_SAVING_OPTIONS 40581 #define ID_CONFIG_SAVING_OPTIONS 40581
#define ID_CDLFILENAME 40582 #define ID_CDLFILENAME 40582
#define ID_VIEW_A 40583
#define ID_VIEW_HIGHLIGHT 40584
#define ID_VIEW_HIGHLIGHT_ACTIVITY 40585
#define ID_HIGHLIGHTING_FADEWHENPAUSED 40586 #define ID_HIGHLIGHTING_FADEWHENPAUSED 40586
#define ID_HIGHLIGHTING_SETFADINGPERIOD 40587 #define ID_HIGHLIGHTING_SETFADINGPERIOD 40587
#define ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY 40588 #define ID_HIGHLIGHTING_HIGHLIGHT_ACTIVITY 40588
#define ID_DUMPTOFILE_CPUBUS 40589
#define MENU_MV_FILE_DUMP_64K 40590 #define MENU_MV_FILE_DUMP_64K 40590
#define ID_CONFIG_REGION 40591
#define MENU_MV_FILE_DUMP_OAM 40592 #define MENU_MV_FILE_DUMP_OAM 40592
#define MENU_RAMINIT_DEFAULT 40593 #define MENU_RAMINIT_DEFAULT 40593
#define MENU_RAMINIT_FF 40594 #define MENU_RAMINIT_FF 40594
#define MENU_RAMINIT_00 40595 #define MENU_RAMINIT_00 40595
#define MENU_RAMINIT_RANDOM 40596 #define MENU_RAMINIT_RANDOM 40596
#define ID_COPY_SELECTALL 40596
#define MENU_MV_FILE_LOAD_RAM 40597 #define MENU_MV_FILE_LOAD_RAM 40597
#define ID_COPY_COPY 40597
#define MENU_MV_FILE_LOAD_PPU 40598 #define MENU_MV_FILE_LOAD_PPU 40598
#define DISASM_CONTEXT_COPY 40598 #define DISASM_CONTEXT_COPY 40598
#define MENU_MV_FILE_LOAD_OAM 40599 #define MENU_MV_FILE_LOAD_OAM 40599
#define DISASM_CONTEXT_SELECTALL 40599 #define DISASM_CONTEXT_SELECTALL 40599
#define IDC_DEBUGGER_ICONTRAY 55535 #define CHEAT_CONTEXT_POSSI_ADDTOMEMORYWATCH 40600
#define MW_ValueLabel2 65423 #define CHEAT_CONTEXT_POSSI_ADDCHEAT 40601
#define MW_ValueLabel1 65426 #define CHEAT_CONTEXT_POSSI_ADDTORAMWATCH 40603
#define MW_VALUELABEL2 65423
#define MW_VALUELABEL1 65426
#define IDC_STATIC_SLASHTEXT 65442 #define IDC_STATIC_SLASHTEXT 65442
#define IDC_BOOKMARK_NAME_TEXT 65532 #define IDC_BOOKMARK_NAME_TEXT 65532
#define ID_CDL 65533
#define IDC_NTVIEW_SCANLINE_TEXT 65534 #define IDC_NTVIEW_SCANLINE_TEXT 65534
// Next default values for new objects // Next default values for new objects
@ -1284,8 +998,8 @@
#ifdef APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED
#ifndef APSTUDIO_READONLY_SYMBOLS #ifndef APSTUDIO_READONLY_SYMBOLS
#define _APS_NEXT_RESOURCE_VALUE 303 #define _APS_NEXT_RESOURCE_VALUE 303
#define _APS_NEXT_COMMAND_VALUE 40600 #define _APS_NEXT_COMMAND_VALUE 40000
#define _APS_NEXT_CONTROL_VALUE 1312 #define _APS_NEXT_CONTROL_VALUE 1011
#define _APS_NEXT_SYMED_VALUE 101 #define _APS_NEXT_SYMED_VALUE 101
#endif #endif
#endif #endif

View File

@ -485,7 +485,21 @@ void SaveCompact_SetDialogItems(HWND hwndDlg)
CheckDlgButton(hwndDlg, IDC_CHECK_HISTORY, taseditorConfig.saveCompact_SaveHistory?BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_HISTORY, taseditorConfig.saveCompact_SaveHistory?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditorConfig.saveCompact_SavePianoRoll?BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditorConfig.saveCompact_SavePianoRoll?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditorConfig.saveCompact_SaveSelection?BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditorConfig.saveCompact_SaveSelection?BST_CHECKED : BST_UNCHECKED);
CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditorConfig.saveCompact_GreenzoneSavingMode % GREENZONE_SAVING_MODES_TOTAL)); switch (taseditorConfig.saveCompact_GreenzoneSavingMode % GREENZONE_SAVING_MODES_TOTAL)
{
case GREENZONE_SAVING_MODE_ALL:
CheckRadioButton(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES);
break;
case GREENZONE_SAVING_MODE_16TH:
CheckRadioButton(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME);
break;
case GREENZONE_SAVING_MODE_MARKED:
CheckRadioButton(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES);
break;
case GREENZONE_SAVING_MODE_NO:
default:
CheckRadioButton(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE);
}
} }
void SaveCompact_GetDialogItems(HWND hwndDlg) void SaveCompact_GetDialogItems(HWND hwndDlg)
{ {
@ -495,11 +509,11 @@ void SaveCompact_GetDialogItems(HWND hwndDlg)
taseditorConfig.saveCompact_SaveHistory = (SendDlgItemMessage(hwndDlg, IDC_CHECK_HISTORY, BM_GETCHECK, 0, 0) == BST_CHECKED); taseditorConfig.saveCompact_SaveHistory = (SendDlgItemMessage(hwndDlg, IDC_CHECK_HISTORY, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditorConfig.saveCompact_SavePianoRoll = (SendDlgItemMessage(hwndDlg, IDC_CHECK_PIANO_ROLL, BM_GETCHECK, 0, 0) == BST_CHECKED); taseditorConfig.saveCompact_SavePianoRoll = (SendDlgItemMessage(hwndDlg, IDC_CHECK_PIANO_ROLL, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditorConfig.saveCompact_SaveSelection = (SendDlgItemMessage(hwndDlg, IDC_CHECK_SELECTION, BM_GETCHECK, 0, 0) == BST_CHECKED); taseditorConfig.saveCompact_SaveSelection = (SendDlgItemMessage(hwndDlg, IDC_CHECK_SELECTION, BM_GETCHECK, 0, 0) == BST_CHECKED);
if (SendDlgItemMessage(hwndDlg, IDC_RADIO1, BM_GETCHECK, 0, 0) == BST_CHECKED) if (SendDlgItemMessage(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditorConfig.saveCompact_GreenzoneSavingMode = GREENZONE_SAVING_MODE_ALL; taseditorConfig.saveCompact_GreenzoneSavingMode = GREENZONE_SAVING_MODE_ALL;
else if (SendDlgItemMessage(hwndDlg, IDC_RADIO2, BM_GETCHECK, 0, 0) == BST_CHECKED) else if (SendDlgItemMessage(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditorConfig.saveCompact_GreenzoneSavingMode = GREENZONE_SAVING_MODE_16TH; taseditorConfig.saveCompact_GreenzoneSavingMode = GREENZONE_SAVING_MODE_16TH;
else if (SendDlgItemMessage(hwndDlg, IDC_RADIO3, BM_GETCHECK, 0, 0) == BST_CHECKED) else if (SendDlgItemMessage(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditorConfig.saveCompact_GreenzoneSavingMode = GREENZONE_SAVING_MODE_MARKED; taseditorConfig.saveCompact_GreenzoneSavingMode = GREENZONE_SAVING_MODE_MARKED;
else else
taseditorConfig.saveCompact_GreenzoneSavingMode = GREENZONE_SAVING_MODE_NO; taseditorConfig.saveCompact_GreenzoneSavingMode = GREENZONE_SAVING_MODE_NO;
@ -681,7 +695,21 @@ BOOL CALLBACK savingOptionsWndProc(HWND hwndDlg, UINT message, WPARAM wParam, LP
CheckDlgButton(hwndDlg, IDC_CHECK_HISTORY, taseditorConfig.projectSavingOptions_SaveHistory?BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_HISTORY, taseditorConfig.projectSavingOptions_SaveHistory?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditorConfig.projectSavingOptions_SavePianoRoll?BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_PIANO_ROLL, taseditorConfig.projectSavingOptions_SavePianoRoll?BST_CHECKED : BST_UNCHECKED);
CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditorConfig.projectSavingOptions_SaveSelection?BST_CHECKED : BST_UNCHECKED); CheckDlgButton(hwndDlg, IDC_CHECK_SELECTION, taseditorConfig.projectSavingOptions_SaveSelection?BST_CHECKED : BST_UNCHECKED);
CheckRadioButton(hwndDlg, IDC_RADIO1, IDC_RADIO4, IDC_RADIO1 + (taseditorConfig.projectSavingOptions_GreenzoneSavingMode % GREENZONE_SAVING_MODES_TOTAL)); switch (taseditorConfig.saveCompact_GreenzoneSavingMode % GREENZONE_SAVING_MODES_TOTAL)
{
case GREENZONE_SAVING_MODE_ALL:
CheckRadioButton(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES);
break;
case GREENZONE_SAVING_MODE_16TH:
CheckRadioButton(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME);
break;
case GREENZONE_SAVING_MODE_MARKED:
CheckRadioButton(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES);
break;
case GREENZONE_SAVING_MODE_NO:
default:
CheckRadioButton(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE, IDC_RADIO_GREENZONE_SAVINGMODE_DONTSAVE);
}
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD), taseditorConfig.autosaveEnabled); EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD), taseditorConfig.autosaveEnabled);
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_EVERY_TEXT), taseditorConfig.autosaveEnabled); EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_EVERY_TEXT), taseditorConfig.autosaveEnabled);
EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_MINUTES_TEXT), taseditorConfig.autosaveEnabled); EnableWindow(GetDlgItem(hwndDlg, IDC_AUTOSAVE_PERIOD_MINUTES_TEXT), taseditorConfig.autosaveEnabled);
@ -719,11 +747,11 @@ BOOL CALLBACK savingOptionsWndProc(HWND hwndDlg, UINT message, WPARAM wParam, LP
taseditorConfig.projectSavingOptions_SaveHistory = (SendDlgItemMessage(hwndDlg, IDC_CHECK_HISTORY, BM_GETCHECK, 0, 0) == BST_CHECKED); taseditorConfig.projectSavingOptions_SaveHistory = (SendDlgItemMessage(hwndDlg, IDC_CHECK_HISTORY, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditorConfig.projectSavingOptions_SavePianoRoll = (SendDlgItemMessage(hwndDlg, IDC_CHECK_PIANO_ROLL, BM_GETCHECK, 0, 0) == BST_CHECKED); taseditorConfig.projectSavingOptions_SavePianoRoll = (SendDlgItemMessage(hwndDlg, IDC_CHECK_PIANO_ROLL, BM_GETCHECK, 0, 0) == BST_CHECKED);
taseditorConfig.projectSavingOptions_SaveSelection = (SendDlgItemMessage(hwndDlg, IDC_CHECK_SELECTION, BM_GETCHECK, 0, 0) == BST_CHECKED); taseditorConfig.projectSavingOptions_SaveSelection = (SendDlgItemMessage(hwndDlg, IDC_CHECK_SELECTION, BM_GETCHECK, 0, 0) == BST_CHECKED);
if (SendDlgItemMessage(hwndDlg, IDC_RADIO1, BM_GETCHECK, 0, 0) == BST_CHECKED) if (SendDlgItemMessage(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_ALLFRAMES, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditorConfig.projectSavingOptions_GreenzoneSavingMode = GREENZONE_SAVING_MODE_ALL; taseditorConfig.projectSavingOptions_GreenzoneSavingMode = GREENZONE_SAVING_MODE_ALL;
else if (SendDlgItemMessage(hwndDlg, IDC_RADIO2, BM_GETCHECK, 0, 0) == BST_CHECKED) else if (SendDlgItemMessage(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_EVERY16FRAME, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditorConfig.projectSavingOptions_GreenzoneSavingMode = GREENZONE_SAVING_MODE_16TH; taseditorConfig.projectSavingOptions_GreenzoneSavingMode = GREENZONE_SAVING_MODE_16TH;
else if (SendDlgItemMessage(hwndDlg, IDC_RADIO3, BM_GETCHECK, 0, 0) == BST_CHECKED) else if (SendDlgItemMessage(hwndDlg, IDC_RADIO_GREENZONE_SAVINGMODE_MARKEDFRAMES, BM_GETCHECK, 0, 0) == BST_CHECKED)
taseditorConfig.projectSavingOptions_GreenzoneSavingMode = GREENZONE_SAVING_MODE_MARKED; taseditorConfig.projectSavingOptions_GreenzoneSavingMode = GREENZONE_SAVING_MODE_MARKED;
else else
taseditorConfig.projectSavingOptions_GreenzoneSavingMode = GREENZONE_SAVING_MODE_NO; taseditorConfig.projectSavingOptions_GreenzoneSavingMode = GREENZONE_SAVING_MODE_NO;

View File

@ -1138,19 +1138,19 @@ BOOL CALLBACK TASEditorWndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lPara
FCEUI_MovieToggleReadOnly(); FCEUI_MovieToggleReadOnly();
CheckDlgButton(taseditorWindow.hwndTASEditor, IDC_RECORDING, movie_readonly?BST_UNCHECKED : BST_CHECKED); CheckDlgButton(taseditorWindow.hwndTASEditor, IDC_RECORDING, movie_readonly?BST_UNCHECKED : BST_CHECKED);
break; break;
case IDC_RADIO2: case IDC_RADIO_ALL:
recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_ALL; recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_ALL;
break; break;
case IDC_RADIO3: case IDC_RADIO_1P:
recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_1P; recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_1P;
break; break;
case IDC_RADIO4: case IDC_RADIO_2P:
recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_2P; recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_2P;
break; break;
case IDC_RADIO5: case IDC_RADIO_3P:
recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_3P; recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_3P;
break; break;
case IDC_RADIO6: case IDC_RADIO_4P:
recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_4P; recorder.multitrackRecordingJoypadNumber = MULTITRACK_RECORDING_4P;
break; break;
case IDC_SUPERIMPOSE: case IDC_SUPERIMPOSE:

View File

@ -39,12 +39,12 @@
#include "input.h" #include "input.h"
#include "fceu.h" #include "fceu.h"
#include "cheat.h"
#include "ram_search.h" #include "ram_search.h"
#include "ramwatch.h" #include "ramwatch.h"
#include "memwatch.h" #include "memwatch.h"
#include "ppuview.h" #include "ppuview.h"
#include "debugger.h" #include "debugger.h"
#include "cheat.h"
#include "debug.h" #include "debug.h"
#include "ntview.h" #include "ntview.h"
#include "memview.h" #include "memview.h"
@ -408,7 +408,7 @@ void UpdateCheckedMenuItems()
FCEUI_GetRenderPlanes(spr,bg); FCEUI_GetRenderPlanes(spr,bg);
static int *polo[] = { &genie, &status_icon}; static int *polo[] = { &genie, &status_icon};
static int polo2[]={ MENU_GAME_GENIE, MENU_SHOW_STATUS_ICON }; static int polo2[]={ MENU_GAME_GENIE, ID_DISPLAY_MOVIESTATUSICON };
int x; int x;
// Check or uncheck the necessary menu items // Check or uncheck the necessary menu items

View File

@ -114,10 +114,6 @@ bool AutoResumePlay = false;
char romNameWhenClosingEmulator[2048] = {0}; char romNameWhenClosingEmulator[2048] = {0};
// indicator for the open in archive dialog that if the load was canceled by the user.
// TODO: Since I can't think of a better way to indicate it, hope someone could imporve it.
bool archiveManuallyCanceled = false;
FCEUGI::FCEUGI() FCEUGI::FCEUGI()
: filename(0), : filename(0),
archiveFilename(0) { archiveFilename(0) {
@ -404,9 +400,6 @@ int iNESLoad(const char *name, FCEUFILE *fp, int OverwriteVidMode);
int FDSLoad(const char *name, FCEUFILE *fp); int FDSLoad(const char *name, FCEUFILE *fp);
int NSFLoad(const char *name, FCEUFILE *fp); int NSFLoad(const char *name, FCEUFILE *fp);
//char lastLoadedGameName [2048] = {0,}; // hack for movie WRAM clearing on record from poweron
extern bool archiveManuallyCanceled;
//name should be UTF-8, hopefully, or else there may be trouble //name should be UTF-8, hopefully, or else there may be trouble
FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silent) FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silent)
{ {
@ -418,16 +411,18 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen
int lastdendy = dendy; int lastdendy = dendy;
const char* romextensions[] = { "nes", "fds", 0 }; const char* romextensions[] = { "nes", "fds", 0 };
fp = FCEU_fopen(name, 0, "rb", 0, -1, romextensions);
// indicator for if the operaton was canceled by user
// currently there's only one situation:
// the user clicked cancel form the open from archive dialog
bool userCancel = false;
fp = FCEU_fopen(name, 0, "rb", 0, -1, romextensions, &userCancel);
if (!fp) if (!fp)
{ {
// Although !fp, if the operation was canceled from archive select dialog box, don't show the error message; // Although !fp, if the operation was canceled from archive select dialog box, don't show the error message;
if (!silent && !archiveManuallyCanceled) if (!silent && !userCancel)
FCEU_PrintError("Error opening \"%s\"!", name); FCEU_PrintError("Error opening \"%s\"!", name);
// Set it back to false, since user might not load ROM from dialog the next time.
// TODO: find a better way to do this.
archiveManuallyCanceled = false;
return 0; return 0;
} }
@ -441,10 +436,11 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen
strcpy(fullname, name); strcpy(fullname, name);
} }
// reset loaded game BEFORE it's loading.
ResetGameLoaded();
//file opened ok. start loading. //file opened ok. start loading.
FCEU_printf("Loading %s...\n\n", fullname); FCEU_printf("Loading %s...\n\n", fullname);
GetFileBase(fp->filename.c_str()); GetFileBase(fp->filename.c_str());
ResetGameLoaded();
//reset parameters so they're cleared just in case a format's loader doesn't know to do the clearing //reset parameters so they're cleared just in case a format's loader doesn't know to do the clearing
MasterRomInfoParams = TMasterRomInfoParams(); MasterRomInfoParams = TMasterRomInfoParams();
@ -561,7 +557,11 @@ FCEUGI *FCEUI_LoadGameVirtual(const char *name, int OverwriteVidMode, bool silen
DoDebuggerDataReload(); // Reloads data without reopening window DoDebuggerDataReload(); // Reloads data without reopening window
CDLoggerROMChanged(); CDLoggerROMChanged();
if (hMemView) UpdateColorTable(); if (hMemView) UpdateColorTable();
if (hCheat) UpdateCheatsAdded(); if (hCheat)
{
UpdateCheatsAdded();
UpdateCheatRelatedWindow();
}
if (FrozenAddressCount) if (FrozenAddressCount)
FCEU_DispMessage("%d cheats active", 0, FrozenAddressCount); FCEU_DispMessage("%d cheats active", 0, FrozenAddressCount);
#endif #endif
@ -739,7 +739,10 @@ void FCEUI_Emulate(uint8 **pXBuf, int32 **SoundBuf, int32 *SoundBufSize, int ski
#ifdef WIN32 #ifdef WIN32
//These Windows only dialogs need to be updated only once per frame so they are included here //These Windows only dialogs need to be updated only once per frame so they are included here
UpdateCheatList(); // CaH4e3: can't see why, this is only cause problems with selection - adelikat: selection is only a problem when not paused, it shoudl be paused to select, we want to see the values update // CaH4e3: can't see why, this is only cause problems with selection
// adelikat: selection is only a problem when not paused, it should be paused to select, we want to see the values update
// owomomo: use an OWNERDATA CListCtrl to partially solve the problem
UpdateCheatList();
UpdateTextHooker(); UpdateTextHooker();
Update_RAM_Search(); // Update_RAM_Watch() is also called. Update_RAM_Search(); // Update_RAM_Watch() is also called.
RamChange(); RamChange();

View File

@ -256,7 +256,7 @@ zpfail:
return 0; return 0;
} }
FCEUFILE * FCEU_fopen(const char *path, const char *ipsfn, char *mode, char *ext, int index, const char** extensions) FCEUFILE * FCEU_fopen(const char *path, const char *ipsfn, char *mode, char *ext, int index, const char** extensions, bool* userCancel)
{ {
FILE *ipsfile=0; FILE *ipsfile=0;
FCEUFILE *fceufp=0; FCEUFILE *fceufp=0;
@ -360,11 +360,11 @@ FCEUFILE * FCEU_fopen(const char *path, const char *ipsfn, char *mode, char *ext
//open an archive file //open an archive file
if(archive == "") if(archive == "")
if(index != -1) if(index != -1)
fceufp = FCEUD_OpenArchiveIndex(asr, fileToOpen, index); fceufp = FCEUD_OpenArchiveIndex(asr, fileToOpen, index, userCancel);
else else
fceufp = FCEUD_OpenArchive(asr, fileToOpen, 0); fceufp = FCEUD_OpenArchive(asr, fileToOpen, 0, userCancel);
else else
fceufp = FCEUD_OpenArchive(asr, archive, &fname); fceufp = FCEUD_OpenArchive(asr, archive, &fname, userCancel);
if(!fceufp) return 0; if(!fceufp) return 0;

View File

@ -11,11 +11,6 @@
extern bool bindSavestate; extern bool bindSavestate;
// indicator for the open in archive dialog that if the load was canceled by the user.
// TODO: Since I can't think of a better way to indicate it, hope someone could imporve it.
extern bool archiveManuallyCanceled;
struct FCEUFILE { struct FCEUFILE {
//the stream you can use to access the data //the stream you can use to access the data
//std::iostream *stream; //std::iostream *stream;
@ -127,7 +122,7 @@ struct ArchiveScanRecord
}; };
FCEUFILE *FCEU_fopen(const char *path, const char *ipsfn, char *mode, char *ext, int index=-1, const char** extensions = 0); FCEUFILE *FCEU_fopen(const char *path, const char *ipsfn, char *mode, char *ext, int index=-1, const char** extensions = 0, bool* userCancel = NULL);
bool FCEU_isFileInArchive(const char *path); bool FCEU_isFileInArchive(const char *path);
int FCEU_fclose(FCEUFILE*); int FCEU_fclose(FCEUFILE*);
uint64 FCEU_fread(void *ptr, size_t size, size_t nmemb, FCEUFILE*); uint64 FCEU_fread(void *ptr, size_t size, size_t nmemb, FCEUFILE*);

View File

@ -45,6 +45,7 @@
//TODO - we really need some kind of global platform-specific options api //TODO - we really need some kind of global platform-specific options api
#ifdef WIN32 #ifdef WIN32
#include "drivers/win/main.h" #include "drivers/win/main.h"
#include "drivers/win/cheat.h"
#include "drivers/win/ram_search.h" #include "drivers/win/ram_search.h"
#include "drivers/win/ramwatch.h" #include "drivers/win/ramwatch.h"
#endif #endif