Jump to content
IGNORED

Stella 6.0 released


stephena

Recommended Posts

So, it's that time of year again. And for a special gift, there is a new release of Stella! This one has been almost 6 months in the making, and is obviously a jump to a new major version. There are huge changes all across the board, but the major new feature is cycle-exact TIA audio emulation.


For the first time, cycle-exact audio emulation allows several ROMs to work correctly that have never worked before. E.T. and Ms. PacMan are the most obvious; they now sound exactly like they do on a real console. Most other emulators (and Stella too, previous to 6.0) use an idealized emulation of sound, which in some cases results in better sounding, but incorrect, output. The new code is based on FPGA work by Chris Brenner (crispy), and as a result AFAICT, this is the first time that E.T. has sounded correct in an emulator.


And for the first time in a long time, Stella gets a new coat of paint! The themes have been modernized a little, which new schemes, titlebars on windows, etc. Definitely makes the app look a little more modern. We don't want to look too modern, though. After all, we are emulating a 40+ year old system :D


There are many other sound changes too, and bugfixes/improvements/new features all over the place. Complete changelog as follows:

  • Note: because of major TIA sound changes, the state file format has changed, and old state files will not work with this release.
  • New cycle exact audio core based on work by Chris Brenner (crispy); greatly improved audio emulation accuracy (i.e. E.T., Ms. Pacman).
  • Full rewrite of the audio subsystem; resample TIA output to target sample rate directly in Stella.
  • Added option to force stereo sound for all ROMs, or to use the setting on a per-ROM basis.
  • Threading: decouple emulation from frame rendering.
  • Main loop rewritten; emulating speed and timing is now much more faithful (i.e. speed in Pick'n'Pile).
  • Added preliminary support for 'CTY' bankswitching scheme and recently released 'Chetiry' ROMs. Special thanks to SpiceWare for adding music support to this scheme.
  • UI modernization (new widget look, dialog titles added, dialogs refactored).
  • The bankswitch scheme can now be forced by naming the ROM with a specific extension (ie: .f8s for F8SC, .fe for FE, etc). The supported extensions are the same as the ones from HarmonyCart and UnoCart.
  • Audio settings replaced with new 'audio.xxx' settings.
  • FPS setting replaced with speed setting for adjusting emulation speed.
  • Extra functionality for Time Machine dialog (start/stop recording; minor fixes).
  • When logging messages to the System Logger, condense similar messages that arrive in batches into fewer messages (including timestamps).
  • Fixes for collision corner cases (during HBlank).
  • Fixed excessive CPU usage while in UI modes (ROM launcher, debugger, etc).
  • The 'launcherexts' option has been replaced by a true/false option named 'launcherroms', which specifies to show only ROMs or all files in the ROM launcher.
  • Changes in 'Game Properties' dialog
  • - 'Default' button now affects only current tab like in all other dialogs.
  • - 'Display' and 'Console' tab changes are now immediate.
  • - Fixed bug when selecting 'Auto-detect' format for 50Hz ROMs
  • Fixed bug in autodetecting Genesis controllers.
  • Fixed bug with 'thumb.trapfatal' commandline argument; sometimes Stella would lock up when encountering a fatal error instead of entering the debugger and displaying a message.
  • Fixed bug in reading from settings file with entries that were empty; the parsing was failing. This affected the 'cpurandom' argument; when all options in it were turned off, they were all turned on again during the next program run.
  • Fixed bug with 'hold' events; they are now released a short time after starting a ROM.
  • When starting Stella for the first time, the first ROM selected will determine which path to use by default for subsequent runs.
  • Fixed emulator crash when starting SaveKey ROMs from commandline with SaveKey messages enabled.
  • Fixed missing TV format update in frame stats dialog when switching display type.
  • Fixed missing debug color update when switching display type.
  • 'Fill to scanline' now works for scanlines above current scanline too.
  • The debugger 'uhex' command is now honoured in CDF and BUS schemes.
  • When switching screenmodes, the sound is now paused and later resumed. This fixes popping and cracking sounds apparent on some systems, notably macOS when toggling windowed/fullscreen mode.
  • State file format has been optimized to be smaller, and faster loading and saving. This affects both the files saved to your computer as well as Time Machine functionality.
  • The ROM name saved in a PNG tEXt chunk now honours the 'snapname' setting.
  • Improved snapshots when phosphor is enabled.
  • Updated PAL palette.
  • Added 'Cartridge.StartBank' ROM property, to force a ROM to use a specific bank for its reset vector.
  • Added Developer setting, which breaks on reads from write ports. It now detects such conditions in many more cases. This new way of detecting RWP errors obsoletes the old '_rwport' debugger command, which has now been removed.
  • Added recently released 'Arkyology' prototype ROM to the database.
  • Added 'Amoeba Jump' and 'Flappy' ROMs (from the Retron77) to the database.
  • Fixed 'Street Racer' and 'Video Olympics' ROMs to use paddles in both ports.
  • If using SDL 2.0.5 or above, the calculated desktop size now takes the taskbar/dock into account (so windows should no longer overlap those areas).
  • For UNIX systems: in the ROM launcher, when using symlinks use the symlink pathname instead of the underlying filesystem pathname.
  • The UNIX builds now use the system-installed PNG and ZLIB libraries by default.
  • The Macintosh builds are now named 'macOS' throughout the codebase to reflect the new naming from Apple.
  • For better compatibility, the Windows 32-bit version does not require SSE2 anymore.
  • Updated included PNG library to latest stable version.

As always, Stella can be downloaded from the usual place. And as a shameless plug, please consider a donation if you like; I plan to build a new development workstation in 2019 :P


Special thanks to Christian Speckner and Thomas Jentzsch for work on this release; their work formed a large part of what became version 6.0.


Bug reports can be posted here, or by creating an issue on the Github page.


Merry Christmas, and enjoy this latest release of Stella :party:

  • Like 38
  • Thanks 1
Link to comment
Share on other sites

Thank you Stephena for all the work you've put into Stella over the years, and thank you to Christian Speckner and Thomas Jentzsch for their help with their contributions to 6.0. Stella is an invaluable tool for development of new games, and of course the premier Atari 2600 emulator for everyone who wants to enjoy 2600 games on their computers.

 

..Al

  • Like 5
Link to comment
Share on other sites

I'm not responsible for this part of the code, but I'm pretty sure it has been completely disabled for the 32-bit release. It was causing problems on some systems, and doesn't really benefit to have it there anyway. So we turned it off in the compiler settings.

 

The alternative is to provide multiple 32-bit builds. And that's not something I want to do, since TBH the 32-bit version is on life support at this point. Will probably disappear in Stella 7 (whenever that may be).

  • Like 1
Link to comment
Share on other sites

Thank you so much Stephen, I just made a donation to Stella in honour of your new release!! Thank you for everything you and the rest of your contributors do!

I use Stella all the time for testing out homebrew games before I stream them on the show, it has been an invaluable tool for what I do.

Link to comment
Share on other sites

Thanks for all the hard work on version 6 of Stella!

I'm really happy about the new audio emulation, which makes developing in-game music much easier (I no longer need to check the sound on a real '2600 every time).

 

Pick 'N' Pile is a game I recently added to my collection, and I noticed in Stella 5 it didn't play like on an actual '2600. Stella 6 now fixes this and also shows the jumping number of scanlines that the original game has in the title & menu screens (which has very sloppy programming).

 

Thanks again, you guys make developing homebrew games more fun!!

  • Like 1
Link to comment
Share on other sites

Pick 'N' Pile is a game I recently added to my collection, and I noticed in Stella 5 it didn't play like on an actual '2600. Stella 6 now fixes this and also shows the jumping number of scanlines that the original game has in the title & menu screens (which has very sloppy programming).

 

 

