You can subscribe to this list here.
| 2006 |
Jan
|
Feb
|
Mar
(24) |
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|---|
|
From: <the...@us...> - 2006-03-22 04:34:29
|
Revision: 24 Author: thekingant Date: 2006-03-21 20:34:25 -0800 (Tue, 21 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=24&view=rev Log Message: ----------- Fix a typo (I'm an idiot) Modified Paths: -------------- web/htdocs-inc/header.php Modified: web/htdocs-inc/header.php =================================================================== --- web/htdocs-inc/header.php 2006-03-22 04:33:31 UTC (rev 23) +++ web/htdocs-inc/header.php 2006-03-22 04:34:25 UTC (rev 24) @@ -6,7 +6,7 @@ <head profile="http://www.w3.org/2000/08/w3c-synd/#"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> - <meta name=keywords"" content="FCE Ultra FCEUltra Nintendo NES Famicom emulator"/> + <meta name="keywords" content="FCE Ultra FCEUltra Nintendo NES Famicom emulator"/> <meta name="description" content="FCE Ultra is a Nintendo/Famicom emulator for Linux and Windows."/> <link rel="stylesheet" type="text/css" href="/StyleSheets/main.css"/> <title>FCE Ultra<?php if (isset($title)) { print(": $title"); } ?></title> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-22 04:33:35
|
Revision: 23 Author: thekingant Date: 2006-03-21 20:33:31 -0800 (Tue, 21 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=23&view=rev Log Message: ----------- Add a keywords and a description meta tag Modified Paths: -------------- web/htdocs-inc/header.php Modified: web/htdocs-inc/header.php =================================================================== --- web/htdocs-inc/header.php 2006-03-20 00:01:52 UTC (rev 22) +++ web/htdocs-inc/header.php 2006-03-22 04:33:31 UTC (rev 23) @@ -6,6 +6,8 @@ <head profile="http://www.w3.org/2000/08/w3c-synd/#"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> + <meta name=keywords"" content="FCE Ultra FCEUltra Nintendo NES Famicom emulator"/> + <meta name="description" content="FCE Ultra is a Nintendo/Famicom emulator for Linux and Windows."/> <link rel="stylesheet" type="text/css" href="/StyleSheets/main.css"/> <title>FCE Ultra<?php if (isset($title)) { print(": $title"); } ?></title> </head> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-20 00:02:10
|
Revision: 22 Author: thekingant Date: 2006-03-19 16:01:52 -0800 (Sun, 19 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=22&view=rev Log Message: ----------- Add a disclaimer Modified Paths: -------------- web/htdocs-inc/footer.php Modified: web/htdocs-inc/footer.php =================================================================== --- web/htdocs-inc/footer.php 2006-03-20 00:00:35 UTC (rev 21) +++ web/htdocs-inc/footer.php 2006-03-20 00:01:52 UTC (rev 22) @@ -1,4 +1,12 @@ -<p class="center"><a href="http://validator.w3.org/check/referer">XHTML 1.0</a> | <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS 2</a></p> +<p class="center"> +We are in no way affiliated or endorsed by Nintendo or Nintendo +of America. "Nintendo" is a registered trademark of Nintendo of +America Inc. +</p> +<p class="center"> +<a href="http://validator.w3.org/check/referer">XHTML 1.0</a> | <a href="http://jigsaw.w3.org/css-validator/check/referer">CSS 2</a> +</p> + </body> </html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-20 00:00:58
|
Revision: 21 Author: thekingant Date: 2006-03-19 16:00:35 -0800 (Sun, 19 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=21&view=rev Log Message: ----------- Add a few more links to other Nintendo emulators Modified Paths: -------------- web/htdocs/links.php Modified: web/htdocs/links.php =================================================================== --- web/htdocs/links.php 2006-03-19 23:04:06 UTC (rev 20) +++ web/htdocs/links.php 2006-03-20 00:00:35 UTC (rev 21) @@ -11,6 +11,10 @@ <ul> <li><a href="http://fakenes.sourceforge.net/">FakeNES</a> - FakeNES is a quite portable NES emulator with an internal GUI.</li> <li><a href="http://nestopia.sourceforge.net/">Nestopia</a> - Nestopia has fairly accurate emulation, and is written for MS Windows.</li> +<li><a href="http://nestra.linuxgames.com/">NEStra</a></li> +<li><a href="http://nosefart.sourceforge.net/">Nosefart</a> - NES Music Player</li> +<li><a href="http://tuxnes.sourceforge.net/">TuxNES</a> - A pretty good NES emulator for Unix.</li> +<li><a href="http://www.scottweber.com/projects/gtuxnes/">GTuxNES</a> - A graphical launcher for TuxNES.</li> </ul> </div> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 23:04:14
|
Revision: 20 Author: thekingant Date: 2006-03-19 15:04:06 -0800 (Sun, 19 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=20&view=rev Log Message: ----------- Another tweak Modified Paths: -------------- web/htdocs/download.php Modified: web/htdocs/download.php =================================================================== --- web/htdocs/download.php 2006-03-19 23:02:58 UTC (rev 19) +++ web/htdocs/download.php 2006-03-19 23:04:06 UTC (rev 20) @@ -4,7 +4,7 @@ ?> <table class="mainbox" cellpadding="5" cellspacing="0" border="1"> -<tr><th class="boxhead" colspan="2">Download</th></tr> +<tr><th class="boxhead" colspan="3">Download</th></tr> <tr><td colspan="3"> <ul> <li>Currently, only the Unix (Linux, FreeBSD, etc), Mac OS X, and Win32 ports will compile and run, mainly using SDL.</li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 23:03:10
|
Revision: 19 Author: thekingant Date: 2006-03-19 15:02:58 -0800 (Sun, 19 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=19&view=rev Log Message: ----------- Two small tweaks Modified Paths: -------------- web/htdocs/download.php web/htdocs/index.php Modified: web/htdocs/download.php =================================================================== --- web/htdocs/download.php 2006-03-19 23:01:17 UTC (rev 18) +++ web/htdocs/download.php 2006-03-19 23:02:58 UTC (rev 19) @@ -14,7 +14,7 @@ <li>Dependencies: DirectX (Win32), SDL, OpenGL (optional, recommended), zlib</li> </ul> </td></tr> -<tr><th class="boxhead">Version</th><th class="boxhead">Date</th><th>Description</th></tr> +<tr><th class="boxhead">Version</th><th class="boxhead">Date</th><th class="boxhead">Description</th></tr> <tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.12.src.tar.bz2?download">0.98.12 source</a></td><td>28 August 2004</td><td>This is the last official stable release by the author.</td></tr> <tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.13-pre.src.tar.bz2?download">0.98.13-pre source</a></td><td>29 October 2004</td><td>This is the most recent source code we have from the original author. It works, but was not tested for regressions and was therefore not an official release.</td></tr> <tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-src.7z?download">0.98.15 source</a></td><td>Unknown</td><td>Unknown</td></tr> Modified: web/htdocs/index.php =================================================================== --- web/htdocs/index.php 2006-03-19 23:01:17 UTC (rev 18) +++ web/htdocs/index.php 2006-03-19 23:02:58 UTC (rev 19) @@ -47,7 +47,7 @@ </p> <p> -If you're not much of a coder you could always update the man page, +If you're not much of a coder you could always work on documentation, or improve the web page (which is checked into Subversion at https://svn.sourceforge.net/svnroot/fceultra/web). </p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 23:01:24
|
Revision: 18 Author: thekingant Date: 2006-03-19 15:01:17 -0800 (Sun, 19 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=18&view=rev Log Message: ----------- Fix up the news post some and add descriptions to the files on the download page Modified Paths: -------------- web/htdocs/download.php web/htdocs/index.php Modified: web/htdocs/download.php =================================================================== --- web/htdocs/download.php 2006-03-19 16:31:38 UTC (rev 17) +++ web/htdocs/download.php 2006-03-19 23:01:17 UTC (rev 18) @@ -5,7 +5,7 @@ <table class="mainbox" cellpadding="5" cellspacing="0" border="1"> <tr><th class="boxhead" colspan="2">Download</th></tr> -<tr><td colspan="2"> +<tr><td colspan="3"> <ul> <li>Currently, only the Unix (Linux, FreeBSD, etc), Mac OS X, and Win32 ports will compile and run, mainly using SDL.</li> <li>Network play is functional as of 0.98.10.</li> @@ -14,10 +14,11 @@ <li>Dependencies: DirectX (Win32), SDL, OpenGL (optional, recommended), zlib</li> </ul> </td></tr> -<tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> -<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-src.7z?download">0.98.15</a></td><td>Unknown</td></tr> -<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.13-pre.src.tar.bz2?download">0.98.13-pre</a></td><td>29 October 2004</td></tr> -<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.12.src.tar.bz2?download">0.98.12</a></td><td>28 August 2004</td></tr> +<tr><th class="boxhead">Version</th><th class="boxhead">Date</th><th>Description</th></tr> +<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.12.src.tar.bz2?download">0.98.12 source</a></td><td>28 August 2004</td><td>This is the last official stable release by the author.</td></tr> +<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.13-pre.src.tar.bz2?download">0.98.13-pre source</a></td><td>29 October 2004</td><td>This is the most recent source code we have from the original author. It works, but was not tested for regressions and was therefore not an official release.</td></tr> +<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-src.7z?download">0.98.15 source</a></td><td>Unknown</td><td>Unknown</td></tr> +<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-rerecording.zip?download">0.98.15 Windows binary</a></td><td>Unknown</td><td>Unknown</td></tr> </table> <?php include("footer.php"); ?> Modified: web/htdocs/index.php =================================================================== --- web/htdocs/index.php 2006-03-19 16:31:38 UTC (rev 17) +++ web/htdocs/index.php 2006-03-19 23:01:17 UTC (rev 18) @@ -27,18 +27,9 @@ <h3 class="boxsubhead">19 March 2006</h3> <p> -Alright, we've uploaded some files: -</p> - -<ul> -<li><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.12.src.tar.bz2?download">0.98.12 source</a> - This is the last official stable release by the author.</li> -<li><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.13-pre.src.tar.bz2?download">0.98.13-pre source</a> - This is the most recent source code we have from the original author. It works, but was not tested for regressions and was therefore not an official release.</li> -<li><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-src.7z?download">0.98.15 source</a> - Unknown</li> -<li><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-rerecording.zip?download">0.98.15 Linux binary</a> - Unknown</li> -</ul> - -<p> -Who are "we," you ask? +Alright, we've uploaded some files--please see +<a href="download.php">the download page</a>. Who are "we," +you ask? <a href="mailto:agiorgio a.t users d.o.t sourceforge">Anthony Giorgio</a> and <a href="mailto:thekingant a.t users d.o.t sourceforge">Mark @@ -50,22 +41,30 @@ What happens now? Well I'm not sure either of us has very much free time to spend working on things, so if you're interested in working on the source, by all means drop us a line. We have checked -the 0.98.13-pre source code into sourceforge's Subversion server -at https://svn.sourceforge.net/svnroot/fceultra. Feel free to -grab a copy and start hacking. +the 0.98.13-pre source code into SourceForge's Subversion server +at https://svn.sourceforge.net/svnroot/fceultra/fceultra. Feel +free to grab a copy and start hacking. </p> <p> -I can't speak for Anthony, but there are some things I'd like to see: +If you're not much of a coder you could always update the man page, +or improve the web page (which is checked into Subversion at +https://svn.sourceforge.net/svnroot/fceultra/web). </p> +<p> +I can't speak for Anthony, but here are some things I would work +on if I had the time: +</p> + <ul> <li>Configuration file written as plain-text instead of binary</li> +<li>Better joystick configuration (currently with my Logitech +controller I think I'm forced to use the joystick rather than the +joypad)</li> <li>Play sound in Linux using ALSA instead of OSS (this isn't already possible when compiled with SDL, is it?)</li> <li>Slighty better command line interface (a -h/--help switch)</li> -<li>Better joystick (currently with my Logitech controller I think -I'm forced to use the joystick rather than the joypad)</li> </ul> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 16:31:45
|
Revision: 17 Author: thekingant Date: 2006-03-19 08:31:38 -0800 (Sun, 19 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=17&view=rev Log Message: ----------- New news post Modified Paths: -------------- web/htdocs/index.php Modified: web/htdocs/index.php =================================================================== --- web/htdocs/index.php 2006-03-19 07:02:29 UTC (rev 16) +++ web/htdocs/index.php 2006-03-19 16:31:38 UTC (rev 17) @@ -25,11 +25,57 @@ +<h3 class="boxsubhead">19 March 2006</h3> +<p> +Alright, we've uploaded some files: +</p> + +<ul> +<li><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.12.src.tar.bz2?download">0.98.12 source</a> - This is the last official stable release by the author.</li> +<li><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.13-pre.src.tar.bz2?download">0.98.13-pre source</a> - This is the most recent source code we have from the original author. It works, but was not tested for regressions and was therefore not an official release.</li> +<li><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-src.7z?download">0.98.15 source</a> - Unknown</li> +<li><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-rerecording.zip?download">0.98.15 Linux binary</a> - Unknown</li> +</ul> + +<p> +Who are "we," you ask? +<a href="mailto:agiorgio a.t users d.o.t sourceforge">Anthony +Giorgio</a> and +<a href="mailto:thekingant a.t users d.o.t sourceforge">Mark +Doliner</a>. We're two guys who like FCE Ultra and didn't want +to see the project disappear. +</p> + +<p> +What happens now? Well I'm not sure either of us has very much +free time to spend working on things, so if you're interested in +working on the source, by all means drop us a line. We have checked +the 0.98.13-pre source code into sourceforge's Subversion server +at https://svn.sourceforge.net/svnroot/fceultra. Feel free to +grab a copy and start hacking. +</p> + +<p> +I can't speak for Anthony, but there are some things I'd like to see: +</p> + +<ul> +<li>Configuration file written as plain-text instead of binary</li> +<li>Play sound in Linux using ALSA instead of OSS (this isn't already +possible when compiled with SDL, is it?)</li> +<li>Slighty better command line interface (a -h/--help switch)</li> +<li>Better joystick (currently with my Logitech controller I think +I'm forced to use the joystick rather than the joypad)</li> +</ul> + + + <h3 class="boxsubhead">18 March 2006</h3> <p> -The FCE Ultra project has been taken over. Our current goal is only -to post the previous release and documentation, but we'd love to -get development going again, too. We'll post more information soon. +The FCE Ultra project has been taken over! Our current goal is only +to preserve the state of the project as it was left by the author, +Xodnizel. But we'd love to get development going again, too. We'll +post more information soon. </p> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 07:02:35
|
Revision: 16 Author: thekingant Date: 2006-03-18 23:02:29 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=16&view=rev Log Message: ----------- This file was moved to the web site Removed Paths: ------------- fceultra/Documentation/fceultra.html Deleted: fceultra/Documentation/fceultra.html =================================================================== --- fceultra/Documentation/fceultra.html 2006-03-19 07:01:11 UTC (rev 15) +++ fceultra/Documentation/fceultra.html 2006-03-19 07:02:29 UTC (rev 16) @@ -1,809 +0,0 @@ -<html> - <head> - <title>FCE Ultra General Documentation</title> - </head> - <body> - <center><h1>FCE Ultra General Documentation</h1></center> - <center><i>Last updated September 15, 2004<br />Valid as of FCE Ultra 0.98.13</i></center> - <p> - <b>Table of Contents:</b> - <ul> - <li /><a href="#intro">Introduction</a> - <ul> - <li/><a href="#intro-history">History of FCE Ultra</a> - </ul> - <li /><a href="#features">Core Features</a> - <ul> - <li /><a href="#features-cpu">CPU</a> - <li /><a href="#features-ppu">PPU</a> - <ul> - <li /><a href="#features-ppu-palettes">Palettes</a> - </ul> - <li /><a href="#features-sound">Sound</a> - <li /><a href="#features-input">Input</a> - <ul> - <li /><a href="#features-input-zapper">Zapper</a> - </ul> - <li /><a href="#features-expansion">File Formats/Expansion Hardware</a> - <ul> - <li /><a href="#features-expansion-ines">iNES Format</a> - <li /><a href="#features-expansion-unif">UNIF</a> - <li /><a href="#features-expansion-fds">Famicom Disk System</a> - <li /><a href="#features-expansion-genie">Game Genie</a> - <li /><a href="#features-expansion-vs">VS Unisystem</a> - </ul> - <li /><a href="#features-ips">Automatic IPS Patching</a> - </ul> - <li /><a href="#using">Using FCE Ultra</a> - <ul> - <li /><a href="#using-keys">Key Assignments</a> - <ul /> - <li /><a href="#using-keys-vs">VS Unisystem</a> - <li /><a href="#using-keys-fds">Famicom Disk System</a> - <li /><a href="#using-keys-barcode">Barcode Readers</a> - <li /><a href="#using-keys-gamepad">Game Pad</a> - <li /><a href="#using-keys-powerpad">Power Pad</a> - <li /><a href="#using-keys-fkb">Family Keyboard</a> - <li /><a href="#using-keys-hypershot">HyperShot Controller</a> - <li /><a href="#using-keys-mahjong">Mahjong Controller</a> - <li /><a href="#using-keys-quiz">Quiz King Controller</a> - </ul> - <li /><a href="#using-cli">Command line</a> - <li /><a href="#using-gui">GUI</a> - </ul> - <li /><a href="cheat.html">Cheat Guide</a> - <li /><a href="faq.html">FAQ</a> - <li /><a href="netplay.html">Network Play</a> - <li /><a href="#hacks">Game-specific Emulation Hacks</a> - <li /><a href="#credits">Credits</a> - </ul> - </p> - <hr width="100%"> - <a name="intro"><h2>Introduction</h2></a> - <p> - FCE Ultra is an NTSC and PAL Famicom/NES emulator for various - platforms. It is based upon Bero's original FCE source code. Current - features include good PPU, CPU, pAPU, expansion chip, and joystick - emulation. Also a feature unique to this emulator(at the current - time) is authentic Game Genie emulation. Save states and snapshot - features also have been implemented. - </p> - <p> - This document has been arranged to keep user interface details and emulation - details as separate as possible, though this has not been accomplished entirely. - </p> - <p> - In several places references are made to the "base directory". If you - are running a port on a UN*X-like system(Linux/*BSD/Mac OSX/SunOS/etc.), the - base directory is "~/.fceultra", or in other words, - "your home directory plus .fceultra". For all other ports(including DOS and -MS Windows), the base directory is the directory that the executable is in. - </p> - <a name="intro-history"><h3>History of FCE Ultra</h3></a> - <p> - <i>This section is a work-in-progress. Some details may be incorrect.</i><br/> - Bero originally wrote a NES emulator that was referred to as <a href="http://www.geocities.co.jp/Playtown/2004/fce.htm">FCE</a>. - This name was apparently meant only to serve as a temporary name, but its usage remained. Xodnizel originally ported it to - Linux SVGAlib, and made a few improvements. This code base was abandoned, - and work began anew, under DOS, with the original FCE source code. - At the end of November, 1998, FCE Ultra Beta 1 was released. - </p> - <p> - FCE Ultra remained DOS-only until version 0.18, when it was ported to Linux - SVGAlib, and released as a staticly-linked executable. The first MS Windows - port was released as version 0.25. - </p> - <p> - The source code of 0.40 was released on November 12, 2000. It retained - the simple license of FCE for a long time, which stated that " This software is freeware.you can use it non-commercially." - Almost two years later, in June 2002, 0.80 was released, and FCE Ultra was relicensed under the GNU GPL. - </p> - <hr width="100%"> - <a name="features"><h2>Core Features</h2></a> - <a name="features-cpu"><h3>CPU</h3></a> - <p> - All official instructions of the NES' CPU, the 2A03, which is compatible(mostly) - with the 6502, are emulated. "Unofficial" instructions are also emulated, - though probably not as accurately as the more well-defined official instructions. - </p> - <hr width="90%"> - <a name="features-ppu"><h3>PPU</h3></a> - <p> - <ul> - <li>8x8 and 8x16 sprites. - <li>Sprite hit emulation(including checking the bg color). - <li>8 sprite limit(and flag emulation). - <li>Screen/Sprite disabling, with correct color replacement. - <li>Color deemphasis(probably not 100% correct, more research is needed). - <li>Strip colorburst bit emulated. - <li>CPU-instruction granularity for special mid-scanline effects(mostly CHR switching, such as - used in "Pirates!", "Marble Madness", and "Mother"). - </ul> - </p> - <a name="features-ppu-palettes"><h4>Palettes</h4></a> - <p> - FCE Ultra has many palette features, including loading a custom palette - to replace the default NES palette. The palette from an NTSC NES can - also be generated on-the-fly. - </p> - <p> - First, a note on on the format of external palettes; Palette files are expected to contain 64 8-bit RGB triplets(each in - that order; red comes first in the triplet in the file, then green, - then blue). Each 8-bit value represents brightness for that particular - color. 0 is minimum, 255 is maximum. - </p> - <p> - Palettes can be set on a per-game basis. To do this, put a palette - file in the "gameinfo" directory with the same base filename - as the game you wish to associate with and add the extension "pal". - Examples: - <pre> - File name: Palette file name: - BigBad.nes BigBad.pal - BigBad.zip BigBad.pal - BigBad.Better.nes BigBad.Better.pal - </pre> - </p> - <p> - With so many ways to choose a palette, figuring out which one will - be active may be difficult. Here's a list of what palettes will - be used, in order from highest priority to least priority(if a - condition doesn't exist for a higher priority palette, the emulator - will continue down its list of palettes). - <ul> - <li />NSF Palette(for NSFs only) - <li />Palette loaded from the "gameinfo" directory. - <li />NTSC Color Emulation(only for NTSC NES games). - <li />VS Unisystem palette(if the game is a VS Unisystem game and a palette is available). - <li />Custom global palette. - <li />Default NES palette. - </ul> - </p> - <p> - <hr width="90%"> - <a name="features-sound"><h3>Sound</h3></a> - <p> - All 5 internal sound channels are supported(2x rectangle, triangle, noise, - and DMC/PCM). Sound channels are emulated with CPU instruction granularity. - There are two sound quality options. Low-quality sound, the default sound - quality option, generates sound data at 16x the playback rate and averages - those samples together to 1 sample. This method works fairly well and - is reasonably fast, but there is still some aliasing and sound distortion. - All sample rates between 8192Hz and 96000Hz are supported. - </p><p> - The high-quality sound emulation is much more CPU intensive, but the - quality is worth it, if your machine is fast enough. Sound data is - generated at the NES' CPU clock rate(about 1.8MHz for the NTSC NES), and - then resampled to the output sample rate. Custom-designed 483rd order - Parks-McClellan algorithm filter coefficients are used. Supported playback rates are - 44100Hz, 48000Hz, and 96000Hz. The following filter statistics apply - for NTSC emulation. - <p> - <table border> - <tr><th>Rate:</th><th>Passband Upper Bound(Hz):</th><th>Passband ripple(dB):</th><th>Transition bandwidth(Hz):</th><th>Stopband attenuation(dB):</th></tr> - <tr><td>44100</td><td>11982.5</td><td>0.20</td><td>10067.5</td><td>66.4</td></tr> - <tr><td>48000</td><td>13932.5</td><td>0.10</td><td>10067.5</td><td>60.0</td></tr> - <tr><td>96000</td><td>30000.0</td><td>0.01</td><td>18000.0</td><td>103.0</td></tr> - </table> - </p> - <p> - The "highest" sound quality mode is similar to the normal high-quality mode, - but the filters are of a higher order(1024 coefficients). Ripple is - reduced, the upper bound of the passband is higher, and the stopband - attenuation is slightly higher. The highest-quality mode filter coefficients - were created using "gmeteor". The parameters used to create these filters - can be found in the source code distribution. - </p> - <p> - Besides the 5 internal NES sound channels, FCE Ultra emulates the extra - sound capabilities of the Konami VRCVI, Konami VRCVII, Namco 106, Nintendo MMC5, and the Sunsoft FME-07 chips. The extra sound - channel in the Famicom Disk System is also emulated, but the support for - its FM capabilities is limited. - </p> - <hr width="90%"> - <a name="features-input"><h3>Input</h3></a> - <p> - FCE Ultra emulates the standard NES gamepad, the Four-Score multiplayer - adapter, the Zapper, the Power Pad, and the Arkanoid controller. The - Famicom version of the Arkanoid controller, the "Space Shadow" gun, the - Famicom 4-player adapter, the Family Keyboard, the HyperShot controller, the Mahjong controller, - the Oeka Kids tablet, the Quiz King buzzers, the Family Trainer, and the Barcode World barcode - reader are also emulated. - </p> - <a name="features-input-zapper"><h4>Zapper</h4></a> - <p> - Most Zapper NES games expect the Zapper to be plugged into port 2. - and most VS Unisystem games expect the Zapper to be plugged - into port 1. - </p><p> - The left mouse button is the emulated trigger button for the - Zapper. The right mouse button is also emulated as the trigger, - but as long as you have the right mouse button held down, no color - detection will take place, which is effectively like pulling the - trigger while the Zapper is pointed away from the television screen. - Note that you must hold the right button down for a short - time to have the desired effect. - </p> - <hr width="90%"> - <a name="features-expansion"><h3>File Formats/Expansion Hardware</h3></a> - <p> - FCE Ultra supports the iNES, FDS(raw and with a header), UNIF, and NSF file - formats. FDS ROM images in the iNES format are not supported; it would - be silly to do so and storing them in that format is nonsensical. - </p> - <p> - FCE Ultra supports loading ROM/disk images from some types of compressed files. - FCE Ultra can load data from both PKZIP-format files and - gzip-format files. Only the "deflate" algorithm is supported, but - this is the most widely used algorithm for these formats. - </p> - <p> - All files in a PKZIP format archive will be scanned for the - followings extensions: .nes, .fds, .nsf, .unf, .nez, .unif - The first archived file to have one of these extensions will be - loaded. If no archived file has one of these extensions, the - first archived file will be loaded. - </p> - <a name="features-expansion-ines"><h4>iNES Format</h4></a> - <p> - The battery-backed RAM, vertical/horizontal mirroring, four-screen - name table layout, and 8-bit mapper number capabilities of the iNES - format are supported. The 512-byte trainer capability is also supported, - but it is deprecated. Common header corruption conditions are cleaned(let's - go on a DiskDude hunt), though not all conditions can be automatically - detected and fixed. In addition, a few common header inaccuracies for - games are also corrected(detected by CRC32 value). Note that these - fixes are not written back to the storage medium. - </p> - <p> - Support for the recent VS System bit and "number of 8kB RAM banks" - is not implemented. Too many iNES headers are corrupt where this new data - is stored, causing problems for those games. - </p> - <p> - The following table lists iNES-format "mappers" supported well in FCE Ultra. - </p><p> - <table width="100%" border> - <tr><th>Number:</th><th>Description:</th><th>Game Examples:</th></tr> - <tr><td>0</td><td>No bankswitching</td><td>Donkey Kong, Mario Bros</td></tr> - <tr><td>1</td><td>Nintendo MMC1</td><td>MegaMan 2, Final Fantasy</td></tr> - <tr><td>2</td><td>Simple 16KB PROM Switch(UNROM)</td><td>MegaMan, Archon, 1944</td></tr> - <tr><td>3</td><td>Simple 8KB VROM Switch(CNROM)</td><td>Spy Hunter, Gradius</td></tr> - <tr><td>4</td><td>Nintendo MMC3</td><td>Super Mario Bros. 3, Recca, Final Fantasy 3</td></tr> - <tr><td>5</td><td>Nintendo MMC5</td><td>Castlevania 3, Just Breed, Bandit Kings of Ancient China</td></tr> - <tr><td>6</td><td>FFE F4 Series(hacked, bootleg)</td><td></td></tr> - <tr><td>7</td><td>AOROM</td><td>Battle Toads, Time Lord</td></tr> - <tr><td>8</td><td>FFE F3 Series(hacked, bootleg)</td><td></td></tr> - <tr><td>9</td><td>Nintendo MMC2</td><td>Punchout!</td></tr> - <tr><td>10</td><td>Nintendo MMC4</td><td>Fire Emblem, Fire Emblem Gaiden</td></tr> - <tr><td>11</td><td>Color Dreams</td><td>Crystal Mines, Bible Adventures</td></tr> - <tr><td>12</td><td>??</td><td>Dragon Ball Z 5 ("bootleg" original)</td></tr> - <tr><td>13</td><td>CPROM</td><td>Videomation</td></tr> - <tr><td>15</td><td>Multi-cart(bootleg)</td><td>100-in-1: Contra Function 16</td></tr> - <tr><td>16</td><td>Bandai ??</td><td>Dragon Ball Z, SD Gundam Gaiden **EEPROM is not emulated</td></tr> - <tr><td>17</td><td>FFE F8 Series(hacked, bootleg)</td><td></td></tr> - <tr><td>18</td><td>Jaleco SS806</td><td>Pizza Pop, Plasma Ball</td></tr> - <tr><td>19</td><td>Namco 106</td><td>Splatter House, Mappy Kids</td></tr> - <tr><td>21</td><td>Konami VRC4 2A</td><td>WaiWai World 2, Ganbare Goemon Gaiden 2</td></tr> - <tr><td>22</td><td>Konami VRC4 1B</td><td>Twinbee 3</td></tr> - <tr><td>23</td><td>Konami VRC2B</td><td>WaiWai World, Crisis Force</td></tr> - <tr><td>24</td><td>Konami VRC6</td><td>Akumajou Densetsu</td></tr> - <tr><td>25<td>Konami VRC4</td><td>Gradius 2, Bio Miracle:Boku tte Upa</td></tr> - <tr><td>26</td><td>Konami VRC6 A0-A1 Swap</td><td>Esper Dream 2, Madara</td></tr> - <tr><td>32</td><td>IREM G-101</td><td>Image Fight 2, Perman</td></tr> - <tr><td>33</td><td>Taito TC0190/TC0350</td><td>Don Doko Don</td></tr> - <tr><td>34</td><td>NINA-001 and BNROM</td><td>Impossible Mission 2, Deadly Towers, Bug Honey</td></tr> - <tr><td>40</td><td>(bootleg)</td><td>Super Mario Bros. 2</td></tr> - <tr><td>41</td><td>Caltron 6-in-1</td><td>Caltron 6-in-1</td></tr> - <tr><td>42</td><td>(bootleg)</td><td>Mario Baby</td></tr> - <tr><td>44</td><td>Multi-cart(bootleg)</td><td>Super HiK 7 in 1</td></tr> - <tr><td>45</td><td>Multi-cart(bootleg)</td><td>Super 1000000 in 1</td></tr> - <tr><td>46</td><td>Game Station</td><td>Rumble Station</td></tr> - <tr><td>47</td><td>NES-QJ</td><td>Nintendo World Cup/Super Spike V-Ball</td></tr> - <tr><td>48</td><td>Taito TC190V</td><td>Flintstones</td></tr> - <tr><td>49</td><td>Multi-cart(bootleg)</td><td>Super HiK 4 in 1</td></tr> - <tr><td>50</td><td>(bootleg)</td><td>Super Mario Bros. 2</td></tr> - <tr><td>51</td><td>Multi-cart(bootleg)</td><td>11 in 1 Ball Games</td></tr> - <tr><td>52</td><td>Multi-cart(bootleg)</td><td>Mario Party 7 in 1</td></tr> - <tr><td>57</td><td>Multi-cart(bootleg)</td><td>Game Star GK-54</td></tr> - <tr><td>58</td><td>Multi-cart(bootleg)</td><td>68-in-1 Game Star HKX5268</td></tr> - <tr><td>60</td><td>Multi-cart(bootleg)</td><td>4 in 1(Reset-selected)</td></tr> - <tr><td>61</td><td>Multi-cart(bootleg)</td><td>20 in 1</td></tr> - <tr><td>62</td><td>Multi-cart(bootleg)</td><td>Super 700 in 1</td></tr> - <tr><td>64</td><td>Tengen RAMBO 1</td><td>Klax, Rolling Thunder, Skull and Crossbones</td></tr> - <tr><td>65</td><td>IREM H-3001</td><td>Daiku no Gensan 2</td></tr> - <tr><td>66</td><td>GNROM</td><td>SMB/Duck Hunt</td></tr> - <tr><td>67</td><td>Sunsoft ??</td><td>Fantasy Zone 2</td></tr> - <tr><td>68</td><td>Sunsoft ??</td><td>After Burner 2, Nantetta Baseball</td></tr> - <tr><td>69</td><td>Sunsoft FME-7</td><td>Batman: Return of the Joker, Hebereke</td> - <tr><td>70</td><td>??</td><td>Kamen Rider Club</td></tr> - <tr><td>71</td><td>Camerica</td><td>Fire Hawk, Linus Spacehead</td></tr> - <tr><td>72</td><td>Jaleco ??</td><td>Pinball Quest</td></tr> - <tr><td>73</td><td>Konami VRC3</td><td>Salamander</td></tr> - <tr><td>74</td><td>Taiwanese MMC3 CHR ROM w/ VRAM</td><td>Super Robot Wars 2</td></tr> - <tr><td>75</td><td>Jaleco SS8805/Konami VRC1</td><td>Tetsuwan Atom, King Kong 2</td></tr> - <tr><td>76</td><td>Namco 109</td><td>Megami Tensei</td></tr> - <tr><td>77</td><td>IREM ??</td><td>Napoleon Senki</td></tr> - <tr><td>78</td><td>Irem 74HC161/32</td><td>Holy Diver</td></tr> - <tr><td>79</td><td>NINA-06/NINA-03</td><td>F15 City War, Krazy Kreatures, Tiles of Fate</td></tr> - <tr><td>80</td><td>Taito X-005</td><td>Minelvation Saga</td></tr> - <tr><td>82</td><td>Taito ??</td><td>Kyuukyoku Harikiri Stadium - Heisei Gannen Ban</td><tr/> - <tr><td>85</td><td>Konami VRC7</td><td>Lagrange Point</td></tr> - <tr><td>86</td><td>Jaleco JF-13</td><td>More Pro Baseball</td></tr> - <tr><td>87</td><td>??</td><td>Argus</td></tr> - <tr><td>88</td><td>Namco 118</td><td>Dragon Spirit</td></tr> - <tr><td>89</td><td>Sunsoft ??</td><td>Mito Koumon</td></tr> - <tr><td>90</td><td>??</td><td>Super Mario World, Mortal Kombat 3, Tekken 2</td></tr> - <tr><td>91</td><td>??</td><td>Mari Street Fighter 3 Turbo</td></tr> - <tr><td>92</td><td>Jaleco ??</td><td>MOERO Pro Soccer</td></tr> - <tr><td>93</td><td>??</td><td>Fantasy Zone</td></tr> - <tr><td>94</td><td>??</td><td>Senjou no Ookami</td></tr> - <tr><td>95</td><td>Namco 118</td><td>Dragon Buster</td></tr> - <tr><td>96</td><td>Bandai ??</td><td>Oeka Kids</td></tr> - <tr><td>97</td><td>??</td><td>Kaiketsu Yanchamaru</td></tr> - <tr><td>99</td><td>VS System 8KB VROM Switch</td><td>VS SMB, VS Excite Bike</td></tr> - <tr><td>105</td><td>NES-EVENT</td><td>Nintendo World Championships</td></tr> - <tr><td>107</td><td>??</td><td>Magic Dragon</td></tr> - <tr><td>112</td><td>Asder</td><td>Sango Fighter, Hwang Di</td></tr> - <tr><td>113</td><td>MB-91</td><td>Deathbots</td></tr> - <tr><td>114</td><td>??</td><td>The Lion King</td></tr> - <tr><td>115</td><td>??</td><td>Yuu Yuu Hakusho Final</td></tr> - <tr><td>117</td><td>??</td><td>San Guo Zhi 4</td></tr> - <tr><td>118</td><td>MMC3-TLSROM/TKSROM Board</td><td>Ys 3, Goal! 2, NES Play Action Football</td></tr> - <tr><td>119</td><td>MMC3-TQROM Board</td><td>High Speed, Pin*Bot</td></tr> - <tr><td>140</td><td>Jaleco ??</td><td>Bio Senshi Dan</td></tr> - <tr><td>144</td><td>??</td><td>Death Race</td></tr> - <tr><td>151</td><td>Konami VS System Expansion</td><td>VS The Goonies, VS Gradius</td></tr> - <tr><td>152</td><td>??</td><td>Arkanoid 2, Saint Seiya Ougon Densetsu</td></tr> - <tr><td>153</td><td>Bandai ??</td><td>Famicom Jump 2</td></tr> - <tr><td>154</td><td>Namco ??</td><td>Devil Man</td></tr> - <tr><td>155</td><td>MMC1 w/o normal WRAM disable</td><td>The Money Game, Tatakae!! Rahmen Man</td></tr> - <tr><td>156</td><td>??</td><td>Buzz and Waldog</td></tr> - <tr><td>157</td><td>Bandai Datach ??</td><td>Datach DBZ, Datach SD Gundam Wars, **EEPROM is not emulated</td></tr> - <tr><td>158</td><td nowrap>RAMBO 1 Derivative</td><td>Alien Syndrome</td></tr> - <tr><td>160</td><td>(same as mapper 90)</td><td>(same as mapper 90)</td></tr> - <tr><td>180</td><td>??</td><td>Crazy Climber</td></tr> - <tr><td>182</td><td>??</td><td>Super Donkey Kong</td></tr> - <tr><td>184</td><td>??</td><td>Wing of Madoola, The</td></tr> - <tr><td>185</td><td>CNROM w/ CHR ROM unmapping</td><td>Banana, Mighty Bomb Jack, Spy vs Spy(Japanese)</td></tr> - <tr><td>189</td><td>??</td><td>Thunder Warrior, Street Fighter 2 (Yoko)</td></tr> - <tr><td>193</td><td>Mega Soft</td><td>Fighting Hero</td></tr> - <tr><td>200</td><td>Multi-cart(bootleg)</td><td>1200-in-1</td></tr> - <tr><td>201</td><td>Multi-cart(bootleg)</td><td>21-in-1</td></tr> - <tr><td>202</td><td>Multi-cart(bootleg)</td><td>150 in 1</td></tr> - <tr><td>203</td><td>Multi-cart(bootleg)</td><td>35 in 1</td></tr> - <tr><td>206</td><td>DEIROM</td><td>Karnov</td></tr> - <tr><td>207</td><td>Taito ??</td><td>Fudou Myouou Den</td></tr> - <tr><td>208</td><td>??</td><td>Street Fighter IV (by Gouder)</td></tr> - <tr><td>209</td><td>(mapper 90 w/ name-table control mode enabled)</td><td>Shin Samurai Spirits 2, Power Rangers III</td></tr> - <tr><td>210</td><td>Namco ??</td><td>Famista '92, Famista '93, Wagyan Land 2</td></tr> - <tr><td>225</td><td>Multi-cart(bootleg)</td><td>58-in-1/110-in-1/52 Games</td></tr> - <tr><td>226</td><td>Multi-cart(bootleg)</td><td>76-in-1</td></tr> - <tr><td>227</td><td>Multi-cart(bootleg)</td><td>1200-in-1</td></tr> - <tr><td>228</td><td>Action 52</td><td>Action 52, Cheetahmen 2</td></tr> - <tr><td>229</td><td>Multi-cart(bootleg)</td><td>31-in-1</td></tr> - <tr><td>230</td><td>Multi-cart(bootleg)</td><td>22 Games</td></tr> - <tr><td>231</td><td>Multi-cart(bootleg)</td><td>20-in-1</td></tr> - <tr><td>232</td><td>BIC-48</td><td>Quattro Arcade, Quattro Sports</td></tr> - <tr><td>234</td><td>Multi-cart ??</td><td>Maxi-15</td></tr> - <tr><td>235</td><td>Multi-cart(bootleg)</td><td>Golden Game 150 in 1</td></tr> - <tr><td>240</td><td>??</td><td>Gen Ke Le Zhuan, Shen Huo Le Zhuan</td></tr> - <tr><td>242</td><td>??</td><td>Wai Xing Zhan Shi</td></tr> - <tr><td>244</td><td>??</td><td>Decathalon</td></tr> - <tr><td>246</td><td>??</td><td>Fong Shen Ban</td></tr> - <tr><td>248</td><td>??</td><td>Bao Qing Tian</td></tr> - <tr><td>249</td><td>Waixing ??</td><td>??</td></tr> - <tr><td>250</td><td>??</td><td>Time Diver Avenger</td></tr> - <tr><td>255</td><td>Multi-cart(bootleg)</td><td>115 in 1</td></tr> - </table> - </p> - <p> - <a name="features-expansion-unif"><h4>UNIF</h4></a> - </p> - <p> - FCE Ultra supports the following UNIF boards. The prefixes HVC-, NES-, BTL-, and BMC- are omitted, since they are currently ignored in FCE Ultra's UNIF loader. - </p> - <p> - <table border width="100%"> - <tr><th colspan="2">Group:</th></tr> - <tr><th>Name:</th><th>Game Examples:</th></tr> - <tr><th colspan="2">Bootleg:</th></tr> - <tr><td>MARIO1-MALEE2</td><td>Super Mario Bros. Malee 2</td></tr> - <tr><td>NovelDiamond9999999in1</td><td>Novel Diamond 999999 in 1</td></tr> - <tr><td>Super24in1SC03</td><td>Super 24 in 1</td></tr> - <tr><td>Supervision16in1</td><td>Supervision 16-in-1</td></tr> - <tr><th colspan="2">Unlicensed:</th></tr> - <tr><td>Sachen-8259A</td><td>Super Cartridge Version 1</td></tr> - <tr><td>Sachen-8259B</td><td>Silver Eagle</td></tr> - <tr><td>Sachen-74LS374N</td><td>Auto Upturn</td></tr> - <tr><td>SA-016-1M</td><td>Master Chu and the Drunkard Hu</td></tr> - <tr><td>SA-72007</td><td>Sidewinder</td></tr> - <tr><td>SA-72008</td><td>Jovial Race</td></tr> - <tr><td>SA-0036</td><td>Mahjong 16</td></tr> - <tr><td>SA-0037</td><td>Mahjong Trap</td></tr> - <tr><td>TC-U01-1.5M</td><td>Challenge of the Dragon</td></tr> - <tr><td>8237</td><td>Pocahontas Part 2</td></tr> - <tr><th colspan="2">MMC1:</th></tr> - <tr><td>SAROM</td><td>Dragon Warrior</td></tr> - <tr><td>SBROM</td><td>Dance Aerobics</td></tr> - <tr><td>SCROM</td><td>Orb 3D</td></tr> - <tr><td>SEROM</td><td>Boulderdash</td></tr> - <tr><td>SGROM</td><td>Defender of the Crown</td></tr> - <tr><td>SKROM</td><td>Dungeon Magic</td></tr> - <tr><td>SLROM</td><td>Castlevania 2</td></tr> - <tr><td>SL1ROM</td><td>Sky Shark</td></tr> - <tr><td>SNROM</td><td>Shingen the Ruler</td></tr> - <tr><td>SOROM</td><td>Nobunaga's Ambition</td></tr> - <tr><th colspan="2">MMC3:</th></tr> - <tr><td>TFROM</td><td>Legacy of the Wizard</td></tr> - <tr><td>TGROM</td><td>Megaman 4</td></tr> - <tr><td>TKROM</td><td>Kirby's Adventure</td></tr> - <tr><td>TKSROM</td><td>Ys 3</td></tr> - <tr><td>TLROM</td><td>Super Spike V'Ball</td></tr> - <tr><td>TLSROM</td><td>Goal! 2</td></tr> - <tr><td>TR1ROM</td><td>Gauntlet</td></tr> - <tr><td>TQROM</td><td>Pinbot</td></tr> - <tr><td>TSROM</td><td>Super Mario Bros. 3</td></tr> - <tr><td>TVROM</td><td>Rad Racer 2</td></tr> - <tr><th colspan="2">MMC5:</th></tr> - <tr><td>EKROM</td><td>Gemfire</td></tr> - <tr><td>ELROM</td><td>Castlevania 3</td></tr> - <tr><td>ETROM</td><td>Nobunaga's Ambition 2</td></tr> - <tr><td>EWROM</td><td>Romance of the Three Kingdoms 2</td></tr> - <tr><th colspan="2">MMC6:</th></tr> - <tr><td>HKROM</td><td>Star Tropics</td></tr> - <tr><th colspan="2">Nintendo Discrete Logic:</th></tr> - <tr><td>CNROM</td><td>Gotcha</td></tr> - <tr><td>CPROM</td><td>Videomation</td></tr> - <tr><td>GNROM</td><td>Super Mario Bros./Duck Hunt</td></tr> - <tr><td>MHROM</td><td></td></tr> - <tr><td>NROM-128</td><td>Mario Bros.</td></tr> - <tr><td>NROM-256</td><td>Super Mario Bros.</td></tr> - <tr><td>RROM-128</td><td></td></tr> - <tr><td>UNROM</td><td>Megaman</td></tr> - </table> - </p> - <a name="features-expansion-fds"><h4>Famicom Disk System</h4></a> - <p> - You will need the FDS BIOS ROM image in the base FCE Ultra directory. - It must be named "disksys.rom". FCE Ultra will not load FDS games - without this file. - </p> - Two types of FDS disk images are supported: disk images with the - FWNES-style header, and disk images with no header. The number - of sides on headerless disk images is calculated by the total file - size, so don't put extraneous data at the end of the file. - <p> - If a loaded disk image is written to during emulation, FCE Ultra will store the modified - disk image in the save games directory, which is by default "sav" under the base - directory. - </p> - <a name="features-expansion-genie"><h4>Game Genie</h4></a> - <p> - The Game Genie ROM image is loaded from the file "gg.rom" in the - base directory the first time Game Genie emulation is enabled and - a ROM image is loaded since the time FCE Ultra has run. -</p><p> - The ROM image may either be the 24592 byte iNES-format image, or - the 4352 byte raw ROM image. -</p><p> - Remember that enabling/disabling Game Genie emulation will not take - effect until a new game is loaded(this statement shouldn't concern - any of the "run once" command-line driven builds). - </p> - <a name="features-expansion-vs"><h4>VS Unisystem</h4></a> - <p> -FCE Ultra currently only supports VS Unisystem ROM images in the -iNES format. DIP switches and coin insertion are both emulated. -The following games are supported, and have palettes provided(though not -necessarily 100% accurate or complete): - <ul> - <li />Battle City - <li />Castlevania - <li />Clu Clu Land - <li />Dr. Mario - <li />Duck Hunt - <li />Excitebike - <li />Excitebike (Japanese) - <li />Freedom Force - <li />Goonies, The - <li />Gradius - <li />Gumshoe - <li />Hogan's Alley - <li />Ice Climber - <li />Ladies Golf - <li />Mach Rider - <li />Mach Rider (Japanese) - <li />Mighty Bomb Jack (Japanese) - <li />Ninja Jajamaru Kun (Japanese) - <li />Pinball - <li />Pinball (Japanese) - <li />Platoon - <li />RBI Baseball - <li />Slalom - <li />Soccer - <li />Star Luster - <li />Stroke and Match Golf - <li />Stroke and Match Golf - Ladies - <li />Stroke and Match Golf (Japanese) - <li />Super Mario Bros. - <li />Super Sky Kid - <li />Super Xevious - <li />Tetris - <li />TKO Boxing - <li />Top Gun - </ul> - </p> - <a name="features-ips"><h3>Automatic IPS Patching</h3></a> - <p> - Place the IPS file in the same directory as the file to load, - and name it filename.ips. -</p> - <pre> - Examples: Boat.nes - Boat.nes.ips - Boat.zip - Boat.zip.ips - Boat.nes.gz - Boat.nes.gz.ips - Boat - Boat.ips - </pre> - <p> - Some operating systems and environments will hide file extensions. - Keep this in mind if you are having trouble. - </p> - <p> - Patching is supported for all supported formats(iNES, FDS, UNIF, and - NSF), but it will probably only be useful for the iNES and FDS formats. - UNIF files can't be patched well with the IPS format because they are chunk-based - with no fixed offsets. - </p> - <hr width="100%"> - <a name="using"><h2>Using FCE Ultra</h2></a> - <p> - - </p> - <a name="using-keys"><h3>Key Assignments</h3></a> - <p> - <table border> - <tr><th>Key(s):</th><th>Action:</th></tr> - <tr><td>F5</td><td>Save state.</td></tr> - <tr><td>F7</td><td>Load state.</td></tr> - <tr><td>0-9</td><td>Select save state slot.</td></tr> - <tr><td>Shift + F5</td><td>Record movie.</td></tr> - <tr><td>Shift + F7</td><td>Play movie.</td></tr> - <tr><td>Shift + 0-9</td><td>Select movie slot.</td></tr> - <tr><td>F9</td><td>Save screen snapshot.</td></tr> - <tr><td>F4</td><td>Hide sprites(toggle).</td></tr> - <tr><td>Shift + F4</td><td>Hide background data with overscan color(toggle).</td></tr> - <tr><td>Alt + Enter</td><td>Toggle fullscreen mode.</td></tr> - <tr><td>~</td><td>Temporarily disable speed throttling.</td></tr> - <tr><td>F10</td><td>Reset.</td></tr> - <tr><td>F11</td><td>Hard reset(toggle power switch).</td></tr> - <tr><td>F12</td><td>Exit.</td></tr> - </table> - </p> - <a name="using-keys-vs"><h4>VS Unisystem</h4></a> - <p> - <table border> - <tr><th>Key:</th><th>Action:</th></tr> - <tr><td>F8</td><td>Insert coin.</td></tr> - <tr><td>F6</td><td>Show/Hide dip switches.</td></tr> - <tr><td>1-8</td><td>Toggle dip switches(when dip switches are shown).</td></tr> - </table> - </p> - <a name="using-keys-fds"><h4>Famicom Disk System</h4></a> - <p> - <table border> - <tr><th>Key:</th><th>Action:</th></tr> - <tr><td>F6</td><td>Select disk and disk side.</td></tr> - <tr><td>F8</td><td>Eject or Insert disk.</td></tr> - </table> - </p> - <a name="using-keys-barcode"><h4>Barcode Readers</h4></a> - <p> - <table border> - <tr><th>Key:</th><th>Action:</th></tr> - <tr><td>0-9</td><td>Barcode digits(after activating barcode input).</td></tr> - <tr><td>F8</td><td>Activate barcode input/scan barcode.</td></tr> - </table> - </p> - <a name="using-keys-gamepad"><h4>Game Pad</h4></a> -<p> -<table border> -<tr><td colspan="2"> - These default Game Pad key assignments do not apply to the Win32-native port. - See the table below this for the Win32-native port's default game pad mappings. - </td></tr> - <tr><th>Key:</th><th nowrap>Button on Emulated Gamepad:</th></tr> - <tr><td>Keypad 2</td><td>B</td></tr> - <tr><td>Keypad 3</td><td>A</td></tr> - <tr><td>Enter/Return</td><td>Start</td></tr> - <tr><td>Tab</td><td>Select</td></tr> - <tr><td>Z</td><td>Down</td></tr> - <tr><td>W</td><td>Up</td></tr> - <tr><td>A</td><td>Left</td></tr> - <tr><td>S</td><td>Right</td></tr> - </table> - </p> - <p> - <table border> - <tr><th colspan="2">Win32-native Port</th></tr> - <tr><th>Key:</th><th nowrap>Button on Emulated Gamepad:</th></tr> - <tr><td>Left Control</td><td>B</td></tr> - <tr><td>Left Alt</td><td>A</td></tr> - <tr><td>Enter/Return</td><td>Start</td></tr> - <tr><td>Tab</td><td>Select</td></tr> - <tr><td>Cursor Down</td><td>Down</td></tr> - <tr><td>Cursor Up</td><td>Up</td></tr> - <tr><td>Cursor Left</td><td>Left</td></tr> - <tr><td>Cursor Right</td><td>Right</td></tr> - </table> - </p> - <a name="using-keys-powerpad"><h4>Power Pad</h4></a> - <p> - <table border> - <tr><th colspan="4">Side B</th></tr> - <tr><td width="25%">O</td><td width="25%">P</td> - <td width="25%">[</td><td width="25%">]</td></tr> - <tr><td>K</td><td>L</td><td>;</td><td>'</td></tr> - <tr><td>M</td><td>,</td><td>.</td><td>/</td></tr> - </table> - <br /> - <table border> - <tr><th colspan="4">Side A</th></tr> - <tr><td width="25%"></td><td width="25%">P</td> - <td width="25%">[</td><td width="25%"></td></tr> - <tr><td>K</td><td>L</td><td>;</td><td>'</td></tr> - <tr><td></td><td>,</td><td>.</td><td></td></tr> - </table> - </p> - <a name="using-keys-fkb"><h4>Family Keyboard</h4></a> - <p> - All emulated keys are mapped to the closest open key on the PC - keyboard, with a few exceptions. The emulated "@" key is - mapped to the "`"(grave) key, and the emulated "kana" key - is mapped to the "Insert" key(in the 3x2 key block above the - cursor keys). - </p> - <p> - To enable or disable Family Keyboard input, press the "Scroll Lock" key. - When Family Keyboard input is enabled, FCE Ultra will also attempt - to prevent any key presses from being passed to the GUI or system. - </p> - <a name="using-keys-hypershot"><h4>HyperShot Controller</h4></a> - <p> - <table border> - <tr><td></td><th>Run</th><th>Jump</th></tr> - <tr><th>Controller I</th><td>Q</td><td>W</td></tr> - <tr><th>Controller II</th><td>E</td><td>R</td></tr> - </table> - </p> - - <a name="using-keys-mahjong"><h4>Mahjong Controller</h4></a> - <p> - <table border> - <tr><th>Emulated Mahjong Controller:</th><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td><td>I</td><td>J</td><td>K</td><td>L</td><td>M</td><td>N</td></tr> - <tr><th>PC Keyboard:</th><td>Q</td><td>W</td><td>E</td><td>R</td><td>T</td><td>A</td><td>S</td><td>D</td><td>F</td><td>G</td><td>H</td><td>J</td><td>K</td><td>L</td></tr> - </table> - <br /> - <table border> - <tr><th>Emulated Mahjong Controller:</th><td>SEL</td><td>ST</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr> - <tr><th>PC Keyboard:</th><td>Z</td><td>X</td><td>C</td><td>V</td><td>B</td><td>N</td><td>M</td> - </table> - </p> - <a name="using-keys-quiz"><h4>Quiz King Controller</h4></a> - <p> - <table border> - <tr><th>Emulated Buzzer:</th><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr> - <tr><th>PC Keyboard:</th><td>Q</td><td>W</td><td>E</td><td>R</td><td>T</td><td>Y</td></tr> - </table> - </p> - <a name="using-cli"><h3>Command-line</h3></a> - <p> - FCE Ultra supports arguments passed on the command line. Arguments - are taken in the form of "-parameter value". Some arguments are valueless. - Arguments that have both a parameter and a value will be saved in the - configuration file, with the exception being the network-play arguments. - <b>Please note that most of these arguments are currently not recognized on the Win32-native port.</b> - </p> - <p> - <table border> - <tr><th>Argument:</th><th>Value Type:</th><th>Default value:</th><th>Description:</th></tr> - <tr><td>-cpalette x</td><td>string</td><td>0</td><td>Load a custom global palette from file "x". Specifying "0" will cause FCE Ultra to stop using the custom global palette.</td></tr> - <tr><td>-ntsccol x</td><td>boolean</td><td>0</td><td>If value is true, enable automatic generation and use of an NTSC NES' colors.</td></tr> - <tr><td>-pal x</td><td>boolean</td><td>0</td><td>If value is true, emulate a PAL NES. Otherwise emulate an NTSC NES.</td></tr> - <tr><td>-sound x</td><td>boolean</td><td>1</td><td>If value is true, enable sound emulation and output.</td></tr> - <tr><td>-soundrate x</td><td>integer</td><td>48000</td><td>Specifies the sound playback rate, in frames per second("Hz").</td></tr> - <tr><td>-soundvol x</td><td>integer</td><td>100</td><td>Sound volume.</td></tr> - <tr><td>-soundq x</td><td>boolean</td><td>0</td><td>If value is true, enable high-quality sound emulation.</td></tr> - <tr><td>-soundbufsize x</td><td>integer</td><td>24(52 for Win32)</td><td>Specifies the desired size of the sound buffer, in milliseconds.</td></tr> - <tr><td>-inputcfg x</td><td>string</td><td></td><td>Configure mapping of physical device inputs to a virtual device. Valid values are "gamepad1", "gamepad2", "gamepad3", "gamepad4", "powerpad1", "powerpad2".<p>During configuration, pressing the same button twice in a row will cause configuration to move to the next button on the virtual device. A maximum of 4 physical buttons may be assigned to one virtual button.</td></tr> - <tr><td>-input1 x <br /><i>and</i><br />-input2 x</td><td>string</td><td>gamepad</td><td>Select input device for input port 1 or 2. Valid strings are "none", "gamepad", "zapper", "powerpada", and "powerpadb".</td></tr> - <tr><td>-fcexp x</td><td>string</td><td>none</td><td>Select Famicom expansion port device. Valid strings are "none", "shadow", "arkanoid", "4player", and "fkb".</td></tr> - <tr><td>-nofs x</td><td>boolean</td><td>0</td><td>If value is true, disable four-score emulation.</td></tr> - <tr><td>-gg x</td><td>boolean</td><td>0</td><td>Enable Game Genie emulation.</td></tr> - <tr><td nowrap>-snapname x</td><td>boolean</td><td>0</td><td>If value is true, use an alternate naming scheme(file base and numeric) for screen snapshots.</td></tr> - <tr><td>-frameskip x</td><td>integer</td><td>0</td><td>Specifies the number of frames to skip(emulation and drawing) for each frame emulated and drawn. The frameskipping code will not work properly with light-gun games, and it may break other games as well, so use it with this knowledge in mind!</td></tr> - <tr><td nowrap>-nothrottle x</td><td>boolean</td><td>0</td><td>If value is true, disable the speed throttling that is used when sound emulation is disabled.</td></tr> - <tr><td>-clipsides x</td><td>boolean</td><td>0</td><td>If value is true, clip leftmost and rightmost 8 columns of pixels of the video output.</td></tr> - <tr><td>-slstart x</td><td>integer</td><td>8</td> - <td>First scanline to be rendered in NTSC emulation mode(when PAL emulation is disabled).</td></tr> - <tr><td>-slend x</td><td>integer</td><td>231</td> - <td>Last scanline to be rendered in NTSC emulation mode.</td></tr> - <tr><td nowrap>-slstartp x</td><td>integer</td><td>0</td> - <td>First scanline to be rendered in PAL emulation mode.</td></tr> - <tr><td>-slendp x</td><td>integer</td><td>239</td> - <td>Last scanline to be rendered in PAL emulation mode.</td></tr> - <tr><th>Argument:</th><th>Value Type:</th><th>Default value:</th><th>Description:</th></tr> - <tr><td>-opengl x</td><td>boolean</td><td>1</td><td>Enable OpenGL support(if the support has been compiled in).</td></tr> - <tr><td>-openglip x</td><td>boolean</td><td>1</td><td>Use bilinear interpolation when using OpenGL.</td></tr> - <tr><td>-special(-specialfs) x</td><td>integer</td><td>0(0)</td><td>Use special video scaling filters. -<ul> -<li />1 = hq2x -<li />2 = Scale2x -<li />3 = hq3x -<li />4 = Scale3x -</ul> -</td></tr> - <tr><td>-stretchx/-stretchy x</td><td>boolean</td><td>1/0</td><td>Stretch to fill surface on x or y axis(fullscreen, only with OpenGL).</td></tr> - <tr><td>-doublebuf x</td><td>boolean</td><td>0</td><td>Request double buffering(note that double buffering or sync-to-vblank may be forcibly enabled by your video drivers).</td></tr> - <tr><td>-xscale(-xscalefs)/<br/>-yscale(-yscalefs)</td><td>real</td><td>2.50(2)/2(2)</td><td>Specify the scaling factor for each axis. Factors will be truncated to integers when not using OpenGL.</td></tr> - <tr><td>-xres x/-yres y</td><td>integer</td><td>640/480</td><td>Set the desired horizontal/vertical resolution when in fullscreen mode.</td></tr> - <tr><td>-efx(fs) x</td><td>integer</td><td>0</td><td>Specify simple special effects, represented by logically ORing constants. 1=scanlines, 2=TV Blur</td></tr> - <tr><td>-fs</td><td>boolean</td><td>0</td><td>Full screen mode.</td></tr> - </table> - </p> - <hr width="100%"> - <a name="hacks"><h2>Game-specific Emulation Hacks</h2></a> - <p> - <table border width="100%"> - <tr><th>Title:</th><th>Description:</th><th>Source code files affected:</th></tr> - <tr><td>KickMaster</td> - <td>KickMaster relies on the low-level behavior of the MMC3(PPU A12 low->high transition) - to work properly in certain parts. If an IRQ begins at the "normal" time on the - last visible scanline(239), the game will crash after beating the second boss and retrieving - the item. The hack is simple, to clock the IRQ counter twice on scanline 238. - </td> - <td>mbshare/mmc3.c</td></tr> - <tr><td nowrap>Shougi Meikan '92<br>Shougin Meikan '93</td> - <td>The hack for these games is identical to the hack for KickMaster.</td> - <td>mbshare/mmc3.c</td></tr> - <tr><td>Star Wars (PAL/European Version)</td> - <td>This game probably has the same(or similar) problem on FCE Ultra as KickMaster. The - hack is to clock the IRQ counter twice on the "dummy" scanline(scanline before the first - visible scanline).</td><td>mbshare/mmc3.c</td></tr> - </table> - </p> - <hr width="100%"> - <a name="credits"><h2>Credits</h2></a> - <p> - <table border width="100%"> - <tr><th>Name:</th><th>Contribution(s):</th></tr> - <tr><td>\Firebug\</td><td>High-level mapper information.</td></tr> - <tr><td>Andrea Mazzoleni</td><td>Scale2x/Scale3x scalers included in FCE Ultra.</td></tr> - <tr><td>Bero</td><td>Original FCE source code.</td></tr> - <tr><td>Brad Taylor</td><td>NES sound information.</td></tr> - <tr><td>EFX</td><td>DC PasoFami NES packs, testing.</td></tr> - <tr><td>Fredrik Olson</td><td>NES four-player adapter information.</td></tr> - <tr><td>Gilles Vollant</td><td>PKZIP file loading functions.</td></tr> - <tr><td>goroh</td><td>Various documents.</td></tr> - <tr><td>Info-ZIP</td><td><a href="http://www.gzip.org/zlib/">ZLIB</a></td></tr> - <tr><td>Jeremy Chadwick</td><td>General NES information.</td></tr> - <tr><td>Justin Smith</td><td>Good stuff.</td></tr> - <tr><td>kevtris</td><td>Low-level NES information and sound information.</td></tr> - <tr><td>Ki</td><td>Various technical information.</td></tr> - <tr><td>Mark Knibbs</td><td>Various NES information.</td></tr> - <tr><td>Marat Fayzullin</td><td>General NES information.</td></tr> - <tr><td>Matthew Conte</td><td>Sound information.</td></tr> - <tr><td>Maxim Stepin</td><td>hq2x and hq3x scalers included in FCE Ultra.</td></tr> - <tr><td>MindRape</td><td>DC PasoFami NES packs.</td></tr> - <tr><Td>Mitsutaka</td><td>YM2413 emulator.</td></tr> - <tr><td>nori</td><td>FDS sound information.</td></tr> - <tr><td>Quietust</td><td>VRC7 sound translation code by The Quietust (quietust at ircN dort org).</td></tr> - <tr><td>rahga</td><td>Famicom four-player adapter information.</td></tr> - <tr><td>Sean Whalen</td><td>Node 99</td></tr> - <tr><td>TheRedEye</td><td>ROM images, testing.</td></tr> - <tr><td>TyphoonZ</td><td>Archaic Ruins.</td></tr> - <tr><th colspan="2" align="right">...and everyone whose name my mind has misplaced.</th></tr> - </table> - </p> - </body> -</html> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 07:01:14
|
Revision: 15 Author: thekingant Date: 2006-03-18 23:01:11 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=15&view=rev Log Message: ----------- Update the "General Documentation" page with the file from 0.98.13 Modified Paths: -------------- web/htdocs/docs.php Modified: web/htdocs/docs.php =================================================================== --- web/htdocs/docs.php 2006-03-19 06:21:40 UTC (rev 14) +++ web/htdocs/docs.php 2006-03-19 07:01:11 UTC (rev 15) @@ -4,8 +4,8 @@ ?> <h1 class="center">FCE Ultra General Documentation</h1> -<i>Last updated August 11, 2004</i><br/> -<i>Valid as of FCE Ultra 0.98.11</i> +<i>Last updated September 15, 2004</i><br/> +<i>Valid as of FCE Ultra 0.98.13</i> <p> <b>Table of Contents:</b> @@ -282,7 +282,7 @@ <tr><td>12</td><td>??</td><td>Dragon Ball Z 5 ("bootleg" original)</td></tr> <tr><td>13</td><td>CPROM</td><td>Videomation</td></tr> <tr><td>15</td><td>Multi-cart(bootleg)</td><td>100-in-1: Contra Function 16</td></tr> - <tr><td>16</td><td>Bandai ??</td><td>Dragon Ball Z, SD Gundam Gaiden **EEPROM NOT SUPPORTED</td></tr> + <tr><td>16</td><td>Bandai ??</td><td>Dragon Ball Z, SD Gundam Gaiden **EEPROM is not emulated</td></tr> <tr><td>17</td><td>FFE F8 Series(hacked, bootleg)</td><td></td></tr> <tr><td>18</td><td>Jaleco SS806</td><td>Pizza Pop, Plasma Ball</td></tr> <tr><td>19</td><td>Namco 106</td><td>Splatter House, Mappy Kids</td></tr> @@ -361,12 +361,13 @@ <tr><td>154</td><td>Namco ??</td><td>Devil Man</td></tr> <tr><td>155</td><td>MMC1 w/o normal WRAM disable</td><td>The Money Game, Tatakae!! Rahmen Man</td></tr> <tr><td>156</td><td>??</td><td>Buzz and Waldog</td></tr> - <tr><td>157</td><td>Bandai Datach ??</td><td>Datach DBZ, Datach SD Gundam Wars, **EEPROM NOT SUPPORTED</td></tr> + <tr><td>157</td><td>Bandai Datach ??</td><td>Datach DBZ, Datach SD Gundam Wars, **EEPROM is not emulated</td></tr> <tr><td>158</td><td nowrap>RAMBO 1 Derivative</td><td>Alien Syndrome</td></tr> <tr><td>160</td><td>(same as mapper 90)</td><td>(same as mapper 90)</td></tr> <tr><td>180</td><td>??</td><td>Crazy Climber</td></tr> <tr><td>182</td><td>??</td><td>Super Donkey Kong</td></tr> <tr><td>184</td><td>??</td><td>Wing of Madoola, The</td></tr> + <tr><td>185</td><td>CNROM w/ CHR ROM unmapping</td><td>Banana, Mighty Bomb Jack, Spy vs Spy(Japanese)</td></tr> <tr><td>189</td><td>??</td><td>Thunder Warrior, Street Fighter 2 (Yoko)</td></tr> <tr><td>193</td><td>Mega Soft</td><td>Fighting Hero</td></tr> <tr><td>200</td><td>Multi-cart(bootleg)</td><td>1200-in-1</td></tr> @@ -716,7 +717,7 @@ <tr><td>-soundvol x</td><td>integer</td><td>100</td><td>Sound volume.</td></tr> <tr><td>-soundq x</td><td>boolean</td><td>0</td><td>If value is true, enable high-quality sound emulation.</td></tr> <tr><td>-soundbufsize x</td><td>integer</td><td>24(52 for Win32)</td><td>Specifies the desired size of the sound buffer, in milliseconds.</td></tr> - <tr><td>-inputcfg x</td><td>string</td><td></td><td>Configure mapping of physical device inputs to a virtual device. Valid values are "gamepad1", "gamepad2", "gamepad3", "gamepad4", "powerpad1", "powerpad2".</td></tr> + <tr><td>-inputcfg x</td><td>string</td><td></td><td>Configure mapping of physical device inputs to a virtual device. Valid values are "gamepad1", "gamepad2", "gamepad3", "gamepad4", "powerpad1", "powerpad2".<p>During configuration, pressing the same button twice in a row will cause configuration to move to the next button on the virtual device. A maximum of 4 physical buttons may be assigned to one virtual button.</td></tr> <tr><td>-input1 x <br /><i>and</i><br />-input2 x</td><td>string</td><td>gamepad</td><td>Select input device for input port 1 or 2. Valid strings are "none", "gamepad", "zapper", "powerpada", and "powerpadb".</td></tr> <tr><td>-fcexp x</td><td>string</td><td>none</td><td>Select Famicom expansion port device. Valid strings are "none", "shadow", "arkanoid", "4player", and "fkb".</td></tr> <tr><td>-nofs x</td><td>boolean</td><td>0</td><td>If value is true, disable four-score emulation.</td></tr> @@ -764,6 +765,9 @@ the item. The hack is simple, to clock the IRQ counter twice on scanline 238. </td> <td>mbshare/mmc3.c</td></tr> + <tr><td nowrap>Shougi Meikan '92<br>Shougin Meikan '93</td> + <td>The hack for these games is identical to the hack for KickMaster.</td> + <td>mbshare/mmc3.c</td></tr> <tr><td>Star Wars (PAL/European Version)</td> <td>This game probably has the same(or similar) problem on FCE Ultra as KickMaster. The hack is to clock the IRQ counter twice on the "dummy" scanline(scanline before the first This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 06:21:43
|
Revision: 14 Author: thekingant Date: 2006-03-18 22:21:40 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=14&view=rev Log Message: ----------- Comment out an unused variable declaration Modified Paths: -------------- fceultra/src/mappers/simple.c Modified: fceultra/src/mappers/simple.c =================================================================== --- fceultra/src/mappers/simple.c 2006-03-19 06:15:21 UTC (rev 13) +++ fceultra/src/mappers/simple.c 2006-03-19 06:21:40 UTC (rev 14) @@ -283,7 +283,7 @@ static void M185Sync(int version) { - int x; + //int x; //printf("%02x\n",mapbyte1[0]); //if((mapbyte1[0]&3)==3) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 06:15:25
|
Revision: 13 Author: thekingant Date: 2006-03-18 22:15:21 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=13&view=rev Log Message: ----------- Rename this file so it has a lowercase extension. Added Paths: ----------- fceultra/Documentation/tech/ppu/2C02 technical operation.txt Removed Paths: ------------- fceultra/Documentation/tech/ppu/2C02 technical operation.TXT Deleted: fceultra/Documentation/tech/ppu/2C02 technical operation.TXT =================================================================== --- fceultra/Documentation/tech/ppu/2C02 technical operation.TXT 2006-03-19 06:14:40 UTC (rev 12) +++ fceultra/Documentation/tech/ppu/2C02 technical operation.TXT 2006-03-19 06:15:21 UTC (rev 13) @@ -1,296 +0,0 @@ -******************************* -*NTSC 2C02 technical operation* -******************************* -Brad Taylor (big...@ho...) - -1st release: Sept 25th, Y2K -2nd release: Jan 27th, 2K3 -3rd release: Feb 4th, 2K3 -4th release: Feb 19th, 2K3 - - - This document describes the low-level operation and technical details of the 2C02, the NES's PPU. In general, it contains important information in regards to PPU timing, which no NES coder/emulator author should be without. This document assumes that you already understand the basics of how the PPU works, like how the playfield/object images are generated, and the behaviour of scroll/address counters during playfield rendering. - - Alot of the concepts behind how the PPU works described here have been extracted from Nintendo's patent documentation (U.S.#4,824,106). With block diagrams of the PPU's architecture (and even some schematics), these papers will definetely aid in the comprehension of this complex device. - - Since the first release, this document has been given a major overhaul. Most sections of the document have been reworked, and new information has been added just about everywhere. If you've read the old version of this document before, I recommend that you read this new one in it's entirity; there's new information even in sections which may look like they haven't changed much. - - Topics discussed hereon are as follows. - - - Video signal generation - - PPU base timing - - Miscellanious PPU info - - PPU memory access cycles - - Frame rendering details - - Scanline rendering details - - In-range object evaluation - - Details of playfield render pipeline - - Details of object pattern fetch & render - - Extra cycle frames - - The MMC3's scanline counter - - PPU pixel priority quirk - - Graphical enhancements - - -+-------+ -|History| -+-------+ - On the weekend of Sept. 25th, Y2K, I setup an experiment with my NTSC NES MB & my PC so's I could RE the PPU's timing. What I did was (using a PC interface) analyse the changes that occur on the PPU's address and data pins on every rising & falling edge of the PPU's clock. I was not planning on removing the PPU from the motherboard (yet), so basically I just kept everything intact (minus the stuff I added onto the MB so I could monitor the PPU's signals), and popped in a game, so that it would initialize the PPU for me (I used DK classics, since it was only taking somthing like 4 frames before it was turning on the background/sprites). - - The only change I made was taking out the 21 MHz clock generator circuitry. To replace the clock signal, I connected a port controlled latch to the NES's main clock line instead. Now, by writing a 0 or a 1 out to an PC ISA port of my choice (I was using $104), I was able to control the 21 MHz clockline of the NES. After I would create a rise or a fall on the NES's clock line, I would then read in the data that appeared on the PPU's address and data pins, which included monitoring what PPU registers the game read/wrote to (& the data that was read/written). - - -+-----------------------+ -|Video signal generation| -+-----------------------+ - A 21.48 MHz clock signal is fed into the PPU. This is the NES's main clock line, which is shared by the CPU. - - Inside the PPU, the 21.48 MHz signal is used to clock a three-stage Johnson counter. The complimentery outputs of both master and slave portions of each stage are used to form 12 mutually exclusive output phases- all 3.58 MHz each (the NTSC colorburst). These 12 different phases form the basis of all color generation for the PPU's composite video output. - - Naturally, when the user programs the lower 4-bits of a palette register, they are essentially selecting any 1 of 12 phases to be routed to the PPU's video out pin (this corresponds to chrominance (tint/hue) video information) when the appropriate pixel indexes it. Other chrominance combinations (0 & 13) are simply hardwired to a 1 or 0 to generate grayscale pixels. - - Bits 4 & 5 of a palette entry selects 1 of 4 linear DC voltage offsets to apply to the selected chrominance signal (this corresponds to luminance (brightness) video information) for a pixel. - - Chrominance values 14 & 15 yield a black pixel color, regardless of any luminance value setting. - - Luminance value 0, mixed with chrominance value 13 yield a "blacker than black" pixel color. This super black pixel has an output voltage level close to the vertical/horizontal syncronization pulses. Because of this, some video monitors will display warped/distorted screens for games which use this color for black (Game Genie is the best example of this). Essentially what is happening is the video monitor's horizontal timing is compromised by what it thinks are extra syncronization pulses in the scanline. This is not damaging to the monitors which are effected by it, but use of the super black color should be avoided, due to the graphical distortion it causes. - - The amplitude of the selected chrominance signal (via the 4 lower bits of a palette register) remain constant regardless of bits 4 or 5. Thus it is not possible to adjust the saturation level of a particular color. - - -+---------------+ -|PPU base timing| -+---------------+ - Other than the 3-stage Johnson counter, the 21.48 MHz signal is not used directly by any other PPU hardware. Instead, the signal is divided by 4 to get 5.37 MHz, and is used as the smallest unit of timing in the PPU. All following references to PPU clock cycle (abbr. "cc") timing in this document will be in respect to this timing base, unless otherwise indicated. - - - Pixels are rendered at the same rate as the base PPU clock. In other words, 1 clock cycle= 1 pixel. - - - 341 PPU cc's make up the time of a typical scanline (or 341/3 CPU cc's). - - - One frame consists of 262 scanlines. This equals 341*262 PPU cc's per frame (divide by 3 for # of CPU cc's). - - -+------------------------+ -|PPU memory access cycles| -+------------------------+ - All PPU memory access cycles are 2 clocks long, and can be made back-to-back (typically done during rendering). Here's how the access breaks down: - - At the beginning of the access cycle, PPU address lines 8..13 are updated with the target address. This data remains here until the next time an access cycle occurs. - - The lower 8-bits of the PPU address lines are multiplexed with the data bus, to reduce the PPU's pin count. On the first clock cycle of the access, A0..A7 are put on the PPU's data bus, and the ALE (address latch enable) line is activated for the first half of the cycle. This loads the lower 8-bit address into an external 8-bit transparent latch strobed by ALE (74LS373 is used). - - On the second clock cycle, the /RD (or /WR) line is activated, and stays active for the entire cycle. Appropriate data is driven onto the bus during this time. - - -+----------------------+ -|Miscellanious PPU info| -+----------------------+ - - Sprite DMA is 1536 clock cycles long (512 CPU cc's). 256 individual transfers are made from CPU memory to a temp register inside the CPU, then from the CPU's temp reg, to $2004. - - - The PPU makes NO external access to the PPU bus, unless the playfield or objects are enabled during a scanline outside vblank. This means that the PPU's address and data busses are dead while in this state. - - - palette RAM is accessed internally during playfield rendering (i.e., the palette address/data is never put on the PPU bus during this time). Additionally, when the programmer accesses palette RAM via $2006/7, the palette address accessed actually does show up on the PPU address bus, but the PPU's /RD & /WR flags are not activated. This is required; to prevent writing over name table data falling under the approprite mirrored area (since the name table RAM's address decoder simply consists of an inverter connected to the A13 line- effectively decoding all addresses in $2000-$3FFF). - - - the VINT impulse (NMI) and bit $2002.7 are set simultaniously. Reading $2002 will reset bit 7, but it seems that the VINT flag goes down on it's own. Because of this, when the PPU generates a VINT, it doesn't require any acknowledgement whatsoever; it will continue firing off VINTs, regardless of inservice to $2002. The only way to stop VINTs is to clear $2000.7. - - - Because the PPU cannot make a read from PPU memory immediately upon request (via $2007), there is an internal buffer, which acts as a 1-stage data pipeline. As a read is requested, the contents of the read buffer are returned to the NES's CPU. After this, at the PPU's earliest convience (according to PPU read cycle timings), the PPU will fetch the requested data from the PPU memory, and throw it in the read buffer. Writes to PPU mem via $2007 are pipelined as well, but it is unknown to me if the PPU uses this same buffer (this could be easily tested by writing somthing to $2007, and seeing if the same value is returned immediately after reading). - - -+-----------------------+ -|Frame rendering details| -+-----------------------+ - The following describes the PPU's status during all 262 scanlines of a frame. Any scanlines where work is done (like image rendering), consists of the steps which will be described in the next section. - - 0..19: Starting at the instant the VINT flag is pulled down (when a NMI is generated), 20 scanlines make up the period of time on the PPU which I like to call the VINT period. During this time, the PPU makes no access to it's external memory (i.e. name / pattern tables, etc.). - - 20: After 20 scanlines worth of time go by (since the VINT flag was set), the PPU starts to render scanlines. This first scanline is a dummy one; although it will access it's external memory in the same sequence it would for drawing a valid scanline, no on-screen pixels are rendered during this time, making the fetched background data immaterial. Both horizontal *and* vertical scroll counters are updated (presumably) at cc offset 256 in this scanline. Other than that, the operation of this scanline is identical to any other. The primary reason this scanline exists is to start the object render pipeline, since it takes 256 cc's worth of time to determine which objects are in range or not for any particular scanline. - - 21..260: after rendering 1 dummy scanline, the PPU starts to render the actual data to be displayed on the screen. This is done for 240 scanlines, of course. - - 261: after the very last rendered scanline finishes, the PPU does nothing for 1 scanline (i.e. the programmer gets screwed out of perfectly good VINT time). When this scanline finishes, the VINT flag is set, and the process of drawing lines starts all over again. - - -+--------------------------+ -|Scanline rendering details| -+--------------------------+ - Naturally, the PPU will fetch data from name, attribute, and pattern tables during a scanline to produce an image on the screen. This section details the PPU's doings during this time. - - As explained before, external PPU memory can be accessed every 2 cc's. With 341 cc's per scanline, this gives the PPU enough time to make 170 memory accesses per scanline (and it uses all of them!). After the 170th fetch, the PPU does nothing for 1 clock cycle. Remember that a single pixel is rendered every clock cycle. - - - Memory fetch phase 1 thru 128 - ----------------------------- - 1. Name table byte - 2. Attribute table byte - 3. Pattern table bitmap #0 - 4. Pattern table bitmap #1 - - This process is repeated 32 times (32 tiles in a scanline). - - - This is when the PPU retrieves the appropriate data from PPU memory for rendering the playfield. The first playfield tile fetched here is actually the 3rd to be drawn on the screen (the playfield data for the first 2 tiles to be rendered on this scanline are fetched at the end of the scanline prior to this one). - - All valid on-screen pixel data arrives at the PPU's video out pin during this time (256 clocks). For determining the precise delay between when a tile's bitmap fetch phase starts (the whole 4 memory fetches), and when the first pixel of that tile's bitmap data hits the video out pin, the formula is (16-n) clock cycles, where n is the fine horizontal scroll offset (0..7 pixels). This information is relivant for understanding the exact timing operation of the "object 0 collision" flag. - - Note that the PPU fetches an attribute table byte for every 8 sequential horizontal pixels it draws. This essentially limits the PPU's color area (the area of pixels which are forced to use the same 3-color palette) to only 8 horizontally sequential pixels. - - It is also during this time that the PPU evaluates the "Y coordinate" entries of all 64 objects in object attribute RAM (OAM), to see if the objects are within range (to be drawn on the screen) for the *next* scanline (this is why Y-coordinate entries in the OAM must be programmed to a value 1 less than the scanline the object is to appear on). Each evaluation (presumably) takes 4 clock cycles, for a total of 256 (which is why it's done during on-screen pixel rendering). - - - In-range object evaluation - -------------------------- - An 8-bit comparator is used to calculate the 9-bit difference between the current scanline (minus 21), and each Y-coordinate (plus 1) of every object entry in the OAM. Objects are considered in range if the comparator produces a difference in the range of 0..7 (if $2000.5 currently = 0), or 0..15 (if $2000.5 currently = 1). - - (Note that a 9-bit comparison result is generated. This means that setting object scanline coordinates for ranges -1..-15 are actually interpreted as ranges 241..255. For this reason, objects with these ranges will never be considered to be part of any on-screen scanline range, and will not allow smooth object scrolling off the top of the screen.) - - Tile index (8 bits), X-coordinate (8 bits), & attribute information (4 bits; vertical inversion is excluded) from the in-range OAM element, plus the associated 4-bit result of the range comparison accumulate in a part of the PPU called the "sprite temporary memory". Logical inversion is applied to the loaded 4-bit range comparison result, if the object's vertical inversion attribute bit is set. - - Since object range evaluations occur sequentially through the OAM (starting from entry 0 to 63), the sprite temporary memory always fills in order from the highest priority in-range object, to lower ones. A 4-bit "in-range" counter is used to determine the number of found objects on the scanline (from 0 up to 8), and serves as an index pointer for placement of found object data into the 8-element sprite temporary memory. The counter is reset at the beginning of the object evaluation phase, and is post-incremented everytime an object is found in-range. This occurs until the counter equals 8, when found object data after this is discarded, and a flag (bit 5 of $2002) is raised, indicating that it is going to be dropping objects for the next scanline. - - An additional memory bit associated with the sprite temporary memory is used to indicate that the primary object (#0) was found to be in range. This will be used later on to detect primary object-to-playfield pixel collisions. - - - Playfield render pipeline details - --------------------------------- - As pattern table & palette select data is fetched, it is loaded into internal latches (the palette select data is selected from the fetched byte via a 2-bit 1-of-4 selector). - - At the start of a new tile fetch phase (every 8 cc's), both latched pattern table bitmaps are loaded into the upper 8-bits of 2- 16-bit shift registers (which both shift right every clock cycle). The palette select data is also transfered into another latch during this time (which feeds the serial inputs of 2 8-bit right shift registers shifted every clock). The pixel data is fed into these extra shift registers in order to implement fine horizontal scrolling, since the periods when the PPU fetch tile data is fixed. - - A single bit from each shift register is selected, to form the valid 4-bit playfield pixel for the current clock cycle. The bit selection offset is based on the fine horizontal scroll value (this selects bit positions 0..7 for all 4 shift registers). The selected 4-bit pixel data will then be fed into the multiplexer (described later) to be mixed with object data. - - - Memory fetch phase 129 thru 160 - ------------------------------- - 1. Garbage name table byte - 2. Garbage name table byte - 3. Pattern table bitmap #0 for applicable object (for next scanline) - 4. Pattern table bitmap #1 for applicable object (for next scanline) - - This process is repeated 8 times. - - - This is the period of time when the PPU retrieves the appropriate pattern table data for the objects to be drawn on the *next* scanline. When less than 8 objects exist on the next scanline (as the in-range object evaluation counter indicates), dummy pattern table fetches take place for the remaining fetches. Internally, the fetched dummy-data is discarded, and replaced with completely transparent bitmap patterns). - - Although the fetched name table data is thrown away, and the name table address is somewhat unpredictable, the address does seem to relate to the first name table tile to be fetched for the next scanline. This would seem to imply that PPU cc #256 is when the PPU's scroll/address counters have their horizontal scroll values automatically updated. - - It should also be noted that because this fetch is required for objects on the next scanline, it is neccessary for a garbage scanline to exist prior to the very first scanline to be actually rendered, so that object attribute RAM entries can be evaluated, and the appropriate bitmap data retrieved. - - As far as the wasted fetch phases here, well, what can I say. Either Nintendo's engineers were VERY lazy, and didn't want to add the small amount of extra circuitry to the PPU so that 16 object fetches could take place per scanline, or Nintendo couldn't spot the extra memory required to implement 16 object scanlines. Thing is though- between the object attribute mem, sprite temporary & buffer mem, and palette mem, that's already 2406 bits of RAM; I don't think it would've killed them to just add the 408 bits it would've took for an extra 8 objects, which would've made games with horrible OAM cycling (Double Dragon 2 w/ 2 players) look half-decent (hell, with 16 object scanlines, games would hardly even need OAM cycling). - - - Details of object pattern fetch & render - ---------------------------------------- - Where the PPU fetches pattern table data for an individual object is conditioned on the contents of the sprite temporary memory element, and $2000.5. If $2000.5 = 0, the tile index data is used as usual, and $2000.3 selects the pattern table to use. If $2000.5 = 1, the MSB of the range result value become the LSB of the indexed tile, and the LSB of the tile index value determines pattern table selection. The lower 3 bits of the range result value are always used as the fine vertical offset into the selected pattern. - - Horizontal inversion (bit order reversing) is applied to fetched bitmaps, if indicated in the sprite temporary memory element. - - The fetched pattern table data (which is 2 bytes), plus the associated 3 attribute bits (palette select & priority), and the x coordinate byte in sprite temporary memory are then loaded into a part of the PPU called the "sprite buffer memory" (the primary object present bit is also copied). This memory area again, is large enough to hold the contents for 8 sprites. - - The composition of one sprite buffer element here is: 2 8-bit shift registers (the fetched pattern table data is loaded in here, where it will be serialized at the appropriate time), a 3-bit latch (which holds the color & priority data for an object), and an 8-bit down counter (this is where the x coordinate is loaded). - - The counter is decremented every time the PPU renders a pixel (the first 256 cc's of a scanline; see "Memory fetch phase 1 thru 128" above). When the counter equals 0, the pattern table data in the shift registers will start to serialize (1 shift per clock). Before this time, or 8 clocks after, consider the outputs of the serializers for each stage to be 0 (transparency). - - The streams of all 8 object serializers are prioritized, and ultimately only one stream (with palette select & priority information) is selected for output to the multiplexer (where object & playfield pixels are prioritized). - - The data for the first sprite buffer entry (including the primary object present flag) has the first chance to enter the multiplexer, if it's output pixel is non-transparent (non-zero). Otherwise, priority is passed to the next serializer in the sprite buffer memory, and the test for non-transparency is made again (the primary object present status will always be passed to the multiplexer as false in this case). This is done until the last (8th) stage is reached, when the object data is passed through unconditionally. Keep in mind that this whole process occurs every clock cycle (hardware is used to determine priority instantly). - - The multiplexer does 2 things: determines primary object collisions, and decides which pixel data to pass through to index the palette RAM- either the playfield's or the object's. - - Primary object collisions occur when a non-transparent playfield pixel coincides with a non-transparent object pixel, while the primary object present status entering the multiplexer for the current clock cycle is true. This causes a flip-flop ($2002.6) to be set, and remains set (presumably) some time after the VINT occurence (prehaps up until scanline 20?). - - The decision for selecting the data to pass through to the palette index is made rather easilly. The condition to use object (opposed to playfield) data is: - - (OBJpri=foreground OR PFpixel=xparent) AND OBJpixel<>xparent - - Since the PPU has 2 palettes; one for objects, and one for playfield, the appropriate palette will be selected depending on which pixel data is passed through. - - After the palette look-up, the operation of events follows the aforementioned steps in the "video signal generation" section. - - - Memory fetch phase 161 thru 168 - ------------------------------- - 1. Name table byte - 2. Attribute table byte - 3. Pattern table bitmap #0 (for next scanline) - 4. Pattern table bitmap #1 (for next scanline) - - This process is repeated 2 times. - - - It is during this time that the PPU fetches the appliciable playfield data for the first and second tiles to be rendered on the screen for the *next* scanline. These fetches initialize the internal playfield pixel pipelines (2- 16-bit shift registers) with valid bitmap data. The rest of tiles (3..32) are fetched at the beginning of the following scanline. - - - Memory fetch phase 169 thru 170 - ------------------------------- - 1. Name table byte - 2. Name table byte - - - I'm unclear of the reason why this particular access to memory is made. The name table address that is accessed 2 times in a row here, is also the same nametable address that points to the 3rd tile to be rendered on the screen (or basically, the first name table address that will be accessed when the PPU is fetching playfield data on the next scanline). - - - After memory access 170 - ----------------------- - The PPU simply rests for 1 cycle here (or the equivelant of half a memory access cycle) before repeating the whole pixel/scanline rendering process. - - -+------------------+ -|Extra cycle frames| -+------------------+ - Scanline 20 is the only scanline that has variable length. On every odd frame, this scanline is only 340 cycles (the dead cycle at the end is removed). This is done to cause a shift in the NTSC colorburst phase. - - You see, a 3.58 MHz signal, the NTSC colorburst, is required to be modulated into a luminance carrying signal in order for color to be generated on an NTSC monitor. Since the PPU's video out consists of basically square waves (as opposed to sine waves, which would be preferred), it takes an entire colorburst cycle (1/3.58 MHz) for an NTSC monitor to identify the color of a PPU pixel accurately. - - But now you remember that the PPU renders pixels at 5.37 MHz- 1.5x the rate of the colorburst. This means that if a single pixel resides on a scanline with a color different to those surrounding it, the pixel will probably be misrepresented on the screen, sometimes appearing faintly. - - Well, to somewhat fix this problem, they added this extra pixel into every odd frame (shifting the colorburst phase over a bit), and changing the way the monitor interprets isolated colored pixels each frame. This is why when you play games with detailed background graphics, the background seems to flicker a bit. Once you start scrolling the screen however, it seems as if some pixels become invisible; this is how stationary PPU images would look without this cycle removed from odd frames. - - Certain scroll rates expose this NTSC PPU color caveat regardless of the toggling phase shift. Some of Zelda 2's dungeon backgrounds are a good place to see this effect. - - -+---------------------------+ -|The MMC3's scanline counter| -+---------------------------+ - As most people know, the MMC3 bases it's scanline counter on PPU address line A13 (which is why IRQ's can be fired off manually by toggling A13 a bunch of times via $2006). What's not common knowledge is the number of times A13 is expected to toggle in a scanline (although if you've been paying close attention to the doc here, you should already know ;) - - A13 was probably used for the IRQ counter (as opposed to using the PPU's /READ line) because this address line already needed to be connected to the MMC for bankswitching purposes (so in other words, to reduce the MMC3's pin count by 1). They also probably used this method of counting (as opposed to a CPU cycle counter) since A13 cycles (0 -> 1) exactly 42 times per scanline, whereas the CPU count of cycles per scanline is not an exact integer (113.67). Having said that, I guess Nintendo wanted to provide an "easy-to-use" method of generating special image effects, without making programmers have to figure out how many clock cycles to program an IRQ counter with (a pretty lame excuse for not providing an IRQ counter with CPU clock cycle precision (which would have been more useful and versatile)). - - Regardless of any values PPU registers are programmed with, A13 will operate in a predictable fashion during image rendering (and if you understand how PPU addressing works, you should understand that A13 is the *only* address line with fixed behaviour during image rendering). - - -+------------------------+ -|PPU pixel priority quirk| -+------------------------+ - Object data is prioritized between itself, then prioritized between the playfield. There are some odd side effects to this scheme of rendering, however. For instance, imagine a low priority object pixel with foreground priority, a high priority object pixel with background priority, and a playfield pixel all coinciding (all non-transparent). - - Ideally, the playfield is considered to be the middle layer between background and foreground priority objects. This means that the playfield pixel should hide the background priority object pixel (regardless of object priority), and the foreground priority object should appear atop the PF pixel. - - However, because of the way the PPU renders (as just described), OBJ priority is evaluated first, and therefore the background object pixel wins, which means that you'll only be seeing the PF pixel after this mess. - - A good game to demonstrate this behaviour is Megaman 2. Go into airman's stage. First, jump into the energy bar, just to confirm that megaman's sprite is of a higher priority than the energy bar's. Now, get to the second half of the stage, where the clouds cover the energy bar. The energy bar will be ontop of the clouds, but megaman will be behind them. Now, look what happens when you jump into the energy bar here... you see the clouds where megaman underlaps the energy bar. - - -+----------------------+ -|Graphical enhancements| -+----------------------+ - Since an NES cartridge has access to the PPU bus, any number of on-cart hardware schemes can be used to enhance the graphic capabilities of the NES. After all, the PPU's playfield pipeline is very simple: it fetches 272 playfield pixels per scanline (as 34*2 byte fetches, in real-time), and outputs 256 of them to the screen (with the 0..7 pixel offset determined by the fine X scroll register), along with object data combined with it. - - Essentially, you can bypass the PPU's simple scrolling system, implement a custom one on your cart (fetching bitmap data in your own fashion), and feed the PPU bitmap data in your own order. - - The possibilities of this are endless (like sporting multiple playfields, or even playfield rotation/scaling), but of course what it comes down to is the amount of cartridge hardware required. - - Generally, playfield rotation/scaling can be done quite easily- it only requires a few sets of 16-bit registers and adders (the 16 bits are broken up into 8.8 fixed point values). But this kind of implementation is more suited for an integrated circuit, since this would require dozens of discrete logic chips. - - Multiple playfields are another thing which could be easily done. The caveat here is that pixel pipelines (i.e., shift registers) and a multiplexer would have to be implemented on the cart (not to mention exclusive name table RAM) in order to process the playfield bitmaps from multiple sources. The access to the CHR-ROM/RAM would also have to increased- but as it stands, the CHR-ROM/RAM bandwidth is 1.34 MHz, a rather low frequency. With a memory device capable of a 10.74 MHz bandwith, you could have 8 playfields to work with. Generally, this would be very useful for displaying multiple huge objects on the screen- without ever having to worry about annoying flicker. - - The only restriction to doing any of this is that: - - - every 8 sequential horizontal pixels sent to the PPU must share the same palette select value. Because of this, hardware would have to be implemented to decide which palette select value to feed the PPU between 8 horizontally sequential pixels, if they do not all share the same palette select value. The on-screen results of this may not be too flattering sometimes, but this is a small price to pay to do some neat graphical tricks on the NES. - - -only the playfield palette can be used. As usual, this pretty much limits your randomly accessable colors to about 12+1. - - It's a damn shame that Nintendo never created a MMC which would enhance graphics on the NES in useful ways as mentioned above. The MMC5 was the only device that came close, and it's only selling features were the single-tile color area, and the vertical split screen mode (which I don't think any game ever used). Considering the amount of pins (100) the MMC5 had, and number of gates they put in it just for the EXRAM (which was 1K bytes), they could've put some really useful graphics hardware inside there instead. - - Prehaps the infamous Color Dreams "Hellraiser" cart was the closest the NES ever came to seeing such sophisticated graphics. The cart was never released, but from what I've read, it was going to use some sort of frame buffer, and a Z80 CPU to do the graphical rendering. It had been rumored that the game had 3D graphics (or at least 2.5D) in it. If so (and the game was actually good), prehaps it would have raised a few eyebrows in the industry, and inspired Nintendo to develop a new MMC chip with similar capabilities, in order to keep the NES in it's profit margin for another few years (and allow it to compete somewhat with the more advanced systems of the time). - -EOF \ No newline at end of file Copied: fceultra/Documentation/tech/ppu/2C02 technical operation.txt (from rev 11, fceultra/Documentation/tech/ppu/2C02 technical operation.TXT) =================================================================== --- fceultra/Documentation/tech/ppu/2C02 technical operation.txt (rev 0) +++ fceultra/Documentation/tech/ppu/2C02 technical operation.txt 2006-03-19 06:15:21 UTC (rev 13) @@ -0,0 +1,296 @@ +******************************* +*NTSC 2C02 technical operation* +******************************* +Brad Taylor (big...@ho...) + +1st release: Sept 25th, Y2K +2nd release: Jan 27th, 2K3 +3rd release: Feb 4th, 2K3 +4th release: Feb 19th, 2K3 + + + This document describes the low-level operation and technical details of the 2C02, the NES's PPU. In general, it contains important information in regards to PPU timing, which no NES coder/emulator author should be without. This document assumes that you already understand the basics of how the PPU works, like how the playfield/object images are generated, and the behaviour of scroll/address counters during playfield rendering. + + Alot of the concepts behind how the PPU works described here have been extracted from Nintendo's patent documentation (U.S.#4,824,106). With block diagrams of the PPU's architecture (and even some schematics), these papers will definetely aid in the comprehension of this complex device. + + Since the first release, this document has been given a major overhaul. Most sections of the document have been reworked, and new information has been added just about everywhere. If you've read the old version of this document before, I recommend that you read this new one in it's entirity; there's new information even in sections which may look like they haven't changed much. + + Topics discussed hereon are as follows. + + - Video signal generation + - PPU base timing + - Miscellanious PPU info + - PPU memory access cycles + - Frame rendering details + - Scanline rendering details + - In-range object evaluation + - Details of playfield render pipeline + - Details of object pattern fetch & render + - Extra cycle frames + - The MMC3's scanline counter + - PPU pixel priority quirk + - Graphical enhancements + + ++-------+ +|History| ++-------+ + On the weekend of Sept. 25th, Y2K, I setup an experiment with my NTSC NES MB & my PC so's I could RE the PPU's timing. What I did was (using a PC interface) analyse the changes that occur on the PPU's address and data pins on every rising & falling edge of the PPU's clock. I was not planning on removing the PPU from the motherboard (yet), so basically I just kept everything intact (minus the stuff I added onto the MB so I could monitor the PPU's signals), and popped in a game, so that it would initialize the PPU for me (I used DK classics, since it was only taking somthing like 4 frames before it was turning on the background/sprites). + + The only change I made was taking out the 21 MHz clock generator circuitry. To replace the clock signal, I connected a port controlled latch to the NES's main clock line instead. Now, by writing a 0 or a 1 out to an PC ISA port of my choice (I was using $104), I was able to control the 21 MHz clockline of the NES. After I would create a rise or a fall on the NES's clock line, I would then read in the data that appeared on the PPU's address and data pins, which included monitoring what PPU registers the game read/wrote to (& the data that was read/written). + + ++-----------------------+ +|Video signal generation| ++-----------------------+ + A 21.48 MHz clock signal is fed into the PPU. This is the NES's main clock line, which is shared by the CPU. + + Inside the PPU, the 21.48 MHz signal is used to clock a three-stage Johnson counter. The complimentery outputs of both master and slave portions of each stage are used to form 12 mutually exclusive output phases- all 3.58 MHz each (the NTSC colorburst). These 12 different phases form the basis of all color generation for the PPU's composite video output. + + Naturally, when the user programs the lower 4-bits of a palette register, they are essentially selecting any 1 of 12 phases to be routed to the PPU's video out pin (this corresponds to chrominance (tint/hue) video information) when the appropriate pixel indexes it. Other chrominance combinations (0 & 13) are simply hardwired to a 1 or 0 to generate grayscale pixels. + + Bits 4 & 5 of a palette entry selects 1 of 4 linear DC voltage offsets to apply to the selected chrominance signal (this corresponds to luminance (brightness) video information) for a pixel. + + Chrominance values 14 & 15 yield a black pixel color, regardless of any luminance value setting. + + Luminance value 0, mixed with chrominance value 13 yield a "blacker than black" pixel color. This super black pixel has an output voltage level close to the vertical/horizontal syncronization pulses. Because of this, some video monitors will display warped/distorted screens for games which use this color for black (Game Genie is the best example of this). Essentially what is happening is the video monitor's horizontal timing is compromised by what it thinks are extra syncronization pulses in the scanline. This is not damaging to the monitors which are effected by it, but use of the super black color should be avoided, due to the graphical distortion it causes. + + The amplitude of the selected chrominance signal (via the 4 lower bits of a palette register) remain constant regardless of bits 4 or 5. Thus it is not possible to adjust the saturation level of a particular color. + + ++---------------+ +|PPU base timing| ++---------------+ + Other than the 3-stage Johnson counter, the 21.48 MHz signal is not used directly by any other PPU hardware. Instead, the signal is divided by 4 to get 5.37 MHz, and is used as the smallest unit of timing in the PPU. All following references to PPU clock cycle (abbr. "cc") timing in this document will be in respect to this timing base, unless otherwise indicated. + + - Pixels are rendered at the same rate as the base PPU clock. In other words, 1 clock cycle= 1 pixel. + + - 341 PPU cc's make up the time of a typical scanline (or 341/3 CPU cc's). + + - One frame consists of 262 scanlines. This equals 341*262 PPU cc's per frame (divide by 3 for # of CPU cc's). + + ++------------------------+ +|PPU memory access cycles| ++------------------------+ + All PPU memory access cycles are 2 clocks long, and can be made back-to-back (typically done during rendering). Here's how the access breaks down: + + At the beginning of the access cycle, PPU address lines 8..13 are updated with the target address. This data remains here until the next time an access cycle occurs. + + The lower 8-bits of the PPU address lines are multiplexed with the data bus, to reduce the PPU's pin count. On the first clock cycle of the access, A0..A7 are put on the PPU's data bus, and the ALE (address latch enable) line is activated for the first half of the cycle. This loads the lower 8-bit address into an external 8-bit transparent latch strobed by ALE (74LS373 is used). + + On the second clock cycle, the /RD (or /WR) line is activated, and stays active for the entire cycle. Appropriate data is driven onto the bus during this time. + + ++----------------------+ +|Miscellanious PPU info| ++----------------------+ + - Sprite DMA is 1536 clock cycles long (512 CPU cc's). 256 individual transfers are made from CPU memory to a temp register inside the CPU, then from the CPU's temp reg, to $2004. + + - The PPU makes NO external access to the PPU bus, unless the playfield or objects are enabled during a scanline outside vblank. This means that the PPU's address and data busses are dead while in this state. + + - palette RAM is accessed internally during playfield rendering (i.e., the palette address/data is never put on the PPU bus during this time). Additionally, when the programmer accesses palette RAM via $2006/7, the palette address accessed actually does show up on the PPU address bus, but the PPU's /RD & /WR flags are not activated. This is required; to prevent writing over name table data falling under the approprite mirrored area (since the name table RAM's address decoder simply consists of an inverter connected to the A13 line- effectively decoding all addresses in $2000-$3FFF). + + - the VINT impulse (NMI) and bit $2002.7 are set simultaniously. Reading $2002 will reset bit 7, but it seems that the VINT flag goes down on it's own. Because of this, when the PPU generates a VINT, it doesn't require any acknowledgement whatsoever; it will continue firing off VINTs, regardless of inservice to $2002. The only way to stop VINTs is to clear $2000.7. + + - Because the PPU cannot make a read from PPU memory immediately upon request (via $2007), there is an internal buffer, which acts as a 1-stage data pipeline. As a read is requested, the contents of the read buffer are returned to the NES's CPU. After this, at the PPU's earliest convience (according to PPU read cycle timings), the PPU will fetch the requested data from the PPU memory, and throw it in the read buffer. Writes to PPU mem via $2007 are pipelined as well, but it is unknown to me if the PPU uses this same buffer (this could be easily tested by writing somthing to $2007, and seeing if the same value is returned immediately after reading). + + ++-----------------------+ +|Frame rendering details| ++-----------------------+ + The following describes the PPU's status during all 262 scanlines of a frame. Any scanlines where work is done (like image rendering), consists of the steps which will be described in the next section. + + 0..19: Starting at the instant the VINT flag is pulled down (when a NMI is generated), 20 scanlines make up the period of time on the PPU which I like to call the VINT period. During this time, the PPU makes no access to it's external memory (i.e. name / pattern tables, etc.). + + 20: After 20 scanlines worth of time go by (since the VINT flag was set), the PPU starts to render scanlines. This first scanline is a dummy one; although it will access it's external memory in the same sequence it would for drawing a valid scanline, no on-screen pixels are rendered during this time, making the fetched background data immaterial. Both horizontal *and* vertical scroll counters are updated (presumably) at cc offset 256 in this scanline. Other than that, the operation of this scanline is identical to any other. The primary reason this scanline exists is to start the object render pipeline, since it takes 256 cc's worth of time to determine which objects are in range or not for any particular scanline. + + 21..260: after rendering 1 dummy scanline, the PPU starts to render the actual data to be displayed on the screen. This is done for 240 scanlines, of course. + + 261: after the very last rendered scanline finishes, the PPU does nothing for 1 scanline (i.e. the programmer gets screwed out of perfectly good VINT time). When this scanline finishes, the VINT flag is set, and the process of drawing lines starts all over again. + + ++--------------------------+ +|Scanline rendering details| ++--------------------------+ + Naturally, the PPU will fetch data from name, attribute, and pattern tables during a scanline to produce an image on the screen. This section details the PPU's doings during this time. + + As explained before, external PPU memory can be accessed every 2 cc's. With 341 cc's per scanline, this gives the PPU enough time to make 170 memory accesses per scanline (and it uses all of them!). After the 170th fetch, the PPU does nothing for 1 clock cycle. Remember that a single pixel is rendered every clock cycle. + + + Memory fetch phase 1 thru 128 + ----------------------------- + 1. Name table byte + 2. Attribute table byte + 3. Pattern table bitmap #0 + 4. Pattern table bitmap #1 + + This process is repeated 32 times (32 tiles in a scanline). + + + This is when the PPU retrieves the appropriate data from PPU memory for rendering the playfield. The first playfield tile fetched here is actually the 3rd to be drawn on the screen (the playfield data for the first 2 tiles to be rendered on this scanline are fetched at the end of the scanline prior to this one). + + All valid on-screen pixel data arrives at the PPU's video out pin during this time (256 clocks). For determining the precise delay between when a tile's bitmap fetch phase starts (the whole 4 memory fetches), and when the first pixel of that tile's bitmap data hits the video out pin, the formula is (16-n) clock cycles, where n is the fine horizontal scroll offset (0..7 pixels). This information is relivant for understanding the exact timing operation of the "object 0 collision" flag. + + Note that the PPU fetches an attribute table byte for every 8 sequential horizontal pixels it draws. This essentially limits the PPU's color area (the area of pixels which are forced to use the same 3-color palette) to only 8 horizontally sequential pixels. + + It is also during this time that the PPU evaluates the "Y coordinate" entries of all 64 objects in object attribute RAM (OAM), to see if the objects are within range (to be drawn on the screen) for the *next* scanline (this is why Y-coordinate entries in the OAM must be programmed to a value 1 less than the scanline the object is to appear on). Each evaluation (presumably) takes 4 clock cycles, for a total of 256 (which is why it's done during on-screen pixel rendering). + + + In-range object evaluation + -------------------------- + An 8-bit comparator is used to calculate the 9-bit difference between the current scanline (minus 21), and each Y-coordinate (plus 1) of every object entry in the OAM. Objects are considered in range if the comparator produces a difference in the range of 0..7 (if $2000.5 currently = 0), or 0..15 (if $2000.5 currently = 1). + + (Note that a 9-bit comparison result is generated. This means that setting object scanline coordinates for ranges -1..-15 are actually interpreted as ranges 241..255. For this reason, objects with these ranges will never be considered to be part of any on-screen scanline range, and will not allow smooth object scrolling off the top of the screen.) + + Tile index (8 bits), X-coordinate (8 bits), & attribute information (4 bits; vertical inversion is excluded) from the in-range OAM element, plus the associated 4-bit result of the range comparison accumulate in a part of the PPU called the "sprite temporary memory". Logical inversion is applied to the loaded 4-bit range comparison result, if the object's vertical inversion attribute bit is set. + + Since object range evaluations occur sequentially through the OAM (starting from entry 0 to 63), the sprite temporary memory always fills in order from the highest priority in-range object, to lower ones. A 4-bit "in-range" counter is used to determine the number of found objects on the scanline (from 0 up to 8), and serves as an index pointer for placement of found object data into the 8-element sprite temporary memory. The counter is reset at the beginning of the object evaluation phase, and is post-incremented everytime an object is found in-range. This occurs until the counter equals 8, when found object data after this is discarded, and a flag (bit 5 of $2002) is raised, indicating that it is going to be dropping objects for the next scanline. + + An additional memory bit associated with the sprite temporary memory is used to indicate that the primary object (#0) was found to be in range. This will be used later on to detect primary object-to-playfield pixel collisions. + + + Playfield render pipeline details + --------------------------------- + As pattern table & palette select data is fetched, it is loaded into internal latches (the palette select data is selected from the fetched byte via a 2-bit 1-of-4 selector). + + At the start of a new tile fetch phase (every 8 cc's), both latched pattern table bitmaps are loaded into the upper 8-bits of 2- 16-bit shift registers (which both shift right every clock cycle). The palette select data is also transfered into another latch during this time (which feeds the serial inputs of 2 8-bit right shift registers shifted every clock). The pixel data is fed into these extra shift registers in order to implement fine horizontal scrolling, since the periods when the PPU fetch tile data is fixed. + + A single bit from each shift register is selected, to form the valid 4-bit playfield pixel for the current clock cycle. The bit selection offset is based on the fine horizontal scroll value (this selects bit positions 0..7 for all 4 shift registers). The selected 4-bit pixel data will then be fed into the multiplexer (described later) to be mixed with object data. + + + Memory fetch phase 129 thru 160 + ------------------------------- + 1. Garbage name table byte + 2. Garbage name table byte + 3. Pattern table bitmap #0 for applicable object (for next scanline) + 4. Pattern table bitmap #1 for applicable object (for next scanline) + + This process is repeated 8 times. + + + This is the period of time when the PPU retrieves the appropriate pattern table data for the objects to be drawn on the *next* scanline. When less than 8 objects exist on the next scanline (as the in-range object evaluation counter indicates), dummy pattern table fetches take place for the remaining fetches. Internally, the fetched dummy-data is discarded, and replaced with completely transparent bitmap patterns). + + Although the fetched name table data is thrown away, and the name table address is somewhat unpredictable, the address does seem to relate to the first name table tile to be fetched for the next scanline. This would seem to imply that PPU cc #256 is when the PPU's scroll/address counters have their horizontal scroll values automatically updated. + + It should also be noted that because this fetch is required for objects on the next scanline, it is neccessary for a garbage scanline to exist prior to the very first scanline to be actually rendered, so that object attribute RAM entries can be evaluated, and the appropriate bitmap data retrieved. + + As far as the wasted fetch phases here, well, what can I say. Either Nintendo's engineers were VERY lazy, and didn't want to add the small amount of extra circuitry to the PPU so that 16 object fetches could take place per scanline, or Nintendo couldn't spot the extra memory required to implement 16 object scanlines. Thing is though- between the object attribute mem, sprite temporary & buffer mem, and palette mem, that's already 2406 bits of RAM; I don't think it would've killed them to just add the 408 bits it would've took for an extra 8 objects, which would've made games with horrible OAM cycling (Double Dragon 2 w/ 2 players) look half-decent (hell, with 16 object scanlines, games would hardly even need OAM cycling). + + + Details of object pattern fetch & render + ---------------------------------------- + Where the PPU fetches pattern table data for an individual object is conditioned on the contents of the sprite temporary memory element, and $2000.5. If $2000.5 = 0, the tile index data is used as usual, and $2000.3 selects the pattern table to use. If $2000.5 = 1, the MSB of the range result value become the LSB of the indexed tile, and the LSB of the tile index value determines pattern table selection. The lower 3 bits of the range result value are always used as the fine vertical offset into the selected pattern. + + Horizontal inversion (bit order reversing) is applied to fetched bitmaps, if indicated in the sprite temporary memory element. + + The fetched pattern table data (which is 2 bytes), plus the associated 3 attribute bits (palette select & priority), and the x coordinate byte in sprite temporary memory are then loaded into a part of the PPU called the "sprite buffer memory" (the primary object present bit is also copied). This memory area again, is large enough to hold the contents for 8 sprites. + + The composition of one sprite buffer element here is: 2 8-bit shift registers (the fetched pattern table data is loaded in here, where it will be serialized at the appropriate time), a 3-bit latch (which holds the color & priority data for an object), and an 8-bit down counter (this is where the x coordinate is loaded). + + The counter is decremented every time the PPU renders a pixel (the first 256 cc's of a scanline; see "Memory fetch phase 1 thru 128" above). When the counter equals 0, the pattern table data in the shift registers will start to serialize (1 shift per clock). Before this time, or 8 clocks after, consider the outputs of the serializers for each stage to be 0 (transparency). + + The streams of all 8 object serializers are prioritized, and ultimately only one stream (with palette select & priority information) is selected for output to the multiplexer (where object & playfield pixels are prioritized). + + The data for the first sprite buffer entry (including the primary object present flag) has the first chance to enter the multiplexer, if it's output pixel is non-transparent (non-zero). Otherwise, priority is passed to the next serializer in the sprite buffer memory, and the test for non-transparency is made again (the primary object present status will always be passed to the multiplexer as false in this case). This is done until the last (8th) stage is reached, when the object data is passed through unconditionally. Keep in mind that this whole process occurs every clock cycle (hardware is used to determine priority instantly). + + The multiplexer does 2 things: determines primary object collisions, and decides which pixel data to pass through to index the palette RAM- either the playfield's or the object's. + + Primary object collisions occur when a non-transparent playfield pixel coincides with a non-transparent object pixel, while the primary object present status entering the multiplexer for the current clock cycle is true. This causes a flip-flop ($2002.6) to be set, and remains set (presumably) some time after the VINT occurence (prehaps up until scanline 20?). + + The decision for selecting the data to pass through to the palette index is made rather easilly. The condition to use object (opposed to playfield) data is: + + (OBJpri=foreground OR PFpixel=xparent) AND OBJpixel<>xparent + + Since the PPU has 2 palettes; one for objects, and one for playfield, the appropriate palette will be selected depending on which pixel data is passed through. + + After the palette look-up, the operation of events follows the aforementioned steps in the "video signal generation" section. + + + Memory fetch phase 161 thru 168 + ------------------------------- + 1. Name table byte + 2. Attribute table byte + 3. Pattern table bitmap #0 (for next scanline) + 4. Pattern table bitmap #1 (for next scanline) + + This process is repeated 2 times. + + + It is during this time that the PPU fetches the appliciable playfield data for the first and second tiles to be rendered on the screen for the *next* scanline. These fetches initialize the internal playfield pixel pipelines (2- 16-bit shift registers) with valid bitmap data. The rest of tiles (3..32) are fetched at the beginning of the following scanline. + + + Memory fetch phase 169 thru 170 + ------------------------------- + 1. Name table byte + 2. Name table byte + + + I'm unclear of the reason why this particular access to memory is made. The name table address that is accessed 2 times in a row here, is also the same nametable address that points to the 3rd tile to be rendered on the screen (or basically, the first name table address that will be accessed when the PPU is fetching playfield data on the next scanline). + + + After memory access 170 + ----------------------- + The PPU simply rests for 1 cycle here (or the equivelant of half a memory access cycle) before repeating the whole pixel/scanline rendering process. + + ++------------------+ +|Extra cycle frames| ++------------------+ + Scanline 20 is the only scanline that has variable length. On every odd frame, this scanline is only 340 cycles (the dead cycle at the end is removed). This is done to cause a shift in the NTSC colorburst phase. + + You see, a 3.58 MHz signal, the NTSC colorburst, is required to be modulated into a luminance carrying signal in order for color to be generated on an NTSC monitor. Since the PPU's video out consists of basically square waves (as opposed to sine waves, which would be preferred), it takes an entire colorburst cycle (1/3.58 MHz) for an NTSC monitor to identify the color of a PPU pixel accurately. + + But now you remember that the PPU renders pixels at 5.37 MHz- 1.5x the rate of the colorburst. This means that if a single pixel resides on a scanline with a color different to those surrounding it, the pixel will probably be misrepresented on the screen, sometimes appearing faintly. + + Well, to somewhat fix this problem, they added this extra pixel into every odd frame (shifting the colorburst phase over a bit), and changing the way the monitor interprets isolated colored pixels each frame. This is why when you play games with detailed background graphics, the background seems to flicker a bit. Once you start scrolling the screen however, it seems as if some pixels become invisible; this is how stationary PPU images would look without this cycle removed from odd frames. + + Certain scroll rates expose this NTSC PPU color caveat regardless of the toggling phase shift. Some of Zelda 2's dungeon backgrounds are a good place to see this effect. + + ++---------------------------+ +|The MMC3's scanline counter| ++---------------------------+ + As most people know, the MMC3 bases it's scanline counter on PPU address line A13 (which is why IRQ's can be fired off manually by toggling A13 a bunch of times via $2006). What's not common knowledge is the number of times A13 is expected to toggle in a scanline (although if you've been paying close attention to the doc here, you should already know ;) + + A13 was probably used for the IRQ counter (as opposed to using the PPU's /READ line) because this address line already needed to be connected to the MMC for bankswitching purposes (so in other words, to reduce the MMC3's pin count by 1). They also probably used this method of counting (as opposed to a CPU cycle counter) since A13 cycles (0 -> 1) exactly 42 times per scanline, whereas the CPU count of cycles per scanline is not an exact integer (113.67). Having said that, I guess Nintendo wanted to provide an "easy-to-use" method of generating special image effects, without making programmers have to figure out how many clock cycles to program an IRQ counter with (a pretty lame excuse for not providing an IRQ counter with CPU clock cycle precision (which would have been more useful and versatile)). + + Regardless of any values PPU registers are programmed with, A13 will operate in a predictable fashion during image rendering (and if you understand how PPU addressing works, you should understand that A13 is the *only* address line with fixed behaviour during image rendering). + + ++------------------------+ +|PPU pixel priority quirk| ++------------------------+ + Object data is prioritized between itself, then prioritized between the playfield. There are some odd side effects to this scheme of rendering, however. For instance, imagine a low priority object pixel with foreground priority, a high priority object pixel with background priority, and a playfield pixel all coinciding (all non-transparent). + + Ideally, the playfield is considered to be the middle layer between background and foreground priority objects. This means that the playfield pixel should hide the background priority object pixel (regardless of object priority), and the foreground priority object should appear atop the PF pixel. + + However, beca... [truncated message content] |
|
From: <the...@us...> - 2006-03-19 06:14:46
|
Revision: 12 Author: thekingant Date: 2006-03-18 22:14:40 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=12&view=rev Log Message: ----------- Change autogen.sh to always run ./configure afterward Modified Paths: -------------- fceultra/autogen.sh Modified: fceultra/autogen.sh =================================================================== --- fceultra/autogen.sh 2006-03-19 06:08:44 UTC (rev 11) +++ fceultra/autogen.sh 2006-03-19 06:14:40 UTC (rev 12) @@ -2,4 +2,5 @@ aclocal autoconf -automake -a -c +automake --add-missing --copy +./configure $@ This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-19 06:12:23
|
Revision: 11 Author: thekingant Date: 2006-03-18 22:08:44 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=11&view=rev Log Message: ----------- Initial import of FCE Ultra 0.98.13-pre Added Paths: ----------- fceultra/ fceultra/AUTHORS fceultra/COPYING fceultra/ChangeLog fceultra/Documentation/ fceultra/Documentation/cheat.html fceultra/Documentation/faq.html fceultra/Documentation/fceu-sdl.6 fceultra/Documentation/fceultra.html fceultra/Documentation/fcm.txt fceultra/Documentation/fcs.txt fceultra/Documentation/protocol.txt fceultra/Documentation/tech/ fceultra/Documentation/tech/README.now fceultra/Documentation/tech/README.sound fceultra/Documentation/tech/UNIF_current.txt fceultra/Documentation/tech/cpu/ fceultra/Documentation/tech/cpu/4017.txt fceultra/Documentation/tech/cpu/6502_cpu.txt fceultra/Documentation/tech/cpu/NESSOUND-4th.txt fceultra/Documentation/tech/cpu/NESSOUND.txt fceultra/Documentation/tech/cpu/dmc.txt fceultra/Documentation/tech/exp/ fceultra/Documentation/tech/exp/SMB2j.txt fceultra/Documentation/tech/exp/mmc5-e.txt fceultra/Documentation/tech/exp/mmc5_bank_switch.txt fceultra/Documentation/tech/exp/namco.txt fceultra/Documentation/tech/exp/taito.txt fceultra/Documentation/tech/exp/tengen.txt fceultra/Documentation/tech/exp/vrcvi.txt fceultra/Documentation/tech/exp/vrcvii.txt fceultra/Documentation/tech/nsfspec.txt fceultra/Documentation/tech/ppu/ fceultra/Documentation/tech/ppu/2C02 technical operation.TXT fceultra/Documentation/tech/ppu/loopy1.txt fceultra/Documentation/tech/ppu/loopy2.txt fceultra/INSTALL fceultra/Makefile.am fceultra/NEWS fceultra/README fceultra/TODO fceultra/acinclude.m4 fceultra/autogen.sh fceultra/configure.ac fceultra/mkinstalldirs fceultra/src/ fceultra/src/Makefile.am fceultra/src/boards/ fceultra/src/boards/8237.c fceultra/src/boards/Makefile.am.inc fceultra/src/boards/h2288.c fceultra/src/boards/malee.c fceultra/src/boards/mapinc.h fceultra/src/boards/novel.c fceultra/src/boards/sachen.c fceultra/src/boards/simple.c fceultra/src/boards/super24.c fceultra/src/boards/supervision.c fceultra/src/cart.c fceultra/src/cart.h fceultra/src/cheat.c fceultra/src/cheat.h fceultra/src/crc32.c fceultra/src/crc32.h fceultra/src/debug.c fceultra/src/debug.h fceultra/src/drawing.h fceultra/src/driver.h fceultra/src/drivers/ fceultra/src/drivers/common/ fceultra/src/drivers/common/Makefile.am.inc fceultra/src/drivers/common/args.c fceultra/src/drivers/common/args.h fceultra/src/drivers/common/cheat.c fceultra/src/drivers/common/cheat.h fceultra/src/drivers/common/config.c fceultra/src/drivers/common/config.h fceultra/src/drivers/common/hq2x.c fceultra/src/drivers/common/hq2x.h fceultra/src/drivers/common/hq3x.c fceultra/src/drivers/common/hq3x.h fceultra/src/drivers/common/scale2x.c fceultra/src/drivers/common/scale2x.h fceultra/src/drivers/common/scale3x.c fceultra/src/drivers/common/scale3x.h fceultra/src/drivers/common/scalebit.c fceultra/src/drivers/common/scalebit.h fceultra/src/drivers/common/vidblit.c fceultra/src/drivers/common/vidblit.h fceultra/src/drivers/pc/ fceultra/src/drivers/pc/Makefile.am.inc fceultra/src/drivers/pc/dface.h fceultra/src/drivers/pc/dos-joystick.c fceultra/src/drivers/pc/dos-joystick.h fceultra/src/drivers/pc/dos-keyboard.c fceultra/src/drivers/pc/dos-mouse.c fceultra/src/drivers/pc/dos-sound.c fceultra/src/drivers/pc/dos-sound.h fceultra/src/drivers/pc/dos-video.c fceultra/src/drivers/pc/dos-video.h fceultra/src/drivers/pc/dos.c fceultra/src/drivers/pc/dos.h fceultra/src/drivers/pc/input.c fceultra/src/drivers/pc/input.h fceultra/src/drivers/pc/keyscan.h fceultra/src/drivers/pc/main.c fceultra/src/drivers/pc/main.h fceultra/src/drivers/pc/sdl-icon.h fceultra/src/drivers/pc/sdl-joystick.c fceultra/src/drivers/pc/sdl-netplay.c fceultra/src/drivers/pc/sdl-netplay.h fceultra/src/drivers/pc/sdl-opengl.c fceultra/src/drivers/pc/sdl-opengl.h fceultra/src/drivers/pc/sdl-sound.c fceultra/src/drivers/pc/sdl-throttle.c fceultra/src/drivers/pc/sdl-video.c fceultra/src/drivers/pc/sdl-video.h fceultra/src/drivers/pc/sdl.c fceultra/src/drivers/pc/sdl.h fceultra/src/drivers/pc/throttle.c fceultra/src/drivers/pc/throttle.h fceultra/src/drivers/pc/unix-netplay.c fceultra/src/drivers/pc/unix-netplay.h fceultra/src/drivers/pc/usage.h fceultra/src/drivers/pc/vgatweak.c fceultra/src/drivers/sexyal/ fceultra/src/drivers/sexyal/Makefile.am.inc fceultra/src/drivers/sexyal/convert.c fceultra/src/drivers/sexyal/convert.h fceultra/src/drivers/sexyal/convert.inc fceultra/src/drivers/sexyal/convertgen.c fceultra/src/drivers/sexyal/drivers/ fceultra/src/drivers/sexyal/drivers/dsound.c fceultra/src/drivers/sexyal/drivers/oss.c fceultra/src/drivers/sexyal/drivers/oss.h fceultra/src/drivers/sexyal/drivers/osxcoreaudio.c fceultra/src/drivers/sexyal/md5.c fceultra/src/drivers/sexyal/md5.h fceultra/src/drivers/sexyal/sexyal.c fceultra/src/drivers/sexyal/sexyal.h fceultra/src/drivers/sexyal/smallc.c fceultra/src/drivers/sexyal/smallc.h fceultra/src/drivers/win/ fceultra/src/drivers/win/Makefile.am.inc fceultra/src/drivers/win/args.c fceultra/src/drivers/win/cheat.c fceultra/src/drivers/win/cheat.h fceultra/src/drivers/win/common.h fceultra/src/drivers/win/config.c fceultra/src/drivers/win/debug.c fceultra/src/drivers/win/debug.h fceultra/src/drivers/win/input.c fceultra/src/drivers/win/input.h fceultra/src/drivers/win/joystick.c fceultra/src/drivers/win/joystick.h fceultra/src/drivers/win/keyboard.c fceultra/src/drivers/win/keyboard.h fceultra/src/drivers/win/keyscan.h fceultra/src/drivers/win/log.c fceultra/src/drivers/win/log.h fceultra/src/drivers/win/main.c fceultra/src/drivers/win/netplay.c fceultra/src/drivers/win/netplay.h fceultra/src/drivers/win/res.res fceultra/src/drivers/win/sound.c fceultra/src/drivers/win/state.c fceultra/src/drivers/win/throttle.c fceultra/src/drivers/win/video.c fceultra/src/drivers/win/wave.c fceultra/src/drivers/win/window.c fceultra/src/endian.c fceultra/src/endian.h fceultra/src/fceu.c fceultra/src/fceu.h fceultra/src/fceustr.c fceultra/src/fceustr.h fceultra/src/fcoeffs.h fceultra/src/fds.c fceultra/src/fds.h fceultra/src/file.c fceultra/src/file.h fceultra/src/filter.c fceultra/src/filter.h fceultra/src/fir/ fceultra/src/fir/Makefile fceultra/src/fir/c44100ntsc.coef fceultra/src/fir/c44100ntsc.h fceultra/src/fir/c44100ntsc.scm fceultra/src/fir/c44100pal.coef fceultra/src/fir/c44100pal.h fceultra/src/fir/c44100pal.scm fceultra/src/fir/c48000ntsc.coef fceultra/src/fir/c48000ntsc.h fceultra/src/fir/c48000ntsc.scm fceultra/src/fir/c48000pal.coef fceultra/src/fir/c48000pal.h fceultra/src/fir/c48000pal.scm fceultra/src/fir/c96000ntsc.coef fceultra/src/fir/c96000ntsc.h fceultra/src/fir/c96000ntsc.scm fceultra/src/fir/c96000pal.coef fceultra/src/fir/c96000pal.h fceultra/src/fir/c96000pal.scm fceultra/src/fir/toh.c fceultra/src/general.c fceultra/src/general.h fceultra/src/git.h fceultra/src/ines-bad.h fceultra/src/ines-correct.h fceultra/src/ines.c fceultra/src/ines.h fceultra/src/input/ fceultra/src/input/Makefile.am.inc fceultra/src/input/arkanoid.c fceultra/src/input/bworld.c fceultra/src/input/cursor.c fceultra/src/input/fkb.c fceultra/src/input/fkb.h fceultra/src/input/ftrainer.c fceultra/src/input/hypershot.c fceultra/src/input/mahjong.c fceultra/src/input/oekakids.c fceultra/src/input/powerpad.c fceultra/src/input/quiz.c fceultra/src/input/shadow.c fceultra/src/input/share.h fceultra/src/input/toprider.c fceultra/src/input/zapper.c fceultra/src/input.c fceultra/src/input.h fceultra/src/mappers/ fceultra/src/mappers/112.c fceultra/src/mappers/113.c fceultra/src/mappers/114.c fceultra/src/mappers/117.c fceultra/src/mappers/15.c fceultra/src/mappers/151.c fceultra/src/mappers/16.c fceultra/src/mappers/17.c fceultra/src/mappers/18.c fceultra/src/mappers/180.c fceultra/src/mappers/182.c fceultra/src/mappers/184.c fceultra/src/mappers/187.c fceultra/src/mappers/189.c fceultra/src/mappers/193.c fceultra/src/mappers/200.c fceultra/src/mappers/201.c fceultra/src/mappers/202.c fceultra/src/mappers/203.c fceultra/src/mappers/208.c fceultra/src/mappers/21.c fceultra/src/mappers/22.c fceultra/src/mappers/225.c fceultra/src/mappers/226.c fceultra/src/mappers/227.c fceultra/src/mappers/228.c fceultra/src/mappers/229.c fceultra/src/mappers/23.c fceultra/src/mappers/230.c fceultra/src/mappers/231.c fceultra/src/mappers/232.c fceultra/src/mappers/234.c fceultra/src/mappers/235.c fceultra/src/mappers/240.c fceultra/src/mappers/241.c fceultra/src/mappers/242.c fceultra/src/mappers/244.c fceultra/src/mappers/246.c fceultra/src/mappers/248.c fceultra/src/mappers/24and26.c fceultra/src/mappers/25.c fceultra/src/mappers/255.c fceultra/src/mappers/32.c fceultra/src/mappers/33.c fceultra/src/mappers/40.c fceultra/src/mappers/41.c fceultra/src/mappers/42.c fceultra/src/mappers/43.c fceultra/src/mappers/46.c fceultra/src/mappers/50.c fceultra/src/mappers/51.c fceultra/src/mappers/57.c fceultra/src/mappers/58.c fceultra/src/mappers/59.c fceultra/src/mappers/6.c fceultra/src/mappers/60.c fceultra/src/mappers/61.c fceultra/src/mappers/62.c fceultra/src/mappers/65.c fceultra/src/mappers/67.c fceultra/src/mappers/68.c fceultra/src/mappers/69.c fceultra/src/mappers/71.c fceultra/src/mappers/72.c fceultra/src/mappers/73.c fceultra/src/mappers/75.c fceultra/src/mappers/76.c fceultra/src/mappers/77.c fceultra/src/mappers/79.c fceultra/src/mappers/8.c fceultra/src/mappers/80.c fceultra/src/mappers/82.c fceultra/src/mappers/83.c fceultra/src/mappers/85.c fceultra/src/mappers/86.c fceultra/src/mappers/88.c fceultra/src/mappers/89.c fceultra/src/mappers/91.c fceultra/src/mappers/92.c fceultra/src/mappers/95.c fceultra/src/mappers/97.c fceultra/src/mappers/99.c fceultra/src/mappers/Makefile.am.inc fceultra/src/mappers/emu2413.c fceultra/src/mappers/emu2413.h fceultra/src/mappers/emutypes.h fceultra/src/mappers/mapinc.h fceultra/src/mappers/mapshare.h fceultra/src/mappers/mmc2and4.c fceultra/src/mappers/simple.c fceultra/src/mappers/vrc7tone.h fceultra/src/mbshare/ fceultra/src/mbshare/164.c fceultra/src/mbshare/90.c fceultra/src/mbshare/Makefile.am.inc fceultra/src/mbshare/deirom.c fceultra/src/mbshare/karaoke.c fceultra/src/mbshare/mapinc.h fceultra/src/mbshare/maxicart.c fceultra/src/mbshare/mmc1.c fceultra/src/mbshare/mmc3.c fceultra/src/mbshare/mmc5.c fceultra/src/mbshare/n106.c fceultra/src/mbshare/tengen.c fceultra/src/md5.c fceultra/src/md5.h fceultra/src/memory.c fceultra/src/memory.h fceultra/src/movie.c fceultra/src/movie.h fceultra/src/netplay.c fceultra/src/netplay.h fceultra/src/nsf.c fceultra/src/nsf.h fceultra/src/ops.h fceultra/src/palette.c fceultra/src/palette.h fceultra/src/palettes/ fceultra/src/palettes/conv.c fceultra/src/palettes/palettes.h fceultra/src/palettes/rp2c04001.h fceultra/src/palettes/rp2c04002.h fceultra/src/palettes/rp2c04003.h fceultra/src/palettes/rp2c05004.h fceultra/src/ppu.c fceultra/src/ppu.h fceultra/src/pputile.h fceultra/src/sound.c fceultra/src/sound.h fceultra/src/soundexp.c fceultra/src/state.c fceultra/src/state.h fceultra/src/types.h fceultra/src/unif.c fceultra/src/unif.h fceultra/src/unzip.c fceultra/src/unzip.h fceultra/src/video.c fceultra/src/video.h fceultra/src/vsuni.c fceultra/src/vsuni.h fceultra/src/wave.c fceultra/src/wave.h fceultra/src/x6502.c fceultra/src/x6502.h fceultra/src/x6502struct.h Added: fceultra/AUTHORS =================================================================== --- fceultra/AUTHORS (rev 0) +++ fceultra/AUTHORS 2006-03-19 06:08:44 UTC (rev 11) @@ -0,0 +1,27 @@ +A list of people who have contributed code to FCE Ultra, or have had their code placed in +FCE Ultra by others. +Please note that the "Contributions" field may not be all inclusive; +the coder may have done more than what is listed. + +Name/Alias Contributions Contact Information +------------------------------------------------------------------------------ +Aaron Oneal Many changes to compile http://www.morphgear.com + with MSVC and first frame + skipping code. + +BERO Base FCE code. bero at geocities.co.jp + +CaH4e3 Some mapper code. CaH4e3 at mail dot ru + +Joe Nahmias man pages. + +Mitsutaka YM2413 emulator. + Okazaki + +Paul Various code for the official kuliniew at purdue.edu + Kuliniewicz SDL port. + +Quietust VRC7 "translation" code. quietust at ircN dot org + +Xodnizel Most of the FCE Ultra code. http://xodnizel.net/ + Property changes on: fceultra/AUTHORS ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: fceultra/COPYING =================================================================== --- fceultra/COPYING (rev 0) +++ fceultra/COPYING 2006-03-19 06:08:44 UTC (rev 11) @@ -0,0 +1,341 @@ + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. Property changes on: fceultra/COPYING ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: fceultra/ChangeLog =================================================================== --- fceultra/ChangeLog (rev 0) +++ fceultra/ChangeLog 2006-03-19 06:08:44 UTC (rev 11) @@ -0,0 +1,2237 @@ +0.98.13: + + SDL: Fixed button configuration when using joystick hats. Thanks to + ShaolinMan for pointing out the code errors. + + Readded checks in ines.c for some common bad dumps and non-working hacked + games. + + Sprite hit emulation is more precise(as it was in 0.97.5). + + Fixed mapper 185 emulation to work properly with the Japanese + version of "Spy vs Spy", and hopefully with the GOOD dump + of Banana(I don't think one exists). + + Added per-game hacks for Shougi Meikan '92 and Shougi Meikan '93. + + Fixed a bug in SetupCartMirroring() that could cause some games to have corrupted + mirroring if loaded in a certain order. This was a rather major, long-standing + bug. :/ + + Added many iNES header corrections. + + Fixed emulation of the "ISB" and "DCP" invalid opcodes. + + Optimized the PPU background drawing code with inline assembly. Older/some(?) versions + of gcc may produce bad code(from previous experience with inline + assembly in gcc), but 3.4.1 seems to do ok. + + Optimized some of the low-quality sound emulation code. + + Added a command-line option to the configure script to enable the FCE Ultra + debugger(disabled by default). It reduces executable size, and may increase speed + of execution slightly. + + In unix-netplay.c, replaced the ioctl() on a socket to read the number of bytes available to read + with a select(). I've also added some "BEOS" #ifdefs. I don't know if they will + work properly. + + Replaced archaic include of "malloc.h" in unix-netplay.c with "stdlib.h". + Also in unix-netplay.c, I've added: + + #ifndef SOL_TCP + #define SOL_TCP IPPROTO_TCP + #endif + + Fixed a bug in sdl-sound.c that would prevent FCE Ultra from being compiled + on certain platforms(Mac OS X). + + Fixed variable declarations in the following files to be compatible + with C compilers that don't adhere to C99(or was it C98...): + movie.c + drivers/sexyal/convertgen.c and drivers/sexyal/convert.inc + drivers/pc/unix-netplay.c + +0.98.12: + + Win32: Fixed the behavior of the sound logging function. + + Fixed a bug that was causing 2xscale/3xscale to be broken + when clipping the leftmost and rightmost 8 columns. + + Added an iNES header correction entry for JustBreed. + + Modified the MMC5 "ELROM" board emulation to not emulate WRAM. + + Corrected various pieces of code that were causing compiler warnings. + + Win32: Scaling settings(x, y, stretch to fill screen) are now respected while + using a special scaler in full screen mode, though if x or y scale is + less than what is needed for a particular scaler, it will be + adjusted. + + Win32: The window will be reblitted when it becomes invalidated while + a game is loaded(such as when you're resizing the window). + + When the PPU is in a "dead" state after starting up, the graphics + buffer is now cleared. Previously, particularly in the Windows port, when + a game was closed, and a new game was loaded, the last image from + the previous game would be displayed for a short time. + + Win32: Blit skipping will now occur when sound is disabled and FCE Ultra is + running behind the desired frame rate. + + Win32: Blit-skipping behavior can now be configured to some extent in the "Timing" configuration + window. + + Win32: Added a "Recent Directories" submenu to the "File" menu. + + Removed some debugging code that shouldn't have been enabled in 0.98.11. + +0.98.11: + + Win32: Special scalers are now also supported in windowed mode. For Scale2x/Scale3x, + the fastest "desktop" bit depth is 16bpp. For hq2x/hq3x, it is 32bpp. + + The shared video blitting code(drivers/common/vidblit.c) can now blit using Scale2x + and Scale3x to any target bit depth(8bpp, 16bpp, 24bpp, and 32bpp) instead of just + 8bpp, as it was before. + HQ2x and HQ3x can now blit to 16bpp, 24bpp(untested), and 32bpp. The 16bpp and + 24bpp targets are done doing post-processing conversion, after HQ2x/HQ3x, which + really does hurt speed. + + Changed a few names in the credits section of the documentation to their + aliases. Names you didn't get to pick to have are so troublesome. :b + I also made various fixes/updates to the documentation. + + Updated the FAQ with some information regard video mode bit depths and speed. + + SDL: Disabled the fast-forward-key speed-limiting code. I thought I had + done this before... + + Fixed a major bug in the movie recording code, and added some code to automatically detect + and fix playback of broken movies from earlier versions. + + Did a little swapping thing with mapper 90 and 209. I moved back Mortal Kombat 3 + to mapper 90, and moved Shin Samurai Spirits 2 to mapper 209. Sorry for any confusion. + Mapper 90 should be considered as having the fancy nametable select mode disabled, with + mapper 209 having it enabled. + + Added support for mapper 160, which turns out to be the same hardware as mapper + 90. Joy. + + Improved mapper 90 emulation. This mapper really needs low-level + emulation for IRQs to work right, though. :/ + + Win32: Fixed the "hide left/right 8 video columns" feature. + + Since FCE Ultra is ending(or has already exceeded? :b) its actively-updated life, + I've gone ahead and added per-game hacks for "Kick Master" and the PAL version + of "Star Wars". See the documentation for more details. + + Minor optimizations to the high-quality sound emulation code. The FIR filter + code is the bottleneck, though, so these changes won't have much of an effect + on overall speed. + + Altered MMC3 IRQ emulation(and the hooks in ppu.c for it). + + Fixed a rather major typo in the VRC7-emulation code. + +0.98.10: + + Reimplemented network play. It now requires a standalone network play server, which + will be released as a later time. For fun, "starmen.net" is running this server, + which is publicly accessible. + I also made various code fixes/improvements to allow for network play, particularly + with the command handling code. + + Reworked much of the VS Unisystem emulation code, partially based on information from + MAME. The following games are now supported: + + Battle City + Castlevania + Clu Clu Land + Dr. Mario + Duck Hunt + Excitebike + Excitebike (Japanese) + Freedom Force + Goonies, The + Gradius + Gumshoe + Hogan's Alley + Ice Climber + Ladies Golf + Mach Rider + Mach Rider (Japanese) + Mighty Bomb Jack (Japanese) + Ninja Jajamaru Kun (Japanese) + Pinball + Pinball (Japanese) + Platoon + RBI Baseball + Slalom + Soccer + Star Luster + Stroke and Match Golf + Stroke and Match Golf - Ladies + Stroke and Match Golf (Japanese) + Super Mario Bros. + Super Sky Kid + Super Xevious + Tetris + TKO Boxing + Top Gun + + Win32-native: Fixed a bug in the debugger's breakpoint list that appeared when + one tried to delete a breakpoint(the control accidentally had auto-sort enabled, + causing a discrepancy between what was displayed and what was contained in internal + data structures). + + The current disk image XOR original disk image is now stored in save states. This + should greatly increase compressability(important for network play), and make + it a little more legal to distribute such save states now. + + Modified the save state format to allow for more precise and larger version numbers. + + Various minor code changes. + + Fixed initialization of the FCEUGameInfo structure, which previously led + to problems with sound output on the SexyAL-using ports(Linux). + + Apparently I added support for mapper 255 a while back. Documentation updated. + + Added iNES header correction information for Armored Scrum Object and Alpha Mission. + + Merged banksw.h into ines.c, fixed some of its prototypes in ines.h. + +0.98.9: + + Win32-native: Fixed the speed throttling used when sound is disabled. In previous + 0.98.x Win32-native releases, emulation was running at 1/2 the speed it should + have been when sound was disabled. + + Win32-native: Moved settings in the "Miscellaneous" configuration window + to where they should have been in the first place, and added "GUI" and "Timing" + configuration windows to accommodate some. + + Win32-native: Fixed the handling of the "Scroll Lock" key used to disable and + enable Family BASIC Keyboard input. + + Updated documentation to handle some slight differences in the Win32-native + port("Win32-native" is what the Win32 port using native APIs, as opposed to something + like GTK+ and SDL, will be referred to in documentation now). I also made + some other minor wording adjustments to the documentation. + + Added an iNES header correction for Dragonball. + +0.98.8: + + Fixed a typo in sound.c that caused only part of the sound registers + to be saved in save states. + + Win32: Switched over to the DirectDraw7 interface, from DirectDraw4's. + The surface Flip() method will now block, which results in somewhat + smoother animation/scrolling, especially when combined with the + auto blit-skip implemented in 0.98.6 when sound is enabled. + + Win32: Undid a change made in the last release that limited the + speed of fast-forwarding when using the tilde key. I really do + need to implement some sort of unified timing/blit skip system... + + Win32: Added an option, disabled by default, to ask for confirmation + before exiting FCE Ultra. + + Win32: Added an option, enabled by default, to disable the system + screen saver while a game is loaded. + + Win32: Added a new video synchronization mode, a "lazy" wait for + vblank/vertical retrace. It calls Sleep(0) in its wait loop. This + still uses all available cpu cycles, but it is much more friendly + to other processes than the old-style wait for vblank. + + Win32: Added support for joystick POV hats. + +0.98.7: + + Fixed a bug in the debugger's disassembler when disassembling + opcode 0xBC. + + Fixed the behavior of the right mouse button with zapper emulation, to + correspond with what it is documented as doing. + + Win32: Added proper support for maximizing the window. + + Win32: Rewrote most of the input and input configuration code. + + Win32: Changed the configurable aspect ratio to something sensical, the current + display's pixel aspect ratio, default of 1:1(square pixels). + + Win32: Made the default full-screen video mode the custom video mode. I should have + done this a long time ago to make custom video mode configuration more straighforward + for users... + + Added some JACK audio code to be used by the SDL build. I'll test it and complete + it later. + +0.98.6: Made several code modifications to work with older versions of gcc. + + Fixed more header file network play #ifdef-age. + + Fixed a typo in cart.h. + + Fixed some funky code in FCEU_memmove(). + + Fixed some source code causing compiler warnings. + + Fixed SexyAL's format conversion code to not rely on deprecated casting semantics. + + Readded the native Win32 code, and made many improvements. The major thing + that needs to be done now with it is to rewrite the input handling code and input + configuration code. + +0.98.5: + Added LL to the 64-bit integer constants in ines.c + + Fixed OpenGL support under Mac OS X. + + Added the ability to hide background and/or sprites with the F4 key. + +0.98.4: + Moved NETWORK #ifdef's to netplay.c to simplify things. + + Fixed gzip file loading code(I think). I'm still a bit unsure about the semantics + of dup() and close(), though. + + Corrected FDS code to try loading the FDS image before loading the BIOS. + + Readded "native" SDL sound code, used for Mac OS X(and maybe BeOS). + +0.98.3: + Removed the wxWindows GUI code. GTK+ 2 code will take its place, + once it is ready. + + Added reset and power commands to the movie format. More commands(such as insert + disk, eject disk, flip dip switch, etc.) will be added simultaneously as work + on network play continues. + + Modified SexyAL OSS code to not adjust the number of fragments to a power of 2. + It works fine on my card, allowing finer-grained buffer size control, + but I'm not sure it will work with all chips. + + Fixed parsing of the "-specialfs" command-line argument. + + Added the hq3x scaler. + + Updated to the latest Scale2x code. I also added the Scale3x scaler. + + Changed the keyboard assignments for toggling full screen to "Alt" + "Enter". + + FCEUI_SaveState() and FCEUI_LoadState() changed. Porters should read + driver.h. + + Miscellaneous changes to accommodate new network play plan. It's not close + to being finished. + + Altered RTI emulation. In Paris Dakar Rally's NMI handler, it does "CLI ; RTI". + Previously, FCE Ultra would generate an interrupt right after RTI occured, due to the + presumed latency that RTI had with the I flag. I changed it so there is no latency, so + no interrupt will occur in this case(interrupts kill this game). The interrupt source + is the "frame IRQ", which it never disables, if anyone cares. + This change does break the "Stars SE" demo, though. Hmm. + + "FCEUGameInfo" is now a pointer, rather than just a statically-allocated structure. + This may cause some null-dereferencing-related crashes, but it should help keep + code a little cleaner(maybe?). + + Played around with the FDS FM code some more. It's still not right. Bah. + + Hacked in support for entering Datach/Barcode World barcodes without a GUI, using the + F8 key and the numeric keys. + + Added code to save/load movies. Movie support will only record/play back the + states of the four emulated gamepads. + + Modified the sound code to use timestamp/timestampbase differently. In addition, + timestampbase is now saved in save states("timestamp" doesn't need to be saved, since + it's reset to 0 at the end of each emulated frame). + +0.98.2: + Fixed a few problems with the SDL command-line build code + for Win32. Also, SDL 1.2.7 seems to have a bug that breaks FCE Ultra's + full-screen/windowed switching capabilities(at least under Win32). + Stupid everything. + + Minor SexyAL changes. + + Updated documentation. + +0.98.1: + + Increased the volume of the FME07 sound channels. + + Fixed a bug in the SexyAL endian conversion code. + + Made the SexyAL chunk conversion loop work. + + Replaced the old OPL2 emulator with a modified version of + Mitsutaka Okazaki's YM2413 emulator for the VRC7 sound emulation. + + Decreased the pitch of the FME 07 expansion sound channels by one octave. + + Decreased volume of output of $5011 in MMC5 emulation code. + + +0.98.0: Some changes I made aren't listed below. Ah well. The magnitude + of the changes was too great... + + + Default sound volume is 100(%), which makes a lot more sense than 75%, but not much. + It's multiplied by 3/4 internally now. + + Added support for the Datach barcode reader(GUI interface only). The emulation code + was adapted from the VirtuaNES source code. + + Reassigned the Datach games to mapper 157, from 16, with CRC32 checks. + + Increased the maximum number of screen snapshots in the snapshots directory + to 99999(from 999). + + Reassigned the following games to mapper 210, using CRC32 checks: + Chibi Maruko Chan + Dream Master + Family Circuit '91 + Famista '92 + Famista '93 + Famista '94 + Heisei Tensai Bakabon + Top Striker + Wagyan Land 2 + Wagyan Land 3 + If you use a hack/translation of one or more of these games, you will of course + need to manually change the mapper number in the header for it to work properly in + FCE Ultra. Family Circuit '91 still may not fit in with the rest of these games, + but it's definitely not a "stock" mapper 19 setup. + + Fixed an OpenGL palette bug when using scanlines(previously, I think it was + setting the palette of the scanlines overlay texture instead of the actual image + texture in some instances). The bug showed up on games that make use of the color + deemphasis bits. + + Rewrote a lot of the PPU background rendering code to be more accurate(and + obfuscated!). This eliminates the X-offset hack I made earlier. + + Removed some of the NSF visualization code, and altered the look of the NSF + display slightly. The NSF waveform visualization code will now take into + account the current volume setting. + + Changed the default key bindings for the standard emulated gamepad + to something more compatible with window managers. I may change it back, but probably + not, since it is easily configurable now. + + Updated the MMC5, VRC6, and FME07 low-quality sound emulation code + with the compatible parts of the high-quality sound emulation code for those chips. + + Adjusted timing of horizontal scroll update(near the beginning of hblank. I made + it occur sooner). I also added a hack to allow X-offset(fine X scroll) changes mid + scanline, however, it is extremely ugly, and may not work correctly for everything + (doing it correctly would probably kill speed). + I mainly did it to fix games like F-1 Race and Mach Rider, and other racing + games that are extremely sensitive to horizontal scrolling timing. + + Some FDS IRQ emulation changes to fix some screen corruption problems + in "Kaettekita Mario Bros". + + Removed zlib(the code, not support). + I also removed support for compiling without zlib(it's small, simple, provides + very useful functions, and may provide critical features for fceu in the future). + + *undone, breaks debugger, FIXME.* Replaced some inline functions with macros in x6502.c. + + Increased the speed of Namco 106 sound emulation in HQ sound mode. + + Many many sound emulation changes and adjustments based on blargg's tests. + The default sound volume is about 150% what it was before, because the sound range + has changed(now -soundvol 100 is like -soundvol 200 on older builds), and the + default "soundvol" setting is 75. 100 clips on some Namco games, and 200 clips + on many games, so I'll probably have the configurable volume range as [0:125]. + What exactly is "%" supposed to mean in this case.... 100% of what?! + + When using low-quality sound emulation mode, total emulation speed is about 10% + less than previous builds. The change in speed for high-quality sound emulation + mode is significantly less. + + Added beginnings of SexyAL to source code tree, removed SDL sound support, and + old OSS code. + + Copied over some autoconf/automake stuff from phamicom. It stills needs a bit + of work... + + Fixed DMC IRQ emulation. Fixes many CodeMasters games. Finally. ^_^ + + Restructured a lot of files, changed the interface between driver and + emulator code slightly. + + * Insert stuff here * + +November 28, 2003 - Snapshot + + Removed the DOS, Linux SVGAlib, and Win32 targets. *GASP* + Win32 support will return(eventually), using SDL + wxWindows. + SDL can use svgalib or GGI anyway, so it shouldn't be a huge loss. + DOS support will only return if someone ports SDL to DOS. ^_^ + It would be nice if SDL could accept modelines. Maybe in SDL 2.0... + + Merged fce.c and svga.c into fceu.c, and fce.h and svga.h into fceu.h. + + Reassigned "Mortal Kombat 3 - Special 56 Peoples" to mapper 209. + + Added emulation of the "Oeka Kids" tablet. + + Added emulation of the Family Trainer. + + Added emulation of the "Ultimate Quiz King" buzzers. + + Added emulation of the Mahjong controller. + + Added emulation of HyperShot controllers. + + Fixed loading of NSFs with load addresses below $8000. + + Cleaned and simplified some of the NES APU code. + + Altered mapper 65 emulation. Fixes Kaiketsu Yanchamaru 3. Does it break anything? + + Wrote a small FAQ file. + + Fixed displaying of garbage and other unpleasantness on the first scanline. I need + to clean up that code, though. + + Fixed color deemphasis emulation when all bits are set. For some + reason, I had commented out the code. Bleh. + + NSF player now writes $C0 to $4017 if the FDS is being used(the FDS + BIOS writes $C0 to $4017). $40 for all other NSFs. + + Added support for iNES mapper 58(nnnesterj). + + Added support for iNES mapper 208. + + Reassigned "Fudou Myouou Den" to mapper 207(CRC32 checks). + + Reassigned "Karnov" to mapper 206(CRC32 checks). + + Fixed the mapper 95 code, which was horribly broken. + + Differentiated between mappers 33 and 48. Added CRC checks to assign + some games to mapper 48. "Flintstones 2" and "Don Doko Don 2" are + the games that need to be assigned to 48. Are there others? + + Replaced usage of TriggerIRQ to X6502_IRQBegin/X6502_IRQEnd combos in + various mapper emulation files. 67, 33/48, 40, 73, 42, 65, 6, 182 + Removed function TriggerIRQ() from x6502.c + + Fixed the sound volume of the VRC7 emulation in high-quality sound mode. + Decreased(slightly) the volume of VRC7 emulation in both high-quality sound modes. + + Decreased the volume of the MMC5 expansion sound channels. + + Decreased the volume of the FME-7/mapper 69 expansion sound channels. + + Added FCEU_gmalloc(), which will call exit() if memory allocation fails, + otherwise it is guaranteed to return a memory block. + This will be used in the mapper code mainly. It should only + be used for small memory chunks. The reasoning is that if 64 some like KB of + RAM or less can't be allocated, for example, it'd probably be best to + exit the emulator ASAP. It also helps to simplify code logic, and + help (me) with modularization. + The behavior of this may change in the future. I still need to think about it. + I should probably save the configuration file regularly(or much better, + use the registry) on the Windows port, though. + + Cleaned up the save-state saving/loading code a bit, and added + support for linked save state structures for better modularity and + less code duplication. + + Merged the iNES and UNIF MMC1, MMC3, and MMC5 code more completely. + I may need to sanify CHR RAM and WRAM allocation for pedanticness, + though. Also worked on Tengen RAMBO-1 emulation, and mapper 90 emulation. + ***THIS MAKES SAVE STATES FOR GAMES THAT USE THESE EXPANSION CHIPS INCOMPATIBLE + WITH PREVIOUS VERSIONS*** + I plan on doing the same thing with other mappers/boards in the future, though. + Always on the quest for 1.0... + +November 12, 2003 - 0.97.5 Release + + Windows: Added limited support for arguments that change configuration + to be passed to FCE Ultra. Example: fceu -pal 1 c:\streetgangs.nes + It may be useful in frontends. + + Fixed filename generation for automatic IPS patching when a file + with no extension is loaded. Before this change, FCEU would + look for "game..ips" with a file named "game". + + Converted and updated the cheat guide in(to) HTML. + + Added support for iNES mappers 202,203,231 from info from cah4e3. + Fixed support for mappers 60, 200. + + Fixed various major bugs in the breakpoint deletion code. + + UN*X: Added support for OSS(/dev/dsp) devices that don't support mono + sound. + + Increased PPU startup idle time to 2 frames. Fixes that + unlicensed "Earthworm Jim 3" game. Does it break anything? + +November 9, 2003 - 0.97.4 Release + + Fixed another obscure PPU emulation screen corruption bug. + + Added support for Game Genie cheats in the cheat interface. + + Windows: Reworked the cheat interface, merging the cheat search + and cheat list windows into one. + + Windows: Greatly improved the CPU debugger. + The code still needs a lot of cleaning, though. + + Readjusted VRC6 IRQ emulation timing. + + Added support for the UNIF MMC3 board TEROM. The maximum PRG/CHR sizes + may not be correct in this implementation, though. + +November 8, 2003 - 0.97.3 Release + + Added a control to set the highest quality sound mode in Windows. + This change requires that any users who previously set + "high quality sound" to set it again. + + Fixed the volume of high-quality sound mode again. The changes + I made earlier didn't affect all the filter coefficients. + +November 8, 2003 - 0.97.2 Release + + Made a minor optimization to writes to palette memory. + + Altered VRC6 IRQ emulation timing slightly. + + Fixed a weirdo PPU emulation bug that could cause garbage on the right + side of the screen in certain situations. Thanks to FrenziedPanda for + bugging me enough to make me look into the problem and fix it. + I should be on the lookout to see if the fix breaks anything, though. + + Fixed the volume of high-quality sound mode(-soundq 1). It was + at 1/4 the volume it should have been. I compensated by increasing + the precision of the filter coefficients, which increased the sound + quality of that mode slightly without hurting performance. + +November 7, 2003 - 0.97.1 Release + + Fixed mapper 105 emulation. I had begun merging it into the + rest of the MMC1 code for 0.97, but I hadn't finished it. + + Changed things like RdMem(_PC++); to RdMem(_PC); _PC++; + Darn evil global variables. I need to fix them. Screw speed. + + Expanded checks for the global variable "fceuindbg"(used in debug + mode to prevent reads in the debugger from altering any registers). + +November 6, 2003 - 0.97 Release + * Note: I still had much more I had wanted to get done for 0.97, + but I lost even more interest. The Windows port still doesn't + have a way to enable the "highest" sound emulation mode, nor the + low pass filter code, not to mention that the lowpass filter code + isn't complete(I would need to design a high-order FIR filter from an IIR + filter to work properly-have the correct rolloff, among other + things-at finite playback rates). + + Fixed a bug in the IPS patcher. The recorded size wasn't being updated + after a successful realloc() was made, which could lead to corrupted patch + data from some patches. + + Added support for mappers 200, 201 from submitted code. + + Rewrote mapper 15 support to make more sense(well, depending + on your point of view...). + + Fixed 256KB CHR select support for mapper 115. + + Added support for mapper 12 from code from cah4e3. + +October 16, 2003 - Snapshot + + Fixed support for mapper 245(for nonencrypted/non-smynes-screwed up + ROM images only. Fixes "Yong Zhe Dou E Long [...] Dragon Quest 7". + + Added support for mappers 60, 62, 230, 244 from submitted code. + + Modified mapper 90 emulation to allow game-select on reset + for "Final Fight 3". + + Modified mapper 45 emulation to allow "Super 8-in-1" to work. + + Added a low-pass filter, and an option to enable it(CLI ports). + + 0x00 is now written to $4011 in the NSF player code instead of 0x40. + Fixed some other similar sound register init problems that I had fixed + in Festalon but forgot to fix in FCEU. Grrr. + + Removed some unnecessary 64-bit integer usage from FIR sound filtering + code. + + Added a new sound quality mode. Higher than high, it's highest(in + FCE Ultra, for now). Still need to fix the interface to allow + enabling it in the Windows port. + + Added some code for lower-level MMC3 IRQ emulation. It isn't completed + , and will not work properly as-is. I'm still playing around with + it occasionally. + + Fixed the sprite overflow flag(I think I fixed it), that was broken in an earlier + pre-0.97 release. + + Fixed support for iNES mapper 193. + + Command line arguments "-pal" and "-gg" now take extra arguments(1/0) + and are remembered in the configuration file. + +September 27, 2003 - Snapshot + + Added support for iNES mapper 50. + + Modified the UNIF board initialization code. Hopefully, this + new interface will eventually be used with the iNES code. + + Miscellaneous code cleanup... [truncated message content] |
|
From: <the...@us...> - 2006-03-19 05:58:46
|
Revision: 10 Author: thekingant Date: 2006-03-18 21:58:36 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=10&view=rev Log Message: ----------- Add historical news Added Paths: ----------- web/htdocs/news.txt Added: web/htdocs/news.txt =================================================================== --- web/htdocs/news.txt (rev 0) +++ web/htdocs/news.txt 2006-03-19 05:58:36 UTC (rev 10) @@ -0,0 +1,743 @@ +---------------------------------------- +2000-11-12 +xodnizel +<p> +FCE Ultra .40 for Windows and Linux SVGAlib is out. The source code has also been released. I had wanted to clean up the code much more, but I also wanted to get the code released. The next source code release should be much cleaner. Anyway, here's what's new: +</p> + +<ul> +<li>Rewrote MMC1 emulation code.</li> +<li>Added support for mappers 95, 113, and 118 (thanks to M. Knibbs for the information).</li> +<li>Adjusted PPU/CPU timing.</li> +<li>Added partial support for the Famicom Disk System</li> +<li>Added support for 4(up from 2) joysticks.</li> +<li>Added support for sound frame IRQ's.</li> +<li>Rewrote sound envelope decay/length counter/sweep code to use sound frame emulation code.</li> +<li>Rewrote large portions of code to be more efficient and more correct.</li> +<li>Added support for mappers 42,43,44,45,46,47, and 182. (thanks to K. Horton for the information)</li> +<li>Improved support for mapper 15.</li> + +<p> +I've also rewritten large parts of the Windows DirectX code to be more stable, and added several more video modes(for the Windows version). +</p> +---------------------------------------- +2000-11-13 +xodnizel +<p> +FCE Ultra .40 for DOS is out. This is the last build for DOS. +</p> +---------------------------------------- +2000-12-17 +xodnizel +<p> +FCE Ultra .41 for Windows is out. It's quite different from previous versions for Windows. Source code and other ports will be released in a few weeks when I have the time to rewrite the driver code for other platforms. +</p> +---------------------------------------- +2000-12-17 +xodnizel +<p> +There was a problem with the Windows binary that will cause the corruption of the FDS BIOS if you use an FDS disk image. It resulted from a very stupid programming error on a large scale. I've fixed the bug, and uploaded a new package. Get it on the downloads page as "FCE Ultra .41r2". Thanks to "Nick" for posting on the message board about this bug. +</p> +---------------------------------------- +2000-12-27 +xodnizel +<p> +FCE Ultra .42 for Windows DX and Linux SVGAlib is out. I've updated the source code to .42 as well. I've also added a small "Features" page to the site, and added a link to NesCE on the links page. +</p> +---------------------------------------- +2000-12-29 +xodnizel +<p> +FCE Ultra .42r2 for Windows DX is out, get it here or on the downloads page. This is only a "driver update version". I fixed some problems with my DirectSound code that would cause FCE Ultra to lock up/not work right on certain machines if sound is enabled. This bug affected all Windows 2000 machines, and some Windows 98/ME machines, and possibly a few Windows 95 machines. If you continue to have problems, please email me. +</p> +---------------------------------------- +2001-01-21 +xodnizel +<p> +*UPDATED* The .50 release had a small bug in the MMC5 code. It would cause the emulator to crash under Linux, and just mess up MMC5 games under Windows. The fixed version is called .50r2 and is on downloads page. +</p> + +<p> +FCE Ultra .50 for Windows DX and Linux SVGAlib is out. Many changes have been made, but first: If you link to this site, make sure the link is correct. The correct URL for this site is "http://fceultra.sourceforge.net", not "http://fceultra.sourceforge.net/fce/", not "http://fceultra.sourceforge.net/fceu/", not "http://www.kc.net/~zaik/", etc. Some sites(Zophar's Domain) should also update their descriptions of FCE Ultra and many of the other NES/Famicom emulators listed on their sites. Multiple-year-old descriptions aren't very useful. None of the preceding is meant to be offensive or insultive. +</p> + +<p> +Anyway, here's what's new: +</p> + +<ul> +<li>Many bug fixes.</li> +<li>Sound code partially rewritten to improve quality (near-perfect raw PCM now) and eliminate the need for a separate thread. This created a small problem with network play, though, so read the network play notes section. Also, synchronizing to vertical blank has been removed.</li> +<li>Rewrote other pieces of sound code. No more "buzzing" in MegaMan 2, Codemasters games' intros, etc.</li> +<li>Added support for the NES Zapper and the VS Unisystem's light gun. Be sure to read "Light Gun Notes".</li> +<li>Changed save state format. Save states should now be much smaller for most games. Most (not all) save states created with an older version should work.</li> +<li>Added support for VS Duck Hunt and VS Hogan's Alley.</li> +</ul> +---------------------------------------- +2001-02-04 +xodnizel +<p> +FCE Ultra .51 for Windows DX and Linux SVGAlib is out. The following changes apply to both ports: +</p> + +<ul> +<li>Added support for iNES mappers 86 and 89.</li> +<li>Reduced byte size of the NSF player's background.</li> +<li>Adjusted CPU/PPU timing.</li> +<li>Fixed sound channel frequency calculations for when PAL emulation is enabled.</li> +<li>Rewrote large pieces of the sound code and got rid of the sound queue. Sound quality should be slightly better now.</li> +<li>Various minor bug fixes.</li> +</ul> + +<p> +The following changes apply only to the Windows DX port: +</p> + +<ul> +<li>Fixed an FDS side reset bug when a new game is loaded.</li> +<li>Screen width/depth/height changes while FCE Ultra is in windowed mode are handled now.</li> +<li>Changed the configuration file format.</li> +<li>Added a palette configuration dialog.</li> +<li>Added the ability to load a custom NES palette.</li> +<li>Added an option to double 16-bit sound volume.</li> +<li>Added an option to force 8-bit sound.</li> +<li>Added an option to use a secondary sound buffer(versus the primary).</li> +<li>Added an option to wait for vertical blank if sound is disabled.</li> +<li>Added an option to run while focus is lost.</li> +</ul> +---------------------------------------- +2001-02-05 +xodnizel +<p> +I updated the Windows DX version of FCE Ultra .51r2 earlier today. It fixed a bug that would cause some(very few) games to not work(requiring you to restart the emulator or load another game which might fix it) when a new game is loaded, or you reset/power cycle the virtual NES. Since loading new games with the Linux SVGAlib version isn't possible, this bug only affects resetting/power cycling, which is not as much of a problem. I'll update the Linux build and the source code tomorrow if I have time. I am starting to neglect the Linux port a little...but the next version for Linux should have most of the new options that were put in the Windows version. +</p> +---------------------------------------- +2001-02-15 +xodnizel +<p> +Anyone who is working on or has done a port of FCE Ultra, *please* email me at xod...@ho...( cc to xod...@st... if you can, @home's servers are a bit unreliable). Include what platform your port is for, whether or not you want it distributed in the main source distribution, and whether or not you're still (planning on) updating the port. I'd also like the URLs of any web page(s) you have set up for your port. I need this information to keep track of different ports and coordinate people who are working on different ports for the same platform. The preceding applies to anyone who has contacted me about/submitted ported code to me before. +</p> +---------------------------------------- +2001-02-19 +xodnizel +<p> +FCE Ultra .52 for Linux SVGAlib and Windows DX is out. Here's what's new: +</p> + +<ul> +<li>Fixed a PCM emulation bug(digitized voices in "Ikari Warriors 2" and "The Immortal", among others, work now).</li> +<li>Fixed noise channel's LFSR update frequencies(hopefully).</li> +<li>Various minor bug fixes.</li> +</ul> +---------------------------------------- +2001-04-14 +xodnizel +<p> +FCE Ultra .53 for Windows DX is out. The Linux SVGAlib port should be released within the next two days. The features page and the source code will also be updated at that time. Here's what's new: +</p> + +<ul> +<li>Fixed a bug with joysticks that occured on systems with multiple joysticks.</li> +<li>Added support for iNES mappers 77 and 92(thanks to LULU for the code for both).</li> +<li>Added partial(timer is non-configurable) support for iNES mapper 105.</li> +<li>Changed save state format again. Save states made with previous versions should still be compatible, though this may change in future versions.</li> +<li>Small optimization to sprite emulation code.</li> +<li>Rewrote color-deemphasis code to use integer math instead of floating-point math.</li> +<li>Rewrote and restructured input code. Among other new features, keyboard keys are now somewhat configurable.</li> +<li>Writes to $4003/$4007 will now reset the emulated square wave duty cycle generator.</li> +<li>Added emulation of the Power Pad.</li> +</ul> +---------------------------------------- +2001-04-16 +xodnizel +<p> +FCE Ultra .53 for Linux SVGAlib is out. I've also updated the source code on the "Development" page. Here's what's new: +</p> + +<ul> + * Added support for iNES mappers 77 and 92(thanks to LULU for the + code for both). + * Added partial(timer is non-configurable) support for iNES mapper 105. + * Changed save state format again. Save states made with previous + versions should still be compatible, though this may change in + future versions. + * Changed the format of the configuration file. + * Small optimization to sprite emulation code. + * Rewrote color-deemphasis code to use integer math instead of + floating-point math. + * Rewrote and restructured input code. + * Writes to $4003/$4007 will now reset the emulated square wave + duty cycle generator. + * Added emulation of the Power Pad. + * Added command line option "-f8bit" to force 8-bit sound. + * Rewrote joystick device reading code to use the event-driven + interface. This should fix various problems regarding support + for joysticks with many buttons. +</ul> +---------------------------------------- +2001-05-05 +xodnizel +<p> +FCE Ultra .54 for Windows DX and Linux SVGAlib is out. The source code has been updated as well. Here's what's new for the Windows DX port(what follows is new for the Linux SVGAlib port as well, except for the last two items): +</p> + +<ul> + * Fixed a bug that would cause a wrong battery-backed WRAM file + name to be produced if FCE Ultra was passed a file name without + any directory component(such as "fceu SuperBlah.nes"). + * Fixed an iNES mapper 118 emulation bug that got into the code + in a recent code cleanup. "Armadillo" is playable again. + * Fixed a typo(and bug) in the MMC5 emulation code. + * Data returned from emulated reads to "unmapped" areas or + memory locations where bits are undefined should now be correct. + * Fixed emulation of the sprite memory transfer register $4014. + It now takes into account the last value written to $2003 and + starts the transfer to that location in sprite memory(like on + a real NES). + * Added a video configuration dialog box. + * Added the ability to configure a custom video mode. Aspects + that are configurable include width, height, bits per pixel, + and size transforming(stretching and scaling). +</ul> +---------------------------------------- +2001-05-06 +xodnizel +<p> +I've just released a minor update(.54r2) for the .54 version for Windows DX. It fixes a small bug(forgot brackets in a piece of code) that would cause no image to be displayed in windowed mode. If you don't have this problem, you don't need to download the fix. +</p> +---------------------------------------- +2001-05-28 +xodnizel +<p> +FCE Ultra .55 for Windows and Linux is out. Here's what's new for the Windows port: +</p> + +<ul> + * Rewrote window resizing code. The window will now resize itself + to a multiple of the NES' screen dimensions nearest to the user + selected dimensions. + * Added an option to use buttons instead of axes on physical joysticks + for the emulated D-Pad. This is useful for some digital joysticks. + * Fixed a bug that would cause FCE Ultra to crash if sound were + disabled during emulation. + * Added the ability to "fast forward" emulation(use the tilde/grave key). + * Added an option to allow more than 8 sprites per scanline to be + displayed. + * Added an option to save all extra non-volatile game data + (such as battery-backed RAM) in a directory under FCE Ultra's + base directory(as opposed to the directory the game is located in). + * Added an option to allow the emulator to change to a full screen + video mode once a new game is loaded. + * Rewrote pieces of DirectInput joystick handling code. Hopefully + it should increase compatibility. + * Added the ability to automatically obtain button numbers when + configuring joysticks, by pressing buttons on the joystick. + * Added the ability to close the current game(decreases CPU usage). + * Increased the speed of various function calls by passing + arguments to functions through registers instead of through the + stack. + * Added emulation of the MMC5's raw PCM register. + * Added the ability to save/load save states while network play + is occuring. + * Having PAL emulation enabled will no longer override the + NTSC/PAL settings in NSF headers. + * Fixed a bug that got into the .54 release. Extraneous data was + being returned on reads from $2002, which caused problems + with some games(such as "Choujin Sentai Jetman"). +</ul> + +<p> +Here's what's new for the Linux port: +</p> + +<ul> + * Added the ability to "fast forward" emulation(use the tilde/grave key). + * Added command line options "-no8lim" and "-subase". + * Increased the speed of various function calls by passing + arguments to functions through registers instead of through the + stack. + * Added emulation of the MMC5's raw PCM register. + * Added the ability to save/load save states while network play + is occuring. + * Having PAL emulation enabled will no longer override the + NTSC/PAL settings in NSF headers. + * Fixed a bug that got into the .54 release. Extraneous data was + being returned on reads from $2002, which caused problems + with some games(such as "Choujin Sentai Jetman"). +</ul> +---------------------------------------- +2001-07-04 +xodnizel +<p> +FCE Ultra .60 for Windows and Linux is out. Here's what's new for both ports: +</p> + +<ul> + * Various speed optimizations. + * Sound is no longer messed up when a JAM/KIL opcode is emulated. + * Fixed an overflow bug that occured when $4014 was written to + during certain(rare) conditions. + * Fixed a few save state bugs. + * Fixed a MMC1 CHR bank switching bug. + * Added emulation of the MMC5's WRAM write-enable/disable registers. + * Fixed a sound frame IRQ emulation bug. "Qix" works now. + * Added UNIF support. Some of the board emulation is still a bit + buggy, though. Look at the documentation for a list of supported + boards. + * Updated the "Palette Notes" section of the documentation. Also + fixed a few other problems with the documentation. + * Added support for loading files in the PKZIP and gzip + compressed file formats via zlib. + * Added the ability to configure the first scanline and the last + scanline to draw to the screen. Enabling PAL emulation no longer + will cause all 239 scanlines to be displayed, though an option + to override these settings for when PAL emulation is enabled may + be in the next version. +</ul> + +<p> +The following is also new for the Windows port: +</p> + +<ul> + * Fixed a bug that would cause the emulated D-pad of virtual gamepads + emulated through the keyboard to be duplicated through "higher" + virtual gamepads(gamepad 1 would affect 2,3,4; gamepad 2 would + affect 3,4; etc.). +</ul> +---------------------------------------- +2001-07-07 +xodnizel +<p> +FCE Ultra .61 for Windows and Linux is out. Here's what's new for the Windows port: +</p> + +<ul> + * Speed optimizations in sprite rendering code. + * Screen snapshots are now saved in the PNG format instead of the PCX + format. + * Fixed Game Genie emulation(it wasn't working in the last release). + Also added support for Game Genie emulation to the UNIF code. + * Fixed a problem(if FCE Ultra was configured to connect to a remote + host and the remote host was given as an IP address, and the IP + address couldn't be reverse resolved, which is commonly the case + on home LANs, the connection attempt would fail) in the network + play code. I had misinterpreted the Winsock API documentation + when I wrote the code. +</ul> + +<p> +Here's what's new for the Linux port: +</p> + +<ul> + * Speed optimizations in sprite rendering code. + * Screen snapshots are now saved in the PNG format instead of the PCX + format. + * Fixed Game Genie emulation(it wasn't working in the last release). + Also added support for Game Genie emulation to the UNIF code. + * Rewrote command line option parsing code. + +</p> +---------------------------------------- +2001-07-07 +xodnizel +<p> +Due to a rather major bug(sprite transparencies were messed up a bit) with .61, I've released .61r2 for both Linux and Windows. Another bug has also been fixed, which fixes "Gremlins 2", at least. +</p> +---------------------------------------- +2001-08-06 +xodnizel +<p> +FCE Ultra .62 for Windows and Linux is out. Here's what's new: +</p> + +<ul> + * Added support for the Famicom Disk System's extra sound channel. + * Updated the version of Tatsuyuki Satoh's OPL2 emulator used in + FCE Ultra from .36f to .37a. The sound quality in "Lagrange Point" + seems to have improved. + * Added support for iNES mapper 242(used by "Wai Xing Zhan Shi"). + * Fixed a network play bug that could cause desynchronizations + if more than one network play session occured since FCE Ultra + was started. This bug only showed up on the Windows port, though. + * Increased the volume of the noise and triangle sound channels. + * Fixed a save state loading bug. + * Fixed a small memory leak that was being caused by the VRC7 + state loading code. + * Fixed a bug that could cause FCE Ultra to crash if a virtual disk + was being read and the user ejected the virtual disk. + * Various minor bug fixes/code cleanups. +</ul> +---------------------------------------- +2001-08-07 +xodnizel +<p> +I've released FCE Ultra .62r2 for Windows and Linux. It fixes a bug in the last version that causes incorrect Game Genie emulation. +</p> +---------------------------------------- +2001-09-05 +xodnizel +<p> +FCE Ultra .70 for Linux and Windows is out. Read the documentation to find out what's new, I'm busy. :) +</p> +<p> +Thanks to Richard Hoelscher for his document on the Famicom four-player adapter. +</p> +---------------------------------------- +2001-10-28 +xodnizel +<p> +FCE Ultra .71 for Windows and Linux is out. Get it in the "Downloads" section. Many things were changed in this release that might cause game incompatibilities, so feel free to email me if any games have been broken between this release and the last release. +</p> + +<p> +Also, the email address "xod...@ho..." will stop functioning in November. Please use xod...@us... instead. +</p> +---------------------------------------- +2001-11-15 +xodnizel +<p> +FCE Ultra .71 has a bug in it that causes the Game Genie emulation to not work with certain games that it should work with. This is fixed in the development version(to be .72). .72 will be released later this month, or in December, when I have enough free time when I'm not tired. +</p> +---------------------------------------- +2001-12-02 +xodnizel +<p> +FCE Ultra .72 for Linux, Windows, and DOS is out. I've gone back to using gcc 2.95.3 instead of gcc 3.0 to compile the Linux binary release, due to shared library problems. Check out the documentation on the Downloads page to see what's new. +</p> +---------------------------------------- +2001-12-06 +xodnizel +<p> +FCE Ultra .73 will be released this weekend(hopefully). I've decided to do a new release so soon to the last release due to several bugs in .72(bugs that were also in .71 that I didn't catch). +</p> +---------------------------------------- +2001-12-08 +xodnizel +<p> +FCE Ultra .73 for DOS, Linux, and Windows is out. Here's what's new: +</p> + +<ul> +* Fixed several bugs with sprite emulation. Several games(such + as "Trojan" and "VS Duck Hunt") that were broken in .71 and .72 now + work ok. +* Added support for iNES mapper 82. Thanks to those who work on + "unofficial nester". +* Added support for iNES mapper 250(used by "Time Diver Avenger"). +* Fixed the documentation to show that iNES mappers 48, 83, and 232 + are supported. +* Removed various pieces of stale code and fixed a few minor bugs. +* Fixed a triangle wave channel bug(the channel was sometimes enabled + when it shouldn't have been). +* Writing to $4010 with the upper bit clear now acknowledges the DPCM + IRQ. This appears to fix "Stunt Buggies". +* Rewrote pieces of the Zapper emulation code to be cleaner and more + accurate. +* Rewrote the VS Unisystem dip switch drawing code. +* Simplified the setting of VS Unisystem dip switches. The "V" key + now toggles viewing AND editing of dip switches. +</ul> +---------------------------------------- +2002-01-20 +xodnizel +<p> +FCE Ultra .74 for DOS, Linux, and Windows is out. +</p> +---------------------------------------- +2002-07-01 +xodnizel +<p> +FCE Ultra 0.80 for DOS, Linux, and Windows is out. FCE Ultra is now distributed under the terms of the GNU GPL. See the documentation for a list of the many changes that concern most users. This release *might* be buggier than past releases due to the large amount of code that has been modified. If something is broken, report it on the forum, or to me via email. Also, this will probably be the last release that I provide precompiled Linux binaries for. +</p> +---------------------------------------- +2002-08-18 +xodnizel +<p> +FCE Ultra 0.81 is out. This is a major release, despite the small increment in the version number; besides the changes listed in the end-user documentation, many internal changes have been made, so some things may have been broken. +</p> + +<p> +I have decided not to distribute the source code in the same archive as the executables, so if you provide a binary release of FCE Ultra, you must also provide the source code at the same location. +</p> +---------------------------------------- +2002-11-13 +xodnizel +<p> +I have been working on an NSF player based on the sound code that is to be in the next release of FCE Ultra. The source code for the preliminary release can be downloaded here. It is currently distributed under the GPL, but I'll release the "real" version under the LGPL. Currently there are only a console interface and an xmms plugin(which isn't complete). It will currently build and run on Linux and FreeBSD systems running on an IA32 platform. +</p> + +<p> +I'm posting this information now in the hopes that someone will write Winamp 2/3 plugins, fix the xmms plugin, and do whatever else. If you need assistance, you can post on the forum or email me, if you can find my email address. ;) +</p> +---------------------------------------- +2002-11-28 +xodnizel +<p> +First official release of <a href="http://festalon.sourceforge.net/">Festalon</a> is out. It still has a few bugs, but should work well. +</p> +---------------------------------------- +2002-12-14 +xodnizel +<p> +A few days ago, Festalon 0.1.2 was released. It's an NSF player based on the sound code that is (or was) to be in FCE Ultra 0.90, with a few improvements. +</p> + +<p> +I will no longer offer any email support for FCE Ultra end users. If you have a problem, post on the forum. +</p> +---------------------------------------- +2002-12-22 +xodnizel +<p> +Festalon 0.1.3 is out. +</p> + +<p> +deraj and others are working on a fork of FCE Ultra called <a href="http://phamicom.sourceforge.net/">phamicom</a>. +</p> +---------------------------------------- +2002-12-26 +xodnizel +<p> +A new source release of FCE Ultra 0.81 is available. It fixes compilation problems that existed with newer versions of gcc. +</p> +---------------------------------------- +2003-02-22 +xodnizel +<p> +Anyone who has any of the following Famicom games, a real Famicom (no clones) and can record digital audio files, email me at xod2 at starmen.net: +</p> + +<ul> +Digital Devil Story II +Erika to Satoru no Yumebouken +Esper Dream II +Final Lap +Gimmick! +Just Breed +King of Kings(Namco) +Lagrange Point +Madara +Mappy Kids +Sangokushi II(Namco) +Zelda no Densetsu(FDS version) +</ul> +---------------------------------------- +2003-03-09 +xodnizel +<p> +FCE Ultra 0.92 is out. This is a major release, fixing many bugs present in 0.81, and adding a new sound core. The new sound emulation core is disabled by default, however, since it uses a considerable amount of CPU time, so if you want to use it, you'll have to enable it. See the documentation for a more complete list of what is new. +</p> + +<p> +Binaries are only available for Windows users. DOS/Linux/MacOS X users will need to download the source tarball from the development section and compile their own binaries. I may provide binaries for DOS later, though. +</p> +---------------------------------------- +2003-03-10 +xodnizel +<p> +FCE Ultra 0.92r2 is out. This fixes a small bug in the sound code that caused "Cobra Triangle" to freeze. The source code package for 0.92 also was incomplete(it was missing some of the new Windows code). +</p> +---------------------------------------- +2003-03-11 +xodnizel +<p> +FCE Ultra 0.93 is out. This is a minor release, fixing some FDS IRQ emulation bugs(and thus fixing the game "Lutter"), reducing the volume of the FDS sound channel, and fixing two obscure null-pointer dereferencing bugs. +</p> +---------------------------------------- +2003-03-19 +xodnizel +<p> +I've been working on putting together a PSF player, which will probably be called sexyPSF. It is based on Pcsx and the PEOPS SPU plugin, with heavy modifications and a few improvements. A preliminary release can be downloaded. It'll only run in Linux console, on IA32 platforms, with OSS. It currently supports psfs and minipsfs, but most of the loading code is prone to failure(when loading minipsfs, you have to have a slash in the filename), which will be fixed before its official release. +</p> +---------------------------------------- +2003-03-23 +xodnizel +<p> +<a href="http://xod.starmen.net/sexypsf/">sexypsf</a> has been released...sort of. +</p> +---------------------------------------- +2003-03-29 +xodnizel +<p> +FCE Ultra 0.94 has been released. This is a source-only release. This release is officially the final release. +</p> +---------------------------------------- +2003-03-29 +xodnizel +<p> +The Windows executable has been updated to 0.94. I decided to go ahead with the executable release since there were a few important bug fixes and changes. The Linux svgalib executable will not be updated. Grab the source code and compile it from there, or compile the SDL code, which works well now. I don't want to mess with incompatible library versions. :/ The DOS executable wasn't updated because it's in low demand, most people using DOS today are probably knowledgable enough to compile it, and I didn't feel like it. The source code package has also been updated...the previous copy had the wrong files in it. D'oh. +</p> + +<p> +Taking into consideration I already messed up this release... If any bugs were introduced in 0.94, I might release a quick followup (0.94r2), depending on the severity of the bug(s). +</p> +---------------------------------------- +2003-06-18 +xodnizel +<p> +0.95 pre release #2 (Windows executable) - Source code(do a make clean first). There will be an FCE Ultra 0.95. 0.94 had a few BLECK bugs in it, particularly with the NSF player... Report any game compatibility issues on the forum. +</p> +---------------------------------------- +2003-06-21 +xodnizel +<p> +FCE Ultra 0.95 is out. Now you can have even more Mother fun. What is new: +</p> + +<ul> + * Fixed some save state loading bugs, particularly when "high-quality" sound emulation is enabled. + * Tweaked Konami mappers' IRQ counter emulation. + * Altered NMI, IRQ, and BRK emulation. Fixed games include "Dynamite Bowl" and "Bases Loaded 2". + * Added support for mid-scanline background effects, such as those used in "Mother", "Marble Madness", "Pirates!", and "Business Wars". + * Low/Normal-quality sound emulation now uses 32-bit integers instead of 64-bit integers, resulting in a significant speed boost. + * Decreased the PCM/DMC volume in low/normal-quality sound emulation. + * Low-G-Man(NTSC and PAL versions) are now recognized by CRC32 value, and WRAM will be disabled if they are loaded. A warning/status message will also be printed regarding this issue if one of these games is loaded. + * Cleaned up a bit of code. + * Fixed some NSF player bugs that were causing some rips not to play. +</ul> +---------------------------------------- +2003-06-21 +xodnizel +<p> +FCE Ultra 0.96. +<p> + +<ul> + * Improved support for the RAMBO-1(mapper 64). "Skull and Crossbones" is now playable. +</ul> +---------------------------------------- +2003-06-21 to 2003-07-17 +xodnizel +<p> +No more support will be provided for FCE Ultra from me. If you care about FCE Ultra so much, support others. Support files for building on Windows will no longer be provided. "Binary" releases for Windows will no longer be made. The source code will be updated whenever I feel like it, and may contain bugs. If you're packaging a release, you should read the ChangeLog and take note of anything that might be buggy, and test it before releasing. Get files. +</p> +---------------------------------------- +2003-07-17 to 2003-08-03 +xodnizel +<p> +FCE Ultra: The Terms +No more support will be provided for FCE Ultra from me. If you care about FCE Ultra so much, support others. Support files for building on Windows will no longer be provided. "Binary" releases for Windows will no longer be made. The source code will be updated whenever I feel like it, and may contain bugs. If you're packaging a release, you should read the ChangeLog and take note of anything that might be buggy, and test it before releasing. +Get files. +</p> + +<p> +I've documented the network play protocol in case anyone wants to write a standalone network play server. It may contain mistakes, so you might want to also look at the actual source code(fceu/drivers/cli/unix-netplay.c should be more readable than the Winsock code). +</p> + + * Developer's Forum. (not archived) + * Network play protocol. (not archived) +---------------------------------------- +2004-03-10 +xodnizel +<p> +I've uploaded the FCE Ultra 0.98.2, available on the downloads page. A precompiled Windows executable is not provided, but it should be relatively simple to compile, provided you have the correct tools (msys, mingw, sdl header/import libraries, directx header/import libraries). +</p> +---------------------------------------- +2004-04-19 +xodnizel +<p> +FCE Ultra 0.98.6 is out, along with an updated version for Windows, using the old Win32 codebase, with some improvements. +</p> + +<p> +Please note that this Windows release is somewhat of an experimental release, and may contain bugs. Of course, bugs won't be fixed unless I find out about them. Also note that not all of the new Famicom input devices FCE Ultra has support for are usable in this build. +</p> +---------------------------------------- +2004-04-21 +xodnizel +<p> +FCE Ultra 0.98.7 is out. +</p> +---------------------------------------- +2004-04-21 +xodnizel +<p> +FCE Ultra 0.98.8 is out. +</p> + +<ul> + Fixed a typo in sound.c that caused only part of the sound registers + to be saved in save states. + + Win32: Switched over to the DirectDraw7 interface, from DirectDraw4's. + The surface Flip() method will now block, which results in somewhat + smoother animation/scrolling with double buffering, especially when combined with the + auto blit-skip implemented in 0.98.6 when sound is enabled. + + Win32: Undid a change made in the last release that limited the + speed of fast-forwarding when using the tilde key. I really do + need to implement some sort of unified timing/blit skip system... + + Win32: Added an option, disabled by default, to ask for confirmation + before exiting FCE Ultra. + + Win32: Added an option, enabled by default, to disable the system + screen saver while a game is loaded. + + Win32: Added a new video synchronization mode, a "lazy" wait for + vblank/vertical retrace. It calls Sleep(0) in its wait loop. This + still uses all available cpu cycles, but it is much more friendly + to other processes than the old-style wait for vblank. + + Win32: Added support for joystick POV hats. +</ul> +---------------------------------------- +2004-05-06 +xodnizel +<p> +FCE Ultra 0.98.9 is out. +</p> + +<li> + Win32-native: Fixed the speed throttling used when sound is disabled. In previous + 0.98.x Win32-native releases, emulation was running at 1/2 the speed it should + have been when sound was disabled. + + Win32-native: Moved settings in the "Miscellaneous" configuration window + to where they should have been in the first place, and added "GUI" and "Timing" + configuration windows to accommodate some. + + Win32-native: Fixed the handling of the "Scroll Lock" key used to disable and + enable Family BASIC Keyboard input. + + Updated documentation to handle some slight differences in the Win32-native + port("Win32-native" is what the Win32 port using native APIs, as opposed to something + like GTK+ and SDL, will be referred to in documentation now). I also made + some other minor wording adjustments to the documentation. + + Added an iNES header correction for Dragonball. +</li> +---------------------------------------- +2004-05-07 +xodnizel +<p> +I've released a "fixed" version of 0.98.9 for Windows. The previous release had a small issue with radio buttons in the "Image Size Transform" box in the "Video" coniguration window. +</p> + +<p> +A fix for this was the only change. +</p> +---------------------------------------- +2004-10-29 +xodnizel +<p> +No new *official* releases of FCE Ultra will be made. I mean it this time. :b +</p> + +<p> +The forum has been closed, as I will not be available to moderate it any longer, but the old posts will be viewable indefinitely. +</p> + +<p> +Crazy people may download http://fceultra.sourceforge.net/fceu-0.98.13-pre.src.tar.bz2 which was intended to be 0.98.13. It should be stable, and fixed several major bugs present in 0.98.12, but I have neither the time nor desire to do thorough tests for regressions, and thus it will not be an official release. +</p> +---------------------------------------- +2006-03-18 +Mark Doliner +<p> +The FCE Ultra project has been taken over. Our current goal is only to post the previous release and documentation, but we'd love to get development going again, too. We'll post more information soon. +</p> +---------------------------------------- Property changes on: web/htdocs/news.txt ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 22:57:24
|
Revision: 9 Author: thekingant Date: 2006-03-18 14:57:20 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=9&view=rev Log Message: ----------- Get rid of "1.0 finale" Modified Paths: -------------- web/htdocs/download.php Modified: web/htdocs/download.php =================================================================== --- web/htdocs/download.php 2006-03-18 22:56:31 UTC (rev 8) +++ web/htdocs/download.php 2006-03-18 22:57:20 UTC (rev 9) @@ -3,17 +3,8 @@ include("header.php"); ?> -<div class="mainbox"> -<h2 class="boxhead">Download</h2> -<div class="boxbody"> -<p> -Source code tarballs and binary (precompiled) releases are on this page. -</p> -</div> -</div> - <table class="mainbox" cellpadding="5" cellspacing="0" border="1"> -<tr><th class="boxhead" colspan="2">"1.0 finale"</th></tr> +<tr><th class="boxhead" colspan="2">Download</th></tr> <tr><td colspan="2"> <ul> <li>Currently, only the Unix (Linux, FreeBSD, etc), Mac OS X, and Win32 ports will compile and run, mainly using SDL.</li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 22:56:35
|
Revision: 8 Author: thekingant Date: 2006-03-18 14:56:31 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=8&view=rev Log Message: ----------- The underline tag is apparently not valid xhtml 1.0 strict Modified Paths: -------------- web/htdocs/download.php Modified: web/htdocs/download.php =================================================================== --- web/htdocs/download.php 2006-03-18 22:55:59 UTC (rev 7) +++ web/htdocs/download.php 2006-03-18 22:56:31 UTC (rev 8) @@ -17,7 +17,7 @@ <tr><td colspan="2"> <ul> <li>Currently, only the Unix (Linux, FreeBSD, etc), Mac OS X, and Win32 ports will compile and run, mainly using SDL.</li> -<li>Network play <u>is</u> functional as of 0.98.10.</li> +<li>Network play is functional as of 0.98.10.</li> <li>An alternate native Win32 + DirectX GUI'd target is available starting with version 0.98.6.</li> <li>Uses autotools (autoconf, automake).</li> <li>Dependencies: DirectX (Win32), SDL, OpenGL (optional, recommended), zlib</li> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 22:56:05
|
Revision: 7 Author: thekingant Date: 2006-03-18 14:55:59 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=7&view=rev Log Message: ----------- Formatting Modified Paths: -------------- web/htdocs/download.php Modified: web/htdocs/download.php =================================================================== --- web/htdocs/download.php 2006-03-18 22:54:08 UTC (rev 6) +++ web/htdocs/download.php 2006-03-18 22:55:59 UTC (rev 7) @@ -16,11 +16,11 @@ <tr><th class="boxhead" colspan="2">"1.0 finale"</th></tr> <tr><td colspan="2"> <ul> -<li>Currently, only the UN*X(Linux, FreeBSD), Mac OS X, and Win32 ports will compile and run, mainly using SDL.</li> +<li>Currently, only the Unix (Linux, FreeBSD, etc), Mac OS X, and Win32 ports will compile and run, mainly using SDL.</li> <li>Network play <u>is</u> functional as of 0.98.10.</li> <li>An alternate native Win32 + DirectX GUI'd target is available starting with version 0.98.6.</li> -<li>Uses autotools(autoconf, automake).</li> -<li>Dependencies: DirectX(Win32), SDL, OpenGL(optional, recommended), zlib</li> +<li>Uses autotools (autoconf, automake).</li> +<li>Dependencies: DirectX (Win32), SDL, OpenGL (optional, recommended), zlib</li> </ul> </td></tr> <tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 22:54:15
|
Revision: 6 Author: thekingant Date: 2006-03-18 14:54:08 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=6&view=rev Log Message: ----------- Link to the three good source packages that we have Modified Paths: -------------- web/htdocs/download.php Modified: web/htdocs/download.php =================================================================== --- web/htdocs/download.php 2006-03-18 19:52:04 UTC (rev 5) +++ web/htdocs/download.php 2006-03-18 22:54:08 UTC (rev 6) @@ -12,11 +12,8 @@ </div> </div> - <table class="mainbox" cellpadding="5" cellspacing="0" border="1"> - <tr><th class="boxhead" colspan="2">"1.0 finale"</th></tr> - <tr><td colspan="2"> <ul> <li>Currently, only the UN*X(Linux, FreeBSD), Mac OS X, and Win32 ports will compile and run, mainly using SDL.</li> @@ -26,31 +23,10 @@ <li>Dependencies: DirectX(Win32), SDL, OpenGL(optional, recommended), zlib</li> </ul> </td></tr> - <tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> -<tr><td><a href="fceu-0.98.12.src.tar.bz2">0.98.12</a></td><td>August 28, 2004</td></tr> -<tr><td><a href="fceu-0.98.11.src.tar.bz2">0.98.11</a></td><td>August 12, 2004</td></tr> -<tr><td><a href="fceu-0.98.10.src.tar.bz2">0.98.10</a></td><td>May 17, 2004</td></tr> -<tr><td><a href="fceu-0.98.2.src.tar.gz">0.98.2</a></td><td>March 9, 2004</td></tr> - +<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.15-src.7z?download">0.98.15</a></td><td>Unknown</td></tr> +<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.13-pre.src.tar.bz2?download">0.98.13-pre</a></td><td>29 October 2004</td></tr> +<tr><td><a href="http://prdownloads.sourceforge.net/fceultra/fceu-0.98.12.src.tar.bz2?download">0.98.12</a></td><td>28 August 2004</td></tr> </table> - - -<table class="mainbox" cellpadding="5" cellspacing="0" border="1"> - -<tr><th class="boxhead" colspan="2">"Classic"</th></tr> -<tr><td colspan="2"> -<ul> -<li>The latest version is compilable on Linux(SVGAlib or SDL), Mac OS X, BeOS, Win32, and DOS.</li> -<li>Uses premade makefiles.</li> -</ul> -</td></tr> - -<tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> - -<tr><td><a href="fceu-0.97.5.src.tar.gz">0.97.5</td><td>November 12, 2003</td></tr> - -</table> - <?php include("footer.php"); ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 19:52:11
|
Revision: 5 Author: thekingant Date: 2006-03-18 11:52:04 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=5&view=rev Log Message: ----------- A few other tweaks Modified Paths: -------------- web/htdocs/download.php Modified: web/htdocs/download.php =================================================================== --- web/htdocs/download.php 2006-03-18 19:49:11 UTC (rev 4) +++ web/htdocs/download.php 2006-03-18 19:52:04 UTC (rev 5) @@ -31,13 +31,20 @@ <tr><td><a href="fceu-0.98.12.src.tar.bz2">0.98.12</a></td><td>August 28, 2004</td></tr> <tr><td><a href="fceu-0.98.11.src.tar.bz2">0.98.11</a></td><td>August 12, 2004</td></tr> <tr><td><a href="fceu-0.98.10.src.tar.bz2">0.98.10</a></td><td>May 17, 2004</td></tr> -<tr><td colspan="2"><hr /></td></tr> <tr><td><a href="fceu-0.98.2.src.tar.gz">0.98.2</a></td><td>March 9, 2004</td></tr> +</table> + + + +<table class="mainbox" cellpadding="5" cellspacing="0" border="1"> + <tr><th class="boxhead" colspan="2">"Classic"</th></tr> <tr><td colspan="2"> +<ul> <li>The latest version is compilable on Linux(SVGAlib or SDL), Mac OS X, BeOS, Win32, and DOS.</li> <li>Uses premade makefiles.</li> +</ul> </td></tr> <tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 19:49:16
|
Revision: 4 Author: thekingant Date: 2006-03-18 11:49:11 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=4&view=rev Log Message: ----------- Rename releases.php to download.php Modified Paths: -------------- web/htdocs-inc/header.php Modified: web/htdocs-inc/header.php =================================================================== --- web/htdocs-inc/header.php 2006-03-18 19:48:07 UTC (rev 3) +++ web/htdocs-inc/header.php 2006-03-18 19:49:11 UTC (rev 4) @@ -19,8 +19,8 @@ <div class="navbox"> <span class="naventry">[<a href="/">Home</a>]</span> +<span class="naventry">[<a href="/download.php">Download</a>]</span> <span class="naventry">[<a href="docs.php">Documentation</a>]</span> -<span class="naventry">[<a href="/releases.php">Releases</a>]</span> <span class="naventry">[<a href="/support.php">Support Files</a>]</span> <span class="naventry">[<a href="/links.php">Links</a>]</span> <span class="naventry">[<a href="http://sourceforge.net/projects/fceultra/">Development</a>]</span> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 19:48:18
|
Revision: 3 Author: thekingant Date: 2006-03-18 11:48:07 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=3&view=rev Log Message: ----------- Try to cleanup the download page Modified Paths: -------------- web/htdocs/docs.php web/htdocs/links.php Added Paths: ----------- web/htdocs/download.php Removed Paths: ------------- web/htdocs/releases.php Modified: web/htdocs/docs.php =================================================================== --- web/htdocs/docs.php 2006-03-18 19:17:32 UTC (rev 2) +++ web/htdocs/docs.php 2006-03-18 19:48:07 UTC (rev 3) @@ -3,10 +3,11 @@ include("header.php"); ?> - <body> - <center><h1>FCE Ultra General Documentation</h1></center> - <center><i>Last updated August 11, 2004<br />Valid as of FCE Ultra 0.98.11</i></center> - <p> +<h1 class="center">FCE Ultra General Documentation</h1> +<i>Last updated August 11, 2004</i><br/> +<i>Valid as of FCE Ultra 0.98.11</i> + +<p> <b>Table of Contents:</b> <ul> <li /><a href="#intro">Introduction</a> Added: web/htdocs/download.php =================================================================== --- web/htdocs/download.php (rev 0) +++ web/htdocs/download.php 2006-03-18 19:48:07 UTC (rev 3) @@ -0,0 +1,49 @@ +<?php + $title = "Download"; + include("header.php"); +?> + +<div class="mainbox"> +<h2 class="boxhead">Download</h2> +<div class="boxbody"> +<p> +Source code tarballs and binary (precompiled) releases are on this page. +</p> +</div> +</div> + + +<table class="mainbox" cellpadding="5" cellspacing="0" border="1"> + +<tr><th class="boxhead" colspan="2">"1.0 finale"</th></tr> + +<tr><td colspan="2"> +<ul> +<li>Currently, only the UN*X(Linux, FreeBSD), Mac OS X, and Win32 ports will compile and run, mainly using SDL.</li> +<li>Network play <u>is</u> functional as of 0.98.10.</li> +<li>An alternate native Win32 + DirectX GUI'd target is available starting with version 0.98.6.</li> +<li>Uses autotools(autoconf, automake).</li> +<li>Dependencies: DirectX(Win32), SDL, OpenGL(optional, recommended), zlib</li> +</ul> +</td></tr> + +<tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> +<tr><td><a href="fceu-0.98.12.src.tar.bz2">0.98.12</a></td><td>August 28, 2004</td></tr> +<tr><td><a href="fceu-0.98.11.src.tar.bz2">0.98.11</a></td><td>August 12, 2004</td></tr> +<tr><td><a href="fceu-0.98.10.src.tar.bz2">0.98.10</a></td><td>May 17, 2004</td></tr> +<tr><td colspan="2"><hr /></td></tr> +<tr><td><a href="fceu-0.98.2.src.tar.gz">0.98.2</a></td><td>March 9, 2004</td></tr> + +<tr><th class="boxhead" colspan="2">"Classic"</th></tr> +<tr><td colspan="2"> +<li>The latest version is compilable on Linux(SVGAlib or SDL), Mac OS X, BeOS, Win32, and DOS.</li> +<li>Uses premade makefiles.</li> +</td></tr> + +<tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> + +<tr><td><a href="fceu-0.97.5.src.tar.gz">0.97.5</td><td>November 12, 2003</td></tr> + +</table> + +<?php include("footer.php"); ?> Property changes on: web/htdocs/download.php ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Modified: web/htdocs/links.php =================================================================== --- web/htdocs/links.php 2006-03-18 19:17:32 UTC (rev 2) +++ web/htdocs/links.php 2006-03-18 19:48:07 UTC (rev 3) @@ -10,19 +10,9 @@ <ul> <li><a href="http://fakenes.sourceforge.net/">FakeNES</a> - FakeNES is a quite portable NES emulator with an internal GUI.</li> -<li><a href="http://sourceforge.net/projects/nestopia/">Nestopia</a> - Nestopia has fairly accurate emulation, and is written for MS Windows.</li> -<li><a href="http://virtuanes.s1.xrea.com/">VirtuaNES</a> - VirtuaNES is a multi-language, frequently updated emulator for MS Windows.</li> -<li><a href="http://nessie.321.cn/">Nessie</a> - Nessie is written in assembly for MS Windows</li> +<li><a href="http://nestopia.sourceforge.net/">Nestopia</a> - Nestopia has fairly accurate emulation, and is written for MS Windows.</li> </ul> - -<p>Other:</p> - -<ul> -<li><a href="http://festalon.sourceforge.net/">Festalon</a> - Festalon is an open-source, accurate NSF player.</li> -<li><a href="http://fudforum.org/">FUDforum</a> - FUDforum is an open-source forum software with many features.</li> -</ul> - </div> </div> Deleted: web/htdocs/releases.php =================================================================== --- web/htdocs/releases.php 2006-03-18 19:17:32 UTC (rev 2) +++ web/htdocs/releases.php 2006-03-18 19:48:07 UTC (rev 3) @@ -1,62 +0,0 @@ -<?php - $title = "Releases"; - include("header.php"); -?> - -<p> - <div class="mainbox"> - <h2 class="boxhead"> - Releases </h2> - <div class="boxbody"> - <p>Source code tarballs and binary(precompiled) releases are on this page. -</p> - </div> -</div> - - <br /> - <table border="0"> -<tr> -<td width="50%" valign="top"> -<table class="mainbox" cellpadding="5" cellspacing="0" border="1"> - <tr><th class="boxhead" colspan="2">"1.0 finale"</th></tr> - <tr><td colspan="2"><li />Currently, only the UN*X(Linux, FreeBSD), Mac OS X, and Win32 ports will compile -and run, mainly using SDL. -<li />Network play <u>is</u> functional as of 0.98.10. -<li />An alternate native Win32 + DirectX GUI'd target is available starting with version 0.98.6. -<li />Uses autotools(autoconf, automake). -<li />Dependencies: DirectX(Win32), SDL, OpenGL(optional, recommended), zlib -</td></tr> - <tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> - <tr><td><a href="fceu-0.98.12.src.tar.bz2">0.98.12</a></td><td>August 28, 2004</td></tr> - <tr><td><a href="fceu-0.98.11.src.tar.bz2">0.98.11</a></td><td>August 12, 2004</td></tr> - <tr><td><a href="fceu-0.98.10.src.tar.bz2">0.98.10</a></td><td>May 17, 2004</td></tr> - <tr><td colspan="2"><hr /></td></tr> - <tr><td><a href="fceu-0.98.2.src.tar.gz">0.98.2</a></td><td>March 9, 2004</td></tr> - <tr><th class="boxhead" colspan="2">"Classic"</th></tr> - <tr><td colspan="2"><li />The latest version is compilable on Linux(SVGAlib or SDL), - Mac OS X, BeOS, Win32, and DOS. -<li />Uses premade makefiles.</td></tr> - <tr><th class="boxhead">Version:</th><th class="boxhead">Date:</th></tr> - <tr><td><a href="fceu-0.97.5.src.tar.gz">0.97.5</td><td>November 12, 2003</td></tr> -</table> -</td> -<td width="50%" valign="top"> -<table width="100%" class="mainbox" cellpadding="5" cellspacing="0" border="1"> -<tr><th class="boxhead" colspan="2">Binary Releases</th></tr> -<tr><th class="boxhead" colspan="2">0.98.12</th></tr> -<tr><td>MS Windows</td><td><a href="fceu-0.98.12.win.zip">ZIP</td></tr> -<tr><td colspan="2" bgcolor="white"> </td></tr> -<tr><th class="boxhead" colspan="2">0.98.10</th></tr> -<tr><td>MS Windows</td><td><a href="fceu-0.98.10.win.zip">ZIP</td></tr> -<tr><td colspan="2" bgcolor="white"> </td></tr> -<tr><th class="boxhead" colspan="2">0.97.5</th></tr> -<tr><td>MS Windows</td><td><a href="fceu-0.97.5.win.zip">ZIP</td></tr> -<tr><td bgcolor="white" colspan="2"> </td></tr> -</table> -</td> -</tr> -</table> - -</p> - -<?php include("footer.php"); ?> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 19:17:39
|
Revision: 2 Author: thekingant Date: 2006-03-18 11:17:32 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=2&view=rev Log Message: ----------- Add back xodnizel's last news post. I must have accidentally left it off. Modified Paths: -------------- web/htdocs/index.php Modified: web/htdocs/index.php =================================================================== --- web/htdocs/index.php 2006-03-18 17:35:14 UTC (rev 1) +++ web/htdocs/index.php 2006-03-18 19:17:32 UTC (rev 2) @@ -34,6 +34,21 @@ +<h3 class="boxsubhead">29 October 2004</h3> +<p> +No new *official* releases of FCE Ultra will be made. I mean it this time. :b +</p> + +<p> +The forum has been closed, as I will not be available to moderate it any longer, but the old posts will be viewable indefinitely. +</p> + +<p> +Crazy people may download http://fceultra.sourceforge.net/fceu-0.98.13-pre.src.tar.bz2 which was intended to be 0.98.13. It should be stable, and fixed several major bugs present in 0.98.12, but I have neither the time nor desire to do thorough tests for regressions, and thus it will not be an official release. +</p> + + + <h3 class="boxsubhead">12 September 2004</h3> <p> All future binary release(s) of FCE Ultra will be compiled without the emulation This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
|
From: <the...@us...> - 2006-03-18 17:35:25
|
Revision: 1 Author: thekingant Date: 2006-03-18 09:35:14 -0800 (Sat, 18 Mar 2006) ViewCVS: http://svn.sourceforge.net/fceultra/?rev=1&view=rev Log Message: ----------- Add the initial FCE Ultra web pages. Added Paths: ----------- web/ web/htdocs/ web/htdocs/.htaccess web/htdocs/StyleSheets/ web/htdocs/StyleSheets/main.css web/htdocs/cheat.php web/htdocs/docs.php web/htdocs/faq.php web/htdocs/fceunetserver-0.0.3.tar.bz2 web/htdocs/index.php web/htdocs/links.php web/htdocs/releases.php web/htdocs/support.php web/htdocs-inc/ web/htdocs-inc/footer.php web/htdocs-inc/header.php Added: web/htdocs/.htaccess =================================================================== --- web/htdocs/.htaccess (rev 0) +++ web/htdocs/.htaccess 2006-03-18 17:35:14 UTC (rev 1) @@ -0,0 +1 @@ +php_value include_path "/home/groups/f/fc/fceultra/htdocs-inc:." Property changes on: web/htdocs/.htaccess ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: web/htdocs/StyleSheets/main.css =================================================================== --- web/htdocs/StyleSheets/main.css (rev 0) +++ web/htdocs/StyleSheets/main.css 2006-03-18 17:35:14 UTC (rev 1) @@ -0,0 +1,73 @@ +@media all { + + .center { + text-align: center; + } + + .navbox { + background: #e0e0e0; + border: 1px solid black; + color: #000000; + font-weight: bold; + padding-top: 0.3em; + padding-bottom: 0.3em; + padding-left: 1%; + padding-right: 1%; + text-align: center; + width: 98%; + } + + .navbox a { + white-space: nowrap; + } + + .naventry { + white-space: nowrap; + } + + .mainbox { + background: #e0e0e0; + border: 1px solid black; + color: #000000; + margin-top: 1.5em; + } + + .boxhead { + background: #444444; + color: #b0b4e4; + font-size: larger; + font-weight: bolder; + margin: 1px; + padding: 0.25em; + } + + .boxsubhead { + background: #444444; + color: #b0b4e4; + font-size: 100%; + font-weight: bolder; + padding: 0.25em; + } + + .boxbody { + margin: 1px; + padding: 0.25em; + } + + .sflogo { + border: none; + position: absolute; + right: 0px; + top: 0px; + } +} + +@media print { + .sflogo { + display: none; + } + + .boxhead { + border-bottom: 1px solid black; + } +} Property changes on: web/htdocs/StyleSheets/main.css ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: web/htdocs/cheat.php =================================================================== --- web/htdocs/cheat.php (rev 0) +++ web/htdocs/cheat.php 2006-03-18 17:35:14 UTC (rev 1) @@ -0,0 +1,313 @@ +<?php + $title = "Cheat Guide"; + include("header.php"); +?> + + <center><h1>FCE Ultra Cheat Guide</h1></center> + <center><i>Last updated November 12, 2003<br />Valid as of FCE Ultra 0.97.4</i></center> +<p> + <b>Table of Contents:</b> + <ul> + <li><a href="#intro">Introduction</a> + <ul> + <li><a href="#cheatfiles">Cheat Files</a> + </ul> + <li><a href="#windows">The Windows Interface</a> + <ul> + <li><a href="#windows-search">Cheat Search Interface</a> + </ul> + <li><ba href="#text">The Text Interface(TODO)</ba> + <li><a href="#examples">Examples</a> + <ul> + <li><a href="#examples-mm3">"Mega Man 3" Windows Example</a> + <li><a href="#examples-oh">"Over Horizon" Text Interface Example</a> + </ul> + <li><a href="#tips">Tips</a> +</ul> +<hr width="100%"> +<a name="tips"><h2>Introduction</h2></a> +<p> + 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). +</p> +<p> + 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). +</p> +<a name="cheatfiles"><h3>Cheat Files</h3></a> +<p> + 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): +</p> +<p> +<blockquote> + [S][C][:]Address(hex):Value(hex):[Compare value:]Description +</blockquote> + Example: + +<blockquote> 040e:05:Infinite super power.</blockquote> +</p> +<p> + 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. + </p> + +<hr width="100%"> +<a name="windows"><h2>The Windows Interface</h2></a> +<p> + 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). +</p> +<p> + 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. +</p> +<a name="windows-search"><h3>Cheat Search Interface</h2></a> +<p> + 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. +</p> +<p> + Each entry in the list is in the format of: + <blockquote>Address:Original Value:Current Value</blockquote> +</p> +<p> + 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. +</p> +<p> + 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. +</p> +<p> + The "Do Search" buttons performs a search based on the search parameters + and removes any non-matching addresses from the address list. +</p> +<p> + 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. +</p> +<p> + 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. +</p> +<p> + 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.): +<p> + "O==V1 && C==V2": +<blockquote> + Show the address if the original value is equal to "V1" AND + the current value is equal to "V2". +</blockquote> +</p> +<p> + "O==V1 && |O-C|==V2": +<blockquote> + 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". +</blockquote> +</p> +<p> + "|O-C|==V2": +<blockquote> + Show the address if the difference between the current value + and the original value is equal to "V2". +</blockquote> +</p> +<p> + "O!=C": +<blockquote> + Show the address if the original value does not equal the + current value. +</blockquote> +</p> +<p> + The following cheat methods/filters automatically perform the function + of the "Set Original to Current" button after "Do Search" is pressed. +</p> +<p> + "Value decreased." +<blockquote> + Show the address if the value has decreased. +</blockquote> +</p> +<p> + "Value increased." + <blockquote> + Show the address if the value has increased. + </blockquote> +</p> + +<hr width="100%"> +<a name="examples"><h2>Examples</h2></a> +<a name="examples-mm3"><h3>"Mega Man 3" Windows Example</h3></a> +<p> + 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". +</p> +<p> + 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. +</p> +<p> + 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. +</p> +<p> + 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. +</p> +<a name="examples-oh"><h3>"Over Horizon" Text Interface Example</h3></a> +<p> + This example will give you infinite lives in the NTSC(Japanese) version + of "Over Horizon". +</p> +<p> + 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). +</p> +<p> + Activate the cheat interface immediately after starting a new game. + Select the "New Cheats" menu and "Reset Search". +</p> +<p> + 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). +</p> +<p> + Now, "Show Results". When I did it, I received 11 results: +</p> +<pre> + 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 +</pre> +<p> + You really can't do much yet(unless you want to spend time doing trial + and error cheat additions). Return to the game. +</p> +<p> + After losing a life, go back to the cheat interface, to the "New Cheats" + menu, and "Show Results". Here are my results: +</p> +<pre> + 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 +</pre> +<p> + 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. +</p> +<p> + 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. +</p> +<p> + 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: +</p> +<pre> + Add cheat "Infinite lives" for address $07d5 with value 002?(Y/N)[N]: +</pre> +<p> + Answer "Y". You now have infinite lives. +</p> +<hr width="100%"> +<a name="tips"><h2>Tips</h2></a> +<p> + 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. +</p> +<p> + 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. +</p> + +<?php include("footer.php"); ?> Property changes on: web/htdocs/cheat.php ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: web/htdocs/docs.php =================================================================== --- web/htdocs/docs.php (rev 0) +++ web/htdocs/docs.php 2006-03-18 17:35:14 UTC (rev 1) @@ -0,0 +1,806 @@ +<?php + $title = "General Documentation"; + include("header.php"); +?> + + <body> + <center><h1>FCE Ultra General Documentation</h1></center> + <center><i>Last updated August 11, 2004<br />Valid as of FCE Ultra 0.98.11</i></center> + <p> + <b>Table of Contents:</b> + <ul> + <li /><a href="#intro">Introduction</a> + <ul> + <li/><a href="#intro-history">History of FCE Ultra</a> + </ul> + <li /><a href="#features">Core Features</a> + <ul> + <li /><a href="#features-cpu">CPU</a> + <li /><a href="#features-ppu">PPU</a> + <ul> + <li /><a href="#features-ppu-palettes">Palettes</a> + </ul> + <li /><a href="#features-sound">Sound</a> + <li /><a href="#features-input">Input</a> + <ul> + <li /><a href="#features-input-zapper">Zapper</a> + </ul> + <li /><a href="#features-expansion">File Formats/Expansion Hardware</a> + <ul> + <li /><a href="#features-expansion-ines">iNES Format</a> + <li /><a href="#features-expansion-unif">UNIF</a> + <li /><a href="#features-expansion-fds">Famicom Disk System</a> + <li /><a href="#features-expansion-genie">Game Genie</a> + <li /><a href="#features-expansion-vs">VS Unisystem</a> + </ul> + <li /><a href="#features-ips">Automatic IPS Patching</a> + </ul> + <li /><a href="#using">Using FCE Ultra</a> + <ul> + <li /><a href="#using-keys">Key Assignments</a> + <ul /> + <li /><a href="#using-keys-vs">VS Unisystem</a> + <li /><a href="#using-keys-fds">Famicom Disk System</a> + <li /><a href="#using-keys-barcode">Barcode Readers</a> + <li /><a href="#using-keys-gamepad">Game Pad</a> + <li /><a href="#using-keys-powerpad">Power Pad</a> + <li /><a href="#using-keys-fkb">Family Keyboard</a> + <li /><a href="#using-keys-hypershot">HyperShot Controller</a> + <li /><a href="#using-keys-mahjong">Mahjong Controller</a> + <li /><a href="#using-keys-quiz">Quiz King Controller</a> + </ul> + <li /><a href="#using-cli">Command line</a> + <li /><a href="#using-gui">GUI</a> + </ul> + <li /><a href="cheat.php">Cheat Guide</a> + <li /><a href="faq.php">FAQ</a> + <li /><a href="netplay.html">Network Play</a> + <li /><a href="#hacks">Game-specific Emulation Hacks</a> + <li /><a href="#credits">Credits</a> + </ul> + </p> + <hr width="100%"> + <a name="intro"><h2>Introduction</h2></a> + <p> + FCE Ultra is an NTSC and PAL Famicom/NES emulator for various + platforms. It is based upon Bero's original FCE source code. Current + features include good PPU, CPU, pAPU, expansion chip, and joystick + emulation. Also a feature unique to this emulator(at the current + time) is authentic Game Genie emulation. Save states and snapshot + features also have been implemented. + </p> + <p> + This document has been arranged to keep user interface details and emulation + details as separate as possible, though this has not been accomplished entirely. + </p> + <p> + In several places references are made to the "base directory". If you + are running a port on a UN*X-like system(Linux/*BSD/Mac OSX/SunOS/etc.), the + base directory is "~/.fceultra", or in other words, + "your home directory plus .fceultra". For all other ports(including DOS and +MS Windows), the base directory is the directory that the executable is in. + </p> + <a name="intro-history"><h3>History of FCE Ultra</h3></a> + <p> + <i>This section is a work-in-progress. Some details may be incorrect.</i><br/> + Bero originally wrote a NES emulator that was referred to as <a href="http://www.geocities.co.jp/Playtown/2004/fce.htm">FCE</a>. + This name was apparently meant only to serve as a temporary name, but its usage remained. Xodnizel originally ported it to + Linux SVGAlib, and made a few improvements. This code base was abandoned, + and work began anew, under DOS, with the original FCE source code. + At the end of November, 1998, FCE Ultra Beta 1 was released. + </p> + <p> + FCE Ultra remained DOS-only until version 0.18, when it was ported to Linux + SVGAlib, and released as a staticly-linked executable. The first MS Windows + port was released as version 0.25. + </p> + <p> + The source code of 0.40 was released on November 12, 2000. It retained + the simple license of FCE for a long time, which stated that " This software is freeware.you can use it non-commercially." + Almost two years later, in June 2002, 0.80 was released, and FCE Ultra was relicensed under the GNU GPL. + </p> + <hr width="100%"> + <a name="features"><h2>Core Features</h2></a> + <a name="features-cpu"><h3>CPU</h3></a> + <p> + All official instructions of the NES' CPU, the 2A03, which is compatible(mostly) + with the 6502, are emulated. "Unofficial" instructions are also emulated, + though probably not as accurately as the more well-defined official instructions. + </p> + <hr width="90%"> + <a name="features-ppu"><h3>PPU</h3></a> + <p> + <ul> + <li>8x8 and 8x16 sprites. + <li>Sprite hit emulation(including checking the bg color). + <li>8 sprite limit(and flag emulation). + <li>Screen/Sprite disabling, with correct color replacement. + <li>Color deemphasis(probably not 100% correct, more research is needed). + <li>Strip colorburst bit emulated. + <li>CPU-instruction granularity for special mid-scanline effects(mostly CHR switching, such as + used in "Pirates!", "Marble Madness", and "Mother"). + </ul> + </p> + <a name="features-ppu-palettes"><h4>Palettes</h4></a> + <p> + FCE Ultra has many palette features, including loading a custom palette + to replace the default NES palette. The palette from an NTSC NES can + also be generated on-the-fly. + </p> + <p> + First, a note on on the format of external palettes; Palette files are expected to contain 64 8-bit RGB triplets(each in + that order; red comes first in the triplet in the file, then green, + then blue). Each 8-bit value represents brightness for that particular + color. 0 is minimum, 255 is maximum. + </p> + <p> + Palettes can be set on a per-game basis. To do this, put a palette + file in the "gameinfo" directory with the same base filename + as the game you wish to associate with and add the extension "pal". + Examples: + <pre> + File name: Palette file name: + BigBad.nes BigBad.pal + BigBad.zip BigBad.pal + BigBad.Better.nes BigBad.Better.pal + </pre> + </p> + <p> + With so many ways to choose a palette, figuring out which one will + be active may be difficult. Here's a list of what palettes will + be used, in order from highest priority to least priority(if a + condition doesn't exist for a higher priority palette, the emulator + will continue down its list of palettes). + <ul> + <li />NSF Palette(for NSFs only) + <li />Palette loaded from the "gameinfo" directory. + <li />NTSC Color Emulation(only for NTSC NES games). + <li />VS Unisystem palette(if the game is a VS Unisystem game and a palette is available). + <li />Custom global palette. + <li />Default NES palette. + </ul> + </p> + <p> + <hr width="90%"> + <a name="features-sound"><h3>Sound</h3></a> + <p> + All 5 internal sound channels are supported(2x rectangle, triangle, noise, + and DMC/PCM). Sound channels are emulated with CPU instruction granularity. + There are two sound quality options. Low-quality sound, the default sound + quality option, generates sound data at 16x the playback rate and averages + those samples together to 1 sample. This method works fairly well and + is reasonably fast, but there is still some aliasing and sound distortion. + All sample rates between 8192Hz and 96000Hz are supported. + </p><p> + The high-quality sound emulation is much more CPU intensive, but the + quality is worth it, if your machine is fast enough. Sound data is + generated at the NES' CPU clock rate(about 1.8MHz for the NTSC NES), and + then resampled to the output sample rate. Custom-designed 483rd order + Parks-McClellan algorithm filter coefficients are used. Supported playback rates are + 44100Hz, 48000Hz, and 96000Hz. The following filter statistics apply + for NTSC emulation. + <p> + <table border> + <tr><th>Rate:</th><th>Passband Upper Bound(Hz):</th><th>Passband ripple(dB):</th><th>Transition bandwidth(Hz):</th><th>Stopband attenuation(dB):</th></tr> + <tr><td>44100</td><td>11982.5</td><td>0.20</td><td>10067.5</td><td>66.4</td></tr> + <tr><td>48000</td><td>13932.5</td><td>0.10</td><td>10067.5</td><td>60.0</td></tr> + <tr><td>96000</td><td>30000.0</td><td>0.01</td><td>18000.0</td><td>103.0</td></tr> + </table> + </p> + <p> + The "highest" sound quality mode is similar to the normal high-quality mode, + but the filters are of a higher order(1024 coefficients). Ripple is + reduced, the upper bound of the passband is higher, and the stopband + attenuation is slightly higher. The highest-quality mode filter coefficients + were created using "gmeteor". The parameters used to create these filters + can be found in the source code distribution. + </p> + <p> + Besides the 5 internal NES sound channels, FCE Ultra emulates the extra + sound capabilities of the Konami VRCVI, Konami VRCVII, Namco 106, Nintendo MMC5, and the Sunsoft FME-07 chips. The extra sound + channel in the Famicom Disk System is also emulated, but the support for + its FM capabilities is limited. + </p> + <hr width="90%"> + <a name="features-input"><h3>Input</h3></a> + <p> + FCE Ultra emulates the standard NES gamepad, the Four-Score multiplayer + adapter, the Zapper, the Power Pad, and the Arkanoid controller. The + Famicom version of the Arkanoid controller, the "Space Shadow" gun, the + Famicom 4-player adapter, the Family Keyboard, the HyperShot controller, the Mahjong controller, + the Oeka Kids tablet, the Quiz King buzzers, the Family Trainer, and the Barcode World barcode + reader are also emulated. + </p> + <a name="features-input-zapper"><h4>Zapper</h4></a> + <p> + Most Zapper NES games expect the Zapper to be plugged into port 2. + and most VS Unisystem games expect the Zapper to be plugged + into port 1. + </p><p> + The left mouse button is the emulated trigger button for the + Zapper. The right mouse button is also emulated as the trigger, + but as long as you have the right mouse button held down, no color + detection will take place, which is effectively like pulling the + trigger while the Zapper is pointed away from the television screen. + Note that you must hold the right button down for a short + time to have the desired effect. + </p> + <hr width="90%"> + <a name="features-expansion"><h3>File Formats/Expansion Hardware</h3></a> + <p> + FCE Ultra supports the iNES, FDS(raw and with a header), UNIF, and NSF file + formats. FDS ROM images in the iNES format are not supported; it would + be silly to do so and storing them in that format is nonsensical. + </p> + <p> + FCE Ultra supports loading ROM/disk images from some types of compressed files. + FCE Ultra can load data from both PKZIP-format files and + gzip-format files. Only the "deflate" algorithm is supported, but + this is the most widely used algorithm for these formats. + </p> + <p> + All files in a PKZIP format archive will be scanned for the + followings extensions: .nes, .fds, .nsf, .unf, .nez, .unif + The first archived file to have one of these extensions will be + loaded. If no archived file has one of these extensions, the + first archived file will be loaded. + </p> + <a name="features-expansion-ines"><h4>iNES Format</h4></a> + <p> + The battery-backed RAM, vertical/horizontal mirroring, four-screen + name table layout, and 8-bit mapper number capabilities of the iNES + format are supported. The 512-byte trainer capability is also supported, + but it is deprecated. Common header corruption conditions are cleaned(let's + go on a DiskDude hunt), though not all conditions can be automatically + detected and fixed. In addition, a few common header inaccuracies for + games are also corrected(detected by CRC32 value). Note that these + fixes are not written back to the storage medium. + </p> + <p> + Support for the recent VS System bit and "number of 8kB RAM banks" + is not implemented. Too many iNES headers are corrupt where this new data + is stored, causing problems for those games. + </p> + <p> + The following table lists iNES-format "mappers" supported well in FCE Ultra. + </p><p> + <table width="100%" border> + <tr><th>Number:</th><th>Description:</th><th>Game Examples:</th></tr> + <tr><td>0</td><td>No bankswitching</td><td>Donkey Kong, Mario Bros</td></tr> + <tr><td>1</td><td>Nintendo MMC1</td><td>MegaMan 2, Final Fantasy</td></tr> + <tr><td>2</td><td>Simple 16KB PROM Switch(UNROM)</td><td>MegaMan, Archon, 1944</td></tr> + <tr><td>3</td><td>Simple 8KB VROM Switch(CNROM)</td><td>Spy Hunter, Gradius</td></tr> + <tr><td>4</td><td>Nintendo MMC3</td><td>Super Mario Bros. 3, Recca, Final Fantasy 3</td></tr> + <tr><td>5</td><td>Nintendo MMC5</td><td>Castlevania 3, Just Breed, Bandit Kings of Ancient China</td></tr> + <tr><td>6</td><td>FFE F4 Series(hacked, bootleg)</td><td></td></tr> + <tr><td>7</td><td>AOROM</td><td>Battle Toads, Time Lord</td></tr> + <tr><td>8</td><td>FFE F3 Series(hacked, bootleg)</td><td></td></tr> + <tr><td>9</td><td>Nintendo MMC2</td><td>Punchout!</td></tr> + <tr><td>10</td><td>Nintendo MMC4</td><td>Fire Emblem, Fire Emblem Gaiden</td></tr> + <tr><td>11</td><td>Color Dreams</td><td>Crystal Mines, Bible Adventures</td></tr> + <tr><td>12</td><td>??</td><td>Dragon Ball Z 5 ("bootleg" original)</td></tr> + <tr><td>13</td><td>CPROM</td><td>Videomation</td></tr> + <tr><td>15</td><td>Multi-cart(bootleg)</td><td>100-in-1: Contra Function 16</td></tr> + <tr><td>16</td><td>Bandai ??</td><td>Dragon Ball Z, SD Gundam Gaiden **EEPROM NOT SUPPORTED</td></tr> + <tr><td>17</td><td>FFE F8 Series(hacked, bootleg)</td><td></td></tr> + <tr><td>18</td><td>Jaleco SS806</td><td>Pizza Pop, Plasma Ball</td></tr> + <tr><td>19</td><td>Namco 106</td><td>Splatter House, Mappy Kids</td></tr> + <tr><td>21</td><td>Konami VRC4 2A</td><td>WaiWai World 2, Ganbare Goemon Gaiden 2</td></tr> + <tr><td>22</td><td>Konami VRC4 1B</td><td>Twinbee 3</td></tr> + <tr><td>23</td><td>Konami VRC2B</td><td>WaiWai World, Crisis Force</td></tr> + <tr><td>24</td><td>Konami VRC6</td><td>Akumajou Densetsu</td></tr> + <tr><td>25<td>Konami VRC4</td><td>Gradius 2, Bio Miracle:Boku tte Upa</td></tr> + <tr><td>26</td><td>Konami VRC6 A0-A1 Swap</td><td>Esper Dream 2, Madara</td></tr> + <tr><td>32</td><td>IREM G-101</td><td>Image Fight 2, Perman</td></tr> + <tr><td>33</td><td>Taito TC0190/TC0350</td><td>Don Doko Don</td></tr> + <tr><td>34</td><td>NINA-001 and BNROM</td><td>Impossible Mission 2, Deadly Towers, Bug Honey</td></tr> + <tr><td>40</td><td>(bootleg)</td><td>Super Mario Bros. 2</td></tr> + <tr><td>41</td><td>Caltron 6-in-1</td><td>Caltron 6-in-1</td></tr> + <tr><td>42</td><td>(bootleg)</td><td>Mario Baby</td></tr> + <tr><td>44</td><td>Multi-cart(bootleg)</td><td>Super HiK 7 in 1</td></tr> + <tr><td>45</td><td>Multi-cart(bootleg)</td><td>Super 1000000 in 1</td></tr> + <tr><td>46</td><td>Game Station</td><td>Rumble Station</td></tr> + <tr><td>47</td><td>NES-QJ</td><td>Nintendo World Cup/Super Spike V-Ball</td></tr> + <tr><td>48</td><td>Taito TC190V</td><td>Flintstones</td></tr> + <tr><td>49</td><td>Multi-cart(bootleg)</td><td>Super HiK 4 in 1</td></tr> + <tr><td>50</td><td>(bootleg)</td><td>Super Mario Bros. 2</td></tr> + <tr><td>51</td><td>Multi-cart(bootleg)</td><td>11 in 1 Ball Games</td></tr> + <tr><td>52</td><td>Multi-cart(bootleg)</td><td>Mario Party 7 in 1</td></tr> + <tr><td>57</td><td>Multi-cart(bootleg)</td><td>Game Star GK-54</td></tr> + <tr><td>58</td><td>Multi-cart(bootleg)</td><td>68-in-1 Game Star HKX5268</td></tr> + <tr><td>60</td><td>Multi-cart(bootleg)</td><td>4 in 1(Reset-selected)</td></tr> + <tr><td>61</td><td>Multi-cart(bootleg)</td><td>20 in 1</td></tr> + <tr><td>62</td><td>Multi-cart(bootleg)</td><td>Super 700 in 1</td></tr> + <tr><td>64</td><td>Tengen RAMBO 1</td><td>Klax, Rolling Thunder, Skull and Crossbones</td></tr> + <tr><td>65</td><td>IREM H-3001</td><td>Daiku no Gensan 2</td></tr> + <tr><td>66</td><td>GNROM</td><td>SMB/Duck Hunt</td></tr> + <tr><td>67</td><td>Sunsoft ??</td><td>Fantasy Zone 2</td></tr> + <tr><td>68</td><td>Sunsoft ??</td><td>After Burner 2, Nantetta Baseball</td></tr> + <tr><td>69</td><td>Sunsoft FME-7</td><td>Batman: Return of the Joker, Hebereke</td> + <tr><td>70</td><td>??</td><td>Kamen Rider Club</td></tr> + <tr><td>71</td><td>Camerica</td><td>Fire Hawk, Linus Spacehead</td></tr> + <tr><td>72</td><td>Jaleco ??</td><td>Pinball Quest</td></tr> + <tr><td>73</td><td>Konami VRC3</td><td>Salamander</td></tr> + <tr><td>74</td><td>Taiwanese MMC3 CHR ROM w/ VRAM</td><td>Super Robot Wars 2</td></tr> + <tr><td>75</td><td>Jaleco SS8805/Konami VRC1</td><td>Tetsuwan Atom, King Kong 2</td></tr> + <tr><td>76</td><td>Namco 109</td><td>Megami Tensei</td></tr> + <tr><td>77</td><td>IREM ??</td><td>Napoleon Senki</td></tr> + <tr><td>78</td><td>Irem 74HC161/32</td><td>Holy Diver</td></tr> + <tr><td>79</td><td>NINA-06/NINA-03</td><td>F15 City War, Krazy Kreatures, Tiles of Fate</td></tr> + <tr><td>80</td><td>Taito X-005</td><td>Minelvation Saga</td></tr> + <tr><td>82</td><td>Taito ??</td><td>Kyuukyoku Harikiri Stadium - Heisei Gannen Ban</td><tr/> + <tr><td>85</td><td>Konami VRC7</td><td>Lagrange Point</td></tr> + <tr><td>86</td><td>Jaleco JF-13</td><td>More Pro Baseball</td></tr> + <tr><td>87</td><td>??</td><td>Argus</td></tr> + <tr><td>88</td><td>Namco 118</td><td>Dragon Spirit</td></tr> + <tr><td>89</td><td>Sunsoft ??</td><td>Mito Koumon</td></tr> + <tr><td>90</td><td>??</td><td>Super Mario World, Mortal Kombat 3, Tekken 2</td></tr> + <tr><td>91</td><td>??</td><td>Mari Street Fighter 3 Turbo</td></tr> + <tr><td>92</td><td>Jaleco ??</td><td>MOERO Pro Soccer</td></tr> + <tr><td>93</td><td>??</td><td>Fantasy Zone</td></tr> + <tr><td>94</td><td>??</td><td>Senjou no Ookami</td></tr> + <tr><td>95</td><td>Namco 118</td><td>Dragon Buster</td></tr> + <tr><td>96</td><td>Bandai ??</td><td>Oeka Kids</td></tr> + <tr><td>97</td><td>??</td><td>Kaiketsu Yanchamaru</td></tr> + <tr><td>99</td><td>VS System 8KB VROM Switch</td><td>VS SMB, VS Excite Bike</td></tr> + <tr><td>105</td><td>NES-EVENT</td><td>Nintendo World Championships</td></tr> + <tr><td>107</td><td>??</td><td>Magic Dragon</td></tr> + <tr><td>112</td><td>Asder</td><td>Sango Fighter, Hwang Di</td></tr> + <tr><td>113</td><td>MB-91</td><td>Deathbots</td></tr> + <tr><td>114</td><td>??</td><td>The Lion King</td></tr> + <tr><td>115</td><td>??</td><td>Yuu Yuu Hakusho Final</td></tr> + <tr><td>117</td><td>??</td><td>San Guo Zhi 4</td></tr> + <tr><td>118</td><td>MMC3-TLSROM/TKSROM Board</td><td>Ys 3, Goal! 2, NES Play Action Football</td></tr> + <tr><td>119</td><td>MMC3-TQROM Board</td><td>High Speed, Pin*Bot</td></tr> + <tr><td>140</td><td>Jaleco ??</td><td>Bio Senshi Dan</td></tr> + <tr><td>144</td><td>??</td><td>Death Race</td></tr> + <tr><td>151</td><td>Konami VS System Expansion</td><td>VS The Goonies, VS Gradius</td></tr> + <tr><td>152</td><td>??</td><td>Arkanoid 2, Saint Seiya Ougon Densetsu</td></tr> + <tr><td>153</td><td>Bandai ??</td><td>Famicom Jump 2</td></tr> + <tr><td>154</td><td>Namco ??</td><td>Devil Man</td></tr> + <tr><td>155</td><td>MMC1 w/o normal WRAM disable</td><td>The Money Game, Tatakae!! Rahmen Man</td></tr> + <tr><td>156</td><td>??</td><td>Buzz and Waldog</td></tr> + <tr><td>157</td><td>Bandai Datach ??</td><td>Datach DBZ, Datach SD Gundam Wars, **EEPROM NOT SUPPORTED</td></tr> + <tr><td>158</td><td nowrap>RAMBO 1 Derivative</td><td>Alien Syndrome</td></tr> + <tr><td>160</td><td>(same as mapper 90)</td><td>(same as mapper 90)</td></tr> + <tr><td>180</td><td>??</td><td>Crazy Climber</td></tr> + <tr><td>182</td><td>??</td><td>Super Donkey Kong</td></tr> + <tr><td>184</td><td>??</td><td>Wing of Madoola, The</td></tr> + <tr><td>189</td><td>??</td><td>Thunder Warrior, Street Fighter 2 (Yoko)</td></tr> + <tr><td>193</td><td>Mega Soft</td><td>Fighting Hero</td></tr> + <tr><td>200</td><td>Multi-cart(bootleg)</td><td>1200-in-1</td></tr> + <tr><td>201</td><td>Multi-cart(bootleg)</td><td>21-in-1</td></tr> + <tr><td>202</td><td>Multi-cart(bootleg)</td><td>150 in 1</td></tr> + <tr><td>203</td><td>Multi-cart(bootleg)</td><td>35 in 1</td></tr> + <tr><td>206</td><td>DEIROM</td><td>Karnov</td></tr> + <tr><td>207</td><td>Taito ??</td><td>Fudou Myouou Den</td></tr> + <tr><td>208</td><td>??</td><td>Street Fighter IV (by Gouder)</td></tr> + <tr><td>209</td><td>(mapper 90 w/ name-table control mode enabled)</td><td>Shin Samurai Spirits 2, Power Rangers III</td></tr> + <tr><td>210</td><td>Namco ??</td><td>Famista '92, Famista '93, Wagyan Land 2</td></tr> + <tr><td>225</td><td>Multi-cart(bootleg)</td><td>58-in-1/110-in-1/52 Games</td></tr> + <tr><td>226</td><td>Multi-cart(bootleg)</td><td>76-in-1</td></tr> + <tr><td>227</td><td>Multi-cart(bootleg)</td><td>1200-in-1</td></tr> + <tr><td>228</td><td>Action 52</td><td>Action 52, Cheetahmen 2</td></tr> + <tr><td>229</td><td>Multi-cart(bootleg)</td><td>31-in-1</td></tr> + <tr><td>230</td><td>Multi-cart(bootleg)</td><td>22 Games</td></tr> + <tr><td>231</td><td>Multi-cart(bootleg)</td><td>20-in-1</td></tr> + <tr><td>232</td><td>BIC-48</td><td>Quattro Arcade, Quattro Sports</td></tr> + <tr><td>234</td><td>Multi-cart ??</td><td>Maxi-15</td></tr> + <tr><td>235</td><td>Multi-cart(bootleg)</td><td>Golden Game 150 in 1</td></tr> + <tr><td>240</td><td>??</td><td>Gen Ke Le Zhuan, Shen Huo Le Zhuan</td></tr> + <tr><td>242</td><td>??</td><td>Wai Xing Zhan Shi</td></tr> + <tr><td>244</td><td>??</td><td>Decathalon</td></tr> + <tr><td>246</td><td>??</td><td>Fong Shen Ban</td></tr> + <tr><td>248</td><td>??</td><td>Bao Qing Tian</td></tr> + <tr><td>249</td><td>Waixing ??</td><td>??</td></tr> + <tr><td>250</td><td>??</td><td>Time Diver Avenger</td></tr> + <tr><td>255</td><td>Multi-cart(bootleg)</td><td>115 in 1</td></tr> + </table> + </p> + <p> + <a name="features-expansion-unif"><h4>UNIF</h4></a> + </p> + <p> + FCE Ultra supports the following UNIF boards. The prefixes HVC-, NES-, BTL-, and BMC- are omitted, since they are currently ignored in FCE Ultra's UNIF loader. + </p> + <p> + <table border width="100%"> + <tr><th colspan="2">Group:</th></tr> + <tr><th>Name:</th><th>Game Examples:</th></tr> + <tr><th colspan="2">Bootleg:</th></tr> + <tr><td>MARIO1-MALEE2</td><td>Super Mario Bros. Malee 2</td></tr> + <tr><td>NovelDiamond9999999in1</td><td>Novel Diamond 999999 in 1</td></tr> + <tr><td>Super24in1SC03</td><td>Super 24 in 1</td></tr> + <tr><td>Supervision16in1</td><td>Supervision 16-in-1</td></tr> + <tr><th colspan="2">Unlicensed:</th></tr> + <tr><td>Sachen-8259A</td><td>Super Cartridge Version 1</td></tr> + <tr><td>Sachen-8259B</td><td>Silver Eagle</td></tr> + <tr><td>Sachen-74LS374N</td><td>Auto Upturn</td></tr> + <tr><td>SA-016-1M</td><td>Master Chu and the Drunkard Hu</td></tr> + <tr><td>SA-72007</td><td>Sidewinder</td></tr> + <tr><td>SA-72008</td><td>Jovial Race</td></tr> + <tr><td>SA-0036</td><td>Mahjong 16</td></tr> + <tr><td>SA-0037</td><td>Mahjong Trap</td></tr> + <tr><td>TC-U01-1.5M</td><td>Challenge of the Dragon</td></tr> + <tr><td>8237</td><td>Pocahontas Part 2</td></tr> + <tr><th colspan="2">MMC1:</th></tr> + <tr><td>SAROM</td><td>Dragon Warrior</td></tr> + <tr><td>SBROM</td><td>Dance Aerobics</td></tr> + <tr><td>SCROM</td><td>Orb 3D</td></tr> + <tr><td>SEROM</td><td>Boulderdash</td></tr> + <tr><td>SGROM</td><td>Defender of the Crown</td></tr> + <tr><td>SKROM</td><td>Dungeon Magic</td></tr> + <tr><td>SLROM</td><td>Castlevania 2</td></tr> + <tr><td>SL1ROM</td><td>Sky Shark</td></tr> + <tr><td>SNROM</td><td>Shingen the Ruler</td></tr> + <tr><td>SOROM</td><td>Nobunaga's Ambition</td></tr> + <tr><th colspan="2">MMC3:</th></tr> + <tr><td>TFROM</td><td>Legacy of the Wizard</td></tr> + <tr><td>TGROM</td><td>Megaman 4</td></tr> + <tr><td>TKROM</td><td>Kirby's Adventure</td></tr> + <tr><td>TKSROM</td><td>Ys 3</td></tr> + <tr><td>TLROM</td><td>Super Spike V'Ball</td></tr> + <tr><td>TLSROM</td><td>Goal! 2</td></tr> + <tr><td>TR1ROM</td><td>Gauntlet</td></tr> + <tr><td>TQROM</td><td>Pinbot</td></tr> + <tr><td>TSROM</td><td>Super Mario Bros. 3</td></tr> + <tr><td>TVROM</td><td>Rad Racer 2</td></tr> + <tr><th colspan="2">MMC5:</th></tr> + <tr><td>EKROM</td><td>Gemfire</td></tr> + <tr><td>ELROM</td><td>Castlevania 3</td></tr> + <tr><td>ETROM</td><td>Nobunaga's Ambition 2</td></tr> + <tr><td>EWROM</td><td>Romance of the Three Kingdoms 2</td></tr> + <tr><th colspan="2">MMC6:</th></tr> + <tr><td>HKROM</td><td>Star Tropics</td></tr> + <tr><th colspan="2">Nintendo Discrete Logic:</th></tr> + <tr><td>CNROM</td><td>Gotcha</td></tr> + <tr><td>CPROM</td><td>Videomation</td></tr> + <tr><td>GNROM</td><td>Super Mario Bros./Duck Hunt</td></tr> + <tr><td>MHROM</td><td></td></tr> + <tr><td>NROM-128</td><td>Mario Bros.</td></tr> + <tr><td>NROM-256</td><td>Super Mario Bros.</td></tr> + <tr><td>RROM-128</td><td></td></tr> + <tr><td>UNROM</td><td>Megaman</td></tr> + </table> + </p> + <a name="features-expansion-fds"><h4>Famicom Disk System</h4></a> + <p> + You will need the FDS BIOS ROM image in the base FCE Ultra directory. + It must be named "disksys.rom". FCE Ultra will not load FDS games + without this file. + </p> + Two types of FDS disk images are supported: disk images with the + FWNES-style header, and disk images with no header. The number + of sides on headerless disk images is calculated by the total file + size, so don't put extraneous data at the end of the file. + <p> + If a loaded disk image is written to during emulation, FCE Ultra will store the modified + disk image in the save games directory, which is by default "sav" under the base + directory. + </p> + <a name="features-expansion-genie"><h4>Game Genie</h4></a> + <p> + The Game Genie ROM image is loaded from the file "gg.rom" in the + base directory the first time Game Genie emulation is enabled and + a ROM image is loaded since the time FCE Ultra has run. +</p><p> + The ROM image may either be the 24592 byte iNES-format image, or + the 4352 byte raw ROM image. +</p><p> + Remember that enabling/disabling Game Genie emulation will not take + effect until a new game is loaded(this statement shouldn't concern + any of the "run once" command-line driven builds). + </p> + <a name="features-expansion-vs"><h4>VS Unisystem</h4></a> + <p> +FCE Ultra currently only supports VS Unisystem ROM images in the +iNES format. DIP switches and coin insertion are both emulated. +The following games are supported, and have palettes provided(though not +necessarily 100% accurate or complete): + <ul> + <li />Battle City + <li />Castlevania + <li />Clu Clu Land + <li />Dr. Mario + <li />Duck Hunt + <li />Excitebike + <li />Excitebike (Japanese) + <li />Freedom Force + <li />Goonies, The + <li />Gradius + <li />Gumshoe + <li />Hogan's Alley + <li />Ice Climber + <li />Ladies Golf + <li />Mach Rider + <li />Mach Rider (Japanese) + <li />Mighty Bomb Jack (Japanese) + <li />Ninja Jajamaru Kun (Japanese) + <li />Pinball + <li />Pinball (Japanese) + <li />Platoon + <li />RBI Baseball + <li />Slalom + <li />Soccer + <li />Star Luster + <li />Stroke and Match Golf + <li />Stroke and Match Golf - Ladies + <li />Stroke and Match Golf (Japanese) + <li />Super Mario Bros. + <li />Super Sky Kid + <li />Super Xevious + <li />Tetris + <li />TKO Boxing + <li />Top Gun + </ul> + </p> + <a name="features-ips"><h3>Automatic IPS Patching</h3></a> + <p> + Place the IPS file in the same directory as the file to load, + and name it filename.ips. +</p> + <pre> + Examples: Boat.nes - Boat.nes.ips + Boat.zip - Boat.zip.ips + Boat.nes.gz - Boat.nes.gz.ips + Boat - Boat.ips + </pre> + <p> + Some operating systems and environments will hide file extensions. + Keep this in mind if you are having trouble. + </p> + <p> + Patching is supported for all supported formats(iNES, FDS, UNIF, and + NSF), but it will probably only be useful for the iNES and FDS formats. + UNIF files can't be patched well with the IPS format because they are chunk-based + with no fixed offsets. + </p> + <hr width="100%"> + <a name="using"><h2>Using FCE Ultra</h2></a> + <p> + + </p> + <a name="using-keys"><h3>Key Assignments</h3></a> + <p> + <table border> + <tr><th>Key(s):</th><th>Action:</th></tr> + <tr><td>F5</td><td>Save state.</td></tr> + <tr><td>F7</td><td>Load state.</td></tr> + <tr><td>0-9</td><td>Select save state slot.</td></tr> + <tr><td>Shift + F5</td><td>Record movie.</td></tr> + <tr><td>Shift + F7</td><td>Play movie.</td></tr> + <tr><td>Shift + 0-9</td><td>Select movie slot.</td></tr> + <tr><td>F9</td><td>Save screen snapshot.</td></tr> + <tr><td>F4</td><td>Hide sprites(toggle).</td></tr> + <tr><td>Shift + F4</td><td>Hide background data with overscan color(toggle).</td></tr> + <tr><td>Alt + Enter</td><td>Toggle fullscreen mode.</td></tr> + <tr><td>~</td><td>Temporarily disable speed throttling.</td></tr> + <tr><td>F10</td><td>Reset.</td></tr> + <tr><td>F11</td><td>Hard reset(toggle power switch).</td></tr> + <tr><td>F12</td><td>Exit.</td></tr> + </table> + </p> + <a name="using-keys-vs"><h4>VS Unisystem</h4></a> + <p> + <table border> + <tr><th>Key:</th><th>Action:</th></tr> + <tr><td>F8</td><td>Insert coin.</td></tr> + <tr><td>F6</td><td>Show/Hide dip switches.</td></tr> + <tr><td>1-8</td><td>Toggle dip switches(when dip switches are shown).</td></tr> + </table> + </p> + <a name="using-keys-fds"><h4>Famicom Disk System</h4></a> + <p> + <table border> + <tr><th>Key:</th><th>Action:</th></tr> + <tr><td>F6</td><td>Select disk and disk side.</td></tr> + <tr><td>F8</td><td>Eject or Insert disk.</td></tr> + </table> + </p> + <a name="using-keys-barcode"><h4>Barcode Readers</h4></a> + <p> + <table border> + <tr><th>Key:</th><th>Action:</th></tr> + <tr><td>0-9</td><td>Barcode digits(after activating barcode input).</td></tr> + <tr><td>F8</td><td>Activate barcode input/scan barcode.</td></tr> + </table> + </p> + <a name="using-keys-gamepad"><h4>Game Pad</h4></a> +<p> +<table border> +<tr><td colspan="2"> + These default Game Pad key assignments do not apply to the Win32-native port. + See the table below this for the Win32-native port's default game pad mappings. + </td></tr> + <tr><th>Key:</th><th nowrap>Button on Emulated Gamepad:</th></tr> + <tr><td>Keypad 2</td><td>B</td></tr> + <tr><td>Keypad 3</td><td>A</td></tr> + <tr><td>Enter/Return</td><td>Start</td></tr> + <tr><td>Tab</td><td>Select</td></tr> + <tr><td>Z</td><td>Down</td></tr> + <tr><td>W</td><td>Up</td></tr> + <tr><td>A</td><td>Left</td></tr> + <tr><td>S</td><td>Right</td></tr> + </table> + </p> + <p> + <table border> + <tr><th colspan="2">Win32-native Port</th></tr> + <tr><th>Key:</th><th nowrap>Button on Emulated Gamepad:</th></tr> + <tr><td>Left Control</td><td>B</td></tr> + <tr><td>Left Alt</td><td>A</td></tr> + <tr><td>Enter/Return</td><td>Start</td></tr> + <tr><td>Tab</td><td>Select</td></tr> + <tr><td>Cursor Down</td><td>Down</td></tr> + <tr><td>Cursor Up</td><td>Up</td></tr> + <tr><td>Cursor Left</td><td>Left</td></tr> + <tr><td>Cursor Right</td><td>Right</td></tr> + </table> + </p> + <a name="using-keys-powerpad"><h4>Power Pad</h4></a> + <p> + <table border> + <tr><th colspan="4">Side B</th></tr> + <tr><td width="25%">O</td><td width="25%">P</td> + <td width="25%">[</td><td width="25%">]</td></tr> + <tr><td>K</td><td>L</td><td>;</td><td>'</td></tr> + <tr><td>M</td><td>,</td><td>.</td><td>/</td></tr> + </table> + <br /> + <table border> + <tr><th colspan="4">Side A</th></tr> + <tr><td width="25%"></td><td width="25%">P</td> + <td width="25%">[</td><td width="25%"></td></tr> + <tr><td>K</td><td>L</td><td>;</td><td>'</td></tr> + <tr><td></td><td>,</td><td>.</td><td></td></tr> + </table> + </p> + <a name="using-keys-fkb"><h4>Family Keyboard</h4></a> + <p> + All emulated keys are mapped to the closest open key on the PC + keyboard, with a few exceptions. The emulated "@" key is + mapped to the "`"(grave) key, and the emulated "kana" key + is mapped to the "Insert" key(in the 3x2 key block above the + cursor keys). + </p> + <p> + To enable or disable Family Keyboard input, press the "Scroll Lock" key. + When Family Keyboard input is enabled, FCE Ultra will also attempt + to prevent any key presses from being passed to the GUI or system. + </p> + <a name="using-keys-hypershot"><h4>HyperShot Controller</h4></a> + <p> + <table border> + <tr><td></td><th>Run</th><th>Jump</th></tr> + <tr><th>Controller I</th><td>Q</td><td>W</td></tr> + <tr><th>Controller II</th><td>E</td><td>R</td></tr> + </table> + </p> + + <a name="using-keys-mahjong"><h4>Mahjong Controller</h4></a> + <p> + <table border> + <tr><th>Emulated Mahjong Controller:</th><td>A</td><td>B</td><td>C</td><td>D</td><td>E</td><td>F</td><td>G</td><td>H</td><td>I</td><td>J</td><td>K</td><td>L</td><td>M</td><td>N</td></tr> + <tr><th>PC Keyboard:</th><td>Q</td><td>W</td><td>E</td><td>R</td><td>T</td><td>A</td><td>S</td><td>D</td><td>F</td><td>G</td><td>H</td><td>J</td><td>K</td><td>L</td></tr> + </table> + <br /> + <table border> + <tr><th>Emulated Mahjong Controller:</th><td>SEL</td><td>ST</td><td>?</td><td>?</td><td>?</td><td>?</td><td>?</td></tr> + <tr><th>PC Keyboard:</th><td>Z</td><td>X</td><td>C</td><td>V</td><td>B</td><td>N</td><td>M</td> + </table> + </p> + <a name="using-keys-quiz"><h4>Quiz King Controller</h4></a> + <p> + <table border> + <tr><th>Emulated Buzzer:</th><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr> + <tr><th>PC Keyboard:</th><td>Q</td><td>W</td><td>E</td><td>R</td><td>T</td><td>Y</td></tr> + </table> + </p> + <a name="using-cli"><h3>Command-line</h3></a> + <p> + FCE Ultra supports arguments passed on the command line. Arguments + are taken in the form of "-parameter value". Some arguments are valueless. + Arguments that have both a parameter and a value will be saved in the + configuration file, with the exception being the network-play arguments. + <b>Please note that most of these arguments are currently not recognized on the Win32-native port.</b> + </p> + <p> + <table border> + <tr><th>Argument:</th><th>Value Type:</th><th>Default value:</th><th>Description:</th></tr> + <tr><td>-cpalette x</td><td>string</td><td>0</td><td>Load a custom global palette from file "x". Specifying "0" will cause FCE Ultra to stop using the custom global palette.</td></tr> + <tr><td>-ntsccol x</td><td>boolean</td><td>0</td><td>If value is true, enable automatic generation and use of an NTSC NES' colors.</td></tr> + <tr><td>-pal x</td><td>boolean</td><td>0</td><td>If value is true, emulate a PAL NES. Otherwise emulate an NTSC NES.</td></tr> + <tr><td>-sound x</td><td>boolean</td><td>1</td><td>If value is true, enable sound emulation and output.</td></tr> + <tr><td>-soundrate x</td><td>integer</td><td>48000</td><td>Specifies the sound playback rate, in frames per second("Hz").</td></tr> + <tr><td>-soundvol x</td><td>integer</td><td>100</td><td>Sound volume.</td></tr> + <tr><td>-soundq x</td><td>boolean</td><td>0</td><td>If value is true, enable high-quality sound emulation.</td></tr> + <tr><td>-soundbufsize x</td><td>integer</td><td>24(52 for Win32)</td><td>Specifies the desired size of the sound buffer, in milliseconds.</td></tr> + <tr><td>-inputcfg x</td><td>string</td><td></td><td>Configure mapping of physical device inputs to a virtual device. Valid values are "gamepad1", "gamepad2", "gamepad3", "gamepad4", "powerpad1", "powerpad2".</td></tr> + <tr><td>-input1 x <br /><i>and</i><br />-input2 x</td><td>string</td><td>gamepad</td><td>Select input device for input port 1 or 2. Valid strings are "none", "gamepad", "zapper", "powerpada", and "powerpadb".</td></tr> + <tr><td>-fcexp x</td><td>string</td><td>none</td><td>Select Famicom expansion port device. Valid strings are "none", "shadow", "arkanoid", "4player", and "fkb".</td></tr> + <tr><td>-nofs x</td><td>boolean</td><td>0</td><td>If value is true, disable four-score emulation.</td></tr> + <tr><td>-gg x</td><td>boolean</td><td>0</td><td>Enable Game Genie emulation.</td></tr> + <tr><td nowrap>-snapname x</td><td>boolean</td><td>0</td><td>If value is true, use an alternate naming scheme(file base and numeric) for screen snapshots.</td></tr> + <tr><td>-frameskip x</td><td>integer</td><td>0</td><td>Specifies the number of frames to skip(emulation and drawing) for each frame emulated and drawn. The frameskipping code will not work properly with light-gun games, and it may break other games as well, so use it with this knowledge in mind!</td></tr> + <tr><td nowrap>-nothrottle x</td><td>boolean</td><td>0</td><td>If value is true, disable the speed throttling that is used when sound emulation is disabled.</td></tr> + <tr><td>-clipsides x</td><td>boolean</td><td>0</td><td>If value is true, clip leftmost and rightmost 8 columns of pixels of the video output.</td></tr> + <tr><td>-slstart x</td><td>integer</td><td>8</td> + <td>First scanline to be rendered in NTSC emulation mode(when PAL emulation is disabled).</td></tr> + <tr><td>-slend x</td><td>integer</td><td>231</td> + <td>Last scanline to be rendered in NTSC emulation mode.</td></tr> + <tr><td nowrap>-slstartp x</td><td>integer</td><td>0</td> + <td>First scanline to be rendered in PAL emulation mode.</td></tr> + <tr><td>-slendp x</td><td>integer</td><td>239</td> + <td>Last scanline to be rendered in PAL emulation mode.</td></tr> + <tr><th>Argument:</th><th>Value Type:</th><th>Default value:</th><th>Description:</th></tr> + <tr><td>-opengl x</td><td>boolean</td><td>1</td><td>Enable OpenGL support(if the support has been compiled in).</td></tr> + <tr><td>-openglip x</td><td>boolean</td><td>1</td><td>Use bilinear interpolation when using OpenGL.</td></tr> + <tr><td>-special(-specialfs) x</td><td>integer</td><td>0(0)</td><td>Use special video scaling filters. +<ul> +<li />1 = hq2x +<li />2 = Scale2x +<li />3 = hq3x +<li />4 = Scale3x +</ul> +</td></tr> + <tr><td>-stretchx/-stretchy x</td><td>boolean</td><td>1/0</td><td>Stretch to fill surface on x or y axis(fullscreen, only with OpenGL).</td></tr> + <tr><td>-doublebuf x</td><td>boolean</td><td>0</td><td>Request double buffering(note that double buffering or sync-to-vblank may be forcibly enabled by your video drivers).</td></tr> + <tr><td>-xscale(-xscalefs)/<br/>-yscale(-yscalefs)</td><td>real</td><td>2.50(2)/2(2)</td><td>Specify the scaling factor for each axis. Factors will be truncated to integers when not using OpenGL.</td></tr> + <tr><td>-xres x/-yres y</td><td>integer</td><td>640/480</td><td>Set the desired horizontal/vertical resolution when in fullscreen mode.</td></tr> + <tr><td>-efx(fs) x</td><td>integer</td><td>0</td><td>Specify simple special effects, represented by logically ORing constants. 1=scanlines, 2=TV Blur</td></tr> + <tr><td>-fs</td><td>boolean</td><td>0</td><td>Full screen mode.</td></tr> + </table> + </p> + <hr width="100%"> + <a name="hacks"><h2>Game-specific Emulation Hacks</h2></a> + <p> + <table border width="100%"> + <tr><th>Title:</th><th>Description:</th><th>Source code files affected:</th></tr> + <tr><td>KickMaster</td> + <td>KickMaster relies on the low-level behavior of the MMC3(PPU A12 low->high transition) + to work properly in certain parts. If an IRQ begins at the "normal" time on the + last visible scanline(239), the game will crash after beating the second boss and retrieving + the item. The hack is simple, to clock the IRQ counter twice on scanline 238. + </td> + <td>mbshare/mmc3.c</td></tr> + <tr><td>Star Wars (PAL/European Version)</td> + <td>This game probably has the same(or similar) problem on FCE Ultra as KickMaster. The + hack is to clock the IRQ counter twice on the "dummy" scanline(scanline before the first + visible scanline).</td><td>mbshare/mmc3.c</td></tr> + </table> + </p> + <hr width="100%"> + <a name="credits"><h2>Credits</h2></a> + <p> + <table border width="100%"> + <tr><th>Name:</th><th>Contribution(s):</th></tr> + <tr><td>\Firebug\</td><td>High-level mapper information.</td></tr> + <tr><td>Andrea Mazzoleni</td><td>Scale2x/Scale3x scalers included in FCE Ultra.</td></tr> + <tr><td>Bero</td><td>Original FCE source code.</td></tr> + <tr><td>Brad Taylor</td><td>NES sound information.</td></tr> + <tr><td>EFX</td><td>DC PasoFami NES packs, testing.</td></tr> + <tr><td>Fredrik Olson</td><td>NES four-player adapter information.</td></tr> + <tr><td>Gilles Vollant</td><td>PKZIP file loading functions.</td></tr> + <tr><td>goroh</td><td>Various documents.</td></tr> + <tr><td>Info-ZIP</td><td><a href="http://www.gzip.org/zlib/">ZLIB</a></td></tr> + <tr><td>Jeremy Chadwick</td><td>General NES information.</td></tr> + <tr><td>Justin Smith</td><td>Good stuff.</td></tr> + <tr><td>kevtris</td><td>Low-level NES information and sound information.</td></tr> + <tr><td>Ki</td><td>Various technical information.</td></tr> + <tr><td>Mark Knibbs</td><td>Various NES information.</td></tr> + <tr><td>Marat Fayzullin</td><td>General NES information.</td></tr> + <tr><td>Matthew Conte</td><td>Sound information.</td></tr> + <tr><td>Maxim Stepin</td><td>hq2x and hq3x scalers included in FCE Ultra.</td></tr> + <tr><td>MindRape</td><td>DC PasoFami NES packs.</td></tr> + <tr><Td>Mitsutaka</td><td>YM2413 emulator.</td></tr> + <tr><td>nori</td><td>FDS sound information.</td></tr> + <tr><td>Quietust</td><td>VRC7 sound translation code by The Quietust (quietust at ircN dort org).</td></tr> + <tr><td>rahga</td><td>Famicom four-player adapter information.</td></tr> + <tr><td>Sean Whalen</td><td>Node 99</td></tr> + <tr><td>TheRedEye</td><td>ROM images, testing.</td></tr> + <tr><td>TyphoonZ</td><td>Archaic Ruins.</td></tr> + <tr><th colspan="2" align="right">...and everyone whose name my mind has misplaced.</th></tr> + </table> + </p> + +<?php include("footer.php"); ?> Property changes on: web/htdocs/docs.php ___________________________________________________________________ Name: svn:mime-type + text/plain Name: svn:eol-style + native Added: web/htdocs/faq.php =================================================================== --- web/htdocs/faq.php (rev 0) +++ web/htdocs/faq.php 2006-03-18 17:35:14 UTC (rev 1) @@ -0,0 +1,111 @@ +<?php + $title = "FAQ"; + include("header.php"); +?> + + <center><h1>FCE Ultra FAQ</h1></center> + <center><i>Last updated August 11, 2004<br />Valid as of FCE Ultra 0.98.11</i></center> +<p> + <b>Table of Contents:</b> + <ul> + <li><a href="#general">General</a> + <ul> + <li><a href="#general-slow">Why is FCE Ultra so slow?</a> + </ul> + <li><a href="#emu">Emulation</a> + <ul> + <li><a href="#emu-soundpop">Why do some games make a popping sound(Rad Racer 2, Final Fantasy 3)?</a> + <li><a href="#emu-badnsf">Why don't some NSF rips work correctly on FCE Ultra</a> + <li><a href="#emu-gamenowork">Why don't some games work correctly on FCE Ultra?</a> + <li><a href="#emu-smb">Why does Super Mario Bros. start off on level 0?</a> + <li><a href="#emu-hack">Why does my hack/translation not work correctly?</a> + </ul> +</ul> +<hr width="100%"> +<a name="general"><h2>General</h2></a> +<a name="general-slow"><b>Why is FCE Ultra so slow?</b></a> +<blockquote> +FCE Ultra is much slower than emulators like LoopyNES +and NESA. These emulators are written in assembly, which gives them a definite advantage +over FCE Ultra, which is written in C. FCE Ultra is also more accurate that these emulators, +and some accuracy can only be achieved by taking more CPU time. +<p />FCE Ultra <u>could</u> be faster than what it is now. However, this is not a high priority. +FCE Ultra should run full speed, with sound disabled, on a Pentium 2 300MHz machine, or +an "equivalent" processor. I have run *older* versions on Pentium MMX 200MHz machines. +Recent versions of gcc produce executables that seem to perform poorly on AMD Athlon processors, so it may be beneficial +to download the source code and compile a version of FCE Ultra with CPU-specific +optimization flags. +<p />FCE Ultra will perform fastest on older systems(or systems with limited video acceleration) when using an 8BPP video mode. 16BPP video modes come next in terms of speed, followed by 32BPP, and lastly 24BPP. Avoid 24BPP video modes if ... [truncated message content] |