Changes:
System emulation
Device emulation
Audio
The HDA device emulation now includes a mixer by default.
Previously this had to be enabled with the configure argument
"--enable-mixemu" when building QEMU.
Audio will work correctly on systems without OSS (/dev/dsp).
On previous versions, those systems needed special arguments
to "configure" for audio to work out of the box.
Audio honors the QEMU_AUDIO_TIMER_PERIOD environment variable
and has less CPU utilization by default than previous versions.
Block devices
Support for the LSI 53C810 SCSI HBA, which unlike the 895A is
supported on some very old Windows NT versions.
Device assignment
VFIO now supports setting CPU affinity on MSI interrupts.
VFIO can now reset assigned devices much more reliably using
either PCI function-level reset (FLR), power management, or a
reset (done by the kernel) of the parent bridge.
Several improvements to the reliability of using option ROMs
for devices that are assigned with VFIO.
USB
Performance and functionality improvements for USB 3.0.
MicroBlaze
Can now specify an initrd on the command line.
PowerPC
PowerPC now supports the dump-guest-memory command.
s390x
The "nmi" command will trigger a crash dump from kdump, using
a RESTART interrupt.
The SCLP line-mode console ("operating system messages") can
be accessed with "-device sclplmconsole".
x86
ACPI tables can be generated by QEMU and can be used by firmware
directly. This will in the future enable new features without
modifications of all firmware components (SeaBIOS, OVMF,
CoreBoot)
Initial support for supporting more than 1TB of RAM (but firmware
does not yet support this).
Xen HVM domains can now resume from suspend-to-RAM (S3) state.
Monitor
Subcommands (like "info block") can now autocomplete their
options.
Help for a single subcommand can be printed with a monitor
command such as "help info block".
New commands "blockdev-snapshot-internal-sync",
"blockdev-snapshot-delete-internal-sync" improve support for
internal qcow2 snapshot.
New command "blockdev-add" provides a QMP interface for block
device hotplug.
Block devices
The throttling algorithm has been rewritten; the new code is
more robust, and supports configuration of separate limits for
sustained I/O vs. I/O bursts
Migration
Migration was broken from QEMU <= 1.5 to 1.6; the new release
fixes it.
User-mode emulation
M68K ColdFire emulation supports atomic system calls.
Block devices, qemu-img, qemu-io
The sheepdog driver supports automatic reconnect after network
errors
The VMDK driver supports files produced by VMWare ESX.
The qcow2 driver can detect some cases of corruption, and will
prevent writing to a corrupted image.
The VHDX driver supports creating and writing .vhdx images.
The metadata of a file (where each sector of the guest image
is stored in the file on the host) can be dumped in human-readable
or JSON format using a new command "qemu-img map".
Guest agent
The "filesystem freeze/thaw" commands are now supported on
Windows too, where they will invoke the native Volume Shadow
Copy Service (VSS).
Miscellaneous
For targets that have no embedded disassembler, QEMU will now
produce hexadecimal dumps instead of just emitting an error
when a disassembly is requested. The enclosed script disas-objdump.pl
can be used, together with an external objdump program, to
convert the dump to a readable disassembly.
Host support
TCG now runs on x32 hosts.
Known issues
On Win32, QEMU must be compiled with --disable-coroutine-pool
to work around a suspected compiler bug.
The GTK terminal windows (monitor, serial console, parallel,
...) are still unusable in TCG mode: they lose characters and
can raise deadlocks.
pkgsrc changes: depend on hicolor-icon-theme as it installs files in
share/icons/hicolor and pkglint says so.
Upstream changes:
August 31, 2013
Stella release 3.9.2 for Linux, MacOS X and Windows is now available.
- Improved parsing of the DASM lst file for the debugger
disassembly; it sometimes missed constant declarations.
- Changed 'usemouse' argument from a true/false option to accept
'always', 'analog' and 'never'. This allows to use the mouse as a
controller under more specific circumstances. The default is 'analog',
which means the mouse is only used to emulate analog-like devices
(paddles, trackball, etc).
- Added ability to use bold fonts within the debugger window, which
can be set with the 'dbg.fontstyle' commandline argument as well as in
the debugger UI Settings dialog. This is useful for those that find
the current font too narrow.
- Renamed 'debuggerres' argument to 'dbg.res'. All future debugger-
specific options will start with 'dbg.'.
- The TIA 'zoom' area in the debugger now supports scrolling the
mouse wheel (currently up/down only, as I don't have a sideways
scrolling mouse to test with).
-Have fun!
August 21, 2013
Stella release 3.9.1 for Linux, MacOS X and Windows is now available.
*** Note: because of TIA/6502 changes, the state file format has ***
*** changed again, and old state files will not work with this ***
*** release. ***
- Several bugfixes and improvements to the debugger:
- Improved display of debugger when using larger video
modes. There are now three font sizes, which are automatically
selected when the debugger is sized accordingly. When using larger
fonts, the extra space is now used more efficiently.
- Fixed bug in disassembly when the mirror used for the current
PC didn't match the mirror for the current bank. In this case, the
disassembler became confused and didn't properly track the PC
address.
- Fixed bug in display of current TIA frame number in the UI;
depending on how breakpoints were set, it was sometimes off by
one.
- Fixed RAM widget Search/Compare textboxes; entering any data
and then pressing 'Enter' / clicking 'OK' locked the UI until
exiting and re-entering the debugger.
- Changed display for various TIA position counters to decimal
(from hex) in the TIA tab. Related to this, all data input widgets
in the UI now have the ability to enter binary, decimal or hex
values by using the proper leading character (\, #, $,
respectively).
- Added 'INTIM Clks' to the 'I/O' tab. which shows the number of
clocks between each 'step' of the INTIM timer.
- Added ability to modify 'tiadriven' commandline argument to the
'TIA' tab, and 'ramrandom' to the 'I/O' tab. These options were
available for quite some time, but they weren't exposed in the UI.
- Added 'cpurandom' commandline argument, and associated UI item
to the 'I/O' tab. This works similar to 'ramrandom', and
randomizes the contents of the CPU registers on ROM startup.
- Added 'uhex' debugger prompt command, which toggles all
hexadecimal display between upper/lower case. This setting is also
saved in the settings file as argument 'dbg.uhex'.
- Removed 'loadsym' command from the debugger prompt, since the
DASM symbol file is always loaded anyway, making the command
redundant. Related to this, fixed loading symbols with ###.name
convention; the leading number is now stripped.
- Added support for DASM lst files (created with the -l
option). For now, the contents are only partially used, to detect
constants vs. symbolic addresses in the symbol file. Eventually,
further information from the lst file may be used.
- The GRPx and PFx registers in the TIA output now show inactive
background pixels as either blanked or with the underlying object
colour, instead of always being black. This gives a more accurate
representation of how the registers are actually drawn
onscreen. Thanks to Tjoppen of AtariAge for this idea and sample
code.
- The 'Source Address' locations for the CPU registers now show
labels where appropriate.
- Renamed 'Override properties' dialog (accessible from the ROM
launcher by a right-mouse-button click) to 'Power-on options', with
the following new options:
- Set start-up state for both joysticks as well as console
select/ reset buttons. Related to this, added 'holdjoy01' and
'holdjoy1' commandline arguments, and removed 'holdbutton0'
argument.
- The ability to load the ROM directly from this dialog, after
changing any settings, and also to start in the debugger.
- Added more detailed information as to how to use this
functionality to the UI.
- Buttons held down are reset approx. 0.5 seconds after starting
the ROM, to simulate pressing and releasing the buttons on a real
console.
- Fixed bug when using event remapping; changes were being saved only
when launching a ROM from the launcher, not in standalone mode.
- Improved bankswitch autodetection for newer EF and EFSC ROMs
generated by batari Basic, thanks to RevEng of AtariAge.
- Added properties database info for "Princess Rescue" ROM.
For the Linux/UNIX port:
- Fixed bug whereby a maximize button was always present in the
window title bar. Stella could not be expanded in this way, so the
button was removed.
- Added Startup notification protocol patch to the .desktop file
from Dan Fandrich.
- Updated included PNG library to latest stable version.
June 27, 2013
Stella release 3.9 for Linux, MacOS X and Windows is now available.
- 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.
March 13, 2013
The Subversion repository used by Stella has been changed. All
developers will need to checkout again from trunk, or relocate their
current directory to the new system.
March 3, 2013
Stella release 3.8.1 for Linux, MacOS X and Windows is now available.
- Added support for TIA RSYNC writes, thanks to Omegamatrix of
AtariAge. This allows the recently released "Extra Terrestrials" ROM
to run, as well as improving emulation of "Fatal Run" and several
other test ROMs.
- Fixed typo in TIA HMOVE writes, thanks to Thomas Jentzsch. This
fixes the constant collision issues in "Kool-Aid Man", and several
other homebrew ROMs.
- Fixed sound issues on OSX PPC machines (all sound was in
little-endian format, but PPC is big-endian).
- The OSX DMG archive now contains proper modification dates.
February 23, 2013
Added an expanded explanation for first-time developers to the Development section of the Stella webpage.
February 21, 2013
Stella release 3.8 for Linux, MacOS X and Windows is now available.
- 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.
December 22, 2012
Stella release 3.7.5 for Linux, MacOS X and Windows is now available.
- Improved regressions in PAL format autodetection, introduced in the
past several releases.
- Fixed crash when loading invalid PNG files in ROM browser.
- Snapshots generated by Stella now include more informative info,
such as the build number, platform architecture, TV effects in use,
etc.
October 31, 2012
Stella release 3.7.4 for Linux, MacOS X and Windows is now available.
- Fixed screen blanking regression in 'Video Chess', and improved
behaviour of ROMs that don't use VSYNC.
October 26, 2012
Stella release 3.7.3 for Linux, MacOS X and Windows is now available.
*** Note: because of TIA/RIOT changes, the state file format has ***
*** changed again, and old state files will not work with this ***
*** release. ***
- Improved handling of 'illegal' VSYNC signals, which sometimes
created 'short' frames that caused massive flickering. Also improved
related behaviour when VSYNC isn't used at all.
- Improved sound generation with ROMs that have irregular scanline
counts. This fixes many demo ROMs as well as Quadrun, where previously
there would be 'gaps' in the sound output.
- Improved emulation of RIOT chip, in particular the behaviour of
reading from TIMINT. Also, D6 of the Interrupt Flag register is now
properly set on active transition of the PA7 pin.
- Fixed bug in DPC+ bankswitch scheme; the music in several ROMS
wasn't playing correctly.
- The ROM properties database now uses 'Auto' instead of
'Auto-select' everywhere. This makes for less typing when running from
the commandline.
- Updated included PNG library to latest stable version.
framework, the former being enabled while the latter not. The OpenGL
renderer has caused crashes on the prior few versions and now we're getting
reports of these crashes on non-NetBSD, non-pkgsrc platforms. There's no
need to enable this option by default if it's not working properly. We can
re-enable it when it's fixed upstream. This version adds Dutch language
support. Also, we have SDL2 support in this version. From Changelog:
0.9.12 -> 0.9.13
general:
- Removed Carbon, PSP, Wii and Windows ports
- Removed autotools based build
- Removed autopackage
- mdf/mds images support (CyberWarriorX)
- Safeguard to reject unsupported cue files (CyberWarriorX)
- CD+G support (CyberWarriorX)
- Improved "manual mode" (Guillaume)
- Made it possible to build Yabause to ouput 16BPP (Guillaume)
- Hat support in SDL joystick code (anonymous)
- gdb stub (Guillaume)
- Improved emulated bios (CyberWarriorX)
sound:
- Fixed most of the distorted cd audio issues with the scsp core (CyberWarriorX)
video:
- Improvements to the software renderer (transparency, frameskip, (Guillaume)
qt port:
- Memory editor and search (CyberWarriorX)
- Improvements to the SH2 debugger: Back trace support, step over, step out (CyberWarriorX)
- Infinite loop tracking (CyberWarriorX)
- Don't restart emulation after every settings change (AmonX)
- Made Yabause compilable with Qt5 and SDL2 (CyberWarriorX)
- Log window can now be hidden (Guillaume)
- Save and restore window position (Guillaume)
- Can use .ini files in the application dir (Guillaume)
- Mouse and 3D control pad support (CyberWarriorX)
- Made drives and languages settings more user friendly (CyberWarriorX)
- Changing to fullscreen now updates resolution too (CyberWarriorX)
- Shortcuts editing (CyberWarriorX)
Version 0.2:
- add experimental support for Super Game Boy, including Super Game
Boy borders.
- add support for emulation speedup.
- add support for forcing emulation mode (Game Boy, Color Game Boy
or Super Game Boy) in Configuration File.
- improved accuracy for startup state.
RealBoy is a Free, Fast, Yet Accurate, Game Boy/Game Boy Color
Emulator for Linux/Unix. It has both technical as well as educational
goals.
Technically, it aims for the following:
1) Accuracy. Perhaps the most important technical goal, as seen in
the best closed-sourced emulators, such as KiGB and BGB, and some
free emulators, such as Gambatte and MESS.
2) Performance. Show that it is possible to implement a very fast
emulator without sacrificing accuracy.
3) Feature-rich. Implement advanced features such as a flexible
internal debugger.
* Included Linux image works fine on NetBSD/amd64 6.99.23
Changelog:
New features
Addition of ports to Amiga OS 3 and OS 4.
Sound emulation.
Support for RAM sizes other than 4MB (512KB, 1MB, 2MB,
4MB, 8MB, 12MB & 16MB now supported).
ARM250 & ARM3 CPU emulation.
ArcEm clock set from host's clock, partial RTC support.
Extension ROM emulation, allowing support for the
following new features when emulation RISC OS:
HostFS - A RISC OS filesystem to allow use of a
directory on the Host Filing system as a virtual
hard drive.
Mouse scroll wheel support.
Extra video modes, up to 1024x768 in 16 colours and
800x600 in 256 colours.
Bug fixes/Improvements
Many performance tweaks and optimisations, resulting in
a 5-6 times performance gain on ARM hosts. A 600MHz
XScale can now achieve a level of performance roughly
equivalent to an 8MHz ARM2. Similar performance gains
can be seen on other low-power hosts.
Video emulation rewritten to provide accurate redraw
and VSync timing, down to the scanline level.
Video emulation now supports upscaling and aspect ratio
correction for rectangular pixel modes.
All hardware clocks/timers (IOC timers, video DMA, audio
DMA, etc.) now run in real time, ensuring one second
takes one second no matter how fast the host machine
is.
Source code tidied a bit to remove redundant code,
including support for emulation of 32bit processor modes
(there are other, much better emulators for that!).
Source code converted to use C99 number types to aid
portability.
Instruction prefetch now correctly emulated - ensures
correct operation with self-modifying code and some
forms of copy protection.
RISC OS version now 32bit compatible, and ARMv7-safe.
Also much more useable with modern machines/LCD monitors
as it no longer requires the host to be able to support
Archimedes screen modes.
Windows version updated to build under Visual Studio
2010 (including Express edition).
Unix/X11 version now supports X servers that don't
support XWarpPointer.