Skip to content
This repository was archived by the owner on Jan 22, 2026. It is now read-only.

Sega Saturn (saturn)

southoz edited this page Dec 27, 2025 · 6 revisions

Emulator Details

Emulator yabasanshiro
Version 1.9.0
ArkOS Details Christians GitHub
EASYROMS Folder saturn
Linux Path /roms/saturn
BIOS File /bios/saturn_bios.bin
  • You really have to be honest about the RK3326's ability to emulate Saturn: some 2D games run fine, but overall it is very hit-or-miss. I found that using bin/cue images over chd yielded about 5% performance increase and was able to complete an arcade mode run on Sega Rally.
  • The emulator creates a binary on your SD Card for the current game, which can take about 10 seconds during boot.
  • Exit Emulator through the Yabasanshiro Menu via the function key.

Controls

Emulator Game Controls

Saturn G80CA-MB
A Button Y Button (Left)
B Button B Button (Bottom)
C Button A Button (Right)
X Button L1 Button
Y Button X Button (Top)
Z Button R1 Button)
Left Sholder L2 Button
Right Sholder R2 Button
D-Pad Up D-Pad Up
D-Pad Down D-Pad Down
D-Pad Left D-Pad Left
D-Pad Right D-Pad Right
Start Start Button

Emulator Menu Controls

Action Key/Combination
Menu Function
Select A Button
Back B Button
Exit B Button

Files and configuration

Directories

To support per-game configurations, I have rebuilt the /usr/local/bin/saturn.sh start script to copy default.config to the Rom name

Start Script

/usr/local/bin/saturn.sh

#!/bin/bash

if [[ $1 == *"standalone"* ]]; then
  directory=$(dirname "$2" | cut -d "/" -f2)
  if [[ ! -d "/$directory/saturn/yabasanshiro" ]]; then
    mkdir /$directory/saturn/yabasanshiro
  fi
  cd /opt/yabasanshiro

  # Extract just the filename (romfile) from $2
  romfile=$(basename "$2")
  config_file="${romfile}.config"

  # If a per-ROM config doesn't exist, copy the default one
  if [[ ! -f "$config_file" ]]; then
    if [[ -f "default.config" ]]; then
      cp "default.config" "$config_file"
    fi
  fi

  if [[ $1 == "standalone-bios" ]]; then
    if [[ ! -f "/$directory/bios/saturn_bios.bin" ]]; then
      printf "\033c" >> /dev/tty1
      printf "\033[1;33m" >> /dev/tty1
      printf "\n I don't detect a saturn_bios.bin bios file in the" >> /dev/tty1
      printf "\n /$directory/bios folder.  Either place one in that" >> /dev/tty1
      printf "\n location or switch to the standalone-nobios emulator." >> /dev/tty1
      sleep 10
      printf "\033[0m" >> /dev/tty1
    else
      ./yabasanshiro -r 3 -i "$2" -b /$directory/bios/saturn_bios.bin
    fi
  else
    ./yabasanshiro -r 3 -i "$2"
  fi
fi

Default Configuration

/opt/yabasanshiro/default.config

{
  "Aspect rate": 1,
  "Resolution": 3,
  "Rotate screen": false,
  "Rotate screen resolution": 0,
  "Use compute shader": false
}

Joystick Configuration

/opt/yabasanshiro/input.config

<?xml version="1.0"?>
<inputList>
        <inputConfig type="joystick" deviceName="play_joystick" deviceGUID="19000f6a706c61795f6a6f7973746900">
                <input name="a" type="button" id="0" value="1" />
                <input name="b" type="button" id="1" value="1" />
                <input name="down" type="button" id="15" value="1" />
                <input name="hotkeyenable" type="button" id="13" value="1" />
                <input name="left" type="button" id="16" value="1" />
                <input name="leftanalogdown" type="axis" id="1" value="1" />
                <input name="leftanalogleft" type="axis" id="0" value="-1" />
                <input name="leftanalogright" type="axis" id="0" value="1" />
                <input name="leftanalogup" type="axis" id="1" value="-1" />
                <input name="leftshoulder" type="button" id="4" value="1" />
                <input name="leftthumb" type="button" id="11" value="1" />
                <input name="lefttrigger" type="button" id="6" value="1" />
                <input name="right" type="button" id="17" value="1" />
                <input name="rightanalogdown" type="axis" id="3" value="1" />
                <input name="rightanalogleft" type="axis" id="2" value="-1" />
                <input name="rightanalogright" type="axis" id="2" value="1" />
                <input name="rightanalogup" type="axis" id="3" value="-1" />
                <input name="rightshoulder" type="button" id="5" value="1" />
                <input name="rightthumb" type="button" id="12" value="1" />
                <input name="righttrigger" type="button" id="7" value="1" />
                <input name="select" type="button" id="13" value="1" />
                <input name="start" type="button" id="9" value="1" />
                <input name="up" type="button" id="14" value="1" />
                <input name="pageup" type="button" id="4" value="1" />
                <input name="pagedown" type="button" id="5" value="1" />
                <input name="x" type="button" id="2" value="1" />
                <input name="y" type="button" id="3" value="1" />
        </inputConfig>
</inputList>

/opt/yabasanshiro/keymapv2.json

{
  "0_play_joystick_19000f6a706c61795f6a6f7973746900": {
    "a": {
      "id": 3,
      "type": "button",
      "value": 1
    },
    "analogleft": {
      "id": 4,
      "type": "axis",
      "value": 0
    },
    "analogright": {
      "id": 5,
      "type": "axis",
      "value": 0
    },
    "analogx": {
      "id": 0,
      "type": "axis",
      "value": 0
    },
    "analogy": {
      "id": 1,
      "type": "axis",
      "value": 0
    },
    "b": {
      "id": 1,
      "type": "button",
      "value": 1
    },
    "c": {
      "id": 0,
      "type": "button",
      "value": 1
    },
    "down": {
      "id": 15,
      "type": "button",
      "value": 1
    },
    "l": {
      "id": 6,
      "type": "button",
      "value": 1
    },
    "left": {
      "id": 16,
      "type": "button",
      "value": 1
    },
    "r": {
      "id": 7,
      "type": "button",
      "value": 1
    },
    "right": {
      "id": 17,
      "type": "button",
      "value": 1
    },
    "select": {
      "id": 13,
      "type": "button",
      "value": 1
    },
    "start": {
      "id": 9,
      "type": "button",
      "value": 1
    },
    "up": {
      "id": 14,
      "type": "button",
      "value": 1
    },
    "x": {
      "id": 2,
      "type": "button",
      "value": 1
    },
    "y": {
      "id": 4,
      "type": "button",
      "value": 1
    },
    "z": {
      "id": 5,
      "type": "button",
      "value": 1
    }
  },
  "player1": {
    "DeviceID": 0,
    "deviceGUID": "19000f6a706c61795f6a6f7973746900",
    "deviceName": "play_joystick",
    "padmode": 0
  }
}

Home

Guides

Arcade Systems

Console Systems

Handheld Systems

Computer Systems

Ports and Recompilations

Advanced

Clone this wiki locally