***** SNES9x PS3 *********************************************************
***** Version 4.4.1 ******************************************************

This is an application for the PlayStation3 that makes it possible to play
Super Nintendo Entertainment System / Super Famicom games on your jailbroken
PlayStation3. It is based on an up-to-date version of the popular PC emulator,
SNES9x.

=========================================
         Table of Contents
=========================================
1. Currently Implemented SNES9x functions........................
2. Controls......................................................
     2.1.1 - Controls in ROM menu................................
     2.1.2 - Controls in Settings menu...........................
     2.1.3 - Controls in-game....................................
3. Settings......................................................
     3.1 - General Settings......................................
     3.2 - SNES9x Settings.......................................
     3.3 - Path Settings.........................................
4. Cheat code files..............................................
5. IPS/UPS translation patches...................................
6. Currently known issues (as of 4.3.1)..........................
     6.1 - To play NTSC games properly on 576p PAL mode..........
     6.2 - Resolution switching disabled for FW 1.92 build.......
7. Notes.........................................................
     7.1 - General notes.........................................
     7.2 - Performance notes.....................................
     7.3 - Performance w/ pixel shaders..........................
8. Planned improvements..........................................
9. For Developers................................................
     9.1 - Source Code Repository................................
          9.1.1 - Getting the latest SNES9x revision.............
     9.2  - Compilation Instructions.............................
          9.2.1 - For SDK 1.92...................................
          9.2.2 - For SDK 3.41...................................
	  9.2.3 - To make a debugging-friendly compile...........
     9.3 - CellFramework.........................................
          9.3.1 - Getting the latest Cellframework revision......
10. Credits......................................................
     


1. CURRENTLY IMPLEMENTED SNES9X FUNCTIONS
=========================================
* ZIP/JMA support
* Saving/loading of SRAM
* Savestate loading/saving support
  - Savestate slot selectable in-game
  - Up to 10 saveslots
  - Compression of savestates with gzip
* Controls
  - Two player support
  - Multitap support (up to five players)
* Supports IPS/UPS translation patches
* Supports cheatcode files (cht)

2. CONTROLS
===========
2.1.1 CONTROLS IN ROM MENU
==========================
Up				- Go up
Down				- Go down
Left				- Go back five file entries
Right				- Go forward five file entries
L1				- Go back one page
R1				- Go forward one page

Cross				- (If directory selected) enter directory/ (if ROM selected) start ROM
Triangle			- (If ROM selected) start ROM with multitap support
Circle				- (If not in root directory) Go back to previous directory
L2 + R2				- (If you previously exited a ROM) return to game
Select				- Go to settings menu (see 'CONTROLS IN SETTINGS MENU' section)

2.1.2 CONTROLS IN SETTINGS MENU
===============================
Up				- Go up one setting.
Down				- Go down one setting.
Left				- Change setting to the left.
Right				- Change setting to the right.

Circle				- Go back to ROM menu/Go back to previous Settings screen
Start				- Reset the setting back to the default value.
R1				- Go to the next Settings screen
L1				- Go to the previous Settings screen

2.1.3 CONTROLS IN-GAME
======================
Nothing worth really explaining here - 

R3 + L3				- Press these two buttons together while in-game to go back to the ROM browser menu.

R3 + R2				- Save to currently selected save state slot
R3 + L2				- Load from currently selected save state slot

Right analog stick - Left	- Move current savestate slot one slot backwards
Right analog stick - Right	- Move current savestate slot one slot forward
Right analog stick - Left + L2	- Move cheat position back by one (-1)
Right analog stick - Right + L2	- Move cheat position forwards by one (+1)
Right analog stick - Up		- Enable the currently selected cheat
Right analog stick - Down	- Disable the currently selected cheat

TIP: You can use any USB controller you like and it will map the buttons on the fly - it is even possible to hotswap joysticks - remove one from the
USB port, replace it with another one - it should all work fine. even SNES-to-USB converters should work.

To play a game with a USB controller as Player 1, start up your PS3 and rather than using the Sixaxis/DualShock3, plug in an USB port before
connecting the controller to the PS3 - your USB pad should then become Controller 1.

3. SETTINGS
===========

3.1 GENERAL SETTINGS
====================
Current save state slot		- Set the save state slot - this way, you can save multiple states and switch inbetween save states
Resolution			- Switch between resolutions - 480p mode, 720p mode and 1080p mode (depending on your monitor's supported resolutions) (*)
PAL60 Mode (576p only)		- (Only takes effect if you're running at 576i/p resolution) When set to 'ON', NTSC ROMs will run correctly. If set to 'OFF', PAL ROMs will run correctly.
Selected Shader			- Select a shader - the default shader is '/stock.cg'. Choose between 2XSaI, Bloom shader, curved CRT shader, HQ2x,
				Super2xSaI, SuperEagle, and more
Aspect Ratio			- Switch between aspect ratios 4:3 and 16:9.
Hardware Filtering		- Switch between Linear interpolation (Bilinear filtering) and Point filtering.
Overscan			- Set this to a certain value so that no part of the screen is cutoff on your television/monitor. Which value to set varies
				depending on your monitor/TV
Sound				- Switch between Normal mode and RSound mode. RSound basically lets you redirect the audio from the PS3 over the network
				to a PC - so, using this, the audio from SNES9x can be outputted on a PC/laptop/netbook/HTPC's speakers/audio installation
				instead of going through the television speakers or the audio receiver connected to the television.
RSound Server IP Address	- Set the IP address for the RSound server. Will pop up an onscreen keyboard where you must input a valid IP address that
				points to the server that will be running an RSound server application.
DEFAULT				- Set all of the general settings back to their default values

* - This option does not work on the FW 1.92 version at the moment.

3.2 SNES9X SETTINGS
===================
Display framerate		- This will show the FPS (Frames Per Second) onscreen
Sound Input Rate		- The sound input rate of the SNES' audio processor. Runs fine at default (31942)
Transparency Effects		- Disable transparency effects (*)
Frame skip			- Set frame skipping - normally set to AUTO (*)
Disable graphic windows		- Disable graphic windows (*)
Display button input		- Show button input onscreen (Useful for those who experience button lag so we can determine whether it's actually
				registering something)
Force NTSC ROM to PAL		- Set this to ON everytime you want to play a NTSC ROM at 50Hz (for PAL 576p). Beware though that certain games might
				have region protection so that you could not play an NTSC cart on an PAL machines. This is definitely not the way it
				was intended to run PAL ROMs - it is simply a hack, and it works well on most games. You have to set this back to ON
				for every game you try to load; it will automatically turn itself off after having loaded the ROM
Force PAL ROM to NTSC		- Set this to ON everytime you want to play a PAL ROM at 60Hz. Beware though that certain games had region protection
				so that you could not play a PAL cart on an NTSC machine - this started with Super Mario All-Stars. Other games will
				simply crash when you attempt this - so this is definitely not the way it was intended to run PAL ROMs - it is simply
				a hack, and it works well on most games. You have to set this back to ON for every game you try to load; it will 
				automatically turn itself off after having loaded the ROM
PAL Timing			- Change PAL timing - press Left to set it to 16667 (same as NTSC), and Right to set it to 2000 (PAL). 2000 is recommended
				by default. (*)
Auto-apply Cheats		- If a CHT file is available that has the same name as the ROM filename, should it automatically be loaded? On if 'Yes',
				'No' if you don't want this
Auto-apply IPS/UPS Patch	- When an IPS/UPS patch is in the same folder as the ROM and it has the same filename, then should this patch be auto-
				matically applied? Set to 'Yes' if you want this, set to 'No' if you don't.
DEFAULT				- Set all of the SNES9x settings back to their default values

* - will probably remove this in the future as there's no point to it

3.3 PATH SETTINGS
=================
Startup ROM Directory		- Set the default ROM path to be used. The emulator will use this as the 'root' directory inside the ROM menu. Is set to '/'
				by default.
Savestate Directory		- Set the default savestate directory - all your savestates will be saved here and loaded from this location. Is set to
				USRDIR by default.
Cheatfile Directory		- Set the default cheatfile directory - all your cheatfiles will be saved here and loaded from this location. Is set to
				USRDIR by default.
DEFAULT				- Set all of the path settings back to their default values

4. CHEAT CODE FILES
===================
Cheat code files need to be have the same filename as the ROM you want to apply it to.

For instance:

Seiken Densetsu 3 (Japan).sfc

The cheatfile would have the following name:

Seiken Densetsu 3 (Japan).cht

Cheatcode files are to be stored either in the default directory (USRDIR), or in the directory that you have set as the 'Cheatfile directory' (see 'PATH SETTINGS')

NOTE: See '2.1.2 - CONTROLS IN-GAME' for an explanation of settings activation/deactivation and selecting ingame.

5. IPS/UPS TRANSLATION PATCHES
==============================

Put a IPS or UPS translation patch with the same filename as the ROM you want it applied to in the same directory, and load up the ROM.

For instance,

Seiken Densetsu 3 (Japan).sfc

should have an UPS file in the same folder with the following name:

Seiken Densetsu 3 (Japan).ups

6. CURRENTLY KNOWN ISSUES (AS OF BUILD 4.4.1)
==========================================

6.1 TO PLAY NTSC GAMES PROPERLY ON 576P PAL MODE
================================================
1) If you're running at 576p PAL mode, keep in mind that in order to run NTSC ROMs correctly, PAL60 needs to be set to 'ON'. Also keep in mind that when PAL60 is set to ON, PAL ROMs will not run correctly, so you need to set it to 'OFF' when you want to play a PAL ROM. We aim to make this transparent for the user in a future release.

6.2 RESOLUTION SWITCHING DISABLED FOR FW 1.92 BUILD
===================================================
2) Resolution switching has been disabled currently for the 1.92 build due to it not working properly.

