While here, add missing tex-pdftex build dependency (for vice.pdf) and
fix ffmpeg option build.
Changes: Lots of extra hardware is emulated (including the long
awaited SuperPET 6809 parts), and several new host platforms are
added.
libXext/buildlink3.mk, now that it is included there.
Leave the places where its API version is set or variables from it
are used directly (about 3 packages).
* Update emutos to 0.8.7
Changelog:
2012/09/20 - version 0.9.14 released
Mac users: check out the new bridged ethernet (see README_ethernet.rtf).
All users: try out the new Single Blit Composing and Single Blit Refresh
modes - they might give you a better video performance.
There are also many compilation and build fixes for various MacOSX targets
and few MPFR FPU fixes.
And last but not least, there's a neat user requested feature - mouse ungrab
(frees your keyboard and mouse from ARAnyM window so you can work in other
applications while ARAnyM is running) simply by clicking the host middle
mouse button (well, works only if you don't have the Eiffel mouse wheel
emulation enabled in settings).
* It seems that NetBSD/i386 and amd64 do not boot on this version of bochs...
Changelog:
Changes in 2.6 (September 2, 2012):
Brief summary :
- More than 10% CPU emulation speedup !
- Support for AMD's SVM hardware emulation (including extended XAPIC support).
- Implemented support for new x86 ISA extensions.
Bochs is fully aligned with rev043 of Intel(R) Architecture Manual.
- Improved emulation accuracy (critical fixes for APIC, VMX and AVX/XOP emulation).
- Bochs internal debugger: new command to show state of a device from the debugger.
- ROM BIOS: improved PCI boot ROM support (for VGA and other devices)
- Networking:
- Ported Intel(R) 82540EM Gigabit Ethernet adapter emulation from Qemu.
- Added PCI network boot ROM support to all network adapters.
- Added TFTP support to the 'slirp' networking module.
- Harddrive: added support for VirtualPC disk images, fixed sparse disk images.
- Sound:
- implemented PC speaker beep using the lowlevel sound interface.
- SDL audio output support.
- Added ability to set log action per device from .bochsrc.
- Moved disk imaging, networking, sound and USB devices to subdirectories
in the iodev folder.
Detailed change log :
- CPU
- Implemented EPT A/D extensions support.
Bochs is fully aligned with rev043 of the of Intel(R) Architecture Manual.
- Implemented ADX (ADCX/ADOX) instructions support, the feature can
be enabled using .bochsrc CPUID option.
- More than 10% CPU emulation speedup with even more optimal lazy flags
handling, stack access optimizations and cross branch trace linking.
- Support for AMD's SVM hardware emulation in Bochs CPU, to enable
configure with --enable-svm option
- Implemented AMD Extended XAPIC support, to enable set .bochsrc CPU
APIC option to 'xapic_ext'
! Added Corei5 750 (Lynnfield) configuration to the CPUDB
! Added Turion64 (Tyler) configuration to the CPUDB
! Added AMD Phenom X3 8650 (Toliman) configuration to the CPUDB
! Added Corei7 3770K (Ivy Bridge) configuration to the CPUDB
- Bugfixes for CPU emulation correctness and stability
(critical fixes for APIC/X2APIC, VMX and AVX/XOP emulation)
- Bochs Debugger and Instrumentation
- Implemented new debugger command 'info device [string]' that shows the
state of the device specified in 'string'
- Improved debug dump for ne2k, pci, pic and vga/cirrus devices. Added
debug dump for pci2isa, i/o apic, cmos, pit, floppy and dma devices.
- Added TLB to CPU param tree - now it can be browsed from Bochs internal
debugger and Bochs debugger GUI through param tree interfaces
- Implemented 'writemem' debugger command to dump virtual memory block
starting from selected linear address into a file
- Updated definition of instrumentation callbacks, see description in
instrumentation.txt / Fixed instrumentation examples
- Configure and compile
- Moved disk imaging, networking, sound and USB devices to subdirectories
in the iodev folder.
- pcidev: enable support for Linux kernel 3.x (Debian patch by Guillem Jover)
- debugger: generate parser / lexer files only if all required tools are present
- Config interface
- Added support for direct device plugin loading with bochsrc directive for
devices which have the same name for the plugin and config option.
- The bochsrc option 'plugin_ctrl' can now be used to load/unload optional
plugins directly when parsing the config file or command line. See the bochsrc
sample for supported devices.
- Moved bochsrc parsing / writing and config parameter handling for networking,
sound and USB devices to the plugin device code. The options are only
available when the corresponding plugin device is loaded.
- Added ability to set log action per device from .bochsrc.
- Added new command line option '-noconsole' to disable the console
window on Windows host.
- Renamed PCI Pseudo NIC option to "pcipnic" (for direct plugin loading)
- Moved several related options to the new "keyboard" bochsrc option.
- Added new parameter 'rtc_sync' for the 'clock' option. If this option
is enabled together with the realtime synchronization, the RTC runs
at realtime speed.
- Moved MWAIT_IS_NOP bochsrc option from CPUID to CPU so it can be set
even if cpu was configured using pre-defined CPUDB profile.
- Allow larger CPU 'quantum' values when emulating SMP systems for speed
(quantum values up to 32 are allowed now).
- I/O Devices
- Networking
- Ported Intel(R) 82540EM Gigabit Ethernet adapter emulation from Qemu,
to enable configure with option --enable-e1000
- Added PCI network boot ROM support to all network adapters
- Added TFTP support to the 'slirp' networking module
- PCI
- added "auto-assign to PCI slot" feature for PCI-only devices
- DMA
- Added the capability to transfer more then one byte / word per ISA DMA cycle
- VGA
- Major rewrite of the vga / cirrus code:
- vgacore (shared standard VGA emulation code)
- vga (Bochs VBE and PCI VGA)
- cirrus (CL-GD 5430 ISA / CL-GD 5446 PCI)
- Added VGA graphics blinking support
- More accurate vertical and horizontal retrace emulation
(based on the DOSBox implementation)
- hard drive / hdimage
- added new disk image mode 'vpc' for VirtualPC images
- undoable mode: added coherency check (flat image size and timestamp)
- sparse mode: fixed read support
- Sound
- implemented PC speaker beep using the lowlevel sound interface
- added SDL audio output support
- ROM BIOS
- improved PCI boot ROM support (for VGA and other devices)
- added MADT entry for Interrupt Source Override to ACPI tables
- GUI and display libraries
- implemented "auto-off" timer for status LEDs indicating a data transfer
- Added support for sending absolute mouse position values from the gui if an
absolute pointing device (USB tablet) is active (rfb, sdl, win32, wx, x).
- Gui debugger now supported when using sdl gui on Windows
- Implemented "hideIPS" option in rfb, sdl, win32 and wx libraries
- wx: fixed random freezes with wxGTK and "show ips" feature enabled
- rfb: the "show ips" feature now works on Windows host
- Tools
- bxcommit: added support for converting growing to flat mode images
- bxcommit: support command line options and non-interactive (quiet) mode
- bximage: increased maximum disk size to 8 TB
- SF patches applied
[3540389] Patch 5 : Change memory reference functions argument order by Yeong-uk Jo
[3539254] Patch 4 : Memory reference optimization 2 by Yeong-uk Jo
[3539251] Patch 3 : Memory reference optimization by Yeong-uk Jo
[3539237] Patch 2 : Some optimization by Yeong-uk Jo
[3539228] Patch 1 : ROM BIOS Compatibility patch by Yeong-uk Jo
[3505209] Fixed combo box size by Konrad Grochowski
[2864391] Gui debugger default regs by Thomas Nilsen
[3486555] Fix critical stack leak in Win32 GUI by Carlo Bramini
- these S.F. bugs were closed/fixed
[625877] wx: power button -> thread deadlock
[3534063] Configure does not check for flex presence
[3555237] NE2000 doesn't compile on OS/X
[3553168] X doesn't build in latest code on OS/X
[3550175] Crash when saving snapshot to directory instead of file
[3548109] VMX State Not Restored After Entering SMM on 32-bit Systems
[3548108] VMEXIT Instruction Length Not Always Getting Updated
[3545941] Typo in preprocessor symbol
[3538731] Missing CR8 register
[3538574] Missing XD flag ( Execute Disable ) when showing PTEs
[3537556] Missing initializations
[3537309] Unable to use the debug GUI with SDL and plugins
[3537473] GUI debugger only shows 32-bit CRx registers in x86-64 mode
[3533426] UHCI PCI interrupts
[3459359] svga cirrus initialization
[3535228] info gdt does not show long mode segments
[3531806] Bochs crashes (SIGSEGV) when starting via ssh console
[3531807] Various missing initialization values reported by Valgrind
[635789] mapping mode 0 not supported
[3307201] BOCHS panics when execute HBIOS.COM
[3528809] IO APIC index register width
[3528516] Missing #if in soundmod.h
[3526069] MADT:Interrupt Source Override missed
[3518753] update dump after manual chages to memory contents
[3516859] bug in svn e1000 module
[3516029] stepping not working in debugger GUI in case of smp vm
[3510403] closing config dialog box closes entire simulator
[3459998] Bochs cannot be compiled outside the source tree
[2905969] can't use --enable-gdb-stub on vs2008
[3294001] Bochs GUI doesn't appear properly for 2nd Bochs copy
[3493315] Changing VGA 9/8 dot mode causes screen corruption
- these S.F. feature requests were closed/implemented
[3540441] automatically enable devices in plugin control
[1251456] command line method to query bochs for features
[3409396] sdl sound
[3519794] debugger's ability to save physical/linear memory dumps
[1429612] Idea how to speedup simulation - stack direct access
[1703452] Other Network Devices?
[2919376] Disable show the console window
[534271] can't set log action by device (bochsrc)
given the libz typedef "voidp" for void *, "const voidp" does not magically
inject const inside the typedef'd type. Use the libz typedef "voidpc"
instead. May fix PR 46996.
Changes since version 1.1.1:
System emulation
All targets
* ... QMP error changes go here ...
* File descriptors can be passed to qemu using the new
add-fd/remove-fd QMP commands. It is intended that they can
be used in any place where QEMU would expect a file name.
This is ensured for disk images, support in other parts of
QEMU may still be inconsistent.
ARM
* LPAE (large physical address extensions) are now supported
for the Cortex-A15 CPU; you can now run a vexpress-a15 model
with more than 4GB of RAM
* The new monitor command "dump-guest-memory" creates an ELF
dump of the guest memory.
* New board model: i.MX31
PowerPC
* The pSeries target correctly creates segment size device
tree nodes (fixes odd bugs with HV vs PR KVM)
* The pSeries target implements an IOMMU.
* ... pSeries VGA, USB, etc.? ...
* The E500 target generates its device tree dynamically
* New mpc8544ds -machine option: dumpdtb. This allows to dump
the dynamically generated device tree to a file.
* Emulation for e5500 cores
* PC87312 Super I/O chipset emulation for PReP, adding
parallel port to prep machine
x86
* Support for PCI passthrough is available for Xen
fully-virtualized domains.
* The new monitor command "dump-guest-memory" creates an ELF
dump of the guest memory.
* When using KVM, the in-kernel APIC supports MSI.
* Also when using KVM, new PV EOI feature improves performance
when both host and guest run linux 3.6-rc1 and up. To
enable, add +kvm_pv_eoi to -cpu option, e.g.
-cpu kvm64,+kvm_pv_eoi
* The "cpudef" config file section is being deprecated and may
be removed in v1.3.
Device emulation
* VGA and QXL cards (obtained with -vga std and -vga qxl) have
16 MB of VRAM rather than 8 MB.
* Three new SCSI host bus adapter devices are available:
am53c974 and dc390 emulate respectively an AMD PCI PCscsi
and a Tekram DC-390 device, both of which are supported on
older operating systems including MS DOS 6.2, MS Windows 3.11,
98 SE, NT 3.1 and NT 4.0. megasas emulated an LSI SAS1078 RAID
controller. The next version of SeaBIOS will support booting
from am53c974 and dc390 disks.
* An USB-attached SCSI controller is now available.
Audio devices
* The PC speaker audio card is now available by default.
Network devices
* The guestfwd argument to slirp now supports running an
arbitrary command on every TCP connection (as in inetd).
This is invoked by specifying a target that starts with "cmd:".
Block devices
* Emulated IDE and SCSI as well as virtio-blk devices can now
switch the cache mode between writethrough and writeback.
virtio-blk automatically switches to writethrough if the
guest driver doesn't support flushes.
* The default cache mode for images is now writeback.
* Emulated SCSI devices can be given a custom vendor name,
product name and WWN.
* Improved support for passthrough of SCSI tapes and media changers.
* libiscsi can be used together with scsi-generic to pass
iSCSI tapes and media changers to the guest.
* When raw files are streamed, parts of the files that are
holes in the underlying filesystem are treated as
unallocated (as long as the OS supports either the FIEMAP
ioctl or the SEEK_HOLE/SEEK_DATA modes)
* CD-ROM drives can now be used with AHCI
qcow2
* qcow2 images support a new option, lazy_refcounts. If on,
the speed of cache=writethrough mode will be improved, at
the cost of requiring an fsck-like pass (and thus QEMU 1.2)
to use the image again after a power loss.
* qemu-img check can now repair qcow2 and QED images with the
new -r option.
VMDK
* Support for images in the streamOptimized subformat has been
fixed. This is a VMDK subformat commonly used with OVF appliances.
rbd
* rbd no longer ignores the cache setting
Live Migration, Save/Restore
* Migration works much better with guests with large memory.
* USB mass storage and passthrough devices support live migration.
VNC
* The threaded VNC server is now enabled by default.
Guest agent
* A new command "fstrim" was added to the guest agent.
New targets
* OpenRISC is now supported for both user-mode and system emulation.
- Fix a bit of pkglint.
- patch-aa is no longer needed.
Upstream changelog:
3.7.1 to 3.7.2: (June 10, 2012)
* Fixed bug in handling filenames with the '~' character, as is used
extensively by RomHunter rom-sets.
-Have fun!
3.7 to 3.7.1: (June 8, 2012)
* Note: because of TIA changes, the state file format has changed again,
and old state files will not work with this release.
* Improved TIA emulation with ROMs that have too few or too many
scanlines; the output is now more accurate compared to a real TV.
Special thanks to Omegamatrix of AtariAge for test ROMs in this area.
* Modified hotkey for "Change console palette" (Control-f) to also
change the display properties of the TIA. This allows you to switch
between NTSC/PAL/SECAM (and variant) modes dynamically. Related to
this, added Shift-Control-f key to step backwards through the
available modes.
* Added '64in1' and '128in1' multicart bankswitching schemes, which work
the same as the 2in1/4in1/etc ones (Control-r switches to each
consecutive game in the ROM).
* Fixed several bugs in DPC+ bankswitching scheme, including ability
to load and save state files. As well, ROMs now work correctly after
console format autodetection.
* Fixed bugs in handling relative filenames on the commandline,
introduced in the last release. The new functionality should be much
more robust.
3.6.1 to 3.7: (June 1, 2012)
* Added Blargg TV effects, with presets for Composite, S-video, RGB,
and badly adjusted TV, and well as a custom mode with full
configurability of contrast, brightness, gamma, etc. Many
keyboard shortcuts and commandline arguments were added to support
this; see the documentation for a detailed explanation. These
effects are OpenGL-only. Special thanks to Ian Bogost and the
Georgia Tech Atari Team for the preliminary implementation.
* Updated the CompuMate keyboard handler to recognize more keys on an
actual keyboard, instead of having to remember the weird combinations
used on the original CompuMate keyboard (although those original keys
will continue to work). Related to this, fixed bug whereby
'ghost keys' would be detected by the CompuMate, particularly after
pressing 'Enter' to start a game from the ROM launcher.
* Added emulation for MindLink controller using the mouse; the 'Bionic
Breakthrough' and 'Telepathy' ROMs now work.
* Updated FA2 bankswitch scheme (Star Castle) to emulate load/save
high score functionality to the Harmony cart flash RAM.
* Added ability for ROM launcher to 'descend' into ZIP files when it
contains more than one ROM file. This means you no longer have to
unzip a multi-file archive before using each ROM. Thanks go to Roland
Schabenberger (webOS maintainer) for this idea and sample code.
* Several improvements to the debugger/disassembler:
- The 'resolvedata', 'showaddr' and 'gfxformat' commandline
arguments are renamed to start with 'dis', indicating that
they're used with the built-in disassembler.
- Zero-page code addresses no longer have their high-byte
truncated, and system equates (TIA and I/O registers) are now
properly marked as such.
- The Distella '-r' option (Relocate calls out of address range)
is no longer the default, resulting in output more consistent
with normal usage of Distella. Related to this, added the
'-dis.relocate' commandline argument (and associated UI item)
to toggle this dynamically.
* Fixed bug in EFSC bankswitch scheme state saving; the Superchip RAM
wasn't actually being loaded and saved to state files.
* Improved speed of loading and saving state files, as well as slightly
reducing their size. Because of this, old state files will not work
with this release.
* Replaced commandline argument 'uselauncher' with 'exitlauncher'. The
new option specifies the behaviour of the ROM launcher when exiting
a ROM (always exit to launcher, or only when the launcher was actually
used). This setting can now be changed in the GUI.
* Several updates to the internal properties database:
- 'Juno First' ROMs now use an AtariVox/SaveKey when possible
- 'Astroblast' ROMs now use the paddles by default
- 'Star Castle 2600' ROMs added
* Changed key-combo for enabling TIA objects and collisions to be
toggled on and off with the Alt-period and Shift-Alt-period
respectively (instead of having two separate keys to turn them on
and off).
* When working on the commandline, relative filenames are now
correctly handled (current working directory is used).
* The Windows 98/ME/2000 builds have been discontinued, due to code and
features that are only available on Windows XP/SP3 and later.
* Updated included PNG library to latest stable version.
3.6 to 3.6.1: (March 30, 2012)
* Extended FA2 bankswitch scheme to handle 28K ROMs (in addition to
the previously supported 24K ROMs).
3.5.5 to 3.6: (March 16, 2012)
* Added support for 2600-daptor II device, including native support
for 7800 controllers, BoosterGrip and Keypad controllers. Special
thanks go to Tom Hafner for a complimentary test sample of this
device, and also for donating a BoosterGrip controller.
* Added ability to dynamically swap the port order of Stelladaptor/
2600-daptor devices with the 'Control-1' key combo (useful if you
have only one 2600-daptor and want to use it as a left port
normally, but as a right port for Star Raiders, etc).
* Added CompuMate bankswitching/controller support to the emulation
core; the Spectravideo CompuMate ROMs (NTSC and PAL) now work.
Frequently used keys on the CompuMate are directly mapped to your
keyboard (ie, Func-Space for backspace is mapped to Backspace, etc).
Loading/saving from the cassette player is not yet supported, and
will come in a future release.
* Fixed bug in BoosterGrip controller emulation; the functionality
of the booster and trigger buttons was reversed. Related to this,
renamed these actions in the Event Mapping dialog to be more clear.
* Reverted to SDL 1.2.14 for the Windows 98/2k release, since SDL
1.2.15 isn't supported in that environment.
* Updated included PNG library to latest stable version.
3.5 to 3.5.5: (February 4, 2012)
* Due to changes in the debugger, old state files will not work with
this release.
* Fixed bug in sound restructuring introduced in the last release; in
some cases, there could be some sound 'crackling' when starting a
ROM after at least one ROM had already been loaded.
* Several significant improvements to the debugger I/O tab:
- added controller input widgets for many of the built-in
controllers, allowing to control joysticks, paddles, etc
from within the debugger.
- added ability to modify the SWCHB/SWBCNT port B registers.
- added ability to view TIA INPTx and VBLANK latch/dump bits.
* Reworked 'mcontrol' argument, and added ability to map the mouse
axes separately for paddles 0-3 or driving controllers 0-1. In
such modes, the left mouse button is tied to the x-axis, and the
right button is tied to the y-axis.
* Mouse 'specific-axis' mode is now saved per-ROM, meaning that each
ROM can have separate settings. For example, this allows one ROM to
use paddles 0 and 1, while another can use paddles 0 and 2, etc.
* The key-combo for switching the mouse between controller modes is now
'Control-0' (Control-1,2,3 have been removed). This switches
between all possible modes for the current virtual controllers.
* Fixed bug in 'Fixed Debug Colors' mode; under certain circumstances,
playfield graphics could be coloured as being player graphics.
* Fixed bug in PAL color-loss setting in Video Settings; changing the
settings wouldn't take effect until the ROM was reloaded.
* Fixed bugs with cheatcode handling; loading a ROM with a cheat
disabled would sometimes trash the emulation. More work is
required in this area, including the ability to create more
advanced types of cheats.
* Updated ROM properties database for all Sega Genesis controller
compatible ROMs. Also, the mouse can now emulate a Genesis
controller, with the left/right buttons mapped to buttons B and C,
respectively.
* Added 'FA2' bankswitch scheme, thanks to code from Chris D.
Walton. This scheme will be used in an upcoming 'Star Castle' ROM.
* Updated internal ROM properties database to ROM-Hunter version 7
(thanks go to RomHunter for his tireless research in this area).
* Added several PERL tools to help in automation of analyzing RomHunter
ROM set releases.
* Fixed compile issues in Irix when using the default compiler
instead of gcc. Thanks go to Rainer M. Canavan for this code.
* Updated included PNG library to latest stable version.
3.4.1 to 3.5: (December 29, 2011)
* Stella is now DonationWare! Please see the DonationWare link on the
main webpage for more information.
* Added several improvements to the joystick management code. Joystick
event mapping is now saved per device, meaning that if you map events
to a certain joystick device, remove the device and then later insert
it again, Stella will remember the original mapping.
* The total number of joysticks present and their associated properties
(number of axes, buttons and hats) is now dynamic. That is, there's
no longer a hard-coded limit on the number of joysticks that Stella
can use, or the number of buttons, etc that it contains. This fixes
a serious bug with PS3 controllers with 27 buttons, whereby adding a
mapping for joystick 0 would inadvertantly change settings for
joystick 1, and could potentially lead to a program crash.
* Added 'mcontrol' commandline argument, which can specify to use each
mouse axis as a separate paddle. The old (and default) behaviour can
be activated by setting this argument to 'auto'. Related to this,
removed redundant 'usemouse' argument.
* Huge restructuring of the OpenGL code, making it compatible with
OpenGL 2.x+ features (such as vertex buffer objects), while at the
same time keeping compatibility with OpenGL 1.5 / OpenGL ES.
Because of the required changes, TV effects were removed (they will
be added again for the next release).
* Improvements to audio handling, particularly for certain cases of
Windows, ATI video cards, and OpenGL mode. The sound device is now
opened only once when Stella starts, and is paused between loading
different ROMs. This fixes a problem whereby sound could possibly
not be functional after loading the first ROM. Related to this,
removed the 'audiofirst' commandline argument as it's now redundant.
* Fixed bug with displaying the ROM launcher in Windows XP; the initial
load was sometimes taking up to 30 seconds to complete.
* Added logging facility, whereby the output of the application is
available within Stella itself. This can still be printed to the
console, or also saved to a file. Add the 'loglevel' and
'logtoconsole' commandline arguments which control these settings,
and removed the 'showinfo' argument as it's now redundant.
* Updated DPC+ bankswitching scheme to latest code provided by
SpiceWare.
* Added MAMCR handling to the Thumb ARM emulation code. Note that
MAMCR isn't actually emulated, it is just ignored for now. This
fixes a bug whereby accessing MAMCR would crash the ARM emulation.
* Added 'thumb.trapfatal' commandline argument, which causes the
Thumb ARM emulation to either trap on a fatal error (throw an
exception to the debugger and exit emulation) or simply log the
error and continue. This should normally always be enabled, but
can be disabled by developers for testing reasons.
* Updated default snapshot directory to be much saner and easier to
find. For most systems, it now defaults to the users 'Desktop'.
Note that the commandline argument has changed to 'snapdir'.
* The debugger 'print' command now indicates "special" addresses if
they are read-only (R), write-only (W) or read-write (R/W).
* Fixed a bug where scrolling the mouse-wheel in certain debugger UI
items would cause the program to crash; scrolling now works as
expected.
* Fixed minor display issue in the debugger RAM area; some addresses
were being displayed as '...'.
* Fixed compile issues in the latest versions of Ubuntu and Debian, and
fixed UNIX desktop file so that Stella will launch with a ROM when
selected from its icon. Thanks go to Stephen Kitt for this code.
* Updated included PNG library to latest stable version.
* Updated the credits list in the documentation, listing people that
have donated hardware to the Stella team.