www.jupiter-ace.co.uk

Previous Page > Index FAQs > ACE snapshot file format.


ACE snapshot file format.

Many thanks to Edwin Blink for his work on finding this out information, after many hours of looking at the ACE32 emulators snapshots. It was thought that the ACE32 snapshot format information had been lost, but we know the following:
The ACE snapshot file is a memory dump from address 2000h (8192 decimal) up to and inclusive 3FFFh (16843 decimal), 7FFFh (32767 decimal) or BFFFh (49151 decimal) depending on the memory configuration that is being used. It uses a simple compression algorithm to reduce the snapshots file size. Three or more bytes of the same values are compressed into a three byte sequence. Byte ED has special meanings:
1) ED 00       end of file
2) ED xx yy    repeat byte yy, xx times.
Note:
  • one, two or three of more ED bytes are always stored in it's three byte form.
  • ACE32 uses a maximum repeat value of F0 so a maximum of 240 repeated bytes are reduced to a three byte sequence. More repeats are stored in separate sequences.
ACE32 configuration settings and Z80 Registers.

In the ACEs memory map there are several shadows of other memory parts that are normally filled with 0s ( in emulation). However the first shadow at 2000-23FF is used to store ACE32 configurations and the Z80 registers.
Because an ACE snapshot is compressed an offset seems out of place and the Ace memory addresses instead. All numbers used by ACE32 are 32-bit words in little Indian format. (Least significant byte first).
ACE32 Configuration.

Addr:   Defaults                Description

2000    01, 80, 00, 00      ?

2080    00, 80, 00, 00       Ramtop 4000 (3K), 8000(19K), C000(35K)
2084    00, 00, 00, 00       Debugger Data Address
2088    00, 00, 00, 00       Debugger Breakpoint Address
208C    03, 00, 00, 00       Frame Skip Rate (3)
2090    03, 00, 00, 00       Frames per TV Tick (3)
2094    FD, FD, 00, 00       ? 
2098    XX, XX, XX, XX       Time emulator is running probably in milliseconds
209C    00, 00, 00, 00       Emulator Colours 0(white on Black), 1(green on Black),
                                             2(purple on Black),3(Black on White)
Z80 Register dump.

Addr:	last state             Registers

2100	50, 04, 00, 00		AF
	00, 00, 00, 00		BC
	E2, 26, 00, 00		DE
	28, 3C, 00, 00		HL
	00, 3C, 00, 00		IX
	C8, 04, 00, 00		IY
	FE, 7F, 00, 00		SP
	9D, 05, 00, 00		PC
	40, 20, 00, 00		AF'
	00, 01, 00, 00		BC'
	60, 00, 00, 00		DE'
	80, 26, 00, 00		HL'
	01, 00, 00, 00		IM
	01, 00, 00, 00		IFF1
	01, 00, 00, 00		IFF2
	00, 00, 00, 00		I
	11, 00, 00, 00		R
	80, 00, 00, 00		?
	   
Creating ACE Snapshots.

Using ACE snapshots is a good workaround for some emulators to get programs running as not all emulators can deal with TAP or WAV files. Besides this it is also a good way of omitting the sometimes awkward loading instructions as they are only needed once when the snapshot is created. To make it as user friendly as possible consider the following when making ACE snapshots:
  • Before loading your program you wan't to save make sure the emulator has been reset. This ensures a clean and shorter ACE file.

  • Load programs using their loading instructions but do not type the part that will run them automatically. ie when the loading instructions say 'LOAD D D' to load and start the game enter 'LOAD D' instead to just load the program. After the program has loaded successfully. Type the command needed to start the program. But instead of pressing enter you save the snapshot. When a snapshot is loaded back. Enter needs to be pressed to start the program. But the advantage is that you can see which command is used to start the program. so you know what to type again in case the program stops.