7. NOTES
========

7.1 GENERAL NOTES
=================
* For people running this on HDTVs complaining about input lag:
	- Turn off all post-processing filters you may have running - on Sony Bravia HDTVs, display Motion Flow (this also causes input lags
	with most games in general, not just this SNES emu. If your HDTV has a 'Game' mode or something of the sort, select that as well.

7.2 PERFORMANCE NOTES
=====================
Here is how most games will run (at any resolution - 480p/720p/1080p):

- Normal games (no special enhancement chips)						 = 60fps
- DSP-1 (Super Mario Kart/PilotWings)							 = 60fps
- DSP-1B (Ballz)									 = 60fps
- DSP-2 (Dungeon Master)								 = 60fps
- DSP-4 (Top Gear 3000)									 = 60fps
- SA-1 (Super Mario RPG/Jikkyou Oshaberi Parodius/Kirby Superstar/Kirby's Dreamland 3)	 = 60fps
- Cx4 (Mega Man X2/Mega Man X3)								 = 60fps
- OBC-1 (Metal Combat: Falcon's Revenge							 = 60fps
- SDD-1 (Star Ocean/Street Fighter Alpha 2)						 = 60fps
- S-RTC (Dai Kaiju Monogatari 2)							 = 60fps
- SuperFX 1/2
  - Star Fox 1										 = 60fps
  - Stunt Race FX									 = 60fps
  - Doom										 = 60fps
  - Super Mario World 2: Yoshi's Island							 = 60fps
  - Star Fox 2										 = not 60fps constant
  - Vortex										 = not 60fps constant
  - Winter Gold										 = 50fps (was a PAL game)
  - Dirt Racer										 = 60fps

7.3 PERFORMANCE NOTES - SHADERS
===============================
Here is the performance of the various fragment/pixel shaders:

SHADER NAME	576p 4:3   576p 16:9   480p 4:3   480p 16:9   720p 4:3   720p 16:9   1080p 4:3   1080p 16:9	
=============================================================================================================
2xSaI		60fps      60fps       60fps      60fps       60fps      60fps       60fps       60fps 
Bloom		60fps      60fps       60fps      60fps       60fps      60fps       60fps       30fps (*)
Blur		60fps      60fps       60fps      60fps       60fps      60fps       60fps       60fps
CRT		60fps      60fps       60fps      60fps       60fp       60fps       30fps (*)   30fps (*)
HQ2x		60fps      60fps       60fps      60fps       60fps      60fps       60fps       60fps
Quad_Interp	60fps      60fps       60fps      60fps       60fps      60fps       60fps       60fps
Scanlines	60fps      60fps       60fps      60fps       60fps      60fps       60fps       60fps
Sharpen		60fps      60fps       60fps      60fps       60fps      60fps       60fps       60fps
Stock (Default) 60fps      60fps       60fps      60fps       60fps      60fps       60fps       60fps
Super2xSaI	60fps      60fps       60fps      60fps       60fps      60fps       30fps (*)   30fps (*)
SuperEagle	60fps      60fps       60fps      60fps       60fp       60fps       60fps       30fps (*)

* - Not fullspeed, try a lower resolution (720p or lower)

8. PLANNED IMPROVEMENTS
=======================
* Include keyboard support and map it by default to the following buttons:
- b,a,y,x,l (for face and trigger buttons)
- arrow keys for D-pad
- start = enter
- select = shift
Also make this configurable
* A better frontend
* Be able to input cheat codes with the OSK utility (on-screen keyboard)
* Super Scope support (using analog stick or Move)
* Mouse support (using analog stick or Move)

9. FOR DEVELOPERS
==================

9.1 SOURCE CODE REPOSITORY
===========================
This release corresponds with revision = da152b168e

Source code repository is here:

https://code.google.com/p/snes9x-ps3/

9.1.1 GETTING LATEST SNES9X REVISION
=====================================
To be able to check out the latest revision, you must have Mercurial installed on your system. Type in the following:

hg clone https://snes9x-ps3.googlecode.com/hg/ snes9x-ps3  

9.2 COMPILATION INSTRUCTIONS
===============================

9.2.1 FOR SDK 1.92
=====================
1 - Edit the Makefile and comment out the following lines below the comment 'for 3.41':

#for 3.41
PPU_CLAGS		+= -DPS3_SDK_3_41
PPU_CXXFLAGS		+= -DPS3_SDK_3_41

3 - Do 'make clean && make && make pkg'

9.2.2 FOR SDK 3.41
=====================

1 - Do 'make clean && make && make pkg'

9.2.3 TO MAKE A DEBUGGING-FRIENDLY COMPILE
=============================================
We provide a netlogger in case you want to have some way of debugging SNES9x PS3 remotely.

1 - Edit the Makefile and comment out the following lines below the comment 'debugging':

#PPU_CFLAGS += -DCELL_DEBUG -DPS3_DEBUG_IP=\"192.168.1.7\" -DPS3_DEBUG_PORT=9001
#PPU_CXXFLAGS += -DCELL_DEBUG -DPS3_DEBUG_IP=\"192.168.1.7\" -DPS3_DEBUG_PORT=9001

The IP address needs to be changed to the IP address of the host machine that will be running netcat.

2 - Do 'make clean && make compile'.

3 - Install SNES9 PS3 on your PS3, start up netcat on your PC with the following command:

netcat -l -p 9001

4 - Start up SNES9x PS3. if all went well, you will see debugging messages on your PC with the netcat application.

9.3 CELLFRAMEWORK
===================
SNES9x is an implementation of 'Cellframework', which is written by the same developers as a rudimentary framework
for PS3 app development. It provides more-or-less complete classes for graphics, input, audio, and network.

Cellframework is a subrepository of SNES9x. To update the subrepository, from the commandline, go to the folder and type 'hg up'.

Source code repository for Cellframework is here:

https://code.google.com/p/cellframework/)

9.3.1 GETTING LATEST CELLFRAMEWORK REVISION
=============================================
To be able to check out the latest revision, you must have Mercurial installed on your system. Type in the following:

hg clone https://cellframework.googlecode.com/hg/ cellframework

10. CREDITS
===========
Orioto	-	PIC1.PNG based on 'Milky Sky' (http://orioto.deviantart.com/gallery/?6943610#/d1k3qg7)
