Skip to content

SuperDisc

Shany Golan edited this page Sep 25, 2026 · 9 revisions

Nintendo SuperDisc (SNES CD-ROM)

The SuperDisc was the CD-ROM add-on Sony built for Nintendo around 1991-1992: a SNES with a CD drive (the "SFX-100" / "Play Station" prototype), plus a BIOS cartridge that plugged into the cartridge slot. The deal between the two companies collapsed, the unit was never released, and Sony went on to make its own console. A prototype survived, its BIOS cartridge was dumped (SDBR v0.95, "Super Disc boot ROM ver.0.95 Jul. 14, 1992 by Tomomi Abe at SONY"), and nocash documented the hardware in fullsnes.

SuperSnes9x emulates the BIOS cartridge and the CD unit well enough that the BIOS boots discs the way the hardware did, its built-in hardware tests pass, and homebrew Super Disc software runs.

What you need

  • The BIOS: SDBR_v0.95.sfc, 128 KB (CRC32 3B64A370). The 131,584-byte copy with a 512-byte copier header, and the release .zip, work too. Not supplied.
  • A disc image: a .cue with its .bin file(s), an .iso, or a raw .bin. No commercial Super Disc game was ever made; the one known program is the homebrew Super Boss Gaiden (Dieter von Laser, 2015).

Setting it up

  1. File → BIOS Manager, the Super Disc row: point it at the BIOS. The status column says OK when it is the right file.
  2. File → Load Game and pick the disc's .cue (or .iso). The emulator boots the BIOS from the BIOS Manager and puts the disc in the drive.
  3. At PUSH START, press Start. The BIOS shows NOW LOADING..., reads the disc and starts the game.

You can also load the BIOS image itself with File → Load Game. It boots with an empty drive and says NO DISC; use Emulation → Super Disc → Insert Disc... to put a disc in.

The window title shows the BIOS version and the disc's name: Super Disc (v0.95) - SUPER BOSS GAIDEN - SuperSnes9x .... The name comes from the disc's ISO volume identifier.

Swapping discs

Emulation → Super Disc:

  • Insert Disc...: pick a CD image; the tray closes, the drive reads the table of contents, and the BIOS shows PUSH START. Greyed while a disc is already in.
  • Eject Disc: opens the tray. A disc game can't keep running without its disc, so ejecting also resets the console back to the BIOS home screen, which then reports TRAY OPEN.

Both have hotkeys, unbound by default: the Super Disc tab in Input → Customize Hotkeys (Windows), the two Super Disc rows at the end of Input → Customize Hotkeys (Qt), and under Preferences → Shortcuts → Misc (GTK).

In RetroArch (libretro core), use the frontend's Disc Control menu: eject, change the disc index, append a disc, insert. The BIOS goes in RetroArch's system directory as SDBR_v0.95.sfc.

The BIOS's own menus

At the title screen What it does
Start Boot the disc
Select Battery-backup file manager (Up/Down select, B delete, Y exit)
A + X SFX-100 MONITOR MENU: the factory test program

