Introduction

I am a C64 fan since 1986 as many other people are. I played games, watched demos and read books, but when the time goes by, all activities stopped slowly in the beginning of the 90s. But one thing from the past i actually do until today, that is listening the precious SID music of all the talented music artists and demo groups. So many thanks to all of you for your work.

JSIDPlay2 is a tribute to the C64 scene and the golden times of the company Commodore. Its purpose is to bring the feeling back we had when we were young and it wants to demonstrate what a wonderful and powerful machine with so many restrictions could accomplish, namely the people learned to live with these restrictions and got creative to make things happen, that nobody would have believed thirty years ago. Many people started their business career from these roots, because of a strong interest and thinking of the fun they had playing and working with their old home computers.

SID music

SID music has been and still is collected at several sites throughout the Internet.
The most popular collections are:

  • High Voltage SID Collection (HVSC) - the biggest SID music collection on earth http://www.hvsc.de/

  • Compute’s Gazette SID Collection (CGSC) - A collection of COMPUTE!'s Sidplayer music containing tons of stereo files http://www.btinternet.com/~pweighill/music/

  • Stone Oakvalley’s Authentic SID Collection (SOASC=) - A recording project containing SID music both in SID and MP3 format. http://www.6581-8580.com

  • HVMEC (High Voltage Music Engine Collection) - A collection of music editors, trackers and other music and sound effect makers

Supported File Formats

Table 1. Supported File Formats

SID

HVSC format (PSID v1-4, RSID v2,3 or Basic), the old MUS-specific PSIDs are no more supported by this player!

MUS

CGSC stereo format (voices 1-3)

STR

CGSC stereo format (voices 4-6)

DAT

SID music data

PRG

C64 program files (a C64 program)

P00

C64 program files created by the abandoned PC64 emulator

D64

Disk image

G64

Disk image

NIB

Disk Image (read-only support)

TAP

Tape image

T64

Tape program files

REU

Ram Expansion Unit memory dump

CRT

Cartridge memory dump

MP3

the popular and lossy compression sound format (not C64 related)

Table 2. Supported Cartridge Formats

Action Replay

Atomic Power

Comal 80

EasyFlash

Epyx FastLoader

Expert Cartridge

Final Cartridge v1

Final Cartridge v3 (87, 88)

Magic Desk (32Kb, 64Kb and 128Kb)

MikroAss

Generic 8Kb

Rexx Datentechnik

Zaxxon

GeoRAM (64kb, 128kb, 256kb, 512kb, 1024kb, 2048kb and 2048kb)

REU (1700: 128 kB, 1750: 512 kB, 1764: 256 kB, 1750 XL: 2 MB and 16 MB which was never produced)

JSIDPlay2 can play:

  • Mono sound

  • Stereo sound

  • 3-SID sound

  • or even switch between MP3 recording and emulation on-the-fly for comparison reasons

We emulate up to 3 SID chips at the same time plugged into a C64 and using configurable base addresses for the second and the third SID chip at:

  • 0xd400 (always reserved for the first SID chip)

  • 0xd000-0xdfff (128 places every 32 bytes)

  • 0xde00

  • 0xdf00

JSIDPlay2 can emulate SID sound in many different ways:

  • Dag Lem’s resid 1.0 beta re-implementation

  • Antti S. Lankila’s resid-fp re-implementation (adding distortion simulation and calculation of the combined waveforms)

  • HardSID4U USB driver for Windows to make use of the real SID hardware

Sound output can be recorded as:

  • WAV (lossless)

  • MP3 at variable bit rate (lossy)

Compatibility

JSIDPlay2 is known to be a very accurate C64 emulator. All tunes you will find should work. It emulates all components of a C64 and some important peripherals. The emulation is cycle exact and passes many test programs.

  • CPU We pass the entire Lorentz suite. The CPU compatibility should be very good.

  • CIA We pass Lorenz suite’s CIA tests, and various VICE testprograms. The CIA compatibility should be very good.

  • VIC We have a reasonably good, cycle-exact simulation of the VIC, and pass some very complicated VICE testprograms such as the irqdma suite. However, some sprite tests like those used by various emutesters, and some inline video mode changes are buggy.

  • C1541 The disk drive is very compatible. All chips are emulated cycle exact, although a few loaders deny to work.

  • ReSID 1.0 beta. Sound work is always ongoing.

