Pixel exact emulation of the Commodore 128,Commodore 64, VIC 20 and Atari 2600 written entirely in Java
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
If you notice performance issues or delayed toggling of full screen mode, add -Dsun.java2d.d3d=false to the java command line.
***JAVA 9 and 10 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***
Size : 2032.775 Kb
Type : jar
Size : 528.5 Kb
Type : doc
- 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
- Fix small bug with Sprite Y flipflop behaviour introduced 21 May 2018. Title Needed - timer at bottom of screen no longer flickers.
- Some 8580 filter updates
- Some fixes to pulse output when TEST bit is set inSID Waveform generator.
- Rolled back some changes to SID waveforms that made final part of Wonderland XIII sound like crap. VICE repository noise writeback test 1 fails now but at least it sounds good again.
- Update to some logic to serial port DATA lineoutput for C1541 and C1571. Fixes some loaders including Krill's latest one at https://csdb.dk/release/?id=167152
- Add command line options for selecting 80 column mode and dual screen for c128 at startup.
eg. java -jar Z64K.jar c128 -80 -dualscreen will start the C128 emulator with dual screens with 80 column mode enabledin the main screen.
- repositioned disk preview window to right side of file chooser.
- Improve Game Loop and sound output.
- Fixed VDC double pixel mode horizontal blanking behaviour for C128
- Allow 2nd screen of C128to be toggled off if it is in full screen mode without crashing the emulator.
- Fixed bug when attempting to set 2nd C128 screen to Full screen mode. Either main screen or 2nd screen can be set to full screen using ALT-ENTER for c128.
- Minor improvements to toggling full screen mode. Action happens in same thread as renderer.
- Disable repaint of bottom panel when in exclusive Full screen mode. Fixes flickering of bottom put of screen during disk activity when -Dsun.java2d.d3d=false option is used at command line.
- Minor improvements to sound output, latency and game loop.
- Improved responsiveness of portal screen when emulator first starts up.
- TestBench UI can execute interactive tests without locking the testbench player.
- Some minor improvements to 6510 CPUport behaviour.
- Updated German language support by Bodo
- Added 256KB geoRAM support. Relevant VICE test programs pass. Works with GEOS V2
- ... and must add C1581 to manual tests as well. Fixed C1581 reading of disks that was broken in release published 5 minutes ago. Fortunately I caught that one quick. Hopefully all the recently introduced bugs that TestBench didn't pick up have been fixed now...
- Fixed recently introduced bug that prevented writing to c1541,c1571, and c1581 disks.
- Improved some MOS 6522 latching behaviour as discussed in VICE bug#582 https://sourceforge.net/p/vice-emu/bugs/582/
- Fixed bug in sidplayer introduced with today's earlierupdate to output of 6510 IO port fix.
- Fixed tape functionality for c64 mode of c128
- Fixed default value of output of 6510 IO port. https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/CPU/cpuport/initvalue.crt
- Fixed bug introduced 13 May that prevented tape fast loaders fromworking.
- Moved Expert Cartridge controls from menu to the cartridge control panel
- C64 cartridge:- Set vic bank to 0 on hard reset. Fixes display when swapping from one cartridge to another cartridge thatuses ultimax mode.
- Fix C128 MMU control of zero page and stack in shared memory with updated mmu test (https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/c128/mmu/mmutest.prg)
- Fixed latching of MMU registers for setting C128's zeropage and stack . All tests at https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/c128/mmu/ PASS.
- Included some snapshot information in preview window.
- Improved rescaling of snapshot screen previewimages.
- Enabled screen preview of snapshots.
- Snapshots can be loaded from command line and automatically start with the correct computer without explicitly including computer model as an argument.
- Fixed RESTORE key for VIC 20
- Fixed minor bug with CIA CNT and SP trigger on reset.
- Updated c128, c1571, and c1581to use FSDIR line correctly
- Create computer objects and application for the first time only when required.
- Close applications when suspending a computer.
- Blank main screen during startup of computer.
- Fixed a timing issue with VDC busy flag introduced at the start of this year. VDC version of Risen from Oblivion starts the raster bars at the correct time in the music again.
- Updated VIA port latch behaviour.
- Minor adjustments to Timer B values when in shift mode.
- Fixed masking of VIA timer B instead of Timer A when Timer B underflow occurs when in shift mode
- Removed some debugging output from VIC 20
- Added a delay to the grounding of VIA1 CA2 pin when it is set to input for VIC20. All of the VIASR register tests programs that read the state of the interrupt register pass. Only 2 tests fail now in the VIC20 suite of Shift Register test programs...
- Fixed index out of range exception when changing SIDs using SID player where the currently playing songnumber is higher than the number of songs in the newly loaded SID.
- Increase priority of main game loop thread.
- Updates to SID envelope behaviour. env_tests pass ==> https://sourceforge.net/p/vice-emu/code/HEAD/tree/testprogs/SID/env_test/
- Even more fixes to VIA shift register functionality :)
- Added -snapshot command line option
- Fixed REU test programs being able to automatically execute with the Testbench GUI.
- More fixes to VIA shift register functionality.
- Fixed runtime error that could occur when attaching cartridge image in c64 mode on c128 via command line options. c128c64 testbench script does not get stuck on test CPU\cpuport\initvalue.crt
- Fixed issue with c128 entering monitor when resetting after auto-loading program via command line option.
- Minor adjustment to cia values after loading prg files. Shift register test programs pass when loaded and run via menu for c128 in c64 mode.
- (Build 20180415.1627) Updated fast serial behaviour at startup for C128. Some more c128c64 tests pass using the testbench scripts.
- added -exitscreenshotvicii to support c128c64 testbench script screenshots.
- added -go64 command line option for c128c64 testbench script support.
- Fixes to behaviour of portal screen.
- write sane values into VDC registers on hard reset. c128 can load C64 cartridges from command line
- Fixed a whole heap of issues with emulator when starting using command line options.
- -debugcart option disables loading of config file that can mess with testbench scriptresults.
- Fixed return value of unused VICII registers.
..\testprogs\C64\autostart\defaults\test.crt - ok
- Emulator default settings value properly setwhen starting prg file from command line.
..\testprogs\CIA\shiftregister\cia-icr-test2-continues.prg - ok
..\testprogs\CIA\shiftregister\cia-icr-test2-oneshot.prg - ok
- Started implementing shift register for MOS6522. viasr00, viasr00exp, viasr04, viasr04exp, viasr08, viasr08exp, viasr0c, viasr0cexp, viasr1c, and viasr1cexp from the VICE test repository for the VIC 20 pass.
- Added 32K option for VIC20 testbench tests.
- Implemented some optimisations to SID waveform calculations.
- (Build 20180412.2222)Fixed bug introduced in last uploaded version that killed samples in Coma Light 13.
- Fixed adjustment of frame rate display.
- Testing of VIC 20 when using testbench scripts saves screenshots at VICE default resolution
- More SID fixes. All SID testbench exitcode tests pass.
- Take 2... Fixed ring modulation for SID (for real this time) :)
- Fixed Noise register write-back discussedin VICE bug #746 https://sourceforge.net/p/vice-emu/bugs/746/
- Fixed ring modulation for SID
- Fixed read value of OSC for MOS8580. SID detection works in programs that use it.
- GUI version of testbench skips test if it can't find test program.
- Fixed timeout values for C128 testbench tests.
- Fixed error with screenshot on exit when emulator attempts to exit before first screen was rendered.
- Emulator exits with error code 1 if timeout occurs with testbench scripts.
- Fixed a bug that could sometimes corrupt loaded disk images because of a resource conflict with the disk viewer. Seems to only affected disks automatically loaded by command line options including with testbench. All disk scan tests from the VICE test repository always loads the disk image correctly now.
- Full support for testbench scripts still WIP. A few tests fail in script version that pass in GUI version orwhen executed as a standalone program. Most seem to work as expected though. :)
- added new commandlinememory option. -memory <8k|all> Testbench scripts work for VIC 20.
- Re-enabled GUI version oftestbench for VIC 20.
- added VIC 20 command line options in preparation for testbench script support.
-unexp, -3k, -8k, -16k, -24k, and -full
memory expansion size
- added extra command line options to support Testbench scripts
Sets screen to VICE defaults and exits with exit code when Testbench flag is written to.
Saves screenshot to filename on exit. If debugcart is trigger, screenshot is delayed 250,000 cycles. File format should include extension .png. Screenshots work in console mode.
Exit emulator after n cycles
enable warp mode
note: Screenshots for NTSC needs some fixes to work properly with testbench scripts. They work fine in the Testbench GUI. I should have this fixed in the next release.
- Fixed reflection warning with jInput libraries for Java 9+.
- Renamed jar file of Z64K NewUI to Z64K.jar for this and future versions
- Fixed bug that could crash machine monitor when cpu PC overflows.
- Fixed issue where disabling sound chip sent emulator to warp mode.
- Adjust size of waveform displayed in SID analyser to best fit the window. Removed addition of DC values with display of voice output.
- SID analyser displays data in warp mode as long as sound chip is enabled.
- Smoother rendering in SID analyser
- Warp mode no longer disables sound chip. Warp mode only mutes the sound.Sound chip can be disabled via volume control. When disabled the sound chip registers still get updated but does not calculate any of the waveforms or produce any sound.
- SID Analyser.
Can toggle muting of SID 1 voice 1-3 with F1,F2, and F3.
F8 displays voice output prior to going to filter (default).
- Improved GMod2 cartridge logic.
1 April - New UI
- M93C86 EEPROM implemented. GMod2 cartridges can read and write to EEPROM. M93C86 included in snapshots. Sam's journey includes saved games in snapshots.
- Added read only GMod2 cartridge support. Sam's journey cartridge works. Saving of game state can only be done with snapshots at this stage.
- Minimum main frame size set to 500x400 pixels and resize screen to single pixel mode is disabled so control buttons are always viewable on top panel.
- Included a resize to 4:3 aspect ratio button on top panel.
- Moved console output button to Help menu
31 March - New UI
- Update VICII snapshot module to support VICIIe. Snapshots for C64 are backwards compatible. Snapshots for other emulators will be backwards compatible starting with first official release.
- More improvements to C128 snapshots.
- C128 can resume snapshots created by C64 emulation.
30 March - New UI
- Some improvements to C128 snapshots. Note: snapshots for all emulators are still in development so snapshots created with the beta versions might not be compatible with the final release. I will make sure starting from the official release of Z64K snapshots are backward compatible.
- Prevented assembler and pasting text from being able to crash emulator when invalid values are used.
29 March - New UI
- Fixed some behaviour of Testbench when stopping/skipping tests.
- Application menu populates correctly when suspending
- Fixed bug with Atari 2600 that was stopping it from starting and crashed the emulator.
Archived old emulators.
The new UI of Z64K has all the features of the old emulators so I have archived the old obsolete emulators. Only thing missing from new UI is scanlines and adaption motion blending which needed major improvements anyway. Also Testbench is missing the filters of the old version but I will be doing a major overhaul of that in the new version. As is it does the job that is intended. Things that still need to be done before formal release are:
- Stable snapshots for C128
- Testbench support for other emulators. I have a version that can run standalone which I will upload in furtue but it's not very usefuluntil I create proper plugins for other emulators.
- Fix known errors with assembler that can crash the emulator. It is caused by the assembler putting invalid values into emulation memory.
- Controls for SID Analyser
- General improvement of GUI for all apps including SID Player
28 March - NewUI
- Fixed issue with Testbench not resetting to correct palette after finishing tests.
- Enabledtest times in Testbench.
- Included JInput support to VIC 20
- CPU multiplier enabled for VIC 20 and C64
27 March - New UI
- Fixed sticky menus
- Enabled border mode select for VICII and VIC
- Changed palettes to use existing VPL files from VICE.
- Enabled palette selector.
- Enabled Luma selector.
- Enabled Remote Monitor.
The above points means I'm almost finally ready to remove the old obsolete emulates and release the first official version of Z64K! One major item I need to fix before this can happen is stable C128 save states.
Version 1 is created using Java language level 7 so requires JRE 7 or better.
For future note when I start working on version 2, it will be created using language level 8 features so will require JRE 8 or better to run.
25 March - New UI
- Pressing/Releasing ALT key always resets keyboard ports. Fixes some issues with programs thinking commodore key is stillpressed when using keyboard for hard reset.
- Added some buttons to enable/disable 2nd screen and to toggle VICII<==>VDC for C128
- Enabled keyboard joystick as defaultfor VIC20
- Added some more languages to the language list
24 March - New UI
- Undid 4 pixel NTSC change to VIC 20. I need to confirmation from a user with NTSC VIC 20 position of NTSC screen...
- Enabled SID Analyser (Previously known as SID Panel).
Top 3 windows are the SID voices, 4th Window is volume control, 5th Window is combined output.
F9=Disable Output(Pause). Must use one of the above options to re-enable.
- Improved snapshots. C128 snapshots still needs a lot of work. Updated cartridge image included in snapshot (EasyFlash).
- New EasyFlash cartridges defaults bootswitch to off position.
22 March - New UI
- Started work on a new Cartridge User Interface. Can create, write and save EasyFlash cartridges.
19 March - New UI
- Implemented Am29F040 for EasyFlash. Easyflash passes torture tests.
18 March - Version 2 of D030 tester
14 March - NewUI
- Added simple DigiMax support. Available under Cartridge Menu. Mapped to DE00.
13 March - NewUI
- Individual models of drives areonly created as needed. Even more improvements to startup time of emulators.
- Fixed reading of VIA ports in drives. SSDPCM2 V3 - 16khz does not freeze after first logo animation now.
12 March - New UI
- Some fixes to EasyFlash Cartridge. Lemmings works now.
- Re-enabled disk animation on C128
11 March - NewUI
- Fixed spacing of debug output of 6502 instructions in machine monitor.
- Drives are only created when needed. Faster initialisation time for all emulators that use disk drives.
10 March - NewUI
- GUI changes - Language is now a menu item. (I will be adding other languages soon.)
- Machine monitor memory dump improvements
- Screen resizing improvements
- Improved mouse responses when right clicking in machine monitor to toggle breakpoints
- Improved mouse response to initiate disk viewer.
- Version 1.6 of d030tester. ==> d030tester.zip
4 February - NewUI
- Updated mapping of VDC RAM to match real C128 when register 28 is set to 16KB mode.
29 January - NewUI
- Included some screenshot options via capture tab in screen settings
- D030 tester updated to Version1.3 (see link below)
26 January - NewUI C128 VICIIe
- output black during VICII VBLANK.
- Can be seen in updated D030test ==>d030tester.zip
23 January - NewUI
- More improvements to phase shifting ofcolor using VICIIe testbit.
22 January - new D030 test suite
15 January - NewUI
- Improvements to phase shifting color using VICIIe testbit. d030 test program updated.
14 January - NewUI
- fixed VICII PAL screenshot dimensions for use with TestBench
- More improvements to VICIIe d030 testbit. Fixed bug that can very rarely cause VICIIe running in 2Mhz mode corrupting databus. D030 test program updated.
11 January - NewUI
- Improved VICIIe testbit behavior. Skips correct amount of rasters when set. d030test.prg
9 January - NewUI
- fixes to assembler. Correctly handles zeropage instructions.
6 January - NewUI
- added some command line options. I haven't tested all of these so let me know if they don't work.
Z64.jar computer [-options]
computer = atari2600|c64|c128|vic20
-8 diskimage (.d64, .g64, .d71, or .d81 file)
- reu 512K
-filename (.prg, .d64, .g64, .d71, or .d81 file)
-ciamodel model (0 or 1) 0=6526, 1=6526A
-sidenginemodel model (256 or 257) 256=6581, 257=8580
-cartcrt cartimage (.crt)
3 January 2018- NewUI
- Added some file drag and drop functionality for PRG, D64, D71, G64, and D81files.
31 December - NewUI
- Saving and creation of new Disk Images enabled.
- Fixed crash that occurred when attempting to use multiple drives
29 December - New UI
- Fixes to C128 2Mhz mode interrupt timing. C128 world record displays raster bars at correct locations. (VICE displays one character too late) http://csdb.dk/release/?id=98201
21 December - NewUI (see 9 October entry for more information)
- Fixed VDC 40 column mode sometimes not displaying.
- Vertical adjust value is now implemented for VDC interlace screen modes as well as non interlaced screen modes.
- New low level interlace detection. The rendering of screens detects valid interlace signal instead of being forced into interlace modes when the relevant register bits are set.
9 December - NewUI
- Added ability to select custom ROMs. (see 9 October for link and more info)
4 December - C128 Beta and NewUI
- Fixed a bug introduced with update on 5 August which wouldn't allow tapes to load with the Commodore 128 in both C128 and C64 modes.
26 November - New version of NewUI - C1581 works!!!
21 November - New version of NewUI emulator uploaded. (see below)
- Note: c1581 emulation is incomplete. Computers can communicate with the c1581 via serial port but I still need to complete WD1770 emulation for reading/writing disk functions. .d81 images can only be previewed at this stage in the diskviewer.
24 October - All emulators
- Fixed Weave renderer. Interlaced modes for C128 and VIC20 shows correctly again.
9 October - NEW UI
- New UI is almost ready to replace the current emulators!
The only things missing from new UI now that are available in the currently released versions are as follows. Note this list does not include things I still need to fix such as full C128 snapshot support.
- Luma coefficient selector (added 27 March 2018)
- CPU multiplier (enabled 28 March 2018)
- Palette selector (added 27 March 2018)
- Border Mode (enabled 27 March 2018)
- SID Panel (enabled 24 March 2018)
- Test Bench Configuration options (backend implemented)
- Scan lines and Motion Adaptive Blending
- JINPUT support (done for c64&c128 11/10/17, VIC 20 28 March 2018)
- Remote Monitor (added 27 March 2018)
- Disk RPM
- Machine Monitor (is implemented but missing some commands)
- C128 Function ROMs (added 10 December)
- Full Language support
- Most of the above items will require little effort to finalise so I should be able to release the new UI soon for comprehensive testing. I will provide a complete list of the new features then as well. A couple of the new features included are ALT+DELETE and ALT+INSERT to copy/paste text (automatically detects if source text is all in upper case or combination lower/upper case), and dynamic screen resizing. :)
1 October - Change Log and New UI
- Archived change log into changelog.doc
- I've uploaded an updated version of the new UI (see below). It's getting much closer to be able to totally replace the currently released emulators! :)
30 September - C64 BETA
- Set raster to correct value when loading snapshots. Fixes loading of snapshots that rely on exact raster position. eg IK+. I discovered bug while implementing snapshots for new UI. See below for link to new UI.
23 September - NEW UI
- I've had a few requests on the progress of the new UI so rather than sending out individual copies I have uploaded a temporary version for download. I will update the downloadable version occasionally but I won't be announcing any of the updates or features until I am ready to release it. I warmly welcome feedback and questions while I develop the new UI. The new UI is functional and reasonably stable but is not fully tested yet.
17 September - All emulators
- Fixed issue with latest version of Java where frame could loose focus after toggling between full screen and window modes.
- NEWS ***UPDATE on progress of new UI*** I am very close to having all the features of the current emulators in the new improved UI so I am hoping to release it in the next few weeks for wider testing. If you would like a preview of it please send me a message and I will send you a copy now. :)
28 August - News: No new updates ready to be released yet but I'm busy working on a new UI that will allow execution of any of the emulators from one jar file. New features to the UI will include volume control, improved file handling interface, and individual screen controls for multiple screens including video signal information(C128).
5 August - C128 Beta
- version b - Fixed a bug with FSDIR. It was the reason why the upgraded version of CP/M 3.0 PLUS would not load. It's a bug that has made me scratch my head for ages, but now that I found it, it was so obvious what the problem was. :p
- Updated some fast serial logic. Upgraded version of CP/M 3.0 PLUS works.