Play! - PlayStation 2 Emulator
Go to file
jpd002 d1bd353096 Attempt to make texture uploading faster.
Better cleaning up of GS when closing emulator.

git-svn-id: http://svn.purei.org/purei/trunk@483 b36208d7-6611-0410-8bec-b1987f11c4a2
2009-02-18 03:38:59 +00:00
config Moar stuff for Guilty Gear XX. 2008-10-20 04:14:13 +00:00
Purei.xcodeproj MacOSX stuff 2008-12-24 02:03:58 +00:00
Source Attempt to make texture uploading faster. 2009-02-18 03:38:59 +00:00
tags Tags fix due to changes in sysmem module. 2008-12-06 03:00:43 +00:00
tests git-svn-id: http://svn.purei.org/purei/trunk@150 b36208d7-6611-0410-8bec-b1987f11c4a2 2007-05-02 17:45:31 +00:00
tools PsfPlayer: 2009-02-15 21:19:32 +00:00
patches.xml Some stuff for Guilty Gear XX. 2008-10-20 04:12:44 +00:00
Purei.sln Removed uses of CList, CEvent, CEventEx, CEventHandler. 2008-08-24 21:28:42 +00:00
Purei.vcproj Added option in file menu to boot disk images directly. 2009-02-18 00:56:38 +00:00
Readme.html Moved remotely 2006-06-15 04:20:18 +00:00

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html>

	<head>
		<title>プレイ! - Official Documentation</title>
		<style type="text/css">
			table
			{
				border: 1px outset black;
			}
			
			td
			{
				border: 1px inset black;
			}
			
			table.comp
			{
				width: 100%;
			}
			
			table.ext
			{
				width: 100%;
			}
			
			table.ctrl
			{
				width: 100%;
			}
			
			td.ctrl_header
			{
				width: 50%;
				text-align: center;
				text-decoration: underline;
			}
			
			td.comp_header
			{
				width: 50%;
				text-align: center;
				text-decoration: underline;
			}
						
			td.comp_header
			{
				width: 50%;
				text-align: center;
				text-decoration: underline;
			}

		</style>
		
	</head>
	
	<body>
		
		<h1>プレイ! - Official Documentation</h1>
		
		<div>
			<h2>Table of Contents</h2>
			
			<ul>
				<li><a href="#disclaimer">Disclaimer</a></li>
				<li><a href="#whatsthis">What's this?</a></li>
				<li><a href="#requirements">System Requirements</a></li>
				<li><a href="#features">Technical Features</a></li>
				<li><a href="#guide">Basic User Guide</a>
					<ul>
						<li><a href="#guide_playing">Playing a Game</a></li>
						<li><a href="#guide_controls">Game Controls</a></li>
						<li><a href="#guide_state">State Saving/Loading</a></li>
					</ul>
				</li>
				<li><a href="#ext">OpenGL Extensions</a></li>
				<li><a href="#comp">Compatibility</a></li>
				<li><a href="#contact">Contact Information</a></li>
				<li><a href="#greetings">Special Thanks/Greetings</a></li>
			</ul>
			
		</div>
		
		<hr />
		
		<div>
		
			<h2 id="disclaimer">Discalimer</h2>
			
			<p>
			
				This PlayStation 2 emulator is provided as is with absolutely no garantees.
				<br /><br />
				The author takes no responsability for any damage/loss caused by the use of this emulator.
				<br /><br />
				You are not allowed to sell this emulator.
			
			</p>

		</div>
		
		<hr />
		
		<div>
			
			<h2 id="whatsthis">What's this?</h2>

			<p>

				Purei! (written in Japanese kana as well) is a PlayStation 2 console emulator still in
				preliminary stages. This won't run your favorite PlayStation 2 game perfectly and with
				the optimal speed: this only works with a few number of demos and games created by people 
				involved in the non-professional PS2 coding scene.

			</p>		

		</div>

		<hr />
		
		<div>

			<h2 id="requirements">System Requirements</h2>
			
			<p>
				A PC running Windows 2000/XP/2003 and a CPU supporting SSE should be enough to be able to run the emulator.
			</p>

			<p>
				For interesting emulation speeds, a CPU clocked at at least 1GHz is required.
			</p>

			<p>
				The emulator isn't really greedy memory wise, as 256MBs of RAM should be enough to prevent
				any hardcore virtual memory page swapping.
			</p>
			
		</div>
		
		<hr />
		
		<div>
		
			<h2 id="features">Technical Features</h2>
			
			<ul>
				<li>EmotionEngine:
					<ul>
						<li>Near complete emulation of the base MIPSIV core.</li>
						<li>Basic emulation of the MMI instruction subset.</li>
						<li>Basic COP0 (System Control Unit) / COP1 (Floating Point Unit) emulation.</li>
						<li>CPU emulation done using an instruction caching/recompilation scheme.</li>
					</ul>
				</li>

				<li>OS:
					<ul>
						<li>ELF binaries loading support.</li>
						<li>Basic BIOS system calls implemented.</li>
						<li>Basic interrupt servicing implemented.</li>
						<li>Basic thread scheduling support.</li>
					</ul>
				</li>
				
				<li>GS/GIF:
					<ul>
						<li>Basic GIF transfers implemented.</li>
						<li>Basic GS registers emulation.</li>
						<li>Basic GS rendering supported (using OpenGL).</li>
					</ul>
				</li>
				
				<li>VU/VIF:
					<ul>
						<li>Basic micromode support for the VU1.</li>
						<li>Basic macromode support for the VU0.</li>
						<li>Basic VIF transfers implemented.</li>
					</ul>
				</li>
				<li>DMAC:
					<ul>
						<li>Channel 0, 2, 4, 5 and 7 support.</li>
						<li>Channel 5 and 6 (SIF0 and SIF1) support using hacks. (should be using Source or Destination Chain modes)</li>
					</ul>
				</li>
				
				<li>IPU:
					<ul>
						<li>Only supports MPEG-1 compatible macroblock decoding for now.</li>
						<li>All commands emulated except for IDEC and PACK.</li>
					</ul>
				</li>
				
				<li>IOP/SIF:
					<ul>
						<li>High-level emulation of the IO processor done by intercepting SIF commands and routing them to native modules.</li>
						<li>Basic support for CDVDFSV, PADMAN, DBCMAN, FILEIO and LOADFILE modules.</li>
					</ul>
				</li>
				
				<li>INTC:
					<ul>
						<li>DMAC and V-Blank Start interrupt emulation.</li>
					</ul>
				</li>
			</ul>
			
		</div>
		
		<hr />
		
		<div>
		
			<h2 id="guide">Basic User Guide</h2>

			<h3 id="guide_playing">Playing a Game</h3>
			
		    <p>
				To play an homebrewn game or demo, follow these steps: 
		    </p>
		    
		    <ul>
				<li>Extract the contents of the archive containing the executable into the "/vfs/host" subdirectory present in the Purei! directory.</li>
				<li>Select "File | Load ELF..." from the menu bar.</li>
				<li>Select the ELF executable image file you've previously extracted.</li>
				<li>After a successful loading, the virtual machine will start executing the program.</li>
			</ul>
			
			<p>
				To play a commercial game present on a DVD-ROM or in a disk image in raw ISO9660 format, follow these steps:
			</p>
			
			<ul>
				<li>
					Configure the source that will be used to read the disk from by selecting "Options | Virtual File System Manager..." from the menu bar
					and double clicking on the "cdrom0" device.
					<ul>
						<li>
							If you have a physical disk you'll be reading from your DVD-ROM drive, click the "Physical CD/DVD Reader Device" radio button
						    and select the drive that'll be containing the disk in the combo box below.
						</li>
						<li>
							If you have a disk image, click the "ISO9660 Disk Image" radio button and select your image file by clicking the "..." button.
						</li>
						<li>
							Confirm your changes and go back to the main window.
						</li>
					</ul>
				</li>
				<li>Select "File | Boot cdrom0" from the menu bar.</li>
				<li>After a successful loading, the virtual machine will start executing the program.</li>
			</ul>
		    
		    <h3 id="guide_controls">Game Controls</h3>

			<p>
				This is the current controller to keyboard button mapping configuration which is hardcoded in the
				program for the moment. It will be possible to change them in a later version.
			</p>
			
			<table class="ctrl">
				<tr>
					<td class="ctrl_header">Dual Shock Controller Button</td>
					<td class="ctrl_header">Keyboard Equivalent</td>
				</tr>
				<tr>
					<td>Left (d-pad)</td>
					<td>Left Arrow</td>
				</tr>
				<tr>
					<td>Right (d-pad)</td>
					<td>Right Arrow</td>
				</tr>
				<tr>
					<td>Up (d-pad)</td>
					<td>Up Arrow</td>
				</tr>
				<tr>
					<td>Down (d-pad)</td>
					<td>Down Arrow</td>
				</tr>
				<tr>
					<td>Square</td>
					<td>A</td>
				</tr>
				<tr>
					<td>Cross (X)</td>
					<td>Z</td>
				</tr>
				<tr>
					<td>Triangle</td>
					<td>S</td>
				</tr>
				<tr>
					<td>Circle</td>
					<td>X</td>
				</tr>
				<tr>
					<td>Start</td>
					<td>Return</td>
				</tr>
				<tr>
					<td>Select</td>
					<td>Left or Right Shift</td>
				</tr>
			</table>

			<h3 id="guide_state">State Saving/Loading</h3>
			
			<p>
				Since memory card support isn't there yet, you might find it more convenient to save your
				games using saved states. To save a state, simply press F7 or select the "Virtual Machine | Save State" menu item.
				To load a previously saved state, press F8 or select the "Virtual Machine | Load State" menu item. There's also 10 slots
				available for you to place your saved states in, accessible through the "Virtual Machine | State Slot" submenu.
			</p>
			
		</div>
		
		<hr />
		
		<div>
		
			<h2 id="ext">OpenGL Extensions</h2>
			
			<p>
			
				The current GS handler requires some OpenGL extensions to be allowed to render
				some features of the GS correctly. To check which extensions are supported by your video card
				driver, consult the "Renderer Settings" dialog in the emulator. The following table 
				lists which extensions are currently being used and what might be the consequences 
				if your video card driver do not support them.
			
			</p>
			
			<table class="ext">
				<tr>
					<td class="comp_header">Extension</td>
					<td class="comp_header">Absence Effect</td>
				</tr>
				<tr>
					<td>glBlendColor function</td>
					<td>Used for "Ys I &amp; II: Eternal Story". Some elements of the game that should appear translucent will appear opaque.</td>
				</tr>
				<tr>
					<td>glBlendEquation function</td>
					<td>Used for "Ys I &amp; II: Eternal Story". Some elements of the game that should appear translucent will appear opaque.</td>
				</tr>
				<tr>
					<td>glColorTable function</td>
					<td>Used for "Ys I &amp; II: Eternal Story". Textures need to be converted to the RGBA8888 format resulting in a slow down.</td>
				</tr>
				<tr>
					<td>GL_UNSIGNED_SHORT_1_5_5_5_REV texture format</td>
					<td>Used for "Lobotoma". Textures need to be converted to the RGBA8888 format resulting in a slow down.</td>
				</tr>
			</table>
			
		</div>
		
		<hr />
		
		<div>
		
			<h2 id="comp">Compatibility</h2>
			
			<p>
				The following table lists the games I've tested with the emulator and the status of thier support. 
				Please note that sound isn't considered in this compatibility list.
			</p>
			
			<table class="comp">
				<tr>
					<td class="comp_header">Game/Demo</td>
					<td class="comp_header">Compatibility Status</td>
				</tr>
				<tr>
					<td class="comp_header" colspan="2">Commercial Games</td>
				</tr>
				<tr>
					<td>Ys I &amp; II: Eternal Story (SPLS_252.06)</td>
					<td>
						<ul>
						<li>No particles when hitting enemies;</li>
						<li>Might crash (rarely) when playing movies;</li>
						<li>Flickering in some scenes.</li>
						</ul> 
					</td>
				</tr>
				<tr>
					<td class="comp_header" colspan="2">Homebrewn</td>
				</tr>
				<tr>
					<td>1987 (1987.elf)</td>
					<td>Working.</td>
				</tr>
				<tr>
					<td>By The Way (bytheway.elf)</td>
					<td>Video output is cut in half.</td>
				</tr>
				<tr>
					<td>Cube Mastah (cubemastah.elf)</td>
					<td>Working.</td>
				</tr>
				<tr>
					<td>FiRE (FiRE.elf)</td>
					<td>Working.</td>
				</tr>
				<tr>
					<td>Lobotomia (LOBOTOM.ELF)</td>
					<td>Flickering in some scenes.</td>
				</tr>
				<tr>
					<td>Plasma Tunnel (plasma_tunnel.elf)</td>
					<td>Rendering progress visible.</td>
				</tr>
				<tr>
					<td>PS2 Invaders v1.6 (space.elf)</td>
					<td>Working.</td>
				</tr>
				<tr>
					<td>Quake (quake.elf)</td>
					<td>Working with the version that doesn't use the USB module.</td>
				</tr>
				<tr>
					<td>Slave of the VU (slave_of_the_vu.elf)</td>
					<td>Working.</td>
				</tr>
			</table>
		</div>
		
		<hr />
		
		<div>
			
			<h2 id="contact">Contact Information</h2>
			
			<p>
				e-mail: <a href="mailto:jean-philip.desjardins@polymtl.ca">jean-philip.desjardins@polymtl.ca</a>
				<br />
				WWW: <a href="http://purei.org">http://purei.org</a>
				<br />
				ICQ: 9898384
			</p>
			
			<p>
				I'm not looking forward bug reports for now since I know it's buggy. And I'm not looking for source code patches to fix bugs either. Anything else should be fine though.
			</p>

		</div>
		
		<hr />
		
		<div>
			<h2 id="greetings">Special Thanks/Greetings</h2>
			
			<p>
				ps2dev (great source for technical info/demos/source code), <a href="http://zlib.net">zlib</a>, Charles Verdon, Eric Bernard, 
				Brian Guthrie, thrended, FOnewearl Lina.
			</p>
			
		</div>
		
	</body>

</html>