github.com/dborth/dosbox-wii — GPL licensed
DOSBox Wii is a DOS emulator for the Nintendo Wii and Wii U. It is DOSBox (SVN r4301, with a PowerPC dynamic recompiler) running on the shared libgui UI and driver framework, with a Home menu for settings, controllers, drives and games.
DOSBox Wii is homebrew — it isn't signed by Nintendo, so your console needs to be set up to run unsigned code first. If you haven't done that yet, jump to Installation; it links to a step-by-step guide for each console.
- Nightly Builds
- Features
- Installation
- First Run
- Files, Drives & dosbox.conf
- The Home Menu
- Controls
- Performance
- Memory
- Troubleshooting
- Known Limitations
- Building from Source
- Credits
- Links
📜 Looking for version notes? They're in the CHANGELOG.md.
Every push builds automatically. Grab the latest continuous-integration build:
| Platform | Status | Download |
|---|---|---|
| Wii | ||
| Wii U |
The Wii build also runs unmodified in vWii (the Wii U's built-in Wii-compatibility mode), including via VC-style injection for GamePad support. The Wii U build is a separate, native Wii U (Aroma) application — see Wii U below for how the three options compare.
- DOSBox SVN r4301 core with the PowerPC dynamic recompiler (see Performance)
- A Home menu you can open at any time (Home, or L + R + Plus, or a tap of a keyboard's Windows key): speed, frameskip, aspect and filter at a glance, plus settings pages for Performance, Video, Audio, Keyboard & Mouse and the DOS joystick, and an All settings editor for the rest
- A Status page showing what DOSBox is configured to and what is in effect (running CPU core and whether the dynarec is active, cycles, screen mode, audio output, mounted drives, loaded config file), with anything not at DOSBox's default marked
- Controller setup with a drawing of each controller, live highlighting of the buttons you press, a chooser for keys, joystick buttons, mouse buttons and DOSBox functions, and five built-in presets for common kinds of DOS game
- Games: save a game's controls, settings and startup under a name, then switch to it from the menu without leaving the app. Games you've put on the card by hand are found too
- Wiimote, Wiimote + Nunchuk, Classic Controller and Wii U Pro Controller support, the GameCube Controller on the Wii build, and the Wii U GamePad: full touch and buttons on the native Wii U build, buttons and sticks (no touch) on vWii via VC-style injection
- USB keyboard and mouse, the Wiimote pointer as a mouse, and an on-screen keyboard
- Video output adjustments: original (4:3) or uncorrected (square-pixel) aspect, fit / integer / fill sizing, sharp / bilinear / nearest filtering, scanlines, zoom and shift, and a widescreen setting on the Wii
- Mounts SD cards and USB drives as DOS drives from a Drives screen in the menu, which also picks up drives plugged in or removed while it is open
- Saves your settings back to
dosbox.conffrom the menu (Settings → Save), keeping the previous version asdosbox.conf.bak - Open source
DOSBox Wii keeps its files, and your DOS games, in a folder named DOSBox. When it starts it looks at the SD card, then USB drives 1, 2 and 3, in that order, and uses the first one that already has a DOSBox folder (capital letters don't matter on FAT). If none has one, it creates DOSBox on the first device that lets it. Where the app was launched from makes no difference.
- On the Wii, a
DOSBoxfolder on a USB drive is used in preference to an SD card that has none. - On the Wii U, USB drives are not mounted yet when this check runs (they are mounted from the Drives screen), so the folder is always on the SD card.
Format your SD card and USB drives as FAT32. It is what the Wii build recommends and the one this guide assumes (the Wii U build can also read exFAT and NTFS USB drives).
DOS sees the DOSBox folder as drive C:, so put your games inside it. Everything else in the folder is made by DOSBox Wii as it is needed (see Other files):
<device>/DOSBox/ ← drive C:
├── dosbox.conf ← first run, when no config file is found
├── dosbox.conf.bak ← after Settings → Save over an existing file
├── mapper.map ← after you change a controller button
├── Games/ ← after you save a game or add one found on the card
├── capture/ ← after a wave recording (Ctrl+F6, USB keyboard)
└── ... ← your DOS games and files
<device> is sd: on the Wii and the SD card's root (/vol/external01/) on the Wii U.
- Follow the Wii Homebrew Guide if you haven't already installed the Homebrew Channel. This is a one-time setup per console.
- Download the Wii build (
DOSBox-Wii.zipabove) and extract it to the root of your SD card. The zip holds:apps/dosbox-wii/—boot.dol(the program),icon.pngandmeta.xml(the name, icon and description the Homebrew Channel shows).DOSBox/— an empty folder for your games. (DOSBox Wii makes it itself on first run if it isn't there; see above.)
- Copy your DOS games into
DOSBox/. - Insert the SD card, open the Homebrew Channel, and launch DOSBox Wii.
SD:/
├── apps/
│ └── dosbox-wii/
│ ├── boot.dol
│ ├── icon.png
│ └── meta.xml
└── DOSBox/
└── ...
The app is the single boot.dol; its font, language text and images are built into it.
When it starts, the Wii build looks at the IOS it is running on. If that isn't IOS 58 or 61, and the loader's preferred IOS is one of those, it reloads into it. This mostly matters when you launch it another way, such as a forwarder channel set to a different IOS. USB drives also work on other IOS versions, but IOS 58 has the best compatibility.
Running it in vWii: see Wii U.
To start, a USB keyboard or any supported controller will do. DOSBox Wii opens at the DOS prompt, and the menu opens with Home (or L + R + Plus) and has an on-screen keyboard; see Controls for the controllers and their buttons.
Wii U support comes in three genuinely different forms. Pick the one that matches what you've set up on your console:
| vWii (Homebrew Channel) | vWii (VC-style injection) | Native Wii U build | |
|---|---|---|---|
| What it is | The regular Wii build, run inside vWii | The same Wii build, launched as its own injected Virtual-Console-style channel | A dedicated Wii U (Aroma) app, .wuhb |
| Requires | Homebrew Channel inside vWii | Homebrew Channel inside vWii, plus a channel built with TeconMoon's WiiVC Injector Mod | Aroma (Wii U homebrew environment) |
| GamePad | Not usable | Usable as player 1 (buttons and sticks; no touch) | Full support: touch, buttons |
| Which download | DOSBox-Wii.zip (Wii build) |
DOSBox-Wii.zip (Wii build) |
DOSBox-WiiU.zip |
If you're not sure which you want: the native build is the strongest experience on a console with Aroma installed, with full GamePad support including the touch screen. VC injection is the best you'll get out of vWii itself (a usable GamePad), and plain Homebrew Channel vWii is the simplest but weakest of the three.
- Follow the Wii U Homebrew Guide to install Aroma if you haven't already. One-time setup per console.
- Download the Wii U build (
DOSBox-WiiU.zipabove) and copydosbox-wiiu.wuhbtowiiu/apps/on your SD card, alongside your other Aroma apps. - Insert the SD card and turn on your Wii U. With Aroma installed, DOSBox Wii U shows up as its own icon directly on the Wii U Menu, right alongside your other software.
SD:/
├── wiiu/
│ └── apps/
│ └── dosbox-wiiu.wuhb
└── DOSBox/
└── ...
The zip does not contain a DOSBox/ folder. DOSBox Wii creates it at the SD card root on first run, or you can make it yourself and fill it first.
⚠️ Run the latest Aroma. This app is only tested against, and only intended to work on, whatever the current Aroma release is at the time you're reading this. We can't promise it'll behave, or even boot, on an old Aroma build or an outdated Wii U system version. If something looks wrong, updating Aroma first is the right move before reporting it.
You need an SD card in the console. USB drives are not mounted when DOSBox Wii starts, so the DOSBox folder, your config and your games are on the SD card. USB drives are for extra DOS drives, mounted from Settings → Drives (see Mounting other drives).
Recommended companions, installed through the same Wii U Homebrew Guide:
- Mocha: an Aroma component that gives the console access to USB storage (FAT32, exFAT and NTFS). Without it, USB drives are not available at all (they won't show on Settings → Drives); the SD card works either way.
- Bloopair: lets you pair non-Nintendo Bluetooth controllers (Switch Pro Controller, Joy-Con, DualShock/DualSense, Xbox controllers and others) to your Wii U as if they were a Wii U Pro Controller. Handy if you don't have a GamePad or Pro Controller. It works at the system level within the native Wii U environment and doesn't apply inside vWii.
- Follow the Wii Homebrew Guide to install the Homebrew Channel in vWii. The process runs from inside the Wii U's Wii mode and is otherwise the same as on a standalone Wii.
- Follow the Wii instructions above exactly, using the same SD card. The vWii build is the Wii build. SD cards and USB drives work in vWii as on a Wii.
- Boot into vWii on your Wii U (from the Wii U Menu) and launch it from the Homebrew Channel, same as on Wii.
This is the simplest Wii U path, but also the most limited: no GamePad support. For a GamePad without going all the way to the native build, see VC-style injection below.
Rather than launching DOSBox Wii from the Homebrew Channel every time, you can package it as its own injected channel using TeconMoon's WiiVC Injector Mod. This installs it as a Virtual-Console-style title in your vWii NAND rather than something launched through the Homebrew Channel, which is what lets you use the Wii U GamePad for display (without touch) and as player 1.
At a high level:
- Install the Homebrew Channel in vWii first (see above). You'll still want it for updates and other homebrew.
- Download and run TeconMoon's WiiVC Injector Mod on a PC, and choose Wii Homebrew Injection (DOL) as the injection type.
- Point it at DOSBox Wii's
boot.dol(from the Wii build), and pick one of the available GamePad Emulation modes so the injector configures GamePad input for the resulting channel. - Build the injected package and install it to your Wii U's vWii NAND with the tool of your choice (the injector's own documentation covers this step, since it depends on your existing vWii setup).
- Keep the
DOSBox/folder on your SD card exactly as described above. The injected channel reads from the SD card the same way the Homebrew Channel version does.
Consult the injector's own documentation for anything version-specific: it is third-party software this README doesn't track closely.
DOSBox Wii starts like this, in order:
- The console is set up: video, audio, controllers and storage.
- It finds the
DOSBoxfolder (see above), making one if none exists. - It reads a config file (see Where DOSBox looks for dosbox.conf). If it finds none, it writes a default
dosbox.confinto theDOSBoxfolder and reads that. - It mounts the
DOSBoxfolder as drive C:. - DOSBox starts. There is no splash screen or menu first: the first thing on screen is DOSBox's own welcome banner, then any
[autoexec]commands, then the DOS prompt (Z:\>).
So the second launch looks like the first, except that the dosbox.conf it reads is the one the first launch wrote.
To get to your games:
C:
cd mygame
game.exe
If no storage device has a DOSBox folder or lets DOSBox Wii create one, DOSBox still starts, on its built-in settings, with no drive C:. Nothing is shown when it starts; open Status (see Status): Config file reads None (defaults) and Drives reads None mounted.
Open the Home menu at any time (press Home) to change settings, set up your controller, or exit.
Drive C: is always the DOSBox folder found at startup (see above). It is mounted just before DOS starts, as a read-write hard disk. Whatever the card's real size, DOS reports about 1 GB in total with about 250 MB free, and the volume label is C_DRIVE. If there is no DOSBox folder, there is no C:.
Drive Z: is DOSBox's own virtual drive, as on a PC.
Because C: exists before [autoexec] runs, an [autoexec] that mounts something else on c has to free the letter first: mount -u c.
Nothing else is mounted for you. There are two ways to add a drive.
The screen has one row for each storage device, then a last row, DOS drives, listing every DOS drive and where it comes from (read-only; its help line scrolls).
| Console | Rows |
|---|---|
| Wii | Always four: SD Card, USB Mass Storage, USB Mass Storage 2, USB Mass Storage 3 |
| Wii U | SD Card always; USB Storage 1, 2, 3 only while that drive is mounted |
What a row's value says, and what A does:
| Value | Meaning | A |
|---|---|---|
Not available |
Nothing readable is in that slot (on the Wii, this includes a drive in a format it can't mount) | Says "That drive is not available." |
Not mounted |
The console can read it, and it isn't a DOS drive yet | Mounts it on the first free letter from D to Y, using the volume label (or D_DRIVE, E_DRIVE... if it has none) |
D: label |
Mounted as a DOS drive from this screen | Unmounts it. Only at the DOS prompt |
A mounted row is the whole device, not the DOSBox folder: with the SD card on D:, your games are in D:\DOSBox\. You can mount while a program is running; you can't unmount then. A device is not ejected by unmounting it: only the DOS drive goes.
If A can't do it, a message says why:
| Message | Cause |
|---|---|
| That drive is not available. | The row's value is Not available |
| Unmount at the DOS prompt, not while a program is running. | Unmounting needs the DOS prompt |
| Could not unmount the drive. | DOS refused to remove the drive |
| Too many drives are mounted. | Eight drives mounted from this screen already |
| No drive letter is free. | D to Y are all in use |
| Could not mount the drive. | DOS refused to mount it |
Hot-plug works only while this screen is open. A background check runs about once a second while it is up (the rows refresh about twice a second), and at no other time. So:
- On the Wii, SD and USB drives that are present at launch are already readable. A drive plugged in later becomes readable, and appears here, once you open this screen.
- On the Wii U, USB drives are never mounted until this screen is open, including drives plugged in before launch. Open it and wait a moment for the row to appear.
- When a device is removed, a DOS drive that this screen mounted from it is taken away, but only while the screen is open and DOS is at the prompt. Otherwise it stays until you next open the screen at the prompt.
Drives you mount with MOUNT aren't tracked here: their row still says Not mounted, and pressing A would mount the same device again on another letter.
MOUNT takes any folder the console can open, so use the device's prefix. The device has to be readable first (see above):
| Device | Wii | Wii U |
|---|---|---|
| SD card | sd:/ |
/vol/external01/ (no sd: prefix) |
| USB drive 1 | usb:/ |
usb1:/ |
| USB drive 2 | usb2:/ |
usb2:/ |
| USB drive 3 | usb3:/ |
usb3:/ |
mount e usb:/
e:
dir
A subfolder works too (mount e usb:/games), and mount -u e removes the drive again. A folder that doesn't exist gives Directory ... doesn't exist. DOSBox Wii has no way to connect a network share or read a disc, so dvd:/ and smb:/ are never there to mount.
Normally one file is read, the first of these that exists:
dosbox.confin the program's working directory. DOSBox Wii doesn't set the working directory itself, so which folder this is depends on the launcher.dosbox.confin theDOSBoxfolder (for examplesd:/DOSBox/dosbox.conf).
If neither exists, the default file described below is written to the DOSBox folder and read. DOSBox also understands command-line options such as -conf, but neither launcher entry in this repository passes any. To be safe, keep one dosbox.conf, in the DOSBox folder.
Restart and game configs. CONFIG -r at the DOS prompt restarts DOSBox with the options it started with, or with the ones you add. CONFIG -r -gameconf name.conf reads name.conf after the base config, so it only has to hold what differs and its values win. It is looked up as given, then in the DOSBox folder. The home screen's Restart keeps the game config, and CONFIG -r -nogameconf drops it. The Games screen chooses one from the menu; see Games.
Whichever file was read is the one Settings → Save writes back to, with the previous version kept as dosbox.conf.bak (see Saving).
Paths inside a config file that start with a device prefix (sd:/..., usb:/...) are used as written. Any other path, including a Wii U SD path starting /vol/external01/, is taken as relative to the folder of the config file. On the Wii U, write a bare file name for mapperfile.
The default file holds every setting DOSBox Wii has, each with DOSBox's own comment above it, in this order:
| Section | What it holds |
|---|---|
[sdl] |
Mouse speed and the mapper file (below) |
[display] |
Video output (below) |
[dosbox] |
language, machine (default svga_s3), captures, memsize (default 16 MB; the Wii takes at most 16, the Wii U up to 63) |
[render] |
frameskip |
[cpu] |
CPU core, type and cycles |
[mixer] |
Mixer options |
[sblaster], [gus], [speaker] |
Sound Blaster and OPL, Gravis Ultrasound, PC speaker, Tandy and Disney |
[joystick] |
DOS joystick options |
[dos] |
xms, ems, umb, keyboardlayout |
[autoexec] |
Commands run at startup |
This build has no [midi], [serial], [ipx], [pci] or [debug] section.
A conf from a PC build of DOSBox still loads. A section or setting this build doesn't have is ignored without a message: the line is read, matches nothing, and is dropped the next time you Save. (The lines under an unknown section header are read as part of the section above it, where a setting name that section doesn't have is ignored too.) A number outside its range is set to the nearest limit; a text value that isn't one of the listed choices falls back to the default.
[display]: how the picture is drawn. These apply at once when changed from the menu, and are read at startup from the file.
| Setting | Values | Default |
|---|---|---|
fit |
fit (as large as fits, keeping its shape), integer (the largest whole-number multiple), fill (stretched over the screen) |
fit |
aspect |
corrected (shape of a real monitor: 320x200 fills a 4:3 screen), square |
corrected |
filter |
sharp, bilinear, nearest |
bilinear |
scanlines |
0 to 100 (percent; 0 is off) | 0 |
zoomx, zoomy |
50 to 200 (percent of normal size; used by fit and fill) |
100 |
shiftx, shifty |
-100 to 100 (units of 1/640 of the screen width, and 1/480 of its height; negative is left or up) | 0 |
widescreen |
auto (follow the console's setting), 4x3, 16x9 |
auto |
widescreen has an effect on the Wii only, and scanlines only in 480-line modes on the Wii; see Wii and Wii U.
[sdl]
| Setting | Meaning | Default |
|---|---|---|
sensitivity |
Mouse speed in percent: x,y, each -1000 to 1000 (for example 100,-50; the second number is the vertical speed and is optional) |
100 |
mapperfile |
The file the controller buttons are saved in. Read once at startup | mapper.map |
autolock |
Ignored. The mouse is always captured | true |
[render] has frameskip only (0 to 10, default 0). An old scaler, forced or aspect line in [render] is ignored; the aspect setting is now [display] aspect.
Everything else in [cpu], [sblaster], [dos] and the other sections is standard DOSBox r4301: see the comments in the file.
| File or folder | Where | Made when |
|---|---|---|
dosbox.conf |
DOSBox folder |
First launch with no config file found |
dosbox.conf.bak |
Beside the config file | Settings → Save over an existing file. Each save replaces the older .bak, so it is always the version before the last save |
dosbox.conf.tmp |
Beside the config file | During a save, and removed when it finishes. It is left behind only if a save was cut short, and removed by the next save |
mapper.map |
Folder of the config file | You change a controller button |
Games/ (name.conf, name.map) |
DOSBox folder |
The first time you save a game or add one found on the card |
capture/ |
Folder of the config file ([dosbox] captures) |
The first wave recording (Ctrl+F6 on a USB keyboard) or raw capture. Screenshots are not built into this build |
To start a game automatically and quit when it ends, use [autoexec]:
[autoexec]
C:
cd games\sc2000
sc2000.exe
exit
The Home menu is a full-screen overlay on the running game. While it is up DOSBox is stopped, the last picture is dimmed behind it, and the game's sound is replaced by the menu's; when you close it DOSBox carries on where it left off. It can only be opened once DOSBox is running.
Any of the four players can open it, from any of these:
| Input | Notes |
|---|---|
| Home on a Wiimote, Classic Controller, Wii U Pro Controller or Wii U GamePad | Opens the menu. A GameCube controller has no Home button |
| L + R + Plus, all three held on one device | Start on a GameCube controller. Works on a GameCube controller, Classic Controller, Wii U Pro Controller and GamePad. The three buttons must be on the same device: a Wiimote with a Nunchuk cannot make the combo (the Wiimote has no L or R, and the Nunchuk has only C, which counts as L), so use Home there. On a Classic Controller on the Wii build, L and R count when pressed fully down |
| Tap a GUI key (Windows / Super / Command, left or right) on a USB keyboard | Press and release it with no other key pressed in between. GUI + another key does not count. DOS never sees the key. Ignored while the Wii U GamePad keyboard is open |
Nothing else opens it. (On the Wii U GamePad the TV button opens an on-screen keyboard on the GamePad screen, not the menu; see Wii and Wii U.)
| Action | What it does |
|---|---|
| Resume (top right) | Slides the menu away and returns to the game. Any key, mouse button or joystick button your controller buttons were holding is let go, and a button still held does nothing until you release it |
| Home, on any controller | The same as Resume, on the home screen only. Inside Settings, Status, Games, the controller screens or a popover, Home does nothing: go Back first. There is no Home on a GameCube controller, so use Resume |
| B (or Back) | On Settings, Status, Drives and the pages under them, goes up one level. On the home screen it does nothing |
| L + R + Plus, GUI key | Open the menu, but do not close it |
| Keyboard tile | After OK with some text typed, the menu closes and the text is typed into DOS. Cancel, or an empty box, stays in the menu |
| Exit (bottom left) | Fades out and leaves DOSBox at once. There is no confirmation and nothing is saved (see Saving). Wii: returns to the Homebrew Channel (or whatever launched it), or turns the console off if a power-off was requested. Wii U: returns to the Wii U Menu |
| Restart (beside Exit) | Closes DOSBox and starts it again from the config file, as if you had launched it again, without going back to the launcher. Whatever is running is lost. Settings you changed but did not Save are lost too, and settings DOSBox reads only at startup ((next launch)) now take effect. A game config, whether chosen in Games or given with CONFIG -r -gameconf (see Where DOSBox looks for dosbox.conf), is kept |
| Power button / system shutdown request | Honoured whether the menu is open or not, and ends DOSBox the same way as Exit |
exit at the DOS prompt, Ctrl+F9 on a USB keyboard |
Also end DOSBox, without the menu. Ctrl+F9 is DOSBox's shutdown hotkey and is not offered for controller buttons |
The top bar says what is running. A Game card runs across the top. Under it the left card holds four quick settings and the right card the controllers and three tiles, and the bottom bar has Exit, a line saying what the highlighted thing does, and Credits.
| Control | What it does |
|---|---|
| Program (top, next to the logo) | The DOS program running now, by its file name as DOS recorded it when it started (for example KEEN4E.EXE), or DOS prompt |
| Game (under it) | Game: name, the file name of the game config DOSBox was started with, or No game. It follows a restart into a game and CONFIG -r -gameconf; see Games |
| Resume | Back to the game |
Speed − value + |
The running CPU speed, changed at once. The line under it names the core that is running (Dynamic core, Normal core or Full core; CPU speed if that cannot be told). Details below |
Frameskip − value + |
The number of frames skipped, 0 to 10, one per press; it stops at both ends. More skipping makes heavy games faster but choppier |
Aspect Corrected Square |
Sets Settings → Video → Aspect. Corrected draws the picture in the shape a monitor gave it (320x200 fills a 4:3 screen); Square keeps every pixel square |
Filter Sharp Smooth |
Sets Settings → Video → Filter: Sharp writes sharp, Smooth writes bilinear. Sharp also shows as lit when the filter is nearest; that third value can only be chosen on the Video page |
| Controllers card | Four slots, P1 to P4, each with an icon for the device and a battery gauge (four bars; a GameCube controller shows none; every Wiimote-based controller shows its Wiimote's charge). Press a connected slot to set up that player. An empty slot is dimmed and cannot be selected. Configure opens controller setup (the first connected player). Under a rule: the Wii U GamePad (icon and battery; only on the Wii U build, and only if it was present when the menu opened), a keyboard icon and a mouse icon, lit while a USB keyboard / mouse is connected. These three are for display only. See Controls |
| Keyboard tile | An on-screen keyboard with an Enter key. The text is typed into DOS, as a US keyboard, after the menu closes; characters with no key on a US keyboard are skipped, and the box holds at most 255 characters at a time |
| Settings tile | The settings pages; see Settings |
| Status tile | What DOSBox is set to and doing; see Status |
| Game card | The game DOSBox was started with, or Plain DOSBox. Games opens the list of games to load, and Save (Save as game at the plain prompt) saves what is running. What a save did is shown on the bottom line. See Games |
| Exit / Credits | Quit DOSBox / who made this, with this console's details, the free memory, and JIT: Enabled when the dynamic core is the one running (Disabled for another core, Unknown if that cannot be told). Any button closes the credits |
Speed is a share of the console while DOSBox is in max mode, or in auto mode once a game has taken it there, and is shown as a percentage (100%). Otherwise it is a number of cycles. − and + work like this:
| Mode | Each press |
|---|---|
| Percentage (max) | 5 points down or up, from 1% to 105% |
| Cycles (fixed) | Uses Settings → Performance → Cycle step down / up. A step below 100 is a percentage (up multiplies by 1 + step/100, down divides by it); 100 or more is a number of cycles |
Speed and Frameskip change the running values, and the same numbers are copied into the configuration when the menu opens and after each press, so the Settings pages show them and Save writes them (a speed in auto mode is not copied: the setting stays auto). Aspect and Filter are the Video page's own rows, not copies.
Settings lists the pages below. A opens a page and B or Back returns. Save (next to Back) is on this list only; see Saving.
| Page | What is on it |
|---|---|
| Performance | CPU core, CPU type, cycles mode and amount, cycle step up / down, frameskip |
| Video | Aspect, fit, filter, scanlines, zoom width / height, shift X / Y, widescreen |
| Audio | Output (read-only), Sound Blaster, OPL mode and rate, PC speaker, Tandy, Disney, Gravis Ultrasound |
| Keyboard & Mouse | Mouse speed X and Y |
| DOS joystick | Joystick type, button wrap, dead zone, autofire, circular input, swap axes 3 and 4, timed axes |
| Drives | Mount and unmount SD and USB drives; see Mounting other drives |
| All settings | One page for each DOSBox config section, covering the rest |
On a page, A moves the highlighted row to its next value (wrapping round), and Left / Right step it back and forth. A change is applied to DOSBox at once. The line at the bottom shows the help for the highlighted row.
Each row is one of two kinds, and says so in its value:
| Kind | Behaviour |
|---|---|
| Live | Changes at any time the menu is open |
| DOS prompt only | Re-starts that piece of emulated hardware, so it works only when DOSBox is at the DOS prompt and not inside a program. Otherwise the value ends in (DOS prompt only), the row does not move, and its help starts with "Only available at the DOS prompt." |
Other endings you may see on a value:
| Ending | Meaning |
|---|---|
| (not used) | The row has no effect at the moment: the zoom rows with Fit set to integer, and the DOS joystick rows (all but the type) while the joystick type is none |
| (next launch) | DOSBox only reads it at startup; the row cannot be changed from the menu. Edit dosbox.conf, then press Restart (or run CONFIG -r) |
| (edit dosbox.conf), (Performance page), (Keyboard & Mouse page) | Cannot be changed on an All settings page (free text, paths, and two-part values); the words say where, or how |
| (unavailable) | A DOS memory row that cannot be changed safely right now; the help line says why |
| (not available here) | An All settings row for something this console cannot do (the Wii U has no Widescreen setting) |
name in brackets after the value, e.g. auto (4axis) |
What the setting comes to in effect, when that is something else (only on Joystick type) |
| Row | Values | When |
|---|---|---|
| CPU core | auto, dynamic, normal |
DOS prompt only |
| CPU type | auto, 386, 386_slow, 486_slow, pentium_slow |
Live |
| Cycles mode | Auto, Fixed, Max. Changing to Fixed starts from the cycle count now running, or 3000 if the speed is a percentage | Live |
| Cycles amount | Fixed: 500, 1000, 2000, 3000, 4000, 5000, 6000, 8000, 10000, 12000, 15000, 20000, 25000, 30000, 40000, 50000 cycles. Max: 10% to 100% in tens. Auto: - (no amount) |
Live |
| Cycle step up / down | 5, 10, 20, 25, 50, 100, 250, 500, 1000, 2000, 5000 (below 100 is a percentage, otherwise cycles). Used by the home screen's + / − in fixed mode only |
Live |
| Frameskip | 0 to 10. Shows the running value | Live |
Changing any CPU row makes DOSBox read the cycles from the configuration again. Because the running fixed or max speed is copied into the configuration first, it stays as it was; in auto mode the speed goes back to what auto starts from.
These are the [display] settings, read by the picture on its next frame, so every row is live. A row the console cannot honour is left off the page.
| Row | Values | Notes |
|---|---|---|
| Aspect | corrected, square |
Default corrected |
| Fit | fit (as large as fits, keeping the shape), integer (the largest whole-number multiple), fill (stretched over the screen) |
Default fit |
| Filter | sharp, bilinear, nearest |
Default bilinear. sharp keeps pixel centres crisp and blends only the edges |
| Scanlines | 0% (off) to 100%, in tens | Wii U: always shown. Wii: only in a 480-line video mode, not the 240p modes |
| Zoom width / height | 50% to 200%, in fives | Used by fit and fill; (not used) with integer |
| Shift X / Y | −100 to +100, in fives | One unit is 1/640 of the screen width (X) or 1/480 of its height (Y) |
| Widescreen | auto, 4x3, 16x9 |
Wii only. auto follows the console's own aspect-ratio setting, the other two are overrides |
The mixer runs at the audio hardware's own rate. A device set to the same rate is not resampled.
| Row | Values | When |
|---|---|---|
| Output | Read-only: the rate and buffer from the audio driver, e.g. 32000 Hz, 544 frames (17 ms) |
|
| Sound Blaster | sb1, sb2, sbpro1, sbpro2, sb16, gb, none |
DOS prompt only |
| OPL mode | auto, cms, opl2, dualopl2, opl3, opl3gold, none |
DOS prompt only |
| OPL rate | Fast (22050 Hz), Matched (the output rate), Native (49716 Hz, OPL only), each offered only if DOSBox accepts it for that setting | DOS prompt only |
| PC speaker | On, Off | DOS prompt only |
| PC speaker rate | Fast, Matched | DOS prompt only |
| Tandy sound | auto, on, off. on is skipped unless the machine type is tandy or pcjr |
DOS prompt only |
| Tandy rate | Fast, Matched | DOS prompt only |
| Disney | On, Off | DOS prompt only |
| Gravis Ultrasound | On, Off | DOS prompt only |
| GUS rate | Fast, Matched | DOS prompt only |
An sb16 needs a VGA machine type; on any other it runs as an SB Pro 2 (the Status page shows which).
| Row | Values | When |
|---|---|---|
| Mouse speed X / Y | 25%, 50%, 75%, 100%, 125%, 150%, 200%, 250%, 300%, 400%, 500% | Live |
A value outside the list (a negative one, which flips the direction, can only be set in dosbox.conf) steps to the next preset above or below it.
All rows are live. They re-start the emulated joystick and rebuild its button bindings, which changes nothing a running program keeps but the stick's position.
| Row | Values | Notes |
|---|---|---|
| Joystick type | auto, 2axis, 4axis, 4axis_2, fcs, ch, none |
auto is shown as, for example, auto (4axis). Changing it moves any joystick-button binds to the joystick each player now has. The In DOS chip on a controller's setup screen sets the same thing |
| Button wrap | On, Off | Lets controller buttons past the joystick's own buttons share them |
| Dead zone | 0% to 100%, in fives | |
| Autofire | On, Off | |
| Circular input | On, Off | |
| Swap axes 3 and 4 | On, Off | |
| Timed axes | On, Off |
All settings lists one page per DOSBox config section that has something to show, named as below and in this order. Rows are named as in dosbox.conf. A setting that already has a row above is handled by that row.
| Page | What you can change here | Notes |
|---|---|---|
Mouse and mapper ([sdl]) |
Nothing: sensitivity is on the Keyboard & Mouse page and mapperfile is (next launch) |
autolock is not listed (see below) |
Video output ([display]) |
The Video page's rows | |
Machine and memory ([dosbox]) |
Nothing: all (next launch) | Machine type, memory size, language, captures folder |
Rendering ([render]) |
Frameskip | |
| CPU | Core (DOS prompt only), CPU type, cycle step up / down. cycles shows (Performance page) |
|
| Mixer | Nothing: all (next launch) | rate and blocksize are not listed (see below) |
| Sound Blaster, Gravis Ultrasound, PC speaker, Tandy, Disney | Everything with a list of values or on / off. The base port, IRQ and DMA rows are here, DOS prompt only | ultradir is (edit dosbox.conf) |
| Joystick | The DOS joystick page's rows | |
DOS memory and keyboard ([dos]) |
XMS, EMS, UMB, DOS prompt only | keyboardlayout is free text and read-only here: (edit dosbox.conf) |
On numbers, a list of values is stepped in ascending order; a whole-number range of 100 or fewer is stepped by 1 (by 5 above a span of 20). Anything else is read-only.
Save (bottom of the Settings list, not on the pages below it) writes the running configuration, including what you changed in the menu, to disk:
- With a game active it saves that game (its
.confand.map) and leavesdosbox.confalone. Otherwise it writes to the first config file DOSBox loaded, usuallyDOSBox/dosbox.conf. With none loaded it createsdosbox.confin the DOSBox folder. (A file given with-confis saved over if it was loaded first.) - The old file is kept as
dosbox.conf.bak; an earlier.bakis replaced, so only the previous version is kept. The new file is written under a temporary name, checked, and only then swapped in, so a card that fills up does not leave a half-written file. - The whole file is regenerated from DOSBox's own settings, with DOSBox's usual comments. Comments you added by hand are lost (they stay in the
.bak), as is any section this build does not declare.[sdl],[display],[render]and[autoexec]are all written. An oldaspect=line in[render]is not written back, because that setting is now[display] aspect. - The result is on the bottom line:
Saved <path>., withThe file it replaced is kept as dosbox.conf.bak., orNot saved.and the reason. - It does not save controller buttons: those are written to the mapper file as you change them, or saved with a game.
| Setting | Why |
|---|---|
[sdl] autolock |
Ignored on this build: the mouse is always captured. It is hidden on the All settings pages, though a saved file still contains it |
[mixer] rate, blocksize |
The audio driver fixes both. Hidden on the All settings pages |
Everything in [dosbox], [mixer] (nosound, prebuffer) and [sdl] mapperfile |
Read once at startup. Shown as (next launch) and cannot be changed from the menu |
Tandy sound on |
Refused unless the machine type is tandy or pcjr: forcing it on removes the second DMA controller until DOSBox restarts. The row skips the value and the help line says why |
A Sound Blaster or Gravis Ultrasound base port, IRQ or DMA that would clash with the other card (or put the GUS at 2c0, which is the VGA registers, or give an SB16 the same 8- and 16-bit DMA) |
Refused: the row skips that value and the help line says why |
| Any DOS memory row (XMS / EMS / UMB) | Refused while a program is using upper memory, or when DOSBox is nearly out of internal handlers (each change of EMS uses one; the help line says "Edit dosbox.conf and restart") |
| A restart | Restart on the home screen, or CONFIG -r at the DOS prompt, starts DOSBox again and reads the config file again. Save first: what is only in the running machine is lost |
Status lists what each setting is configured to and what is in effect, in six groups. The configured value is what the running configuration holds (your dosbox.conf plus anything you changed in the menu and have not necessarily saved). When the value in effect is something else, it follows in brackets, like auto (dynamic). A * at the end marks a setting that is not at DOSBox's built-in default (not "different from your dosbox.conf"); for the cycles, zoom and shift lines, if any part differs. Press A on any row to read everything again; the page does not update by itself. The group headings are rows too.
| Group | Lines |
|---|---|
| CPU | DOS state (At the DOS prompt or A program is running, which decides whether DOS prompt only rows can change); CPU core (configured, then the core running); Dynarec; CPU type; Cycles (auto, fixed N or max P%, then in brackets what is running: the share of the console and the measured cycles for a percentage mode, or the cycle count) |
| Video | Screen mode (Text or Graphics and the size the emulated card draws, or None yet); Frame to display (the size handed to the display); Picture shape (e.g. 4:3, before it is fitted to the screen); Fit; Aspect; Filter; Scanlines (only where the console can draw them); Zoom; Shift; Widescreen (Wii only); Frameskip (configured, then the running value) |
| Audio | Audio output; Sound Blaster and OPL mode (configured, then what runs: an sb16 on a non-VGA machine shows sb16 (sbpro2)); OPL rate (resampled when it is not the output rate); PC speaker; Tandy sound; Disney; Gravis Ultrasound |
| Memory | Machine; Memory (configured MB, then MB the machine has); XMS; EMS (configured, then true, emsboard, emm386 or false as in effect); UMB |
| Input | One line per connected player: the controller (Wiimote + Nunchuk, GameCube, …) and (Joystick 1), (Joystick 2) or (no joystick), from the joystick type; or None connected. Then Joystick (configured type, then the type in effect: auto shows auto (4axis)) |
| Drives and config | Config file (the first file loaded, with +N for more -conf files; None (defaults) if there was none); one line for each mounted DOS drive, or None mounted |
CPU → Dynarec says Active when the CPU core running now is the dynamic recompiler, Not active when it is any other core, and Unknown when the core cannot be told. It tests only which core is running. On this build core=auto picks the dynamic recompiler at startup, as long as DOSBox could get memory for its code cache; if it could not, DOSBox falls back to the normal core. So Not active with auto or dynamic means there was no memory for the cache; Not active with normal is what you asked for.
A game is a saved way of running one DOS program: its controls, the settings that matter to it, and what to start. You can switch from one game to another without leaving DOSBox Wii, and the controls and settings you saved for a game come back with it.
Under the hood a game is an ordinary DOSBox config file that DOSBox reads after dosbox.conf, so its settings win and dosbox.conf keeps everything else. A game you save from the menu holds the whole running configuration as it was at that moment, plus a .map file with its controller buttons. A game you write by hand can be as small as you like.
The Game card across the top of the home screen shows the game DOSBox was started with: a tile with its first letter, its title, and Runs KEEN4E.EXE under it. At the plain prompt it reads Plain DOSBox and Nothing is saved from this session. Its two buttons are Games (the list, below) and Save (Save as game when no game is active).
Games opens a list with two tabs, Load and Save, which you switch with Left and Right. Rescan (beside Back) reads the card again, for example after you copy a game to it. The list is read in the background when the screen opens, so rows appear when it finishes.
Load is for switching games. A opens a small menu for the highlighted game:
| Choice | What it does |
|---|---|
| Load | Loads the game: DOSBox restarts with that game's config on top of dosbox.conf, then runs its startup. For the game that is already running this reads Restart. Whatever is running is lost, and so are menu changes you didn't save |
| Rename | Changes the name the list shows (the file names stay as they are) |
| Delete | Removes the game's .conf, and its .map if the .conf names one beside it. This cannot be undone. Not offered for the game that is running |
The first row is Plain DOSBox, which loads dosbox.conf alone. The game DOSBox is running is marked RUNNING. Under the games, Found on your card lists folders just below the DOSBox folder that hold an .EXE, .COM or .BAT file and have no game yet. A on one asks you to confirm its name (and which program to run, if it has several), then adds a small game for it: a startup that goes to that folder and runs the program, and nothing else, so it uses your dosbox.conf settings and the default controls.
Save is for keeping what is running. The first row, New game, asks for a name on the on-screen keyboard (it suggests the running program's name without .EXE, or My game), and asks before replacing a game with the same name. Every other row replaces that game with what is running, after a question. The game DOSBox was started with is marked Save here and keeps its own startup lines when it is saved.
With a game running, Save on the home screen, and Save on the Settings list, save that game and leave dosbox.conf alone. At the plain prompt, Save as game on the home screen is the same as New game.
Games are kept in DOSBox/Games/ on the device that holds your DOSBox folder (for example sd:/DOSBox/Games/), made on the first save. Each game is two files:
sd:/DOSBox/Games/
├── Commander Keen 4.conf
└── Commander Keen 4.map
Names are up to 24 characters, without dots, slashes or other characters a file name cannot hold. The .map is written first, then the .conf, and each is swapped in only once it is complete, so a save cut short never leaves a game without its map.
The .conf is the running configuration, written the way Settings → Save writes dosbox.conf, with these differences:
# title=Commander Keen 4
# program=KEEN4E.EXE
[sdl]
mapperfile=Commander Keen 4.map
[joystick]
joysticktype=4axis
... ← every other setting, as it is running
[autoexec]
mount d "sd:/DOSBox/Other" ← only if you had mounted it
cd \GAMES\KEEN4
KEEN4E.EXE
# title=and# program=are comments DOSBox ignores. The title is what the list shows. Without a title the file name is used, and without a program the last line of[autoexec]that runs something is used.mapperfile=is the.mapbeside it, by file name.joysticktype=is what DOS sees, written out even if it wasauto.[autoexec]is built from the drives mounted when you saved and the program running:C:is theDOSBoxfolder, which is always mounted, so it is not repeated; other mounts are written asmountorimgmountlines, then acdand the program. Only the game's own lines are written, not the ones fromdosbox.conf. A drive that can't be written (a disk image, or aC:that is not theDOSBoxfolder) is skipped, and the message after the save says so.
The .map is a copy of DOSBox's whole mapper file at the moment of the save: every event and its binds (keys, hotkeys, joystick buttons and axes, and each player's pad_N lines). It is the same format as mapper.map, so you can copy a game between consoles or edit the .map in a text editor. While a game is running its .map is the live mapper file, so button changes you make in the menu are held in memory and reach the file when you save.
Nothing has to be registered. The list shows every .conf (except dosbox.conf) in the DOSBox folder, in DOSBox/Games/, and in any folder one level below the DOSBox folder, whoever made it. The first lines can say how to show it:
# title=Commander Keen 4
# program=KEEN4E.EXE
[cpu]
cycles=fixed 6000
[autoexec]
cd \GAMES\KEEN4
KEEN4E.EXE
Only what differs from dosbox.conf is needed. Other settings keep their dosbox.conf values, and [autoexec] lines from both files run, dosbox.conf's first, so keep that one to mounts (an exit or a program started there stops the game's lines from ever running). mapperfile= is looked up beside the game's .conf. The list shows at most about 150 rows, and says how many more there are.
You can also restart into a game from the DOS prompt with CONFIG -r -gameconf name.conf (see Where DOSBox looks for dosbox.conf). The game then shows as RUNNING.
| Wii (and vWii) | Wii U (native) | |
|---|---|---|
| Home button | Opens the menu | Opens the menu. DOSBox Wii switches the Wii U's own HOME menu off while it runs, so the system HOME menu cannot be reached from inside it: use Exit |
| GameCube controller | Yes: L + R + Start opens the menu | Not supported |
| Wii U GamePad | Only through VC-style injection: player 1, buttons and sticks, no touch | Yes. Shown under the player slots with its battery, if present when the menu opened |
| TV button on the GamePad | Nothing | Opens and closes the Wii U's on-screen keyboard on the GamePad screen; what you type goes into DOS. The TV keeps showing the game. (The home screen's Keyboard tile works on both) |
| Video: Scanlines | Only in 480-line video modes | Always |
| Video: Widescreen | Yes | No (each screen's shape is known) |
| Exit | To the Homebrew Channel / launcher, or the console off | To the Wii U Menu |
| Everything else on this page | The same | The same |
DOSBox Wii separates two things:
- The physical controller you hold. The console has four controller slots, and each connected slot is a player (Player 1 to 4). The console decides which controller lands in which slot.
- What DOS sees. A joystick (or two), or nothing, on the gamepad port. A USB keyboard and mouse are always available to DOS, and you cannot switch them off.
Every control on a controller can be given one target: a keyboard key, a DOS joystick button, a mouse button, a DOSBox function, or nothing. Buttons are set per player, and a preset gives you a starting point for a kind of game.
| Device | Wii build | Wii U build |
|---|---|---|
| Wiimote, Wiimote + Nunchuk | Yes | Yes |
| Classic Controller | Yes | Yes |
| Wii U Pro Controller | Yes | Yes |
| GameCube Controller | Yes | No (the Wii U input driver has no GameCube support) |
| Wii U GamePad | Only through VC-style injection: player 1, buttons and sticks, no touch | Yes (buttons, sticks, touch screen) |
| USB keyboard, USB mouse | Yes | Yes |
A player can hold more than one device. A Wiimote with a Nunchuk or Classic attached counts as one device. A GameCube controller on the same slot is a second device, and the Wii U GamePad always shares Player 1 with whatever is on slot 1. The setup screen shows a column of device icons so you can choose which one to look at. Everything held on a slot is merged into that one player, and the player has one set of bindings.
Open Controllers on the home screen. Configure opens the setup screen, and a player's icon in the strip opens that player. The setup screen has:
- Player N, with what DOS does with that player ("Joystick 1", or "Keys + mouse") underneath. Arrows to switch players appear when two or more controllers are connected.
- A drawing of the controller with a row for each control. Each row shows what that control does now ("Key: Ctrl", "Joystick 2", "Mouse left", "DOS: Cycles up"), or why it does nothing ("Joystick off", "No button 3"). Controls light up on the drawing as you press them on the real controller.
- A PRESET chip (this player) and an IN DOS chip (the whole game) at the top.
- Back at the bottom. To keep your buttons for a game, save it from the home screen; see Games.
Press A on a row to change what that control does. Changes apply at once and are written to the mapper file ([sdl] mapperfile, mapper.map by default).
| Mode | joysticktype |
What it gives you |
|---|---|---|
| Joystick | 4axis |
One joystick with four buttons, for player 1 |
| Two joysticks | 2axis |
Players 1 and 2 each get a joystick with two buttons |
| Keyboard + mouse | none |
No joystick; the buttons act as keys and the mouse |
Players who do not have a joystick use keys and the mouse. The type auto is shown as Joystick: with four controllers reported, the mapper picks 4axis.
Three more types can only be set from Settings → DOS joystick → Joystick type, and appear in the IN DOS list only while one of them is active: Joystick for player 2 (4axis_2), Flight stick (FCS) (fcs, four buttons and a hat) and Flight stick (CH) (ch, six buttons and a hat). The picker only ever offers joystick buttons 1 to 4. The Joystick type row in Settings and the IN DOS chip change the same setting.
Switching mode moves any joystick-button bindings to the joystick each player now has, and drops them for a player who no longer has one. A binding to a joystick nobody uses is left alone, so switching back to two joysticks finds player 2's buttons as they were.
A preset replaces this player's buttons only. If you have changed buttons since the preset was applied, the list starts with Undo my changes. Compatible is hidden for a player who has no joystick.
| Source | Compatible | Arrow keys | Arrows + shooter | Point and click | Menu keys |
|---|---|---|---|---|---|
| D-pad | not assigned (moves the joystick) | arrow keys | arrow keys | arrow keys | arrow keys |
| A | Joystick 1 | Ctrl | Ctrl | Mouse left | Enter |
| B | Joystick 2 | Alt | Space | Mouse right | Esc |
X (Wiimote 1) |
Joystick 3 | Space | Alt | — | Y |
Y (Wiimote 2) |
Joystick 4 | Enter | Shift | — | N |
| Plus (Start) | — | Enter | Enter | Enter | Enter |
| Minus (Select) | — | Esc | Esc | Esc | Esc |
| L | — | PgUp | Z | — | — |
| R | — | PgDn | X | — | — |
ZL, ZR and the stick clicks are not assigned by any preset. Under Two joysticks only joystick buttons 1 and 2 exist, so Compatible leaves X and Y unassigned there (the preset list previews them as "No button 3" and "No button 4").
The preset name on screen is the one the buttons started from. DOSBox does not record it in the mapper file, so until you pick one it is the closest match to your current buttons.
Press A on a row. The chooser lists, down the left:
| Kind | What it offers |
|---|---|
| Suggested | What the presets give this control that this player can use (only shown when there is something to suggest) |
| Key | Press a key on the keyboard (shown only while a USB keyboard is connected), then 77 keys on tabs: Common, A-Z, 0-9, F-keys, Edit, Symbols (L and R change tab). Left and right Ctrl, Alt and Shift are one key each |
| Joystick | Buttons 1 to 4, limited to what the current mode has. Not shown for a player with no joystick |
| Mouse | Left, right and middle button; Click a mouse button is shown while a USB mouse is connected |
| DOSBox | Cycles up, Cycles down, Frameskip up, Frameskip down, Swap disk image, Fast forward (hold) |
| None | The control does nothing |
Default gives the control what this player's preset gives it. B cancels. A control has exactly one target, so choosing one replaces whatever it did before, including the DOSBox default binds. A key that is not in the list (a keypad key, say) is refused with "That one can't be used here".
Stick rows (L Stick, R Stick, Main Stick, C-Stick, Nunchuk Stick) are information only. They show "Joystick axes" when the current mode gives this player that stick as an axis (the left stick needs a joystick; the right stick needs the four-axis modes) and "Not used" otherwise. A stick cannot be bound to keys or the mouse. The Home row, and the GameCube's Menu row, are fixed.
Each table lists the rows on the setup screen. Preset source says which line of the preset table above a control takes its default from. Menu: Home opens the Home menu on every controller that has it; on the GameCube controller (and on any controller, as an alternative) hold L + R + Plus (Start on a GameCube).
Drawn upright with every control listed beside it, or sideways if the Wiimote is held that way (the setup screen draws the one that matches).
| Row | Preset source | Notes |
|---|---|---|
| A Button | A | |
| B Trigger | B | |
| 1 Button | X | Shares the joystick button with X (a Wiimote has no X) |
| 2 Button | Y | Shares the joystick button with Y |
| Minus / Plus | Minus / Plus | |
| Up, Down, Left, Right | D-pad | Held sideways, the directions are the ones you hold it by |
| Home | — | Fixed: opens the menu |
| Row | Preset source | Notes |
|---|---|---|
| C Button | L | |
| Z Button | ZL | |
| Nunchuk Stick | — | Information: joystick axes |
| A Button, B Trigger, 1 Button, 2 Button | A, B, X, Y | |
| Minus / Plus | Minus / Plus | |
| Up, Down, Left, Right | D-pad | The Wiimote's D-pad |
| Home | — | Fixed: opens the menu |
| Row | Preset source | Notes |
|---|---|---|
| L Trigger, R Trigger | L, R | Treated as buttons |
| ZL Button, ZR Button | ZL, ZR | |
| Minus / Plus | Minus / Plus | |
| L Stick, R Stick | — | Information: joystick axes. No stick clicks (a Classic has none) |
| Up, Down, Left, Right | D-pad | |
| B, A, Y, X | B, A, Y, X | |
| Home | — | Fixed: opens the menu |
| Row | Preset source | Notes |
|---|---|---|
| L Trigger, R Trigger | L, R | Treated as buttons |
| Z Button | ZR | |
| Start | Plus | |
| Main Stick, C-Stick | — | Information: joystick axes. No stick clicks |
| Up, Down, Left, Right | D-pad | |
| B, A, Y, X | B, A, Y, X | |
| Menu | — | Fixed: "Hold L + R + Start" |
A GameCube controller has no Minus or ZL, so those sources are never pressed.
| Row | Preset source | Notes |
|---|---|---|
| L Bumper, R Bumper | L, R | |
| L Trigger, R Trigger | ZL, ZR | |
| Select, Start | Minus, Plus | |
| L Stick, R Stick | — | Information: joystick axes |
| L Click, R Click | L3, R3 (not in any preset) | Wii U build only. The Wii build never reports stick clicks, so these rows are left out there |
| Up, Down, Left, Right | D-pad | |
| B, A, Y, X | B, A, Y, X | |
| Home | — | Fixed: opens the menu |
The same rows as the Wii U Pro Controller, drawn as a GamePad, with L Click and R Click. The touch screen is not a row: it is a trackpad (see Keyboard & mouse).
- USB keyboard: it works at the DOS prompt and in games, and it can be used to pick keys in the chooser. The DOS keyboard layout is
[dos] keyboardlayout, under All settings → DOS memory and keyboard. - On-screen keyboard: Home → Keyboard.
- The mouse is always captured. The first click is not used up capturing it, and
[sdl] autolockis ignored. Speed is under Settings → Keyboard & Mouse. - Moving the mouse takes one of three things: the Wiimote pointer, a USB mouse, or the GamePad touch screen. There is no way to move the mouse with a stick or the D-pad. A Classic, Wii U Pro or GameCube controller with nothing else attached cannot move it.
- Wiimote pointer: only player 1's Wiimote is used, on its own or with a Nunchuk attached. It is not available while a Classic Controller or Wii U Pro Controller is attached.
- Player 1's Wiimote A and B are always also the left and right mouse buttons. This is fixed, and it is in addition to whatever the preset gives A and B. A game that reads both the mouse and the joystick or keyboard sees both.
- USB mouse: left, right and middle buttons and movement. The wheel is not read.
- GamePad touch screen (Wii U build): a trackpad. Dragging moves the cursor, a tap is a left click, and ZR and ZL are the left and right buttons while the GamePad is connected. These are fixed, whatever the buttons are set to. While the on-screen keyboard is open, the touch screen belongs to it.
A DOS joystick has no D-pad, so with a joystick enabled the D-pad is folded into the joystick's left stick axes. To stop an arrow-key D-pad also steering the joystick, the D-pad drives the joystick only while all four of its directions are left on the joystick default or Not assigned. Give any direction a key, mouse button, joystick button or DOSBox function and the whole D-pad stops moving the joystick. The rule is checked when emulation starts and again after you leave the menu.
Three things set how fast DOSBox Wii runs a game, and all three can be changed while it runs: the CPU core, the cycles, and frameskip.
-
Check the dynarec is on. Status → CPU → Dynarec reads Active when the dynamic recompiler is the core running. With the default
core=auto, DOSBox starts on the dynamic core (it doesn't wait for a program to enter protected mode) if it could set up the code cache. The cache is 8 MB, or as little as 1 MB if that is all there is. On the Wii it comes from MEM1 and only MEM1 (see Memory). On the Wii U it comes from the area the console reserves for generated code, so if the console gives the app none, DOSBox runs the normal core and Status reads Not active. -
Cycles. Set them under Settings → Performance (at any time), and step them from the home screen's speed buttons:
Mode What it does Home-screen + / − auto(default)Starts at 3000 cycles, and moves to maxwhen a program enters protected modeSteps the running amount maxAs many as the console can spare; Settings offers shares from 10% to 100% Moves the share in steps of 5%, from 5% to 105% fixed NA set amount; Settings offers 500 to 50000 Steps the amount by cycleup(default 10: a percentage below 100, a number of cycles from 100)The home-screen buttons and the cycle hotkeys change the running value, and the config follows it, so Settings shows it and Save writes it. The exception is
auto: the running amount there is DOSBox's own guess, and is not written. -
Frameskip is 0 to 10 and is stepped from the home screen. The config follows it (
[render] frameskip). -
The normal core is Settings → Performance → CPU core (
auto,dynamicornormal; at the DOS prompt only). Use it to compare.
The Wii has two banks of memory, and nearly all of both is spoken for before a game starts. This section is the breakdown, so you can see where it goes, and why DOSBox Wii doesn't give DOS more RAM, draw bigger video modes, or run CPU upscaling filters.
| What | MB |
|---|---|
| Held back before the program starts (the top of MEM1) | 1.0 |
| The program itself: code 3.5, read-only data 0.8, exception tables 0.5, data 0.15, bluetooth/GX FIFO 1.7 | 6.7 |
| The heap pool (everything left) | 16.2 |
| of which the dynarec's code cache | 8.0 |
of which the rest, for anything that uses malloc or new |
8.2 |
The code cache is taken from MEM1 and nowhere else: it is 8 MB if the pool has that much free, as little as 1 MB if that is all it has, and the dynarec stays off below that.
These blocks are taken straight from MEM2, not from the heap. Most are taken once and kept until DOSBox Wii exits (a Restart reuses them), and several are taken at their largest size, so asking for less gives nothing back. Only the picture buffers follow the video mode.
| What | MB | Notes |
|---|---|---|
| Paging TLB | 20.0 | The full-size TLB |
| DOS RAM | 16.0 | The most the Wii allows, taken whatever memsize says |
| Dynarec block table | 8.0 | 128k blocks (64 bytes each) |
| Video card memory | 4.5 | 4 MB, the most the S3 card can have, taken whatever machine is set to, and a 0.5 MB fast copy used by 16-colour modes |
| TV output | 1.4 | Two 640×576 frames of 720 KB |
| Picture buffers | 0.3 to 2.4 | They follow the video mode. A full-size frame is 0.6 MB (640×480, 16 bits), and there are three: the frame, the texture the GPU draws from, and the scaler's cache of the last frame, which is 1, 2 or 4 bytes a pixel (so 0.06 MB for a 320×200 256-colour mode, 0.3 MB at 640×480, 1.2 MB for a 32-bit mode). The Sharp filter adds an enlarged copy, up to 0.6 MB, while it is on |
| Gravis Ultrasound memory | 1.0 | Only if the GUS is turned on |
Anything that is not one of those blocks (the dynarec's code pages, the C: mount, the menu's own objects, fonts, DOS's bookkeeping) comes from the one ordinary heap. That heap starts in the MEM1 pool, and when the pool is full it carries on into MEM2. So MEM1 free reading close to zero is normal and is not a sign of trouble; what can run out is the two banks together.
Added up, the fixed blocks leave only a few MB spare. After startup ~7 MB is free across both banks, and a bigger video mode, the Sharp filter and the GUS can each take some of it.
- More DOS RAM. The 16 MB limit is in the code (
MAX_MEMORYinmemory.cpp), and it is set aside already: the TLB, DOS RAM and the dynarec's block table alone are 44 of MEM2. Every extra MB would come out of the 6 to 7 MB spare. The Wii U allows up to 63. - Bigger video modes. The renderer's buffers are 640×480, so a mode larger than that (the 800×600 and bigger VESA modes) isn't drawn. A bigger mode would also cost every buffer in the table above, at a larger size.
- A bigger code cache. 8 MB is the most the dynarec uses. It has to be one piece of MEM1, which is half the pool.
- A smaller TLB. The full TLB is 20 MB and is kept for speed. A reduced one of about 1.3 MB is in the core: it is used when
USE_FULL_TLBis undefined inpaging.h, which saves about 19 MB at some cost in speed that hasn't been measured.
On Wii, the menu has no memory of its own. While it is open the emulator is paused, so the menu borrows the dynarec's 8 MB code cache for its images, text and the picture it keeps of the game behind it. When you close the menu the cache is handed back empty: the dynarec translates the code again as the game runs.
The Wii U build asks for the same blocks, from one large ordinary heap, so none of this is tight there: DOS RAM goes up to 63 MB and is taken at that size whatever memsize says.
When DOSBox hits an internal error it stops and DOSBox Wii leaves, as if you had chosen Exit. It shows no message: the message goes to a debug log that release builds don't write. Things to try:
- Delete
dosbox.conf(from theDOSBoxfolder) to restore the default settings. A new one is created on next launch. (Settings → Save keeps the version before your last save asdosbox.conf.bak.) - Turn the sound off, alone or with the others below: Sound Blaster
noneand Gravis Ultrasound off under Settings → Audio. Those rows change at the DOS prompt only, so set them before you start the game (or editdosbox.confand press Restart). - Fixed cycles, for example
fixed 10000, under Settings → Performance. memsizein[dosbox]: default 16 MB. On the Wii 16 is also the most there is (a larger value is treated as 16), and the 16 MB stays set aside however low you set it, so lowering it changes what DOS sees, not how much memory is free (Memory). It is read once at startup, so editdosbox.confand press Restart.- DOS memory off (
ems,xms,umb), under Settings → All settings → DOS memory and keyboard, at the DOS prompt. A change is refused while a program is using upper memory. LOADFIX:loadfix game.exereserves 64 KB of memory (loadfix -32 game.exefor another size), runs the program, then frees it.- The normal core instead of the dynarec (Settings → Performance → CPU core).
See Performance.
Press Home on a Wiimote, Classic Controller, Wii U Pro Controller or GamePad; hold L + R + Plus on one Classic, Wii U Pro or GamePad (L + R + Start on a GameCube controller); or tap the Windows / Super key on a USB keyboard. A Wiimote (with or without a Nunchuk) can only use Home. The menu opens only once DOSBox is running. See Opening and closing it.
Open Settings → Drives: it only notices drives plugged in or removed while it is open, so wait a moment for the row to appear, then press A on it to mount it (or use MOUNT; see Mounting other drives). On the Wii U, USB drives are never mounted until that screen has been open, and USB needs Mocha (see Wii U). A drive in a format the console can't read shows as Not available (Wii) or doesn't appear (Wii U): use FAT32.
Audio, CPU core and DOS memory settings change only at the DOS prompt (leave the program first). Rows marked (next launch) are read once at startup and cannot be changed from the menu: edit dosbox.conf, then press Restart on the home screen (or run CONFIG -r). See When a row can be changed.
- Video modes larger than 640×480 aren't drawn (the renderer's buffers are that size), and on the Wii DOS gets at most 16 MB of RAM. Both come from the memory budget, see Memory.
- Disc drives and network shares can't be used, and no CD drive is reported to DOS (so no CD audio): there is no screen to connect a share or read a disc, so
dvd:/andsmb:/don't exist forMOUNT. - No MIDI or MPU-401, no serial ports and no modem or IPX networking: none of these is compiled in, and there is no
[midi],[serial]or[ipx]section. A game that looks for a MIDI device finds none; use Sound Blaster FM music instead. - No screenshots (they are not built in).
- Drives are mounted from Settings → Drives or with
MOUNT; see Mounting other drives for what the Drives screen can and can't see. - GameCube controllers are not supported on the Wii U build.
- Sticks and the D-pad cannot move the mouse or be bound to keys. The mouse moves only from the Wiimote pointer, a USB mouse or the GamePad touch screen.
- A game's saved controls and settings come back only when you load it from Games (or
CONFIG -r -gameconf); they do not switch on by themselves when its program starts. - On the Wii U build the system HOME menu is switched off while DOSBox Wii runs, so Home opens DOSBox's menu and there is no way to the system one; use Exit.
- The DOS keyboard layout (
[dos] keyboardlayout) is shown in the menu but can only be changed indosbox.conf.
DOSBox Wii builds for Wii and Wii U from this one repository, with devkitPro, libogc2 (Wii) or wut (Wii U), and libsmb2. The Wii U build also needs libmocha and libdvm. The toolchain and dependencies are the same as for every project that uses libgui, so they are documented once in the libgui Building guide. Follow it through the dependency steps, then:
git clone https://github.com/dborth/dosbox-wii.git
cd dosbox-wii
make -f Makefile.wii -j3 # Wii -> executables/dosbox-wii.dol
make -f Makefile.wiiu -j3 # Wii U -> executables/dosbox-wiiu.wuhbThis repository's .github/workflows/build.yml is a working reference for the full build. The DOSBox core is unmodified r4301 apart from the files listed in docs/PORTING.
| Role | Credit |
|---|---|
| Porting & menu coding | Tantric (Daryl Borth) |
| PowerPC dynarec | jmarsh |
| DOSBox / dynarec updates | retro100 |
| DOSBox | The DOSBox Team |
| devkitPPC & libogc2 | shagkur, WinterMute & Extrems |
This software is open source and may be copied, distributed, or modified under the terms of the GNU General Public License (GPL) Version 2.
- DOSBox Wii on GitHub
- DOSBox Wii on WiiBrew — version history and the compatibility list
- Wii Homebrew Guide
- Wii U Homebrew Guide
- Mocha — USB storage access for the native Wii U build
- libgui
- Change History (CHANGELOG.md)