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

Notes:Super Game Boy

From The Cutting Room Floor
Jump to navigation Jump to search

This page contains notes for the game Super Game Boy.

Blank.png
Games With Unused Commands

Super Game Boy 1 and 2/Games With Unused Commands

Starting off abruptly because most of my notes were lost. This page will consist of a few RAM addresses, ROM offsets and general disassembly information explaining various functions about both of the BIOS revisions. This page will also condense the wiki removing games that have SDK listings slabbed here instead. This will take a while to complete. This is not going to be the work of a single editor, as I have no time. Everyone should contribute in some way.

  • First: List all games that have SDK command listings and all variations. This DOES NOT include games that have game-specific dummied commands.
  • Second: Create a table and delete the pages that have sole listings as their content.
  • Third: Explain all command functions.

All games marked with * have sole SDK content.

SDK Game Listing:

  • Animal Breeder
  • Animal Breeder 2
  • Battle Arena Toshinden (Game Boy)
  • Chou Mashin Eiyuu Den Wataru: Mazekko Monster 2
  • Beatmania GB
  • Beatmania GB2: Gotcha Mix
  • From TV Animation One Piece: Maboroshi no Grand Line Boukenhen!
  • From TV Animation One Piece: Yume no Luffy Kaizokudan Tanjou!
  • Juukou Senki Bullet Battlers
  • Kuma no Puutarou: Takara Sagashi da Ooiri Game Battle!
  • Money Idol Exchanger (Game Boy)
  • Monster Rancher Battle Card GB

Additional SDK Info

Remnants of attribute file register commands and system palette commands. It is possible to construct the screen division and all other attribute settings forming an extremely vague "shadow" image. The second problem is that it is unknown what palettes go where to reconstruct the SDK image, which could be anything. Here is the complete SDK listing derived from all the long listings found in various games:

01EA4FE003600220013F011F000B0000 - PAL01
09EA4F007C005C00283F05393ADD4E00 - PAL23
11FF7FDA5A9431BF14E001BF02000000 - PAL12
19386B5056883DA0284800393ADD4E00 - ATTR_LIN
2102030901010505020607070E0E0000 - ATTR_BLK
2902AF42000000000000000000000000 - ATTR_CHR
31270600000000000000000000000000 - ATTR_DIV
39000028000000000000005555555555 - ATTR_CHR
41010003000000000000000000000000 - SOUND
49000000000000000000000000000000 - SOU_TRN
510000010002000300C0000000000000 - PAL_SET
59000000000000000000000000000000 - PAL_TRN
61000000000000000000000000000000 - ATTR_EN
69010000000000000000000000000000 - TEST_EN
69000000000000000000000000000000 - TEST_EN
71000000000000000000000000000000 - ICON_EN
7900807E0B0102030405060708090A0B - DATA_SND
8100807F000000000000000000000000 - DATA_TRN
89030000000000000000000000000000 - MLT_REQ
9100807F00887F000000000000000000 - JUMP
99020000000000000000000000000000 - CHR_TRN
A1000000000000000000000000000000 - PCT_TRN
A9000000000000000000000000000000 - ATTR_TRN
B1000000000000000000000000000000 - ATTR_SET
B9010000000000000000000000000000 - MASK_EN
C1010000000000000000000000000000 - OBJ_TRN
510500060007000800C1000000000000 - PAL_SET
41000000010000000000000000000000 - SOUND
99000000000000000000000000000000 - CHR_TRN
B9000000000000000000000000000000 - MASK_EN
21010300000013110000000000000000 - ATTR_BLK
89030000000000000000000000000000 - MLT_REQ
41090000000000000000000000000000 - SOUND
41120000000000000000000000000000 - SOUND
41250000000000000000000000000000 - SOUND
41250001000000000000000000000000 - SOUND
41160002000000000000000000000000 - SOUND
41070000000000000000000000000000 - SOUND
41020000000000000000000000000000 - SOUND

RAM Functions:

  • 7E0F0A:?? - MASK_EN enable (00-01).
  • 7E0F00:01 - Enable ATR_TRN mode.
  • 7E0F04:01 - Enable PAL_TRN mode.
  • 7E0F06:01 - Prevents the menu from rendering until selection is made.
  • 7E0F07:0? - Enable ICON_EN mode (00 - enable all; 01 - disable palette selection; 02 - disable controller selection; 03 - disable all; 04 - wraparound to 00).
  • 7E0F4A:01 - Enables PAL_PRI mode.
  • 7E0F4B:01 - Initial border is not forced to load.
  • 7E0F4D:01 - Enables PCT_TRN mode.

PAL_SET Games

SGB PALSET 04 ATTRTRN 00.png

Games that have black and white palettes via PAL_SET command will display an overlay resembling an in-game setting if the first bit is set to any non-zero value, possibly a remnant of the Super Game Boy Tech Demo or SDK. ATTR_TRN must be set to 00 as it is the only valid attribute file that will display the overlay. Setting the file past 00 will load garbage data. This example images sets the palette to 04.

Game Boy Game Genie codes are provided to show the overlay in-game.

5100000000000000000000000000000

Notable games:

  • Daikaijuu Monogatari: Poyon no Dungeon Room - ??1-C7B-E6A
  • Super Robot Taisen: Link Battler - ??1-C2B-E6A
  • Super B-Daman - Fighting Phoenix - ??1-CFB-E6A
  • Chousoku (SS) Spinner - ??1-C2B-E6A
  • Tetris Attack - 044-C7C-E6A

Super Game Boy ROM Information:

DATA_SND

Code 0F DATA_SND. Command 79. Data Send. Used to send up to 11 bytes of data per packet to an arbitrary address in SNES WRAM.

Most Super Game Boy enhanced games send the following sequence of DATA_SND packets at startup (The Smurfs and Elite Soccer are two games that do not):

79 5D 08 00 0B 8C D0 F4 60 00 00 00 00 00 00 00
79 52 08 00 0B A9 E7 9F 01 C0 7E E8 E8 E8 E8 E0
79 47 08 00 0B C4 D0 16 A5 CB C9 05 D0 10 A2 28
79 3C 08 00 0B F0 12 A5 C9 C9 C8 D0 1C A5 CA C9
79 31 08 00 0B 0C A5 CA C9 7E D0 06 A5 CB C9 7E
79 26 08 00 0B 39 CD 48 0C D0 34 A5 C9 C9 80 D0
79 1B 08 00 0B EA EA EA EA EA A9 01 CD 4F 0C D0
79 10 08 00 0B 4C 20 08 EA EA EA EA EA 60 EA EA

When the packet headers are stripped and the packet data put in order according to the destination addresses, it forms the following 65816 machine code:

00/0810: 4C 20 08      jmp $0820
00/0813: EA            nop
00/0814: EA            nop
00/0815: EA            nop
00/0816: EA            nop
00/0817: EA            nop
00/0818: 60            rts
00/0819: EA            nop
00/081A: EA            nop
00/081B: EA            nop
00/081C: EA            nop
00/081D: EA            nop
00/081E: EA            nop
00/081F: EA            nop
00/0820: A9 01         lda #$01
00/0822: CD 4F 0C      cmp $0C4F
00/0825: D0 39         bne $0860
00/0827: CD 48 0C      cmp $0C48
00/082A: D0 34         bne $0860
00/082C: A5 C9         lda $C9
00/082E: C9 80         cmp #$80
00/0830: D0 0C         bne $083E
00/0832: A5 CA         lda $CA
00/0834: C9 7E         cmp #$7E
00/0836: D0 06         bne $083E
00/0838: A5 CB         lda $CB
00/083A: C9 7E         cmp #$7E
00/083C: F0 12         beq $0850
00/083E: A5 C9         lda $C9
00/0840: C9 C8         cmp #$C8
00/0842: D0 1C         bne $0860
00/0844: A5 CA         lda $CA
00/0846: C9 C4         cmp #$C4
00/0848: D0 16         bne $0860
00/084A: A5 CB         lda $CB
00/084C: C9 05         cmp #$05
00/084E: D0 10         bne $0860
00/0850: A2 28         ldx #$28
00/0852: A9 E7         lda #$E7
00/0854: 9F 01 C0 7E   sta $7EC001,x
00/0858: E8            inx
00/0859: E8            inx
00/085A: E8            inx
00/085B: E8            inx
00/085C: E0 8C         cpx #$8C
00/085E: D0 F4         bne $0854
00/0860: 60            rts

This code is most likely a patch for some kind of bug in the Super Game Boy BIOS. Revision B of the SGB BIOS and the SGB2 BIOS both contain this code in ROM and copy it to SNES WRAM themselves before booting the inserted Game Boy game.

The code seems to hide the SNES OBJs (objects/sprites) in certain situations. This might have been connected to OBJ_TRN, the SGB command that was supposed to be able to display SNES OBJs, but which was never used (and was stubbed out in later revisions of the SGB). See discussion: https://forums.nesdev.org/viewtopic.php?f=12&t=16610

Some games additionally send the following packets:

Hmmm...
To do:
Which games? Supposedly games that use the SOUND_TRN command do, but Donkey Kong uses SOUND_TRN and it doesn't send these packets.
79 00 09 00 0B AD C2 02 C9 09 D0 1A A9 01 8D 00
79 0B 09 00 0B 42 AF DB FF 00 F0 05 20 73 C5 80
79 16 09 00 0B 03 20 76 C5 A9 31 8D 00 42 68 68
79 21 09 00 01 60 00 00 00 00 00 00 00 00 00 00
79 00 08 00 03 4C 00 09 00 00 00 00 00 00 00 00

When stripped and put in order, these packets form the following 65816 machine code, which is also likely to be a bugfix patch:

00/0800: 4C 00 09      jmp $0900
(skip)
00/0900: AD C2 02      lda $02C2
00/0903: C9 09         cmp #$09
00/0905: D0 1A         bne $0921
00/0907: A9 01         lda #$01
00/0909: 8D 00 42      sta $4200
00/090C: AF DB FF 00   lda $00FFDB
00/0910: F0 05         beq $0917
00/0912: 20 73 C5      jsr $C573
00/0915: 80 03         bra $091A
00/0917: 20 76 C5      jsr $C576
00/091A: A9 31         lda #$31
00/091C: 8D 00 42      sta $4200
00/091F: 68            pla
00/0920: 68            pla
00/0921: 60            rts

This code seems to disable the H+V IRQ during SOU_TRN.

PAL_PRI

While not technically unused, this feature is obscure enough to note. Code 19 PAL_PRI. Palette Priority. Command C9, when bit 01 is set to 00, palettes switch back to default enhanced palette scheme when directed to by the game when any system palette changes are made.

Notable games that used this feature include Kirby's Dream Land 2, Donkey Kong, Donkey Kong Land, and others.

ICON_EN

Code 0E ICON_EN. Icon Enable. Command 71. Primarily used to disables in-game palette and or controller selection schemes which can be disabled by the game developer; however border selection cannot be disabled. Palette disabling would serve games like Uno 2: Small World where custom Super Game Boy palettes are required in order to play. Games may have overlaid the action window with a custom SNES object or in certain instances where switching away from the intricate palette set would make certain elements of the game look glitched-out or distorted.

Disabling controller menu selection schemes could have been used to prevent the player from abusing the A button and cheating in certain games, or may benefit the player preventing them from skipping over answers in quiz games such as Tokimeki Memorial Pocket: Culture-hen: Komorebi no Melody and Tokimeki Memorial Pocket: Sports-hen: Koutei no Photograph, the only two games that solely disable controller selection schemes.

Alternatively, palettes can be set to revert back to the original once changed by using Super Game Boy command packet C9 and bit set to 01.

Secrets

A few small hidden features exist in the Super Game Boy BIOS, and can be accessed with different L and R combinations.

Screensavers

Enter L, L, L, L, R to enable screensavers for borders 4-10. This won't work with the default "Super Game Boy" border, the black border, or Super Game Boy-enhanced custom borders. Animaniacs, both versions of Wario Land II, and Pocket Densha 1 and 2 are the only Game Boy games to disable screensavers via setting the Super Game Boy command ATRC_EN to bit 01. Different screensavers are available with the new Super Game Boy 2 borders.

Credits

Entering R, R, R, L, L, L, R, R, R, R, R, R, R during gameplay will bring up the Super Game Boy credits. The Super Game Boy 2 features a different credits screen, with new music and flashy neon.

Warning: There is no way to return to the game upon entering the credits save for restarting the system.

Janitor

Draw whatever you want in the graffiti editor, and wait a few minutes; a janitor will clean up your paint! Press any button, and your custom border will return.

Super Game Boy 2

Super Game Boy Borders

Select the black border and press L, L, L, L, R to access the Super Game Boy borders, complete with their respective screensavers. Enter L, L, L, L, R again on the black border to access the Super Game Boy 2 borders.

Change the Super Game Boy 2 border palette

Select the Super Game Boy 2 border and press L, L, L, L, R to cycle through the available palettes: grey (default), magenta, yellow, green, dark blue, dark red, inverted, and back to grey.

(Source: nensondubois and several others who have documented the Super Game Boy 1 and 2 BIOS)

Game Boy Internal Name Table

Starting at 0x3F000 is a list of internal ROM names used to detect specific games published or developed by Nintendo prior to 1994 and apply a single predefined palette out of the 32 defaults. Regional and revised versions tend to share internal names and display using the same palette, although in some cases the internal name was changed for different regions and each had to receive their own entry in the table (e.g. YOSSY NO TAMAGO and MARIO & YOSHI are separately defined).

Broadly, supported games tend to have been those published by Nintendo in Japan, though Kid Icarus: Of Myths and Monsters (not released in Japan) is a notable exception. A small handful of pre-Super Game Boy Nintendo games have no specified palette. These include Magnetic Soccer, Play Action Football, Super R.C. Pro-Am, Top Rank Tennis and Wave Race, none of which were released in Japan, and more surprisingly, Radar Mission, which was released worldwide.

Internal Name Title Palette
ZELDA The Legend of Zelda: Link's Awakening 1-E
SUPER MARIOLAND Super Mario Land 1-F
MARIOLAND2 Super Mario Land 2: 6 Golden Coins 3-D
SUPERMARIOLAND3 Wario Land: Super Mario Land 3 1-B
KIRBY DREAM LAND
HOSHINOKA-BI
Kirby's Dream Land
Hoshi no Kirby
2-C
KIRBY'S PINBALL Kirby's Pinball Land 1-C
YOSSY NO TAMAGO
MARIO & YOSHI
Yossy no Tamago
Yoshi
2-D
YOSSY NO COOKIE
YOSHI'S COOKIE
Yossy no Cookie
Yoshi's Cookie
1-D
DR.MARIO Dr. Mario 3-B
TETRIS Tetris 3-A
YAKUMAN Yakuman 3-C
METROID2 Metroid II: Return of Samus 4-G
KAERUNOTAMENI Kaeru no Tame ni Kane wa Naru 2-A
GOLF Golf 3-H
ALLEY WAY Alleyway 3-F
BASEBALL Baseball 2-G
TENNIS Tennis 3-G
F1RACE F-1 Race 4-F
KID ICARUS Kid Icarus: Of Myths and Monsters 2-F
BALLôôN KID Balloon Kid 1-A (default)
QIX Qix 4-A
SOLARSTRIKER SolarStriker 1-G
X X 4-D
GBWARS Game Boy Wars 3-E

Balloon Kid (which appears as BALLôôN KID in the Super Game Boy ROM table, yet is named BALLOON KID in the Game Boy ROM header) uses the default palette. Most likely, Nintendo wanted to acknowledge the game but couldn't find a suitable palette or were too lazy to create a new palette.

(Source: nensondubois)

Games With Sole SDK Content

Games that have SDK (more than one different SDK are assumed to exist based on differentials in code). It is unknown what revision numbers are associated with each listing.

Initial D Gaiden

Unused Super Game Boy Features

The game loads the entire table in RAM which is unusual. The table is also stored in a standard ROM listing. They are also loaded in the main table but the game never calls nor reads them from joypad registers.

PAL_SET

GameShark code 0180A9CB will load an unused black-and-white palette located at 0x6892.

51000001000200030080000000000000
ATTR_CHR

Present at 0x6872 and loaded at 0x156C is a single unused ATTR_CHR command. It is unknown where this could have been used. Game Genie code 726-0FE-3B4 will load the unused ATTR_CHR instead of ATTR_TRN.

SOUND

Present at 0x2DB4 and loaded at 0x1578 is a single unused SOUND command. It is unknown where this could have been used. Game Genie codes 826-0FE-3B4 ??8-839-E6A ??8-849-E6A ??8-859-E6A ??8-869-E6A will play any internal Super Game Boy sound effect and/or BGM setting replacing ATTR_TRN.

Monopoly

MLT_REQ

Monopoly was at some point going to support 4-Player, which would have worked quite well. The MLT_REQ command (89030) located at 0x68E7. Game Genie code 9E76-0FE-3B4 will load MLT_REQ 03. Joypad registers for all four controllers will not be initiated.

Kuma no Puutarou - Takara Sagashi da Ooiri Game Battle!

Unused Super Game Boy Commands

Kuma no Puutarou - Takara Sagashi da Ooiri Game Battle! is one of the many games that contains a completely unused set of Super Game Boy commands that are likely remnants of a Nintendo tech demo or devkit given to developers to see the many available enhancements in action. Starting at 0x3800 is the full listing.

01EA4FE003600220013F011F000B0000 - PAL01
09EA4F007C005C00283F05393ADD4E00 - PAL23
11FF7FDA5A9431BF14E001BF02000000 - PAL12
19FE6B5C3BDC1A0000F8206559000000 - ATTR_LIN
19FE6BDC3A763A0000DC3A763A000000 - ATTR_LIN
2102030901010505020607070E0E0000 - ATTR_BLK
2902AF42000000000000000000000000 - ATTR_CHR
31270600000000000000000000000000 - ATTR_DIV
39000028000000000000005555555555 - ATTR_CHR
41010003000000000000000000000000 - SOUND
49000000000000000000000000000000 - SOU_TRN
510000010002000300C0000000000000 - PAL_SET
59000000000000000000000000000000 - PAL_TRN
61000000000000000000000000000000 - ATRC_EN
69010000000000000000000000000000 - TEST_EN
69000000000000000000000000000000 - TEST_EN
71000000000000000000000000000000 - ICON_EN
7900807E0B0102030405060708090A0B - DATA_SND
8100807F000000000000000000000000 - DATA_TRN
89030000000000000000000000000000 - MLT_REQ
9100807F00887F000000000000000000 - JUMP
99020000000000000000000000000000 - CHR_TRN
A1000000000000000000000000000000 - PCT_TRN
A9000000000000000000000000000000 - ATTR_TRN
B1000000000000000000000000000000 - MASK_EN
B9010000000000000000000000000000 - MLT_REQ
C1010000000000000000000000000000 - OBJ_TRN
510500060007000800C1000000000000 - PAL_SET
41000000010000000000000000000000 - SOUND
99000000000000000000000000000000 - CHR_TRN
B9000000000000000000000000000000 - MLT_REQ
21010300000013110000000000000000 - PAL
89030000000000000000000000000000 - MLT_REQ
41090000000000000000000000000000 - SOUND
41120000000000000000000000000000 - SOUND
41250000000000000000000000000000 - SOUND
41250001000000000000000000000000 - SOUND
41160002000000000000000000000000 - SOUND
41070000000000000000000000000000 - SOUND
41020000000000000000000000000000 - SOUND
795D08000B8CD0F46000000000000000 - DATA_SND
795208000BA9E79F01C07EE8E8E8E8E0 - DATA_SND
794708000BC4D016A5CBC905D010A228 - DATA_SND
793C08000BF012A5C9C9C8D01CA5CAC9 - DATA_SND
793108000B0CA5CAC97ED006A5CBC97E - DATA_SND
792608000B39CD480CD034A5C9C980D0 - DATA_SND
791B08000BEAEAEAEAEAA901CD4F0CD0 - DATA_SND
791008000B4C2008EAEAEAEAEA60EAEA - DATA_SND
(Source: nensondubois)