:P That sloppiness makes P'n'P the perfect test case for the new audio and threading code. In Stella 5, the irregular frame rate and the delay for rendering each frame to the screen would mess up timing and lead to speed variations that are not present on a real system. In Stella 6, speed is constant and almost identical to a real VCS; I had Stella and my Junior merrily play along in a duet for a minute or so before the drift became noticable.

  • Like 1
Link to comment
Share on other sites

The trailing '\' shouldn't be necessary; that may be a bug that we should look into.

 

Related to this, I'm considering removing 'basedir.txt' and simply having a commandline argument to do the same thing. So in Windows you'd just have the modify the icon to pass it the required information (this will be fully documented, of course).

 

I think this is a cleaner way of doing it? Comments, feedback, etc?

 

So for example, instead of creating a file basedir.txt and having it contain, say, "C:\stella", you would right click and edit the icon, and put -basedir "C:\stella". Would that make more sense?

  • Like 1
Link to comment
Share on other sites

The trailing '\' shouldn't be necessary; that may be a bug that we should look into.

 

Related to this, I'm considering removing 'basedir.txt' and simply having a commandline argument to do the same thing. So in Windows you'd just have the modify the icon to pass it the required information (this will be fully documented, of course).

 

I think this is a cleaner way of doing it? Comments, feedback, etc?

 

So for example, instead of creating a file basedir.txt and having it contain, say, "C:\stella", you would right click and edit the icon, and put -basedir "C:\stella". Would that make more sense?

 

 

 

Hi Stephen,

 

Prior to 6 , the trailing \ was not required for me. When I started 6 the first time all items required proper basedir did not show up.

 

When I looked at the Stella system log I saw; "e:\emu\Atari\2600\Stellastella.ini"

the \ was missing after 2600\Stella

 

I then changed my basedir.txt

 

from:

e:\emu\Atari\2600\Stella

to:

e:\emu\Atari\2600\Stella\

 

then all looked good when Stella started. The Stella system log displayed e:\emu\Atari\2600\Stella\stella.ini icon_smile.gif

 

As for commandline arg of -basedir as you mentioned - seems like a perfect idea to me!

Edited by JL
Link to comment
Share on other sites

Looking forward to this being integrated into 2600.emu (Android).

 

Related to that, I have a bug/feature request...

 

If you write files from a Mac to an SD card/thumb drive that you then use with an Android device (such as NVIDIA Shield Pro), the Mac places meta-data files on the drive of the form "._FILENAME"

 

It would be great if 2600.emu did not show these in the list of available files.

 

Is the filter that determines which files in a directory get displayed a function of Stella, or of the GUI on top of it? (ie, for the Android Stella port to address?)

Link to comment
Share on other sites

Looking forward to this being integrated into 2600.emu (Android).

 

Related to that, I have a bug/feature request...

 

If you write files from a Mac to an SD card/thumb drive that you then use with an Android device (such as NVIDIA Shield Pro), the Mac places meta-data files on the drive of the form "._FILENAME"

 

It would be great if 2600.emu did not show these in the list of available files.

 

Is the filter that determines which files in a directory get displayed a function of Stella, or of the GUI on top of it? (ie, for the Android Stella port to address?)

 

 

Hi, I may be wrong but I do not think Stephen has any involvement with 2600.emu, which is still based on Stella 4.7.3 . I do like Robert's 2600.emu app but its updates now are usually a year or more apart so I'm not getting my hopes up. Serves me right for purchasing it :sigh

Edited by JL
Link to comment
Share on other sites

 

 

Hi, I may be wrong but I do not think Stephen has any involvement with 2600.emu, which is still based on Stella 4.7.3 . I do like Robert's 2600.emu app but its updates now are usually a year or more apart so I'm not getting my hopes up. Serves me right for purchasing it :sigh

 

 

I sent a similar email to the address listed for 2600.emu... I also offered to help if that would help... (Sources are posted on GitHub)

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.

Guest
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.

Loading...
  • Recently Browsing   0 members

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