Friday, March 9, 2018

Super Nt Firmware v4.4 - An Inadvertent Virtual Boy Compatibility Fix!

Background

A number of years back I was perusing the GamesX Nintendo controller data wiki page and noticed that the same type of signals were shared between the NES and SNES. Given that both the NES and SNES used essentially the same protocol (Clock/Latch/Data using shift registers) I figured it would be worth a try to build an adapter so that I could use my favorite SNES pad, the AsciiWare asciiPad, on the NES. After building an adapter using a NES controller cable and a SNES controller extension (socket half) I was pleased to discover that everything worked perfectly! Another pleasant surprise was that NES buttons B/A map to SNES buttons Y/B respectively!

Unfortunately, given that the SNES controller contains an extra 4021 shift register (or custom IC in later revisions) for the additional buttons, using a NES controller on the SNES doesn't work out so well. While the DPad, B, A, Select, and Start buttons function, the SNES behaves as though the right shoulder button is being held down (and possibly the other extra buttons) that results in various incompatibilities with the SNES library.

Fast forward to PRGE 2017 at the retroUSB booth. Among the giant RGB LED wall of Tetris were several AVS stations demoing new homebrew NES games. One of which was playing a Robotron/twin stick style game that had a VIRTUAL BOY controller connected to an AVS NES controller port. After confirming that the Virtual Boy uses the same type of protocol as the NES/SNES, I promptly located a spare Virtual Boy controller at the show so that I could wire up my own! I was especially interested to see how it behaves on the SNES given the possibility of working as a great option for twin stick style games.

After replacing the Virtual Boy controller cable with a SNES one I was a bit bummed with the results - NES worked as expected (tested on an Analogue NT mini), but SNES did not. Controller presses were only recognized sporadically. While I managed to verify that the button mappings were perfect for games like Total Carnage, Super Smash T.V., and Robotron 2084 (on Williams Arcade's Greatest Hits), the controller on the SNES was effectively unusable, and so the controller was shelved.

Fast forward (again), when reading the Super Nt FW v4.4 release notes I noticed an interesting bit:
NTT Data compatibility mode added under “hardware”. Turning this on will nerf the NTT data pad so that it appears to the system like a stock controller. This lets it be used on the super gameboy, street racer, starfox 2, etc. There are many games that are incompatible with it in weird ways like monopoly. Using one will cause the chance/chest cards to instantly skip.

For one reason or another I decided give my Virtual Boy SNES controller a try on the Super Nt with this new feature enabled. Lo and behold IT WORKED! While Kevtris didn't intentionally set out to "add" Virtual Boy controller support, it's a welcome surprise! There's one small quirk though - the default hotkeys for menu and reset do not respond (Select+U/D) for some unknown reason.

How-To Guide for Virtual Boy to Super Nt Controller Conversion

If you're wondering how to convert a Virtual Boy controller for use on the Super Nt or NES with adapter, here's a "How-To" guide for this particular scenario. Disclaimer: use the following information at your own risk and is provided as-is with no warranties/etc. This is a fairly basic procedure, so if you're handy with soldering tools, you shouldn't have any issues.
  1. Required parts:
    • Virtual Boy controller
      • Battery Pack or SNES AC Adapter Tap are not applicable. If connected, do not use batteries/connect to AC adapter
    • SNES/SFC controller cable donor
    • Heat shrink tubing or small zip tie (optional) for improved strain relief
  2. Verify that the Virtual Boy controller and SNES controller cable donor are in working condition
  3. Unscrew and open the Virtual Boy controller
  4. Locate, de-solder, and remove the 6 pin connector on the Virtual Boy controller PCB
  5. Prepare the SNES controller cable
    • Strip and tin the 5 conductors
    • Add a short stretch of heat shrink tubing to the SNES controller cable to provide strain relief for the cable (a small zip tie can also be used)
     
  6. Solder the 5 wires to the 5 of 6 corresponding connections on the Virtual Boy controller PCB. Use the following table for reference:
  7. Pin Name SNES Pin
    Virtual Boy PCB Pin
    Ground
    1
     6
    Data 3
    2
    N/A
    Data 2
    3
    N/A
    Data
    4
    5
    Latch
    5
    3
    Clock
    6
    4
    +5 VDC
    7
    2
    Battery DC
    N/A
    1
  8. Verify connections from the SNES controller plug to the Virtual Boy PCB
  9. Route the SNES controller cable through the Virtual Boy controller shell, and shrink the tubing so that it fits below the two walls the controller cable fits through to provide strain relief
  10. Re-assemble the Virtual Boy controller
  11. Enjoy!
The Virtual Boy triggers map to the respective SNES L/R shoulder buttons. The Right DPad maps to the respective SNES X/B/Y/A buttons.

Notes/Reminders for Super Nt usage

As previously noted, the default hotkey values for menu and reset do not work as expected on the Virtual Boy controller, and there are no plans to officially support this controller configuration in the future, despite my half-serious plea to Kevtris to add it. 😆
  1. Connect a standard SNES controller to the Super Nt 
  2. Power on the console
  3. Enable the NTT Data setting
  4. Save updated settings
  5. Turn off the Super Nt
  6. Connect Virtual Boy SNES controller to the Super Nt
  7. Power on the console!
Now You're Playing with "Virtual Boy" Power!!!

Tuesday, January 9, 2018

UltraHDMI FW v1.07 - Gamma & Presets

Retroactive has released new firmware for the UltraHDMI kit! While this kit has been shipping for just over 2 years now, it's always great to receive new features and settings. The latest update (v1.07) has been further optimized to utilize the remaining resources on the Cyclone III FPGA. The three most notable changes are updates to the Gamma setting, replacing a single settings save with 8 preset (save) slots, and 4 different mnemonics to label the 8 preset slots.

New main menu - "Factory Default" and "Retro Mode" are now located under the "Load Preset" menu.

Gamma

In firmware revisions prior to v1.07 the gamma setting had two values - OFF/ON. In v1.07, OFF/ON has been relabeled as 1.0/1.3, as well as the addition of a higher gamma value - 1.45.


Preset Mnemonics

4 different sets of mnemonics have been provided to label the 8 preset slots. The Dogs mnemonics even contains Shiba Inu (doge!). If you've ever inspected the UltraHDMI kit PCB closely, you might find one hiding somewhere! The Scenario mnemonics does a good job of covering typical user scenarios.


Preset Slots

8 Preset slots! If you have different settings you like to use when playing various games, the v1.07 has got you covered! Previously a user could only save one set of settings, and if they wanted to load those settings after making changes (e.g. enabling Retro Mode), they'd have to power cycle the N64, which isn't the most convenient, so this is a great feature to have. Admittedly I normally use only set of settings (Integer+ with VI de-blur), but it's fun once and a while to set a 6x scale using fractional 😬. The Factory Default option and Retro Mode preset have moved to the Load Preset menu and function the same as previous firmware revisions.


Where to download?


Right here - Firmware 1.07a Upgrader (ROM)

What's this 'a' version? (1/28/2018)

Around the same time as 1.07 was released to testing, by sheer luck some new installs revealed an audio popping when sourcing a 1080p signal. The exact cause is still unknown but seems to be manufacturing tolerances of the FFC slightly outside the norm. 1.07a is exactly the same except it contains a mitigation for this issue.
Only 0.4% of shipped units have shown this behavior.
Upgrading to 1.07a is not necessary unless a unit is already exhibiting audio popping at 1080p.

NOTE: If you're currently running v1.06 firmware be sure to disable the IGR (In-Game Reset) option prior to running the update via a 64drive or ED64. This will mitigate one UltraHDMI kit bricking scenario, which requires servicing to restore (update via JTAG).

Tuesday, October 24, 2017

Retron HD NES Color Palette Extracted - Gawkers Beware!

The recent flood of low quality NES consoles has made me curious to see how they look and perform. I picked up a Retron HD at Hyperkin's PAX 2017 booth and was most curious to see what the color palette looked like. Not to my surprise, it looked a little... off.

I was also disappointed to find that NES carts such as the PowerPak don't work (crashes on boot). It was suggested by RetroUSB to try a higher current capable 5VDC power supply than the included one, but that didn't resolve the issue.

To extract the Retron HD's color palette I had to use a "real" NES cart with Loopy's paltest.nes program. Thankfully John Riggs came through and made me one to use for this project! Surprisingly the captured palette swatches are actually really clean (no noise). I captured the test pattern via the HDMI output from the console to both a Datapath VisionRGB E1, and a BMD Intensity Pro 4K so that I could cross check the results and found no discrepancies.

Without further ado, here's the RetronHD palette. Download RetronHD.pal.


Here are sample images using the RetronHD palette.

 


Bionic Commando looks especially egregious with the RetronHD palette! 😜


Thursday, September 28, 2017

SNES Classic Edition - Observations and Captures

After the wildly popular NES Classic from 2016 Nintendo has followed up with the release of the SNES Classic. While there are many outlets covering this exciting new device (and how it's essentially the same HW as the NES Classic), I'd like take the opportunity to cover a few particular points of interest.

Image Quality

Like discovered on the NES Classic, the SNES Classic also applies a random noise filter to the game image each frame. This random noise changes R, G, B sub pixel values by up to +/- 4 or 5 values to provide a more "analogue" look that makes solid color fields less flat. All games tested are presented in a 3x integer scale. This results in a 672 pixel high image (224x3) with borders that surround the game image on all sides.



4:3 Display Mode

One welcome improvement with the SNES Classic is it's 4:3 Display Mode. Unlike the NES Classics fractional point sampling that results in pixel "flicker" on horizontal scrolling, the SNES Classic does something a bit more sophisticated. The perfect pixels 768 wide image is stretched horizontally to 877 pixels using a low pass filter style filter to average pixel values between two adjacent pixels with different source values.


Star Fox 2

While I've assembled a repro and played the existing Star Fox 2 game, it's a real treat that Nintendo has officially released the "final" build! Screen captures of the title screen in each of the 3 display modes. Enjoy!



Friday, February 24, 2017

New NESRGB Firmware Featuring RGBSource Color Palettes

If you enjoy using my NESCAP, HYBRID, and/or NESCLASSIC color palettes, you now have the option of doing so on Tim Worthington's NESRGB! Two firmware (.pof file) options are now available.

palette1:
1. NESCAP
2. HYBRID
3. NESCLASSIC

Download palettes1_NESCAP_HYBRID_NESCLASSIC.pof

palette2:
1. NESCAP
2. HYBRID
3. FCEUX (aka "Improved" - default firmware palette 2)
Download palettes2_NESCAP_HYBRID_FCEUX.pof

The remainder of this post is a guide for updating the NESRGB firmware on an installed system. Tim's original guide for updating firmware can be found here.

Requirements


1. Altera Quartus Prime Programmer and Tools (Standard Edition) - Found under the "Additional Software" tab. Requires free account creation to download. I have used both the latest (v16.1) and the older 13.1 version linked on Tim's page.
2. Altera compatible USB Blaster (JTAG Programmer) - I use the Terasic P0302. Other Altera clones work too.
3. Altera JTAG to NESRGB JTAG adapter. Here's what I created, followed by a wiring table.



Altera JTAG Pin NESRGB Pin Signal Name Description
4 1 VCC (TRGT) 3.3V DC power supply
2 2 GND Ground
3 3 TDO Data from device
1 4 TCK Clock signal
9 5 TDI Data to device
5 6 TMS JTAG state machine control

The NESRGB has a 6 pin JTAG programming connection on the lower left hand side of the board. Pin 1 is encircled.

 

Steps to update the NESRGB firmware 

  1. Install Quartus Programmer software
  2. Connect USB Blaster to your computer and install driver (default location for v16.1 drivers: C:\intelFPGA\16.1\qprogrammer\drivers)
  3. Run Quartus Prime 16.1 Programmer
  4. Click Hardware Setup and select USB-Blaster from the list.
  5. Select File → Open → palettes1_NESCAP_HYBRID_NESCLASSIC.pof or palettes2_NESCAP_HYBRID_FCEUX.pof
  6. Check the boxes for Program/Configure and Verify.
  7. While the NES is turned off, connect the USB Blaster to the adapter cable, then to the NESRGB. Make sure you connect the adapter correctly to the NESRGB JTAG connection!
  8. Turn the NES on, making sure that the adapter is making contact with the NESRGB JTAG connection (e.g. gently hold at an angle - gravity is enough)
  9. Click the Start button and wait for the process to complete!
  10. Once completed, turn off the NES, disconnect the JTAG adapter from the NESRGB, and enjoy!
Step 6 - Selecting firmware update actions

Step 7 - Connecting the USB Blaster to the NESRGB JTAG connection

Sunday, November 20, 2016

Retroactive's New 64drive HW2 - Now You're Playing with Ultra Power!

Retroactive recently began shipping their completely redesigned 64drive. It offers a solid alternative to the Everdrive 64 and provides a number of special development oriented features. The new HW2 features an Altera Cyclone IV FPGA and retires the Compact Flash (CF) interface in favor of a discretely positioned micro SD card slot and USB interface for N64 game development.

Here's a quick run down of the notable electrical components contained in this cartridge:
FPGA - Altera Cyclone IV (EP4CE10F17C8N)
2x SDRAM - Alliance Memory 1Gb DDR2-800 (AS4C128M8D2-25BCN)
USB Interface - FTDI Hi-Speed USB to Multipurpose UART/FIFO (FT232HQ)
ST 8Mbit Serial Flash memory (25P80VP)
Microchip Technology 8-bit MCU (PIC16F1613-I/ST)
Ai-Thinker Serial WIFI MCU module (ESP8266MOD)

What's most surprising is the inclusion of a Wi-Fi Module! When inquired as to it's usage, the tentative future feature is - "to [sic]be able to post doge pics on twitter from my N64".

A "fuller" review to come soon. So far everything I've tried with the ED64 v3 also works with the 64drive HW2. The UX is a bit nicer on the 64drive than the ED64!  Stay tuned!



 



Thursday, November 10, 2016

NES Classic Palette "Beta" - Sifting Through the Noise

Without further ado, here is my capture based extraction of the NES color palette used by the new NES Classic! Nintendo added a surprising feature - subtle active "noise" throughout the picture. I surmise this was to give a "magic" texture to the image for games with large flat fields of colors. See the following image capture with zoomed in snippet to observe the noise.

UPDATE: Release version of the NESCLASSIC.pal can be found here.

If you'd like to try my NESCLASSIC palette, you can download it here.