Epoch Super Cassette Vision core for MISTer Platform

This is a first-order approximation emulator of the Epoch Super Cassette Vision.

The best documentation I could find is embodied in the MAME SCV emulator. Takeda-san's eSCV and related documents were also very helpful. NEC data sheets of the uCOM-87 microcontroller series were found around the 'net and provided instruction opcodes, cycle timings and other details. The gaps (and there are many) were filled with educated guesses and prior art from building emulators for MOS6502-based machines and the SNES.

It is hoped that, in the future, hardware will be acquired, examined (nicely), and its behavior documented.

Features

  • Just enough to boot the internal ROM, run its built-in video test, and render it.

Installation

  • Copy the latest *.rbf from releases/ to the root of the SD card
  • Build boot.rom (see below)
  • Create a folder on the SD card named "SCV" and copy boot.rom to it

How to build boot.rom

Acquire these three files:

  • upd7801g.s01 (MD5 sum 635a978fd40db9a18ee44eff449fc126)
  • epochtv.chr (MD5 sum 929617bc739e58e550fe9025cae4158b)
  • upd1771c-017.s03 (MD5 sum 9b03b66c6dc89de9a11d5cd908538ac3)

Concatenate the files to create boot.rom. Windows example:

COPY /B upd7801g.s01 +epochtv.chr upd1771c-017.s03 boot.rom

Note: upd1771c-017.s03 is in little-endian order (ROM low byte first).

Usage

Keyboard

The console has a numeric keypad called SELECT, and a hard PAUSE button.

  • 0-9 - SELECT numbered keys
  • Backspace, numpad ./Del - SELECT CL key
  • Enter - SELECT EN key
  • F1 - PAUSE button

Joysticks

Up to two digital joysticks are mapped to the two controllers. Each controller has two Trig buttons.

The most common SELECT buttons -- 1 to 4 and EN -- can also be configured as joystick buttons.

Most games refer to a START button. There is no such button: Use a Trig button or EN instead.

Cartridge ROMs

ROM images must:

  • Have a file extension .ROM or .BIN
  • Be strictly the ROM contents (no headers)

Cartridges had 8K - 128K of ROM, and some had RAM. Two heuristics are used to identify the cartridge -- ROM size and checksum -- and map the memories appropriately. The OSD has an option to manually select a mapper.

Special cases

Two cartridges had a mix of ROM sizes. No special mappers exist for them (yet). Create a 64K .BIN file for them as follows:

Kung Fu Road

32K ROM + (first 24K [24,576 bytes] of 32K ROM) + 8K ROM --> 64K .BIN

Star Speeder

32K ROM + (first 24K [24,576 bytes] of 32K ROM) + 8K ROM --> 64K .BIN

Known issues

TODOs

  • CPU (uPD7801G)
    • Fix timing of special register instructions (e.g., 'ANI sr2, byte' is 11 steps, should be 17)
  • Audio (uPD1771C)
  • Cartridges
    • Save and restore battery-backed RAM
    • Make mappers for special cases
Description
No description provided
Readme 8.7 MiB
Languages
SystemVerilog 48%
Verilog 33.3%
VHDL 11%
Python 4.8%
Tcl 2.4%
Other 0.4%