---
name: "mgba"
section: "6"
platform: "linux"
package: "mgba-sdl"
version: "0.10.5-5"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/mgba"
---

# mgba(6)

Game Boy Advance emulator

## NAME

**mgba** – Game Boy Advance emulator

## SYNOPSIS

**mgba** \[**-123456dfg**\] \[**-b** *biosfile*\] \[**-C** *option*=*value*\] \[**-c** *cheatfile*\] \[**-l** *loglevel*\] \[**-p** *patchfile*\] \[**-s** *n*\] \[**-t** *statefile*\] *file*

## DESCRIPTION

**mgba** is a Game Boy Advance emulator. The options are as follows:

- **-1**

  Scale the window 1×.

- **-2**

  Scale the window 2×.

- **-3**

  Scale the window 3×.

- **-4**

  Scale the window 4×.

- **-5**

  Scale the window 5×.

- **-6**

  Scale the window 6×.

- **-b** *biosfile*, **--bios** *biosfile*

  Specify a BIOS file to use during boot. If this flag is omitted, **mgba** will use the BIOS specified in the configuration file, or a high‐level emulated BIOS if none is specified.

- **-C** *option*=*value*, **--config** *option*=*value*

  Override the given config *option* with *value*.

- **-c** *cheatfile*, **--cheats** *cheatfile*

  Apply cheat codes from *cheatfile*.

- **-d**

  Start emulating via the command‐line debugger.

- **-f**

  Start the emulator full‐screen.

- **-g**

  Start a [gdb(1)](/gdb/1.md) session. By default the session starts on port 2345.

- **-l** *loglevel*

  Log messages during emulation to stdout. *loglevel* is a bitmask defining which types of messages to log:

  - 1 – fatal errors

  - 2 – errors

  - 4 – warnings

  - 8 – informative messages

  - 16 – debugging messages

  - 32 – stub messages for unimplemented features

  - 64 – in‐game errors

    The default is to log warnings, errors, fatal errors, and status messages.

- **-p** *patchfile*, **--patch** *patchfile*

  Specify a patch file in BPS, IPS, or UPS format.

- **-s** *n*, **--frameskip** *n*

  Skip every *n* frames.

- **-t** *statefile*, **--savestate** *statefile*

  Load initial game state from *statefile*.

## CONTROLS

The default controls are as follows:

- A

  **x**

- B

  **z**

- L

  **a**

- R

  **s**

- Start

  ⟨**Enter**⟩

- Select

  ⟨**Backspace**⟩

- Load state

  **F1**–**F9**

- Save state

  ⟨**Shift**⟩‐**F1**–**F9**

- Frame advance

  ⟨**Ctrl**⟩‐**n**

## DEBUGGER

When **mgba** is run with the **-d** option, the command‐line debugger is enabled. It supports the following commands:

- **b**\[**reak**\] *address*

  - **b**\[**reak**\]**/a** *address*

  - **b**\[**reak**\]**/t** *address*

  Set a breakpoint – ARM (‘/a’), Thumb (‘/t’), or the current CPU mode – at *address*.

- **c**\[**ontinue**\]

  Continue execution.

- **d**\[**elete**\] *address*

  Delete a breakpoint at *address*.

- **dis**\[**asm**\] \[*address* \[*count*\]\]

  - **dis**\[**asm**\]**/a** \[*address* \[*count*\]\]

  - **dis**\[**asm**\]**/t** \[*address* \[*count*\]\]

  - **dis**\[**assemble**\] \[*address* \[*count*\]\]

  - **dis**\[**assemble**\]**/a** \[*address* \[*count*\]\]

  - **dis**\[**assemble**\]**/t** \[*address* \[*count*\]\]

  Disassemble *count* instructions starting at *address*, as ARM (‘/a’), Thumb (‘/t’), or the current CPU mode. If *count* is not specified, only disassemble the instruction at *address*. If *address* is not specified, only disassemble the current address.

- **h**\[**elp**\]

  Print help.

- **i**\[**nfo**\]

  - **status**

  Print the current contents of general‐purpose registers and the current program state register, and disassemble the current instruction.

- **n**\[**ext**\]

  Execute the next instruction.

- **p**\[**rint**\] *value* *...*

  - **p**\[**rint**\]**/t** *value* *...*

  - **p**\[**rint**\]**/x** *value* *...*

  Print one or more *value*s as binary (‘/t’), hexadecimal (‘/x’), or decimal.

- **q**\[**uit**\]

  Quit the emulator.

- **reset**

  Reset the emulation.

- **r/1** *address*

  - **r/2** *address*

  - **r/4** *address*

  Read a byte (‘/1’), halfword (‘/2’), or word (‘/4’) from *address*.

- **w**\[**atch**\] *address*

  Set a watchpoint at *address*.

- **w/1** *address* *data*

  - **w/2** *address* *data*

  - **w/4** *address* *data*

  Write *data* as a byte (‘/1’), halfword (‘/2’), or word (‘/4’) to *address*.

- **w/r** *register* *data*

  Write *data* as a word to *register*.

- **x/1** *address* \[*count*\]

  - **x/2** *address* \[*count*\]

  - **x/4** *address* \[*count*\]

  Examine *count* bytes (‘/1’), halfwords (‘/2’), or words (‘/4’) from *address*. If *count* is not specified, examine 16 bytes, 8 halfwords, or 4 words.

## ENVIRONMENT

- XDG\_CONFIG\_HOME

  The location where **mgba** will look for the configuration directory. If not set, *~/.config* is used.

## FILES

- *$XDG\_CONFIG\_HOME/mgba/config.ini*

  Default **mgba** configuration file.

- *portable.ini*

  If this file exists in the current directory, **mgba** will read *config.ini* from the current directory instead of *$XDG\_CONFIG\_HOME/mgba*.

## AUTHORS

Jeffrey Pfau ⟨*jeffrey@endrift.com*⟩

## HOMEPAGE

- *mGBA homepage:* **https://mgba.io/**

- *Development repository:* **https://github.com/mgba-emu/mgba**

- *Bug tracker:* **https://github.com/mgba-emu/mgba/issues**

- *Message board:* **https://forums.mgba.io/**
