cuzebox3DS

From GameBrew
cuzebox3DS
Cuzebox3ds2.png
General
Authorry755
TypeConsole
Version0.0.1
LicenseGPL-3.0
Last Updated2018/09/17
Links
Download
Website
Source

cuzebox3DS is an experimental emulator for the Uzebox game console written entirely in C, using SDL 1.2. It is a port of cuzebox, originally written by Jubatian.

The Uzebox is an open source, retro-minimalist homebrew game console, based on an 8 bit AVR MCU. The particularity of the system is that it's based on an interrupt driven kernel and has no frame buffer. Functions such as video sync generation, tile rendering, and music mixing is done realtime by a background task so games can easily be developed in C.

The final design contains only two chips: an ATmega644 and an AD725 RGB-to-NTSC converter. The ATmega644 is overclocked to 28.6 MHz, which is 4 times the NTSC color burst frequency. It has 64K of flash memory and 4K of ram. However, only 60K of flash is available for games, as 4K is taken up by the bootloader.

Features

  • AVR core with cycle perfect emulation.
  • Core AVR peripherals as necessary to run Uzebox games.
  • Sound and video output (frame rate synchronized to host if possible).
  • SNES controllers.
  • EEPROM including saving its contents alongside the emulated game.
  • SPM instruction and related elements necessary for bootloader emulation.
  • SD Card read and write (writing didn't see much testing yet).
  • SPI RAM.

Installation

Installing

Copy the cuzebox3ds folder to the 3ds folder of your SD card.

Copy any downloaded .uze games to the cuzebox3ds folder (it must be a .uze file, .hex files won't work).

Start cuzebox3DS using the Homebrew Launcher, and after a few seconds you should see a menu called UzeBox Game Loader.

If there is only one .uze file in /3ds/cuzebox3ds/, it will automatically load that game instead of showing the menu.

Building

For building, use the Make_config.mk file to specify target platform.

Currently it should build for Linux, 3DS (CTR, requires devkitPro and the SDL-3DS lib), and Emscripten, and Windows as cross compile target using mingw32-gcc.

The SDL-3DS library can be found here.

User guide

You can find a list of Uzebox games on the Uzebox's wiki page.

  • Games that run well are the simpler ones such as Pacman, Megatris, Bugz, and Frogger.
  • Since everything is open source with lots of documentation, it's also easy to write your own games in C.

The SD card emulation is fairly capable, it has several compile time constants in the cu_spisd.c file which you may adjust.

  • You can set them to emulate a strict SD card breaking several existing games, but which can help you developing more robust SD code.
  • The SD write feature is sandboxed within the directory of the game. It doesn't emulate subdirectories.
  • You may only override existing file contents, expand files or create new ones.
  • It should be capable to track these operations if you write the FAT first.

A bootloader can be started simply by passing the bootloader's .hex file as parameter to the emulator:

  • The virtual SD card is composed from the files existing in the same directory.
  • Note that the emulator can not remember what the bootloader wrote last time into the flash (so you can not start the last selected game with the 0.4.5 bootloader as it recognizes the game by a CRC written in EEPROM, not by flash content. The 5.x.yy bootloaders work fine).

FAQ

Q. After launching it, it just quits back to the Homebrew Launcher!

Make sure cuzebox3ds.3dsx and boot.hex are located in /3ds/cuzebox3ds/ on the SD card.

Q. ​The audio sounds horrible!

That's a side effect of the slow emulation speed. For now, just keep the volume turned off.

Controls

D-Pad - Select a game

Start - Launch game

ZR - Exit to the Homebrew Launcher

Y+B+Start+Select - Return back to the Game Loader (does not work on some older games, such as Pacman)

Screenshots

cuzebox3ds3.pngcuzebox3ds4.png

Known issues

Does not run perfectly even when using the New 3DS's faster 804 MHz mode. It runs at about 40% speed, which means the game is slower and there's some input lag.

Some games run better than others though.

Y+B+Start+Select does not work for older games, in that case delete coderom.bin inside /3ds/cuzebox3ds/.

Credits

Cuzebox emulator:

  • Author - Sandor Zsuga (Jubatian), ported by Ryan Stenz (ry755).
  • License - GNU GPLv3 (version 3 of the GNU General Public License).

Thanks to:

  • Sandor Zsuga (Jubatian), for writing the original cuzebox.
  • The rest of the Uzebox community, for creating such an awesome console.

External links

Advertising: