Tuesday, June 29, 2021

The Sonic Robo Blast 2 Kart Custom Skincolor Extravaganza

Going into this article, you’re probably wondering where did I get an idea like this from? Well, back in 2019 I spent quite a bit of time making custom mock-up colors for Sonic Robo Blast 2 Kart and I teamed up with a user in the game’s community named Xkower to produce Collabcolors, a community-made color pack for Vanilla that operated as its own .exe. However, you could not bring these skincolors online into net games unless others also had the .exe and players without it would be displayed with the wrong skincolors. Vanilla Sonic Robo Blast 2 would give server hosts the ability to add on extra skincolors in Version 2.2.5 through scripts, whenever they be traditional skincolors, wild and wacky skincolors meant to be jokes, and a whole slew of animated skincolors.

Before jumping into the project, it's important to note that the game is capable of displaying up to 256 colors and cannot (outside of OpenGL mode) display any color outside that palette. Since Sonic Robo Blast 2 Kart was built from version 2.1, various changes that would occur in the palette to expand the versatility of the colors featured in the jump from version 2.1 to version 2.2 don't exist. However, you can use a program called SLADE to convert graphics in the 2.2 palette into the one featured in 2.1 and vice versa, and the alterations will be immediately noticeable. For instance, this is what happens if you take the 2.2 palette and convert it to 2.1:


*Pale yellows, depending on the shade, are converted into light yellow, light orange, or light beige.

*Rose pinks become pale pinks, matching the ones already in the game.

*Seafoam greens become light cyans on the lighter end and teals on the darker end.

*Royal purples are converted into light blues or dark magentas depending on the hue.

*The four brightest shades of magenta are lost- the brightest of them becoming might blue and the rest turning into the lightest shade of magenta available in a palette.


It gets a little better if you take the 2.1 palette and convert it into 2.2, with the only change worth noting is the different type of teal used between the two palettes. But anyways with the above notes in mind I began to backport the more unique colors from vanilla Sonic Robo Blast 2 version 2.2 into Kart. The list of converted skin colors, in addition to the customs mentioned further down the article can be found in this gallery. As everything in this portion was a “Vanilla” color by technicality, I opted to merge them with Kart’s vanilla list:

  1. White
  2. Bone (A shade of grey not in Kart, in Vanilla it serves as a counterpart to Silver)
  3. Silver
  4. Grey
  5. Carbon (A shade of grey not in Kart, in Vanilla it serves as a counterpart to Nickel)
  6. Nickel
  7. Black
  8. Jet (A darker version of Skunk in Vanilla instead of being a dark steel blue)
  9. Skunk
  10. Fairy
  11. Popcorn
  12. Artichoke
  13. Pigeon
  14. Azure (A light grey/steel blue mix instead of a teal/purple mix)
  15. Slate (Fills the upper half of the color ramp with greys instead of lighter steel blues)
  16. Bluebell (Resembles a lighter version of Kart’s “Jet” color)
  17. Sepia
  18. Beige
  19. Walnut
  20. Brown
  21. Leather
  22. Bronze (Vanilla’s version of the color Leather, with dark browns that fade into a dark grey)
  23. Tan (Uses the pale yellows which do not convert successfully to Kart, so light orange is used)
  24. Salmon
  25. Pink
  26. Rose
  27. Brick
  28. Cinnamon
  29. Ruby
  30. Raspberry
  31. Cherry
  32. Red
  33. Crimson
  34. Maroon
  35. Lemonade
  36. Flame
  37. Scarlet
  38. Ketchup
  39. Dawn
  40. Peachy (Has a more dominant use of peach and pinks compared to Kart’s Peach color)
  41. Quail (A light brown that fades into lavender)
  42. Sunset
  43. Copper (Has a more “rustic” look compared to Kart’s version)
  44. Creamsicle
  45. Apricot (A shade of orange with peach for the highlights)
  46. Orange
  47. Pumpkin
  48. Rosewood
  49. Burgundy
  50. Tangerine
  51. Peach
  52. Caramel
  53. Cream
  54. Gold
  55. Royal
  56. Sandy (Resembles Royal but has a greater amount of brown in the color)
  57. Bronze
  58. Copper
  59. Quarry
  60. Yellow (Uses dark yellows in the back half of the ramp instead of golds)
  61. Yellow
  62. Mustard
  63. Crocodile
  64. Olive
  65. Vomit
  66. Garden
  67. Lime
  68. Lime (Resembles a lighter version of Handheld than is more yellow than green)
  69. Peridot (A color that combines army greens with dark yellow to emulate lime green)
  70. Apple (A shade of yellow-green in-between Vanilla’s Lime and Kart’s Handheld)
  71. Handheld
  72. Tea
  73. Pistachio
  74. Moss
  75. Camouflage
  76. Robo-Hood
  77. Mint
  78. Seafoam (A pale green that fades into teal, adjusted to give the former more exposure)
  79. Green
  80. Pinetree
  81. Forest (A darker green in comparison to Pinetree)
  82. Emerald
  83. Swamp
  84. Dream
  85. Plague
  86. Algae
  87. Caribbean
  88. Azure
  89. Cyan (Retrofitted into a successor to Vanilla 2.1’s teal color, uses color 247 to sell the effect)
  90. Aqua
  91. Teal
  92. Cyan
  93. Wave (A light blue that fades into a dark purple, converted to Magenta)
  94. Icy (A lighter Jawz)
  95. Jawz
  96. Cerulean
  97. Navy
  98. Cerulean (A dark navy blue darker than the above two)
  99. Platinum
  100. Slate
  101. Steel
  102. Thunder
  103. Rust
  104. Wristwatch
  105. Jet
  106. Sapphire
  107. Periwinkle
  108. Blue
  109. Blueberry
  110. Nova
  111. Pastel
  112. Vapor (Similar to Wave, but uses light blues to make the color appear more purple)
  113. Purple (Doesn’t use magentas in Vanilla, unlike the “Purple” in Kart)
  114. Moonslam
  115. Ultraviolet
  116. Dusk
  117. Bubblegum
  118. Purple
  119. Neon (A darker version of Kart’s Purple color, known as Indigo in Kart Z)
  120. Plum (Darker version of the below color)
  121. Violet (Resembles Fuchsia but uses dull pinks to transition into the magentas)
  122. Raspberry (Fades into magenta at the end instead of being a shade of red)
  123. Fuchsia
  124. Toxic
  125. Mauve
  126. Lavender
  127. Byzantium
  128. Pomegranate
  129. Lilac (A lighter version of Pomegranate)
  130. Lilac

Most colors in Vanilla, excluding the very dark colors, end with a dark color of the color’s shade. In Kart, all but the lightest colors fade into pure black (color 31). You may also notice that several of the ported Vanilla 2.2 skincolors share their names with several of the Kart colors. No color between the two are 100% alike but to go over exactly how all the skincolors with the same name compare would take too much time out of this read, and the skin olors that were chosen to be ported over were the ones that I felt offered something new to the table or showed just how a skincolor like Peridot would work in Kart without the necessary colors they used in 2.2's palette in the ramp.


Of further note is Color 247, the bright neon cyan or teal. This color is never used in SRB2 and SRB2Kart’s internal graphics at any point, only seeing use to render transparency in textures in vanilla SRB2 and on skincolors in SRB2 2.1 and 2.2 (though in only one instance each). Meanwhile, Kart does not use color 247 for any skincolors by default, only using the darker teals that occupy Colors 220 through 223. It is still possible to see the color in-game if entering a colored sector that turns the sprites to a bright teal such as the underwater section of Paradise Hill Zone and through modding, players can add skins and sprites that use color 247. If the EXE is modded directly, skincolors that use color 247 can be added and will apply onto character skins without issue.


Still, there came the name conflicts and having to rename them all. The names chosen were influenced by some of the colors from the original Collabcolors, as well as the Mega Paint Drive (my spiritual successor for collabcolors) created for Vanilla and in one case, Super Sonic Robo Blast 2 Kart Z. Furthermore to ensure compatibility with the hundreds of characters in Kart already, none of the preexisting Kart colors had their names altered or ramps changed, and no character from the default cast or Bonuschars would have their prefcolors changed for consistency.

  • Jet -> Ink
  • Azure -> Ghost
  • Slate -> Marble
  • Copper -> Rust
  • Yellow -> Banana
  • Lime -> Sunflower
  • Cyan -> Frost
  • Cerulean -> Peacock
  • Purple -> Gemstone
  • Raspberry -> Magenta
  • Lilac -> Thistle

Following reconfiguring the Vanilla colors to better work alongside Kart’s, it was time to adapt the skincolors from Collabcolors. In the end, the ones I ultimately went with were colors I considered unique enough from both the Vanilla and Kart skincolor selections or had some other niche to warrant their inclusions. Understandably, this would mean a lot of colors from Collabcolors would be scrapped or receive major changes, and the colors that I did pick were the ones I considered “useful”, and which ones would work the best with custom characters in mind. In order to avoid dragging the number of colors through the roof, owing to the smaller number of available spots for extra colors in the .exe compared to Vanilla and the presence of the Vanilla recreations. The final list of add-on colors became:

  1. Diamond
  2. Raven
  3. Chocolate
  4. Earthworm
  5. Yogurt
  6. Pearl
  7. Strawberry
  8. Soda
  9. Bloodcell
  10. Mahogany
  11. Fiery
  12. Spice
  13. King
  14. Hot Dog
  15. Carnation
  16. Candy
  17. Nebula
  18. Steampunk
  19. Amber
  20. Carrot
  21. Cheese
  22. Dune
  23. Brass
  24. Lemon
  25. Casket
  26. Khaki
  27. Light
  28. Peppermint
  29. Laser
  30. Asparagus
  31. Army
  32. Crow
  33. Chartreuse
  34. Slime
  35. Leaf
  36. Evergreen
  37. Tropic
  38. Iguana
  39. Spearmint
  40. Patina
  41. Lakeside
  42. Electric
  43. Turquoise
  44. Pegasus
  45. Comet
  46. Lightning
  47. Vacation
  48. Ultramarine
  49. Depths
  50. Dianne
  51. Exotic
  52. Snow
  53. Moon
  54. Lunar
  55. Onix
  56. Lapis
  57. Orca
  58. Storm
  59. Midnight
  60. Cotton Candy
  61. Cyber
  62. Amethyst
  63. Iris
  64. Gothic
  65. Grape
  66. Indigo
  67. Magenta
  68. Disco
  69. Mulberry
  70. Boysenberry
  71. Plum
  72. Elderberry

The original plan called for 70 new skincolors but an extra two snuck in. The final result at least meets my specifications and 102 extra colors along with the original 100 is plenty enough. So then comes the tricky part: Getting everything into the game proper. Vanilla 2.2 has support for custom colors through addons- Kart, as you likely know, doesn’t. Thus, the only way to add the skincolors at this time would be to modify the .exe while steering away from changing/resorting the values of the skincolors. The only solution I could decide on would be appending the new skincolors to the end of the list after Lilac, starting with Bone from the Vanilla recreations and ending with Elderberry in the customs, keeping them as is from there or using the M_MoveColorBefore and M_MoveColorAfter functions in Vanilla to re-order the new skincolors alongside the 100 Kart colors while preserving their values.


The last bit I’ll mention (since this article is getting rather long) is the invcolor, short for Invert Color. This is the skincolor’s opposite on the RBY spectrum. Red uses Green, Blue uses Orange, Yellow uses Cyan, Black uses White, etc. This doesn’t apply to every skincolor, for instance Ketchup (a red skincolor) uses Mustard (a yellow skincolor) since they’re part of the same “condiments“ theme. This aspect of the invcolors would carry over to these new skincolors as well, either using the color’s direct opposite or another color based on the same theme. Vanilla 2.2 lets you pick which shade of the invcolor is used (out of 16), while Kart only has one shade (using the sixth color from the top of the ramp).


Any-who, that’s all I really got on this without dragging on the length of the post. I wanted to make this post and all the accompanying mock-ups more for the “What-If” novelty than anything else. Even if nothing comes out of these ideas I wanted to get them out into the wild anyways and I’ll admit it was fun re-creating all these in the time that it took.

No comments: