I recently purchased a rare accessory for my SNES that allows me to play NES and Famicom games on my SNES called the Super 8, designed by Innovation in 1993. One can also play SNES and Super Famicom games using the pass-through slot. The system uses a NOAC for playing NES and Famicom games in a similar fashion to how the Super Gameboy used Gameboy hardware for playing Gameboy games on the SNES. Since I have an NES, it's more of a novelty item for being able to use only one console to play each set of NES and SNES games. It's compatible with most NES and Famicom games out of the box including Castlevania III with the MMC5 mapper and Akumajou Densetsu, the Japanese version of Castlevania III, with the VRC6 mapper and enhanced audio. Some games do not work due to the system being a NOAC and not original NES hardware. The NES PowerPak by RetroZone does not work on the Super 8 for some reason, but perhaps this will be fixed in a later firmware update for the PowerPak.

Once my unit arrives, I will begin compiling a list of compatible games and how it compares to the NES.

Known issues with fixes:

The Super 8 does not include native support for SNES games that use co-processors, but this can be fixed by adding a few solder points on the mainboard - I will update this later with the exact guide on how to fix

The Super 8 suffers from the same jailbars issue that the top loading NES and some Famiclones experience - this can be fixed by soldering a 470micro farad cpacitor - I will update this post with where to solder later

It's been a while since I've posted a new blog post. I've been fairly busy with life and work lately. Over the past couple of weeks, I've been expanding my NES and SNES game library. I plan to collect several original titles that I enjoyed playing as a kid. Some of the games that I recently acquired for the NES are:

Donkey Kong Classics

Tengen's Pacman

Tetris

Othello

Mario Bros. Arcade Classics

Castlevania I

Castlevania II

Castlevania III

Duck Tales

Dr. Mario

Caesar's Palace

The Bugs Bunny Birthday Blowout

Tengen's Road Runner

The Bugs Bunny Crazy Castle

My NES collection is rapidly growing as I previously only had these games in my library:

Super Mario Bros. / Duck Hunt

Super Mario Bros. 2

Super Mario Bros. 3

Home Alone

The Legend of Zelda

I plan to add the Teenage Mutant Ninja Turtles trilogy, Megaman 1-6, Metroid, and several other great games to my collection. Megaman collections can easily go for $150 or more on eBay while a single copy of Megaman can be easily $30. I'm hoping to find a collection with all six games when I'm ready to add them to my collection. I love super Metroid on the SNES so I'm sure that the original Metroid will be an excellent addition. Metroid has held its value fairly well over the years. Copies of Metroid typically sell for $30 or more. I will also be adding a RetroZone NES PowerPak to my library so I can play translated Famicom games and homebrew. I would like to try my hand at NES development with 6502 assembly too.

For my SNES, I recently added these games:

Sim City

Donkey Kong Country 3

Buster Busts Loose

Kirby's Avalanche

Super Mario World 2: Yoshi's Island

I've got quite a large collection of SNES cartridges that I've been building on over the past few years:

Super Mario Kart

Super Mario All Stars + World

Super Off Road the Baja

Jurassic Park

Donkey Kong Country

Donkey Kong Country 2

Final Fantasy Mystic Quest

The Legend of Zelda: A Link to the Past

Chrono Trigger

Starfox

Mario Paint

Final Fantasy II

Final Fantasy III

Super Battletank: War in the Gulf

Super Caesar's Palace

Super Mario RPG

SNES PowerPak

Super Gameboy

Super Metroid

Since I have a SNES PowerPak, I can play most all translated Super Famicom games, homebrew, and almost all of the SNES games available. I've used my SNES PowerPak for development of my own and playing various hacks or ROM translations. Even though I can play nearly every game available for the SNES using the SNES PowerPak, I still enjoy collecting the original carts.

One may say that it's cheaper to just use a NES/SNES to USB adapter and play games on an emulator, but it's just not the same as playing on the original hardware. I grew up in the 1990's and the NES/SNES were a big part of my childhood. Arguably, I'd have to say the SNES is my favorite console as it's one that I played the most. I didn't have an NES at home as a kid, but I used to play at friend's houses. I have all the emulators and ROMS, but nothing compares to the feeling of playing a game they way it was meant to be played, on the glorious consoles themselves.

Over the past few days, I have been playing around with the SNES SDK that compiles C code to SNES ROMs for running in emulators or on real hardware. The SDK supports floating point emulation, 16-bit integers, controller input, and a basic graphics system. There is no sound support in the SDK for the SPC of the SNES (yet). Libraries can be added to the SDK pretty easily by writing C code and compiling to assembly to be linked with other programs.

In playing with the SNES SDK, I noticed that in math.h, a lot of the ANSI C math functions were left out due to hardware limitations of the SNES. However, without much effort, I was able to create working functions for the six basic trig functions and a square root function.

In mathematics, sine and cosine can be approximated by Taylor polynomial expansions. This makes it easy to implement functions in C to compute the sine and cosine of a value to a certain degree of precision. The following is the Taylor expansion functions for sine and cosine:

I had to create helper functions for x^n and x! (x factorial) since those aren't built into the compiler. The function, mult(x, n), raises x to the power n. The function, fact(x), computes the factorial of x. There is a pow(x, n) function implemented in the SDK, but it doesn't produce as accurate of results as my mult(x, n) function. The result can be seen when running pow(2, 12) versus mult(2, 12). The pow function returns 4095 while mult returns 4096 (the correct result).

The other trig functions were built on the sin and cos functions. There is a Taylor expansion for tan(x), but I decided to go with sin(x)/cos(x) since I couldn't properly expand tan(x) for enough accuracy. Below is the rest of the trig functions:

I understand the practicality of computing trig values on the SNES might not be huge for everyday use. However, this was more of a "Can I do this?" type of exercise. Games like Starfox for the SNES may have used trig calculations on the Super FX co-processor, but I doubt many games needed cosine or sine functions calculated on the main CPU. Perhaps game demos with oscillating text used sine or cosine as a function of time.

The square root function is based on Newton's method. I found the code for this method here: http://www.codeproject.com/Articles/69941/Best-Square-Root-Method-Algorithm-Function-Precisi