Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Wideboy64 CGB Software Info
- [Versions 1.00 & 1.01]
- Wideboy64 CGB v1.00 & v1.01 follow in the footsteps of the Famicom version (and SFC?). Its runtime (and updates) were freely provided on Intelligent System's public FTP server, mostly because it's useless on its own ;*) It's simpler than the AGB version that came after it or CGB 1.02, based on AGB hardware. Effectively, it's an IS64 with a Color Game Boy mounted on it.
- There is absolutely ZERO SGB support!
- These devices are built from an IS-Viewer so all normal IS64 registers still apply. CGB hardware is not known to be exposed to the runtime.
- Video output is indirect; video is generated by the CGB hardware, then adapted based on the user-provided color matrix, and ultimately the IS maps a 160x144 c16 version of the CGB's original output as a texture displayed by the N64. This is flushed as it's generated with no synchronization.
- Audio is generated by the CGB and output analog via the L/R audio pins. No audio is exposed to the N64.
- It should be noted that the hardware itself received a revision when CGB version 1.02 was released. Its addressing and use of cart interrupts for synchronizing frame packet generation are among several things shared with the AGB, so a simple runtime update won't suffice. There's a voltage difference between GB & GBA carts, making the likelihood of swapable runtimes relatively low (but not impossible).
- Known Mapped Addresses:
- B0200000 current P1 input (GB format)
- B0200004 Reset GB if 1. Init to 0, posts 1 if you hold R & press Z.
- B0200008
- B0200100 64-color ARGB color matrix, palette, pseudo-colorspace, or whatever else you'd like to call it. Used to convert CGB video to rgba16.
- B0200180
- B0300000 GB video (160x144 16bit)
- B030B400
- Known Version Differences:
- 1998.09.10 uses a different image for its numerals at 80042960 than 1998.09.14, also including a "." for decimals. Print DLs are likewise adapted.
- All known differences are limited to number printing functions. 9/14 has an additional function to print "." from the numeral set though this isn't actually visible on screen; the five-digit printer may also be unique. It properly clears the color adjust menu if switched to another menu instead of corrupting the display--which you can't normally do, but that's beside the point.
- Controls:
- (Note: these are not controller ports 1 & 2 but first and second used port!)
- P1 Controls:
- [+ Pad, A, B & Start buttons]
- Matching CGB controls.
- [Z or C Buttons]
- CGB Select Button.
- [L Button]
- Change filter mode for CGB video. (0:bi-level interpretation, 1:average, 2:point)
- [hold R & press Z]
- Reset.
- [Control Stick Up/Down]
- Screen scaling.
- P2 Controls:
- [Start]
- Open/close menu. P2 controls are used to navigate menus.
- [hold all C buttons & + Pad directionals]
- Force saving cur. settings to EEPROM; a normal controller must be modified to press all + directionals at once.
- Menus:
- Normally, the menu opens to page 3 with no option to access the other pages. Are they leftovers from the earlier versions? Maybe!
- 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
- (1) Info Window Only:
- From left to right:
- [5 digits]
- "Frame" counter; actually the total times the display function for the info window has been called.
- [3 digits "." 3 digits]
- Milliseconds for one "game" loop (send keys, read screen data, display things).
- [8 letters]
- Currently-pressed GB keys, "x" if not pressed. Left & right are inverted. Z & the C Buttons trigger "Select".
- (2) Pixel Position Menu (+ Info Window): displays coords for an on-screen white pixel moved with + or C. If ypos > 72 moves the coords to the top, also affecting the display mode menu below. This position is saved to EEPROM, if present.
- [press C buttons]
- Move one pixel at a time.
- [hold + pad]
- Move quickly.
- (3) Color Adjust Menu: sets the brightness plus the step & max levels of each color in *IS64* output. Basically, the first number sets the increment, the second the max level, brightness the number of rows until that max value is reached. So under default settings, A0A080FF is the brightest color at the end of the 8th row.
- [Left/Right]
- Select option.
- [Up/Down]
- Change value; this immediately posts to B0200100.
- [hold L & press R]
- Reset to initial settings.
- (4) Display Mode Menu (+ Info Window): changes *N64* output mode, independent of color-adjustment above.
- [Left/Right]
- Change video mode. {0:normal, 1:grayscale, 2:sepia, 3:inverted}
- EEPROM is optional, with both 4k and 16k supported. Only 0x48 bytes are used:
- 0x0 0x18 "WIDEBOY COLSET ver 1.00"; this ID string was NOT updated between versions.
- 0x18 8 {unused}
- 0x20 4 screen red step; default 10
- 0x24 4 screen red ceiling; default 20, max 31
- 0x28 4 screen green step; default 10
- 0x2C 4 screen green ceiling; default 20, max 31
- 0x30 4 screen blue step; default 10
- 0x34 4 screen blue ceiling; default 16, max 31
- 0x38 4 screen brightness; default 8, max 31
- 0x3C 4 pixel xpos; default 0.0, max 159.0
- 0x40 4 pixel ypos; default 0.0, max 143.0
- 0x44 4 color mode; default 0, (0:normal, 1:grayscale, 2:sepia, 3:inverted)
- -----------
- [Version 1.02 (WIP)]
- CGB v1.02 is similar to the AGB hardware setup but somewhat less complicated.
- Addresses have been remapped from 10000000 to 14000000 but are not significantly different. The entrypoint has moved, shifting the framebuffers below the executable.
- The background is now a ci8 image loaded after boot instead of a c16 image included in the runtime.
- Like the AGB units, the command register accepts more than just reset and frames are assembled from multiple packets. Transfers rely on cart interrupts.
- The identifier in EEPROM uses a different string but the values are all identical.
- (*Please note the below summary may be inaccurate as far as signals and behavior.)
- Known Mapped Addresses:
- B4200000 current P1 input (GB format)
- B4200004 command
- 1 Reset GB
- 2 Toggle video generation? Written before & after sending color matrix.
- 4 Request new set of frame packets. (see below)
- B4200008
- B4200100 64-color ARGB color matrix
- B4200180
- Video is sent using six reads, each providing 1/6 of the current video frame. A cart interrupt is fired when the IS has prepared a packet, then it's read by the software. Final size is 160x144.
- B4300000 cur. video data
- 0x0 0x1E00 160x24 of c16 video data
- 0x1E00 2 {unknown}
- 0x1E02 2 current frame packet (0~5, displayed after part 5 is read)
- 0x1E04 0x1C {unknown}
- B4301E20
- v1.02 EEPROM; only 0x3C appears to be used:
- 0x0 0x18 "WIDEBOY version 1.02"
- 0x18 8 {unused}
- 0x20 4 screen red step; default 10
- 0x24 4 screen red ceiling; default 20, max 31
- 0x28 4 screen green step; default 10
- 0x2C 4 screen green ceiling; default 20, max 31
- 0x30 4 screen blue step; default 10
- 0x34 4 screen blue ceiling; default 16, max 31
- 0x38 4 screen brightness (effectively gradient rows); default 8, max 31
- -Zoinkity
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement