- 1 Compiling instructions
- 2 Quick Start Guide
- 3 Settings Dialog
- 4 Tool Windows
- 5 Debug Windows
- 6 Supported CD Image File Formats
- 7 Main Menu
- 8 Low level CD Block Setup
- 9 Contact information
- 10 Disclaimer
Builds compiled with GCC are faster than those compiled with Visual Studio 2015, so this method is recommended for those looking for maximum performance.
First, install MSYS2. Next, go the the MSYS2 install location and run mingw64_shell.bat.
Install the toolchain and dependencies. You may need to restart MSYS2 after this step.
pacman -Sy mingw-w64-x86_64-cmake git base-devel mingw-w64-x86_64-toolchain pacman -Sy mingw-w64-x86_64-qt5 mingw-w64-x86_64-SDL2
Get the source from git:
git clone http://github.com/Yabause/yabause
Then build it:
mkdir build cd build cmake -G"MSYS Makefiles" ../yabause/yabause make
Mac OS X
This guide will compile the Qt port on OS X using the Homebrew package manager.
Once Homebrew is installed, we will use it to install Yabause's dependencies.
brew install qt5 sdl2
Once Qt finishes installing, it will show a path something like this:
Use that path when you run cmake:
cmake -DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.3.2 -DYAB_PORTS=qt -DCMAKE_BUILD_TYPE=Release ..
Using Xcode is covered at Compiling Yabause under MacOS X
This guide starts from a fresh install of Ubuntu 16.04 and builds the git version of Yabause. Depending on your distro the package names and other details may differ. libopenal-dev libsdl2-dev are required for the Openal and SDL sound cores but are optional otherwise.
First the dependencies are installed:
sudo apt install git cmake qtbase5-dev qtmultimedia5-dev libqt5opengl5-dev libopenal-dev libsdl2-dev
The git repository is cloned:
git clone http://github.com/Yabause/yabause
We make a directory for the generated files:
cd yabause mkdir build cd build
cmake -DYAB_PORTS=qt ../yabause
And now can compile run:
And start Yabause:
Quick Start Guide
When you start Yabause for the first time you will see a window like this:
Yabause requires some configuration before it is able to play games. We will use the simplest possible set up for this guide. Go to File -> Settings.
Settings | General
- Click Enable Bios Emulation. This will enable the HLE bios so that a real one is not required.
- Go to CD-ROM and select ISO-File Virtual Drive. We will be loading a cd image file.
- Select a CD image by clicking on the ... icon under ISO-File Virtual Drive or typing a path.
- Click Enable Frame Skip/Limiter. This will automatically adjust the frame rate so that Yabause runs at the correct speed.
- Click Enable Multithreading. This will provide a large speed up.
- Adjust the number of threads to an appropriate level for your CPU.
Settings | Input
- Click on the wrench icon.
- You will need to assign each button on the Saturn controller to a keyboard key.
Configuring a controller
- Click on a button, then press the key that you want to assign. You should see "Awaiting input for: "
Starting the emulation
The basic configuration is now finished. Click the start button to start the emulation.
- Bios: This is the path to the bios file. Either type a path or click the box to the right to open a file chooser.
- Enable Bios Emulation: Checking this box turns on the HLE Bios.
- CD-ROM: The drop-down menu is for selecting a CD-ROM core. For loading CD images, select ISO-File Virtual Drive. For using real physical CD there are various platform-specifc cores such as the SPTI driver for Windows. The path chooser below the drop-down menu allows for selecting either the drive letter or a CD image to be loaded upon starting Yabause.
- Save States: This is the path where save states will be saved.
- Enable Frame Skip/Limiter: This enables or disables frame skipping and speed limiting.
- Show FPS: This turns on the OSD function for displaying the current frames per second.
- Autostart: If checked, Yabause will automatically start running a game when opened.
- Synchronize Saturn internal clock with set time: The internal real-time clock inside the Saturn will be kept in sync with the host computer's clock if checked.
- Enable Multithreading: Enables multithreading for the software video core. Enable and increase or decrease the number of threads for a significant speed up.
- Video Core: This allows for selecting a video rendering core. "Dummy" will simply display nothing. "Software" is a multithreaded cpu-based renderer that is intended to be as similar to a real Saturn as possible. "OpenGL" is an OpenGL-based GPU renderer with support for high resolutions.
- Bilinear Filtering: Turns on bilinear filtering. Requires restarting Yabause.
- Window Resolution: "Fit to window" allows the window to be resized by clicking and dragging the edges to any size. "Fixed aspect ratio 4:3" Forces the window to a 4:3 aspect ratio. "Fixed aspect ratio 16:9" forces the window to a 16:9 widescreen aspect ratio.
- Width / Height: Allows for specifying the window size. Default is 640x480.
- Fullscreen Resolution: Allows for specifying the resolution used in fullscreen mode.
- Start in Fullscreen: When checked, Yabause will start in fullscreen mode.
- Video Format: Allows for switching between NTSC and PAL video formats.
- Use integer pixel scaling: Forces the window to resize automatically so that pixels are always perfectly square. 2x, 3x or 4x scaling is possible.
- Sound Core: Allows for selecting the platform specific sound playback method such as SDL and DirectX. "Dummy Sound Interface" will produce no output.
- Use new scsp: When checked, the new SCSP core will be used to generate audio.
- Cartridge: Allows for selecting a cartridge to be inserted in to the cartridge slot. Make sure to select one of the "Dram" options for games that require the expanded RAM.
- Memory: The path to where the Saturn's internal backup ram will be stored.
- SH1 ROM: The path to the Sh1 rom, required for low level CD block emulation. cdb105.bin is recommended.
- Mpeg ROM: The path to the MPEG cartridge ROM. Yabause does not yet support MPEG playback.
- Input: Allows for the selection of a platform-specifc input core. Examples are SDL, Qt and DirectX. "Dummy" will not allow for any controller inputs. Select a "Joystick" interface to use a controller such as an X-Box pad.
- Port 1: This represents the first controller port on the Saturn. Up to six controllers can be connected to the first port, through a multitap. For most users just configuring controller number one will be sufficient. The selectable controllers are Pad, Wheel, Mission Stick, Double Mission Stick, 3D Control Pad and Gun. The wrench icon will open a window to allow for configuring the specific buttons. The blue icon will clear the configuration, and the X icon will remove the controller.
- Controller configuration: Upon clicking the wrench icon, a pop-up window will appear. Click on a controller button and press the desired key or button to assign that key or button to the virtual controller. A check-mark should appear indicating that the button has been configured.
- Port 2: The same as port 1 except that it represents the port for player 2.
- Gun/Mouse Sensitivity: Move the slider to configure the sensitivity of gun and mouse controller inputs.
- Region: Represents the region of the console. Most users will want to leave it on Auto-detect, otherwise a mismatch between the Region setting and the region of a game will result in the game not being able to boot.
- SH2 Interpreter: Most users will want to leave this setting on "Interpreter". Debugger Interpreter is slower but enables debugging functions for developers or rom hackers.
- 68000 Core: The core for the sound CPU. Musashi is the fastest and most stable core.
- SH1 Interpreter: Only used when Low level CD Block emulation is enabled. Debugger Interpreter enables debug functions.
- Enable CD Block Low-level Emulation: Turns on the low-level CD block. The performance requirements are high and a 4.0GHZ Haswell or better is recommended. This setting requires the CD block ROM and a real bios.
- Enable Sh2 Dma Timing: Enables SH2 DMAs that take time to complete instead of instantly. This option is more accurate but slower.
- Enable SCU Dma Timing: Enables SCU DMAs that take time to complete instead of instantly. This option is more accurate but slower.
- Enable SH2 Cache: Enables the SH2 cache. Astal and Chaos Seed are two games known to need cache emulation. Enabling the cache will decrease performance.
- Hide Menubar: Hides or shows the File/Emulation/Tools... menu depending on the setting specified here.
- Hide Toolbar: Hides or shows the Icon-based toolbar menu depending on the setting specified here.
- Show Log Window: "On message" will show the log window if a message is received. This is for debugging purposes.
- Description: A description of the hotkey functionality that will be configured.
- Shortcut: Displays the currently configured hotkey for a given functionality. Double-click and press a key to configure.
This dialog allows for managing the Saturn's internal backup ram.
- Save List: Shows a selectable list of the saves within the backup ram. These are internal names decided by the game programmers and may differ slightly from the game's actual title.
- Save information: Shows internal data about the save file.
- Delete: Press to delete the currently selected save game.
- Format: Press to delete all save data.
The purpose of this dialog is transferring memory to and from the emulated Saturn. Data can be uploaded from a file or saved to a file. This functionality can be used to load homebrew.
- File: The filename to be loaded or saved to.
- Start address: The starting location that the transfer will occur from.
- Download/Upload: Allows for selecting between saving to a file (Download) or transferring to the Saturn's memory (Upload).
- Set PC to Start Address: When the transfer is complete the PC will jump to the start address to begin executing. Used for loading homebrew.
Master SH2 / Slave SH2 / SH1
These three dialogs all work the same except that they display the state of different CPUs in the Saturn.
- SH2 Registers: This displays the current value of the general purpose registers R0-R15 as well as the other special registers.
- Disassembled Code: Displays a disassembly of the code at the current program counter (PC). The address of the code is shown followed by the assembly code. The current PC location is displayed with a blue highlight. The listing can be scrolled up or down to view other areas.
- Other Debug: This tabbed display has two functionalities, Backtrace and Track Infinite Loop Results.
- Backtrace: Displays branches taken to arrive at the current PC. Useful for seeing the control flow of a program.
- Track Inf Loop Results: Often games with emulation problems will enter an infinite loop. This window allows for tracking these. Press the Loop Track Start button to begin tracking infinite loops, then close the window to allow the program to run for a bit. Upon reopening the window, the dialog should be filled with any infinite loops that were detected.
- Code Breakpoints: Allows for triggering the dialog to open when the PC reaches the desired place. Type an address and press the Add button. The Del button can be used to remove breakpoints.
- Memory Breakpoints: Allows for triggering the dialog when a memory access occurs to a given location. Reads and writes of byte, word and long size are supported. By default a break upon a byte read is selected.
- Step Into: Steps the CPU forward one instruction. If a branch is taken, the window will follow that branch.
- Step Over: Steps the CPU forward one or more instructions. Branches are skipped.
- Memory Transfer: Opens the memory transfer dialog. Covered in the Memory Transfer section.
- Memory Editor: Opens the memory editor dialog. Covered in the Memory Editor section.
- Trace Logging: Turns on the trace logging functionality. This generates large amounts of data very quickly so careful usage is advised.
- Loop Track Start / Clear : Covered in "Track Inf Loop Results" above.
- Inline Assembly: Allows for replacing the code at the current PC with a new instruction. For example replacing an instruction with "nop" with often useful for debugging purposes.
- VDP1 Command List: The display list used to draw sprites and polygons. Click on an entry to see more information in the VDP1 Command Info portion of the dialog.
- VDP1 Command Info: Displays the details of how the currently selected command is configured.
- Texture : Displays the texture associated with the current command.
- Save Bitmap: Saves the currently displayed texture to a bitmap file.
The VDP2 dialog contains detailed information about the setup of each VDP2 background layer.
- Viewer: Shows the raw tilemap for a given layer and allows for it to be saved as a bitmap.
The M68K is the Saturn's sound CPU. This dialog follows the same general pattern as the SH2/SH1 dialog.
- Slot info: Displays information about how each sound channel is configured. The slot number is selectable.
- Play slot: Plays the sample associated with the current slot.
- Save as WAV: Saves the current sound sample to a WAV file.
- Save Slot Registers: Saves the registers associated with the current slot to a binary file.
- Common Control Registers: Displays SCSP settings that affect all slots.
This dialog is for SCSP sound generation debugging purposes and only works when the New Scsp is enabled. The column of numbers and checkboxes will fill up with SCSP waveform addresses. Clicking the checkbox will mute all channels playing a waveform from that address. The animated display shows the volume levels of each channel and is updated periodically.
The SCSP Dsp mainly handles reverb and echo effects. This dialog follows the same general pattern as the SH2/SH1 dialog.
The memory editor displays a standard hex editor layout. The leftmost column is the address of the start of the current line. In the middle is the data associated with that line in hex form. The rightmost column is the same data converted to ASCII. The following areas have tabs for quick access: Bios, LWRAM, HWRAM, CS0,CS1,CS2, 68K RAM, VDP1 RAM, VDP1 Framebuffer, VDP2 RAM, and VDP2 CRAM.
- Goto Address: Type in a value to instantly go to that address without any scrolling required.
- Save selected: After selecting some data, press this to save it to a file.
- Save Tab: This will save the entire tab (Bios, LWRAM, etc) to a file.
- Search Memory: Allows for searching for various kinds of values within a given memory area. Start address and end address are configurable, as well as the size of the value to be searched for.
Enables the trace logging function. This writes the SH2 state to a log file every instruction.
Supported CD Image File Formats
- Bin + Cue, Yabause only supports standard cue sheets, see wikipedia for more details;
- MDS + MDF;
- Iso files.
- CCD (CloneCD)
|File||Settings... :||you can change lot of options (bios path, CD-ROM, video, sound, etc...).|
|Open ISO...||choose the directory of your game.|
|Open CD Rom... :||choose your CD-ROM drive (real saturn game) or a virtual CD-ROM (games mounted).|
|Save State To File...||allow to save where you want.|
|Load State From File...||allow to load a save state.|
|Screenshot :||make a screenshot of your game.|
|Quit :||quit Yabause.|
|Emulation||Run :||start a game.|
|Pause||pause the game.|
|Reset||reset a game.|
|Frame Skip / Limiter||limit the speed.|
|Tools||Backup Manager...||Manage all your game saves|
|Cheat List...||Show the current list of enabled cheats|
|Cheat Search...||A search engine for cheats|
|Transfer||Transfer data between disk and memory.|
|View||FPS||enable / disable the FPS counter.|
|Layer||enable / disable layers : Vdp1, NGB0, NGB1, NGB2, NGB3 and RGB0.|
|Fullscreen||switch between fullscreen mode and windowed mode.|
|Log||enable / disable the log.|
|Debug||Master SH2 :||For programmers, allows you to debug SH2 code for Master SH2|
|Slave SH2||For programmers, allows you to debug SH2 code for Slave SH2|
|VDP1||For programmers, displays VDP1 sprites/polygons/etc. and debug information.|
|VDP2||For programmers, displays VDP2 screens and debug information.|
|M68K||For programmers, allows you to debug code for 68000|
|SCU-DSP||For programmers, allows you to debug code for SCU's DSP|
|SCSP||For programmers, displays information on SCSP|
|Memory Editor||For programmers, Hex Editor for editing Saturn memory.|
|Help||Emu-Compatibility :||website about yabause compatibility list.|
|About||info about Yabause.|
Here are the default key mappings (they may be subject to change) :
|CTRL + S||Settings|
|CTRL + I||Open ISO|
|CTRL + C||Open CD-ROM|
|F9||Save State To File|
|ALT + 0||Save State to slot 0|
|ALT + 1||Save State to slot 1|
|ALT + 2||Save State to slot 2|
|ALT + 3||Save State to slot 3|
|ALT + 4||Save State to slot 4|
|ALT + 5||Save State to slot 5|
|ALT + 6||Save State to slot 6|
|ALT + 7||Save State to slot 7|
|ALT + 8||Save State to slot 8|
|ALT + 9||Save State to slot 9|
|F5||Load State From File|
|ALT + 0||Load State from slot 0|
|ALT + 1||Load State from slot 1|
|ALT + 2||Load State from slot 2|
|ALT + 3||Load State from slot 3|
|ALT + 4||Load State from slot 4|
|ALT + 5||Load State from slot 5|
|ALT + 6||Load State from slot 6|
|ALT + 7||Load State from slot 7|
|ALT + 8||Load State from slot 8|
|ALT + 9||Load State from slot 9|
|CTRL + P||Screenshot|
|CTRL + Q||Quit the emulator|
F1 - Run
F2 - Pause
F3 - Reset
F4 - Frameskip / Limiter
ALT + B - Backup Manage
ALT + L - Cheat List
ALT + S - Cheat Search
CTRL + T - Transfer
CTRL + F12 - Enable / Disable FPS counter
1 - Enable / Disable VDP1 Layer
2 - Enable / Disable NBG0 Layer
3 - Enable / Disable NBG1 Layer
4 - Enable / Disable NBG2 Layer
5 - Enable / Disable NBG3 Layer
6 - Enable / Disable RGB01 Layer
ALT + RETURN - Switch between Fullscreen / Windowed Screen
CTRL + L - Enable / Disable The Log
You can now change any shortkeys that you want. Go to Settings --> Shortcuts.
Low level CD Block Setup
The low level CD Block requires the following:
- A real bios, the HLE bios will not work.
- SH2/SH1 Interpreters, the dynamic recompiler will not work.
- SH1 Rom, cdb105.bin is recommended.
- Sh2 Dma Timing, Scu Dma Timing and Sh2 Cache enabled.
Also it should be noted that:
- CCD (CloneCD) format is the most reliable cd image format.
- CPU requirements are high.
General inquiries should go to :
E-mail: [email protected]
E-mail: [email protected]rriorx.com
Qt Port-related inquiries should go to:
E-mail: [email protected]
Please don't ask for roms, bios files or any other copyrighted stuff. Please use the forum when you have any questions if possible.
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
See the GNU General Public License details in COPYING.