Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

Cuzebox3DS: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 2: Line 2:
|title=cuzebox3DS
|title=cuzebox3DS
|image=cuzebox3DS.jpeg
|image=cuzebox3DS.jpeg
|description=Uzebox
|description=Uzebox emulator; port of cuzebox by Jubatian.
|author=ry755
|author=ry755
|lastupdated=2018/09/17
|lastupdated=2018/09/17
|type=Console
|type=Console
|version=0.0.1
|version=0.0.1
|license=GNU GPLv3
|license=GPL-3.0
|download=https://dlhb.gamebrew.org/3dshomebrew/cuzebox3DS-3DS.rar
|download=https://dlhb.gamebrew.org/3dshomebrews/cuzebox3ds.7z
|website=https://github.com/ry755/cuzebox3DS
|website=https://gbatemp.net/threads/wip-cuzebox3ds-uzebox-emulator-ported-to-new-3ds.518244
|source=https://github.com/ry755/cuzebox3DS
|source=https://github.com/ry755/cuzebox3DS
}}
}}
==CUzebox emulator==
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.


* :Author:    Sandor Zsuga (Jubatian), ported by Ryan Stenz (ry755)
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.
* :License:  GNU GPLv3 (version 3 of the GNU General Public License)


*The Uzebox is an open source, retro-minimalist homebrew game console, based on an 8 bit AVR MCU.
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.
*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.


cuzebox is a Uzebox emulator written by Jubatian, and since it's open source I was able to port it to the New 3DS.
==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.


Important Info: This emulator doesn't 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.  
If there is only one .uze file in /3ds/cuzebox3ds/, it will automatically load that game instead of showing the menu.


I'm still working on optimizing it, so hopefully I can get it to run faster in future versions.
===Building===
For building, use the Make_config.mk file to specify target platform.


==What games are there?==
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.
* There is a list of Uzebox games on the wiki: http://uzebox.org/wiki/Games_and_Demos
 
* Simpler games like Pacman, Megatris, Bugz, and Frogger run well on the emulator.
The SDL-3DS library can be found [https://gbatemp.net/threads/release-sdl-3ds-1-2-15-simple-directmedia-layer-for-3ds.459291 here].
 
==User guide==
You can find a list of Uzebox games on the [http://uzebox.org/wiki/Games_and_Demos Uzebox's wiki page].
* Games that run well are the simpler ones such as [http://uzebox.org/wiki/Pac-Man Pacman], [http://uzebox.org/wiki/Megatris Megatris], [http://uzebox.org/wiki/Bugz Bugz], and [http://uzebox.org/wiki/Frogger Frogger].
* Since everything is open source with lots of documentation, it's also easy to write your own games in C.
* Since everything is open source with lots of documentation, it's also easy to write your own games in C.


https://dlhb.gamebrew.org/3dshomebrew/IMG_20180916_150652061.jpg
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.


==Overview==
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).


This is a currently experimental emulator for the Uzebox game console written
===FAQ===
entirely in C, using SDL 1.2.
'''Q. After launching it, it just quits back to the Homebrew Launcher!'''


For building, use the Make_config.mk file to specify target platform.
Make sure cuzebox3ds.3dsx and boot.hex are located in /3ds/cuzebox3ds/ on the SD card.
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 (I can not test native compiles for that
platform since I don't have the OS).


The SDL-3DS library can be found here: https://gbatemp.net/threads/release-sdl-3ds-1-2-15-simple-directmedia-layer-for-3ds.459291/
'''Q. ​The audio sounds horrible!'''


==Credits:==
That's a side effect of the slow emulation speed. For now, just keep the volume turned off.
* Jubatian, for writing the original cuzebox
* The rest of the Uzebox community, for creating such an awesome console:)


==Troubleshooting:==
==Controls==
* After launching it, it just quits back to the Homebrew Launcher!
D-Pad - Select a game
* Make sure cuzebox3ds.3dsx and boot.hex are located in /3ds/cuzebox3ds on the SD card
* ​The audio sounds like crap!
* That's a side effect of the slow emulation speed. It'll be like that until I'm able to get the emulator to run faster
* For now, just keep the volume turned off


==Controls==
Start - Launch game


You can control Player 1's SNES controller as follows:
ZR - Exit to the Homebrew Launcher


* D-Pad: SNES D-Pad
Y+B+Start+Select - Return back to the Game Loader while in game (does not work on some older games, such as Pacman)
* A/B/X/Y: SNES A/B/X/Y
* Start/Select: SNES Start/Select
* L/R: SNES L/R
* ZR: Exit cuzebox3DS (returns to Homebrew Launcher)


==Emulated components==
==Screenshots==
https://dlhb.gamebrew.org/3dshomebrews/cuzebox3ds3.png
https://dlhb.gamebrew.org/3dshomebrews/cuzebox3ds4.png


Currently the following features are implemented:
==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.


* AVR core with cycle perfect emulation.
Some games run better than others though.  
* 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.


==Notes:==
==Credits==
Cuzebox emulator:
* Author - Sandor Zsuga (Jubatian), ported by Ryan Stenz (ry755).
* License - GNU GPLv3 (version 3 of the GNU General Public License).


The SD card emulation is fairly capable, it has several compile time
Thanks to:
constants in the cu_spisd.c file which you may adjust. You can set them to
* Sandor Zsuga (Jubatian), for writing the original cuzebox.
emulate a strict SD card breaking several existing games, but which can help
* The rest of the Uzebox community, for creating such an awesome console.
you developing more robust SD code.


The SD write feature is sandboxed within the directory of the game. It doesn't
==External links==
emulate subdirectories. You may only override existing file contents, expand
* GitHub - https://github.com/ry755/cuzebox3DS
files or create new ones, it should be capable to track these operations if
* Uzebox Forums - http://uzebox.org/forums/viewtopic.php?f=9&t=10005
you write the FAT first.
* GBAtemp - https://gbatemp.net/threads/wip-cuzebox3ds-uzebox-emulator-ported-to-new-3ds.518244


A bootloader can be started simply by passing the bootloader's .hex file as
[[Category:3DS homebrew emulators]]
parameter to the emulator. The virtual SD card is composed from the files
[[Category:Homebrew console emulators on 3DS]]
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)

Revision as of 08:55, 2 Ocak 2022

cuzebox3DS
File:Cuzebox3DS.jpeg
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 while in game (does not work on some older games, such as Pacman)

Screenshots

cuzebox3ds3.png cuzebox3ds4.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.

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: