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
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) |
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)
-
Launch User interface version
-
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)
-
Launch User interface version
-
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:
-
Current working directory
-
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 User Interface
Screen Layout
In the following image the general layout of the UI is shown.
The main window is divided in several regions:
-
Menubar - reveals all possible functions of JSIDPlay2 by a classic menu
-
Toolbar - For always visible and important settings like emulation, sound device and sampling parameters
-
Tabs Area - User configurable additional information
-
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.
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.
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.
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.
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
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.
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.
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.
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.
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.
Help/Check For Updates |
Check for updates of JSIDPlay2. |
Help/About |
Open the about box with the credits of all supporters of JSIDPlay2. |
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.
"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. |
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.
Appendix A: Copyright and License
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