Speedrunning Super Game Boy Enhanced Games
A lot of research has been going on in the background concerning how SGB Enhanced games perform on different setups. Originally pld already found out that some games seemed to be running slower than normal when using a Super Game Boy 2 (and of course on SGB1 but as that one runs too fast by default we didn't take this further into consideration). Recently Nudua put the problem under the scope and has come up with some very interesting details. Below you can read about his findings.
Note: This only applies to Super Game Boy (SGB)-Enhanced games (Custom border, palettes, colors and even sounds) i.e. Donkey Kong Land Series, DK '94, Pokemon, Mega Man V etc. This applies to the Super Game Boy (1) (PAL/NTSC) and Super Game Boy 2 (NTSC-J-Japan Only). When I write SGB, I'm refering to both versions, although the time loss is written in regards to the SGB2.
Short version: You lose time everywhere in SGB-enhanced games because special SGB features takes time to execute.
SGB-enhanced games transfer data from and to the SNES by sending SGB command packets, to set palette/graphics/attributes and more. This causes the GB CPU to do more work which results in SGB-enhanced games to run about 5.6 frames~ (0.09375sec~) (rough estimate) slower for each command packet sent. Or even more if it forces the SNES to change the SGB-border (which is why very few Pokemon runners use a SGB2). Over an entire run there will have been sent hundreds if not thousands of these packets causing a significant time loss overall.
Couple of examples:
Donkey Kong Land 2 will lose 0.7~ seconds going from the start of the game to the first level because it sends 7 SGB specific command packets. (Comparisons made on Console, SGB2)
Mega Man V, selecting the robot master Neptune will lose you 0.52~ seconds because of 5 SGB Command packets. (Directly compared from MrCab and Tremane's pbs)
Disabling SGB features from a game: (patching)
I've made a rom patcher that disables all the routines that are used to start communicating with SGB, generally there will be 1-3 of these in a sgb enhanced gb rom. This will make the game think it's running on an original game boy instead of a SGB and there will be no SGB command packets sent.
http://nudua.com/sgb (note that it may not work for all games, some might need custom patching)
Viewing SGB Packets: You can use BGB in Super Game Boy mode to view all the command packets being send via the Debugger (Window-> SGB Packets). They are usually sent during the start of the game, during screen transitions and when they need to update the custom SGB palette and attribute data.
Now what does this mean exactly for the Game Boy speedrunning community? After some discussion over this, the general consensus is that this changes nothing. Denying the use of particular hardware or software just for SGB Enhanced games in general would be a bad idea. Patching roms for use on emulator (or even Everdrive) is a nifty trick, but this would make things even harder to moderate and probably should not be used.
Runners of a specific SGB Enhanced game should first and most be aware of this situation and apply rules if they feel this is necessary. Here are some suggestions:
- The "best" solution to get the SGB Enhanced games running as they are intended to run would be to use a Game Boy Player. This totally negates all effects the enhancements provide to the game, thus making the game run at the original speed.
- To be consistent between emulator and actual hardware, emulator players would have to use the SGB function on BGB (the only emulator as of today that has this functionality) and console players would have to use the SGB2. OR emulator players should use any emulator without use of the SGB function and hardware users should use the GBP.
Again, all of this is just to inform people about the difficulties that rise when speedrunning an SGB Enhanced game. These are NOT general rules trying to deny players to use the software or hardware they intend to use to speedrun these games. The community of a specific game will have to decide for themselves wether or not to apply any new rules.
You can find a list of all Super Game Boy Enhanced games here: https://en.wikipedia.org/wiki/List_of_Super_Game_Boy_games
Note: All of this information has also been added to the Game Boy Speedrunning Explained page for future reference