Pixel exact emulation of the Commodore 128,Commodore 64, VIC 20 and Atari 2600 

Z64K should run on any platform with an updated java runtime environment installed. I will update this site when I get some free time but in the mean time feel free to drop me a message via the contact page with feedback or questions. The changelog only includes changes not shown on this homepage.

*tip: ALT-ENTER togglesfullscreen mode

***JAVA 9, 10 and 11 users should use the –Dsun.java2d.uiScale=1.0 option if the screen does not render nicely on your setup.  See https://bugs.openjdk.java.net/browse/JDK-8189416***

LINUX users: You might need to change the permission of Z64K.jar to allow execution. e.g. chmod +x Z64K.jar. 


Z64K.jar Z64K.jar
Size : 2156.166 Kb
Type : jar
z64k_quick_guide.txt z64k_quick_guide.txt
Size : 6.989 Kb
Type : txt
changelog.doc changelog.doc
Size : 903 Kb
Type : doc

Keyboard shortcuts

  • ALT+O = Toggle output of VICIIe/VDC to main screen (C128 only)
  • ALT+2 = Toggle 2nd display ON/OFF (C128 only)
  • ALT+ENTER = Toggle Fullscreen mode
  • ALT+INSERT = Paste text from clipboard
  • ALT+DELETE = Copy screen text to clipboard
  • ALT+Q = Toggle capture mouse (C128 & C64)
  • ALT+R = Soft reset
  • CTRL+ALT+R = Hard reset
  • ALT+W = Toggle Warp mode

AdditionalC128 keys

F7=40/80 DISPLAY

The following keymappings override the values in the keyboard configuration editor for the C128
F9 = F1/F2
F10= F3/F4
F11= F5/F6

Other changes are:-
For emulated NUMPAD Joystick Num Lock needs to be OFF.
C128 NUMPAD keys works with Num Lock ON.

There is an option to enable/disable extra c128 keys via settings==>setup==>Extended Keyboard keys in the latest downloadable version of the emulator. Default is enable extended keyboard keys in C128/CPM modes only.

The C128 Direction keys are mapped to PC cursor keys, and CRSR U/D and CRSR L/R mapped to PC NUMPAD / and * when Extended Keyboard keys enabled.


30 November

3 November

  • Delayed clearing of sprite collisions register by 4 pixels. Fixes spritevssprite test program.

28 October

  • REU timing fixes,  All VICE test repositoryxfertiming tests pass.

23 October

  • Mouse cursor icon changes when hovering over Border Mode dimensions image under Screen settings to better hint that screen and border size can be manually adjusted.

6 October

  • Handle cases where the Vertical smooth scroll is greater than the total number of scan lines per character with the VDC in bitmap mode.

25 September 

  • Fixed bug with drop and drag functionality.
  • C128 emulation recognises .c128 files

15 June

  • Update of character base address should be applied immediately (VDC register 28, confirmed with VDC split test program). Re-enabled Character Vertical Size(VDC register 23). VDC 101 100% supported now. :)
  • Improved latching of VDC char base address.  Almost there... Artifacts between logo and scroller of VDC101 no longer appear. Still need to fix smooth x scrolling for logo and remove artifacts above logo.

14 June

  • Fixed a bug with character vertical size.  VDC101 logo imageshows correctly in demo linked in next dot point.
  • Fixed a bug with VDC register 6.  Still not perfect yet but a huge improvement running VDC101
  • Resetting c128 also resets d030 test bit.  

13 June

  • Fixed bug in Pitfall II wherefirst and last column of pixels displayed incorrectly that was reintroduced in a recent update.
  • Added 64K EF cartridge support for Atari 2600
  • Fixed bug that didn't set correct bank selection registers for ROMS with 3 x 4K ROMS.  Updated RAM size detection code for SC to detect variable RAM sizes.  FA (RAM Plus) cartridges work now.

12 June

  • Fixed colour priority of TIA playfield in score mode.
  • Allow loading of .a26 file extension.
  • Fix minor bug with TIA RESP timing. 32 text demo show correct spacing for all rows now.
  • Slightly improved  TIA NUSIZ register behaviour when updatedduring draw

11 June

  • Adjusted behaviour of TIA NUSIZ when registerupdated close to drawing of pixels. Fixes jitter in Meltdown.

