The C64 Mini is a fun and useful machine for those wanting to relive the experience of the Commodore 64. However, the C64 Mini uses emulation to run games. This means it behaves differently than a full-fledged Commodore 64 and, as a result, games designed for the system do not always behave the same way they would when running on original equipment.
The way they found to get around a lot of these issues was the .CJM file. This is a simple text file that, when formatted properly, will tell the Mini how to operate with certain games.
There is a tool to help you do this here that automates a lot of the process. This site also has pre-configured CJM files to download.
While it is not necessary to write the configuration file yourself, it should be well documented in the event that this tool no longer is available. Let’s start by taking a look at an existing .CJM file.
X:ntsc,accuratedisk,readonly,driveicon
J:1:JU,JD,JL,JR,JF,JF,RS,SP,SP,RS,F1,F7,RS
J:2*:JU,JD,JL,JR,JF,JF,RS,SP,SP,RS,F1,F7,RS
V:1
NOTE: You will need to name the file EXACTLY the same name as the image file. (Ex. Jupiter_Lander.d64 –> Jupiter_Lander.cjm)
X: System options
Each one of these is either on or off. Remove the option to disable. NOTE: These X: values are case sensitive and must be in all lower case.
ntsc: This is the video display type the game requires. Options are: ntsc or pal. Remove to use the default (native) display.
accuratedisk: This turns off the cycle exact floppy emulation in the mini. Use this option if the game hangs or crashes while loading.
Note: Accurate Disk does slow down loading but it does not control the Mini’s fast loader. To disable that, press the third button (C) on the Mini Joystick before loading your ROM or disk image.
readonly: Marks the disk image read-only. Required for some disk images and copy protection.
driveicon: Displays a drive icon while the image is being accessed.
J: Joystick Mapping
Each one of these options is required – even if the joystick doesn’t have a button for the function.
Input Type | Number | Default | Up | Down | Left | Right | Fire Left | Fire Right | Triangle L / X | Triangle R / Y | Triangle R / Shoulder L | A/B | B/A | C / Select | Triangle L / Shoulder R | Controller Brand |
Joystick | Mini in port 2 | 2nd is default | Joy Up | Joy Down | Joy Left | Joy Right | Joy Fire | Joy Fire | Run/Stop | Space | Space | Run/Stop | F1 | F7 | Run/Stop | |
J: | 1 | | JU | JD | JL | JR | JF | JF | RS | SP | SP | RS | F1 | F7 | RS | iNNext |
J: | 2 | * | JU | JD | JL | JR | JF | JF | RS | SP | SP | RS | F1 | F7 | RS | C64 Mini |
Key
JU | Joystick Up |
JD | Joystick Down |
JL | Joystick Left |
JR | Joystick Right |
JF | Joystick Fire |
F1 | F1 |
F2 | F2 |
F3 | F3 |
F4 | F4 |
F5 | F5 |
F6 | F6 |
F7 | F7 |
F8 | F8 |
A-Z | A-Z |
0-9 | 0-9 |
EN | Return |
@ | @ |
. | . |
/ | / |
+ | + |
– | – |
; | ; |
* | * |
CU | Cursor Up |
CD | Cursor Down |
CL | Cursor Left |
CR | Cursor Right |
SL | Shift Left |
SR | Shift Right |
HM | Home |
DL | Delete |
CT | Control |
RE | Restore |
PO | £ (pound) |
SS | Shift Lock |
AU | Arrow Up |
AL | Arrow Left |
CO | Comma |
CM | C= key |
V: Vertical Video Offset
This is simply a positive or negative integer to move the video up or down.
Examples
This should give you enough info to remap joystick and set system options.
Example 1: You have a PAL game that is not designed for a joystick but instead uses WASD and the Right Shift for joystick control.
X:pal
J:1*:W,S,A,D,SR,SR,SR,SP,EN,RS,F1,F7,RS
Example 2: You want to turn on the access indicator and map the second joystick button to Space on the second joystick and make it default.
X:driveicon
J:2*:JU,JD,JL,JR,JF,SP,RS,SP,SP,RS,F1,F7,RS
Using The File
Place the file in the same folder as your game. The mini looks for the .CJM file automatically.
Applying to Multiple Games
You can apply the file to multiple games in a folder by renaming the file to THEC64-default.cjm
This information is found in more detail here under Appendix A.