Added '-cp' developer commandline argument, to set the 'Controller.SwapPaddles'

property (Yes or No).

Changed the static initialization of Scaler related items to use const char*
instead of string, since the WinCE port has trouble with that.

Updated 'scale_ui' and 'scale_tia' to use lowercase options.  So those
settings will be reset with this commit.

Added all recently added options to Settings::usage().

Huge update to the user manual.  Things are getting very close now :)


git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1207 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
stephena 2006-12-13 00:05:46 +00:00
parent abcf56bd05
commit 7cb5858c6e
15 changed files with 269 additions and 181 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

After

Width:  |  Height:  |  Size: 5.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 7.5 KiB

View File

@ -30,6 +30,7 @@
<li><a href="#Debugger">Integrated Debugger</a></li> <li><a href="#Debugger">Integrated Debugger</a></li>
<li><a href="#Properties">Game Properties</a></li> <li><a href="#Properties">Game Properties</a></li>
<li><a href="#Adaptor">Stelladaptor Support</a></li> <li><a href="#Adaptor">Stelladaptor Support</a></li>
<li><a href="#Palette">Palette Support</a></li>
<li><a href="#Acknowledgments">Acknowledgments</a></li> <li><a href="#Acknowledgments">Acknowledgments</a></li>
<li><a href="#License">License and Disclaimer</a></li> <li><a href="#License">License and Disclaimer</a></li>
</ol> </ol>
@ -218,6 +219,10 @@
<h2><b>New in Release 2.3</b></h2> <h2><b>New in Release 2.3</b></h2>
<ul> <ul>
<li>Potentially huge speedups in software rendering mode, both in emulation
and UI modes. Deactivating 'dirty rects' uses these new modes, which
can be 2-3 times faster for many configurations.</li>
<li>For UI navigation, changed from using 'joymouse' to the more familiar <li>For UI navigation, changed from using 'joymouse' to the more familiar
'tabbing' functionality, where you move from object to object by use of 'tabbing' functionality, where you move from object to object by use of
some tab key. As a result, completely removed the 'joymouse' commandline some tab key. As a result, completely removed the 'joymouse' commandline
@ -226,12 +231,6 @@ argument and all associated functionality.</li>
<li>Added event remapping for UI events, separate from events while in emulation <li>Added event remapping for UI events, separate from events while in emulation
mode.</li> mode.</li>
<li>Changed naming of snapshots and state files. These files are now
named based on the names given in the properties database, and no longer
use the 'md5sum' name. As a result, state files from previous versions
will no longer work unless they're manually renamed. Related to this,
removed the '-ssname' commandline argument.</li>
<li>Added support for PAL60 ROMs, which use the PAL palette and resolution <li>Added support for PAL60 ROMs, which use the PAL palette and resolution
but run at NTSC timing (60Hz). Added ROM property for this, and updated but run at NTSC timing (60Hz). Added ROM property for this, and updated
the internal properties database for many PAL60 ROMs.</li> the internal properties database for many PAL60 ROMs.</li>
@ -242,26 +241,32 @@ is supported, but in the future we may have them specified per-ROM.</li>
<li>Fixed bug in PAL colour-loss emulation, which wasn't actually being done <li>Fixed bug in PAL colour-loss emulation, which wasn't actually being done
for the original Stella and z26 palettes.</li> for the original Stella and z26 palettes.</li>
<li>Fixed bug where 'Snapshot saved' appeared when taking snapshots in
succession.</li>
<li>Fixed several TIA-related emulation bugs as reported on AtariAge. More <li>Fixed several TIA-related emulation bugs as reported on AtariAge. More
fixes will come with the TIA rewrite, due in the next release.</li> fixes will come with the TIA rewrite, due in the next release.</li>
<li>Added '-gl_vsync' commandline argument and associated UI elements, which
uses synchronization to vertical blank interrupt in OpenGL on supported
systems. This eliminates tearing in OpenGL rendering.</li>
<li>Added a 'Previous directory' entry to the top of each listing while
in ROM Browse mode, which is equivalent to the 'Go Up' button. This makes
it easier to navigate the filesystem, since you never have to 'tab out'
of the ROM listing.</li>
<li>Added new scaler infrastructure, replacing the '-zoom' commandline argument <li>Added new scaler infrastructure, replacing the '-zoom' commandline argument
with '-scale_ui' and '-scale_tia'. This means the UI and emulation can now with '-scale_ui' and '-scale_tia'. This means the UI and emulation can now
be scaled independently. In the future, support will be added for advanced be scaled independently. In the future, support will be added for advanced
scalers in TIA mode, such as Scale2x, Scale3x, HQ2x, HQ3x, etc.</li> scalers in TIA mode, such as Scale2x, Scale3x, HQ2x, HQ3x, etc.</li>
<li>Added '-gl_vsync' commandline argument and associated UI elements, which
uses synchronization to vertical blank interrupt in OpenGL on supported
systems. This eliminates tearing in OpenGL rendering.</li>
<li>Changed naming of snapshots and state files. These files are now
named based on the names given in the properties database, and no longer
use the 'md5sum' name. As a result, state files from previous versions
will no longer work unless they're manually renamed. Related to this,
removed the '-ssname' commandline argument.</li>
<li>Fixed bug where 'Snapshot saved' appeared when taking snapshots in
succession.</li>
<li>Added a 'Previous directory' entry to the top of each listing while
in ROM Browse mode, which is equivalent to the 'Go Up' button. This makes
it easier to navigate the filesystem, since you never have to 'tab out'
of the ROM listing.</li>
<li>Added all sound related commandline options to the UI, so you no <li>Added all sound related commandline options to the UI, so you no
longer have to use the commandline to set those options.</li> longer have to use the commandline to set those options.</li>
@ -608,6 +613,13 @@ scaling.</li>
<td>Use SDL software or OpenGL rendering mode.</td> <td>Use SDL software or OpenGL rendering mode.</td>
</tr> </tr>
<tr>
<td><pre>-gl_lib &lt;filename&gt;</pre></td>
<td>OpenGL mode only. Specify the OpenGL library to use (only use
this if you know what you're doing). For OSX, this should
probably be left blank.</td>
</tr>
<tr> <tr>
<td><pre>-gl_filter &lt;nearest|linear&gt;</pre></td> <td><pre>-gl_filter &lt;nearest|linear&gt;</pre></td>
<td>OpenGL mode only. Use GL_NEAREST or GL_LINEAR filtering. <td>OpenGL mode only. Use GL_NEAREST or GL_LINEAR filtering.
@ -631,14 +643,21 @@ scaling.</li>
</tr> </tr>
<tr> <tr>
<td><pre>-gl_lib &lt;filename&gt;</pre></td> <td><pre>-gl_vsync &lt;0|1&gt;</pre></td>
<td>OpenGL mode only. Specify the OpenGL library to use (only use <td>OpenGL mode only. Synchronize screen updates to the vertical blank
this if you know what you're doing).</td> period. This can result in smoother updates, and eliminate tearing.</td>
</tr> </tr>
<tr> <tr>
<td><pre>-zoom &lt;size&gt;</pre></td> <td><pre>-scale_tia &lt;scaler&gt;</pre></td>
<td>Makes window be 'size' times normal.</td> <td>Use the specified scaler while in TIA/emulation mode. Possible
scalers are 'zoom1x, ..., zoom6x'.</td>
</tr>
<tr>
<td><pre>-scale_ui &lt;scaler&gt;</pre></td>
<td>Use the specified scaler while in UI mode (currently, the ROM
launcher and debugger). Possible scalers are 'zoom1x, ..., zoom6x'.</td>
</tr> </tr>
<tr> <tr>
@ -657,9 +676,9 @@ scaling.</li>
</tr> </tr>
<tr> <tr>
<td><pre>-palette &lt;original|standard|z26&gt;</pre></td> <td><pre>-palette &lt;original|standard|z26|user&gt;</pre></td>
<td>Set the palette to either pre-Stella 1.4, Stella 1.4 and above <td>Set the palette to either pre-Stella 1.4, Stella 1.4 and above,
or the palette used in the z26 emulator.</td> the palette used in the z26 emulator, or a user-defined palette.</td>
</tr> </tr>
<tr> <tr>
@ -668,12 +687,6 @@ scaling.</li>
will determine framerate based on ROM format.</td> will determine framerate based on ROM format.</td>
</tr> </tr>
<tr>
<td><pre>-ppblend &lt;number&gt;</pre></td>
<td>Set blending for phosphor effect, if enabled (0-100).
Default is 77.</td>
</tr>
<tr> <tr>
<td><pre>-sound &lt;1|0&gt;</pre></td> <td><pre>-sound &lt;1|0&gt;</pre></td>
<td>Enable or disable sound generation.</td> <td>Enable or disable sound generation.</td>
@ -738,29 +751,23 @@ scaling.</li>
</tr> </tr>
<tr> <tr>
<td><pre>-joymouse &lt;0|1&gt;</pre></td> <td><pre>-p0speed &lt;number&gt;</pre></td>
<td>Indicates whether the joystick emulates the mouse in GUI mode <td>Speed of digital emulation for paddle 0 (0-100).</td>
(defaults to off).</td>
</tr> </tr>
<tr> <tr>
<td><pre>-p1speed &lt;number&gt;</pre></td> <td><pre>-p1speed &lt;number&gt;</pre></td>
<td>Speed of emulated mouse movement for paddle 1 (0-100).</td> <td>Speed of digital emulation for paddle 1 (0-100).</td>
</tr> </tr>
<tr> <tr>
<td><pre>-p2speed &lt;number&gt;</pre></td> <td><pre>-p2speed &lt;number&gt;</pre></td>
<td>Speed of emulated mouse movement for paddle 2 (0-100).</td> <td>Speed of digital emulation for paddle 2 (0-100).</td>
</tr> </tr>
<tr> <tr>
<td><pre>-p3speed &lt;number&gt;</pre></td> <td><pre>-p3speed &lt;number&gt;</pre></td>
<td>Speed of emulated mouse movement for paddle 3 (0-100).</td> <td>Speed of digital emulation for paddle 3 (0-100).</td>
</tr>
<tr>
<td><pre>-p4speed &lt;number&gt;</pre></td>
<td>Speed of emulated mouse movement for paddle 4 (0-100).</td>
</tr> </tr>
<tr> <tr>
@ -775,6 +782,23 @@ scaling.</li>
a real 2600 system (in most cases).</td> a real 2600 system (in most cases).</td>
</tr> </tr>
<tr>
<td><pre>-rombrowse &lt;1|0&gt;</pre></td>
<td>The ROM listing is treated as a filesystem, where one can traverse
folders. As of Stella 2.3, this is the default browsing mode.</td>
</tr>
<tr>
<td><pre>-autoslot &lt;1|0&gt;</pre></td>
<td>Automatically switch to the next available save state slot after
saving a ROM state file.</td>
</tr>
<tr>
<td><pre>-fastscbios &lt;1|0&gt;</pre></td>
<td>Set loading of Supercharger BIOS bars to maximum speed (8x normal).</td>
</tr>
<tr> <tr>
<td><pre>-accurate &lt;1|0&gt;</pre></td> <td><pre>-accurate &lt;1|0&gt;</pre></td>
<td>Linux only, may be removed in future versions. Use this when <td>Linux only, may be removed in future versions. Use this when
@ -787,13 +811,6 @@ scaling.</li>
<td>The directory to save snapshot files to.</td> <td>The directory to save snapshot files to.</td>
</tr> </tr>
<tr>
<td><pre>-ssname &lt;romname|md5sum&gt;</pre></td>
<td>How to name the snapshot. Option 'romname' will use the filename
provided in stella.pro, while 'md5sum' will use the calculated
MD5 sum of the rom.</td>
</tr>
<tr> <tr>
<td><pre>-sssingle &lt;0|1&gt;</pre></td> <td><pre>-sssingle &lt;0|1&gt;</pre></td>
<td>Generate single snapshot instead of many.</td> <td>Generate single snapshot instead of many.</td>
@ -801,8 +818,8 @@ scaling.</li>
<tr> <tr>
<td><pre>-listrominfo</pre></td> <td><pre>-listrominfo</pre></td>
<td>Prints the contents of the stella.pro file, one ROM per line, <td>Prints relevant contents of the Stella ROM database, one ROM per line,
and then exit Stella.</td> and then exit Stella. This can be used for external frontends.</td>
</tr> </tr>
<tr> <tr>
@ -896,6 +913,11 @@ scaling.</li>
type is one of Booster-Grip, Driving, Keyboard, Paddles, or Joystick.</td> type is one of Booster-Grip, Driving, Keyboard, Paddles, or Joystick.</td>
</tr> </tr>
<tr>
<td><pre>-cp &lt;Yes|No&gt;</pre></td>
<td>Set "Controller.SwapPaddles" property.</td>
</tr>
<tr> <tr>
<td><pre>-format &lt;NTSC|PAL&gt;</pre></td> <td><pre>-format &lt;NTSC|PAL&gt;</pre></td>
<td>Set "Display.Format" property.</td> <td>Set "Display.Format" property.</td>
@ -926,6 +948,12 @@ scaling.</li>
<td>Set "Display.Phosphor" property.</td> <td>Set "Display.Phosphor" property.</td>
</tr> </tr>
<tr>
<td><pre>-ppblend &lt;number&gt;</pre></td>
<td>Set "Display.PPBlend" property, used for phosphor effect (0-100).
Default is 77.</td>
</tr>
<tr> <tr>
<td><pre>-hmove &lt;Yes|No&gt;</pre></td> <td><pre>-hmove &lt;Yes|No&gt;</pre></td>
<td>Set "Emulation.HmoveBlanks" property.</td> <td>Set "Emulation.HmoveBlanks" property.</td>
@ -1000,24 +1028,28 @@ scaling.</li>
</table> </table>
<p>The settings file has a special name/location depending on which version of Stella <p>The settings file has a special name/location depending on which version of Stella
you use:</p> you use. Note that if the environment variable 'STELLA_BASEDIR' is set, the
location of the settings file will change accordingly:</p>
<p> <p>
<h2><b>Linux/UNIX</b></h2> <h2><b>Linux/UNIX</b></h2>
<p>The Linux and UNIX version of Stella searches for the <i>stellarc</i> file in <p>The Linux and UNIX version of Stella searches for the <i>stellarc</i> file in
your $HOME/.stella directory.</p> your $HOME/.stella directory, or in $STELLA_BASEDIR if that environment
variable is set.</p>
<p> <p>
<h2><b>Macintosh</b></h2> <h2><b>Macintosh</b></h2>
<p>The Macintosh version does not use an INI file, but stores it <p>The Macintosh version does not use an INI file, but stores it
preferences in the expected location for application preferences, in preferences in the expected location for application preferences, in
the Users home directory, in the Library/Preferences/StellaOSX.plist the Users home directory, in the Library/Preferences/StellaOSX.plist
file.<br> file. The STELLA_BASEDIR environment variable has no effect for
the settings file in OSX.<br>
<p> <p>
<h2><b>Windows</b></h2> <h2><b>Windows</b></h2>
<p>The Windows version of Stella looks for the <i>stella.ini</i> file in the same <p>The Windows version of Stella looks for the <i>stella.ini</i> file in the same
directory containing the application. Future versions of Stella for Windows may look in directory containing the application, or in $STELLA_BASEDIR if that environment
variable is set. Future versions of Stella for Windows may look in
user-specific locations (C:\Documents and Settings\...).</p> user-specific locations (C:\Documents and Settings\...).</p>
<br><br> <br><br>
@ -1609,13 +1641,13 @@ scaling.</li>
</tr> </tr>
<tr> <tr>
<td>Resize window to next <i>larger</i> size</td> <td>Switch to next <i>larger</i> scaler</td>
<td>Alt + =</td> <td>Alt + =</td>
<td>Cmd + =</td> <td>Cmd + =</td>
</tr> </tr>
<tr> <tr>
<td>Resize window to next <i>smaller</i> size</td> <td>Switch to next <i>smaller</i> scaler</td>
<td>Alt + -</td> <td>Alt + -</td>
<td>Cmd + -</td> <td>Cmd + -</td>
</tr> </tr>
@ -1652,7 +1684,7 @@ scaling.</li>
</tr> </tr>
<tr> <tr>
<td>Toggle display format between <i>NTSC</i> and <i>PAL</i></td> <td>Toggle display format between <i>NTSC, PAL, PAL60</i></td>
<td>Control + f</td> <td>Control + f</td>
<td>Cmd + f</td> <td>Cmd + f</td>
</tr> </tr>
@ -1663,12 +1695,6 @@ scaling.</li>
<td>Cmd + s</td> <td>Cmd + s</td>
</tr> </tr>
<tr>
<td>Merge current properties into the properties file</td>
<td>Alt + s</td>
<td>Shift-Cmd + s</td>
</tr>
<tr> <tr>
<td>Set mouse to emulate paddle 0</td> <td>Set mouse to emulate paddle 0</td>
<td>Control + 0</td> <td>Control + 0</td>
@ -1840,24 +1866,28 @@ Ms Pac-Man (Stella extended codes):
<p>Stella uses game properties to specify the "best" emulator settings for a <p>Stella uses game properties to specify the "best" emulator settings for a
game. As of version 2.2 of Stella, a default database of properties are game. As of version 2.2 of Stella, a default database of properties are
built-in, but you may modify these through the use of a <b>stella.pro</b> file. built-in, but you may modify these through the use of a <b>stella.pro</b> file.
This per-user file will contain all properties 'merged' by the user This per-user file will contain all properties modified by the user. So this
(by pressing Alt-s while a game is running). So this means that when you means that when you upgrade Stella, your personal properties settings are
upgrade Stella, your personal properties settings are preserved.</p> preserved.</p>
<p> <p>
<h2><b>Linux/Unix</b></h2> <h2><b>Linux/Unix</b></h2>
<p>The Linux and Unix versions of Stella looks for your personal properties <p>The Linux and Unix versions of Stella looks for your personal properties
file in <i>$HOME/.stella/stella.pro</i>. file in <i>$HOME/.stella/stella.pro</i>, or if the STELLA_BASEDIR environment
variable is set, in <i>$STELLA_BASEDIR/stella.pro</i>.
<p> <p>
<h2><b>Macintosh</b></h2> <h2><b>Macintosh</b></h2>
<p>The Mac version of Stella looks for your personal properties file in <p>The Mac version of Stella looks for your personal properties file in
<i>$HOME/.stella/stella.pro</i>. <i>$HOME/.stella/stella.pro</i>, or if the STELLA_BASEDIR environment
variable is set, in <i>$STELLA_BASEDIR/stella.pro</i>.
<p> <p>
<h2><b>Windows</b></h2> <h2><b>Windows</b></h2>
<p>The Windows version of Stella looks for the properties file in the directory <p>The Windows version of Stella looks for the properties file in the directory
containing the application. Future versions of Stella for Windows may look in containing the application, or if the STELLA_BASEDIR environment
variable is set, in <i>$STELLA_BASEDIR/stella.pro</i>.
Future versions of Stella for Windows may look in
user-specific locations (C:\Documents and Settings\...).</p> user-specific locations (C:\Documents and Settings\...).</p>
<p> <p>
@ -1966,6 +1996,12 @@ Ms Pac-Man (Stella extended codes):
right player. The value of this property must be A or B.</td> right player. The value of this property must be A or B.</td>
</tr> </tr>
<tr>
<td VALIGN="TOP"><i>Console.TelevisionType:</i></td>
<td>This property indicates the default television setting for the
game. The value of this property must be Color or BlankAndWhite.</td>
</tr>
<tr> <tr>
<td VALIGN="TOP"><i>Console.SwapPorts:</i></td> <td VALIGN="TOP"><i>Console.SwapPorts:</i></td>
<td>This property indicates that the left and right ports should be <td>This property indicates that the left and right ports should be
@ -1974,12 +2010,6 @@ Ms Pac-Man (Stella extended codes):
The value of this property must be Yes or No.</td> The value of this property must be Yes or No.</td>
</tr> </tr>
<tr>
<td VALIGN="TOP"><i>Console.TelevisionType:</i></td>
<td>This property indicates the default television setting for the
game. The value of this property must be Color or BlankAndWhite.</td>
</tr>
<tr> <tr>
<td VALIGN="TOP"><i>Controller.Left:</i></td> <td VALIGN="TOP"><i>Controller.Left:</i></td>
<td>This property indicates what type of controller the left player <td>This property indicates what type of controller the left player
@ -1994,10 +2024,20 @@ Ms Pac-Man (Stella extended codes):
Keyboard, Paddles, or Joystick.</td> Keyboard, Paddles, or Joystick.</td>
</tr> </tr>
<tr>
<td VALIGN="TOP"><i>Controller.SwapPaddles:</i></td>
<td>This property indicates that the left and right paddles in
a particular port should be swapped. This is used for ROMs like
'Demons to Diamonds' where the default paddle is paddle 1, not
paddle 0. Other ROMs such as 'Tac-Scan' default to paddle 3,
which can be set using both 'Controller.SwapPaddles' and
'Console.SwapPorts'. The value of this property must be Yes or No.</td>
</tr>
<tr> <tr>
<td VALIGN="TOP"><i>Display.Format:</i></td> <td VALIGN="TOP"><i>Display.Format:</i></td>
<td>This property indicates the television format the game was <td>This property indicates the television format the game was
designed for. The value of this property must be NTSC or PAL.</td> designed for. The value of this property must be NTSC, PAL or PAL60.</td>
</tr> </tr>
<tr> <tr>
@ -2034,6 +2074,14 @@ Ms Pac-Man (Stella extended codes):
emulated or not. The value of this property must be Yes or No.</td> emulated or not. The value of this property must be Yes or No.</td>
</tr> </tr>
<tr>
<td VALIGN="TOP"><i>Display.PPBlend:</i></td>
<td>This property indicates the amount of blending which will occur
while using the phosphor effect. The value of this property must be
<i>n</i> such that 0 &lt;= <i>n</i> &lt;= 100. The default value
is 77.</td>
</tr>
<tr> <tr>
<td VALIGN="TOP"><i>Emulation.HmoveBlanks:</i></td> <td VALIGN="TOP"><i>Emulation.HmoveBlanks:</i></td>
<td>This property indicates whether the TIA HMOVE blank bug should be <td>This property indicates whether the TIA HMOVE blank bug should be
@ -2073,7 +2121,52 @@ Ms Pac-Man (Stella extended codes):
<br><br> <br><br>
<p><h1> <p><h1>
<a name="Acknowledgments">14. Acknowledgments</a></h1> <a name="Palette">14. Palette Support</a></h1>
<hr>
<p>An Atari 2600 palette consists of 128 colours, which are different
for the two major television standards (NTSC and PAL/PAL60). Stella supports
three built-in palettes and one user-defined palette for each format.
These are set using the '-palette' option, and are described as follows:</p>
<p><table cellpadding="5" border="1">
<tr>
<td><b>standard</b></td>
<td>The default palette from Stella 1.4 onwards.</td>
</tr>
<tr>
<td><b>original</b></td>
<td>The palette used in the original StellaX.</td>
</tr>
<tr>
<td><b>z26</b></td>
<td>The palette from the z26 emulator.</td>
</tr>
<tr>
<td><b>user</b></td>
<td>An external palette file, supplied by the user.</td>
</tr>
</table>
<p>Support for a user-defined palette is a new feature for Stella 2.3, and
is further described as follows:
<ul>
<li>The palette file must be called 'stella.pal', and will be located
in the base folder, in the same place as the stella properties file.</li>
<li>The palette file must be at least 768 bytes long. Colours are stored
in 24-bit RGB, with the first byte for red, the second for green, the
third for blue, for a total of 3 bytes per colour.</li>
<li>The first 384 bytes of the file (128 * 3) will be used for the NTSC
palette. The second 384 bytes will be for the PAL/PAL60 palette.
Any extra data in the file will be ignored.</li>
<li>The PAL colour-loss effect is calculated within Stella. You do not
need to specify those colours in the palette file.
</ul>
<p>In the future, support may be added for specifying a palette for each ROM.</p>
<br><br>
<p><h1>
<a name="Acknowledgments">15. Acknowledgments</a></h1>
<hr> <hr>
<p>Bradford W. Mott started developing Stella during the fall of 1995 and since <p>Bradford W. Mott started developing Stella during the fall of 1995 and since
@ -2322,7 +2415,7 @@ Ms Pac-Man (Stella extended codes):
<br><br> <br><br>
<p><h1> <p><h1>
<a name="License">15. License and Disclaimer</a></h1> <a name="License">16. License and Disclaimer</a></h1>
<hr> <hr>
<p> <p>

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: Console.cxx,v 1.106 2006-12-11 00:15:33 stephena Exp $ // $Id: Console.cxx,v 1.107 2006-12-13 00:05:46 stephena Exp $
//============================================================================ //============================================================================
#include <assert.h> #include <assert.h>
@ -705,6 +705,10 @@ void Console::setDeveloperProperties()
myProperties.set(Controller_Right, s); myProperties.set(Controller_Right, s);
} }
s = settings.getString("cp");
if(s != "")
myProperties.set(Controller_SwapPaddles, s);
s = settings.getString("format"); s = settings.getString("format");
if(s != "") if(s != "")
myProperties.set(Display_Format, s); myProperties.set(Display_Format, s);

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBuffer.cxx,v 1.107 2006-12-11 00:15:33 stephena Exp $ // $Id: FrameBuffer.cxx,v 1.108 2006-12-13 00:05:46 stephena Exp $
//============================================================================ //============================================================================
#include <sstream> #include <sstream>
@ -394,7 +394,7 @@ bool FrameBuffer::scale(int direction, const string& type)
getScaler(newScaler, direction, currentScaler); getScaler(newScaler, direction, currentScaler);
// Only update the scaler if it's changed from the old one // Only update the scaler if it's changed from the old one
if(currentScaler != newScaler.name) if(currentScaler != string(newScaler.comparitor))
{ {
setScaler(newScaler); setScaler(newScaler);
if(!createScreen()) if(!createScreen())
@ -409,9 +409,9 @@ bool FrameBuffer::scale(int direction, const string& type)
showMessage(newScaler.name); showMessage(newScaler.name);
if(inTIAMode) if(inTIAMode)
myOSystem->settings().setString("scale_tia", newScaler.name); myOSystem->settings().setString("scale_tia", newScaler.comparitor);
else else
myOSystem->settings().setString("scale_ui", newScaler.name); myOSystem->settings().setString("scale_ui", newScaler.comparitor);
} }
return true; return true;
} }
@ -759,7 +759,7 @@ void FrameBuffer::getScaler(Scaler& scaler, int direction, const string& name)
int pos = -1; int pos = -1;
for(unsigned int i = 0; i < myScalerList.size(); ++i) for(unsigned int i = 0; i < myScalerList.size(); ++i)
{ {
if(myScalerList[i]->name == name) if(STR_CASE_CMP(myScalerList[i]->name, name.c_str()) == 0)
{ {
pos = i; pos = i;
break; break;
@ -822,26 +822,26 @@ const uInt8 FrameBuffer::ourGUIColors[kNumColors-256][3] = {
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Scaler FrameBuffer::ourUIScalers[kUIScalerListSize] = { Scaler FrameBuffer::ourUIScalers[kUIScalerListSize] = {
{ kZOOM1X, "Zoom1x", 1, 1 }, { kZOOM1X, "Zoom1x", "zoom1x", 1, 1 },
{ kZOOM2X, "Zoom2x", 2, 1 }, { kZOOM2X, "Zoom2x", "zoom2x", 2, 1 },
{ kZOOM3X, "Zoom3x", 3, 1 }, { kZOOM3X, "Zoom3x", "zoom3x", 3, 1 },
{ kZOOM4X, "Zoom4x", 4, 1 }, { kZOOM4X, "Zoom4x", "zoom4x", 4, 1 },
{ kZOOM5X, "Zoom5x", 5, 1 }, { kZOOM5X, "Zoom5x", "zoom5x", 5, 1 },
{ kZOOM6X, "Zoom6x", 6, 1 } { kZOOM6X, "Zoom6x", "zoom6x", 6, 1 }
}; };
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Scaler FrameBuffer::ourTIAScalers[kTIAScalerListSize] = { Scaler FrameBuffer::ourTIAScalers[kTIAScalerListSize] = {
{ kZOOM1X, "Zoom1x", 1, 1 }, { kZOOM1X, "Zoom1x", "zoom1x", 1, 1 },
{ kZOOM2X, "Zoom2x", 2, 1 }, { kZOOM2X, "Zoom2x", "zoom2x", 2, 1 },
{ kZOOM3X, "Zoom3x", 3, 1 }, { kZOOM3X, "Zoom3x", "zoom3x", 3, 1 },
{ kZOOM4X, "Zoom4x", 4, 1 }, { kZOOM4X, "Zoom4x", "zoom4x", 4, 1 },
{ kZOOM5X, "Zoom5x", 5, 1 }, { kZOOM5X, "Zoom5x", "zoom5x", 5, 1 },
{ kZOOM6X, "Zoom6x", 6, 1 }, { kZOOM6X, "Zoom6x", "zoom6x", 6, 1 },
{ kSCALE2X, "Scale2x", 1, 2 }, { kSCALE2X, "Scale2x", "scale2x", 1, 2 },
{ kSCALE3X, "Scale3x", 1, 3 }, { kSCALE3X, "Scale3x", "scale3x", 1, 3 },
{ kHQ2X, "HQ2x", 1, 2 }, { kHQ2X, "HQ2x", "hq2x", 1, 2 },
{ kHQ3X, "HQ3x", 1, 3 }, { kHQ3X, "HQ3x", "hq3x", 1, 3 },
}; };

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: FrameBuffer.hxx,v 1.79 2006-12-11 00:15:33 stephena Exp $ // $Id: FrameBuffer.hxx,v 1.80 2006-12-13 00:05:46 stephena Exp $
//============================================================================ //============================================================================
#ifndef FRAMEBUFFER_HXX #ifndef FRAMEBUFFER_HXX
@ -84,7 +84,8 @@ enum ScalerType {
}; };
struct Scaler { struct Scaler {
ScalerType type; ScalerType type;
string name; const char* name;
const char* comparitor;
int zoom; int zoom;
int scale; int scale;
}; };
@ -97,7 +98,7 @@ struct Scaler {
All GUI elements (ala ScummVM) are drawn here as well. All GUI elements (ala ScummVM) are drawn here as well.
@author Stephen Anthony @author Stephen Anthony
@version $Id: FrameBuffer.hxx,v 1.79 2006-12-11 00:15:33 stephena Exp $ @version $Id: FrameBuffer.hxx,v 1.80 2006-12-13 00:05:46 stephena Exp $
*/ */
class FrameBuffer class FrameBuffer
{ {

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: Settings.cxx,v 1.97 2006-12-11 00:15:33 stephena Exp $ // $Id: Settings.cxx,v 1.98 2006-12-13 00:05:46 stephena Exp $
//============================================================================ //============================================================================
#include <cassert> #include <cassert>
@ -42,8 +42,8 @@ Settings::Settings(OSystem* osystem)
setInternal("gl_lib", ""); setInternal("gl_lib", "");
setInternal("gl_vsync", "true"); setInternal("gl_vsync", "true");
setInternal("scale_ui", "Zoom1x"); setInternal("scale_ui", "zoom1x");
setInternal("scale_tia", "Zoom1x"); setInternal("scale_tia", "zoom1x");
setInternal("fullscreen", "false"); setInternal("fullscreen", "false");
setInternal("center", "true"); setInternal("center", "true");
setInternal("grabmouse", "false"); setInternal("grabmouse", "false");
@ -76,7 +76,7 @@ Settings::Settings(OSystem* osystem)
setInternal("sssingle", "false"); setInternal("sssingle", "false");
setInternal("romdir", ""); setInternal("romdir", "");
setInternal("rombrowse", "false"); setInternal("rombrowse", "true");
setInternal("lastrom", ""); setInternal("lastrom", "");
setInternal("modtime", ""); // romdir last modification time setInternal("modtime", ""); // romdir last modification time
@ -241,16 +241,19 @@ void Settings::validate()
#endif #endif
s = getString("scale_ui"); s = getString("scale_ui");
if(s != "Zoom1x" && s != "Zoom2x" && s != "Zoom3x" && if(s != "zoom1x" && s != "zoom2x" && s != "zoom3x" &&
s != "Zoom4x" && s != "Zoom5x" && s != "Zoom6x") s != "zoom4x" && s != "zoom5x" && s != "zoom6x")
setInternal("scale_ui", "Zoom1x"); setInternal("scale_ui", "zoom1x");
s = getString("scale_tia"); s = getString("scale_tia");
if(s != "Zoom1x" && s != "Zoom2x" && s != "Zoom3x" && if(s != "zoom1x" && s != "zoom2x" && s != "zoom3x" &&
s != "Zoom4x" && s != "Zoom5x" && s != "Zoom6x" && s != "zoom4x" && s != "zoom5x" && s != "zoom6x"
s != "Scale2x" && s != "Scale3x" && s != "Scale4x" && #ifdef SCALER_SUPPORT
s != "HQ2x" && s != "HQ3x" && s != "HQ4x") && s != "scale2x" && s != "scale3x" && s != "scale4x" &&
setInternal("scale_tia", "Zoom1x"); s != "hq2x" && s != "hq3x" && s != "hq4x"
#endif
)
setInternal("scale_tia", "zoom1x");
i = getInt("paddle"); i = getInt("paddle");
if(i < 0 || i > 3) if(i < 0 || i > 3)
@ -284,7 +287,7 @@ void Settings::usage()
#ifdef DISPLAY_OPENGL #ifdef DISPLAY_OPENGL
<< " gl SDL OpenGL mode\n" << " gl SDL OpenGL mode\n"
<< endl << endl
<< " -gl_lib <filename> Specify the OpenGL library\n" << " -gl_lib <name> Specify the OpenGL library\n"
<< " -gl_filter <type> Type is one of the following:\n" << " -gl_filter <type> Type is one of the following:\n"
<< " nearest Normal scaling (GL_NEAREST)\n" << " nearest Normal scaling (GL_NEAREST)\n"
<< " linear Blurred scaling (GL_LINEAR)\n" << " linear Blurred scaling (GL_LINEAR)\n"
@ -293,7 +296,8 @@ void Settings::usage()
<< " -gl_vsync <1|0> Enable synchronize to vertical blank interrupt\n" << " -gl_vsync <1|0> Enable synchronize to vertical blank interrupt\n"
<< endl << endl
#endif #endif
<< " -zoom <size> Makes window be 'size' times normal\n" << " -scale_tia <scaler> Use the specified scaler in emulation mode\n"
<< " -scale_ui <scaler> Use the specified scaler in non-emulation mode (ROM browser/debugger)\n"
<< " -fullscreen <1|0> Play the game in fullscreen mode\n" << " -fullscreen <1|0> Play the game in fullscreen mode\n"
<< " -center <1|0> Centers game window (if possible)\n" << " -center <1|0> Centers game window (if possible)\n"
<< " -grabmouse <1|0> Keeps the mouse in the game window\n" << " -grabmouse <1|0> Keeps the mouse in the game window\n"
@ -324,6 +328,9 @@ void Settings::usage()
<< " -p3speed <number> Speed of emulated mouse movement for paddle 3 (0-100)\n" << " -p3speed <number> Speed of emulated mouse movement for paddle 3 (0-100)\n"
<< " -pthresh <number> Set threshold for eliminating paddle jitter\n" << " -pthresh <number> Set threshold for eliminating paddle jitter\n"
<< " -tiadefaults <1|0> Use TIA positioning defaults instead of enhanced values\n" << " -tiadefaults <1|0> Use TIA positioning defaults instead of enhanced values\n"
<< " -rombrowse <1|0> Use ROM browser mode (shows files and folders)\n"
<< " -autoslot <1|0> Automatically switch to next save slot when state saving\n"
<< " -fastscbios <1|0> Speed up loading of SuperCharger ROM BIOS\n"
#ifdef UNIX #ifdef UNIX
<< " -accurate <1|0> Accurate game timing (uses more CPU)\n" << " -accurate <1|0> Accurate game timing (uses more CPU)\n"
#endif #endif
@ -355,6 +362,7 @@ void Settings::usage()
<< " -lc <arg> Sets the 'Controller.Left' property\n" << " -lc <arg> Sets the 'Controller.Left' property\n"
<< " -rc <arg> Sets the 'Controller.Right' property\n" << " -rc <arg> Sets the 'Controller.Right' property\n"
<< " -bc <arg> Same as using both -lc and -rc\n" << " -bc <arg> Same as using both -lc and -rc\n"
<< " -cp <arg> Sets the 'Controller.SwapPaddles' property\n"
<< " -format <arg> Sets the 'Display.Format' property\n" << " -format <arg> Sets the 'Display.Format' property\n"
<< " -xstart <arg> Sets the 'Display.XStart' property\n" << " -xstart <arg> Sets the 'Display.XStart' property\n"
<< " -ystart <arg> Sets the 'Display.YStart' property\n" << " -ystart <arg> Sets the 'Display.YStart' property\n"

View File

@ -13,7 +13,7 @@
// See the file "license" for information on usage and redistribution of // See the file "license" for information on usage and redistribution of
// this file, and for a DISCLAIMER OF ALL WARRANTIES. // this file, and for a DISCLAIMER OF ALL WARRANTIES.
// //
// $Id: VideoDialog.cxx,v 1.36 2006-12-08 16:49:37 stephena Exp $ // $Id: VideoDialog.cxx,v 1.37 2006-12-13 00:05:46 stephena Exp $
// //
// Based on code from ScummVM - Scumm Interpreter // Based on code from ScummVM - Scumm Interpreter
// Copyright (C) 2002-2004 The ScummVM project // Copyright (C) 2002-2004 The ScummVM project
@ -197,21 +197,15 @@ void VideoDialog::loadConfig()
// Renderer setting // Renderer setting
s = instance()->settings().getString("video"); s = instance()->settings().getString("video");
if(s == "soft") if(s == "soft") myRendererPopup->setSelectedTag(1);
myRendererPopup->setSelectedTag(1); else if(s == "hard") myRendererPopup->setSelectedTag(2);
else if(s == "hard") else if(s == "gl") myRendererPopup->setSelectedTag(3);
myRendererPopup->setSelectedTag(2); else myRendererPopup->setSelectedTag(1);
else if(s == "gl")
myRendererPopup->setSelectedTag(3);
else
myRendererPopup->setSelectedTag(1);
// Filter setting // Filter setting
s = instance()->settings().getString("gl_filter"); s = instance()->settings().getString("gl_filter");
if(s == "linear") if(s == "linear") myFilterPopup->setSelectedTag(1);
myFilterPopup->setSelectedTag(1); else if(s == "nearest") myFilterPopup->setSelectedTag(2);
else if(s == "nearest")
myFilterPopup->setSelectedTag(2);
// Aspect ratio - another huge hack // Aspect ratio - another huge hack
s = instance()->settings().getString("gl_aspect"); s = instance()->settings().getString("gl_aspect");
@ -232,41 +226,26 @@ void VideoDialog::loadConfig()
// Palette // Palette
s = instance()->settings().getString("palette"); s = instance()->settings().getString("palette");
if(s == "standard") if(s == "standard") myPalettePopup->setSelectedTag(1);
myPalettePopup->setSelectedTag(1); else if(s == "original") myPalettePopup->setSelectedTag(2);
else if(s == "original") else if(s == "z26") myPalettePopup->setSelectedTag(3);
myPalettePopup->setSelectedTag(2); else if(s == "user") myPalettePopup->setSelectedTag(4);
else if(s == "z26")
myPalettePopup->setSelectedTag(3);
else if(s == "user")
myPalettePopup->setSelectedTag(4);
// Scaler // Scaler
s = instance()->settings().getString("scale_tia"); s = instance()->settings().getString("scale_tia");
if(s == "Zoom1x") if(s == "zoom1x") myScalerPopup->setSelectedTag(1);
myScalerPopup->setSelectedTag(1); else if(s == "zoom2x") myScalerPopup->setSelectedTag(2);
else if(s == "Zoom2x") else if(s == "zoom3x") myScalerPopup->setSelectedTag(3);
myScalerPopup->setSelectedTag(2); else if(s == "zoom4x") myScalerPopup->setSelectedTag(4);
else if(s == "Zoom3x") else if(s == "zoom5x") myScalerPopup->setSelectedTag(5);
myScalerPopup->setSelectedTag(3); else if(s == "zoom6x") myScalerPopup->setSelectedTag(6);
else if(s == "Zoom4x")
myScalerPopup->setSelectedTag(4);
else if(s == "Zoom5x")
myScalerPopup->setSelectedTag(5);
else if(s == "Zoom6x")
myScalerPopup->setSelectedTag(6);
#ifdef SCALER_SUPPORT #ifdef SCALER_SUPPORT
else if(s == "Scale2x") else if(s == "scale2x") myScalerPopup->setSelectedTag(7);
myScalerPopup->setSelectedTag(7); else if(s == "scale3x") myScalerPopup->setSelectedTag(8);
else if(s == "Scale3x") else if(s == "hq2x") myScalerPopup->setSelectedTag(9);
myScalerPopup->setSelectedTag(8); else if(s == "hq3x") myScalerPopup->setSelectedTag(10);
else if(s == "HQ2x")
myScalerPopup->setSelectedTag(9);
else if(s == "HQ3x")
myScalerPopup->setSelectedTag(10);
#endif #endif
else else myScalerPopup->setSelectedTag(0);
myScalerPopup->setSelectedTag(0);
// Fullscreen // Fullscreen
b = instance()->settings().getBool("fullscreen"); b = instance()->settings().getBool("fullscreen");
@ -307,12 +286,9 @@ void VideoDialog::saveConfig()
// Renderer setting // Renderer setting
i = myRendererPopup->getSelectedTag(); i = myRendererPopup->getSelectedTag();
if(i == 1) if(i == 1) s = "soft";
s = "soft"; else if(i == 2) s = "hard";
else if(i == 2) else if(i == 3) s = "gl";
s = "hard";
else if(i == 3)
s = "gl";
if(s != instance()->settings().getString("video")) if(s != instance()->settings().getString("video"))
{ {
instance()->settings().setString("video", s); instance()->settings().setString("video", s);
@ -321,10 +297,8 @@ void VideoDialog::saveConfig()
// Filter setting // Filter setting
i = myFilterPopup->getSelectedTag(); i = myFilterPopup->getSelectedTag();
if(i == 1) if(i == 1) s = "linear";
s = "linear"; else if(i == 2) s = "nearest";
else if(i == 2)
s = "nearest";
if(s != instance()->settings().getString("gl_filter")) if(s != instance()->settings().getString("gl_filter"))
{ {
instance()->settings().setString("gl_filter", s); instance()->settings().setString("gl_filter", s);
@ -341,19 +315,27 @@ void VideoDialog::saveConfig()
// Palette // Palette
i = myPalettePopup->getSelectedTag(); i = myPalettePopup->getSelectedTag();
if(i == 1) if(i == 1) s = "standard";
s = "standard"; else if(i == 2) s = "original";
else if(i == 2) else if(i == 3) s = "z26";
s = "original"; else if(i == 4) s = "user";
else if(i == 3)
s = "z26";
else if(i == 4)
s = "user";
instance()->settings().setString("palette", s); instance()->settings().setString("palette", s);
instance()->console().setPalette(s); instance()->console().setPalette(s);
// Scaler // Scaler
s = myScalerPopup->getSelectedString(); i = myScalerPopup->getSelectedTag();
if(i == 1) s = "zoom1x";
else if(i == 2) s = "zoom2x";
else if(i == 3) s = "zoom3x";
else if(i == 4) s = "zoom4x";
else if(i == 5) s = "zoom5x";
else if(i == 6) s = "zoom6x";
#ifdef SCALER_SUPPORT
else if(i == 7) s = "scale2x";
else if(i == 8) s = "scale3x";
else if(i == 9) s = "hq2x";
else if(i == 10) s = "hq3x";
#endif
if(s != instance()->settings().getString("scale_tia")) if(s != instance()->settings().getString("scale_tia"))
{ {
instance()->settings().setString("scale_tia", s); instance()->settings().setString("scale_tia", s);