From: notaz Date: Sat, 14 Apr 2007 23:22:47 +0000 (+0000) Subject: rel stuff X-Git-Tag: r1~75 X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=commitdiff_plain;h=aa2dba92740d5aeab520ed493df9188505a4c3d7;ds=sidebyside rel stuff git-svn-id: file:///home/notaz/opt/svn/fceu@105 be3aeb3a-fb24-0410-a615-afba39da0efa --- diff --git a/Makefile.gp2x b/Makefile.gp2x index d9868b3..db00145 100644 --- a/Makefile.gp2x +++ b/Makefile.gp2x @@ -60,3 +60,14 @@ include Makefile.common up: fceu cp -v fceu /mnt/gp2x/mnt/sd/emus/Gpfce_v02/gpfce +# ----------- release ----------- +ifneq ($(findstring rel,$(MAKECMDGOALS)),) +ifeq ($(VER),) +$(error need VER) +endif +endif + +rel: gpfce + zip -9 -j Gpfce_v$(VER).zip $^ drivers/gp2x/mmuhack.o out_gp2x/* + + diff --git a/out_gp2x/fondo.png b/out_gp2x/fondo.png new file mode 100644 index 0000000..f35c26e Binary files /dev/null and b/out_gp2x/fondo.png differ diff --git a/out_gp2x/gpfce.gpe b/out_gp2x/gpfce.gpe new file mode 100644 index 0000000..8d1208f --- /dev/null +++ b/out_gp2x/gpfce.gpe @@ -0,0 +1,7 @@ +#!/bin/sh + +./selector ./gpfce_config > ./gpfce.log +sync + +cd /usr/gp2x/ +exec /usr/gp2x/gp2xmenu diff --git a/out_gp2x/gpfce.png b/out_gp2x/gpfce.png new file mode 100644 index 0000000..7507563 Binary files /dev/null and b/out_gp2x/gpfce.png differ diff --git a/out_gp2x/gpfce_config b/out_gp2x/gpfce_config new file mode 100644 index 0000000..5f28744 --- /dev/null +++ b/out_gp2x/gpfce_config @@ -0,0 +1,24 @@ +#Selector configuration file +#Version 1.0 + +#selector-language english (and it doesn't work, crap) +langCode=EN +layoutCode=0 + +#List of full paths of command line options +cmdLine=./gpfce + +#skins +skinPath=./ + +#selectRectange +selectRectangle=2 +scrollWrap=0 + +#Full absolute path to base directory for file explorer +baseDir=/mnt/sd/roms/nes/ + +#File filters +fileFilter=zip + + diff --git a/out_gp2x/gpfce_showfps.gpe b/out_gp2x/gpfce_showfps.gpe new file mode 100644 index 0000000..69a9be4 --- /dev/null +++ b/out_gp2x/gpfce_showfps.gpe @@ -0,0 +1,7 @@ +#!/bin/sh + +./selector ./gpfce_showfps_config > ./gpfce.log +sync + +cd /usr/gp2x/ +exec /usr/gp2x/gp2xmenu diff --git a/out_gp2x/gpfce_showfps_config b/out_gp2x/gpfce_showfps_config new file mode 100644 index 0000000..e34833e --- /dev/null +++ b/out_gp2x/gpfce_showfps_config @@ -0,0 +1,23 @@ +#Selector configuration file +#Version 1.0 + +#selector-language english (and it doesn't work, crap) +langCode=EN +layoutCode=0 + +#List of full paths of command line options +cmdLine=./gpfce -showfps + +#skins +skinPath=./ + +#selectRectange +selectRectangle=2 +scrollWrap=0 + +#Full absolute path to base directory for file explorer +baseDir=/mnt/sd/roms/nes/ + +#File filters +fileFilter=zip + diff --git a/out_gp2x/gpfce_showfps_swapbuttons.gpe b/out_gp2x/gpfce_showfps_swapbuttons.gpe new file mode 100644 index 0000000..91a4448 --- /dev/null +++ b/out_gp2x/gpfce_showfps_swapbuttons.gpe @@ -0,0 +1,7 @@ +#!/bin/sh + +./selector ./gpfce_showfps_swapbuttons_config > ./gpfce.log +sync + +cd /usr/gp2x/ +exec /usr/gp2x/gp2xmenu diff --git a/out_gp2x/gpfce_showfps_swapbuttons_config b/out_gp2x/gpfce_showfps_swapbuttons_config new file mode 100644 index 0000000..fa78a42 --- /dev/null +++ b/out_gp2x/gpfce_showfps_swapbuttons_config @@ -0,0 +1,23 @@ +#Selector configuration file +#Version 1.0 + +#selector-language english (and it doesn't work, crap) +langCode=EN +layoutCode=0 + +#List of full paths of command line options +cmdLine=./gpfce -swapbuttons -showfps + +#skins +skinPath=./ + +#selectRectange +selectRectangle=2 +scrollWrap=0 + +#Full absolute path to base directory for file explorer +baseDir=/mnt/sd/roms/nes/ + +#File filters +fileFilter=zip + diff --git a/out_gp2x/gpfce_swapbuttons.gpe b/out_gp2x/gpfce_swapbuttons.gpe new file mode 100644 index 0000000..22265ba --- /dev/null +++ b/out_gp2x/gpfce_swapbuttons.gpe @@ -0,0 +1,7 @@ +#!/bin/sh + +./selector ./gpfce_swapbuttons_config > ./gpfce.log +sync + +cd /usr/gp2x/ +exec /usr/gp2x/gp2xmenu diff --git a/out_gp2x/gpfce_swapbuttons_config b/out_gp2x/gpfce_swapbuttons_config new file mode 100644 index 0000000..3c79d0f --- /dev/null +++ b/out_gp2x/gpfce_swapbuttons_config @@ -0,0 +1,23 @@ +#Selector configuration file +#Version 1.0 + +#selector-language english (and it doesn't work, crap) +langCode=EN +layoutCode=0 + +#List of full paths of command line options +cmdLine=./gpfce -swapbuttons + +#skins +skinPath=./ + +#selectRectange +selectRectangle=2 +scrollWrap=0 + +#Full absolute path to base directory for file explorer +baseDir=/mnt/sd/roms/nes/ + +#File filters +fileFilter=zip + diff --git a/out_gp2x/readme.txt b/out_gp2x/readme.txt new file mode 100644 index 0000000..a84fe95 --- /dev/null +++ b/out_gp2x/readme.txt @@ -0,0 +1,245 @@ +================================================================================= + GPFCE - NES emulator for the GP2X +================================================================================= + Ported by: zzhu8192 + Current version: 0.2 + Email: zzhu8192@yahoo.com + Web Site: www.unicorn-jockey.com + Web Site Admin: Lil-kun +================================================================================= + + +This is a gp2x port of the **great** Open Source NES emulator FCE Ultra: +http://fceultra.sourceforge.net. If you enjoyed using this emulator, please +keep in mind that this would not have been possible without the hard work and +dedication of the FCE Ultra developers. + +In case you don't know what the NES is about, see: +http://en.wikipedia.org/wiki/Famicom. + +My main reasons for working on this port is to get some game programming +experience on smaller devices. Although coding/porting an emu is +generally not the same thing, it's still pretty cool. +I'm an Enterprise Java software developer by trade, so this is a nice side project +for me, and a welcome change of pace. I'm also planning to write some +original games in Java for the GP2x. This should be interesting.... + + +------------------------------------------------------------------ +What's new +------------------------------------------------------------------ +Current version number is now: 0.2 + +Many usability features were added, thanks to some great input +from developers and users on the gp32x.com board. Some of the +changes went into the selector frontend. + +(I have sent my selector customization changes to kounch, + so hopefully the changes will make it into + version 1.2 or later for other projects to use) + +There are now 4 executable scripts. +gpfce +gpfce_showfps +gpfce_swapbuttons +gpfce_showfps_swapbuttons + +showfps: this means FPS is displayed on the upper left of the screen + (in non-stretch mode only). + +swapbuttons: this means instead of Y/A as NES_B and B/X as NES_A + use A/X as NES_B, and Y/B as NES_A. (think NES MAX) + +Volume meter is now shown on the OSD when adjusted. + + +See version history below for more details. + +Depending on feedback, speed and even more compability will +probably be the major focus going forward. + + +------------------------------------------------------------------ +Current Features +------------------------------------------------------------------ +- .zip file support +- 22050 Hz Mono Sound support with volume control support +- OSD Volume bar +- Load/Save state (up to 10 slots, pick by holding down R) +- Hardware stretch (See controls) +- Soft Reset +- Savegame support +- 60 FPS without frame skipping on many games +- Configurable Turbo Fire (hold L to toggle) +- Game genie/Cheat code (functionality already exists in FCEU 0.81) +- Sorted display of 2048 roms per subdirectory (recommended 512-1024)? +- Semi-Configurable button layout (startup only) +- configurable FPS display on upper left hand side + +-------------------------------------------------------------------- + Version History +-------------------------------------------------------------------- + + +ver 0.2 5/29/2006 MD5SUM: dd75fa3f090f9298f9f4afff01ab96f2 *gpfce + + - Sound output issue with stereo fixed, now using + 22050 khz 16-bit mono. I've tried interpolating to + 44khz mono, but the results seemed similar. + - selector supports up to 2048 files, sorted, with + alpha scrolling via left/right in addition to + page up/down via L/R. + - additional startup scripts to select button and fps + configurations + - can load FDS files, but does not seem to work yet + - configurable buttons (use swapbuttons version ) + - configurable fps (use showfps version) + - Configurable turbo fire control + - Selectable save slots from 0-9 + - Volume bar + - compiled with GCC 4.1.0 -O3 with profiling + + +ver 0.1 5/23/2006 MD5SUM: 13681f25713ad04c535c23f8c61f1e0b *gpfce + + + - Initial version + - Around 60 fps with sound + - Load/Save State + - Hardware Stretch + - Soft reset support + - No GUI, using selector with config + - Hard coded 22050 audio, 16-bit, stereo + - compiled with GCC 4.1.0 -O3 with profiling + - Hard coded config path. This is to prevent users + from filling up the gp2x space by accident + + +------------------------------------------------------------------ +Usage +------------------------------------------------------------------ +1) Untar the emulator tarball onto some directory on your SD card. +2) You must have a directory called /roms/nes on your SD card. + Put the roms in there, i.e. /mnt/sd/roms/nes is the gp2x path. + Rom files can be zipped. +3) The emulator will create a subdirectory under roms + /roms/nes/fceultra. Save states etc. go here. +4) To start a different rom while running one, hit L+R+JOY. + To exit the file selection menu, press start. +5) For FDS support, put disksys.rom in /mnt/sd/roms/nes/fceultra + Note: FDS roms must not be zipped. +6) For GameGenie support, put gg.rom in /mnt/sd/roms/nes/fceultra + +------------------------------------------------------------------ +Cheats +------------------------------------------------------------------ + +gpfce uses the cheat mechanisms already provided by +http://mednafen.com/documentation/cheat.html Note this feature +is untested on gpfce as of version 0.2 + +To use game genie, place appropraite gg.rom into /mnt/sd/roms/nes/fceultra. +Use -gg on commandline to activate the game genie rom. + + +------------------------------------------------------------------ +Controls +------------------------------------------------------------------ + +Note: JOY means press in on the joystick (i.e. not up/down/left/right) + + +In file selector mode +(This is based on selector version 1.1) +---------------------------------------------- +Start - EXIT file selector, back to main menu. +B,A,X,Y, JOY - start rom +L - page up +R - page down +UP - scroll up one, wraps if at top +DOWN - scroll down one, wraps if at bottom +LEFT - jump up list by first letter of rom name +RIGHT - jump down list by first letter of rom name + + + + +In game +------------------------ +Y - NES B +A - NES B +B - NES A +X - NES A +SELECT - NES SELECT +START - NES START +VOL +/- - Vol control. + +hold L - toggles between + No Turbo Fire, + Upper row of buttons turbo fire + Lower row of buttons turbo fire + +hold R - cycles through save state slots + +L & JOY - Save state +R & JOY - Load State +SEL & JOY - Stretch screen toggle +L & R - Reset NES + +L + R + JOY - Exit back to menu + + +FDS only +------------------------------- +L - insert disk +R - eject disk +JOY - select disk + + + +------------------------------------------------------------------ +Known issues +------------------------------------------------------------------ +1) Stretch mode could use a better aspect ratio. Looks a bit odd. + Might look into some fancy non-2x filtering algorthms, if there are such things. +2) Not thoroughly QA'd +3) S-Video not working +4) FDS does not seem to be working +5) Some compatibility issues +6) Can't sustain 60fps on some games +7) Some clipping issues in some games +8) Game genie behaves a bit odd, although code works... + +------------------------------------------------------------------ + Might have time to do list +------------------------------------------------------------------ +1) Fix more known issues +2) Better looking stretch? +3) File based Game genie support +4) Cleaner build +5) Full speed on all games. (This may require some work) +6) Better compability +7) Multiplayer support via cable - this one is obviously pretty + tricky. Will need cables and a usb hub first. + It's definitely possible, but is not a priority at this point. + + +------------------------------------------------------------------ + Many thanks +------------------------------------------------------------------ +- To lots of talented developers on the http://www.gp32x.com/board/ + Reesy, Squidge, etc. for responding to my technical questions. +- Thanks to +- Lil-kun - for the neat GPFCE logo and the Web Site (under construction) :D +- Referenced source code from MameGP2X (Franxis) and FCEU-0.3 gp2x (Noname) +- Awesome wiki: http://wiki.gp2x.org/wiki/Main_Page +- Awesome gp2x site: http://www.gp32x.com/ +- ryleh's minimal lib - w/o which this wouldn't have worked +- FCE Ultra developers (http://fceultra.sourceforge.net/) + for the wonderful and feature rich NES emulator. +- kounch for Selector frontend - works great for lazy developers like me. :-D + I have sent my changes to kounch, so hopefully the changes will make it into + version 1.2 or later. +- gp2x community - just plain rocks + + diff --git a/out_gp2x/readme_cheat.txt b/out_gp2x/readme_cheat.txt new file mode 100644 index 0000000..9d74a5d --- /dev/null +++ b/out_gp2x/readme_cheat.txt @@ -0,0 +1,283 @@ + + + FCE Ultra Cheat Guide + +***** This file was obtained from ***** +http://mednafen.com/documentation/cheat.html + + +/Last updated November 12, 2003 +Valid as of FCE Ultra 0.97.4/ + +*Table of Contents:* + + * Introduction <#intro> + o Cheat Files <#cheatfiles> + * The Windows Interface <#windows> + o Cheat Search Interface <#windows-search> + * The Text Interface(TODO) + * Examples <#examples> + o "Mega Man 3" Windows Example <#examples-mm3> + o "Over Horizon" Text Interface Example <#examples-oh> + * Tips <#tips> + +------------------------------------------------------------------------ + + + Introduction + +FCE Ultra allows cheating by the periodic "patching" of arbitrary +addresses in the 6502's memory space with arbitrary values, as well as +read substitution. "Read substitution" is the method that would be used +on a real NES/Famicom, such as done by the Game Genie and Pro Action +Replay. It is required to support GG and PAR codes, but since it is +relatively slow when done in emulation, it is not the preferred method +when a RAM patch will suffice. Also, in FCE Ultra, read substitution +will not work properly with zero-page addressing modes(instructions that +operate on RAM at $0000 through $00FF). + +The RAM patches are all applied a short time before the emulated +vertical blanking period. This detail shouldn't concern most people, +though. However, this does mean that cheating with games that use +bank-switched RAM may be problematic. Fortunately, such games are not +very common(in relation to the total number of NES and Famicom games). + + + Cheat Files + +Cheats are stored in the "cheats" subdirectory under the base FCE Ultra +directory. The files are in a simple plain-text format. Each line +represents a one-byte memory patch. The format is as follows(text in +brackets [] represents optional parameters): + + [S][C][:]Address(hex):Value(hex):[Compare value:]Description + +Example: + + 040e:05:Infinite super power. + +A colon(:) near the beginning of the line is used to disable the cheat. +"S" denotes a cheat that is a read-substitute-style cheat(such as with +Game Genie cheats), and a "C" denotes that the cheat has a compare value. + +------------------------------------------------------------------------ + + + The Windows Interface + +All addresses listed in the cheats window are in unsigned 16-bit +hexadecimal format and all values in these windows are in an unsigned +8-bit decimal format(the range for values is 0 through 255). + +The cheats window contains the list of cheats for the currently loaded +game on the right side. Existing cheats can be selected, edited, and +updated using the "Update" button. + + + Cheat Search Interface + +The cheat search interface consists of several components: a list of +addresses and associated data for a search, several command buttons, and +the search parameters. + +Each entry in the list is in the format of: + + Address:Original Value:Current Value + +The address is the location in the 6502's address space, the original +value is the value that was stored at this address when the search was +reset, and the current value is the value that is currently stored at +that address. Selecting an item in this list will automatically cause +the "Address" field in the cheat information box on the right side of +the window to be updated with the selected address. + +The "Reset Search" button resets the search process; all valid addresses +are displayed in the cheat list and the data values at those addresses +noted. + +The "Do Search" buttons performs a search based on the search parameters +and removes any non-matching addresses from the address list. + +The "Set Original to Current" button sets the remembered original values +to the current values. It is like the "Reset Search" button, but it does +not affect which addresses are shown in the address list. This command +is especially useful when used in conjunction with the "O!=C" search +filter. + +The "Unhide Excluded" button shows all addresses that are excluded as a +result of any previous searches. It is like the "Reset Search" button +except that it does not affect the remembered original values. + +The numbers assigned the names "V1" and "V2" have different meanings +based on which filter is selected. A list of the names of the filters +and detailed information on what they do follows("original value" +corresponds to the value remembered for a given addres and "current +value" is the value currently at that address. Also, if a value is not +explicitly said to be shown under a certain condition, then it is +obviously excluded.): + +"O==V1 && C==V2": + + Show the address if the original value is equal to "V1" AND the + current value is equal to "V2". + +"O==V1 && |O-C|==V2": + + Show the address if the original value is equal to "V1" AND the + difference between the current value and the original value is equal + to "V2". + +"|O-C|==V2": + + Show the address if the difference between the current value and the + original value is equal to "V2". + +"O!=C": + + Show the address if the original value does not equal the current + value. + +The following cheat methods/filters automatically perform the function +of the "Set Original to Current" button after "Do Search" is pressed. + +"Value decreased." + + Show the address if the value has decreased. + +"Value increased." + + Show the address if the value has increased. + +------------------------------------------------------------------------ + + + Examples + + + "Mega Man 3" Windows Example + +This example will give Mega Man unlimited energy. Immediately after +entering the Top Man stage, make your way to the "Add Cheat" window. +Push "Reset Search". Go back to playing and move right until the first +enemy appears. Allow yourself to be hit twice. Each hit does "2" damage, +so you've lost 4 energy bars. Go to the "Add Cheat" window again and +select the third filter ("|O-C|==V2") and enter the value 4 next to +"V2". Then push "Do Search". + +Several addresses will appear in the address list. You can try to find +the address you want through trial and error, or you can narrow the +results down further. We will do the latter. + +Go back to playing MM3 and get hit one more time and make your way back +to the "Add Cheat" window. Your damage is now "6". You can probably see +which address that contains your life(it is 00A2). If not, change V2 to +6 and push "Do Search" again. This should leave only 00A2. + +Select that entry in the address list. Shift your attention to the "Add +Cheat" box to the right. Type in a meaningful name and the desired +value(156; it was the value when you had no damage, so it's safe to +assume it's the maximum value you can use). Push the "Add" button and a +new entry will appear in the cheats list. The cheat has been added. + + + "Over Horizon" Text Interface Example + +This example will give you infinite lives in the NTSC(Japanese) version +of "Over Horizon". + +Start a new game. Notice that when you press "Start" during gameplay, +the number of lives you have left is indicated. With no cheating, you +start with 3 lives(2 lives left). + +Activate the cheat interface immediately after starting a new game. +Select the "New Cheats" menu and "Reset Search". + +I'll assume that the number of lives left shown in the game is the same +number that's stored in RAM. Now, "Do Search". You're going to use the +first search filter. For V1, enter the value 2. For V2, enter the same +value. This, coupled with the fact that you just reset the search, will +allow you to search for a value "absolutely"(as opposed to changes in +the value). + +Now, "Show Results". When I did it, I received 11 results: + + 1) $0000:002:002 + 2) $001c:002:002 + 3) $001e:002:002 + 4) $009d:002:002 + 5) $00b9:002:002 + 6) $00e3:002:002 + 7) $0405:002:002 + 8) $0406:002:002 + 9) $0695:002:002 + 10) $07d5:002:002 + 11) $07f8:002:002 + +You really can't do much yet(unless you want to spend time doing trial +and error cheat additions). Return to the game. + +After losing a life, go back to the cheat interface, to the "New Cheats" +menu, and "Show Results". Here are my results: + + 1) $0000:002:002 + 2) $001c:002:002 + 3) $001e:002:002 + 4) $009d:002:002 + 5) $00b9:002:041 + 6) $00e3:002:002 + 7) $0405:002:001 + 8) $0406:002:002 + 9) $0695:002:002 + 10) $07d5:002:001 + 11) $07f8:002:002 + +Notice that two addresses seem to hold the number of lives($0405 and +$07d5). You can lose another life and go "Show Results" again, and you +should see that $07d5 is the address that holds the number of lives. + +Now that you know the address that holds the number of lives, you can +add a cheat. You can either type in the number from the cheat results +list corresponding to the address you want to add a cheat for, or you +can remember the address and select "Add Cheat" from the "New Cheats" +menu. Do the former. + +Now you will need to enter a name for the cheat. I suggest something +short, but descriptive. "Infinite lives" will work fine. Next, a prompt +for the address will show up. Since you selected an item from the list, +you can press enter to use the associated address($07d5). Next, you will +need to enter a value. It doesn't need to be large(in fact, it probably +shouldn't be; abnormally high numbers can cause some games to +misbehave). I suggest a value of 2. After this, you should get a prompt +that looks like this: + + Add cheat "Infinite lives" for address $07d5 with value 002?(Y/N)[N]: + +Answer "Y". You now have infinite lives. + +------------------------------------------------------------------------ + + + Tips + +Games store player information in many different ways. For example, if +you have "3" lives in Super Wacky Dodgeball 1989, the game might store +it in memory as 2, 3, or 4, or perhaps a different number all together. +Also, say that you have 69 life points out of 200 in Mole Mashers. The +game might store how many life points you have, or how much damage you +have taken. Relative value searches are very valuable because you +probably don't know the way that the game stores its player data. + +Some games, especially RPGs, deal with individual numbers greater than +8-bits in size. Most that I've seen seem to store the multiple-byte data +least significant byte(lower byte of number) first in memory, though +conceivably, it could be stored most significant byte first, or the +component bytes of the number could be non-contiguous, though the latter +is very unlikely. For example, say I have 5304 experience points in +Boring Quest for the Overused Plot Device. To split the number into two +eight bit decimal numbers, take 5304 %(modulus) 256. This will give a +number that is the lower 8 bits. Next, take 5304 / 256. The integral +component of your answer will be the upper 8 bits(or the next 8 bits, if +the number is or can be larger than 16 bits) of 5304. Now you will need +to search for these numbers. Fortunately, most(all?) RPGs seem to store +large numbers exactly as they are shown in the game. + diff --git a/out_gp2x/selector b/out_gp2x/selector new file mode 100644 index 0000000..187e41e Binary files /dev/null and b/out_gp2x/selector differ