Skip to content

Super Famicom Box

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

Super Famicom Box

The Super Famicom Box (SFC-Box, 1993-94) was Nintendo's pay-per-play Super Famicom for Japanese hotel rooms. Inside is a stock SNES with a second computer beside it: a Hitachi HD64180 (an extended Z80) at 4.608 MHz, running a 64 KB BIOS called KROM 1. This "supervisor" decides which game the SNES sees, holds the SNES in reset until it is ready, reads the joypads before the SNES does, keeps a real-time clock, counts play time, and draws its own text over the SNES picture with an MB90082 on-screen display chip. A key switch and two buttons on the front panel, plus a coin input, belong to the supervisor; the SNES never sees them.

The box takes two multi-game cartridges at once, and only four were ever made. The first slot always holds PSS-61, which carries the menu program, three games, and the 128 KB SRAM that all games share for their saves. The second slot optionally holds PSS-62, PSS-63 or PSS-64, with two games each:

Cartridge Games
PSS-61 Super Mario Kart (with its DSP-1), Super Mario Collection, Star Fox (with its Super FX chip), plus the "4S ATTRACTION" menu program (HAL Laboratory)
PSS-62 Waialae no Kiseki (golf), Super Mahjong 2
PSS-63 Super Donkey Kong, Super Tetris 2 + Bombliss
PSS-64 Super Donkey Kong, Super Bomberman 2

The games are the ordinary Japanese retail releases, unmodified. The box's own part is the menu: a main menu of up to five games (two pages of four when there are more), and for each game Game Start, Instructions, Preview (a demo played from recorded joypad input) and Back.

SuperSnes9x emulates the whole box: the supervisor runs the real KROM, boots through its self-test and blue start-up screen, shows the attraction menu, maps and starts the games (Star Fox's Super FX and Mario Kart's DSP-1 included), serves the attendant menus behind the key switch, and takes coins. Before this, the only emulator that ran the SFC-Box was nocash's no$sns; MAME has a driver that is marked not working.

What you need

  • The supervisor BIOS: KROM1.BIN, 65,536 bytes.
  • The on-screen display font: MB90082.BIN, 9,216 bytes (the character set inside the MB90082-001 chip). Without it the box still runs and the games play, but the supervisor's screens are blank.
  • A cartridge image: one file per cartridge, in the fullsnes / no$sns layout (below), for example pss61_merged.sfc, or two cartridges in one file such as pss61+63_merged.sfc. Not supplied.

The loader recognises a cartridge by the checksum of its directory ROM, not by the file name, so the image can be called anything.

The cartridge image layout

Each cartridge carries a 32 KB directory EPROM, the GROM, next to its game ROMs. The image is the GROM followed by the ROMs in the order the GROM lists them, then the DSP-1 program if the cartridge has one:

GROM + ROM0 + ROM1 + ROM2 + ... (+ DSP1)

Use raw ROMs without 512-byte copier headers, and the 8 KB little-endian DSP-1 dump (a 10 KB padded dump also loads). To put both cartridges in one file, append the second cartridge's image to the first: GROM1 + ROMs + DSP1 + GROM2 + ROMs. The two BIOS files stay separate; they are not part of the cartridge image.

Setting it up

  1. File → BIOS Manager: point the SFC Box (KROM) row at KROM1.BIN and the SFC Box (MB90082) row at MB90082.BIN. Both must read OK.
  2. File → Load Game and pick the cartridge image.
  3. The supervisor boots on a blue screen (Initializing machine, please wait) with a progress bar while it tests its memory, walks every ROM in both cartridges and checks the clock. Then it starts the SNES on the attraction menu, which shows each game's title picture.
  4. Pick a game, then Game Start. A fresh box is set to key billing with the key at ON, so games start straight away, without coins.

If a BIOS file is missing, the emulator says which one on screen when the game loads.

libretro (RetroArch): put KROM1.BIN and MB90082.BIN in RetroArch's system directory. The core runs the box with the key at ON; it has no key switch or coin controls.

The front panel

Control What it does
Insert Coin Drops a 100-yen coin: the coin switch closes for about 60 ms, as a real coin mechanism's does
Keyswitch: 1 (Options) The attendant menus (see below)
Keyswitch: OFF Play position for the Free, Coin and Central billing methods
Keyswitch: ON (Play) Play position for key billing; the box powers on here
Keyswitch: 2 Staff position: a game's menu offers a free trial run (check play), limited to the trial play time set in the attendant menus and marked by a Free play in progress banner
Keyswitch: 3 (Self-Test) The supervisor's self-test pages
OSD Backdrop Draw the supervisor's own screens (start-up, attendant menus, self-test) on the display chip's own solid blue background. Off, the text is drawn over the SNES picture instead. On by default
English OSD Translate the supervisor's text to English (see below). Off by default

Where to find them:

  • Windows: Emulation → Hacks.... The SFC-Box rows (backdrop, OSD language, key switch and an Insert Coin button) appear only while the box is running.
  • Qt and GTK: Emulation → Super Famicom Box, shown while the box is running.

Insert Coin and the five key switch positions also have hotkeys, unbound by default: the SFC Box tab of Input → Customize Hotkeys (Windows), the SFC-Box rows of Input → Customize Hotkeys (Qt), and the Arcade tab of Preferences → Shortcuts (GTK). Insert Coin is shared with the Nintendo Super System: one coin key serves whichever cabinet is running.

The supervisor reads the key switch continuously, so turning it switches screens at once, with no reset. The switch position is part of the machine, not a setting: it isn't saved in the config, and every power-on starts at ON. Savestates keep it.

The real switch has a sixth position, which fullsnes marks as a probable relay-off; the emulator leaves it out. The panel's TV/GAME button isn't exposed.

Resetting

  • Soft Reset restarts the game being played. The supervisor, its play timer and the menu are left alone. On the real box the joypad combination L+R+Select+Start does the same.
  • Hard Reset (Power Cycle) restarts the whole box: the blue start-up screen, the self-test and the menu. It stands in for the front-panel RESET button.

Billing and the attendant menus

With the key at 1 (Options) the supervisor shows its setup menu, ** SETUP **. SELECT moves the cursor, B confirms and A cancels.

Menu Contents
1. Game Count How many times each game was played since a given date, with a total; can be cleared
2. Settings Set the clock; the billing method; basic settings (TV connection, what to do after all the demos have run, audio, trial play time); special settings (the timer, the order of the game list); restore the factory settings
3. Machine Check Tests both controllers, the push buttons, the key switch and the coin box, and keeps the results
4. Device Info The KROM version and a count of watchdog resets

The four billing methods:

Method How play is paid for
(1) Key Games run while the key is at ON. This is the factory setting
(2) Free Free play, key at OFF
(3) Central Billed centrally, key at OFF
(4) Coin Coins buy play time, key at OFF. By default 100 yen buys 10 minutes. The time left shows in the menu's corner; in the last minute a countdown appears over the game, and at time-up a coin continues the session

With any method but Key, turning the key to ON brings up a turn the key to OFF message.

The English OSD

Everything the supervisor draws is in Japanese katakana. English OSD translates it: the start-up screen, the attendant menus, the machine check, device info, the self-test, and the coin and time messages. The translation happens only when the text is drawn; the KROM, the display chip's memory and savestates stay Japanese, so the option can be switched at any time, even mid-game.

The attraction menu, the game-select screens and the big insert a coin screen are drawn by the SNES menu program, not by the display chip, and stay in Japanese, as does the text inside the games. A few rarely seen screens are not translated yet: some pages under 2-3 and 2-4, a few coin-mode guest messages, and the error variants of the machine check.

Saves

The shared 128 KB SRAM on PSS-61, which holds every game's saves, is the usual .srm. The supervisor's battery-backed work RAM (settings, billing method, play counters) and the clock chip's battery RAM are kept together in a .box file beside it.

The clock takes the PC's time each time the box powers on.

Savestates carry the whole board: the HD64180, its work RAM, the mapping registers, the clock, and the display chip's screen. A savestate from an older build whose supervisor block no longer matches loads the SNES side and power-cycles the box.

How it works

The supervisor

The HD64180 core was written for the box. It has the full Z80 instruction set and the Z180's extras (MLT, TST, IN0/OUT0, the block output instructions, SLP), with the MMU that gives it a 19-bit address space, the programmable timers, the interrupt controller, and the clocked serial port that talks to the display chip. Like the real chip, it traps the undocumented Z80 opcodes. Its memory is the 64 KB KROM, 32 KB of battery-backed work RAM (part of it write-protected until the KROM unlocks it), and the GROM of each cartridge. Its I/O ports read the key switch, the buttons and the coin input, drive the SNES reset line and a watchdog, and program the cartridge mapping. It runs a slice of instructions every SNES scanline.

The cartridge directory (GROM)

Each cartridge's GROM lists its games: title, LoROM / HiROM / Super FX map mode, ROM size, where the game's save lives in the shared SRAM, whether it uses the DSP-1, the title pictures, the instruction text, and the recorded joypad input the Preview demos play back. It also holds a few hundred bytes of HD64180 code that the KROM calls to set the mapping for that cartridge, so the board's wiring is described by the cartridge rather than by the BIOS.

Mapping

Two write-only registers decide what the SNES sees: which ROM socket in which slot, the map mode, which window of the shared SRAM is visible and how big it is, and whether the DSP-1 is connected. The emulator rebuilds the SNES memory map on every write. Star Fox's socket gets its own Super FX view with the cartridge's 32 KB of GSU RAM.

The KROM remaps while the SNES is still running, so the SNES briefly runs garbage, and the menu program has bugs that run it into a stream of BRK instructions. The KROM recovers by resetting the SNES. The emulator therefore keeps running through these crashes instead of stopping, as fullsnes advises.

Talking to the menu program

The KROM and the SNES menu program talk over spare bits of the SNES joypad I/O port ($4201 / $4213), using a bit-banged serial link with 32-bit command packets. Bulk data such as the title pictures goes a faster way: the KROM loads one 16-bit word into the joypad shift register each time the SNES reads the pads, triggered by an interrupt on every joypad strobe. That interrupt isn't obvious from the documentation, and without it the KROM gives up and reboots the SNES in an endless loop. It is what made the box boot.

The joypads

The joypads are wired to the supervisor, not the SNES. It passes them on through 16-bit shift registers, which lets it watch for the L+R+Select+Start reset combination and feed the recorded input for the Preview demos. The KROM takes manual control of the pads at power-on, so the emulator hands the SNES whatever the supervisor puts in those registers.

The on-screen display

The MB90082 draws 24 × 12 characters of 12 × 18 pixels over the SNES picture, fed by the KROM through the HD64180's serial port. It has two modes. In internal-sync mode it generates its own picture, the blue start-up, attendant and self-test screens; in superimpose mode it lays text over the game, which is how the menu's time readout and the in-game countdowns appear. The OSD Backdrop option fills the blue background only in internal-sync mode, so the menu and the games are never covered.

The reset line reaches everything

The supervisor's reset line resets the SNES CPU, PPU, sound CPU and the cartridge chips (DSP-1, Super FX) together, so a game started from the menu begins from a clean machine.

Known limitations

  • The display chip's blinking characters and its sprite commands are accepted but not drawn.
  • Setting the clock in the attendant menu changes each field on its own, without carrying into the next, and the next power-on takes the PC's time again.
  • The TV/GAME button and the sixth key switch position are not emulated.
  • The libretro core has no key switch or coin controls.

References

  • nocash, fullsnes: SFC-Box Overview and the chapters after it (HD64180, memory and I/O maps, ports, GROM format, OSD chip, component lists)
  • The nesdev forum thread on dumping and researching the box: viewtopic.php?t=9597
  • MAME: nintendo/sfcbox.cpp (the cartridge sets)
  • snes9x issue #1046; pull requests #170, #171, #172 and #288 (the Qt and GTK panels)