10 June

  • Fixed correct Palette selection for Atari 2600 PAL/NTSC.
  • Added most of the Thumb mode ARM commands for DPC+ cartridge. 
  • Attempting to load a weird size Atari Cartridge no longer crashes the emulator.
  • Fixed bug with DCP+ function 2.  Gizzle Snow, Pac-man Eat-Run, and The Quest display correctly now.
  • Fixed ARM BCS instruction
  • Added some ARM support for Atari 2600 DPC+ cartridge.  Frantic Freddy is playable now.

8 June

  • Added Atari 2600 DPC+ cartridge support

7 June

  • Slightly adjust Atari 2600 crystal clock speed to be 3.579575 MHz
  • Added Atari 2600 Spectravideo Compumate support

6 June

  • Fixed graphics in first and last pixel column in Pitfall II
  • Atari 2600 Pitfall II support.

5 June

  • Updates to TIA RESP timing during draw.  32 char demo now has correct spacing.
  • Updates to TIA RESMP timing.  Snoopy clouds and landscape display much better.

4 June

  • Reset Cartridge to default bank on when resetting the Atari 2600 
  • Fixed some MOS6532 default values on reset of Atari 2600.  Summer Games and Winter Games work now.  
  • Removed some glitches during TIA HMOVE .
  • Update to RESMP timing.  Clouds in Snoopy display much better.

3 June

  • Improvements to Atari 2600 MOS6532 timeremulation
  • Added Atari 26001K and 2K bank switching cartridge detection.
  • Fixed some TIA HMOVE behaviour.  Mega bitmapDemo displays correctly again.

2 June

  • Prevent crashing of Atari 2600 when attempting to load unrecognised cartridge size 
  • Added CPU status in debugger window for Atari 2600
  • Added 8K Superchip cartridge detection for Atari 2600

1 June

  • Create custom sample rate for Atari 2600 to exactlymatch TIA sample rate.  Removes high pitch sound from Quadrun.
  • Updated Cosmic Ark and Bang! starfield effect to output single/double or no pixel depending on internal TIA clock cycles.
  • Updated quick guide to include Atari 2600 Keyboard options for changing switches.

31 May

  • Atari 2600 - New TIA model which is now much more accurate.  Path in snowfield of Spikes Peak displays at the correct position.

29 May

  • Added Atari 2600 TigerVision cartridge support. (extension .3f)
  • Fixed behaviour of C64/C128 IO range de00-dfff when no cartridge has been inserted on startup.

25 May

  • Minor updates to CRT emulation

24 May

  • Fixed some bugs with VIC 20 serial outthat was causing JiffyDOS to misbehave.

11 May - Major update to Full Screen handling (ALT+ENTER)

  • Fixed some weird behavior when using Java 11 of Windows when toggling full screen mode on setup with 3 monitors.
  • Full screen settings available under General tab of Global Settings.
  • New borderless mode (default full screen method). 
  • Multiple monitor support (c128 can have 2 active full screens at the same time)

8 May

  • Added Machine Monitor console history. Use UP/DOWN arrows.
  • Made Machine Monitor console window colorful.

7 May

  • New Machine Monitor console window.

4 May

  • Updated C128 Machine monitor commands rb0 and rb1 to no longer mess with MMU.
    rb0 - debug using memory in RAM bank 0
    rb1 -  debug using memory in RAM bank 1
    system - debug using system view of memory (defaults back to this when exiting monitor)
  • breakpoints for c128 now have 17 bit range.  eg:- 
    • bk e000 will set a breakpoint at bank 0 location e000
    • bk 1e000 will set a breakpoint at bank 1 location e000.

2 May

  • Report actual cycles/second executed on slow devices that can't handle full emulationspeed (e.g. Raspberry Pi).

1 May

  • Added dumping of C128 mmu in machine monitor. io d500

29 April

  • Emulator runs at correct speed after host computer resumes from sleeping.
  • Fixed bug caused by last update to Ocean cartridge that prevented Shadow of the beast working.

28 April

  • Re-enabled Full Screen options when display mode options are detected.
  • Disable Full Screen options of Full Screen modes not found.
  • Mirror Ocean Type 1 CART ROM LO to CART ROM HI. https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/C64/carts/ocean/ocean.crt cartridge works now.
  • Added command line options for soundrate and soundbufsize

    -soundrate <value>
    Specify the sound playback sample rate (SoundSampleRate). (8000..192000)

    -soundbufsize <value>
    Specify the size of the audio buffer in milliseconds (25..350). 

  • Updated VIC20 VIC noise generator as discuss in VICE feature request #328 6561 noise generator has been reverse engineered
  • Mastervolume control enabled for VIC20 and Atari 2600.

27 April

  • Minor changes to SID player UI behaviour
  • Set minimum size for SID Player window. Expand SID information text area on window resize.

26 April

  • Minor tweaks to sound latency reporting.
  • Major rewrite of Audio plugin.  Options to change sample rate and buffer size available on the General tab of Global settings.

23 April

  • Removed settings box in development that should not have appeared in the File menu.

20 April

  • Fixed bug when manual selection of 2nd SID selection was always setting it to address $d520 no matter what value was selected.  All 2nd SID locations in Super Mario Bros work. 
  • Fixed a bug with SP logic that caused VICE test repository cia-int tests to fail.
  • Fixed a bug with the CIA SP output that was bringing the IRQ pin low when byte wassent regardless of the mask value in the IMR.   Thanks Krill for the bug report and pointing me in the right direction to fix this. :)

19 April

  • Fixed some of the Fast Serial bugs that were introduced in 5 May 2018 release.  C128 version of JiffyDOS ROMs function correctly again when using1571 and 1581 drives.  

17 April

  • Removed doubling up of 1541 debugging output when using C128 emulation.
  • Include drive CPU state at top of Machine Monitor when debugging device 8:
  • Allow Machine monitor to assemble to device 8.
  • Disassembly window is refreshed when assembled code falls in range of what is displayed in the window.
  • Fixed some Machine monitor debugger output for 1571 when drive is in 2 Mhz mode.
  • When a breakpoint is trigger, correct CPU is shown by default when entering theMachine Monitor. 

16 April

  • Fixed bug with cursor in interlaced mode.

15 April

  • Updated VDC interlaced bitmap behaviour when vertical adjust is set to 0.  Thanks Scott Hutter for the test program . :)

7 April

  • Fixed bug introduced on 22/11/2018 when SID envelope underflows.  Hang drum sounds much better now.
  • Disabled extra pixel in VDC 40 column bitmap mode

21 March

  • Minor improvement to frame skip

17 March

  • Fixed case where frame wasn't detected during frame skip that could freeze emulator.  Also added timeout value in unlikely case frame is never detected during skipping of frame.
  • Added frame skip (ALT-F while emulator paused) and fixed bug when starting monitor for first time when emulator is paused

17 February

  • Improved Comal-80 support.
  • Added Comal-80 cartridge support.

14 February

  • Added rendering hints to improve display with JRE 9+

6 February

  • Fixed CPM and Expert cartridge VICII graphics fetch bug that was introduced in last version.

4 February

  • Fix C1581 LED behaviour
  • Uploaded correct branch of Z64K.  Earlier version has some disk issues resulting from bug in CIA Port A mask.
  • Fixed bug introduced into SID waveform generator on 15 August 2018.  Samples in the last V8 playcorrectly again.

12 January

  • Fixed a bug that caused the TestBench drive testsuite to fail to mount disk.

8 January

  • Compact toolbar icons on main screen

7 January 2019- New TestBench Frontend

  • Fixed new TestBench Frontendscript for disk images.
  • Fixed case sensitive name of image filethat caused a fatal error on some systems.
  • Removed TestBench from menu when emulating Atari 2600.
  • TestBench support for VICE and HOXS64.
  • TestBench frame resizable.
  • Z64K C128 can select c64 or c128 tests in TestBench

28 December

  • Fixed exit screenshot size when in console mode. Testbench script screenshot tests work again

23 December

  • TestBench selects correct tests for currently emulated computer 

17 December

  • Fixed TAP (raw C64 cassette TAPE images) version 0 support

16 December

  • Fixed some SID player bugs
  • Added c128 Expert Cartridge support
  • Fixed minor bug with c64 cartridge NMI logic

15 December

  • Fixed bug introduced on 10 November that prevented CP/M cartridge working with C128 emulation

13 December

  • Minor changes to Testbench UI tree look and feel.
  • Fixed some bugs with Expert Cartridge.
  • Removed some debug output from emulator that I forgot to disable in last release.

2 December -First formal release!!

  • All logged changes moved into changelog. 
  • Release 1.0 has a java language level of 7 so requires JRE 7 or better. 
  • Future versions with release number 2.x will be created at java language level of 8 so will require JRE 8 or better.