The monitor menu holds a Self Check (VRAM, CGRAM, OAM, WRAM, DMA, timer and sound on page 1; the cartridge's expansion RAM, backup RAM, the CD-ROM decoder and the CD-player interface on page 2; all read OK in the emulator), an ADPCM test (pick a file/channel and a time with L/R and Up/Down, B plays XA audio from the disc), and low-level Communication and CXD-1800 register screens.

Saves

The BIOS cartridge has 8 KB of battery RAM that the BIOS manages as a small file system; games save through BIOS calls. Because the battery is in the cartridge, every disc shares it: the emulator saves it as the BIOS image's .srm, however the session was started. (Under libretro, RetroArch keeps one save file per loaded content.)

Savestates work as usual and include the whole CD unit: the drive position, the decoder and its sector buffer, and the cartridge's RAM. The disc itself isn't stored in a state; loading a state keeps whatever disc is in the drive.

Supported image formats

  • .cue sheets with one BIN for the whole disc or one BIN per track, PREGAP and INDEX 00 gaps
  • Track types MODE1/2352, MODE1/2048, MODE2/2352, MODE2/2336 and AUDIO
  • .iso (2048-byte sectors)
  • a bare .bin of raw 2352-byte sectors, recognised by its CD sync mark and ISO volume descriptor (an ordinary cartridge .bin still loads as a cartridge)

How it works

The BIOS cartridge

Address What
00-3F:8000-FFFF (mirrored) 128 KB BIOS ROM, LoROM
80-87:8000-FFFF 256 KB of extra work RAM (DRAM), where discs load code and data
90:8000-9FFF 8 KB battery RAM, write-protected until unlocked
$21D0 lock the battery RAM
$21E5, $21E0 unlock it: write FF to $21E5, then 0F, 0E ... 01 to $21E0

The cartridge header is blank (FF), and the CPU's NMI and IRQ vectors point into RAM at 1FF8/1FFC, where the BIOS installs its handlers. That combination is how the emulator recognises the BIOS.

The CD unit

Two chips sit between the SNES and the drive, and both can raise the SNES IRQ line ($21E4 enables each):

  • The mechacon ($21E1), a small microcontroller that runs the drive mechanics: seek, play, pause, stop, open/close the tray, scan, single/double speed, the Q sub-channel position and a status report. It talks four bits at a time: every nibble the SNES writes is answered with one nibble and an IRQ. A command's last answer is the drive's state (no disc, stopped, playing, paused, seeking, reading the TOC, tray open).
  • The Sony CXD1800 decoder ($21E2/$21E3), which receives each sector as the drive plays it, stores it in a 32 KB sector buffer and raises an interrupt. The BIOS then checks the sector's header, points the decoder's DMA at it and pulls the 2048 bytes of data into memory with a SNES DMA channel. The decoder also decodes XA-ADPCM sectors (the compressed audio format the PlayStation later used).

Sectors arrive 75 times a second at single speed and 150 at double speed, timed in real time as on the hardware. CD audio tracks play through the CD's own audio path; both CD audio and XA-ADPCM are mixed into the SNES sound output.

Booting a disc

When you press Start, the BIOS asks the drive for sector 16, which must hold an ISO 9660 volume descriptor whose system identifier is SUPERDISC. It then loads sector 0 (2 KB) to 00:1000 and jumps to 00:1080. From there the disc's own program loads the rest through the BIOS's CD routines (at 00:E000: load from disc, send a drive command, battery-RAM file functions) or by driving the hardware directly.

Details the documentation didn't cover

Getting the BIOS to boot discs needed three behaviours that aren't in the published notes; they were found by running the BIOS and disassembling what it did:

  • The BIOS re-arms the decoder's DMA once per sector without switching it off in between, so each such write has to select the data register again. Otherwise the first bytes of every sector come from the wrong register.
  • The first status digit is the disc type (data or audio), not the type of the track under the laser: the BIOS checks it in the middle of a seek and gives up if it reads "audio".
  • With no data under the laser (stopped, seeking, or on an audio track) the decoder still interrupts at the sector rate, flagged as "no sync". The BIOS ignores those, and its decoder self-test counts them.

What is approximated

The prototype's exact seek and spin-up times and the mechacon's reply latency aren't known; the emulator uses plausible values. Sectors are always reported free of read errors. The prototype's sound chips have unusual part numbers and may differ slightly from a retail SNES; they are emulated as a retail SNES.

Games

  • No official games were released (?).
  • A homebrew game called Super Boss Gaiden (Super Boss Gaiden (J) (SuperDisc) V1.2b (1).zip) is available.

Testing

With no retail software, the emulation was verified against a purpose-built test disc whose boot program uses the BIOS's own routines: loads into work RAM, the cartridge's extra RAM and video RAM, a CD audio track, a battery-RAM save and reload, and an XA-ADPCM track played through the BIOS's ADPCM mode. The BIOS's self-check passes every row, its ADPCM test plays XA audio, savestates taken mid-load and mid-audio resume correctly, and Super Boss Gaiden plays through.

References