Emu68 1.0 marks the first stable release in the 1.0 series. Starting with this version, all users are encouraged to use only official releases. Nightly builds should be avoided unless absolutely necessary. Version 1.0 includes all the changes from RC1, RC2, and RC3, along with additional fixes and improvements.
Version v1.0.0
Improved 68000 Bus Handling on PiStorm Classic
Signals on the 68000 data bus during byte writes now expose 8-bit data on both the low and high nibbles. While this may not be critical in most cases, it could resolve issues with some older or faulty code.
Optimized 64-Bit Immediate Loads
Emu68 now emits sequences of immediate loads (in 16-bit portions) when writing to a 64-bit register. This replaces the previous method of PC-relative memory fetching, which may significantly improve performance on modern CPUs.
Better HashTable Fetch Alignment
The hash table for translated code is now better aligned, reducing the number of ARM instructions per fetch. Since the hash table is a performance-critical part of the JIT loop, this change could result in noticeable speed improvements.
Fast Page Zero
When the fast_page_zero
option is set in cmdline.txt
, the first 4K of RAM is mapped to ARM memory. This can improve performance in cases where moving the VBR to FastRAM isn’t an option.
CRC32 Calculation Fix
In previous versions, the CRC32 checksum for M68k code blocks did not account for the last M68k instruction, which could lead to errors when self-modifying code detection was enabled. This has now been fixed.
eMMC/MicroSD Driver Corrections
The drivers for eMMC and microSD in Emu68 tools have been fixed to prevent devices from disappearing at boot.
Main JIT Loop Rewritten in C & Dead Code Removal
Though there is no measurable performance impact, the main JIT loop has been rewritten from AArch64 assembly to C, improving maintainability. Additionally, dead code and AArch32 remnants have been removed.
Version v1.0.1
LhA Tool Fix
The LhA tool sometimes accesses non-owned memory, reading from the uppermost portion of the 4GB address space. This fix fills the memory with a random pattern, preventing crashes and performance issues.
Version v1.0.2
Updated unicam.resource
The unicam.resource
has been updated to the latest version, required for the current version of the VideoCore P96 driver, which would otherwise crash.
Version v1.0.3
Buptest & Kickstart Issue Fixes
An issue with Kickstart and buptest failing to work properly has been resolved. The problem stemmed from buptest using PiStorm functions reserved for later stages of Emu68's startup. This has been replaced with lower-level PiStorm access functions.
Zorro III Disable Option
A new option, z3_disable
, has been added to cmdline.txt
that allows users to completely disable all Emu68 Z3 boards in the system. Use this option only if you understand its implications, as it will disable microSD, unicam, device tree functionality, and other Emu68 features.
Version v1.0.4
SCSI Command Fixes in SDHC and eMMC Drivers
Both drivers now clear the SCSI status flag when a command succeeds and set it appropriately upon failure. This fixes issues with the PFS filesystem when used in direct SCSI mode (PDS\3 DOS drive type).