[![Build Status](https://api.travis-ci.org/libretro/vice-libretro.svg?branch=master)](https://travis-ci.org/github/libretro/vice-libretro) # VICE LIBRETRO Port of VICE, the Versatile Commodore Emulator 3.3 Source base: [https://sourceforge.net/projects/vice-emu/files/releases/vice-3.3.tar.gz](https://sourceforge.net/projects/vice-emu/files/releases/vice-3.3.tar.gz) Supported platforms: Linux, Windows, Apple, Android, emscripten, Switch, Vita ## Default controls | RetroPad button | Action | |-----------------|-------------------------| | D-Pad | Joystick | | Left Analog | Mouse/paddles | | B | Fire button | | X | Space | | L2 | Escape (RUN/STOP) | | R2 | Enter (RETURN) | | Select | Toggle virtual keyboard | | Keyboard key | Action | |-----------------|-------------------------| | F12 | Toggle statusbar | | RControl | Switch between joyports | | End | Reset | ### Virtual keyboard controls | Button | Action | |-----------------|-------------------------| | B / Enter | Keypress | | A | Toggle transparency | | Y | Toggle ShiftLock | | Start | Press Return | Long press for sticky keys. Stickying the third key will replace the second. ## Joyport control Older C64 games tend to use joystick port 1 and newer ones tend to use port 2 for player 1. There are several ways to switch ports in this core: - Use the core option: `Quick Menu -> Options -> RetroPad Port` - Bring up the virtual keyboard with `Select` button, and press the key labeled `JOY` - Press the default keyboard shortcut `Right Control` - Assign `Switch Joyport` to any RetroPad button under `Quick Menu -> Options` - Rename the game, eg. `Bruce_Lee_j1.tap` or `Bruce_Lee_(j1).tap` for port 1, and similarly `Bruce_Lee_j2.tap` or `Bruce_Lee_(j2).tap` for port 2 - Add `-j1` or `-j2` parameters in custom command line `.cmd` ## M3U support and disk control When you have a multi disk game, you can use a M3U playlist file to be able to change disks via RetroArch "Disc Control" interface. A M3U file is a simple text file with one disk per line ([Wikipedia](https://en.wikipedia.org/wiki/M3U)). Example: `Ultima VI - The False Prophet (1990)(Origin Systems).m3u` ``` Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 1 of 3 Side A)(Game).d64 Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 1 of 3 Side B)(Surface).d64 Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 2 of 3 Side A)(Dungeon).d64 Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 2 of 3 Side B)(Populace A).d64 Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 3 of 3 Side A)(Populace B).d64 Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 3 of 3 Side B)(Populace C).d64 ``` Path can be absolute or relative to the location of the M3U file. When the game asks for it, you can change the current disk in the RetroArch "Disc Control" menu: - Eject the current disk with "Eject Disc" - Select the right disk index with "Current Disc Index" - Insert the new disk with "Insert Disc" By default, RetroArch will display the filename (without extension) of each M3U entry when selecting a disk via the `Current Disc Index` drop-down menu. Custom display labels may be set for each disk using the syntax: `DISK_FILE|DISK_LABEL`. For example, the following M3U file: `Ultima VI - The False Prophet (1990)(Origin Systems).m3u` ``` Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 1 of 3 Side A)(Game).d64|Game Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 1 of 3 Side B)(Surface).d64|Surface Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 2 of 3 Side A)(Dungeon).d64|Dungeon Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 2 of 3 Side B)(Populace A).d64|Populace A Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 3 of 3 Side A)(Populace B).d64|Populace B Ultima VI - The False Prophet (1990)(Origin Systems)(Disk 3 of 3 Side B)(Populace C).d64|Populace C ``` ...will be shown in RetroArch's disk selection menu as: ``` 1: Game 2: Surface 3: Dungeon 4: Populace A 5: Populace B 6: Populace C ``` If `DISK_LABEL` is intentionally left blank (i.e. `DISK_FILE|`) then only the disk index will be displayed. For games that require a dedicated save disk, one may be generated automatically by entering the following line in an M3U file: `#SAVEDISK:VolumeName`. `VolumeName` is optional and may be omitted. For example, this will create a blank, unlabelled disk image at disk index 5: `Elite (1985)(Firebird Software).m3u` ``` Elite (1985)(Firebird Software).d64 #SAVEDISK: ``` Although one save disk is normally sufficient, an arbitrary number of `#SAVEDISK:VolumeName` lines may be included. Save disks are located in the frontend's save directory, with the following name: `[M3U_FILE_NAME].save[DISK_INDEX].d64`. Save disks generated by the `#SAVEDISK:` keyword are automatically assigned the label: `Save Disk [SAVE_DISK_INDEX]`. ### Extra features - `#COMMAND:` - Pass arguments to VICE (place first, core name can be skipped) - `#SAVEDISK: