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

The Powerpuff Girls: Chemical X-Traction (Nintendo 64)

From The Cutting Room Floor
Jump to navigation Jump to search
Hmmm...
To do:
Document the prototype.

Title Screen

The Powerpuff Girls: Chemical X-Traction

Developer: VIS Entertainment[1]
Publisher: BAM! Entertainment[1]
Platform: Nintendo 64
Released in US: October 14, 2001[1]


SourceIcon.png This game has uncompiled source code.
CopyrightIcon.png This game has hidden developer credits.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
SoundtestIcon.png This game has a hidden sound test.
LevelSelectIcon.png This game has a hidden level select.


The Powerpuff Girls: Chemical X-Traction is a fighting game based off the engine of Tom and Jerry in "Fists of Furry". Contextually, there's a pie contest at the city of Townsville, and Bubbles adds Chemical X to the "perfect pie", which is eventually caught by Mojo Jojo and then eaten by all of Townsville's villains. Golly.

It also has the series' intro theme playing throughout the whole game.

Cheat Menu

PPGCXT CheatMenu.png

GameShark codes D00E5E09 0004 800E5E09 0005 replace the audio settings submenu with a simple cheat mode. Outside of the font and the Townsville backdrop, the menu is majorly unchanged from Fists of Furry.

  • Jom and Terry - increases the size of the player's models.
  • Small is Beautiful - decreases the size of the player's models.
  • Gravity Stinks - lowers gravity, making you capable of flying higher.


(Source: Mezmorize)

Debug Mode

PPGChemicalXTraction-DebugMenu.png

GameShark code 8106B108 1440 replaces the in-game pause menu with a rather feature packed debug system, including a level select, an AI settings editor, various cheats and several other development options. The emulator/console may be need to be reset in order to make it work. It's quite crash prone, too.

(Source: xdaniel)

Level Menus

PPGCXT Debug Level.png

A standard level select. It fails to display the correct stage names though.

Page 1 Page 2
Level Select Map Name Level Select Map Name
Intro Map Loads the startup screen with the rotating N64 logo. Kitchen 1 Him's Lair
Kitchen 1 Pokey Oaks Kindergarten Kitchen 1 Mojo's Volcano-Top Observatory
Kitchen 1 Townsville City Hall Kitchen 1 Fuzzy's Shack
Kitchen 1 The Bank
Kitchen 1 Townsville City Dump

AI Menu

PPGCXT Debug AI.png

Allows you to edit the behaviour of the characters. Setting any of them OFF makes it player-controlled while ON makes them play automatically as if it were a demo. Selecting AI Param locks the game.

Cheat Menu

PPGCXT Debug Cheat.png

A way bigger menu than the one in the next section.

  • Inf Time/Health/Ammo - switches infinite time, health and ammo, duh.
  • Weap Cheat - doesn't seem to do anything.
  • Char Select - allows you to change your character with the L and R-Triggers.
  • P1/P2 Pickups - brings up a screen in which you can select bonus perks.
  • Real Cheats - as if the previous options weren't enough, this option displays mirrored version of the hidden cheat select in the Options menu, albeit with different names.
    • Big John Little John - same as Jom and Terry.
    • Small is Beautiful - same as Small is Beautiful.
    • Walking on the Moon - same as Gravity Stinks.

Tools Menu

PPGCXT Debug Tools.png
  • Sound Events - locks the game.
  • Balance Audio - a sound test for all the game's sound effects.
  • Balance Music - similar sound test menu like the above, except this one is exclusively for the single music track in the game.
  • Balance Tools - load/save function. Selecting Default crashes the game as it requires additional hardware/software.
  • Video Tools - a simple menu for adjusting gamma, aliasing and dithering.
  • Debug Tools:
    • Realcam - enables a different (unused?) camera mode.
    • Timer - displays some colourful bars on screen.
    • FPS - triggers a simple frames per second display.
    • Heap Monitor - shows several statistics for the game's resources.
    • Compensate - doesn't seem to do anything.
  • QA Tools:
    • Freezeframe - freezes the game on the current frame.
    • Coords - shows the player's coordinates.



Unused Text

Offset A6D60 has a statement about textures and geometries by "Jim" (likely VIS staff member Jim McLeish).

Jim textures and geometries

A few bytes later, at A6D80 is this error message with many exclamation points.

!!!!!!!!!!!!! WARNING! RAM DATA HAS OVERRUN! !!!!!!!!!!!!!!!!

Starting at A916C are some links to various companies' sites, two of which didn't have any involvement in the making of this one. It's more than likely a leftover from Tom & Jerry in Fists of Furry, as NewKidCo and Ubisoft were that game's North American and European publishers, respectively.

www.warnerbros.com
www.newkidco.com
www.ubisoft.com
www.vis-plc.com

At offset A9698 is the following text that was probably intended for when the game was ran on a different region system (eg: NTSC version on a PAL N64).

This game is not designed for use on this system.

Offset AA820 has placeholder text for the character selection menu.

SELECT CHARACTER PART 2
PRESS START TO CONTINUE
PRESS THE A BUTTON TO UPDATE
START TO PLAY TEXT PART 2

Version Number

Offset A9680 has a version number.

???VERSION G 01 30 N64

Uncompiled Source Code

A list of C/C++ defines can be found at ROM offsets 5DCA30-5DF2CF:

#define SOUND_NOTPLAYED  0
#define SOUND_MENU_SCROLL1 1
#define SOUND_MENU_SCROLL1_2 2
#define SOUND_MENU_SCROLL1_3 3
#define SOUND_MENU_SELECT 4
#define SOUND_MENU_ERROR 5
#define SOUND_MAP_MENU_AMBIENCE1 6
#define SOUND_MAP_MENU_AMBIENCE1_2 7
#define SOUND_MAP_MENU_AMBIENCE1_3 8
#define SOUND_MAP_MENU_AMBIENCE1_4 9
#define SOUND_OBJECT_APPEAR 10
#define SOUND_OBJECT_POWER_UP 11
#define SOUND_PICKUP_CHEMICAL_X 12
#define SOUND_PICKUP_HEALTH 13
#define SOUND_FLY 14
#define SOUND_FLY_KICK 15
#define SOUND_HEAVY_HIT 16
#define SOUND_BLOCK 17
#define SOUND_PUNCH1 18
#define SOUND_PUNCH1_2 19
#define SOUND_PUNCH1_3 20
#define SOUND_PUNCH2 21
#define SOUND_PUNCH2_2 22
#define SOUND_PUNCH2_3 23
#define SOUND_PUNCH3 24
#define SOUND_PUNCH3_2 25
#define SOUND_PUNCH3_3 26
#define SOUND_PUNCH4 27
#define SOUND_PUNCH4_2 28
#define SOUND_PUNCH4_3 29
#define SOUND_SWIPE1 30
#define SOUND_SWIPE1_2 31
#define SOUND_SWIPE1_3 32
#define SOUND_SWIPE2 33
#define SOUND_SWIPE2_2 34
#define SOUND_SWIPE2_3 35
#define SOUND_SWIPE3 36
#define SOUND_SWIPE3_2 37
#define SOUND_SWIPE3_3 38
#define SOUND_SWIPE4 39
#define SOUND_SWIPE4_2 40
#define SOUND_SWIPE4_3 41
#define SOUND_JUMP_GIRLS1 42
#define SOUND_JUMP_GIRLS1_2 43
#define SOUND_JUMP_GIRLS1_3 44
#define SOUND_JUMP_BADIE1 45
#define SOUND_JUMP_BADIE1_2 46
#define SOUND_JUMP_BADIE1_3 47
#define SOUND_PLANT_POT 48
#define SOUND_PLANT_POT1_2 49
#define SOUND_PLANT_POT1_3 50
#define SOUND_GLUE 51
#define SOUND_BUILDING_BLOCKS1 52
#define SOUND_BUILDING_BLOCKS1_2 53
#define SOUND_BUILDING_BLOCKS1_3 54
#define SOUND_FIRE_EXTINGUISHER 55
#define SOUND_CHAIR_SMASH1 56
#define SOUND_CHAIR_SMASH1_2 57
#define SOUND_CHAIR_SMASH1_3 58
#define SOUND_WOOD_SMASH1 59
#define SOUND_WOOD_SMASH1_2 60
#define SOUND_WOOD_SMASH1_3 61
#define SOUND_SWEET_JAR1 62
#define SOUND_SWEET_JAR1_2 63
#define SOUND_SWEET_JAR1_3 64
#define SOUND_PHONE_SMASH 65
#define SOUND_BIG_CHAIR1 66
#define SOUND_BIG_CHAIR1_2 67
#define SOUND_BIG_CHAIR1_3 68
#define SOUND_PLINTH_SMASH 69
#define SOUND_BANK_NOTES 70
#define SOUND_GOLD 71
#define SOUND_DIAMOND 72
#define SOUND_SAFE_SMACK 73
#define SOUND_CASH_TILL 74
#define SOUND_RADIATOR 75
#define SOUND_QUEUE_SIGN 76
#define SOUND_SWAG_BAG 77
#define SOUND_METAL_CHAIR1 78
#define SOUND_METAL_CHAIR1_2 79
#define SOUND_METAL_CHAIR1_3 80
#define SOUND_LOCKER 81
#define SOUND_CAKE 82
#define SOUND_BUCKET 83
#define SOUND_CHEMICAL_BARREL 84
#define SOUND_MATTRESS 85
#define SOUND_RUBBISH_SACK 86
#define SOUND_FRIDGE1 87
#define SOUND_FRIDGE1_2 88
#define SOUND_FRIDGE1_3 89
#define SOUND_AEROSOL_SPRAY 90
#define SOUND_BANJO 91
#define SOUND_TYRE1 92
#define SOUND_TYRE1_2 93
#define SOUND_TYRE1_3 94
#define SOUND_BRICK1 95
#define SOUND_BRICK1_2 96
#define SOUND_BRICK1_3 97
#define SOUND_HAY_BALE1 98
#define SOUND_HAY_BALE1_2 99
#define SOUND_HAY_BALE1_3 100
#define SOUND_VASE_SMASH 101
#define SOUND_METAL_BATH 102
#define SOUND_ANIBUS_HEAD 103
#define SOUND_BRAIN_JAR 104
#define SOUND_PICTURE_SMASH1 105
#define SOUND_PICTURE_SMASH1_2 106
#define SOUND_PICTURE_SMASH1_3 107
#define SOUND_SEWING_MACHINE1 108
#define SOUND_SEWING_MACHINE1_2 109
#define SOUND_SEWING_MACHINE1_3 110
#define SOUND_VASE_STAND 111
#define SOUND_RECORD_PLAYER 112
#define SOUND_MIX_BOWL 113
#define SOUND_SUGAR1 114
#define SOUND_SUGAR1_2 115
#define SOUND_SUGAR1_3 116
#define SOUND_SPICE 117
#define SOUND_TEST_TUBES1 118
#define SOUND_MICROSCOPE 119
#define SOUND_TV_SMASH 120
#define SOUND_RECORDS1 121
#define SOUND_RECORDS1_2 122
#define SOUND_RECORDS1_3 123
#define SOUND_V_GUITAR 124
#define SOUND_LAMP_SMASH 125
#define SOUND_HEAVY_WEIGHTS 126
#define SOUND_POOF1 127
#define SOUND_POOF1_2 128
#define SOUND_POOF1_3 129
#define SOUND_DUCK 130
#define SOUND_AMBIENCE_FIRE 131
#define SOUND_FIRE_BALLS 132
#define SOUND_AMBIENCE_TOILET 133
#define SOUND_TOILET_GOO 134
#define SOUND_AMBIENCE_STEAM 135
#define SOUND_MOJO_SYNTH 136
#define SOUND_ACE_OUCH1 137
#define SOUND_ACE_OUCH1_2 138
#define SOUND_ACE_OUCH1_3 139
#define SOUND_ACE_OUCH2 140
#define SOUND_ACE_OUCH2_2 141
#define SOUND_ACE_OUCH2_3 142
#define SOUND_ACE_OUCH3 143
#define SOUND_ACE_OUCH3_2 144
#define SOUND_ACE_OUCH3_3 145
#define SOUND_ACE_OUCH4 146
#define SOUND_ACE_OUCH4_2 147
#define SOUND_ACE_OUCH4_3 148
#define SOUND_ACE_THROW1 149
#define SOUND_ACE_THROW1_2 150
#define SOUND_ACE_THROW1_3 151
#define SOUND_ACE_THROW2 152
#define SOUND_ACE_THROW2_2 153
#define SOUND_ACE_THROW2_3 154
#define SOUND_BUBBLES_OUCH1 155
#define SOUND_BUBBLES_OUCH1_2 156
#define SOUND_BUBBLES_OUCH1_3 157
#define SOUND_BUBBLES_OUCH2 158
#define SOUND_BUBBLES_OUCH2_2 159
#define SOUND_BUBBLES_OUCH2_3 160
#define SOUND_BUBBLES_OUCH3 161
#define SOUND_BUBBLES_OUCH3_2 162
#define SOUND_BUBBLES_OUCH3_3 163
#define SOUND_BUBBLES_OUCH4 164
#define SOUND_BUBBLES_OUCH4_2 165
#define SOUND_BUBBLES_OUCH4_3 166
#define SOUND_BUBBLES_THROW1 167
#define SOUND_BUBBLES_THROW1_2 168
#define SOUND_BUBBLES_THROW1_3 169
#define SOUND_BUBBLES_THROW2 170
#define SOUND_BUBBLES_THROW2_2 171
#define SOUND_BUBBLES_THROW2_3 172
#define SOUND_BIG_BILLY_OUCH1 173
#define SOUND_BIG_BILLY_OUCH1_2 174
#define SOUND_BIG_BILLY_OUCH1_3 175
#define SOUND_BIG_BILLY_OUCH2 176
#define SOUND_BIG_BILLY_OUCH2_2 177
#define SOUND_BIG_BILLY_OUCH2_3 178
#define SOUND_BIG_BILLY_OUCH3 179
#define SOUND_BIG_BILLY_OUCH3_2 180
#define SOUND_BIG_BILLY_OUCH3_3 181
#define SOUND_BIG_BILLY_OUCH4 182
#define SOUND_BIG_BILLY_OUCH4_2 183
#define SOUND_BIG_BILLY_OUCH4_3 184
#define SOUND_BIG_BILLY_THROW1 185
#define SOUND_BIG_BILLY_THROW1_2 186
#define SOUND_BIG_BILLY_THROW1_3 187
#define SOUND_BIG_BILLY_THROW2 188
#define SOUND_BIG_BILLY_THROW2_2 189
#define SOUND_BIG_BILLY_THROW2_3 190
#define SOUND_BLOSSOM_OUCH1 191
#define SOUND_BLOSSOM_OUCH1_2 192
#define SOUND_BLOSSOM_OUCH1_3 193
#define SOUND_BLOSSOM_OUCH2 194
#define SOUND_BLOSSOM_OUCH2_2 195
#define SOUND_BLOSSOM_OUCH2_3 196
#define SOUND_BLOSSOM_OUCH3 197
#define SOUND_BLOSSOM_OUCH3_2 198
#define SOUND_BLOSSOM_OUCH3_3 199
#define SOUND_BLOSSOM_OUCH4 200
#define SOUND_BLOSSOM_OUCH4_2 201
#define SOUND_BLOSSOM_OUCH4_3 202
#define SOUND_BLOSSOM_THROW1 203
#define SOUND_BLOSSOM_THROW1_2 204
#define SOUND_BLOSSOM_THROW1_3 205
#define SOUND_BLOSSOM_THROW2 206
#define SOUND_BLOSSOM_THROW2_2 207
#define SOUND_BLOSSOM_THROW2_3 208
#define SOUND_BUTTERCUP_OUCH1 209
#define SOUND_BUTTERCUP_OUCH1_2 210
#define SOUND_BUTTERCUP_OUCH1_3 211
#define SOUND_BUTTERCUP_OUCH2 212
#define SOUND_BUTTERCUP_OUCH2_2 213
#define SOUND_BUTTERCUP_OUCH2_3 214
#define SOUND_BUTTERCUP_OUCH3 215
#define SOUND_BUTTERCUP_OUCH3_2 216
#define SOUND_BUTTERCUP_OUCH3_3 217
#define SOUND_BUTTERCUP_OUCH4 218
#define SOUND_BUTTERCUP_OUCH4_2 219
#define SOUND_BUTTERCUP_OUCH4_3 220
#define SOUND_BUTTERCUP_THROW1 221
#define SOUND_BUTTERCUP_THROW1_2 222
#define SOUND_BUTTERCUP_THROW1_3 223
#define SOUND_BUTTERCUP_THROW2 224
#define SOUND_BUTTERCUP_THROW2_2 225
#define SOUND_BUTTERCUP_THROW2_3 226
#define SOUND_FUZZY_OUCH1 227
#define SOUND_FUZZY_OUCH1_2 228
#define SOUND_FUZZY_OUCH1_3 229
#define SOUND_FUZZY_OUCH2 230
#define SOUND_FUZZY_OUCH2_2 231
#define SOUND_FUZZY_OUCH2_3 232
#define SOUND_FUZZY_OUCH3 233
#define SOUND_FUZZY_OUCH3_2 234
#define SOUND_FUZZY_OUCH3_3 235
#define SOUND_FUZZY_OUCH4 236
#define SOUND_FUZZY_OUCH4_2 237
#define SOUND_FUZZY_OUCH4_3 238
#define SOUND_FUZZY_THROW1 239
#define SOUND_FUZZY_THROW1_2 240
#define SOUND_FUZZY_THROW1_3 241
#define SOUND_FUZZY_THROW2 242
#define SOUND_FUZZY_THROW2_2 243
#define SOUND_FUZZY_THROW2_3 244
#define SOUND_HIM_OUCH1 245
#define SOUND_HIM_OUCH1_2 246
#define SOUND_HIM_OUCH1_3 247
#define SOUND_HIM_OUCH2 248
#define SOUND_HIM_OUCH2_2 249
#define SOUND_HIM_OUCH2_3 250
#define SOUND_HIM_OUCH3 251
#define SOUND_HIM_OUCH3_2 252
#define SOUND_HIM_OUCH3_3 253
#define SOUND_HIM_OUCH4 254
#define SOUND_HIM_OUCH4_2 255
#define SOUND_HIM_OUCH4_3 256
#define SOUND_HIM_THROW1 257
#define SOUND_HIM_THROW1_2 258
#define SOUND_HIM_THROW1_3 259
#define SOUND_HIM_THROW2 260
#define SOUND_HIM_THROW2_2 261
#define SOUND_HIM_THROW2_3 262
#define SOUND_MOJO_OUCH1 263
#define SOUND_MOJO_OUCH1_2 264
#define SOUND_MOJO_OUCH1_3 265
#define SOUND_MOJO_OUCH2 266
#define SOUND_MOJO_OUCH2_2 267
#define SOUND_MOJO_OUCH2_3 268
#define SOUND_MOJO_OUCH3 269
#define SOUND_MOJO_OUCH3_2 270
#define SOUND_MOJO_OUCH3_3 271
#define SOUND_MOJO_OUCH4 272
#define SOUND_MOJO_OUCH4_2 273
#define SOUND_MOJO_OUCH4_3 274
#define SOUND_MOJO_THROW1 275
#define SOUND_MOJO_THROW1_2 276
#define SOUND_MOJO_THROW1_3 277
#define SOUND_MOJO_THROW2 278
#define SOUND_MOJO_THROW2_2 279
#define SOUND_MOJO_THROW2_3 280
#define SOUND_PRINCESS_OUCH1 281
#define SOUND_PRINCESS_OUCH1_2 282
#define SOUND_PRINCESS_OUCH1_3 283
#define SOUND_PRINCESS_OUCH2 284
#define SOUND_PRINCESS_OUCH2_2 285
#define SOUND_PRINCESS_OUCH2_3 286
#define SOUND_PRINCESS_OUCH3 287
#define SOUND_PRINCESS_OUCH3_2 288
#define SOUND_PRINCESS_OUCH3_3 289
#define SOUND_PRINCESS_OUCH4 290
#define SOUND_PRINCESS_OUCH4_2 291
#define SOUND_PRINCESS_OUCH4_3 292
#define SOUND_PRINCESS_THROW1 293
#define SOUND_PRINCESS_THROW1_2 294
#define SOUND_PRINCESS_THROW1_3 295
#define SOUND_PRINCESS_THROW2 296
#define SOUND_PRINCESS_THROW2_2 297
#define SOUND_PRINCESS_THROW2_3 298
#define SOUND_SEDUSA_OUCH1 299
#define SOUND_SEDUSA_OUCH1_2 300
#define SOUND_SEDUSA_OUCH1_3 301
#define SOUND_SEDUSA_OUCH2 302
#define SOUND_SEDUSA_OUCH2_2 303
#define SOUND_SEDUSA_OUCH2_3 304
#define SOUND_SEDUSA_OUCH3 305
#define SOUND_SEDUSA_OUCH3_2 306
#define SOUND_SEDUSA_OUCH3_3 307
#define SOUND_SEDUSA_OUCH4 308
#define SOUND_SEDUSA_OUCH4_2 309
#define SOUND_SEDUSA_OUCH4_3 310
#define SOUND_SEDUSA_THROW1 311
#define SOUND_SEDUSA_THROW1_2 312
#define SOUND_SEDUSA_THROW1_3 313
#define SOUND_SEDUSA_THROW2 314
#define SOUND_SEDUSA_THROW2_2 315
#define SOUND_SEDUSA_THROW2_3 316
#define SOUND_BOOMERANG 317
#define SOUND_LASER_EYES 318
#define SOUND_BELLY_FLOP 319
#define SOUND_FUZZY_SPECIAL 320
#define SOUND_LASER_SPIT 321
#define SOUND_LASER_WRISTS 322
#define SOUND_PRINCESS_CRY 323
#define SOUND_HAIR_GEL1 324
#define SOUND_HAIR_GEL2 325
ND_CASH_TILL 7


(Source: Shygoo - Discovery of the unused source code)

References