Manual
Manual
Version 1.2
D.S. Baxter
April 1st, 2018
0. Table of Contents GB Enhanced+ Manual - 2
1. Foreword 4
2. Getting Started 5
2.1 :: Obtaining, Compiling, & Installing GBE+ 6
2.2 :: Command-Line Options 7
3. Configuration 9
3.1 :: General Settings 9
3.2 :: Display Settings 14
3.3 :: Sound Settings 16
3.4 :: Controls Settings 17
3.5 :: Netplay Settings 20
3.6 :: Paths Settings 21
3.7 ::The .ini File 23
3.8 :: The Cheat File 24
5. Debugging 39
5.1 :: Memory Mapped I/O Registers 39
5.2 :: Palettes 40
5.3 :: Memory Viewer 41
5.4 :: Disassembly 42
5.5 :: OBJ Tiles 44
5.6 :: BG Tiles 45
5.7 :: The Command-Line Debugger 46
6. Netplay 52
6.1 :: Netplay Guide 52
6.2 :: DMG-07 Setup 53
0. Table of Contents GB Enhanced+ Manual - 3
8. FAQ 57
8.1 General FAQ 57
8.2 GBE+ Roadmap 59
1. Foreword
This manual will attempt to cover all the functions users may encounter while operating GB Enhanced+.
The information contained herein doubles as both an operating guide and reference to the emulator’s various
features.
GB Enhanced+ is the successor to the original GB Enhanced project (note the shiny “+”). It is a Game
Boy, Game Boy Color, and Game Boy Advance emulator that aims to provide as many enhancements as
reasonably possible. Although there is much work to be done in later releases, such as GBA netplay, and e-
Reader emulation, and better NDS support, GBE+ is dedicated to pursuing these types of things.
Perhaps most importantly, GBE+ supports an emerging emulation technique for 2D games, what this
project refers to as Custom Graphics, or CGFX for short. Like HD textures for N64 games, CGFX lets users
replace in-game graphics with their own pixels, from simple recolors to full-blown high-definition versions.
While replacing graphics for 2D systems is not common among other emulators, GBE+ is proud to push the
boundaries in this field of emulation.
Additionally, GBE+ aims to be at the forefront of video game preservation by emulating a vast array of
the Game Boy’s many accessories. From the widely-known Game Boy Camera and Printer, to the exotic and
obscure Barcode Boy, one of GBE+’s primary goals is to recreate all of these devices through software. History
deserves to be documented and remembered, and to that end, GBE+ plays all sorts of games that used specialty
hardware or weird features. With any luck, eventually every crazy add-on imaginable will added to the project.
What started as an idle dream to make my own NDS emulator has become something much more than
the humble project I founded in 2012. There is still a lot more to go through before I can see my vision
completed, however, I believe this project is on the right path. In the coming years, we’ll see where the road
takes this emulator. In the meantime, I hope this manual will give users an insight to how the programs works,
what it’s capable of, and where it’s going.
2. Getting Started
Getting started with GBE+ is relatively simple. The emulator does not have many requirements to build
from source, and installation should be simple for most operating systems. Please consider, however, that GBE+
has not been tested on OS X/macOS in any way, shape, or form. This is due to the lack of access to the
operating system. Users can still build it themselves on OS X/macOS.
Currently, GBE+ has minimal hardware requirements. Any recent computer should be able to run the
emulator just fine. Certain tasks, such as processing large amounts of CGFX, require more single-threaded
processing power. Under some circumstances CGFX may also benefit from more RAM. Generally, however,
these scenarios are reserved for intense use of HD graphics. Otherwise GBE+ is not a demanding emulator.
It should be noted, however, that as of 1.2, GBA games in general eat up a lot of CPU resources.
This is due to inefficiencies in the GBA core that will be addressed in the very near future. Most mid-range
computers and above won’t notice anything performance-wise, but weaker computers, particularly those with
Ultra-Low Voltage CPUs, may experience slowdowns with the GBA core.
GBE+ aims to build and run with minimal software dependencies. The recommended minimum version
of OpenGL is 3.3. Any computer released in the past decade should support this without any trouble. Future
versions of GBE+ may add support for Vulkan.
Currently, GBE+ supports both 32-bit and 64-bit systems. For the foreseeable future, this will remain the
case. For CPU emulation, any dynamic recompilers added to later releases, will only target x64 systems.
Nevertheless, GBE+ will technically continue to support 32-bit systems at that time through CPU interpreters.
For a general roadmap of where GBE+ will go from here, please see the FAQ in Section 8 for more
details.
2.1 Obtaining, Compiling, & Installing GBE+ GB Enhanced+ Manual - 6
Linux users have to compile the source code themselves. The build process on Windows is virtually
unchanged when using the MSYS2 toolchain and msysgit. Compiling from source requires prior installation of
the following programs and libraries:
• GIT
• CMake
• SDL 2.0
• SDL_net 2.0 (optional, for netplay support)
• OpenGL
• Qt4 or Qt5 (optional, for the GUI)
• GLEW (Windows only)
CMake will check to make sure it can find all of the necessary dependencies before the build process
begins. Before that happens, however, GIT must retrieve the source, or the source tarball from the Release page
must be downloaded and extracted. The following terminal instructions detail how to download the source code
through GIT, compile it, and install the emulator:
Note that this will install the very latest source code. GIT can check out specific revisions based on the
hash of that commit. Consult the GIT documentation for checking out revisions and the GBE+ GitHub
repository for the appropriate hash. Once CMake installs GBE+, the emulator can be called via gbe_plus for the
command-line version, or gbe_plus_qt for the Qt version.
2.2 Command-Line Options GB Enhanced+ Manual - 7
-b or --bios [FILE]:
This instructs GBE+ to boot a system’s BIOS or Boot ROM with the provided file when loading a game.
The second argument is the exact path for the BIOS or Boot ROM on the user’s computer.
-d or --debug:
This starts GBE+ in debug mode. It will pull up the command-line debugger. See Section 5.7 for details
on how to use properly use this version of the debugger.
--opengl:
This forces GBE+ to use OpenGL for all drawing/blitting operations instead of SDL.
--sys-auto:
Sets the emulated system type to AUTO. In this mode, GBE+ will automatically determine what system
to emulate based on the game.
--sys-dmg:
Sets the emulated system type to DMG (old black and white Gameboy). This option is not valid when
running GBA games and is ignored by the emulator.
--sys-gbc:
Sets the emulated system type to GBC. This option is not valid when running GBA games and is ignored
by the emulator. DMG games will run as if on a GBC.
--sys-gba:
Sets the emulated system type to GBA. DMG/GBC games will run as if on a GBC, however, like a real
GBA, the screen can be stretched horizontally by pressing the L and R triggers.
--mbc1m:
Forcibly emulates MBC1 games as MBC1M variants. Use this option for games like Mortal Kombat I &
II, or Bomberman Collection.
--mmm01:
Forcibly emulates MMM01 multicarts. Use this option for games like Taito Variety Pack.
--cheats:
Allows GBE+ to load cheats and codes from the cheats file. See Sections 3.5 through 3.7 for details on
setting up the path to the cheats file and the cheat file format
--patch:
Allows GBE+ to patch a game with an IPS patch file. See Section 3.1 for more details.
2.2 Command-Line Options GB Enhanced+ Manual - 8
--save-auto:
Automatically detects GBA save type.
--save-none:
Disables all GBA game saves.
--save-sram:
Forces GBA save type to SRAM.
--save-eeprom:
Forces GBA save type to EEPROM.
--save-flash64:
Forces GBA save type to FLASH RAM (64KB).
--save-flash128:
Forces GBA save type to FLASH RAM (128KB).
--h, or --help:
Displays a brief help message explaining all of the above options.
3. Configuration GB Enhanced+ Manual - 9
3. Configuration
GBE+ has many options that will affect how the program runs games. There are 5 major areas of
configuration: General Settings, Display Settings, Sound Settings, Control Settings, and Paths. The following
sections detail what these options do for the Qt version of the emulator.
Auto: In this mode, GBE+ will automatically determine what system to emulate based on the game.
Game Boy [DMG]: Emulates the DMG (old black and white Gameboy). This option is not valid when
running GBA games and is ignored by the emulator.
3. Configuration GB Enhanced+ Manual - 10
Game Boy Color [GBC]: Emulates the GBC. This option is not valid when running GBA games and is
ignored by the emulator. DMG games will run as if on a GBC.
Game Boy Advance [GBA]: Emulates the GBA. DMG/GBC games will run as if on a GBC, however,
like a real GBA, the screen can be stretched horizontally by pressing the L and R triggers.
Nintendo DS [NDS]: Emulates the NDS. Most NDS games are detected automatically, so this setting
does not need to be explicitly changed. NDS emulation is highly experimental.
Super Game Boy [SGB]: Emulates the Super Game Boy. The border can be disabled by pressing the
input assigned to the R trigger, and disabled by pressing the input assigned to the L trigger.
Super Game Boy 2 [SGB2]: Emulates the Super Game Boy 2. The is basically the same as the Super
Game Boy, except some games such as Tetris DX will show different borders.
GB Link Cable: Emulates the GB Link Cable used for GB and GBC games. This option is necessary
for netplay to work. See Section 6 for more details on setting up netplay.
GB Printer: Emulates the GB Printer. Images generated by the GB Printer are automatically saved to
the screenshot directory. See Section 3.6 for more details on setting up the screenshot directory.
GB Mobile Adapter: Emulates the GB Mobile Adapter used in a limited number of Japan-only games.
Support is currently limited to booting GB Mobile Trainer.
Bardigun Barcode Scanner: Emulates the card scanner for Barcode Taisen Bardigun. See Section 7
for more details.
Barcode Boy: Emulates the Barcode Boy card scanner. See Section 7 for more details.
DMG-07: Emulates the DMG-07 4-player adapter. See Section 6.1 for general netplay configuration
and specifically Section 6.2 for configuring netplay for the DMG-07.
Please note that when changing the Serial IO Device (Link Cable) option during gameplay, it will
only take effect when resetting or booting a new game.
Infrared Device:
Specifies the type of infrared device that should be connected to the emulated Game Boy Color. The
following options are:
GBC IR Port: Emulates the standard GBC IR port, used in various GBC-to-GBC communications. If a
game does not use the GBC IR port (e.g. older DMG games) this option has no effect.
Full Changer: Emulates the Full Changer accessory used with Zok Zok Heroes. Click the Configure
button for more options. See Section 7 for more details.
Pokemon Pikachu 2: Emulates IR communications with the Pokemon Pikachu 2. Click the Configure
button for more options. See Section 7 for more details.
Pocket Sakura: Emulates IR communications with the Pocket Sakura. Click the Configure button for
more options. See Section 7 for more details.
TV Remote: Emulates random IR signals as if from a TV remote. See Section 7 for more details.
Constant IR Light: Emulates a constant IR light in Chee Chai Alien. See Section 7 for more details.
None: GBE+ will not emulate any of the supported special cartridge types. If unsure, leave this as the
default option.
DMG - MBC1M: Emulates MBC1 multicart variants known as MBC1M. Use this for games like
Mortal Kombat I & II or Bomberman Collection.
DMG - MMM01: Emulates MMM01 multicarts. Use this for games like Taito Variety Pack or
Momotarou Collection 2.
AGB - RTC: Emulates the Real-Time Clock found on some GBA games. Use this for Pokemon Ruby,
Sapphire, and Emerald. The RTC can be artificially manipulated via RTC offsets. See more about that
option further down in the section.
AGB - Solar Sensor: Emulates the Solar Sensor found in the Boktai games. The intensity of the
sunlight can be controlled dynamically via Context Up and Context Down controls. See Sections 3.4
and 7.10 for more details.
AGB - Rumble: Emulates the rumble found in Drill Dozer. This is not to be confused with the rumble
feature used for Game Boy Player games like Pokemon Pinball: Ruby & Sapphire or Mario & Luigi:
Superstar Saga (which is currently unsupported in GBE+). The rumble feature must also be enabled in
the controller settings. See Sections 3.4 and 7.14 for more details.
AGB - Gyro Sensor: Emulates the gyroscope sensor in WarioWare: Twisted. The game can be played
with Context Left and Context Right controls. See Sections 3.4 and 7.11 for more details.
AGB - Tilt Sensor: Emulates the tilt sensor in Yoshi Topsy-Turvy / Universal Gravitation. This game
can be played with Context Left and Context Right controls. See Sections 3.4 and 7.12 for more details
Use cheats:
Enables cheats for DMG and GBC games via GameShark and Game Genie codes. Both code types can
be used simultaneously. To add, delete, and modify cheats, click on the Edit Cheats button to enter the
following menu:
Current cheats are displayed in a list like such. To edit or delete a specific cheat, click on it and highlight
it as the screenshot above demonstrates, then click the Edit Cheat or Delete Cheat button. Add Cheat
will bring up a menu such as this:
Select the cheat code type, then enter the cheat code data. Comments can be added to each cheat. If cheat
code data format is incorrect, GBE+ will set it to 0, in which case, please edit the cheat to correct it.
Cheats are loaded from and saved to the specified cheat file if available. See Section 3.8 for more info.
3.1 General Settings GB Enhanced+ Manual - 13
Use ROM patches:
Applies IPS or UPS patches when booting a game. The patch must match the ROM filename, except for
the extension. For example, the patch file for Super_Mario.gb would be Super_Mario.ips or
Super_Mario.ups.
Screen Scale:
Determines what factor to scale the original game screen. Factors of 1x to 10x are applicable. Unlike the
command-line version, the Qt version can scale the image regardless of whether OpenGL is used or not.
Post-Processing Shader:
Applies various shaders (if any) to the final output image. Used to create different special effects or for
scaling algorithms. OpenGL must be selected to use this option. Changing this option during gameplay
takes effect immediately.
3.2 Display Settings GB Enhanced+ Manual - 15
Use OpenGL:
Use OpenGL for all drawing/blitting operations. This option is faster than using software, especially
when increasing the Screen Scale.
Output Frequency:
Determines the final output frequency of all sound. The available options are 11025Hz, 22050Hz,
44100Hz, and 48000Hz. With higher frequencies, GBE+ will produce better audio quality. Please note,
changing this option only takes effect when booting or resetting a game. If unsure, please leave this
option at its default setting.
Enable Sound:
Checking this option enables sound output. Unchecking this option will mute any sounds from GBE+.
Volume:
This slider controls the master volume for all sound output from GBE+. Turning it all the way down to
zero will effectively mute the emulator.
3.4 Controls Settings GB Enhanced+ Manual - 17
Input Device:
Selects the input device to configure. Both keyboards and joysticks can be configured. This option will
contain a list of all available joysticks GBE+ can detect. Please note that both keyboard and joysticks
can be used at the same time, regardless of what this option is set to.
Buttons:
These are the individual buttons that can be configured. Press the Configure button for GBE+ to map
input from a device. For joysticks, there is a 3 second delay before configuration is processed. During
this time, please continue holding down on the joystick for GBE+ to finish mapping.
Dead Zone:
Configures the dead zone for joystick axes. A smaller dead zone means less tilt on an axis is needed to
trigger an input. A larger dead zone means more tilt on an axis is needed to trigger an input. If unsure,
please leave this option at its default setting.
3.4 Controls Settings GB Enhanced+ Manual - 18
Advanced Controls cover areas like enabling rumble and the Context Buttons.
Enable rumble:
Turns on haptic feedback (rumble support) for various games that use rumble carts such as GBC titles
like Pokemon Pinball or GBA titles like Drill Dozer. This option only works for joysticks that support
some sort of haptic feedback.
Context Buttons:
Context buttons are meta-buttons that serve different roles depending on certain games. For example, in
Kirby Tilt ‘n’ Tumble, the context buttons are used to move “tilt” the emulated GBC up, down, left or
right. For WarioWare: Twisted, Context Left and Context Right determine which direction to spin the
emulated GBA. For the Boktai games, Context Up and Context Down dynamically control the level of
sunlight hitting the sensor. These buttons are configured exactly like the buttons in Standard Controls.
3.4 Controls Settings GB Enhanced+ Manual - 19
Hotkey Controls cover certain configurable shortcuts to different actions within GBE+. Currently,
hotkeys only apply to keyboard input.
Toggle Turbo:
Lets GBE+ run at maximum speed while this key is held down. Defaults to the TAB key. It should be
noted that many OpenGL drivers limit the FPS in some way. Properly configure the OpenGL to allow
higher FPS, or simply disable OpenGL in GBE+.
Toggle Mute:
Disables/enables all sound coming from GBE+. Defaults to the M key.
GB Camera File:
Loads an arbitrary BMP file from the user’s computer into VRAM while GBE+ emulates the GB
Camera. Defaults to the P key. This basically inserts any image into the GB Camera to take pictures
with.
3.5 Netplay Settings GB Enhanced+ Manual - 20
Enable netplay:
Turns on netplay in GBE+.
Server Port:
The port of GBE+ will send data to. This must match the Client Port of another instance of GBE+.
Client Port:
The port GBE+ will receive data from. This must match the Server Port of another instance of GBE+.
Client IP Address:
The IPv4 address of the client, a.k.a, the other instance/player GBE+ will connect to.
3.6 Paths Settings GB Enhanced+ Manual - 21
GBA BIOS:
This is the Game Boy Advance BIOS file. Booting this up will let users see the GBA’s “Nintendo” logo
and the boot animation. Currently, all BIOS functions are high-level emulated, so GBE+ does not
actually run the code from the GBA BIOS. In the future, low-level emulation of the BIOS will be
possible.
3.6 Paths Settings GB Enhanced+ Manual - 22
NDS Firmware:
This is the firmware file GBE+ will use when booting up the NDS core. Booting from firmware is not
possible yet.
BG Dump:
This is the folder GBE+ will look to when loading or dumping Background Tiles for Custom Graphics.
By default, this is located in the data folder for GBE+. This folder must be located within the data
folder for GBE+ to correctly find the image files.
OBJ Dump:
This is the folder GBE+ will look to when loading or dumping Sprite Tiles for Custom Graphics.
By default, this is located in the data folder for GBE+. This folder must be located within the data
folder for GBE+ to correctly find the image files.
Screenshots:
This is the folder GBE+ will use to store screenshots.
Game Saves:
This is the folder GBE+ will use for all game saves. If nothing is specified for this path, GBE+ will look
for the save file in the same directory as the ROM.
Cheats File:
This is the file GBE+ will use to look up cheats. If nothing is specified for this path, cheats can still be
used (by adding them through Edit Cheats in the General tab, see Section 3.1), however GBE+ will not
be able to save them. For more details about the format of the cheat file itself, see Section 3.8.
CGFX Manifest:
This is the manifest file GBE+ will use when loading Custom Graphics or when dumping them via the
Advanced Menu. See Section 4 for more details about Custom Graphics.
3.7 The .ini File GB Enhanced+ Manual - 23
GBE+ will always search for a .ini file in the same folder as the emulator itself. If no such file exists,
GBE+ will search in the data folder for its .ini file. If no .ini file exists in the data folder either, GBE+ will use
its default settings.
For the Qt version, GBE+ will always update and save the .ini file. This way, changes to settings are
remembered during the next play session.
3.8 The Cheat File GB Enhanced+ Manual - 24
Cheat Type:
This is a simple ID, either “GG” for Game Genie or “GS” for GameShark
Comment:
Any comments about the cheat.
The following is an example of what a cheat code file looks like as a text file:
[GG:123456789:Test Code]
[GG:DEADBEEEF:Test Code 2]
[GS:FEEEEEED:Another Test]
[GS:00000001:More]
[GG:111111111:This had better work]
4. Custom Graphics (CGFX) GB Enhanced+ Manual - 25
4.1 Overview
CGFX works by first grabbing tile data from a game, which GBE+ offers numerous tools for achieving.
Once the graphics have been extracted or “dumped”, they are edited to look like something else. The changes
can be simple 1:1 recolors of black-and-white-only games such as the screenshot above, or they can be bigger,
high-definition versions. Once those changes are made, GBE+ can automagically load the graphics and draw
them on-screen when running the game.
4.2 Dumping Graphics GB Enhanced+ Manual - 26
Before beginning, please make sure the paths for the BG and OBJ dump folders are correct. Go to
Options -> Paths to check or change any settings. The BG and OBJ dump folders must always be in
GBE+'s data folder. By default, these two folders are data/Dump/BG and data/Dump/OBJ, but they can be
changed, moved or renamed (so long as they remain in the data folder).
When dumping custom graphics, a manifest file should be specified. This is simply a text file that
will tell GBE+ where to look for custom graphics and how it should load and handle them. Go to Options ->
Paths and make sure the CGFX Manifest points to a valid text file. When starting new CGFX projects, the
manifest may be left as an empty text file. GBE+ will add data to the manifest automatically.
To get started, load a game from the menu. Once the game starts, click on Advanced -> Custom
Graphics... The screen below will appear:
The BG Meta Tile tab and OBJ Meta Tile tab are the recommended methods of dumping graphics due to
its ease of use. The OBJ Tiles and BG Tiles tabs can also be used for dumping, but are less versatile. Each tab
will be explained in detail in further sections
4.3 Layers - BG Meta Tile GB Enhanced+ Manual - 27
Meta-tiles offer users a way to dump a section of the screen all at once, then save the results as a single
image. Take, for example, the POKEMON logo from Pokemon Red. The logo itself is just short of 100 8x8
background tiles. Normally, it would take many people hours to dump each tile and edit them by hand. As a
convenience, GBE+ will let users save that logo as a single bitmap file which can be edited and loaded later.
Meta-tiles can be created for background tiles and sprite tiles. Meta-tiles for sprites have their own
separate menu described later. Below the BG meta-tile menu is explained.
To create a BG meta-tile, go to Dump Selection. In this area are parameters to control which section
will be dumped. The X and Y boxes determine where the on-screen selection will begin. The W and H boxes
determine the dimensions of the selection. Clicking and dragging the mouse will also create a selection. The
selection will automatically highlight the area to be dumped. Additionally, EXT_VRAM_ADDR and
EXT_AUTO_BRIGHT options are available (see Section 4.4 for more details).
Once the selection has been made, enter in a name for the file. This file will automatically appear in
the BG Dump folder and will automatically be saved as a .BMP file. All the necessary manifest entries are
written when saving as well.
4.3 Layers - BG Meta Tile GB Enhanced+ Manual - 28
GBE+ provides extra tools under Frame Control to aid tile dumping. The Game Boy’s screen is
160x144, and GBE+ can stop rendering after a specific line. This is useful because some games (such as Mega
Man I) change their graphics once they reach a specific line.
Advancing frame-by-frame is also possible when clicking on the Advance Next Frame button.
Furthermore, GBE+ can feed input into the emulated game. This allows users to perform actions such as
walking around so that different animations can be dumped. Clicking on an input will highlight it and emulates
pressing that button on a Game Boy. The button is pressed down as long as the input in this menu remains
highlighted. Clicking on an input a second time removes highlighting and emulates releasing that button on a
Game Boy.
4.4 OBJ Meta Tile GB Enhanced+ Manual - 29
First, select an OBJ from the index (0-39), then hover the mouse over the meta-tile. The current tile will
be highlighted. Left-clicks add graphics to the sprite-sheet while right-clicks delete them. The size of the meta-
tile will change based on the Tile Width and Tile Height values (20 max for each).
The automatic options only require users to check the boxes, close the Custom Graphics dialog, and run
the game. This is generally not the recommended way to dump graphics because a lot of graphics can be
dumped at once. This makes editing things quite hard in some cases. A better approach is to dump only a few
graphics at a time manually. There are tabs specifically for dumping BG and OBJ tiles. Clicking on one of the
tiles will dump it. For even greater control over dumping graphics, the Layers tab provides a better interface.
4.8 Using the Advanced Menu GB Enhanced+ Manual - 34
Destination Folder:
This will specify what folder to use to dump this tile. By default, it is either the BG or OBJ dump folder
specified in Options -> Paths.
Tile Name:
This gives the tile a unique name. By default, GBE+ will name the graphics after its hash. Use this to
give it a descriptive name like "Mario_Hat_1.bmp" or "Link_Sword.bmp"
EXT_VRAM_ADDR:
Checking this will allow GBE+ to associate this tile with its VRAM address. This is useful for dumping
graphics that have the same hash but are located in different parts of VRAM. Often, games like Super
Mario Land used a blank, white tile for the "sky" and the "ground". Ordinarily, GBE+ thinks these two
are the same (they have the same data after all), but since they are located in different areas of VRAM,
they can be replaced separately. This is an advanced option; if unsure, leave unchecked!
EXT_AUTO_BRIGHT:
This option is generally only applicable to GBC games. This will force GBE+ to automatically adjust the
brightness of this tile based on the game's original colors. With the GBC, many games had "fade in" and
"fade out" effects programmed. When EXT_AUTO_BRIGHT is enabled for a tile, GBE+ will try to
lighten or darken an image appropriately when this happens in a game. Generally, this can be reserved
for things like intro logos or title screen elements. This is an advanced option; if unsure, leave
unchecked!
Manifest files can be edited manually however. See Section 4.9 for more info about the manifest file.
4.9 The Manifest File GB Enhanced+ Manual - 35
Manifests allow the user to associate a hash with any file name they want. Even a relatively simple
looking tile like this:
That's not very descriptive, and it's hard for most people to remember. Manifests allow GBE+ to
associate that hash with a simpler name like "X_FONT.BMP" or whatever users want, as long as that name
points to a valid image file. The format of manifest files is simple. Each entry is enclosed in brackets ([ ]), and
each parameter is separated by a colon (:).
1. GBE+ hash:
This is the hash GBE+ computes (obtained while dumping graphics), such as
"0630_07507J05X04T05X07J07503-"
3. Image type:
This determines what type of image the file represents.
1 = DMG Sprite, 2 = GBC Sprite, 10 = DMG Background Tile, 20 = GBC Background Tile.
4.9 The Manifest File GB Enhanced+ Manual - 36
4. EXT_VRAM_ADDR:
The address of a tile in VRAM, necessary for CGFX under certain scenarios. GBE+ will generate this. If
uncertain, set to 0!
5. EXT_AUTO_BRIGHT:
Setting this to 1 will let GBE+ automatically correct the brightness of CGFX to match the original
game's brightness. If uncertain, set to 0!
Meta-tile Entries specify where to look for this bitmap, and how it should be broken down. A Meta-tile
Entry simply gives this bitmap an ID called the Meta Name, and the original dimensions of each tile. In order
for GBE+ to actually use any of the tiles from the Meta-tile bitmap, a regular Tile Entry must follow and use
the Meta Name to grab a specific tile number. Below is the format for a Meta-tile Entry.
2. Meta Name:
This is a unique text-based ID for a specific meta-tile. It can be named anything, however, do not use
quotes (single or double) or colons in the name.
3. Meta Type:
Specifies the base tile type of meta-tile. This represent the tile’s original format, not the modified format.
0 = 8x8 Background Tile, 1 = 8x8 Sprite Tile, 2 = 8x16 Sprite Tile.
4.9 The Manifest File GB Enhanced+ Manual - 37
#You can even divide up graphics into your own categories for easier editing!
#Imagine we're loading Mario sprites or something here
[10102128173--1312123211:'CGFX\Mario\M_1.bmp':1:0:0]
[101053232223--333123211:'CGFX\Mario\M_2.bmp':1:0:0]
#After the Meta-tile Entry, populate the manifest with regular Tile Entries
#Instead of a file path, the second parameter is “T_SCREEN_XXX”
[eJafdsHadd-adfdsgfdsaaaq:T_SCREEN_0:10:0:0]
[ejAejAejAejAejAejAejAejA:T_SCREEN_1:10:0:0]
[AddaAddaDDapp-4322102934:T_SCREEN_2:10:0:0]
Obviously, editing the manifest file by hand can be a bit daunting, therefore, it is only recommended for
people who know what they are doing, or for troubleshooting problems with CGFX.
4.10 Editing and Loading Graphics GB Enhanced+ Manual - 38
For sprites, GBE+ supports a transparency color. By default, this is ugly green (#00FF00) so use that color to
make transparent areas. This color can be changed by editing the gbe.ini file.
Before loading a game, go to Options -> Display. Change the Custom Graphics (CGFX) Scale to
match the scale factor of the graphics you will be loading. Lastly, check the Load Custom Graphics option.
Enjoy the results of your work.
5. Debugging GB Enhanced+ Manual - 39
5. Debugging
GBE+ offers a wide range of debugging options for those interested in what makes games run.
Currently, GBE+ supports command-line debugging features for both the DMG and GBA cores. Additionally,
GBE+ has a specific interface for debugging DMG/GBC games through the Qt GUI. Below the GUI version is
detailed first. To access this, run a DMG or GBC game and go to Advanced -> Debugger. When opening the
debugger, the game will automatically pause; it will resume when the window is closed.
5.2 Palettes
The Palettes tab displays the current Background and Object palettes. On DMG games, there is only 1
BG palette, and 2 OBJ palettes, however on the GBC there are 8 for both. The relative RGB values for each
color (0 - 31) will be displayed when clicking on a color. An enlarged preview of the color will appear on the
right-hand side as well.
5.3 Memory GB Enhanced+ Manual - 41
5.3 Memory
The Memory tab will display the entire contents of the memory map (0x0 through 0xFFFF on the
DMG/GBC). All the values can be scrolled through and examined in detail. Additionally, as a convenience, the
memory contents are also displayed as ASCII characters on the right-hand side.
5.4 Disassembly GB Enhanced+ Manual - 42
5.4 Disassembly
The Disassembly tab shows instructions and allows the user to step through game code in real-time.
Below are descriptions of all of the functions in this tab:
Next:
Jumps to the next instruction and waits for further input. When running in Continue mode, this will
pause the emulator and resume debugging.
Continue:
Runs the emulator normally until it hits a breakpoint or the Next button is pressed. In either case, the
emulator will pause and resume debugging.
Set Breakpoint:
Creates a break point on the current PC. Any breakpoints are highlighted in yellow. A breakpoint will
force the emulator to stop when running in Continue mode.
Clear Breakpoints:
Erases all existing breakpoints from the debugger.
5.4 Disassembly GB Enhanced+ Manual - 43
Reset:
Resets emulation back to the beginning and pauses.
Reset + Run:
Resets emulation back to the beginning and runs in Continue mode.
5.5 OBJ Tiles GB Enhanced+ Manual - 44
5.6 BG Tiles
The BG Tiles tab displays the background tiles currently in use by a game. Each BG tile can be clicked
on, and then GBE+ will displayed an enlarged preview on the right-hand side. Please note that this feature is not
complete at this time and may experience issues for some GBC games.
5.7 The Command-Line Debugger GB Enhanced+ Manual - 46
GBE+ will start off paused, and from the command-line, debugging commands are entered. GBE+ will
print information to the command-line console as necessary. The DMG and GBA cores both have this
debugging functionality, unlike the Qt version which currently only works with DMG and GBC games. The
debugging commands vary slightly between the DMG and GBA cores. Below are the all the commands for the
DMG core:
n:
Run next Fetch-Decode-Execute stage.
c:
Continue until next breakpoint.
bp:
Set breakpoint, format 0x1234ABCD.
bc:
Set breakpoint when a specific memory address equals a certain value. format 0x1234 for addr, 0x12 for
value.
bw:
Set breakpoint when any value is written to the specified address, format 0x1234. Only available when
setting the ADVANCED_DEBUG CMake flag when building GBE+ from source code.
br:
Set breakpoint when any value is read from the specified address, format 0x1234. Only available when
setting the ADVANCED_DEBUG CMake flag when building GBE+ from source code.
del:
Delete all current breakpoints.
u8:
Show BYTE @ memory, format 0x1234.
u16:
Show WORD @ memory, format 0x1234.
w8:
Write BYTE @ memory, format 0x1234. Prompts for address first, then value to write.
w16:
Write HALFWORD @ memory, format 0x1234. Prompts for address first, then value to write.
5.7 The Command-Line Debugger GB Enhanced+ Manual - 47
reg:
Alters the value of a register. Prompts for an index (0 - 9) first, then the value. Index values of 0 - 6
correspond to registers A - L. Index values of 7 - 9 correspond to the CPU Flags, SP, and PC registers
respectively.
rom:
Displays current MBC ROM bank, if any.
ram:
Displays current MBC RAM bank, if any.
dz:
Disassembles 16 GBZ80 instructions from the specified address, format 0x1234.
dq:
Quit the debugger, return to normal emulation.
dc:
Toggle CPU cycle display.
cr:
Reset CPU cycle counter.
rs:
Reset emulation.
pa:
Toggles printing all instructions to the screen.
pc:
Toggles printing the all Program Counter values to the screen.
q:
Quit GBE+.
h:
Display the above help messages.
5.7 The Command-Line Debugger GB Enhanced+ Manual - 48
Below are all the commands for the GBA core:
n:
Run next Fetch-Decode-Execute stage.
c:
Continue until next breakpoint.
bp:
Set breakpoint, format 0x1234ABCD.
bc:
Set breakpoint when a specific memory address equals a certain value. format 0x1234 for addr, 0x12 for
value.
del:
Delete all current breakpoints.
u8:
Show BYTE @ memory, format 0x1234ABCD.
u16:
Show HALFWORD @ memory, format 0x1234ABCD.
u32:
Show WORD @ memory, format 0x1234ABCD.
w8:
Write BYTE @ memory, format 0x1234ABCD. Prompts for address first, then value to write.
w16:
Write HALFWORD @ memory, format 0x1234ABCD. Prompts for address first, then value to write.
w32:
Write WORD @ memory, format 0x1234ABCD. Prompts for address first, then value to write.
reg:
Alters the value of a register. Prompts for an index (0 - 36) first, then the value. Index values 0 - 15
correspond to r0 - r15 (User Mode), 16 for CPSR, and 17 - 36 the rest of the registers for FIQ, SVC,
ABT, IRQ, and UND modes
dq:
Quit the debugger, return to normal emulation.
dc:
Toggle CPU cycle display.
cr:
Reset CPU cycle counter.
5.7 The Command-Line Debugger GB Enhanced+ Manual - 49
rs:
Reset emulation.
pa:
Toggles printing all instructions to the screen.
pc:
Toggles printing the all Program Counter values to the screen.
q:
Quit GBE+.
h:
Display the above help messages.
5.7 The Command-Line Debugger GB Enhanced+ Manual - 50
Below are all the commands for the NDS core:
n:
Run next Fetch-Decode-Execute stage.
c:
Continue until next breakpoint.
sc:
Switch current CPU core to debug (NDS7 or NDS9).
bp:
Set breakpoint, format 0x1234ABCD.
bc:
Set breakpoint when a specific memory address equals a certain value. format 0x1234 for addr, 0x12 for
value.
del:
Delete all current breakpoints.
u8:
Show BYTE @ memory, format 0x1234ABCD.
u16:
Show HALFWORD @ memory, format 0x1234ABCD.
u32:
Show WORD @ memory, format 0x1234ABCD.
w8:
Write BYTE @ memory, format 0x1234ABCD. Prompts for address first, then value to write.
w16:
Write HALFWORD @ memory, format 0x1234ABCD. Prompts for address first, then value to write.
w32:
Write WORD @ memory, format 0x1234ABCD. Prompts for address first, then value to write.
dq:
Quit the debugger, return to normal emulation.
da:
Disassembles 16 ARM instructions from the specified address, format 0x1234ABCD.
dt:
Disassembles 16 THUMB instructions from the specified address, format 0x1234ABCD.
5.7 The Command-Line Debugger GB Enhanced+ Manual - 51
rs:
Reset emulation.
pa:
Toggles printing all instructions to the screen.
pc:
Toggles printing the all Program Counter values to the screen.
q:
Quit GBE+.
h:
Display the above help messages.
6 Netplay Guide GB Enhanced+ Manual - 52
First, gather the necessary network information. Each player must have the IPv4 address of the other to
correctly connect. If netplay will only involve one machine (connecting two instances of GBE+ on the same
computer), only that machine’s current IPv4 address is needed. In that case, it is recommended that the
localhost address (127.0.0.1) be used.
Next, all players must agree the use the same ports. Player A’s Server Port must match the Player B’s
Client Port, Player A’s Client Port must match Player B’s Server Port. Effectively, only 2 ports are necessary,
but they must be configured correctly like such:
Player A Player B
Server Port 2000 Server Port 2001
Client Port 2001 Client Port 2000
Additionally, both players must agree whether or not to turn on hard syncing. For most network
connections outside of the same machine, the latency is far too high and will desync netplay without hard
syncing. Although it is very slow, hard syncing is recommended. Due note that the real-world latency outside of
LAN or small networks makes hard syncing unbearably slow, so netplay across the internet is a bit impractical.
For local networks, however, the speed should be fine.
To start netplay, the emulated SIO device should be set to GB Link Cable for both players for linked
gameplay. For the GBC IR port, this step is unnecessary. Each player must then start a netplay session while
running the game by pressing hotkey F5. GBE+ will pause for 10 seconds and wait to establish a connection. If
no connection is detected, GBE+ will unpause and users can try again. Once connected, both instances of GBE+
will continuously communicate with each other. To disconnect from a netplay session, press the F6 hotkey.
After any disconnection (by hotkey or network error) GBE+ must restart the game to properly reconnect.
Currently there are no GUI indications of netplay connection status, but there are messages printed to the
terminal when launch the SDL or Qt version from the command-line.
6.2 DMG-07 Setup GB Enhanced+ Manual - 53
Player A’s Server Port must match the other players’ Client Ports, and Players A’s Client Port must
match the other players’ Server Port. Player A’s Server Port must be lower than any other players in order for
GBE+ to detect it as the DMG-07 host. Additionally, ensure that all instances of GBE+ have access to
following ports:
Finally, hard syncing is required for GBE+ to properly emulate DMG-07. Make sure every instance of
GBE+ has this options turned on and that they use the same threshold value. Currently, GBE+ only supports
localhost for the DMG-07, so all instances of GBE+ need to be running on the same IP address, i.e. the same
computer.
To begin connecting instances of GBE+, let Player A begin the netplay session by pressing the F5 key.
Afterwards, other instances of GBE+ can connect to Player A by pressing F5 as well. Player IDs are assigned
based on whoever connects first (e.g. Player B is the 1st to connect, Player C is 2nd, and Player D is 3rd). If any
instance of GBE+ disconnects, all others will also exit netplay.
7 Game Specific Instructions GB Enhanced+ Manual - 54
GBE+ comes with binary card data pre-packaged in the data/cards/bcb folder.
GBE+ comes with binary card data pre-packaged in the data/cards/btb folder.
Some game require both sides to initialize IR communications around the same time. GBE+ is not
equipped to handle ones that require extreme precision. As a result Pokemon TCG (non-Japanese
versions) and Bomberman Max Red/Blue are currently incompatible. Other should work as intended.
A) Unlikely in the foreseeable future. My focus has always been to target “desktop” usage. Android just isn’t
something I have my sights set on. Having said that, GBE+ runs on very little dependencies outside of SDL,
OpenGL, and Qt. It would be fairly easy for someone to port even a basic version of Android and refine it from
there. If others work on it, I’d be more than happy to answer any questions and offer advice.
A) Unlikely in the foreseeable future. It’s just not something I’m currently interested in. I have a dozen other
priorities at the moment (GBA netplay, e-Reader, and NDS support). As I said above, if anyone else is
attempting to work on it, I would be more than happy to answer questions about GBE+’s code and give advice.
Q) Will you make Custom Graphics (CGFX) for [insert random game console]?
A) No. I am only interested in the Game Boy, Game Boy Color, Game Boy Advance, and Nintendo DS, and I
am only pursuing CGFX on those systems. NES, Genesis, SNES, Wonderswan, etc are not my thing. Learning
the ins and outs of [insert random game console] is not easy at any rate; it takes a lot of time. Regardless, I will
be publishing my work on CGFX so other emulator developers can implement in themselves.
A) For GBE+, accuracy is a long-term sub-goal. This means that accuracy gets handled as something
incremental, but things like cycle or per-pixel accuracy are not the main focus of this project. That is not to say
GBE+ does not care about accuracy. Eventually, these things should be pursued, however other features have
priority.
Q) But... accuracy!
As said above, accuracy will be tackled in due time, step-by-step. General game compatibility is very important,
but extreme, detailed hardware accuracy comes at its own pace.
A) As of 1.2, support for DMG and GBC games is very high. Only a few dozen games on each system still
exhibit graphical or music errors or freezes. The vast majority will play without issue as the DMG/GBC core is
quite mature at this point.
The situation on the GBA is better than 1.0. Most games will play fine, notwithstanding the occasional non-
game-breaking graphical glitch. The GBA core still needs more work done to it, especially with regards to
speed. Overall, the core itself is stable and acceptable to play many games from start to finish, but GBE+
probably won’t replace your default GBA emulator any time soon.
The NDS core is just a baby. It only runs homebrew at the moment and needs much more work.
8 FAQ GB Enhanced+ Manual - 58
Q) Will Custom Graphics (CGFX) come to other systems supported by GBE+?
A) Yes. The current plan is to rewrite most of the GBA LCD rendering code to be faster, and then attempt to do
CGFX on the GBA. In the future, GBE+ aims to emulate the NDS as well. CGFX should be applicable to the
NDS as well, at least for the 2D LCD engine (which is strikingly similar in many ways to the GBA). Having
said that, getting CGFX running on the GBA core will not be an easy task and is going to take some time.
A) When it’s done, and not a moment sooner. April 1st of every year.
Q) Why are there so many .dll files in the GBE+ 1.2 download?
A) I have not yet found a good way to get mingw and CMake to statically link some libraries. This is necessary
to reduce the number of .dll files (since that code will be put into the .exe files instead).
A) This is a known issue with various driver reports input from the controller to SDL. On Linux, the DS3 seems
to indicate that everything is pressed instead of an individual joystick or button. For those curious, this affects
other emulators such as PPSSPP. It’s something either SDL or the driver will have to fix.
A) Possibly in the future, yes, but at this time there’s no need to rush to Vulkan. GBE+ currently only uses
OpenGL to draw a single texture on-screen, and optionally add some shaders. Vulkan won’t improve much in
that regard. Vulkan would be a good candidate once a 3D hardware renderer for the NDS core is implemented,
but that is probably years and years down the road.
A) lol, no.
8.2 GBE+ Road Map GB Enhanced+ Manual - 59
bunnei (from the Citra dev team) - For being something of a mentor, colleague, and in general a cool guy.
byuu (higan author) - For bringing up several interesting edge cases about GB emulation.
CaptainCaffeine (chroma author) - Fixes for the GUI debugger + helpful tips on DMG bugs.
endrift (mGBA author) - General contributions to getting accurate GB and GBA emulation.
exophase (Drastic author) - For being encouraging + helping me with the GBA VBlankIntrWait SWI.
gekkio (mooneye-gb author) - General contributions to getting accurate GB emulation, MBC1M emulation.
GregoryMcGregerson - For being an awesome tester! Some CGFX stuff would still be broken if not for him.
/r/emulation and /r/emudev - The defacto emulation and emudev communities. ‘Nuff said.