[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/ |