[Tuxnes-devel] PATCH: Here is the fix /* for the Game Genie */ to allow abitrary number of codes :)
Brought to you by:
tmmm
|
From: Mike M. <che...@ya...> - 2003-11-30 21:13:37
|
This should allow many hours of fun. The limit is 1024 bytes of input, however this is an easy
change. The --help was updated here is the new look, extra credits for finding ought what the
example dose :P
-g, --gamegenie=szxaykvs,sxoanxvs,szvesuvs... Game Genie codes
--- emu.c.orig 2003-11-30 14:59:04.000000000 -0600
+++ emu.c 2003-11-30 15:07:13.000000000 -0600
@@ -67,9 +67,8 @@
int dolink = 0;
int MAPPERNUMBER = -1;
int SRAM_ENABLED;
-int gamegenie = 0;
-int irqflag = 0;
-int mapmirror = 0;
+unsigned int irqflag = 0;
+unsigned int mapmirror = 0;
int mapperoverride = 0;
int ignorebadinstr = 0;
int showheader = 0;
@@ -567,7 +566,7 @@
printf (" -v, --verbose Verbose output\n");
printf (" -f, --fix-mapper Use only the low four bits of the mapper number\n");
printf (" -M, --mapper=... Specify mapper to use\n");
- printf (" -g, --gamegenie=... Game Genie code\n");
+ printf (" -g, --gamegenie=szxaykvs,sxoanxvs,szvesuvs... Game Genie codes\n");
printf (" -H, --show-header Show iNES header bytes\n");
printf (" -d, --disassemble Disassemble\n");
printf (" -l, --link Link branches optimization (may improve speed)\n");
@@ -1191,7 +1190,8 @@
char *mkdircall; /* buffer for /bin/mkdir call */
char *palfile = 0; /* palette file */
- char *ggcode;
+ int gamegenie = 0;
+ char ggcode[1024];
int ggret, parseret;
/* for the Game Genie */
@@ -1205,8 +1205,6 @@
int romfd;
#endif
- ggcode = NULL;
-
/* set up the mapper arrays */
InitMapperSubsystem();
@@ -1269,7 +1267,6 @@
cmirror = 0;
dolink = 0;
disassemble = 0;
- gamegenie = 0;
/* check for the default output device */
if ((audiofd = open (DSP, O_CREAT | O_WRONLY | O_APPEND)) < 0)
@@ -1373,8 +1370,9 @@
showheader = 1;
break;
case 'g':
- gamegenie = 1;
- ggcode = optarg;
+ strncpy (ggcode, optarg, sizeof(ggcode));
+ for ( gamegenie = strlen(ggcode); gamegenie >= 2; gamegenie-- )
+ if ( ggcode[gamegenie-1] == ',' ) break;
break;
case 'j':
case '1':
@@ -2126,12 +2124,20 @@
}
/* enter the Game Genie codes */
- if (gamegenie)
+ while (gamegenie != 0)
{
- ggret = DecodeGameGenieCode (ggcode, &address, &data, &compare);
+ if ( gamegenie == 1 )
+ {
+ gamegenie = 0;
+ }
+ if (verbose)
+ {
+ fprintf (stderr, "------------------------\n");
+ }
+ ggret = DecodeGameGenieCode ( &ggcode[gamegenie], &address, &data, &compare);
if (ggret == GAME_GENIE_BAD_CODE)
{
- fprintf (stderr, "invalid Game Genie code: %s\n", ggcode);
+ fprintf (stderr, "invalid Game Genie code: %s\n", &ggcode[gamegenie]);
}
else if (ggret == GAME_GENIE_8_CHAR)
{
@@ -2167,6 +2173,9 @@
fprintf (stderr, "Game Genie: value at %04X = %02X\n", address,
MAPTABLE[address >> 12][address]);
}
+ ggcode[gamegenie-1] = '\0';
+ for (; gamegenie >= 2; gamegenie-- )
+ if ( ggcode[gamegenie-1] == ',' ) break;
}
/* Choose renderer */
__________________________________
Do you Yahoo!?
Free Pop-Up Blocker - Get it now
http://companion.yahoo.com/
|