Skip to content

Releases: michalsc/Emu68

Emu68 1.0.4

20 Mar 20:54
cf4b8f9
Compare
Choose a tag to compare

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

Emu68 1.0 Release Candidate 3

13 Jan 22:29
17abfdb
Compare
Choose a tag to compare

Emu68 1.0 Release Candidate 3 is the last RC before final 1.0 version. It contains all fixes from RC1 and RC2. Additionally it contains several changes and fixes improving performance of old games and demos:

Blitwait

The BlitWait option allows the user to force Emu68 to do more fine-grained waits before writting several blitter-sensitive registers. Normally, the software which is using blitter should wait until it completed the operation, but in some cases the demo coders assumed that m68k is slow enough to not waist time for waiting. Such games and/or demos require the blitwait option activated either through cmdline.txt or with help of EmuControl to operate properly.

Ability to add EmuControl parameters to Emu68 globally

With this release user can pass the EmuControl command line options, like e.g. DBF ICNT=1 CCRD=0 directly to cmdline.txt file and thus making them global. This, in combination with eventually disabled CPU caches, allows one to run demos like the "State of the Art" directly from floppy, without WHDLoad.

RGB to HDMI Passthrough

This feature requires small external hardware (work in Progress or A500, A600, A1200, A2000) which sends the digital RGB data through the camera interface to raspberry directly. IN combination with new unicam.resource (embedded in kernel) and new VideoCore/Emu68-VC4 driver (available in new nightly build of Emu68-tools) this allows to display the RGB signal from Amiga on the HDMI. The unicam.resource allows one to enable this feature on boot already, new VideoCore driver allows one to easily switch between RGB and RTG modes on the same screen.

Options for cmdline.txt will be described in manuals and updated on final release. For now, please visit our discord channels for details.

Emu68 1.0 Release Candidate 2

18 Oct 19:56
947ce0f
Compare
Choose a tag to compare

Emu68 1.0 Release Candidate 2 contains all fixes from RC1. Additionally it contains two changes improving the support for old games and demos massively:

Updated instruction cache

The instruction cache used for translation of m68k to aarch64 code as well as to verify already translated code has been improved. The writes to chip memory automatically invalidate it, there are less flushes of the instruction cache during operation of Emu68.

Slow DBF

A special hack is added to make DBF busy loops in form of:

        move.w  #delay, Dn
loop:   dbf     Dn, loop

operating with reasonable speed. Until now such kind of loops was way to fast on Emu68 and this rendered many old games or demos unusable or misbehaving. The special handling of DBF busy loops can be enabled in cmdline.txt file by adding a dbf_slowdown keyword, or during operation of Emu68 using the EmuControl tool.

Emu68 1.0 Release Candidate

22 Sep 19:21
0eaf3ab
Compare
Choose a tag to compare

Emu68 1.0 Release Candidate 1 contains all fixes from Beta2.1 and much more:

Updated BFxxx

The bitfield instructions operating on memory are not optimized to use as little memory accesses as possible. There are still corner cases which will do more traffic than necessary, but they are now very limited. The bitfield instructions will fetch byte/word/long word/quad word instead of always working on quad words.

Better write to CHIPSET registers

After a write to memory area belonging to Amiga chipset, a byte read from ROM is issued. This improves stability of some old games/demos which never assumed to be running on m68k which is that fast. A read from ROM gives Paula enough time to complete the interrupt acknowledgment properly

IPL filter

Emu68 filters the IPL lines and recognizes an IPL change if and only if two subsequent IPL reads (which are roughly 400 nanoseconds away) give the same result. Improves many games or demos which suffered from spurious interrupts.

Write buffer removed

The write buffer was my experiment introduced quite long time ago - it featured a write combining to subsequent byte/word locations as long as they would finally result in a longword write cycle. It worked relatively well in most cases, but failed miserably in some others. Since this was just a dirty hack, it has been removed now.

CCR optimizer scan depth

The number of m68k opcodes which are scanned in-advance during m68k to arm translation for elimination of CCR flag updates is now adjustable. Use EmuControl version 1.3 for that (nightly build from 23. Sept. 2023 or newer)

Sponsors

The list of sponsors, listed alphabetically, is now embedded in Emu68 binary and is available by reading emu68/support property.

Emu68 - beta 2.1 (hotfix)

26 Aug 19:03
a4c21ed
Compare
Choose a tag to compare

This is a hotfix for Emu68 beta 2. Actually it does not deserve the "hotfix" name, as it introduces many important improvements:

  • CCR fixes. Beta 2 has changed internal handling of CCR, but unfortunately added several bugs due to the change. Beta 2.1 fixes all these problems, improving compatibility with m68k software.
  • Fixed fusing of MOVE instructions. Until now there were few corner cases where fusing of subsequent MOVE.L instructions resulted in wrong behavior of generated code. Thanks to Paraj this issues are solved now and fusing of MOVE.L instructions works without (hopefully) any bugs.
  • Added temporal instruction cache working on CHIP memory during JIT translation process. This greatly improves the translation itself, since not only the translator itself accesses instruction stream, but also CCR optimizer and CRC32 calculator.
  • Added optional slowdown of code executed from CHIP memory. This might be important for old games and/or demos which rely on CPU busyloops
  • Removed code inlining feature on 24-bit memory to reduce the need of crawling through the CHIP memory. Greatly improves the performance of demos/games where instruction cache is set to checksumming mode.

The Beta 2.1 is recommended for all PiStorm users. Per default the firmware is used in two-slot mode. By adding one_slot option to cmdline.txt one can force the single-slot operation. This is not recommended for Pi3 users.

Emu68 - beta 2

31 Jul 18:54
5b84934
Compare
Choose a tag to compare

This is second beta release of Emu68 with focus on PiStorm and PiStorm32lite devices. In case of the latter the version is based on a 2-slot firmware for Efinix FPGA, which dramatically reduces write latency in case of continous writing to the CHIP memory of Amiga. This beta covers over one year of hard work on both Emu68 and PiStorm as well as thousands of hours of testing done by volounteers. The stability and compatibility improved drastically during this time, we have also introduced the PiStorm32lite for Amiga 1200. The performance improved not so greatly since it was very high already.

As with nightlies and previous beta release - please make sure you download version matching your pistorm! This time in order to avoid mistakes the Rasberry Pi standalone version is not released as a binary file, since this one is missing a suitable operating system.

Emu68 - beta version

04 Mar 12:50
Compare
Choose a tag to compare

This is beta release of Emu68. The integer part is passing cputests with exception of MOVEC without any issues. Currently the trace debug modes are not working yet, same applies to MMU. The FPU is operable but has few not yet solved issues resulting in few glitches in games/demos.

PiStorm users - please make sure you have picked PiStorm designated binaries!

nightly

11 Mar 09:20
eccb64c
Compare
Choose a tag to compare
nightly Pre-release
Pre-release
Delete old nightly before pushing new one

Prerelease preview

08 Nov 23:33
Compare
Choose a tag to compare
Prerelease preview Pre-release
Pre-release

Very early unusable preview. Please ignore.