My venture into CRT gaming

13. May 2019 12:44 by Cameron in gaming, SNES  //  Tags: , , , ,   //   Comments

Let me preface this by saying that getting into CRT gaming is not a cheap endeavor. If you go all RGB, you either need to mod the systems that don't support RGB or buy them already modded. Additionally, monitors are becoming higher demand and people aren't letting go of them as easily so expect higher prices in the coming years.

I recently started following the CRT gaming sub-Reddit and subsequently, I've begun acquiring various CRT displays. My first CRT was a Sony PVM-14M2U (14" RGB monitor) which I held onto for a few months before getting my Olympus OEV203 ex-medical 20" RGB monitor. Shortly after getting my original PVM, I wanted a bigger screen and ultimately found a 27" Sony Trinitron consumer TV which has component, S-Video, and composite inputs. The next monitor I found is an Amdek 310A which is an amber monochrome 12" monitor that works with the MDA/Hercules standard from vintage IBM PCs. Lastly, I picked up a Gateway 2000 15" Vivitron for retro 90's Windows gaming.

You may be wondering, you have all the monitors, but what about systems to connect them with? Well, I have you covered there! I invested in a 6 way SCART/Component switch to handle multiple consoles going to my PVM and 27" Trinitron. I have the following systems connected via this switch:

  • Super Nintendo
  • Nintendo N64
  • PS1
  • Sega Genesis
  • Sega Saturn
  • Sega Dreamcast
Note: I have an NES that I plan to RGB mod, but I haven't had the time to do this yet.
 
I have all of my RGB systems routed through a sync strike in order to record/stream from my Startech USB3HDCap capture card. For those unfamiliar with a sync strike, this device takes any sync signal and produces a CSYNC signal for either a monitor or a capture device. Some of the systems in my setup are sync on Luma (PS1 and N64 I think) so this was necessary for allowing captures. On the other end sync strike, I have a VGA distribution amplifier which I use to split the signal between my PVM (VGA to 4 BNC breakout cable) and my capture card.
 
I also have a Wii, GameCube, Original Xbox, and PS2, but these are not connected via RGB. All but my GameCube are component. The official GameCube component cables are too expensive so I went with S-Video.
 
For my retro computing, I have an old Compaq Deskpro 4000 with the following specs:
  • Pentium 233MMX
  • 256MB of RAM
  • 32GB storage with SD to IDE adapter (I left the original 2GB HDD in there since Compaqs are hard to change drives)
  • 48X IDE CD Drive
  • S3 Virge 2MB PCI graphics card
  • Creative SB Live SB0060
  • Hercules compatible ISA graphics card for monochrome displays
  • 2GB internal Jaz drive with PCI SCSI adapter
  • Windows 98 SE (DOS 7.1)
I have a few classic games installed at the moment such as Roller Coaster Tycoon Deluxe, Age of Empires 2, and Sim City 2000.
 
I don't know how much longer these tubes will last due to some of the longer hours on some of these. When seeking out equipment, I recommend going for Sony Trinitron or equivalent. In the case of my Gateway Vivitron SVGA monitor, it is a rebranded Sony Trinitron. Dell had some monitors that were rebranded Trinitrons also. Olympus is a rebranded Sony PVM so that's also a good alternative. For consumer sets, if you can find a Trinitron, go for it. The aperture grill vs. shadow mask makes a big difference in image quality in my opinion. You will be fine with many other sets out there too. Just be sure to check if it has component or S-Video inputs and that will be incredibly better than composite video. That being said, I am impressed with Sony's comb filter on composite video with my consumer set. Flat Trinitrons tend to have geometry issues due to CRTs not being designed for flat screens. Your mileage may vary, but the thing to remember is to test the screen before buying and buy local when possible. Lastly, if the seller is asking a ton of money for the screen, try to talk them down. Many Goodwills still have CRTs that you can find locally and you can check Craigslist, eBay, and the CRT gaming subreddit for local listings.

Super 8 by Innovation - Review

7. April 2013 18:34 by Cameron in   //  Tags: , , , , , , , , , , ,   //   Comments

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

My NES and SNES game collection

7. April 2013 18:01 by Cameron in   //  Tags: , , , , , , , , , , ,   //   Comments

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.

SNES SDK

12. January 2013 20:21 by Cameron in   //  Tags: , , , ,   //   Comments

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:

// taylor series expansion of the sin function
float sin(float x)
{
  return x - (mult(x,  3) / fact(3)) + (mult(x, 5) / fact(5)) - (mult(x, 7) / fact(7))+ (mult(x, 9) / fact(9)) - (mult(x, 11) / fact(11)) + (mult(x, 13) / fact(13));
}

// taylor series expansion of the cos function
float cos(float x)
{
  return 1 - (mult(x,  2) / fact(2)) + (mult(x, 4) / fact(4)) - (mult(x, 6) / fact(6)) + (mult(x, 8) / fact(8)) - (mult(x, 10) / fact(10)) + (mult(x, 12) / fact(12));
}

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:

float tan(float x)
{
  return sin(x) / cos(x);
}

float sec(float x)
{
  return 1 / cos(x);
}

float csc(float x)
{
  return 1 / sin(x);
}

float cot(float x)
{
  return 1 / tan(x);
}

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

// babylonian method for square roots
float sqrt(int n)
{
  // double a = (eventually the main method will plug values into a)
  float a = (float) n;
  float x = 1;
  int i;
 
  // For loop to get the square root value of the entered number.
  for( i = 0; i < n; i++)
  {
    x = 0.5 * ( x+a / x );
  }
 
  return x;
}

double newton_sqrt(double n)
{
  double x = 0.0;
  double xn = 0.0;
  int iters = 0;
  int i;
  for (i = 0; i <= (int)n; ++i)
  {
    double val = i*i-n;
    if (val == 0.0)
      return i;
    if (val > 0.0)
    {
      xn = (i+(i-1))/2.0;
      break;
    }
  }
  while (!(iters++ >= 100 || x == xn))
  {
    x = xn;
    xn = x - (x * x - n) / (2 * x);
  }

  return xn;
}

There are tons of different ways to compute an approximation to the square root, but I was more concerned with precision vs. speed.

Here's the code I used including the SNES SDK:

snessdk.zip (1.27 mb)

 

Here is where I found the SNES SDK Win32 binary:

http://forums.nesdev.com/viewtopic.php?f=12&t=6253

You will need Windows XP or higher for the SDK. The source for the SDK may be found here: http://code.google.com/p/snes-sdk/source/checkout

Here's a screenshot of my test program running in ZSNESW:

Month List

Tag cloud