System Requirements

JSIDPlay2 User Interface (UI) version is a Java application making use of JavaFX for the UI.

  • Supported Operating Systems are Linux, Windows and MacOSX

  • Oracle Java 8 is required to launch JSIDPlay2, however linux users can use as an alternative openjdk 8 and must then install openjfx as well.

Launch JSIDPlay2

Note: Whereas Windows users get an executable (.EXE) to launch:

jsidplay2-3.9.exe (1)
jsidplay2_console-3.9.exe (2)
  1. Launch User interface version

  2. Launch Console version

other operating systems launch JSIDPlay2 using the following command:

cd Downloads/jsidplay2-3.9
java -jar jsidplay2-3.9.jar (1)
java -jar jsidplay2_console-3.9.jar (2)
  1. Launch User interface version

  2. Launch Console version

Configuration

JSIDPlay2 user interface version is configured using an XML file.
The first time JSIDPlay2 the user interface version gets started the configuration file is created in the users home directory:

Caution
Please replace my user name "ken" with yours in these examples.

Windows:

C:\Users\ken\jsidplay2.xml

Linux:

/home/ken/jsidplay2.xml

OSX:

/Users/ken/jsidplay2.xml

JSIDPlay2 console version is configured using an INI file.
The first time JSIDPlay2 the console version gets started the configuration file is created in the users home directory:

Windows:

C:\Users\ken\sidplay2.ini

Linux:

/home/ken/sidplay2.ini

OSX:

/Users/ken/sidplay2.ini

If you want to place JSIDPlay2 on an USB stick you can move it to the current working directory as well. Search order is:

  1. Current working directory

  2. Home directory

Tip
If JSIDPlay2 denies to launch the most probable reason is that the configuration can not be read. It is a good idea to move it away and to restart.

Additionally JSIDPlay2 always creates a temporary folder in the home folder, if it does not exist.

Windows:

C:\Users\ken\.jsidplay2

Linux:

/home/ken/.jsidplay2

OSX:

/Users/ken/.jsidplay2

JSIDPlay2 stores downloads, temporary created files and such here.

Distribution variants

JSIDPlay2 exists in two alternative versions:

  • Console version is for execution in a terminal or command prompt. It has no user interface and no graphical output. Its purpose is just to play a SID tune. However it prints out a little text based menu and reacts on keyboard input.

Use INI file: /home/ken/sidplay2.ini
+------------------------------------------------------+
| Java SIDPLAY - Music Player & C64 SID Chip Emulator  |
+------------------------------------------------------+
| Title        :            Turrican 2-The Final Fight |
| Author       :       Markus Siebold & Stefan Hartwig |
| Released     :                     1991 Rainbow Arts |
+------------------------------------------------------+
| Playlist     :                     1/9 (tune 1/9[1]) |
| Song Length  :                                 03:00 |
+------------------------------------------------------+
Keyboard control (press enter after command):
< > - play previous/next song
h e - play first/last tune
, . - normal/faster speed
p   - pause/continue player
1   - mute voice 1
2   - mute voice 2
3   - mute voice 3
4   - mute voice 1 (stereo-SID)
5   - mute voice 2 (stereo-SID)
6   - mute voice 3 (stereo-SID)
7   - mute voice 1 (3-SID)
8   - mute voice 2 (3-SID)
9   - mute voice 3 (3-SID)
f   - enable/disable filter
g   - enable/disable stereo filter
G   - enable/disable 3-SID filter
q   - quit player
  • User interface version is the more complete C64 emulator with video screen output and access to additional tools. you can create and save favorite tunes and configure completely by keyboard or mouse.

JSidplay2 3.9 - Start Screen

JSIDPlay2 User Interface

Screen Layout

In the following image the general layout of the UI is shown.

JSidplay2 3.9 - Screen Layout

The main window is divided in several regions:

  1. Menubar - reveals all possible functions of JSIDPlay2 by a classic menu

  2. Toolbar - For always visible and important settings like emulation, sound device and sampling parameters

  3. Tabs Area - User configurable additional information

  4. Statusbar - For the currently chosen settings like chip type, song speed and peripheral device infos

Menubar

The file menu is for loading a tune from file basically.

Table 3. File Menu

File/Load…​

load a tune, reset C64 and immediately start playing

File/Load REU Video…​

Insert a REU (Ram Expansion Unit) memory dump containing video data, reset C64 and immediately start playing using NUVIE video player 1.0

File/Reset

Reset C64

File/Quit

Quit JSIDPlay2

Selecting a specific View menu entry will open various tabs in the tabs area. Each tab can be opened exactly once.

Table 4. View Menu

View/Video Screen

Show video screen

View/Oscilloscope

Show oscilloscope with real-time SID output

View/Favorites

Show the favorites browser

View/Music Collections/HVSC

Show the music collection HVSC

View/Music Collections/CGSC

Show the music collection CGSC

View/Disk Collections/HVMEC

Show the disk collection HVMEC

View/Disk Collections/Demos

Show the demo disk collection

View/Disk Collections/Magazines

Show the disk magazine collection

View/Tools/SID Dump

Record notes while playing tune

View/Tools/SID Registers

Show register writes while playing tune

View/Tools/Assembler

Use kickassembler to assemble machine code into C64 RAM

View/Tools/Disassembler

Simple Disassembler possibility of the C64 RAM

View/Online/<website>

Open a web browser view for that site

View/Online/JSIDPlay2 Source Code

Show source code of JSIDPlay2 in a web browser view

View/Printer

Open the printer view (as a replacement for paper)

View/Console

Show console output and error messages

The player menu is to control playback of a tune.

Table 5. Player Menu

Player/Pause

Player will be paused

Player/Previous

Play previous song of a tune. After the first 4 seconds the current song is restarted instead.

Player/Next

Play next song of a tune

Player/Normal speed

Play song in normal speed

Player/Fast Forward

Play song twice as fast (up to 5x)

Player/Stop

Stop emulation, song playback stopped

The devices/Datasette menu is the interface to the keys on a magnetic tape data storage device (datasette), where a tape can be inserted to store program data.

Table 6. Devices/Datasette Menu

Devices/Datasette/Record

Press Record key on device

Devices/Datasette/Play

Press Play on device

Devices/Datasette/Rewind

Press Rewind key on device to control storage medium position

Devices/Datasette/Forward

Press Forward on device to control storage medium position

Devices/Datasette/Stop

Press Stop key on device

Devices/Datasette/Reset Counter

Reset the counter of the storage medium position to zero

Devices/Datasette/Insert Tape…​

Insert a tape into the datasette (.TAP file format). Different file formats are converted to turbo tape (default)

Devices/Datasette/Eject Tape…​

Physically eject a tape from the datasette

The devices floppy menu is the interface to the floppy disk device using a disk as the storage medium (a thin and flexible magnetic storage medium) for data storage

Table 7. Devices/Floppy Menu

Devices/Floppy/Turn Drive On

Switch power on/off key

Devices/Floppy/Drive Sound

Play pre-recorded floppy disk drive sound for disk rotation and track change

Devices/Floppy/Parallel Cable

Connect floppy disk drive and C64 using a parallel cable for faster disk read/write speed

Devices/Floppy/Floppy Type/C1541

Choose C-1541 as the floppy disk drive device (old model)

Devices/Floppy/Floppy Type/C1541-II

Choose C-1541-II as the floppy disk drive device (new model)

Devices/Floppy/40 Track handling/Never Extend

Normally a disk uses 35 tracks, but can be formatted using up to 40 tracks. This option means a disk will never extend to 40 tracks.

Devices/Floppy/40 Track handling/Ask On Extend

Ask the user, if the floppy disk should extend to 40 tracks.

Devices/Floppy/40 Track handling/Extend On Access

The floppy disk should extend to 40 tracks automatically.

Devices/Floppy/Memory Expansion/8K RAM Expansion 0x2000

The floppy disk drive memory gets 8Kb extra RAM at 0x2000.

Devices/Floppy/Memory Expansion/8K RAM Expansion 0x4000

The floppy disk drive memory gets 8Kb extra RAM at 0x4000.

Devices/Floppy/Memory Expansion/8K RAM Expansion 0x6000

The floppy disk drive memory gets 8Kb extra RAM at 0x6000.

Devices/Floppy/Memory Expansion/8K RAM Expansion 0x8000

The floppy disk drive memory gets 8Kb extra RAM at 0x8000.

Devices/Floppy/Memory Expansion/8K RAM Expansion 0xA000

The floppy disk drive memory gets 8Kb extra RAM at 0xA000.

Devices/Floppy/Insert Disk…​

Insert a disk into the floppy disk drive

Devices/Floppy/Eject Disk

Remove disk out of the floppy disk drive

Devices/Floppy/Reset Floppy

Reset floppy disk drive. Normally it does not have a reset button and will be reset altogether with the C64

Devices/Floppy/Create and Insert Empty Disk (D64)

Insert a new empty floppy disk into the floppy disk drive

The devices printer menu is the interface to the printer device using a printer tab with graphical output as the paper to print on. The printer MPS-803 is currently supported.

Table 8. Devices/Printer menu

Devices/Printer/Turn Printer On

Switch power on/off key

The devices cartridge menu is the interface to the various multi-purpose cartridges currently supported by JSIDPlay2.

Table 9. Devices/Cartridge menu

Devices/Cartridge/Insert Cartridge…​

Insert a multi-purpose cartridge. The cartridge type will be auto-detected by reading the cartridge header.

Devices/Cartridge/GeoRAM/Insert GeoRAM…​

Insert a RAM expansion cartridge GeoRAM. The RAM size is determined by the cartridge contents.

Devices/Cartridge/GeoRAM/Insert GeoRAM (64KB)

Insert a RAM expansion cartridge GeoRAM of 64Kb size with empty contents.

Devices/Cartridge/GeoRAM/Insert GeoRAM (128KB)

Insert a RAM expansion cartridge GeoRAM of 128KB size with empty contents.

Devices/Cartridge/GeoRAM/Insert GeoRAM (256KB)

Insert a RAM expansion cartridge GeoRAM of 256KB size with empty contents.

Devices/Cartridge/GeoRAM/Insert GeoRAM (512KB)

Insert a RAM expansion cartridge GeoRAM of 512KB size with empty contents.

Devices/Cartridge/GeoRAM/Insert GeoRAM (1024KB)

Insert a RAM expansion cartridge GeoRAM of 1024KB size with empty contents.

Devices/Cartridge/GeoRAM/Insert GeoRAM (2048KB)

Insert a RAM expansion cartridge GeoRAM of 2048KB size with empty contents.

Devices/Cartridge/GeoRAM/Insert REU…​

Insert a RAM expansion cartridge REU. The RAM size is determined by the cartridge contents.

Devices/Cartridge/GeoRAM/Insert REU (128KB)

Insert a RAM expansion cartridge REU of 128KB size with empty contents.

Devices/Cartridge/GeoRAM/Insert REU (256KB)

Insert a RAM expansion cartridge REU of 256KB size with empty contents.

Devices/Cartridge/GeoRAM/Insert REU (512KB)

Insert a RAM expansion cartridge REU of 512KB size with empty contents.

Devices/Cartridge/GeoRAM/Insert REU (2MB)

Insert a RAM expansion cartridge REU of 2MB size with empty contents.

Devices/Cartridge/GeoRAM/Insert REU (16MB)

Insert a RAM expansion cartridge REU of 16MB size with empty contents. This REU size has never been manufactured, but is very popular in the scene.

Devices/Cartridge/Eject Cartridge

Disconnect multi-purpose cartridge from C64

Devices/Cartridge/Freeze

Press the freeze button on the multi-purpose cartridge

Devices/Install JiffyDos…​

Install the very compatible floppy speeder JiffyDOS by selection the custom ROM files for C64 and C-1541. JiffyDOS is sold separately.

Devices/Uninstall JiffyDos

Uninstall the floppy speeder JiffyDOS by removing the custom ROM files out of C64 and C-1541.

The devices hardcopy menu is to make screenshot of the video screen of the C64.

Table 10. Devices/Hardcopy menu

Hardcopy/GIF

Create a hardcopy of the C64 video screen output in GIF format. Output is stored in the temporary folder of JSIDPlay2.

Hardcopy/JPG

Create a hardcopy of the C64 video screen output in JPG format. Output is stored in the temporary folder of JSIDPlay2.

Hardcopy/PNG

Create a hardcopy of the C64 video screen output in PNG format. Output is stored in the temporary folder of JSIDPlay2.

The settings menu opens a new window to configure JSIDPlay2. All settings will be persisted.

Table 11. Settings menu

Settings/Emulation Settings…​

Open the emulation settings window of JSIDPlay2.

Settings/Joystick Settings…​

Open the joystick settings window of JSIDPlay2.

Settings/Proxy Settings…​

Open the proxy settings to be used for internet connections.

The help menu provides access to user help and credits.

Table 12. Help menu

Help/Check For Updates

Check for updates of JSIDPlay2.

Help/About

Open the about box with the credits of all supporters of JSIDPlay2.

Tabs Area

Statusbar

The status bar shows currently active settings and emulator status. Additionally a progress bar shows background task activity. Status bar infos are comma separated.

Table 13. Status information

"PAL" or "NTSC"

Shows the currently chosen video norm. PAL region clock frequency is 985248.4 whereas NTSC region clock frequency is 1022727.14.

"RESID" or "RESIDFP"

Shows the currently used SID emulation engine. RESID is ReSID 1.0 beta by Dag Lem whereas RESIDFP is Antti S. Lankila’s resid-fp (distortion simulation). If multiple SIDs are used, each SIDs emulation type is printed separated by a plus sign.

"MOS6581" or "MOS8580"

Shows the currently plugged-in SID chip type, that is emulated. If multiple SIDs are used, each SIDs SID chip type is printed separated by a plus sign and each additional SIDs base address is printed hexadecimal in brackets, eg. "MOS6581(at 0xd420)".

"Player: DMC"

Shows the currently identified player of the tune, e.g. Demo Music Creator System (DMC). Players are identified by memory analysis of the play routine identity scanner tool SIDId. A click on the tool tip of the status bar opens a browser window of the online available player.

"Speed: 2,0x"

Shows the speed of the tune (how many times the player routine is called within a frame).

"Song: 1/7"

Shows the currently played song number and the available number of songs within a tune, but only if more than one song is available.

"Datasette Counter: 001"

Shows the counter of the storage medium position, if a tape has been inserted and the motor is on.

"Floppy Track: 18"

Shows the the read/write head position of the floppy disk drive, if a disk has been inserted and the motor is on.

"Time: 00:01/04:37"

Shows the current playing time of a tune or song in minutes and seconds. If the song length is well-known, it is separated by a slash and printed as well.

Troubleshooting

Glossary

C64

Commodore 64 (C64) is a very popular Home Computer of the 80’s

SID

SID (Sound Interface Device) is the name of the sound chip of the Commodore 64. It is a synthesizer which can be programmed in Basic and Assembler to produce sound output.

SID music

SID music or alternatively a SID tune is a program running on the C64, that produces sound. It is therefore required to emulate a complete C64 in order to run any program producing sound. SID is also a file extension used for SID tunes. A SID tune sometimes contains multiple songs. Emulators such as JSIDPlay2 are able to play the songs contained in a SID tune.

JSIDPlay2

JSIDPlay2 is a software that makes it possible to listen to SID music of the Commodore 64. Beside that, it is a complete, very compatible and cycle exact Commodore 64 emulator. It emulates not just a naked C64, but many additional devices as well. Datasette, Floppy, Printer and multi-purpose cartridges. On top of that many useful tools dealing with SIDs have been added.

This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA