Huge updates to the documentation, particularly to the debugger portion.
Many changes have been made to Stella since that document was first written, and quite a few things are now documented for the first time. This means the next release will (feature-wise) look a lot bigger than it really is :) git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1616 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
|
@ -83,7 +83,6 @@ feature that no other 2600 debugger has; it's <b>completely</b> cross-platform.<
|
||||||
<li>Bankswitch support in the debugger for the few remaining cart types
|
<li>Bankswitch support in the debugger for the few remaining cart types
|
||||||
that aren't supported.</li>
|
that aren't supported.</li>
|
||||||
<li>Patch ROM support for a few cart types doesn't work. Must fix.</li>
|
<li>Patch ROM support for a few cart types doesn't work. Must fix.</li>
|
||||||
<li>Some way to control joystick/etc. input from within the debugger.</li>
|
|
||||||
<li>Source-level debugging: if a DASM .lst file is available, we'll show
|
<li>Source-level debugging: if a DASM .lst file is available, we'll show
|
||||||
the listing in the ROM tab instead of a disassembly. This is already
|
the listing in the ROM tab instead of a disassembly. This is already
|
||||||
available in a very crude form ("loadlist" and "list" commands).</li>
|
available in a very crude form ("loadlist" and "list" commands).</li>
|
||||||
|
@ -104,12 +103,18 @@ feature that no other 2600 debugger has; it's <b>completely</b> cross-platform.<
|
||||||
& off. When you exit the debugger, the emulation resumes at the current
|
& off. When you exit the debugger, the emulation resumes at the current
|
||||||
program counter, and continues until either a breakpoint/trap is hit,
|
program counter, and continues until either a breakpoint/trap is hit,
|
||||||
or the ` key is pressed again.</p>
|
or the ` key is pressed again.</p>
|
||||||
<p>For space reasons, the Prompt, TIA, and Audio displays are split into
|
|
||||||
3 tabs, only one of which is visible at a time. You can use the mouse or
|
<p>The main debugger window will look similar to the following (note that the
|
||||||
keyboard to select which tab you want to view.</p>
|
letters here are for reference in the document below; they aren't actually
|
||||||
<p>Pressing Ctrl-Tab cycles between tabs
|
present in the debugger):</p>
|
||||||
from left to right, and Shift-Ctrl-Tab cycles from right to left.
|
<p><img src="graphics/debugger_main.png"></p>
|
||||||
Pressing Tab cycles between widgets in the current tab.</p>
|
|
||||||
|
<p>For space reasons, the Prompt, TIA, I/O and Audio displays are split into
|
||||||
|
4 tabs, only one of which is visible at a time. You can use the mouse or
|
||||||
|
keyboard to select which tab you want to view. Pressing Shift with the left
|
||||||
|
or right arrow keys cycles between tabs from right-to-left and left-to-right,
|
||||||
|
respectively. Pressing Tab cycles between widgets in the current tab (except
|
||||||
|
for in the Prompt area, where 'tab' used for something else).</p>
|
||||||
|
|
||||||
<p>You can also enter the debugger at emulator startup by giving a breakpoint on the command line:
|
<p>You can also enter the debugger at emulator startup by giving a breakpoint on the command line:
|
||||||
<pre>
|
<pre>
|
||||||
|
@ -144,7 +149,9 @@ already contained the same value, that's not considered a change (old
|
||||||
value was $whatever, new value is the same, so nothing got tracked). This
|
value was $whatever, new value is the same, so nothing got tracked). This
|
||||||
may change in a future version of Stella.</p>
|
may change in a future version of Stella.</p>
|
||||||
|
|
||||||
<h2>Prompt tab</h2>
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<h2><u>(A)</u> Prompt tab</h2>
|
||||||
|
|
||||||
<p>This is a command-line interface, similar to the DOS DEBUG command
|
<p>This is a command-line interface, similar to the DOS DEBUG command
|
||||||
or Supermon for the C=64.</p>
|
or Supermon for the C=64.</p>
|
||||||
|
@ -158,61 +165,17 @@ scroll with the mouse. Copy and paste is not (yet?) supported.</p>
|
||||||
be abbreviated: instead of "clearbreaks", you can type "clear" or
|
be abbreviated: instead of "clearbreaks", you can type "clear" or
|
||||||
even just "cl". However, "c" by itself is the Toggle Carry command.</p>
|
even just "cl". However, "c" by itself is the Toggle Carry command.</p>
|
||||||
|
|
||||||
<p>Bash-style tab completion is supported for commands and labels (see below)</p>
|
<p>Bash-style tab completion is supported for commands and labels (see below).
|
||||||
|
Other Bash-style commands are also supported, as follows:</p>
|
||||||
|
<ul>
|
||||||
|
<li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<p>For now, there are some functions that only exist in the prompt. We
|
<p>For now, there are some functions that only exist in the prompt. We
|
||||||
intend to add GUI equivalents for all (or almost all?) of the prompt
|
intend to add GUI equivalents for all (or almost all?) of the prompt
|
||||||
commands by the time we release Stella 2.0. People who like command
|
commands in future releases. People who like command prompts will be able to
|
||||||
prompts will be able to use the prompt, but people who hate them will
|
use the prompt, but people who hate them will have a fully functional
|
||||||
have a fully functional debugger without typing (or without typing
|
debugger without typing (or without typing much, anyway).</p>
|
||||||
much, anyway).</p>
|
|
||||||
|
|
||||||
<!--
|
|
||||||
<h4>Status</h4>
|
|
||||||
|
|
||||||
<p>Before each prompt, you'll see a dump of the current processor
|
|
||||||
status, plus any watches you've set (see section on watches
|
|
||||||
below), plus a disassembly of the instruction at the current
|
|
||||||
Program Counter. This is the next instruction that will execute;
|
|
||||||
it hasn't been executed yet.</p>
|
|
||||||
|
|
||||||
<pre>
|
|
||||||
PC=f000 A=01 X=02 Y=03 S=ff P=21/nv-bdizC Cycle 12345
|
|
||||||
$f000 a2 ff LDX #ff ; 2
|
|
||||||
>
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>This is telling us a lot of information:
|
|
||||||
<pre>
|
|
||||||
- PC=f000 A=01 X=02 Y=03 S=ff
|
|
||||||
The Program Counter, Accumulator, X, Y, and Stack Pointer registers.
|
|
||||||
|
|
||||||
- P=21/nv-bdizC
|
|
||||||
The Processor Status register. The "21" is the hex value of the
|
|
||||||
register, and the "nv-bdizC" shows us the individual flags. Flags
|
|
||||||
with capital letters are set, and lowercase means clear. In this
|
|
||||||
example, only the Carry bit is set.
|
|
||||||
|
|
||||||
- Cycle 12345
|
|
||||||
This counter gets reset at the beginning of each frame, when
|
|
||||||
VSYNC is strobed. In this example, we're 12345 (decimal) cycles
|
|
||||||
past the beginning of the frame.
|
|
||||||
|
|
||||||
- $f000 a2 ff LDX #ff ; 2
|
|
||||||
Disassembly of the instruction the PC points to. This is the next
|
|
||||||
instruction that will execute (when we exit the debugger, or via the
|
|
||||||
"step" or "trace" commands). The "a2 ff" is the raw machine code
|
|
||||||
for this instruction. The "; 2" is a cycle count: this instruction
|
|
||||||
will take 2 cycles to execute.
|
|
||||||
|
|
||||||
WARNING: the cycle count in the disassembly does NOT include extra
|
|
||||||
cycles caused by crossing page boundaries. Also, Branch instructions
|
|
||||||
are shown as 2 cycles, as though they're not going to be taken. A
|
|
||||||
branch that's taken adds a cycle, of course.
|
|
||||||
|
|
||||||
The ">" is where your commands will appear as you type them.
|
|
||||||
</pre>
|
|
||||||
-->
|
|
||||||
|
|
||||||
<h4>Tab completion</h4>
|
<h4>Tab completion</h4>
|
||||||
|
|
||||||
|
@ -641,15 +604,14 @@ can also get rid of all traps at once with the "cleartraps" command.</p>
|
||||||
<!-- <p>Commands marked with a * are unimplemented.</p> -->
|
<!-- <p>Commands marked with a * are unimplemented.</p> -->
|
||||||
<p>Commands marked with a + are partially implemented.</p>
|
<p>Commands marked with a + are partially implemented.</p>
|
||||||
|
|
||||||
<p>Most commands can be abbreviated just by typing a partial command:
|
|
||||||
"st" for "step", or "f" for "frame". Where there are conflicts, generally
|
|
||||||
the shortest name is chosen (so "tra" is "trap", not "trapread"). When
|
|
||||||
in doubt, press TAB.</p>
|
|
||||||
|
|
||||||
<h2>TIA Tab</h2>
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(B)</u> TIA Tab</h2>
|
||||||
|
|
||||||
<p>When selected, this tab shows detailed status of all the TIA registers
|
<p>When selected, this tab shows detailed status of all the TIA registers
|
||||||
(except for audio; use the Audio tab for those).</p>
|
(except for audio; use the Audio tab for those).</p>
|
||||||
|
<p><img src="graphics/debugger_tiatab.png"></p>
|
||||||
|
|
||||||
<p>Most of the values on the TIA tab will be self-explanatory to a 2600
|
<p>Most of the values on the TIA tab will be self-explanatory to a 2600
|
||||||
programmer. The top line (with all the hex values) displays the raw
|
programmer. The top line (with all the hex values) displays the raw
|
||||||
|
@ -677,141 +639,232 @@ Strobe button.</p>
|
||||||
drawn in the current color. Changing a color register will change the
|
drawn in the current color. Changing a color register will change the
|
||||||
color of this rectangle.</p>
|
color of this rectangle.</p>
|
||||||
|
|
||||||
<h2>Audio Tab</h2>
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(C)</u> I/O Tab</h2>
|
||||||
|
|
||||||
|
<p>When selected, this tab shows detailed status of the Input, Output,
|
||||||
|
and Timer portion of the RIOT/M6532 chip (the RAM portion is accessed
|
||||||
|
in another part of the debugger).</p>
|
||||||
|
<p><img src="graphics/debugger_iotab.png"></p>
|
||||||
|
|
||||||
|
<p>As with the TIA tab, most of the values here will be self-explanatory to a 2600
|
||||||
|
programmer, and almost all can be modified.<p>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(D)</u> Audio Tab</h2>
|
||||||
|
|
||||||
<p>This tab lets you view the contents of the TIA audio registers. In
|
<p>This tab lets you view the contents of the TIA audio registers. In
|
||||||
the current release of Stella, these are read-only displays. This tab
|
the current release of Stella, these are read-only displays. This tab
|
||||||
will grow some features in a future release.</p>
|
will grow some features in a future release.</p>
|
||||||
|
|
||||||
<h2>CPU Widget</h2>
|
|
||||||
|
|
||||||
<p>This shows the current CPU state. All the registers and flags are
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
displayed, and can be changed by double-clicking on them. Flags are
|
<br>
|
||||||
toggled on double-click.</p>
|
<h2><u>(E)</u> TIA Display</h2>
|
||||||
|
|
||||||
<p>The 0, Inv, Neg, ++, --, <<, and >> buttons affect the
|
<p>In the upper left of the debugger, you'll see the current frame of
|
||||||
currently-selected register (see <b>RAM Widget</b> below).</p>
|
video as generated by the TIA. If a complete frame hasn't been drawn,
|
||||||
|
the partial contents of the current frame will be displayed up to the
|
||||||
|
current scanline, with the contents of the old frame (in black &
|
||||||
|
white) filling the rest of the display. Note that if 'phosphor mode'
|
||||||
|
has been enabled for a ROM, you will see the effect here as well. That
|
||||||
|
is, no flicker will be shown for 30Hz display, even though a real
|
||||||
|
system would alternate between drawing frames (and hence produce
|
||||||
|
flicker).</p>
|
||||||
|
|
||||||
|
<p>You can use the "Scan+1" button or the prompt "scan" command to watch
|
||||||
|
the TIA draw the frame one scanline at a time.</p>
|
||||||
|
|
||||||
|
<p>You can also right-click anywhere in this window to show a context menu,
|
||||||
|
as illustrated:</p>
|
||||||
|
<p><img src="graphics/debugger_tiaoutcmenu.png"></p>
|
||||||
|
<p>The options are as follows:</p>
|
||||||
|
<ul>
|
||||||
|
<li><b>Fill to scanline</b>: If you've already started a partial frame
|
||||||
|
draw (ie, the frame is already partially 'greyed' out), selecting this
|
||||||
|
option will draw all scanlines up to the vertical position where the
|
||||||
|
mouse was clicked. Note that if you weren't in partial-frame mode,
|
||||||
|
this option will have no effect.</li>
|
||||||
|
<li><b>Set breakpoint</b>: Will set a conditional breakpoint at the
|
||||||
|
scanline where the mouse was clicked. Currently, you'll need to use
|
||||||
|
the Prompt Tab to turn the breakpoint off again.</li>
|
||||||
|
<li><b>Set zoom position</b>: Influences what is shown in the TIA
|
||||||
|
zoom area (further described in part (G). The zoom area will
|
||||||
|
contain the area centered at the position where the mouse was
|
||||||
|
clicked.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(F)</u> TIA Info</h2>
|
||||||
|
<p>To the right of the TIA display (E) there is TIA information, as shown:</p>
|
||||||
|
<p><img src="graphics/debugger_tiainfo.png"></p>
|
||||||
|
<p>The indicators are as follows:</p>
|
||||||
|
<ul>
|
||||||
|
<li><b>Frame</b>: The current frame number, since this ROM was loaded or reset.</li>
|
||||||
|
<li><b>F. Cyc</b>: The number of CPU cycles that have been executed this frame, since
|
||||||
|
VSYNC was cleared at scanline 0.</li>
|
||||||
|
<li><b>Scanline</b>: The scanline that's currently being drawn. Scanline 0 is the one
|
||||||
|
on which VSYNC is cleared (after being set for 3 scanlines, as per the Stella
|
||||||
|
Programmer's Guide)</li>
|
||||||
|
<li><b>S. Cyc</b>: The number of CPU cycles that have been executed since the beginning
|
||||||
|
of the current scanline.</li>
|
||||||
|
<li><b>VSYNC & VBLANK</b>: Self explanatory.</li>
|
||||||
|
<li><b>Pixel Pos</b>: The current number of visible color clocks that have been displayed on
|
||||||
|
the current scanline, starting from the beginning of the Horizontal Blank period.
|
||||||
|
During HBLANK, this value will be negative (representing the number of clocks
|
||||||
|
until the first visible one). Since there are 68 color clocks per HBLANK and
|
||||||
|
160 visible clocks per scanline, the Pixel Position will range from -68 to 159.</li>
|
||||||
|
<li><b>Color Clk</b>: The current number of total color clocks since the beginning of this
|
||||||
|
scanline's HBLANK. This counter starts at zero, but otherwise displays the same
|
||||||
|
information as the Pixel Position (so Color Clock will always be 68 more than Pixel
|
||||||
|
Position, and will range from 0 to 228).</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(G)</u> TIA Zoom</h2>
|
||||||
|
<p>Below the TIA Info (F) is the TIA Zoom area. This allows you to enlarge
|
||||||
|
part of the TIA display, so you can see fine details. Note that unlike
|
||||||
|
the TIA display area, this one <b>does</b> generate frames as the real
|
||||||
|
system would. So, if you've enabled 'phosphor mode' for a ROM, it
|
||||||
|
won't be honoured here (ie, you'll see alternating frames at 30Hz display,
|
||||||
|
just like on a real system).</p>
|
||||||
|
<p>You can also right-click anywhere in this window to show a context menu,
|
||||||
|
as illustrated:</p>
|
||||||
|
<p><img src="graphics/debugger_tiazoomcmenu.png"></p>
|
||||||
|
<p>These options allow you to zoom in on the image for even greater detail.
|
||||||
|
If you click on the output window, you can scroll around using the cursor,
|
||||||
|
PageUp/Dn and Home/End keys. You can also select the zoom position from
|
||||||
|
a context menu in the TIA Display.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(H)</u> Breakpoint/Trap Status</h2>
|
||||||
|
<p>Below the TIA Zoom (G), there is a status line that shows the reason the
|
||||||
|
debugger was entered (if a breakpoint/trap was hit), as shown:</p>
|
||||||
|
<p><img src="graphics/debugger_bpstatus.png"></p>
|
||||||
|
<p>The output here will generally be self-explanatory. Due to space concerns,
|
||||||
|
conditional breakpoints will be shown as "CBP: ...", normal breakpoints
|
||||||
|
as "BP: ...", read traps as "RTrap: ..." and write traps as "WTrap: ...".
|
||||||
|
See the "Breakpoints" section for details.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(I)</u> CPU Registers</h2>
|
||||||
|
<p>This displays the current CPU state, as shown:</p>
|
||||||
|
<p><img src="graphics/debugger_cpuregs.png"></p>
|
||||||
|
<p>All the registers and flags are displayed, and can be changed by
|
||||||
|
double-clicking on them. Flags are toggled on double-click. Selected registers
|
||||||
|
here can also be changed by using the "Data Operations" buttons, further
|
||||||
|
described in (J).</p>
|
||||||
<p>There's not much else to say about the CPU widget: if you know 6502
|
<p>There's not much else to say about the CPU widget: if you know 6502
|
||||||
assembly, it's pretty self-explanatory. If you don't, well, you should
|
assembly, it's pretty self-explanatory. If you don't, well, you should
|
||||||
learn :)</p>
|
learn :)</p>
|
||||||
|
|
||||||
<h2>RAM Widget</h2>
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(J)</u> Data Operations buttons</h2>
|
||||||
|
<p>These buttons can be used to change values in either CPU Registers (I), or
|
||||||
|
the RIOT RAM (K), depending on which of these widgets is currently active.
|
||||||
|
<p><img src="graphics/debugger_dataops.png"></p>
|
||||||
|
<p>Each of these buttons also have a keyboard shortcut (indicated in square
|
||||||
|
brackets). In fact, many of the inputboxes in various parts of the debugger
|
||||||
|
respond to these same keyboard shortcuts. If in doubt, give them a try.</p>
|
||||||
|
<pre>
|
||||||
|
0 [z] - Set the current location/register to zero.
|
||||||
|
Inv [i !] - Invert the current location/register [toggle all its bits].
|
||||||
|
Neg [n] - Negate the current location/register [twos' complement negative].
|
||||||
|
++ [+ =] - Increment the current location/register
|
||||||
|
-- [-] - Decrement the current location/register
|
||||||
|
<< [< ,] - Shift the current location/register left.
|
||||||
|
>> [> .] - Shift the current location/register right.
|
||||||
|
|
||||||
|
Any bits shifted out of the location/register with << or >>
|
||||||
|
are lost (they will NOT end up in the Carry flag).
|
||||||
|
</pre>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(K)</u> M6532/RIOT RAM</h2>
|
||||||
<p>This is a spreadsheet-like GUI for inspecting and changing the contents
|
<p>This is a spreadsheet-like GUI for inspecting and changing the contents
|
||||||
of the 2600's RAM. All 128 bytes of RAM are visible on the screen at
|
of the 2600's RAM. All 128 bytes of RAM are visible on the screen at
|
||||||
once. You can navigate with either the mouse or the keyboard arrow keys.
|
once. You can navigate with either the mouse or the keyboard arrow keys.
|
||||||
To change a RAM location, either double-click on it or press Enter while
|
To change a RAM location, either double-click on it or press Enter while
|
||||||
it's highlighted. Enter the new value (hex only for now, sorry), then
|
it's highlighted. Enter the new value (hex only for now, sorry), then
|
||||||
press Enter to make the change. If you change your mind, press Escape
|
press Enter to make the change. If you change your mind, press Escape
|
||||||
and the original value will be restored.</p>
|
and the original value will be restored. The currently selected RAM cell
|
||||||
|
can also be changed by using the Data operations buttons/associated
|
||||||
|
shortcut keys (J).</p>
|
||||||
|
<p><img src="graphics/debugger_ram.png"></p>
|
||||||
|
<p>The 'Undo' button in the upper right should be self-explanatory; it will
|
||||||
|
undo the most previous operation to one cell only. The 'Rev' button is
|
||||||
|
more comprehensive. It will undo <i>all</i> operations on <i>all</i> cells
|
||||||
|
since you first made a change.</p>
|
||||||
|
<p>The UI objects at the bottom refer to the currently selected RAM cell.
|
||||||
|
The 'label' textbox shows the label attached to this RAM location (if any),
|
||||||
|
and the other textboxes show the decimal and binary equivalent value.
|
||||||
|
The remaining buttons to the right are further explained in section (L).</p>
|
||||||
|
|
||||||
<p>Nearby there are also some buttons to do various things to the
|
|
||||||
currently-selected memory location from the RAM widget or
|
|
||||||
CPU register from the CPU widget (whichever was most recently
|
|
||||||
selected). The buttons are:</p>
|
|
||||||
|
|
||||||
<pre>
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
0 - Set the current location/register to zero.
|
<br>
|
||||||
Inv - Invert the current location/register (toggle all its bits).
|
<h2><u>(L)</u> M6532/RIOT RAM (search/compare mode)</h2>
|
||||||
Neg - Negate the current location/register (twos' complement negative).
|
<p>The RIOT RAM widget also lets you search memory for values such as lives or remaining
|
||||||
++ - Increment the current location/register
|
|
||||||
-- - Decrement the current location/register
|
|
||||||
<< - Shift the current location/register left.
|
|
||||||
>> - Shift the current location/register right.
|
|
||||||
|
|
||||||
Any bits shifted out of the location/register with << or >>
|
|
||||||
are lost (they will NOT end up in the Carry flag).
|
|
||||||
</pre>
|
|
||||||
|
|
||||||
<p>This widget also lets you search memory for values such as lives or remaining
|
|
||||||
energy, but it's also very useful when debugging to determine which
|
energy, but it's also very useful when debugging to determine which
|
||||||
memory location holds which quantity.</p>
|
memory location holds which quantity.</p>
|
||||||
|
<p><img src="graphics/debugger_ramsearch.png"></p>
|
||||||
<p>To search RAM, click 'Search' and enter a byte value into the search editbox (0-255).
|
<p>To search RAM, click 'Srch' and enter a byte value into the search editbox (0-255).
|
||||||
All matching values will be highlighted in the RAM widget. If 'Search' is clicked
|
All matching values will be highlighted in the RAM widget. If 'Search' is clicked
|
||||||
when the input is empty, all RAM locations are searched.</p>
|
and the input is empty, all RAM locations are highlighted.</p>
|
||||||
|
|
||||||
<p>The 'Compare' button is used to compare the given value using all
|
<p>The 'Cmp' button is used to compare the given value using all
|
||||||
addresses currently highlighted. This may be an absolute number (such as 2),
|
addresses currently highlighted. This may be an absolute number (such as 2),
|
||||||
or a comparitive number (such as -1). Using a '+' or '-' operator
|
or a comparitive number (such as -1). Using a '+' or '-' operator
|
||||||
means 'search addresses for values that have changed by that amount'.</p>
|
means 'search addresses for values that have changed by that amount'.</p>
|
||||||
|
<p>The 'Rset' button resets the entire operation; it clears the highlighted
|
||||||
|
addresses and allows another search.</p>
|
||||||
<p>The following is an example of inspecting all addresses that have
|
<p>The following is an example of inspecting all addresses that have
|
||||||
decreased by 1:
|
decreased by 1:</p>
|
||||||
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Click 'Search' with empty input. All 128 address/values are highlighted</li>
|
<li>Click 'Srch' with empty input. All 128 address/values are highlighted</li>
|
||||||
<li>Exit debugger mode and lose a life, let your energy decrease, or
|
<li>Exit debugger mode and lose a life, let your energy decrease, or
|
||||||
do whatever it is you're trying to debug</li>
|
do whatever it is you're trying to debug</li>
|
||||||
<li>Enter debugger mode again, click 'Compare' and and enter a '-1' for input.
|
<li>Enter debugger mode again, click 'Cmp' and and enter a '-1' for input.
|
||||||
This finds all values that have decreased by 1 (as compared to their current
|
This finds all values that have decreased by 1 (as compared to their current
|
||||||
values)</li>
|
values)</li>
|
||||||
<li>Repeatedly following these steps may help to narrow number of
|
<li>Repeatedly following these steps may help to narrow number of
|
||||||
addresses under consideration, and eventually you'll find the
|
addresses under consideration, and eventually you'll find the
|
||||||
memory address you're looking for</li>
|
memory address you're looking for</li>
|
||||||
<li>The 'Reset' button restarts the whole procedure (ie, clear the highlighted
|
<li>Click 'Rset' when you're finished</li>
|
||||||
addresses and allow another search</li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<h2>TIA Display</h2>
|
|
||||||
|
|
||||||
<p>In the upper left of the debugger, you'll see the current frame of
|
|
||||||
video as generated by the TIA. If a complete frame hasn't been drawn,
|
|
||||||
the partial contents of the current frame will be displayed up to the
|
|
||||||
current scanline, with the contents of the old frame (in black &
|
|
||||||
white) filling the rest of the display.</p>
|
|
||||||
|
|
||||||
<p>You can use the "Scan+1" button or the prompt "scan" command to watch
|
|
||||||
the TIA draw the frame one scanline at a time.</p>
|
|
||||||
|
|
||||||
<p>To the right of the video display, there are indicators for:</p>
|
|
||||||
<ul>
|
|
||||||
<li>Frame - The current frame number, since this ROM was loaded or reset.</li>
|
|
||||||
<li>Scanline - The scanline that's currently being drawn. Scanline 0 is the one
|
|
||||||
on which VSYNC is cleared (after being set for 3 scanlines, as per the Stella
|
|
||||||
Programmer's Guide)</li>
|
|
||||||
<li>F. Cycle - The number of CPU cycles that have been executed this frame, since
|
|
||||||
VSYNC was cleared at scanline 0.</li>
|
|
||||||
<li>S. Cycle - The number of CPU cycles that have been executed since the beginning
|
|
||||||
of the current scanline.</li>
|
|
||||||
<li>VSYNC and VBLANK indicators</li>
|
|
||||||
<li>Pixel Pos. - The current number of visible color clocks that have been displayed on
|
|
||||||
the current scanline, starting from the beginning of the Horizontal Blank period.
|
|
||||||
During HBLANK, this value will be negative (representing the number of clocks
|
|
||||||
until the first visible one). Since there are 68 color clocks per HBLANK and
|
|
||||||
160 visible clocks per scanline, the Pixel Position will range from -68 to 159.</li>
|
|
||||||
<li>Color Clk. - The current number of total color clocks since the beginning of this
|
|
||||||
scanline's HBLANK. This counter starts at zero, but otherwise displays the same
|
|
||||||
information as the Pixel Position (so Color Clock will always be 68 more than Pixel
|
|
||||||
Position, and will range from 0 to 228).</li>
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<p>Below the indicators is the TIA Zoom area. This allows you to enlarge
|
|
||||||
part of the TIA display, so you can see fine details. To set the zoom
|
|
||||||
region, right-click on the TIA display and choose "Set Zoom Position". To
|
|
||||||
set the magnification level, right-click on the TIA Zoom area and choose
|
|
||||||
2x, 4x, or 8x from the pop-up menu.</p>
|
|
||||||
|
|
||||||
<p>Below the TIA Zoom, there is a status line that shows the reason the
|
|
||||||
debugger was entered (if a breakpoint/trap was hit). This isn't really
|
|
||||||
part of the TIA display; see "Breakpoints" below for details.</p>
|
|
||||||
|
|
||||||
<p></p>
|
|
||||||
|
|
||||||
<h2>ROM Widget</h2>
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
|
<h2><u>(M)</u> ROM Listing</h2>
|
||||||
<p>The ROM Widget is a disassembly of the current bank of ROM. If a symbol
|
<p>The ROM Widget is a disassembly of the current bank of ROM. If a symbol
|
||||||
file is loaded, the disassembly will have labels. Even without a symbol
|
file is loaded, the disassembly will have labels. Even without a symbol
|
||||||
file, the standard TIA/RIOT labels will still be present.</p>
|
file, the standard TIA/RIOT labels will still be present.</p>
|
||||||
|
<p><img src="graphics/debugger_rom.png"></p>
|
||||||
|
|
||||||
<p>Each line of disassembly has four fields:</p>
|
<p>Each line of disassembly has four fields:</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Breakpoint - This is the area at the far left, to the left of the
|
<li>Breakpoint - This is the area at the far left, to the left of the
|
||||||
address. Normally there will be nothing there: this indicates that there's
|
address. Normally there will be nothing there: this indicates that there's
|
||||||
no breakpoint set at that address. You can set and clear breakpoints by
|
no breakpoint set at that address. You can set and clear breakpoints by
|
||||||
double-clicking in this area. When a breakpoint is set, there will be a
|
clicking in this area. When a breakpoint is set, there will be a
|
||||||
red square in this area. These are the same breakpoints as used
|
red circle in this area. These are the same breakpoints as used
|
||||||
by the "break" command, <b>not</b> the conditional "breakif" breakpoints
|
by the "break" command, <b>not</b> the conditional "breakif" breakpoints
|
||||||
(which makes sense: cond-breaks can break on any condition, the Program
|
(which makes sense: cond-breaks can break on any condition, the Program
|
||||||
Counter isn't necessarily involved).</li>
|
Counter isn't necessarily involved).</li>
|
||||||
|
@ -844,24 +897,27 @@ scroll to the current PC location.</p>
|
||||||
emulator: you can change ROM all you want within the debugger. The hex
|
emulator: you can change ROM all you want within the debugger. The hex
|
||||||
bytes in the ROM Widget are editable. Double-click on them to edit
|
bytes in the ROM Widget are editable. Double-click on them to edit
|
||||||
them. When you're done, press Enter to accept the changes or Escape to
|
them. When you're done, press Enter to accept the changes or Escape to
|
||||||
cancel them. Any time you edit ROM, there will be a short pause while
|
cancel them. Any time you edit ROM, there may be a short pause while
|
||||||
the ROM Widget disassembles the current bank again.</p>
|
the ROM Widget disassembles the current bank again.</p>
|
||||||
|
|
||||||
<p>Speaking of banks: Above the disassembly there's an indicator for the
|
<p>Speaking of banks: Above the disassembly there's an indicator for the
|
||||||
current bank and total number of banks. If there's more than one bank,
|
current bank and total number of banks. If there's more than one bank,
|
||||||
you can manually switch banks by double-clicking the bank number and enter
|
you can manually switch banks by double-clicking the bank number and enter
|
||||||
a new number. This won't work if the ROM only has one bank, of course.</p>
|
a new number (or using the shortcuts keys for inputboxes as described
|
||||||
|
in section (J). This won't work if the ROM only has one bank, of course.</p>
|
||||||
|
|
||||||
<p>If you patch your ROM, you'll want a way to save it. To do this,
|
<p>The ROM listing also contains a context menu, accessible by right-clicking
|
||||||
right-click on any line of the disassembly and choose "Save ROM" from the
|
anywhere in the listing:</p>
|
||||||
pop-up menu. You'll be asked for a filename, and then the ROM will be
|
<p><img src="graphics/debugger_romcmenu.png"></p>
|
||||||
saved. Note that the filename is considered relative to the <b>current</b>
|
<p>Currently, there are two options:</p>
|
||||||
directory, not the ROM or base directory. You can enter a full path,
|
<ul>
|
||||||
though, in which case it doesn't matter.<p>
|
<li><b>Save ROM</b>: A textbox will appear for you to enter filename,
|
||||||
|
and then the ROM will be saved. Note that the filename is considered
|
||||||
<p>There's one more thing you can do from the ROM Widget: you can set
|
relative to the <b>current</b> directory, not the ROM or base directory.
|
||||||
the Program Counter to the address of any disassembly line. Right-click
|
You can enter a full path, though, in which case it doesn't matter.</li>
|
||||||
on the line you want and choose "Set PC" from the pop-up menu.</p>
|
<li><b>Set PC</b>: Set the Program Counter to the address of the
|
||||||
|
disassembly line where the mouse was clicked.</li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
<h3>Limitations</h3>
|
<h3>Limitations</h3>
|
||||||
|
|
||||||
|
@ -896,20 +952,26 @@ if the PC hits $D010, even though it shouldn't)</li>
|
||||||
|
|
||||||
<p>These limitations will be addressed in a future release of Stella.</p>
|
<p>These limitations will be addressed in a future release of Stella.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
<h2>Global Buttons</h2>
|
<h2>Global Buttons</h2>
|
||||||
|
|
||||||
<p>There are also buttons on the right that always show up no matter which
|
<p>There are also buttons on the right that always show up no matter which
|
||||||
tab you're looking at. These are always active. They are: Step, Trace,
|
tab you're looking at. These are always active. They are: Step, Trace,
|
||||||
Frame+1, Scan+1 and Exit.</p>
|
Scan+1, Frame+1 and Exit.</p>
|
||||||
|
<p><img src="graphics/debugger_globalbuttons.png"></p>
|
||||||
|
|
||||||
<p>When you use these buttons, the prompt doesn't change. This means the
|
<p>When you use these buttons, the prompt doesn't change. This means the
|
||||||
status lines with the registers and disassembly will be "stale". You
|
status lines with the registers and disassembly will be "stale". You
|
||||||
can update them just by pressing Enter in the prompt.</p>
|
can update them just by pressing Enter in the prompt.</p>
|
||||||
|
|
||||||
<p>You can also use the Step, Trace, Frame+1 and Scan+1 buttons from anywhere in
|
<p>You can also use the Step, Trace, Scan+1 and Frame+1 buttons from anywhere in
|
||||||
the GUI via the keyboard, with Alt-S, Alt-T, Alt-F and Alt-L.</p>
|
the GUI via the keyboard, with Alt-S, Alt-T, Alt-L and Alt-F.</p>
|
||||||
|
|
||||||
|
|
||||||
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
|
<br>
|
||||||
<h2>Tutorial: How to hack a ROM</h2>
|
<h2>Tutorial: How to hack a ROM</h2>
|
||||||
|
|
||||||
<p>Here is a step-by-step guide that shows you how to use the debugger to
|
<p>Here is a step-by-step guide that shows you how to use the debugger to
|
||||||
|
@ -920,7 +982,7 @@ but it helps to know at least a little about 6502 programming.</p>
|
||||||
<li>Get the Atari Battlezone ROM image. Make sure you've got the
|
<li>Get the Atari Battlezone ROM image. Make sure you've got the
|
||||||
regular NTSC version. Load it up in Stella and press TAB to get to
|
regular NTSC version. Load it up in Stella and press TAB to get to
|
||||||
the main menu. From there, click on "Game Information". For "Name", it
|
the main menu. From there, click on "Game Information". For "Name", it
|
||||||
should say "Battlezone (1983) (Atari) [!]" and for MD5Sum it should say
|
should say "Battlezone (1983) (Atari)" and for MD5Sum it should say
|
||||||
"41f252a66c6301f1e8ab3612c19bc5d4". The rest of this tutorial assumes
|
"41f252a66c6301f1e8ab3612c19bc5d4". The rest of this tutorial assumes
|
||||||
you're using this version of the ROM; it may or may not work with the
|
you're using this version of the ROM; it may or may not work with the
|
||||||
PAL version, or with any of the various "hacked" versions floating around
|
PAL version, or with any of the various "hacked" versions floating around
|
||||||
|
@ -932,7 +994,7 @@ but it helps to know at least a little about 6502 programming.</p>
|
||||||
<li>Enter the debugger by pressing the ` (backquote) key. Don't get
|
<li>Enter the debugger by pressing the ` (backquote) key. Don't get
|
||||||
killed before you do this, though. You should still have all 5 lives.</li>
|
killed before you do this, though. You should still have all 5 lives.</li>
|
||||||
|
|
||||||
<li>In the RAM display, click the "Search" button and enter "5" for input.
|
<li>In the RAM display, click the "Search" button (labelled 'Srch') and enter "5" for input.
|
||||||
This searches RAM for your value and highlights all addresses that match
|
This searches RAM for your value and highlights all addresses that match
|
||||||
the input. You should see two addresses highlighted: "00a5" and "00ba".
|
the input. You should see two addresses highlighted: "00a5" and "00ba".
|
||||||
These are the only two addresses that currently have the value 5, so they're
|
These are the only two addresses that currently have the value 5, so they're
|
||||||
|
@ -948,7 +1010,7 @@ but it helps to know at least a little about 6502 programming.</p>
|
||||||
<li>Get killed! Ram an enemy tank, or let him shoot you. Wait for
|
<li>Get killed! Ram an enemy tank, or let him shoot you. Wait for
|
||||||
the explosion to finish. You will now have 4 lives.</li>
|
the explosion to finish. You will now have 4 lives.</li>
|
||||||
|
|
||||||
<li>Enter the debugger again. Click the "Compare" button in RAM widget and enter
|
<li>Enter the debugger again. Click the "Compare" button (labelled 'Cmp') in RAM widget and enter
|
||||||
a value of 4. Now the RAM widget should only show one highlighted address:
|
a value of 4. Now the RAM widget should only show one highlighted address:
|
||||||
"00ba". What we did was search within our previous results (the ones that
|
"00ba". What we did was search within our previous results (the ones that
|
||||||
were 5 before) for the new value 4. Address $00ba used to have the value 5,
|
were 5 before) for the new value 4. Address $00ba used to have the value 5,
|
||||||
|
@ -957,7 +1019,7 @@ but it helps to know at least a little about 6502 programming.</p>
|
||||||
|
|
||||||
<li>Test your theory. Go to the RAM display and change address $ba to
|
<li>Test your theory. Go to the RAM display and change address $ba to
|
||||||
some high number like $ff (you could use the Prompt instead: enter "ram
|
some high number like $ff (you could use the Prompt instead: enter "ram
|
||||||
$ba $ff"). Exit the debugger again. You should now see lots of lives
|
$ba $ff"). Exit the debugger again (or advance the frame). You should now see lots of lives
|
||||||
at the bottom of the screen (of course, there isn't room to display $ff
|
at the bottom of the screen (of course, there isn't room to display $ff
|
||||||
(255) of them!)... play the game, get killed a few times, notice that
|
(255) of them!)... play the game, get killed a few times, notice that
|
||||||
you have lots of lives.</li>
|
you have lots of lives.</li>
|
||||||
|
|
Before Width: | Height: | Size: 5.8 KiB After Width: | Height: | Size: 3.6 KiB |
After Width: | Height: | Size: 378 B |
After Width: | Height: | Size: 1.2 KiB |
After Width: | Height: | Size: 702 B |
After Width: | Height: | Size: 889 B |
After Width: | Height: | Size: 5.9 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 7.3 KiB |
After Width: | Height: | Size: 5.0 KiB |
After Width: | Height: | Size: 9.2 KiB |
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 1.7 KiB |
After Width: | Height: | Size: 2.3 KiB |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 1.2 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 5.2 KiB |
After Width: | Height: | Size: 3.6 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 4.1 KiB |
Before Width: | Height: | Size: 3.1 KiB After Width: | Height: | Size: 3.1 KiB |
|
@ -475,10 +475,10 @@
|
||||||
gzipped tar files</li>
|
gzipped tar files</li>
|
||||||
<li>If compiling the Stella executable using MinGW, use the same commands
|
<li>If compiling the Stella executable using MinGW, use the same commands
|
||||||
as specified under <i>Linux/UNIX - Compressed tarball</i></li>
|
as specified under <i>Linux/UNIX - Compressed tarball</i></li>
|
||||||
<li>If compiling using Visual C++ 7:</li>
|
<li>If compiling using Visual C++ 2008:</li>
|
||||||
<ul>
|
<ul>
|
||||||
<li>Open the <b>stella-<i>release</i>/src/win32/Stella.sln</b>
|
<li>Open the <b>stella-<i>release</i>/src/win32/Stella.sln</b>
|
||||||
file using Visual C++ 7</li>
|
file using Visual C++ 2008</li>
|
||||||
<li>Build the 'Stella' solution</li>
|
<li>Build the 'Stella' solution</li>
|
||||||
<li>Copy the <b>Stella.exe</b> file somewhere on your system</li>
|
<li>Copy the <b>Stella.exe</b> file somewhere on your system</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -577,13 +577,14 @@
|
||||||
for ROM files, snapshots, and other external paths. These items are accessible by clicking
|
for ROM files, snapshots, and other external paths. These items are accessible by clicking
|
||||||
the <b>Options => Config Files</b> buttons. Many other options can be set here,
|
the <b>Options => Config Files</b> buttons. Many other options can be set here,
|
||||||
but for now we'll concentrate on <i>Config Files</i> only:</p>
|
but for now we'll concentrate on <i>Config Files</i> only:</p>
|
||||||
<table>
|
<p><b>Config Files</b> dialog:</p>
|
||||||
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
<tr>
|
<tr>
|
||||||
<td><p><b>Config Files</b> dialog:</p><p><img src="graphics/launcher_options_files.png"></p></td>
|
<td><img src="graphics/launcher_options_files.png"></td>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td valign="top">
|
<td valign="top">
|
||||||
<table border="1" cellpadding="4">
|
<table border="1" cellpadding="4">
|
||||||
<tr><th>Item</th><th>Description</th><th>Commandline</th></tr>
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
||||||
<tr><td>Rom path</td><td>specifies location of ROM files</td><td>-romdir</td></tr>
|
<tr><td>Rom path</td><td>specifies location of ROM files</td><td>-romdir</td></tr>
|
||||||
<tr><td>State path</td><td>specifies location of state files</td><td>-statedir</td></tr>
|
<tr><td>State path</td><td>specifies location of state files</td><td>-statedir</td></tr>
|
||||||
<tr><td>Cheat file</td><td>specifies location of cheatfile database</td><td>-cheatfile</td></tr>
|
<tr><td>Cheat file</td><td>specifies location of cheatfile database</td><td>-cheatfile</td></tr>
|
||||||
|
@ -647,54 +648,50 @@
|
||||||
<td>OpenGL mode only. Specify the amount (as a percentage) to scale the
|
<td>OpenGL mode only. Specify the amount (as a percentage) to scale the
|
||||||
image width. Since many video modes do not use square pixels, you can
|
image width. Since many video modes do not use square pixels, you can
|
||||||
reduce width until the pixels appear square. Allowable values are
|
reduce width until the pixels appear square. Allowable values are
|
||||||
50 - 100; I find 85 - 90 gives the most authentic look.</td>
|
80 - 100; I find 85 - 90 gives the most authentic look.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-gl_fsmax <0|1></pre></td>
|
<td><pre>-gl_fsmax <1|0></pre></td>
|
||||||
<td>OpenGL mode only. Stretch TIA image while in fullscreen mode.</td>
|
<td>OpenGL mode only. Stretch TIA image while in fullscreen mode.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-gl_vsync <0|1></pre></td>
|
<td><pre>-gl_vsync <1|0></pre></td>
|
||||||
<td>OpenGL mode only. Synchronize screen updates to the vertical blank
|
<td>OpenGL mode only. Synchronize screen updates to the vertical blank
|
||||||
period. This can result in smoother updates, and eliminate tearing.</td>
|
period. This can result in smoother updates, and eliminate tearing.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-gl_texrect <0|1></pre></td>
|
<td><pre>-gl_texrect <1|0></pre></td>
|
||||||
<td>OpenGL mode only. Enable GL_TEXTURE_RECTANGLE extension. This causes
|
<td>OpenGL mode only. Enable GL_TEXTURE_RECTANGLE extension. This causes
|
||||||
problems for some people using ATI video cards.</td>
|
problems for some people using ATI video cards.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-zoom_tia <scaler></pre></td>
|
<td><pre>-tia_filter <filter></pre></td>
|
||||||
<td>Use the specified zoom level while in TIA/emulation mode.</td>
|
<td>Use the specified filter while in TIA/emulation mode. Currently,
|
||||||
|
this can be zoomZx, where Z={2..10}.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-zoom_ui <scaler></pre></td>
|
<td><pre>-fullscreen <1|0></pre></td>
|
||||||
<td>Use the specified scaler while in non-emulation mode (currently, the ROM
|
|
||||||
launcher and debugger).</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><pre>-fullscreen <0|1></pre></td>
|
|
||||||
<td>Play the game in fullscreen mode.</td>
|
<td>Play the game in fullscreen mode.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-fullres <WxH></pre></td>
|
<td><pre>-fullres <auto|WxH></pre></td>
|
||||||
<td>Use this resolution in fullscreen mode.</td>
|
<td>Use the given resolution in fullscreen mode. If 'auto', let Stella decide
|
||||||
|
which resolution to use.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-center <0|1></pre></td>
|
<td><pre>-center <1|0></pre></td>
|
||||||
<td>Centers game window (if possible).</td>
|
<td>Centers game window (if possible).</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-grabmouse <0|1></pre></td>
|
<td><pre>-grabmouse <1|0></pre></td>
|
||||||
<td>Keeps the mouse in the game window.</td>
|
<td>Keeps the mouse in the game window.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
@ -716,7 +713,7 @@
|
||||||
preferred method on laptops (and other low-powered devices)
|
preferred method on laptops (and other low-powered devices)
|
||||||
and when using GL VSync. Busy will emulate z26 busy-wait
|
and when using GL VSync. Busy will emulate z26 busy-wait
|
||||||
behaviour, and use all possible CPU time, but may eliminate
|
behaviour, and use all possible CPU time, but may eliminate
|
||||||
graphical 'tearing'.</td>
|
graphical 'tearing' in software mode.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -742,13 +739,15 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-freq <number></pre></td>
|
<td><pre>-freq <number></pre></td>
|
||||||
<td>Set sound sample output frequency (0 - 48000).
|
<td>Set sound sample output frequency (0 - 48000).
|
||||||
Default is 31400.</td>
|
Default is 31400. Do not change unless you experience sound
|
||||||
|
issues.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-tiafreq <number></pre></td>
|
<td><pre>-tiafreq <number></pre></td>
|
||||||
<td>Set sound sample generation frequency (0 - 48000).
|
<td>Set sound sample generation frequency (0 - 48000).
|
||||||
Default is 31400.</td>
|
Default is 31400. Do not change unless you experience sound
|
||||||
|
issues.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -758,7 +757,8 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-clipvol <1|0></pre></td>
|
<td><pre>-clipvol <1|0></pre></td>
|
||||||
<td>Enable volume clipping (eliminates popping).</td>
|
<td>Enable volume clipping (eliminates popping). Do not change
|
||||||
|
unless you experience sound issues.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -768,7 +768,7 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-showinfo <0|1></pre></td>
|
<td><pre>-showinfo <0|1></pre></td>
|
||||||
<td>Shows some game info while Stella is running.</td>
|
<td>Shows some game info on the commandline while Stella is running.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -781,7 +781,7 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-pspeed <number></pre></td>
|
<td><pre>-pspeed <number></pre></td>
|
||||||
<td>Speed of digital emulation for paddles (1-15).</td>
|
<td>Speed for digital emulation of paddles (1-15).</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -794,12 +794,6 @@
|
||||||
<td>Stelladaptor 2 emulates specified joystick port.</td>
|
<td>Stelladaptor 2 emulates specified joystick port.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><pre>-romviewer <0|1|2></pre></td>
|
|
||||||
<td>Hide ROM info viewer in ROM launcher mode (0), or use the
|
|
||||||
given zoom level (1 or 2).</td>
|
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-autoslot <1|0></pre></td>
|
<td><pre>-autoslot <1|0></pre></td>
|
||||||
<td>Automatically switch to the next available save state slot after
|
<td>Automatically switch to the next available save state slot after
|
||||||
|
@ -820,13 +814,7 @@
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-ss1x <0|1></pre></td>
|
<td><pre>-ss1x <0|1></pre></td>
|
||||||
<td>Ignore any scaling applied to the TIA image, and save
|
<td>Ignore any scaling applied to the TIA image, and save
|
||||||
snapshot in unscaled mode.</td>
|
snapshot in unscaled (1x) mode.</td>
|
||||||
</tr>
|
|
||||||
|
|
||||||
<tr>
|
|
||||||
<td><pre>-listrominfo</pre></td>
|
|
||||||
<td>Prints relevant contents of the Stella ROM database, one ROM per line,
|
|
||||||
and then exit Stella. This can be used for external frontends.</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -835,6 +823,12 @@
|
||||||
Stella.</td>
|
Stella.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><pre>-listrominfo</pre></td>
|
||||||
|
<td>Prints relevant contents of the Stella ROM database, one ROM per line,
|
||||||
|
and then exit Stella. This can be used for external frontends.</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-launcherres <WxH></pre></td>
|
<td><pre>-launcherres <WxH></pre></td>
|
||||||
<td>Set the size of the ROM launcher.</td>
|
<td>Set the size of the ROM launcher.</td>
|
||||||
|
@ -850,7 +844,13 @@
|
||||||
<td>Specifies which files to show in the ROM launcher
|
<td>Specifies which files to show in the ROM launcher
|
||||||
('allfiles' is self-explanatory, 'allroms' is all files
|
('allfiles' is self-explanatory, 'allroms' is all files
|
||||||
with valid rom extensions (currently: a26, bin, rom,
|
with valid rom extensions (currently: a26, bin, rom,
|
||||||
gz, zip), 'LIST' is a ':' separated list of valid extensions.</td>
|
gz, zip), 'LIST' is a ':' separated list of valid rom extensions.</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><pre>-romviewer <0|1|2></pre></td>
|
||||||
|
<td>Hide ROM info viewer in ROM launcher mode (0), or use the
|
||||||
|
given zoom level (1 or 2).</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -861,8 +861,9 @@
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-listdelay <delay></pre></td>
|
<td><pre>-listdelay <delay></pre></td>
|
||||||
<td>Set the amount of time to wait between successive keypresses in
|
<td>Set the amount of time to wait between treating successive
|
||||||
list widgets (value can range from 300-1000).</td>
|
keypresses as a single word in list widgets (value can range
|
||||||
|
from 300-1000).</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -870,6 +871,11 @@
|
||||||
<td>Set the number of lines a mousewheel will scroll in the UI.</td>
|
<td>Set the number of lines a mousewheel will scroll in the UI.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
|
<tr>
|
||||||
|
<td><pre>-romdir <dir></pre></td>
|
||||||
|
<td>Set the directory where the ROM launcher will start.</td>
|
||||||
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<td><pre>-statedir <dir></pre></td>
|
<td><pre>-statedir <dir></pre></td>
|
||||||
<td>Set the directory in which to save state files.</td>
|
<td>Set the directory in which to save state files.</td>
|
||||||
|
@ -1059,61 +1065,129 @@
|
||||||
<p><b>Options Menu</b> dialog:<br><br>
|
<p><b>Options Menu</b> dialog:<br><br>
|
||||||
<img src="graphics/options.png">
|
<img src="graphics/options.png">
|
||||||
<br><br>
|
<br><br>
|
||||||
|
<p><b>Video Settings</b> dialog:</p>
|
||||||
<p><b>Video Settings</b> dialog:<br><br>
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
<img src="graphics/options_video.png">
|
<tr>
|
||||||
<br><br><br>
|
<td><img src="graphics/options_video.png"></td>
|
||||||
|
<td> </td>
|
||||||
<p><b>Audio Settings</b> dialog:<br><br>
|
<td valign="top">
|
||||||
<img src="graphics/options_audio.png">
|
<table border="1" cellpadding="4">
|
||||||
<br><br><br>
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
||||||
|
<tr><td>Renderer (*)</td><td>use specified rendering mode (requires restart)</td><td>-video</td></tr>
|
||||||
<p><b>Input Settings</b> dialog:<br><br>
|
<tr><td>TIA Filter</td><td>filter for emulation mode </td><td>-tia_filter</td></tr>
|
||||||
<img src="graphics/options_input.png">
|
<tr><td>TIA Palette</td><td>palette for emulation mode</td><td>-palette</td></tr>
|
||||||
<p>This dialog is described in further detail in <b>Section 8 -
|
<tr><td>FS Res</td><td>resolution for fullscreen mode</td><td>-fullres</td></tr>
|
||||||
<a href="#Remapping">Event Remapping</a></b>.
|
<tr><td>Timing (*)</td><td>how to wait between frames (requires restart)</td><td>-timing</td></tr>
|
||||||
<br><br><br>
|
<tr><td>GL Filter</td><td>OpenGL filter mode</td><td>-gl_filter</td></tr>
|
||||||
|
<tr><td>GL Aspect</td><td>OpenGL width of window</td><td>-gl_aspect</td></tr>
|
||||||
<p><b>UI Settings</b> dialog:<br><br>
|
<tr><td>Framerate</td><td>frames per second in emulation mode</td><td>-framerate</td></tr>
|
||||||
<img src="graphics/options_ui.png">
|
<tr><td>Fullscreen mode</td><td>self-explanatory</td><td>-fullscreen</td></tr>
|
||||||
<p>All UI related items can be changed here. Such items include the width and
|
<tr><td>PAL color-loss</td><td>use PAL color-loss effect</td><td>-colorloss</td></tr>
|
||||||
height of the ROM launcher and debugger windows, etc. Note that most of the items
|
<tr><td>GL FS Stretch</td><td>stretch fullscreen OpenGL in emulation mode</td><td>-gl_fsmax</td></tr>
|
||||||
here require Stella to be restarted to take effect. Specific information about
|
<tr><td>GL VSync</td><td>enable OpenGL vertical synchronization</td><td>-gl_vsync</td></tr>
|
||||||
the ROM Info functionality is described in further detail in <b>Section 9 -
|
<tr><td>Center window (*)</td><td>attempt to center SDL window (requires restart)</td><td>-center</td></tr>
|
||||||
<a href="#ROMInfo">ROM Launcher</a></b>.
|
</table>
|
||||||
|
</td>
|
||||||
<br><br><br>
|
</tr>
|
||||||
|
</table>
|
||||||
<p><b>Audit ROMs</b> dialog:<br><br>
|
<br>
|
||||||
<img src="graphics/options_romaudit.png">
|
<p><b>Audio Settings</b> dialog:</p>
|
||||||
<p>This dialog is described in further detail in <b>Section 10 -
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
<a href="#ROMAudit">ROM Audit Mode</a></b>.
|
<tr>
|
||||||
<br><br><br>
|
<td><img src="graphics/options_audio.png"></td>
|
||||||
|
<td> </td>
|
||||||
<p><b>Game Information</b> dialog:<br><br>
|
<td valign="top">
|
||||||
<img src="graphics/options_gameinfo.png">
|
<table border="1" cellpadding="4">
|
||||||
<p>This dialog allows you to change all ROM properties as described in
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
||||||
<b>Section 16 - <a href="#Properties">Game Properties</a></b>.
|
<tr><td>Volume</td><td>self-explanatory</td><td>-volume</td></tr>
|
||||||
<br><br><br>
|
<tr><td>Fragment size</td><td>set size of audio buffers</td><td>-fragsize</td></tr>
|
||||||
|
<tr><td>Output freq</td><td>change sound output frequency (advanced)</td><td>-freq</td></tr>
|
||||||
<p><b>Help</b> dialog:<br><br>
|
<tr><td>TIA freq</td><td>change TIA output frequency (advanced)</td><td>-tiafreq</td></tr>
|
||||||
<img src="graphics/options_help.png">
|
<tr><td>Clip volume</td><td>Eliminate popping in sound generation (advanced)</td><td>-clipvol</td></tr>
|
||||||
<br><br><br>
|
<tr><td>Enable sound</td><td>self-explanatory</td><td>-sound</td></tr>
|
||||||
|
</table>
|
||||||
<p><b>About</b> dialog:<br><br>
|
</td>
|
||||||
<img src="graphics/options_about.png">
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<p><b>Input Settings</b> dialog:</p>
|
||||||
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
|
<tr>
|
||||||
|
<td><img src="graphics/options_input.png"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><br>This dialog is described in further detail in <b>Section 8 -
|
||||||
|
<a href="#Remapping">Event Remapping</a></b>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<p><b>UI Settings</b> dialog (3 tabs):</p>
|
||||||
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
|
<tr>
|
||||||
|
<td><img src="graphics/options_ui.png"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><br>This dialog is described in further detail in
|
||||||
|
<b>Section 9 - <a href="#ROMInfo">ROM Launcher</a></b>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
|
<tr>
|
||||||
|
<td><img src="graphics/options_debugger.png"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top">
|
||||||
|
<table border="1" cellpadding="4">
|
||||||
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
||||||
|
<tr><td>Debugger Width/Height</td><td>self-explanatory (requires restart)</td><td>-debuggerres</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
|
<tr>
|
||||||
|
<td><img src="graphics/options_misc.png"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top">
|
||||||
|
<table border="1" cellpadding="4">
|
||||||
|
<tr><th>Item</th><th>Brief description</th><th>For more information,<br>see Commandline</th></tr>
|
||||||
|
<tr><td>Interface Palette</td><td>palette to use for UI elements</td><td>-uipalette</td></tr>
|
||||||
|
<tr><td>List quick delay</td><td>time to wait between keypresses in listwidget</td><td>-listdelay</td></tr>
|
||||||
|
<tr><td>Mouse wheel scroll</td><td>number of lines mouse scroll will move in listwidget</td><td>-mscroll</td></tr>
|
||||||
|
</table>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<p><b>Audit ROMs</b> dialog:</p>
|
||||||
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
|
<tr>
|
||||||
|
<td><img src="graphics/romaudit.png"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><br>This dialog is described in further detail in
|
||||||
|
<b>Section 10 - <a href="#ROMAudit">ROM Audit Mode</a></b>.</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
<br>
|
||||||
|
<p><b>Game Properties</b> dialog:</p>
|
||||||
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
|
<tr>
|
||||||
|
<td><img src="graphics/options_gameinfo.png"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top"><br>This dialog allows you to change all ROM properties
|
||||||
|
as described in <b>Section 16 - <a href="#Properties">Game Properties</a></b>.
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
|
||||||
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
<br><br>
|
<br><br><br>
|
||||||
<p><h1>
|
<p><h1>
|
||||||
<a name="Keyboard">7. Keyboard Layout</a></h1>
|
<a name="Keyboard">7. Keyboard Layout</a></h1>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<p>The Atari 2600 console controls and controllers are mapped to the computer's
|
<p>The Atari 2600 console controls and controllers are mapped to the computer's
|
||||||
keyboard as shown in the following tables.</p>
|
keyboard as shown in the following tables. However, most of these events can be
|
||||||
|
remapped to other keys on your keyboard or buttons on your joystick (see <b>Section 8 -
|
||||||
<p>As of Stella 1.4, most of these events can be remapped to other keys on your keyboard
|
|
||||||
or buttons on your joystick (see <b>Section 8 -
|
|
||||||
<a href="#Remapping">Event Remapping</a></b>). The tables below show the default
|
<a href="#Remapping">Event Remapping</a></b>). The tables below show the default
|
||||||
settings.</p>
|
settings.</p>
|
||||||
|
|
||||||
|
@ -1632,7 +1706,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<p><b>Developer Keys (cannot be remapped)</b></p>
|
<p><b>Developer Keys in TIA mode (cannot be remapped)</b></p>
|
||||||
|
|
||||||
<table BORDER=2 cellpadding=5>
|
<table BORDER=2 cellpadding=5>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -1844,10 +1918,10 @@
|
||||||
<a name="Remapping">8. Event Remapping / Input Devices</a></h1>
|
<a name="Remapping">8. Event Remapping / Input Devices</a></h1>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<p>This version of Stella has event remapping. Almost every event in the emulator
|
<p>Almost every event in Stella can be remapped to another key on the keyboard or
|
||||||
can be remapped to another key on the keyboard or to buttons on up to eight
|
to buttons on up to eight joysticks/gamepads (see <b>Section 7 -
|
||||||
joysticks/gamepads (see <b>Section 7 - <a href="#Keyboard">Keyboard Layout</a></b>
|
<a href="#Keyboard">Keyboard Layout</a></b> for those events which can/cannot be
|
||||||
for those events which can/cannot be remapped).</p>
|
remapped).</p>
|
||||||
|
|
||||||
<p>Note that there are currently two separate event modes in Stella; emulation
|
<p>Note that there are currently two separate event modes in Stella; emulation
|
||||||
mode and user-interface (UI) mode. Each mode has separate mappings, so (for example)
|
mode and user-interface (UI) mode. Each mode has separate mappings, so (for example)
|
||||||
|
@ -1859,7 +1933,7 @@
|
||||||
|
|
||||||
<p>To remap an event:
|
<p>To remap an event:
|
||||||
<ol>
|
<ol>
|
||||||
<li>Enter options menu and click the 'Input Settings' button.</li>
|
<li>Enter <b>Options menu</b> and click the <b>Input Settings</b> button.</li>
|
||||||
<li>If you wish to remap emulation events, click the 'Emul. Events' tab.
|
<li>If you wish to remap emulation events, click the 'Emul. Events' tab.
|
||||||
Otherwise, click the 'UI Events' tab for user interface events.</li>
|
Otherwise, click the 'UI Events' tab for user interface events.</li>
|
||||||
<li>Select event you want to remap and click the 'Map' button.</li>
|
<li>Select event you want to remap and click the 'Map' button.</li>
|
||||||
|
@ -1913,7 +1987,7 @@
|
||||||
|
|
||||||
<p>Several options are configurable in the ROM launcher. The size of the
|
<p>Several options are configurable in the ROM launcher. The size of the
|
||||||
launcher and fonts, as well as the 'ROM info viewer' can be changed in
|
launcher and fonts, as well as the 'ROM info viewer' can be changed in
|
||||||
<b>UI Settings/Launcher</b> dialog, as shown below:</p>
|
<b>UI Settings => Launcher</b> dialog, as shown below:</p>
|
||||||
<img src="graphics/launcher_options.png">
|
<img src="graphics/launcher_options.png">
|
||||||
<p>Most of the options are self-explanatory, except for the 'ROM Info
|
<p>Most of the options are self-explanatory, except for the 'ROM Info
|
||||||
viewer', which is described below.</p>
|
viewer', which is described below.</p>
|
||||||
|
@ -1959,10 +2033,28 @@
|
||||||
dialog will cause all ROMs launched after that to use those properties
|
dialog will cause all ROMs launched after that to use those properties
|
||||||
you specify. Clicking <b>Default</b> will disable its functionality,
|
you specify. Clicking <b>Default</b> will disable its functionality,
|
||||||
and use ROM properties as defined by the ROM itself. The dialog is as
|
and use ROM properties as defined by the ROM itself. The dialog is as
|
||||||
follows:</p>
|
follows (See <b>Section 16 - <a href="#Properties">Game Properties</a></b>
|
||||||
<p><img src="graphics/launcher_override.png"></p>
|
for more information concerning ROM properties):</p>
|
||||||
<p>See <b>Section 16 - <a href="#Properties">Game Properties</a></b>
|
<table border="5" cellpadding="2" frame="box" rules="none">
|
||||||
for more information concerning ROM properties.</p></li>
|
<tr>
|
||||||
|
<td><img src="graphics/launcher_override.png"></td>
|
||||||
|
<td> </td>
|
||||||
|
<td valign="top">
|
||||||
|
<table border="1" cellpadding="4">
|
||||||
|
<tr><th>Item</th><th>For more information,<br>see Commandline</th></tr>
|
||||||
|
<tr><td>Bankswitch type</td><td>-bs</td></tr>
|
||||||
|
<tr><td>Left Difficulty</td><td>-ld</td></tr>
|
||||||
|
<tr><td>Right Difficulty</td><td>-rd</td></tr>
|
||||||
|
<tr><td>TV Type</td><td>-tv</td></tr>
|
||||||
|
<tr><td>Hold Select down</td><td>-holdselect</td></tr>
|
||||||
|
<tr><td>Hold Reset down</td><td>-holdreset</td></tr>
|
||||||
|
<tr><td>Hold Button 0 down</td><td>-holdbutton0</td></tr>
|
||||||
|
</table>
|
||||||
|
<p></p>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</li>
|
||||||
|
|
||||||
<li><p><b>Filter listing</b>: Selecting this option shows a dialog whereby
|
<li><p><b>Filter listing</b>: Selecting this option shows a dialog whereby
|
||||||
one can filter the types of files shown in the listing. The dialog is as
|
one can filter the types of files shown in the listing. The dialog is as
|
||||||
|
@ -1996,7 +2088,7 @@
|
||||||
ROMs in DOS 8.3 naming format, and wish the filenames to be more descriptive,
|
ROMs in DOS 8.3 naming format, and wish the filenames to be more descriptive,
|
||||||
or the current filenames are too large to see in the launcher.</p>
|
or the current filenames are too large to see in the launcher.</p>
|
||||||
|
|
||||||
<p>This feature is accessible from Options -> Audit ROMs, and is only
|
<p>This feature is accessible from <b>Options => Audit ROMs</b>, and is only
|
||||||
available while in ROM launcher mode. The dialog box for this feature
|
available while in ROM launcher mode. The dialog box for this feature
|
||||||
is as follows:</p>
|
is as follows:</p>
|
||||||
<img src="graphics/romaudit.png">
|
<img src="graphics/romaudit.png">
|
||||||
|
@ -2032,8 +2124,8 @@
|
||||||
|
|
||||||
<p>Stella can use up to <b>two</b> Stelladaptors; any extra ones are ignored.
|
<p>Stella can use up to <b>two</b> Stelladaptors; any extra ones are ignored.
|
||||||
Stelladaptor devices will be automatically detected and configured. Devices
|
Stelladaptor devices will be automatically detected and configured. Devices
|
||||||
can be plugged/unplugged while the emulation is running; Stella will detect the
|
can be plugged/unplugged while the emulator is running, although you will need
|
||||||
change and act accordingly.</p>
|
to restart the game currently being emulated.</p>
|
||||||
|
|
||||||
<p>The detection and configuration is as follows:
|
<p>The detection and configuration is as follows:
|
||||||
|
|
||||||
|
@ -2061,7 +2153,7 @@
|
||||||
|
|
||||||
<p>Stella supports a real AtariVox device for the speech/SpeakJet portion
|
<p>Stella supports a real AtariVox device for the speech/SpeakJet portion
|
||||||
of the controller. You will need a real AtariVox device, located
|
of the controller. You will need a real AtariVox device, located
|
||||||
<a href="http://www.atariage.com/store/product_info.php?products_id=295">here</a>,
|
<a href=" ">here</a>,
|
||||||
as well as some means of connecting it to your computer (some sort of
|
as well as some means of connecting it to your computer (some sort of
|
||||||
serial port/USB adaptor). There should be drivers for your serial convertor,
|
serial port/USB adaptor). There should be drivers for your serial convertor,
|
||||||
which allow your particular operating system to 'see' the device. Configuring
|
which allow your particular operating system to 'see' the device. Configuring
|
||||||
|
@ -2125,7 +2217,8 @@
|
||||||
|
|
||||||
<p><ul>
|
<p><ul>
|
||||||
<li>Developer key-combo shortcuts, used to change TIA state dynamically
|
<li>Developer key-combo shortcuts, used to change TIA state dynamically
|
||||||
(ie, while the emulation is still running). See <b>Section 7 -
|
(ie, while the emulation is still running). See the <b>Developer Keys
|
||||||
|
in TIA mode</b> options under <b>Section 7 -
|
||||||
<a href="#Keyboard">Keyboard Layout</a></b> for more information.</li>
|
<a href="#Keyboard">Keyboard Layout</a></b> for more information.</li>
|
||||||
|
|
||||||
<li>Commandline options influencing emulation state. See the <b>Command
|
<li>Commandline options influencing emulation state. See the <b>Command
|
||||||
|
@ -2224,12 +2317,12 @@
|
||||||
|
|
||||||
|
|
||||||
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
<!-- ///////////////////////////////////////////////////////////////////////// -->
|
||||||
<br><br>
|
<br><br><br>
|
||||||
<p><h1>
|
<p><h1>
|
||||||
<a name="Cheats">15. Cheatcode Manager</a></h1>
|
<a name="Cheats">15. Cheatcode Manager</a></h1>
|
||||||
<hr>
|
<hr>
|
||||||
|
|
||||||
<p>Stella 2.0 contains support for Bob Colbert's Cheetah cheat codes, as
|
<p>Stella contains support for Bob Colbert's Cheetah cheat codes, as
|
||||||
well as an extended Stella-specific type of cheat code that works on
|
well as an extended Stella-specific type of cheat code that works on
|
||||||
bankswitched ROMs.</p>
|
bankswitched ROMs.</p>
|
||||||
|
|
||||||
|
|
|
@ -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.156 2009-01-05 22:05:35 stephena Exp $
|
// $Id: Settings.cxx,v 1.157 2009-01-13 14:45:34 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include <cassert>
|
#include <cassert>
|
||||||
|
@ -227,7 +227,7 @@ void Settings::validate()
|
||||||
setInternal("gl_filter", "nearest");
|
setInternal("gl_filter", "nearest");
|
||||||
|
|
||||||
i = getInt("gl_aspect");
|
i = getInt("gl_aspect");
|
||||||
if(i < 50 || i > 100)
|
if(i < 80 || i > 100)
|
||||||
setInternal("gl_aspect", "100");
|
setInternal("gl_aspect", "100");
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -279,6 +279,7 @@ void Settings::usage()
|
||||||
<< endl
|
<< endl
|
||||||
<< "Usage: stella [options ...] romfile" << endl
|
<< "Usage: stella [options ...] romfile" << endl
|
||||||
<< " Run without any options or romfile to use the ROM launcher" << endl
|
<< " Run without any options or romfile to use the ROM launcher" << endl
|
||||||
|
<< " Consult the manual for more in-depth information" << endl
|
||||||
<< endl
|
<< endl
|
||||||
<< "Valid options are:" << endl
|
<< "Valid options are:" << endl
|
||||||
<< endl
|
<< endl
|
||||||
|
@ -319,26 +320,25 @@ void Settings::usage()
|
||||||
<< endl
|
<< endl
|
||||||
#endif
|
#endif
|
||||||
<< " -cheat <code> Use the specified cheatcode (see manual for description)\n"
|
<< " -cheat <code> Use the specified cheatcode (see manual for description)\n"
|
||||||
<< " -showinfo <1|0> Shows some game info\n"
|
<< " -showinfo <1|0> Shows some game info on commandline\n"
|
||||||
<< " -joydeadzone <number> Sets 'deadzone' area for analog joysticks (0-29)\n"
|
<< " -joydeadzone <number> Sets 'deadzone' area for analog joysticks (0-29)\n"
|
||||||
<< " -pspeed <number> Speed of digital emulated paddle movement (1-15)\n"
|
<< " -pspeed <number> Speed of digital emulated paddle movement (1-15)\n"
|
||||||
<< " -sa1 <left|right> Stelladaptor 1 emulates specified joystick port\n"
|
<< " -sa1 <left|right> Stelladaptor 1 emulates specified joystick port\n"
|
||||||
<< " -sa2 <left|right> Stelladaptor 2 emulates specified joystick port\n"
|
<< " -sa2 <left|right> Stelladaptor 2 emulates specified joystick port\n"
|
||||||
<< " -romviewer <0|1|2> Show ROM info viewer at given zoom level in ROM launcher (0 for off)\n"
|
|
||||||
<< " -autoslot <1|0> Automatically switch to next save slot when state saving\n"
|
<< " -autoslot <1|0> Automatically switch to next save slot when state saving\n"
|
||||||
<< " -ssdir <path> The directory to save snapshot files to\n"
|
<< " -ssdir <path> The directory to save snapshot files to\n"
|
||||||
<< " -sssingle <1|0> Generate single snapshot instead of many\n"
|
<< " -sssingle <1|0> Generate single snapshot instead of many\n"
|
||||||
<< " -ss1x <1|0> Generate TIA snapshot in 1x mode (ignore scaling)\n"
|
<< " -ss1x <1|0> Generate TIA snapshot in 1x mode (ignore scaling)\n"
|
||||||
<< " -stats <1|0> Overlay console info during emulation\n"
|
|
||||||
<< endl
|
<< endl
|
||||||
<< " -listrominfo Display contents of stella.pro, one line per ROM entry\n"
|
|
||||||
<< " -rominfo <rom> Display detailed information for the given ROM\n"
|
<< " -rominfo <rom> Display detailed information for the given ROM\n"
|
||||||
|
<< " -listrominfo Display contents of stella.pro, one line per ROM entry\n"
|
||||||
<< " -launcherres <WxH> The resolution to use in ROM launcher mode\n"
|
<< " -launcherres <WxH> The resolution to use in ROM launcher mode\n"
|
||||||
<< " -launcherfont <small|medium| Use the specified font in the ROM launcher\n"
|
<< " -launcherfont <small|medium| Use the specified font in the ROM launcher\n"
|
||||||
<< " large>\n"
|
<< " large>\n"
|
||||||
<< " -launcherexts <allfiles| Show files with the given extensions in ROM launcher\n"
|
<< " -launcherexts <allfiles| Show files with the given extensions in ROM launcher\n"
|
||||||
<< " allroms| (exts is a ':' separated list of extensions\n"
|
<< " allroms| (exts is a ':' separated list of extensions\n"
|
||||||
<< " exts\n"
|
<< " exts\n"
|
||||||
|
<< " -romviewer <0|1|2> Show ROM info viewer at given zoom level in ROM launcher (0 for off)\n"
|
||||||
<< " -uipalette <1|2> Used the specified palette for UI elements\n"
|
<< " -uipalette <1|2> Used the specified palette for UI elements\n"
|
||||||
<< " -listdelay <delay> Time to wait between keypresses in list widgets (300-1000)\n"
|
<< " -listdelay <delay> Time to wait between keypresses in list widgets (300-1000)\n"
|
||||||
<< " -mwheel <lines> Number of lines the mouse wheel will scroll in UI\n"
|
<< " -mwheel <lines> Number of lines the mouse wheel will scroll in UI\n"
|
||||||
|
@ -346,7 +346,6 @@ void Settings::usage()
|
||||||
<< " -cheatfile <file> Full pathname of cheatfile database\n"
|
<< " -cheatfile <file> Full pathname of cheatfile database\n"
|
||||||
<< " -palettefile <file> Full pathname of user-defined palette file\n"
|
<< " -palettefile <file> Full pathname of user-defined palette file\n"
|
||||||
<< " -propsfile <file> Full pathname of ROM properties file\n"
|
<< " -propsfile <file> Full pathname of ROM properties file\n"
|
||||||
<< " -tiafloat <1|0> Set unused TIA pins floating on a read/peek\n"
|
|
||||||
<< " -avoxport <name> The name of the serial port where an AtariVox is connected\n"
|
<< " -avoxport <name> The name of the serial port where an AtariVox is connected\n"
|
||||||
<< " -help Show the text you're now reading\n"
|
<< " -help Show the text you're now reading\n"
|
||||||
#ifdef DEBUGGER_SUPPORT
|
#ifdef DEBUGGER_SUPPORT
|
||||||
|
@ -360,6 +359,8 @@ void Settings::usage()
|
||||||
<< " -holdreset Start the emulator with the Game Reset switch held down\n"
|
<< " -holdreset Start the emulator with the Game Reset switch held down\n"
|
||||||
<< " -holdselect Start the emulator with the Game Select switch held down\n"
|
<< " -holdselect Start the emulator with the Game Select switch held down\n"
|
||||||
<< " -holdbutton0 Start the emulator with the left joystick button held down\n"
|
<< " -holdbutton0 Start the emulator with the left joystick button held down\n"
|
||||||
|
<< " -stats <1|0> Overlay console info during emulation\n"
|
||||||
|
<< " -tiafloat <1|0> Set unused TIA pins floating on a read/peek\n"
|
||||||
<< endl
|
<< endl
|
||||||
<< " -bs <arg> Sets the 'Cartridge.Type' (bankswitch) property\n"
|
<< " -bs <arg> Sets the 'Cartridge.Type' (bankswitch) property\n"
|
||||||
<< " -type <arg> Same as using -bs\n"
|
<< " -type <arg> Same as using -bs\n"
|
||||||
|
|
|
@ -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: M6502Hi.cxx,v 1.23 2009-01-01 18:13:38 stephena Exp $
|
// $Id: M6502Hi.cxx,v 1.24 2009-01-13 14:45:34 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "M6502Hi.hxx"
|
#include "M6502Hi.hxx"
|
||||||
|
@ -57,7 +57,7 @@ inline uInt8 M6502High::peek(uInt16 address)
|
||||||
if(myReadTraps != NULL && myReadTraps->isSet(address))
|
if(myReadTraps != NULL && myReadTraps->isSet(address))
|
||||||
{
|
{
|
||||||
myJustHitTrapFlag = true;
|
myJustHitTrapFlag = true;
|
||||||
myHitTrapInfo.message = "Read trap: ";
|
myHitTrapInfo.message = "RTrap: ";
|
||||||
myHitTrapInfo.address = address;
|
myHitTrapInfo.address = address;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -81,7 +81,7 @@ inline void M6502High::poke(uInt16 address, uInt8 value)
|
||||||
if(myWriteTraps != NULL && myWriteTraps->isSet(address))
|
if(myWriteTraps != NULL && myWriteTraps->isSet(address))
|
||||||
{
|
{
|
||||||
myJustHitTrapFlag = true;
|
myJustHitTrapFlag = true;
|
||||||
myHitTrapInfo.message = "Write trap: ";
|
myHitTrapInfo.message = "WTrap: ";
|
||||||
myHitTrapInfo.address = address;
|
myHitTrapInfo.address = address;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -118,7 +118,7 @@ bool M6502High::execute(uInt32 number)
|
||||||
{
|
{
|
||||||
if(myBreakPoints->isSet(PC))
|
if(myBreakPoints->isSet(PC))
|
||||||
{
|
{
|
||||||
if(myDebugger->start("Breakpoint hit: ", PC))
|
if(myDebugger->start("BP: ", PC))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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: M6502Low.cxx,v 1.16 2009-01-01 18:13:38 stephena Exp $
|
// $Id: M6502Low.cxx,v 1.17 2009-01-13 14:45:34 stephena Exp $
|
||||||
//============================================================================
|
//============================================================================
|
||||||
|
|
||||||
#include "M6502Low.hxx"
|
#include "M6502Low.hxx"
|
||||||
|
@ -47,7 +47,7 @@ inline uInt8 M6502Low::peek(uInt16 address)
|
||||||
if(myReadTraps != NULL && myReadTraps->isSet(address))
|
if(myReadTraps != NULL && myReadTraps->isSet(address))
|
||||||
{
|
{
|
||||||
myJustHitTrapFlag = true;
|
myJustHitTrapFlag = true;
|
||||||
myHitTrapInfo.message = "Read trap: ";
|
myHitTrapInfo.message = "RTrap: ";
|
||||||
myHitTrapInfo.address = address;
|
myHitTrapInfo.address = address;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -64,7 +64,7 @@ inline void M6502Low::poke(uInt16 address, uInt8 value)
|
||||||
if(myWriteTraps != NULL && myWriteTraps->isSet(address))
|
if(myWriteTraps != NULL && myWriteTraps->isSet(address))
|
||||||
{
|
{
|
||||||
myJustHitTrapFlag = true;
|
myJustHitTrapFlag = true;
|
||||||
myHitTrapInfo.message = "Write trap: ";
|
myHitTrapInfo.message = "WTrap: ";
|
||||||
myHitTrapInfo.address = address;
|
myHitTrapInfo.address = address;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -101,7 +101,7 @@ bool M6502Low::execute(uInt32 number)
|
||||||
{
|
{
|
||||||
if(myBreakPoints->isSet(PC))
|
if(myBreakPoints->isSet(PC))
|
||||||
{
|
{
|
||||||
if(myDebugger->start("Breakpoint hit: ", PC))
|
if(myDebugger->start("BP: ", PC))
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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.61 2009-01-06 23:02:18 stephena Exp $
|
// $Id: VideoDialog.cxx,v 1.62 2009-01-13 14:45:34 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
|
||||||
|
@ -126,7 +126,7 @@ VideoDialog::VideoDialog(OSystem* osystem, DialogContainer* parent,
|
||||||
myAspectRatioSlider =
|
myAspectRatioSlider =
|
||||||
new SliderWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
new SliderWidget(this, font, xpos, ypos, pwidth, lineHeight,
|
||||||
"GL Aspect: ", lwidth, kAspectRatioChanged);
|
"GL Aspect: ", lwidth, kAspectRatioChanged);
|
||||||
myAspectRatioSlider->setMinValue(50); myAspectRatioSlider->setMaxValue(100);
|
myAspectRatioSlider->setMinValue(80); myAspectRatioSlider->setMaxValue(100);
|
||||||
wid.push_back(myAspectRatioSlider);
|
wid.push_back(myAspectRatioSlider);
|
||||||
myAspectRatioLabel =
|
myAspectRatioLabel =
|
||||||
new StaticTextWidget(this, font, xpos + myAspectRatioSlider->getWidth() + 4,
|
new StaticTextWidget(this, font, xpos + myAspectRatioSlider->getWidth() + 4,
|
||||||
|
|