If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Wideboy64 CGB

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Wideboy64 CGB

Developer: Intelligent Systems
Platform: Nintendo 64


MinigameIcon.png This game has unused modes / minigames.
Carts.png This game has revisional differences.


Wideboy64 CGB units were industry-only tools to run Color Game Boy games on N64 hardware--and little else. Software updates (aka the ROMs) were available for free on Intelligent System's public FTP server, mostly because they're useless on their own. The N64 can send controller data, read the video frame (indirectly), and little else. Audio is untouched, output directly through the left & right analog audio pins.

There were two major, incompatible hardware revisions. ROM versions 1.00 & 1.01 ran on the first revision, 1.02 on the second.

Controls

A user manual was not provided.

  • Pressing the L Button on controller 1 cycles different texture filter moves for GB output. It starts at bi-level interpolation, then average, and finally point filtered before looping back around.
  • Use controller 1's Control Stick to scale the display.
  • Hold the R Button and press Z to reset the CGB.
  • On controller 2, holding all of the C Buttons and all four directions on the D-Pad at the same time forcefully flushes the current settings to EEPROM, if available.

Hidden Menu Pages

Pressing Start on controller 2 opens a color adjustment menu, but this is page 3 of a larger menu. If you can manually set the page number (and probably can via the IS-Debugger) then write the page you want to these addresses:

  • 1998.09.10 cur. menu: 80042A38
  • 1998.09.14 cur. menu: 80042CE8

Page 1 Info Window

Wideboy64 101-page1.png

Page 1 displays an information window just below the video output. The info window is also displayed on pages 2 & 4.

The five digits on the left are a counter that increments each time this display function is called. It starts when the window is first opened, but doesn't correlate directly to N64 or GB frames.

The two sets of three digits in the middle count the milliseconds for one game loop. This starts from polling and sending controller input, reading the current video frame from the device, and ends after displaying the screen.

The eight letters on the right are controller input sent to the GB. For some reason, left and right are reversed. The Z and C Buttons are all read as Select.

Page 2 Pixel Position Window

Wideboy64 101-page2.png

This window displays the coordinates of a white pixel you can move on the screen. These coordinates are saved back to EEPROM, if available.

Pressing the C Buttons moves it one unit at a time, and holding the D-Pad moves it quickly.

If the y position exceeds 72, the coordinates are displayed at the top of the screen instead. This also changes the placement of page 4's menu.

Page 3 Color Adjustment Window

Wideboy64 101-page1.png

Normally this is the only available page of the menu. It generates a 64 color ARGB profile the IS64 uses to convert GB video output into a rgba16 N64 texture. All of these values are saved to EEPROM, if available.

Use Left & Right to select an option, then press Up & Down to change the value. The maximum for all values is 31. Any change immediately posts a new color profile to the hardware.

There is a hidden command as well. Hold the L Button and press the R Button to reset all of these values to their default settings.

Page 4 Display Mode Window

This changes the N64's output mode, independent of the color profile sent to the device. Press Left & Right to select one of the four modes. This setting is saved to EEPROM, if available.

  • 0: Normal output. The video frame is not modified.
  • 1: Grayscale.
  • 2: Sepia.
  • 3: Inverts all colors.

Revisional Differences

Version 1.01 closed a handful of display bugs present in v1.00. With a full IS-Debugger setup you could update the Wideboy64 to this new version, so it's unsurprising how few units were upgraded.

v1.00 v1.01
Wideboy64 100-numerals.80x8.png Wideboy64 101-numerals.88x8.png

The numerals were replaced with ones matching the weight of the letters, adding a decimal to the end of the font. All number printers were adapted to the new width, an additional function was added to print the decimal point (though it isn't visible due to the way it was set), and an additional unused function was added for differently sized numerical strings.

v1.00 v1.01
Wideboy64 100-page1.png Wideboy64 101-page1.png

Version 1.00 had a display bug where it didn't clear the text from previous menus if you switched pages without closing it entirely. To be fair, there isn't a way to switch pages so it's not surprising this bug went unnoticed.

Version 1.02

CGB version 1.02 doesn't look much different to an end user but is remarkably different from its predecessors. The hardware setup is more akin to the Wideboy64 AGB. It remaps all hardware addresses from 10000000 to 14000000. The entrypoint was moved and framebuffers relocated. The background is now a color-indexed image loaded after boot instead of an embedded rgba16 image. The EEPROM identifier was changed and now that the other menu pages finally removed, only color profile data is stored.

Like the AGB units, the reset register was adapted into a command register. It can now toggle video generation on and off and, most importantly, request video frames. Whereas earlier versions provided the last full video frame a a fixed address, newer units send video as a series of 160x24 strips. 4 is written to the command register, and then the N64 waits for a cart interrupt to indicate the next video packet is ready. Each packet is tagged with an ID. When the sixth packet is received, the frame is generated and displayed on-screen. The (presumptive) advantage to this setup is synchronization with underlying GB hardware.