Jump to content

Stella 5.0 released


Recommended Posts

Well, it's finally here. After 8 months of work, 10 pre-releases and feedback from dozens of people, Stella 5.0 is finally available. While we’ve had big point-0 releases before, this is the first time that we’ve had pre-releases, and the bug-fixing and valuable feedback that happened really shows.


The major highlight of this new release is a completely rewritten TIA core, ported from the 6502.ts project by Christian Speckner. There are also quite a few debugger improvements, as well as improved emulation of the RIOT and also some CPU stuff too. So really, some quite major changes right across the board. There are several ROMs that now work in Stella that have never worked in any other emulator. Almost all corner cases in TIA and RIOT behaviour are now correctly emulated. We even have a new TV phosphor emulation mode which is much more accurate than the old method.


So without further ado, here’s the considerable changelog:

  • Note: because of major TIA/6502/RIOT changes, the state file format has changed, and old state files will not work with this release.

  • Stella has moved from Sourceforge to Github.

  • Completely new TIA core is now available, ported from 6502ts by Christian Speckner (DirtyHairy). This new core is extremely accurate, and matches real hardware in almost every test we've performed. New features include:

    • Meltdown emulates correct
    • The lap number in Pole Positions displays correctly
    • Artifacts in the mountains on Snoopy and the Red baron are gone
    • Line artifacts in Title Match Pro Wrestling and Realsports Boxing are fixed
    • The spurious line at the left border of Video Chess now displays correctly
    • All 32 char text demos from AtariAge now work perfectly (Stella 4 shows artifacts on several of these)
    • Stella is now the only emulator to display the "Mega Bitmap Demo" (atext.bin) from AtariAge correctly
    • Improved starfield effect for missiles (still TODO for ball and players)
    • RSYNC emulation has improved, all testcases now match real hardware
    • Several other ROMs that have never worked in any emulator are now emulated correctly
    • RDY behavior with respect to write cycles is accurate
    • Optional YStart autodetect and more robust frame handling
    • NUSIZ during player draw matches hardware
    • RESMx during missile draw matches hardware
    • Paddle emulation is slightly more accurate. As a consequence, the "paddle feel" may be slightly different from Stella 4
    • Fixed debug colors can now be set for each graphical object, from a choice of 'red', 'orange', 'yellow', 'green', 'blue' and 'purple'. This is accessible through the new 'tia.dbgcolors' commandline argument and within the UI.
  • Implemented new phosphor emulation mode, which is much closer to real TV output. Related to this, added ability to change the default phosphor blend level in the UI and through the new 'tv.phosblend' commandline argument. Special thanks to Thomas Jentzsch for the idea and implementation.

  • TV phosphor effect can now be force-enabled for all ROMs, instead of manually setting ROM properties for each ROM. This is accessible in the UI and through the 'tv.phosphor' commandline argument, and defaults to being off (or enabled per-ROM).

  • PAL color-loss and Blargg TV effects can now be enabled at the same time. Previously, when Blargg effects were enabled, PAL color-loss couldn't be shown. Related to this, the Blargg effects now use much less memory and in some cases run faster than before.

  • Much improved RIOT timer emulation never before seen in any emulator. Special thanks to Christian Speckner (DirtyHairy) for the implementation, and alex_79 for finding documentation that finally describes in more detail how the M6532 chip actually works.

  • Added BUS (experimental) and CDF bankswitching schemes, and also ARM Timer 1 support; special thanks to SpiceWare for the code.

  • Fixed bug with SaveKey and AtariVox not properly closing their memory files before starting another instance of the same ROM, when the ROM was opened in the ROM launcher.

  • Various improvements to the debugger and command prompt:

    • The 'cls' command now only clears the screen, not the history
    • The 'help' command now accepts other commands, and gives extra
      information about the command (ie, 'help breakif' prints extended information about the breakif command)
    • Added 'palette' command, which shows a color swatch of the currently active TIA palette
    • Added 'debugcolors' command, which shows a legend for 'fixed debug colors' mode
    • The previous trap'm' commands now work when setting TIA read addresses; previously they only worked for write addresses
    • The previous trap'm' commands are now renamed 'trap', 'trapread' and 'trapwrite'
    • The TIA tab now shows 'old' contents of player and ball registers
    • Various UI items are crossed out when disabled, to more clearly indicate their current state
    • Various UI items that previously required a double-click to toggle (pixel and bit widgets) now require only a single-click.
    • Command completion now works with internal functions and pseudo-ops (basically, anything starting with the '_' character)
    • System labels (aka, register names, etc) can now be typed in lowercase. Previously, these labels always had to be uppercase.
    • In general, input error checking is much more strictly enforced
    • Read-only UI items now have a different background color, to clearly indicate if an item can be modified.
    • Debugger '.lst' and '.sym' files are now searched based on the name of the ROM file, and not on the internal properties name.
    • Snapshots can now be saved by pressing the F12 key (the various other ways to save snapshots still exist).
  • Mouse grabbing is now enabled in windowed mode only when the ROM is using a virtual analog controller (paddles, trakball, etc).

  • Renamed various trakball-like controllers more accurately: AmigaMouse, AtariMouse (previously CX80) and Trakball (previously CX22). Related to this, reduced the resolution of the Trakball by half, to properly match real hardware.

  • The stack pointer (SP) is now initialized to $FD instead of $FF, to match research done in other 6502 projects.

  • Fixed bug in debugger tracing and displaying the partial TIA image; the first time entering the debugger and starting to trace, the image was blanked out (black) instead of being drawn in greyscale. Also, the image is now synchronized, instead of being two frames behind.

  • Fixed crash with zipped ROMs that are less than 4K in size; so far this bug has only ever occurred in Windows XP, but it's been there since Stella 4.1.

  • Fixed bug in 'Rom Audit' functionality; sometimes ROMs without a valid properties entry were being renamed as "Untitled.bin".

  • For the entire UI, removed colons and generally made the UI items easier to read.

  • When in 'ROM launcher mode', Stella now uses slightly less CPU time. More work is required in this area, though.

  • Added ROM properties for D.K. VCS homebrew ROM, thanks to Andreas Dietrich.

  • Added slight improvement for auto-detecting Superchip bankswitching; the new implementation now works for the NTSC 'Dig Dug' ROM. Special thanks for SpiceWare for the idea and modified implementation.

  • Fixed long-standing bug in 3-voice music in DPC+ bankswitching scheme; the music now sounds much more like the real thing.

  • For the Linux/UNIX port:

    • The settings directory now uses the XDG Base Directory Specification. In most cases, this means that your files will now be stored in '~/.config/stella' instead of '~/.stella'. To keep your old settings, run the following commands from the terminal:
      cd ~
      mv .stella .config/stella

      You will probably need to edit '~/.config/stella/stellarc' and change some paths accordingly.

  • For the OSX port:

    • Always use the built-in png and zlib libraries instead of the system versions.

    • The preferences file has changed from 'net.sourceforge.Stella.plist' to 'Stella-emu.plist'. To keep your old settings, run the following commands from the terminal:
      cd ~/Library/Preferences
      mv net.sourceforge.Stella.plist Stella-emu.plist

  • Updated internal ROM properties database to ROM-Hunter version 13 (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. Also, both libraries are now compiled into the app whenever one is selected. This fixes issues with a newer ZLIB not working with an older PNG, etc.

  • Updated build scripts for Visual Studio 2017 (Windows) and MacOS Sierra (latest version of Xcode), and make these the minimum supported versions for building Stella.

  • Updated UNIX configure script to work with the clang 5+ and gcc 7+ compiler versions, and fixed compile issues on AArch64 and ppc64le architectures.

As usual, Stella can be downloaded at https://stella-emu.github.io/downloads.html, and donations are always welcome at https://stella-emu.github.io/donations.html. Feedback can be given in this thread, by PM or by creating an issue on Github (preferred). Good luck, and have fun with this release; we are very proud of it.

  • Like 21
Link to comment
Share on other sites

This is awesome! I'm just getting into homebrew development, and Stella is a huge tool for getting the job done! The better the tools, the better the games! This will be an enormous help for the homebrew community.


Thank you so so much.

  • Like 1
Link to comment
Share on other sites

Much love and respect to those who worked so hard on this release cycle. It was amazing to see it all come together! With Stella 5.0, if we don't have 100% perfect emulation, it's so damned close that finding ways to improve it will become a challenge for the next decade. ;)



  • Like 2
Link to comment
Share on other sites

In a way, this release really was a community effort, and I'd like to thank everyone involved on getting it done :) Stephen is doing a tremendous job continously maintaining and improving Stella even after more than twenty years. Thomas Jentzsch is the one who got me on the project in the first place and triggered the port of the 6502.ts core to Stella. In addition, Thomas and Alex 79 were a huge help in debugging and squishing the countless bugs in the new core that were discovered by all the people that took their time to regression test the new code. Thanks to your help, porting and improving the new core has not only been a success, but also fun and a huge benefit to 6502.ts as well.

Edited by DirtyHairy
  • Like 7
Link to comment
Share on other sites

It works nice! :)


A small suggestion for the online manual for Mac OS X, I couldn't saw right the Cmd+l option to show line stats (I thought it was number one), it would be great if the letter were in uppercase.


The good thing is that I discovered all the filters available using Cmd+1 till 9.

Link to comment
Share on other sites

It's fantastic to see this finally come out. It'll be a great help for developing my game.


I wonder: why does Stella keep the display black for about a third of a second after the the start of emulation? I understand that TV format autodetection takes a little time, but the vast majority of ROMs that I tested stabilize their scanline counts and go into their main loops in three or four frames. Why keep it completely blank for so long?


64-bit Stella on Windows 10 Home 64-bit, if that's relevant.

Link to comment
Share on other sites

I wonder: why does Stella keep the display black for about a third of a second after the the start of emulation? I understand that TV format autodetection takes a little time, but the vast majority of ROMs that I tested stabilize their scanline counts and go into their main loops in three or four frames. Why keep it completely blank for so long?

Its 20 frames (= 1/3 second). And those frames are used for TV format and start and height of display kernel detection.


And yes, most ROMs stabilize that soon, but there are exceptions which shouldn't break (which IMO would be much more annoying).

Link to comment
Share on other sites

Typos in webpage should be fixed in moment. Thanks to everyone for the support and words of encouragement. Now I'm going to take a short (1 week) vacation away from Stella, unless something major pops up. Feel free to report any issues here, but I may be slow in responding for the rest of this week. I always need to wind down after a major release ...

  • Like 6
Link to comment
Share on other sites

This is great news! :)


Question for anyone (not necessarily stephena in particular):

I have Microsoft Visual C++ 2010 x64(and x86) Redistributable installed on my system. When I click on the 2015 link that the website says is required my system tells me there is already a version installed and it cannot do it. I assume I am all set in that regard? Stella 5.0 DOES work.


Just a verification. :)

Link to comment
Share on other sites

Now that we have a major release and everyone is interested in it (except the RetroN 77 gang), I think we should all run as many different roms as possible and continue the bug hunt that was going on during the pre-release. Crowdsourcing looks to be the best way to test things. It brings many different viewpoints and approaches to the table.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...