Stella - Atari 2600 Emulator

Started by TrekMD, March 05, 2013, 02:14:31 AM

Previous topic - Next topic

TrekMD



For those who use Stella to emulate the Atari 2600 on their computers, the newest version was just released, version 3.8.  Here is the changelog for this version:

* Huge changes to the sound system:
  - The sound code now uses 16-bit signed samples instead of 8-bit unsigned samples, making it more compatible with a wider variety of systems.
  - Improved sound output for several ROMs, including "Space Rocks" (the 'heartbeat' sound can now be clearly heard).
  - The 'volume clipping' option has been removed, since in 16-bit mode it's no longer needed.
  - The 'Tia freq' option has been removed.
  - Selecting more common sample rates (other than 31400) now works much better, but there are still a few ROMS (like Quadrun) where 31400Hz still works best.

* Many changes to handling ZIP archives:
  - Files in multiple levels are now recognized. This fixes issues in Windows where such files couldn't be loaded at all, and in all systems where ROMs with the same name (but in different directories) weren't being recognized.
  - ZIP contents are now handled more intelligently. Archives containing only one ROM are automatically loaded, whereas those with multiple files are treated as directories.
  - Opening an archive from the commandline now works as in the UI, where opening a multi-ROM archive will pop up the UI and show the archive contents (as a directory).
  - The ZIP code behind the scenes is now much faster by making use of caching (the old code was actually from 1998!).
  - This new 'archive' infrastructure may eventually lead to 7-Zip support, as well as 'virtual' formats (such as showing the list of files for 2in1/4in1/8in1/etc within the UI).

* Improved bankswitch autodetection for FA2 ROMs; 29K and 32K versions (meant for Harmony cart) are now recognized.

* Improved bankswitch autodetection for X07 ROMs (although there's only two known ROMs in existence, so the detection probably isn't robust).

* Tweaked bankswitch autodetection for the 0840, F8 and FE schemes; several homebrews that didn't run before now work correctly.

* Fixed regression in RIOT INTIM reads; at least one known ROM (Mr. Roboto Berzerk hack) wasn't working properly.

* Fixed bug in the debugger with RIOT INTIM/TIMINT display; reads were being done multiple times, changing the state of the registers and resulting in incorrect emulation.

* Worked around bug in debugger disassembly of zero-page RAM; for now, the resolving of address vs. data sections is turned off in such a case. This fixes lockups in 'Meltdown' ROM.

* Added support for different directories for saving/loading PNG files. These are set with the 'snapsavedir' and 'snaploaddir' commandline arguments (which replace the old 'snapdir'), and are also available within the UI.

* Changed 'eepromdir' commandline argument to 'nvramdir', and changed the default location to BASEDIR/nvram (where BASEDIR depends on your OS). This means all your EEPROM and Flash files will have to be manually moved to this new directory. This affects developers, and those people playing ROMs with AtariVox/SaveKey support as well as the newer 'Star Castle' FA2 ROMs.

* Updated included PNG and ZLIB libraries to latest stable version.


This version can be downloaded at the Stella Page.

Going to the final frontier, gaming...


onthinice

Thanks for the info TrekMD!

zapiy


Own: Jaguar, Lynx, Dreamcast, Saturn, MegaDrive, MegaCD, 32X, GameGear, PS3, PS, PSP, Wii, GameCube, N64, DS, GBA, GBC, GBP, GB,  Xbox, 3DO, CDi,  WonderSwan, WonderSwan Colour NGPC

TrekMD

OK, the next version of Stella is out, version 3.9.  Here is the changelog:

* Greatly extended functionality of the debugger disassembly:
- There is now a new tab which lists information specific to the cartridge bankswitching scheme in use. This includes the ability to modify internal state even for esoteric ROMs which don't follow the standard layout of 4K per bank.

- The debugger now generates DASM-compatible disassembled code, which can be saved to an external file. This disassembly is based on both a static and runtime analysis, and is extremely accurate. It also automatically differentiates between CODE/PGFX/GFX/DATA/ROW areas, whereas normal Distella only differentiates between CODE/GFX/ROW. For now, only single-bank (4K and smaller) ROMs are supported; support for multi-bank ROMs will come in a future release.

- The disassembly now recognizes various TIA/RIOT read/write mirrors, and marks them as such (for example, INPT4|$30 instead of INPT4 for address $3C). Special thanks to Omegamatrix for sample code and idea for this feature.

- ROMS less than 2K in size (so called 'Sub2K' ROMs) now show only the actual data in the binary. This means, for example, that a 256 byte ROM will show only 256 bytes in the disassembly, instead of padding duplicated data to 2K boundary.

- Fixed bug when entering patched bytes; the current number base wasn't being used.

- Fixed labelling in ROW directives; it wasn't accurately setting a label in the case where it occurred in the middle of the data.

- Added a new dialog for changing Distella settings, located by right-clicking the disassembly code.

- The commandline option 'dis.resolvedata' has been renamed to 'dis.resolve', with new usage (see manual for further details).

* Fixed regression in handling ZIP files (as compared to version 3.7.5) created with newer versions of the ZIP program. Related to this, added better error messages for invalid/missing/unreadable ROM files.

* Added 'snapname' commandline argument and associated UI item, for specifying whether snapshots should be saved using either the internal ROM database name or the actual ROM filename. This feature was present in older releases of Stella, and due to popular demand it's now back again. Related to this, added a new dialog specifically for the numerous snapshot-related items.

* Fixed bug in Linux/OSX versions when starting Stella for the first time; it was previously creating mislabeled directories to store settings, snapshots, etc.

* Fixed redundant "New console created" message when entering the same ROM multiple times from the ROM launcher.

* Updated profile database for "BasketBall" ROMs; the joysticks are now swapped by default, which allows one and two-player games to work correctly.

* SuperCharger/AR ROMs now ignore the 'ramrandom' setting, and start with RAM containing all zeroes. This seems to fix issues with Dragonstomper always starting in exactly the same state.

* Fixed issue when debugging CompuMate ROMs; keystrokes entered while debugging would be interpreted as typing on the CompuMate keyboard.

* Changed colour of the 'current PC indicator' in the debugger to match the one used for line selection. This makes it easier to see for those with problems seeing lighter colours.

* Improved functionality of the various pop-up dialogs and context menus in the UI; they can now be navigated more fully by the keyboard and mouse.

* Updated internal ROM properties database to ROM-Hunter version 9 (thanks go to RomHunter for his tireless research in this area). Related to this, updated the snapshot collection.

* Updated included PNG and ZLIB libraries to latest stable version.

Download version 3.9 here:  Stella

Going to the final frontier, gaming...


dougtitchmarsh

My retro and computing blog posts
Own: Jaguar, Lynx, 2600, Dreamcast, Saturn, MegaDrive, MegaCD, GameGear, PS, PSP, Wii, GameCube, N64, GBA, GB,  Xbox, 3DO,  WonderSwan,  NGPC, CD32, Amiga A1200, Spectrum 48k and +2, BBC B, C64

TrekMD

Absolutely!  Need to make sure everyone is caught up with the Stella updates.  :)

Going to the final frontier, gaming...


TrekMD

I haven't updated this thread in some time, so I thought I'd post an update since the latest stable version, 4.0, of Stella has been posted.  Here is the changelog:

* Ported Stella to SDL2, which brings many new features. Among the largest improvements is native hardware acceleration support for Windows (Direct3D) and Linux/OSX (OpenGL). It is also now possible to port Stella to iOS and Android devices using OpenGLES. Hardware acceleration is now required, which means up-to-date drivers are needed. Software rendering is still present, but is somewhat unoptimized and unsupported going forward.

* Fullscreen video modes now use the desktop resolution. Switching to fullscreen and back to windowed mode no longer rearranges icons on your desktop.

* TIA TV effects are now available in all video modes, since hardware acceleration is a requirement.

* Added a much more detailed view of cart extended RAM to a new debugger tab. Special thanks to SpiceWare for this implementation.

* Added preliminary support for 'DASH' bankswitching scheme by A. Davie.

* The AtariVox and SaveKey controllers now have the ability in the debugger to completely erase the virtual EEPROM data.

* Added 'savesnap' debugger prompt command, and also associated context menu item to the debugger TIA output area. This saves the current TIA image to a PNG file.

* Added 'hidecursor' commandline option, which allows to completely disable showing the mouse cursor (useful on systems that don't have a mouse).

* Removed 'uipalette' option, as the original palette is no longer supported.

* Updated included PNG library to latest stable version.

You can go to the link on the first post to get the latest version.

Going to the final frontier, gaming...


davyk

The disassembling feature is of particular interest to me. I have a thread over at atariage I created when I first starting cooking up my own PAL60 versions of 2600 games.

I've been using DiStella to create disassemblies from ROMs but it has a 2K/4K limit so I will be watching developments with interest.

TrekMD

Stella 4.2 has just been released...

  * Text input from non-US keyboard layouts is now supported.  Note that all text in Stella is still ASCII-only, but at least it can now be entered using a native layout.

  * Related to the text input changes, the debugger Alt-combo shortcuts have been changed; they now use the same key but with Control instead of Alt (Control-F for frame advance, etc).

  * Controllers are now detected dynamically by Stella.  This means that you can plug/unplug joysticks/paddles/etc while Stella is running, and they will be added and removed automatically.  Also fixed is
    a bug whereby sometimes custom joystick mappings weren't being saved.

  * The 'cpurandom' option is now broken down by register type, so you can selectively enable/disable randomization for each one.  The default is to disable randomization for all registers.

  * Fixed 'MDM' scheme to trigger bankswitching on writes to hotspots (previously it only triggered on reads).  Also, the scheme has been modified as originally designed by E. Blink; hotspots are now in the range $800-$BFF instead of $800-$FFF.

  * The OSX app-icon now includes 32x32 and 16x16 versions, so 'small' icons will be viewable in 'Finder', 'Get Info', etc.

  * The Linux port now uses an app-icon; this seems to be needed for some window managers.
 

The download link can be found on the page linked to on the first post.

Going to the final frontier, gaming...


TrekMD

Stella 4.5 has been released...

* The conversion to C++11 has begun :) From this point on, to build Stella you will need a C++11 compatible compiler (Visual Studio 2013, Clang 3.3, gcc 4.9, Xcode 6, etc). Eventually, this will bring more bug-free and (hopefully) faster code.

* Fixed major bug with joysticks, where mapping was being lost on reset, the app would crash when plugging/unplugging certain sticks, etc.

* Fixed major (but rare) crash that could occur when state files were zero'ed or corrupted.

* Added dialog which shows the internal joystick database (all the joysticks that Stella knows about) and the ability to remove (currently unplugged) joysticks from this database.

* Added preliminary support for 'WD' (Wickstead Design) bankswitching scheme, used for a previously unreleased prototype ROM.

* Improved ZIP file handling, so that it now works as a normal filesystem does (it properly shows nested files and directories).

* The debugger 'reset' command now does a complete system reset, instead of simply setting the PC to the reset vector address.

* The 'listdelay' command now accepts a value of zero, indicating that list-skipping (jumping to a line in a list by keypress) is disabled.

* The 'ctrlcombo' command now has a GUI item, allowing it to be changed from within the application.

* Added 'Shift-Alt/Shift-Cmd s' keyboard shortcut, to enable continuous snapshot mode for each frame. This is really only useful if you save snapshots in 1x mode; using it in high-resolution mode is not recommended. Special thanks to SvOlli for the idea and code.

* The minimum supported version for the OSX port is now OSX 10.7.  Because of this, the 32-bit version is also discontinued, as 10.7 supports 64-bit Intel only apps.

* Updated internal ROM properties database to ROM-Hunter version 10 (thanks go to RomHunter for his tireless research in this area).  Related to this, updated the snapshot collection.

* Updated included PNG library to latest stable version.

Download Here

Going to the final frontier, gaming...


onthinice

Great to see this updated! Thanks for keeping us in the loop!

TrekMD


Going to the final frontier, gaming...


zapiy

Yeah that's one huge update and turn round in coding. Good to see though.

Own: Jaguar, Lynx, Dreamcast, Saturn, MegaDrive, MegaCD, 32X, GameGear, PS3, PS, PSP, Wii, GameCube, N64, DS, GBA, GBC, GBP, GB,  Xbox, 3DO, CDi,  WonderSwan, WonderSwan Colour NGPC

LYNXGUY

Is the Stella 2600 emulator easy to use ???
ATARI - The way gaming ought to be. . . . . . .

TrekMD

Yes it is easy to use.  It will open .bin and .a26 files.  It has settings that lets you use a joystick on a USB port and you can even add a phosphor effect to emulate a CRT TV. 

Going to the final frontier, gaming...