How to modify the video game - UZEBOX ?

I present the popular video game console called: UZEBOX

Similar projects worth following
I present the popular video game console called: UZEBOX

Would it be technically possible to get NES, SNES and/or Mega Drive emulation running on the Uzebox?
I know that the console is too weak resources of RAM, and graphics.
What should change in consolidation which AVR microcontroller and what graphic to the processing of a RGB signal?

Enjoy this project?



Tiago Rezende wrote 10/12/2015 at 02:56 point

I'm afraid your project is up for some really serious practical letdowns if you're still interested in emulating the NES (let alone anything else more powerful). The first limit would be that the NES video hardware is anything but simple - the video generation has to have (or emulate) interfaces to memory in the cartridge (as ROM or RAM, depending on the specific game) that generate the pixels to draw for each tile in the screen (independently from the program code, which would need to run parallel to this), and the ATMEGA32 unfortunately doesn't have nearly enough ports or bandwidth to interface on it's own.

To emulate even the simplest CHR layout (ROM-based without banking) inside the AVR you'd need to reserve at least some 8KB of Flash space just for storing the character data, and hope that the game program doesn't also need more than 16KB all for it's own (and it seems that only some of the earliest games in the NES's lifespan were released with PRG ROM sizes below 32KB), or you'll end up with no space for the emulator itself inside the ATMEGA32.

Even there being games available that fit this bill, there's another problem: The ATMEGA32 doesn't have enough memory to emulate the internal RAM chips inside the NES (two 2KB chips, one for main RAM and the other for the screen tilemap), let alone the remaining emulation state for the rest of the system. And about external memory, even though you could use SPI or an external circuit to access more RAM, the speeds would be just too low to sustain graphical output - the UZEBOX graphics kernel itself is already quite on the limit on how an ATMEGA32 can drive a screen, adding external steps to memory access would push the timings way beyond this limit. Sorry, the UZEBOX won't cut it.

  Are you sure? yes | no

greenaum wrote 06/19/2015 at 08:05 point


You MIGHT get a NES emulator to work on this thing. Since it already has tile-mapped graphics and sprites, and a higher resolution than the NES. A PC-based emulator would have to do the tile-mapping in software, write a tile-rendering engine. The Uzebox has this included, and hopefully the tiles and sprites are the same size (8x8 I think) as the NES. So you'd just need to emulate the 6502 and the logic that glues them together.

I'm pretty sure there's open 6502 emulator source code out there, in C. Whether it'll be fast enough on the Uzebox, who knows? The NES contains 2K of working RAM for the processor, and another 2K of RAM for the PPU. And then some more RAM for the sprites, palettes, and misc things, less than a K altogether.

You might be able to skimp on the PPU RAM since your Usebox's display is doing that work, but how much RAM does that take up? Also of course, where do you keep the game image?

Might be you'd need to add extra RAM to the system. With a few latches you could access an external SRAM chip using 8 bits of data and a few for control, presuming the AVR gives access to it's data lines. You can also get I2C RAM chips, though how fast they are I don't know.

Anything more powerful than the NES, you've got just about no chance. As well as the extra RAM you'd need, and the CPU power, these other consoles have lots of layers of tiles, and the SNES has it's stretchy-scaling graphics thing. This is only practical with a bitmap display, and would take a lot of processor time.

So you -might- be able to do it, but it'd need extra RAM and be a hell of a tight fit.

Other than that, the VIC-20 had only 3K RAM, the ZX81 had 1K. Atari 2600 had 128 bytes, but the timing was very much tied to the display. You could do it, Uzebox's display is a little like the 2600 in it's raw mode.

But this is gonna be a fairly complicated job! Mostly since your Uzebox hardware isn't much more powerful than the stuff you're emulating. Adding RAM would be a big help, does Andre's book mention adding stuff to it? 

Good luck!


  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates