diff --git a/stella/Todo.txt b/stella/Todo.txt index 0800579be..d7701f67b 100644 --- a/stella/Todo.txt +++ b/stella/Todo.txt @@ -33,12 +33,7 @@ X * Add infrastructure to show all info gathered from a ROM (similar to what is currently displayed on the commandline). Add a UI part for this, so users aren't forced to use the commandline to see it. - * Research starting bank for 8K/F8 ROMs. Probably default should be 0 - instead of 1. - - * Add commandline argument to randomly generate startup bank for all ROMs - bigger than 4K. Shouldn't make a difference for all 'well-designed' ROMS, - but will pick up on errors when a ROM doesn't start from every bank. + * Fix issue with paddle support in Activision Casino ROM. * More work to the ROM launcher, including at least the following: X (1) Only show files with certain extensions (including a UI part to @@ -52,10 +47,20 @@ X (3) Have time between keypresses be configurable when jumping to files. X (4) Reload current listing (possibly tied to a RMB context menu). + * Add new TIA infrastructure with improved HMOVE emulation + + * 'Fixed Debug Colours' option as explained in the 'Stella 2.6.1 released' + thread, post #40 on AtariAge. Basically emulates no$2k6 behaviour. + * Research lockups in Stay Frosty ROM. Test out sample state file in AtariAge email. - * Fix issue with paddle support in Activision Casino ROM. + * Research starting bank for 8K/F8 ROMs. Probably default should be 0 + instead of 1. + + * Add commandline argument to randomly generate startup bank for all ROMs + bigger than 4K. Shouldn't make a difference for all 'well-designed' ROMS, + but will pick up on errors when a ROM doesn't start from every bank. * More support for copy and paste. @@ -66,15 +71,10 @@ X (4) Reload current listing (possibly tied to a RMB context menu). * Fix Props.cxx (or GameInfoDialog) to properly deal with quotes and backslashes in strings meant to be saved to the properties file. - * 'Fixed Debug Colours' option as explained in the 'Stella 2.6.1 released' - thread, post #40 on AtariAge. Basically emulates no$2k6 behaviour. - * Extra controllers (KidVid, Lightgun) * Fix "Tron Man Picture Cart" (32K Tigervision bankswitching) issue - * Add new TIA infrastructure with improved HMOVE emulation - * Possible 'trace mode' in debugger (generate a file containing all internal state) diff --git a/stella/docs/graphics/launcher_options_files.png b/stella/docs/graphics/launcher_options_files.png index 25ecbf177..4a8e1a23c 100644 Binary files a/stella/docs/graphics/launcher_options_files.png and b/stella/docs/graphics/launcher_options_files.png differ diff --git a/stella/docs/graphics/options.png b/stella/docs/graphics/options.png index 48956d49c..fbaa5854e 100644 Binary files a/stella/docs/graphics/options.png and b/stella/docs/graphics/options.png differ diff --git a/stella/docs/graphics/options_video.png b/stella/docs/graphics/options_video.png index c44e5bb89..fb7100742 100644 Binary files a/stella/docs/graphics/options_video.png and b/stella/docs/graphics/options_video.png differ diff --git a/stella/docs/graphics/rom_browser.png b/stella/docs/graphics/rom_browser.png index c0989a1db..3fca4021e 100644 Binary files a/stella/docs/graphics/rom_browser.png and b/stella/docs/graphics/rom_browser.png differ diff --git a/stella/docs/index.html b/stella/docs/index.html index b9f1b73da..83dcd664c 100644 --- a/stella/docs/index.html +++ b/stella/docs/index.html @@ -218,12 +218,15 @@ software. Stella is written in C++, which allows it to be ported to other operating systems and architectures. Since its original release Stella has been ported to AcornOS, AmigaOS, DOS, FreeBSD, Linux, MacOS, OpenStep, OS/2, - Sega Dreamcast, Unix, and Windows. + Unix, and Windows, as well as consoles such as Sega Dreamcast, GP2X, Nintendo + DS and Playstation Portable (among others).

-

New in Release 2.6.1

+

New in Release 2.7

@@ -288,8 +292,8 @@

  • Support for real Atari 2600 controllers using the Stelladaptor
  • Support for the speech portion of a real - - AtariVox device using a USB adaptor
  • + + AtariVox device connected to your PC using a USB adaptor
  • Supports EEPROM emulation for AtariVox and SaveKey controllers
  • Supports almost all known bankswitching schemes (let us know if there's one we missed)
  • Supports cartridge autodetection for almost all bankswitching schemes
  • @@ -336,11 +340,11 @@ the following:

    @@ -349,11 +353,12 @@

    The Mac version of Stella is designed to work on a Power Macintosh with the following:

    @@ -363,20 +368,22 @@ with the following:

    Other

    Stella is extremely portable, and in its lifetime has been ported to almost every - platform known. It is 32/64 bit clean in Linux/Unix and Windows (Win32/Win64), and - is expected to be compatible with 64-bit OSX as well. The Stella team is interested - in hearing about any problems you may encounter with diverse operating systems and - CPU types.

    + platform where the SDL library exists. It is 32/64 bit clean in Linux/Unix and Windows + (Win32/Win64), and is expected to be compatible with 64-bit OSX as well. The Stella + team is interested in hearing about any problems you may encounter with diverse + operating systems and CPU types.

    @@ -384,9 +391,11 @@

    3. Installation


    -

    Stella is distributed in both source and binary form. Once you have a Stella - distribution you should follow the instructions for your operating system given - below.

    +

    Stella is distributed in both source and binary form. In general, you should always + download and install the appropriate binary version. Compiling from source is only + recommended for developers, or if the binary version doesn't work for some reason. + Once you have a Stella distribution you should follow the instructions for your + operating system given below.

    If you have a supported joystick and driver installed and SDL can access the device, you can play games using joysticks.

    @@ -397,66 +406,84 @@

    Linux/UNIX

    Macintosh

    - -

    To install the Mac binary, simply download the DMG disk - image. Mount the disk image, then copy the StellaOSXrelease folder to - your hard drive.
    -

    +

    Windows

    @@ -539,30 +566,49 @@

    Integrated GUI

    -

    As of Stella version 2.0, there is an integrated GUI for all ports. This means - that using the commandline is no longer required (but commandline support is still - included for those who want to use it).

    +

    Stella contains an integrated GUI for all ports. Commandline support is also + available for those who want to use it.

    If you start Stella and do not specify a ROM image, it will start in 'ROM Launcher' mode:

    -

    The ROM browser, snapshot, and external file settings may be changed by - clicking the 'Options / Config Files' button:

    -

    +

    If this is your first time starting Stella, you'll probably want to set the locations + for ROM files, snapshots, and other external paths. These items are accessible by clicking + the Options => Config Files buttons. Many other options can be set here, + but for now we'll concentrate on Config Files only:

    + + + + + + +

    Config Files dialog:

         + + + + + + + + + + +
    ItemDescriptionCommandline
    Rom pathspecifies location of ROM files-romdir
    State pathspecifies location of state files-statedir
    Cheat filespecifies location of cheatfile database-cheatfile
    Palette filespecifies location of user palette-palettefile
    Properties file specifies location of external stella.pro database-propsfile
    Snapshot pathspecifies where to load/save snapshots-ssdir
    Multiple snapshotswhether to overwrite old snapshots-sssingle
    Snapshot in 1x modesave snapshot in 1x mode, without filtering-ss1x
    +
    -

    Selecting a new path for an item is done by clicking the appropriate button(s):

    -

    +

    Selecting a new path for an item is done by clicking the appropriate button(s) + (in this case, 'Rom path' was selected):

    +

    -

    You can start emulation by selecting a ROM and pressing 'Enter' or - clicking 'Select', or double-clicking a ROM.

    +

    Once you've changed your settings, you can start emulation by selecting a ROM + and pressing 'Enter' or clicking 'Select', or double-clicking a ROM.

    Command Line

    Stella can also be used from the commandline (assuming your operating system - has a commandline). When using this mode and specifying a ROM, the ROM launcher - is disabled.

    + has a commandline).

    To run Stella from the commandline, use the following format:

    @@ -1005,15 +1051,14 @@ 6. Changing Options
    -

    As of version 2.0, all settings can be changed within the integrated Options - GUI while Stella is running. The options are documented elsewhere in this manual - and are generally self-explanatory. The Options menu can be accessed from - the ROM launcher by clicking the 'Options' button, or in-game by pressing the - 'Tab' key.

    +

    All settings can be changed within the integrated Options UI while Stella is + running (unless otherwise noted - some settings require an application restart). + The Options menu can be accessed from the ROM launcher by clicking the + Options button, or in-game by pressing the 'Tab' key.

    Options Menu dialog:

    -


    +

    Video Settings dialog:

    @@ -2103,11 +2148,9 @@ the format was auto-detected as 'NTSC'.

  • Cartridge information. If the characters 'AUTO =>' are present, it means the bankswitch format was auto-detected as shown. The item - in round brackets indicates ROM size. The item in square brackets - indicates the starting bank(s) used by the cart. - For the given example, the bankswitch type was auto-detected as 4K, - the file size was 4K (4096 bytes), and the start bank was 0 - (since a 4K ROM has only one bank). FIXME - image must be updated
  • + in round brackets indicates ROM size. For the given example, + the bankswitch type was auto-detected as 4K, and the file size was + 4K (4096 bytes).

    diff --git a/stella/src/emucore/Cart.cxx b/stella/src/emucore/Cart.cxx index 7d878077b..f548a86d5 100644 --- a/stella/src/emucore/Cart.cxx +++ b/stella/src/emucore/Cart.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Cart.cxx,v 1.46 2009-01-01 18:13:35 stephena Exp $ +// $Id: Cart.cxx,v 1.47 2009-01-06 23:02:18 stephena Exp $ //============================================================================ #include @@ -489,4 +489,4 @@ Cartridge& Cartridge::operator = (const Cartridge&) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -string Cartridge::myAboutString; +string Cartridge::myAboutString= ""; diff --git a/stella/src/gui/Dialog.cxx b/stella/src/gui/Dialog.cxx index 25747463f..38485e6f1 100644 --- a/stella/src/gui/Dialog.cxx +++ b/stella/src/gui/Dialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Dialog.cxx,v 1.74 2009-01-01 18:13:38 stephena Exp $ +// $Id: Dialog.cxx,v 1.75 2009-01-06 23:02:18 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -567,27 +567,32 @@ Widget* Dialog::findWidget(int x, int y) } // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -void Dialog::addOKCancelBGroup(WidgetArray& wid, const GUI::Font& font) +void Dialog::addOKCancelBGroup(WidgetArray& wid, const GUI::Font& font, + const string& okText, const string& cancelText) { int buttonWidth = font.getStringWidth("Cancel") + 15; int buttonHeight = font.getLineHeight() + 4; ButtonWidget* b; #ifndef MAC_OSX b = new ButtonWidget(this, font, _w - 2 * (buttonWidth + 7), _h - buttonHeight - 10, - buttonWidth, buttonHeight, "OK", kOKCmd); + buttonWidth, buttonHeight, + okText == "" ? "OK" : okText, kOKCmd); wid.push_back(b); addOKWidget(b); b = new ButtonWidget(this, font, _w - (buttonWidth + 10), _h - buttonHeight - 10, - buttonWidth, buttonHeight, "Cancel", kCloseCmd); + buttonWidth, buttonHeight, + cancelText == "" ? "Cancel" : cancelText, kCloseCmd); wid.push_back(b); addCancelWidget(b); #else b = new ButtonWidget(this, font, _w - 2 * (buttonWidth + 7), _h - buttonHeight - 10, - buttonWidth, buttonHeight, "Cancel", kCloseCmd); + buttonWidth, buttonHeight, + cancelText == "" ? "Cancel" : cancelText, kCloseCmd); wid.push_back(b); addCancelWidget(b); b = new ButtonWidget(this, font, _w - (buttonWidth + 10), _h - buttonHeight - 10, - buttonWidth, buttonHeight, "OK", kOKCmd); + buttonWidth, buttonHeight, + okText == "" ? "OK" : okText, kOKCmd); wid.push_back(b); addOKWidget(b); #endif diff --git a/stella/src/gui/Dialog.hxx b/stella/src/gui/Dialog.hxx index 6f34fe6c6..8c1e980d1 100644 --- a/stella/src/gui/Dialog.hxx +++ b/stella/src/gui/Dialog.hxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: Dialog.hxx,v 1.42 2009-01-01 18:13:38 stephena Exp $ +// $Id: Dialog.hxx,v 1.43 2009-01-06 23:02:18 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -47,7 +47,7 @@ class TabWidget; This is the base class for all dialog boxes. @author Stephen Anthony - @version $Id: Dialog.hxx,v 1.42 2009-01-01 18:13:38 stephena Exp $ + @version $Id: Dialog.hxx,v 1.43 2009-01-06 23:02:18 stephena Exp $ */ class Dialog : public GuiObject { @@ -106,7 +106,9 @@ class Dialog : public GuiObject Widget* findWidget(int x, int y); // Find the widget at pos x,y if any - void addOKCancelBGroup(WidgetArray& wid, const GUI::Font& font); + void addOKCancelBGroup(WidgetArray& wid, const GUI::Font& font, + const string& okText = "", + const string& cancelText = ""); void setResult(int result) { _result = result; } int getResult() const { return _result; } diff --git a/stella/src/gui/RomAuditDialog.cxx b/stella/src/gui/RomAuditDialog.cxx index 38a149f06..93a16cd6b 100644 --- a/stella/src/gui/RomAuditDialog.cxx +++ b/stella/src/gui/RomAuditDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: RomAuditDialog.cxx,v 1.10 2009-01-05 19:44:30 stephena Exp $ +// $Id: RomAuditDialog.cxx,v 1.11 2009-01-06 23:02:18 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -86,7 +86,7 @@ RomAuditDialog::RomAuditDialog(OSystem* osystem, DialogContainer* parent, // Add OK and Cancel buttons wid.clear(); - addOKCancelBGroup(wid, font); + addOKCancelBGroup(wid, font, "Audit", "Done"); addBGroupToFocusList(wid); // Create file browser dialog diff --git a/stella/src/gui/VideoDialog.cxx b/stella/src/gui/VideoDialog.cxx index 22d3735c9..88fa6e968 100644 --- a/stella/src/gui/VideoDialog.cxx +++ b/stella/src/gui/VideoDialog.cxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: VideoDialog.cxx,v 1.60 2009-01-04 22:27:44 stephena Exp $ +// $Id: VideoDialog.cxx,v 1.61 2009-01-06 23:02:18 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -55,7 +55,7 @@ VideoDialog::VideoDialog(OSystem* osystem, DialogContainer* parent, // Set real dimensions _w = 46 * fontWidth + 10; - _h = 11 * (lineHeight + 4) + 10; + _h = 12 * (lineHeight + 4) + 10; xpos = 5; ypos = 10; @@ -104,6 +104,15 @@ VideoDialog::VideoDialog(OSystem* osystem, DialogContainer* parent, wid.push_back(myFSResPopup); ypos += lineHeight + 4; + // Timing to use between frames + items.clear(); + items.push_back("Sleep", "sleep"); + items.push_back("Busy-wait", "busy"); + myFrameTimingPopup = new PopUpWidget(this, font, xpos, ypos, pwidth, lineHeight, + items, "Timing (*): ", lwidth); + wid.push_back(myFrameTimingPopup); + ypos += lineHeight + 4; + // GL Video filter items.clear(); items.push_back("Linear", "linear"); @@ -235,9 +244,13 @@ void VideoDialog::loadConfig() myFSResPopup->setSelected( instance().settings().getString("fullres"), "auto"); + // Wait between frames + myFrameTimingPopup->setSelected( + instance().settings().getString("timing"), "sleep"); + // GL Filter setting myGLFilterPopup->setSelected( - instance().settings().getString("gl_filter"), "linear"); + instance().settings().getString("gl_filter"), "nearest"); myGLFilterPopup->setEnabled(gl); // GL aspect ratio setting @@ -286,6 +299,9 @@ void VideoDialog::saveConfig() // Fullscreen resolution instance().settings().setString("fullres", myFSResPopup->getSelectedTag()); + // Wait between frames + instance().settings().setString("timing", myFrameTimingPopup->getSelectedTag()); + // GL Filter setting instance().settings().setString("gl_filter", myGLFilterPopup->getSelectedTag()); @@ -333,7 +349,8 @@ void VideoDialog::setDefaults() #endif myTIAPalettePopup->setSelected("standard", ""); myFSResPopup->setSelected("auto", ""); - myGLFilterPopup->setSelected("linear", ""); + myFrameTimingPopup->setSelected("sleep", ""); + myGLFilterPopup->setSelected("nearest", ""); myAspectRatioSlider->setValue(100); myAspectRatioLabel->setLabel("100"); myFrameRateSlider->setValue(0); diff --git a/stella/src/gui/VideoDialog.hxx b/stella/src/gui/VideoDialog.hxx index 54cb0b232..5fdc126f3 100644 --- a/stella/src/gui/VideoDialog.hxx +++ b/stella/src/gui/VideoDialog.hxx @@ -13,7 +13,7 @@ // See the file "license" for information on usage and redistribution of // this file, and for a DISCLAIMER OF ALL WARRANTIES. // -// $Id: VideoDialog.hxx,v 1.28 2009-01-04 22:27:44 stephena Exp $ +// $Id: VideoDialog.hxx,v 1.29 2009-01-06 23:02:18 stephena Exp $ // // Based on code from ScummVM - Scumm Interpreter // Copyright (C) 2002-2004 The ScummVM project @@ -54,6 +54,7 @@ class VideoDialog : public Dialog PopUpWidget* myTIAFilterPopup; PopUpWidget* myTIAPalettePopup; PopUpWidget* myFSResPopup; + PopUpWidget* myFrameTimingPopup; PopUpWidget* myGLFilterPopup; SliderWidget* myAspectRatioSlider; StaticTextWidget* myAspectRatioLabel;