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

Animaniacs Game Pack

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Animaniacs Game Pack

Also known as: Animaniacs PC Game Pack, Animaniacs Wacky Game Pack
Developer: Funnybone Interactive
Publisher: Knowledge Adventure
Platforms: Windows, Mac OS Classic
Released in US: December 31, 1997


SourceIcon.png This game has uncompiled source code.
DevTextIcon.png This game has hidden development-related text.
GraphicsIcon.png This game has unused graphics.
SoundIcon.png This game has unused sounds.
LevelSelectIcon.png This game has a hidden level select.
Carts.png This game has revisional differences.


Animaniacs Game Pack is a compilation of five arcade-style games featuring characters from the hit TV show Animaniacs. In each game, you play as one of the three Warner siblings: Yakko, Wakko, and Princess Angelina Contessa Louisa Francesca Banana Fanna Bo Besca III (but we'll call her Dot).

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Need some verification about publishers, maybe release dates as well.

Intro/Menus

Unused Graphics

Image File Cast Type / ID Internal Name Description
AnimaniacsGP Start Internal Bitmap6.png START.DXR Internal Bitmap 6 6 An earlier version of the "Insert CD" message. "Animaniacs" is misspelled. The used version of this message is stored in STARTWIN.DXR.
AnimaniacsGP Start Internal Bitmap7.png START.DXR Internal Bitmap 7 7 An earlier version of screen resolution/color depth message. The game is referred to by a slightly different name, "Wacky Pack CD", and "Animaniacs" is misspelled again. The used version of this message is stored in STARTWIN.DXR and is not an image; instead it is generated as text so it can show what the current resolution and color depth are compared to the recommendation.

Baloney's Balloon Bop

Uncompiled Script

Text File Cast Type / ID Internal Name Description
  set SndBoing = the number of member "boing"
  set SndFloor = the number of member "Floor"
  set SndBaloney = the number of member "BalOhBoy"
  set SndPop =  -1 + the number of member "balloon pop 1"
  set SndMusic8 = the number of member  "1 abc"
  set SndBalHit8 = the number of member "anvil hit blony 1"
  set SndFreeHit = the number of member "freeze hit fast"
  set SndPowerUp = the number of member "Tramp stretch"
BALONEY.DXR Internal Text 43 43 A snippet of Lingo script that the developers copied into a Text element, related to sound effect assignments.

Belchinator Too

Cheat Codes

The game checks for a large number of cheat codes on the pause menu. While the level select codes have been known, the rest were only discovered through decompiling the game's Lingo scripts. The codes are listed in the order that they are stored in the game's scripts.

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: What does the NARF code do?
Cheat Effect
TELE1 Teleport to Level 1 - Loading Docks.
TELE2 Teleport to Level 2 - Storage.
TELE3 Teleport to Level 3 - Manufacturing.
TELE4 Teleport to Level 4 - Manufacturing.
TELE5 Teleport to Level 5 - Computer Center.
TELE6 Teleport to Level 6 - Brain Trust.
TELE7 Teleport to Level 7 - The Terrible Think Tank!!
WACKYSACK Gives full ammo, all keys, full armor, full belch shield, fully reveals map, disables force fields, and removes all enemies from the level.
FOODSTUFF Gives full ammo.
FABOO Gives full body armor.
DANCE Gives full belch shield.
LOCKSMITH Gives all keys.
SESAME Turns off all force fields in the level.
PONDERING Fully reveals the map.
HELLONURSE Grants invincibility.
EGAD All enemies die in one hit.
ALONE Removes all the enemies from the level, with the exception of any that are currently on screen.
NARF Unknown effect. Plays the sound for breaking boxes when activated.
MORTAL Disables the invincibility effect from the HELLONURSE code.
NORMAL Disables the effects of other cheats, except for inventory/ammo.

Unused Graphics

Image File Cast Type / ID Internal Name Description
AnimaniacsGP Belch Internal Bitmap436.png BELCH.DXR Internal Bitmap 436 436 A tile for the map device, but with the screen turned on and reading "MAP DEVICE ACTIVE". Presumably, the tile was meant to change to this once the player activated a map device, but instead nothing happens.

Unused Audio

Sound File Cast Type / ID Internal Name Description
BSOUNDS.CXT BSOUNDS Sound 2 key Similar to the clips played when grabbing a colored key, but the second half has been replaced with a clip of Wakko saying "Faboo!"
MONSTER1.CXT

MONSTER2.CXT

MONSTER1

MONSTER2

Sound 297 Empty A voice saying "Sound Missing" is located in the Cast files for Dump-T and ForkFace. Each enemy file uses Sound 297 for the projectile firing sound, but these enemies don't fire projectiles. This dummy sound effect is present to fill the slot.

In addition, the enemy death sounds cannot be heard in their entirety in-game. The game only allows one sound effect to play at a time, so the enemy's own explosion cuts off the end of each clip. As it turns out, they tend to have a little more to say.

Sound File Cast Type / ID Internal Name Description
MONSTER1.CXT MONSTER1 Sound 296 Robbie Die Dump-T deflates a little bit longer.
MONSTER2.CXT MONSTER2 Sound 296 R3 Die Rats ForkFace says "Rats", which is completely cut off in-game.
MONSTER3.CXT MONSTER3 Sound 296 M3 Trek Bot die Spark-E's death sound has a cut-off fade at the end.
MONSTER4.CXT MONSTER4 Sound 296 Yeow PopCycle is supposed to say "Yeow", but in-game it ends up sounding more like "Yeo-".
MONSTER5.CXT MONSTER5 Sound 296 R2ish die Ashcan 451 says "Mommy", but is partially cut off in-game.
MONSTER6.CXT MONSTER6 Sound 296 M6 Bunny Die Bun-EE 2000 never gets to finish saying "Stop him".
MONSTER7.CXT MONSTER7 Sound 296 M7 Mouse Die KnowBot's death sound has a cut-off fade at the end.

Prop Shop Drop

Unused Graphics

Image File Cast Type / ID Internal Name Description
AnimaniacsGP PropShop Scripts Bitmap48 48.png PROPSHOP.DXR scripts Bitmap 48 48 An early, misspelled "Success" message.
AnimaniacsGP PropShop Things Bitmap204 204.png PROPSHOP.DXR things Bitmap 204 204 A tank! This was meant to be a fourth vehicle type. It seems that in the tank you would be able to shoot and destroy obstacles instead of having to avoid them. Unfortunately, this is the only graphic that remains for it. There is a lot of code still present in the game for handling the tank, including firing controls, but additional Lingo script knowledge is required to modify the game to attempt using it (due to inaccurate Macromedia Director decompilation, the scripts cannot be recompiled as-is).

Unused Audio

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: There are more potentially unused sound effects, possibly related to the tank and projectile impacts with enemies. Need to determine which ones are actually completely unused and weren't repurposed.
Sound File Cast Type / ID Internal Name Description
PROPSHOP.DXR sounds Sound 64 Pickup Clean Necks This is supposed to be the pickup sound for the tissue boxes in Level 3, but the ice cube pickup sound is used instead.
PROPSHOP.DXR sounds Sound 77 Pickup Cowboy Hat This is supposed to be the pickup sound for the cowboy hats in Level 2, but the sound effect "object shot 3" is used instead.
PROPSHOP.DXR sounds Sound 111 jump 4 Based on the name and position in the cast, this may have been a jumping sound for the tank vehicle.
PROPSHOP.DXR sounds Sound 121 land 4 Based on the name and position in the cast, this may have been a landing sound for the tank vehicle.
PROPSHOP.DXR sounds Sound 134 Tank Shoot Sound effect for the unused tank vehicle.
PROPSHOP.DXR sounds Sound 143 Tank Sound effect for the unused tank vehicle.
PROPSHOP.DXR sounds Sound 144 Tank End Sound effect for the unused tank vehicle.
PROPSHOP.DXR sounds Sound 145 Tank Start Sound effect for the unused tank vehicle.
PROPSHOP.DXR sounds Sound 170 Tank hit 1 Sound effect for the unused tank vehicle.
PROPSHOP.DXR sounds Sound 171 Tank hit 2 Sound effect for the unused tank vehicle.
PROPSHOP.DXR sounds Sound 172 tank hit 3 Sound effect for the unused tank vehicle.
PROPSHOP.DXR sounds Sound 173 end game Based on the name, this is supposed to be played at the end of the game, but it is never heard.
PROPSHOP.DXR Untitled-1 Sound 19 intro10 An introduction for a removed tenth level! This is the only remnant of the level; no graphics, layout or music exists.

Dot: Collect all the hats you can find for the romance movie, Chapeau Chateaux.

Yakko: The viewers'll flip their lids for that one!

Level Editor

AnimaniacsGP PropShop LevelEditor.png

A rudimentary level editor used by the developers is hidden in the game. However, it cannot be accessed normally - the game must be in "Author" mode, meaning it is being run within the Macromedia Director editor (only possible by removing the protection on PROPSHOP.DXR). When running in Author mode, the level editor can be opened from the main menu by holding Ctrl while clicking on High Scores.

The editor allows you to navigate the levels, create and manipulate objects. Level designs can be saved as text files and loaded. The Test button will run the level with the edited design.

Level Select

AnimaniacsGP PropShop LevelSelect.png

A hidden level select screen is in the game, but it is completely removed from the code and cannot be accessed through gameplay. The only way to access it is by opening an unprotected PROPSHOP.DXR in Macromedia Director and going to the marker "password". Once accessed this way, it functions normally - clicking a button will go to that level.

Uncompiled Scripts

Text File Cast Type / ID Internal Name Description
on shotcontrol
  global speed,howfar,curpal,Odometer,animlist
  global Objectfrequency,NextObject,NextObjectMile
  global slippery,oldmove,playerpos,shottime,AmmoCount,PowerUpRef,GameTime
  global playerdef,playerdir,playercast,LastPlayerDir,playerinc,gear
  if AmmoCount < 0 then exit
  if the key3flag of sprite 48 then 
    if the timer > shottime then
      
      set AmmoCount = AmmoCount - 1
      
      case PowerUpRef of
        0:
          set shottime = the timer + 30            
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) 
        1:
          set shottime = the timer + 9            
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) 
        2:
          set shottime = the timer + 6            
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) 
        3:
          set shottime = the timer + 15            
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) +point(-8,-4)
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) +point(0,-6)
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) +point(8,-4)
        4:
          set shottime = the timer + 9            
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) 
        5:
          if the locv of speed < 24 then 
            set speed = speed + point(0,1)
          end if
        6:set powerupref = 0
          set Gametime = Gametime + 600
        7:
          set shottime = the timer + 20            
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) +point(0,-6)
          makeprojectile the loc of sprite 60+point(0,15),playerinc* point (1.2,-1)+point(0,-6)
          makeprojectile the loc of sprite 60+point(0,30),playerinc* point (1.2,-1) +point(0,-6)
        8:
          set shottime = the timer + 15            
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) +point(0,-6)
        9:
          set shottime = the timer + 15            
          makeprojectile the loc of sprite 60,playerinc* point (1.2,-1) +point(0,-3)
      end case
      
    end if
  end if
end
PROPSHOP.DXR scripts Text 35 old shot control Earlier code for the "shotcontrol" function which was used for the tank vehicle.

Unused Text

Text File Cast Type / ID Internal Name Description
[4742: [416, 22], 4742: [319, 20], 4743: [216, 20], 4744: [106, 20], 4751: [380, 20], 4751: [168, 20], 4751: [262, 22], 4757: [381, 1], 4759: [291, 1], 4761: [227, 1], 4763: [170, 1], 4765: [238, 1], 4767: [300, 1], 4769: [408, 1], 4771: [137, 22], 4773: [137, 22], 4776: [303, 32], 4778: [381, 3], 4780: [116, 3], 4784: [215, 15], 4784: [419, 15], 4787: [406, 2], 4790: [240, 2], 4793: [115, 15], 4793: [297, 15], 4796: [220, 2], 4799: [395, 2], 4802: [373, 15], 4802: [201, 15], 4811: [84, 19], 4811: [159, 19], 4811: [447, 19], 4811: [394, 19], 4812: [270, 17], 4820: [382, 14], 4820: [145, 16], 4824: [400, 14], 4824: [116, 16], 4828: [435, 14], 4828: [89, 16], 4832: [287, 22], 4835: [381, 4], 4835: [179, 4], 4838: [337, 20], 4838: [231, 20], 4841: [288, 20], 4845: [424, 1], 4845: [99, 1], 4848: [426, 1], 4848: [103, 1], 4854: [210, 2], 4857: [114, 2], 4860: [410, 2], 4863: [357, 2], 4866: [276, 2], 4869: [273, 5], 4869: [425, 5], 4869: [112, 5], 4876: [263, 34], 4879: [251, 22], 4883: [427, 20], 4883: [103, 20], 4885: [202, 14], 4890: [326, 5], 4890: [229, 14], 4893: [128, 22], 4894: [329, 5], 4895: [254, 14], 4899: [275, 14], 4900: [421, 22], 4902: [136, 22], 4903: [418, 13], 4903: [309, 14], 4906: [137, 22], 4907: [296, 14], 4909: [142, 17], 4911: [140, 17], 4912: [266, 16], 4916: [246, 16], 4920: [218, 16], 4920: [119, 22], 4924: [117, 22], 4924: [202, 16], 4928: [124, 17], 4928: [284, 17], 4935: [97, 20], 4935: [179, 33], 4936: [267, 20], 4938: [175, 20], 4940: [19, 8], 4946: [16, 9], 4947: [294, 1], 4949: [343, 1], 4951: [294, 1], 4953: [355, 1], 4957: [267, 20], 4957: [400, 20], 4957: [134, 20], 4959: [16, 10], 4960: [313, 3], 4962: [313, 3], 4964: [312, 3], 4966: [313, 3], 4969: [16, 10], 4973: [366, 22], 4976: [264, 33], 4978: [285, 1], 4981: [393, 2], 4984: [108, 2], 4985: [437, 12], 4987: [343, 2], 4989: [99, 22], 4992: [71, 1], 4994: [442, 1], 4996: [432, 1], 4997: [16, 10], 4998: [72, 1], 5000: [191, 32], 5002: [271, 18], 5003: [158, 7], 5003: [380, 7], 5007: [381, 35], 5008: [273, 1], 5011: [184, 1], 5016: [273, 22]]
PROPSHOP.DXR Internal Field 140 140 What appears to be a partial level design. If saved into a text file, it can be loaded into the game using the level editor. It is made up of a mix of level themes and lacks objects, suggesting that the object definitions may have been shuffled around since the level was made. It is also not a full level, being much shorter than the final levels.
put mmessagelist(xtra "fileio")
-- "xtra fileio -- CH May96
new object me -- create a new child instance
-- FILEIO --
fileName object me -- return fileName string of the open file
status object me -- return the error code of the last method called
error object me, int error -- return the error string of the error
setFilterMask me, string mask -- set the filter mask for dialogs
openFile object me, string fileName, int mode -- opens named file. valid modes: 0=r/w 1=r 2=w
closeFile object me -- close the file
displayOpen object me -- displays an open dialog and returns the selected fileName to lingo
displaySave object me, string title, string defaultFileName -- displays save dialog and returns selected fileName to lingo
createFile object me, string fileName -- creates a new file called fileName
setPosition object me, int position -- set the file position
getPosition object me -- get the file position
getLength object me -- get the length of the open file
writeChar object me, string theChar -- write a single character (by ASCII code) to the file
writeString object me, string theString -- write a null-terminated string to the file
readChar object me -- read the next character of the file and return it as an ASCII code value
readLine object me -- read the next line of the file (including the next RETURN) and return as a string
readFile object me -- read from current position to EOF and return as a string
readWord object me -- read the next word of the file and return it as a string
readToken object me, string skip, string break -- read the next token and return it as a string
getFinderInfo object me -- get the finder info for the open file (Mac Only)
setFinderInfo object me, string attributes -- set the finder info for the open file (Mac Only)
delete object me -- deletes the open file
+ version xtraRef -- display fileIO version and build information in the message window
* getOSDirectory -- returns the full path to the Mac System Folder or Windows Directory
"
PROPSHOP.DXR Internal Text 230 230 Console output of the function reference for the "fileio" Director Xtra.
Brain Storm

Car attempts to keep a constant speed.  If an object is hit, the car decelerates and has to reaccelerate back to normal speed.  -- Add high speed power up, that allows the player to ram 
PROPSHOP.DXR Internal Text 231 231 Developer brainstorming notes. The idea of ramming objects is not used in the game; it may have later transformed into the tank vehicle concept, which was also removed.

Smoocher

Cheat Codes

The game checks for a few cheat codes on the pause menu. These were not previously known and were only discovered through decompiling the game's Lingo scripts. When typed, a sprite will appear to confirm entry; based on the internal names for these this is believed to be a caricature of Greg Izzo, one of the programmers.

Cheat Sprite Displayed Effect
CORNCOB AnimaniacsGP Dot Bitmap628 gregnormal.png Level select cheat. A sound will play after "CORNCOB" is typed; follow up by typing anything from "LEVEL02" through "LEVEL14". The "Cheater" sprite appears to confirm entry. Then start a new game to start at the respective level you typed.
ROSEBUD AnimaniacsGP Dot Bitmap627-greghappy.png

AnimaniacsGP Dot Bitmap626-gregmad.png

Enables and disables what is referred to in the code as "death memory". The first time this is typed, the "Harder" sprite appears, and the number of enemies remaining in each level will reset every time you die, making the game more difficult. Typing it again will show the "Easier" sprite and set the "death memory" behavior back to normal (the number of enemies remaining will stay the same after dying).

Unused Graphics

Image File Cast Type / ID Internal Name Description
AnimaniacsGP Dot charcast Bitmap21 21.png DOT.DXR charcast Bitmap 21 21 A scratchpad testing different fonts to use for the high score screen.
AnimaniacsGP Dot charcast Bitmap568 Picture3.png DOT.DXR charcast Bitmap 568 Picture 3 The caricature used for the cheat messages, but without the blue outline. Bitmap 569 is the same but mirrored.
AnimaniacsGP Dot charcast Bitmap571 Picture3.png DOT.DXR charcast Bitmap 571 Picture 3 A scratchpad for the caricature used for the cheat messages, with a few ideas for the glowing outline. Bitmap 572 is the same but mirrored.
AnimaniacsGP Dot charcast Bitmap634 Picture3.png DOT.DXR charcast Bitmap 634 Picture 3 The caricature's jaw on its own. It's very long.
AnimaniacsGP Dot charcast Bitmap635 Picture3.png DOT.DXR charcast Bitmap 635 Picture 3 The caricature's jaw again but with a complete mouth. Again, it's very long.
AnimaniacsGP Dot charcast Bitmap636 Picture3.png DOT.DXR charcast Bitmap 636 Picture 3 The caricature's head without the mouth, presumably so that Bitmap 634 or 635 could attach to it.
AnimaniacsGP Dot charcast Bitmap658 658.png DOT.DXR charcast Bitmap 658 Picture 3 A scratchpad for the "Cheater" speech bubble. The text is slightly smaller and colored orange instead of red.
AnimaniacsGP Dot dotcst DotStandN.pngAnimaniacsGP Dot dotcst DotWalkN.gif

AnimaniacsGP Dot dotcst DotStandNE.pngAnimaniacsGP Dot dotcst DotWalkNE.gif

AnimaniacsGP Dot dotcst DotStandE.pngAnimaniacsGP Dot dotcst DotWalkE.gif

AnimaniacsGP Dot dotcst DotStandSE.pngAnimaniacsGP Dot dotcst DotWalkSE.gif

AnimaniacsGP Dot dotcst DotStandS.pngAnimaniacsGP Dot dotcst DotWalkS.gif

DOT.DXR dot.cst Bitmap 1 through Bitmap 72 Isometic sprites for Dot, similar in style to the Wakko sprites in Belchinator Too. Only 5 directions are shown here, as the remaining frames are the same but mirrored. Only standing and walking animations are present. Perhaps this game was going to be considerably different?
AnimaniacsGP Dot Internal Bitmap55 55.png DOT.DXR Internal Bitmap 55 55 A primitive "Game Over" screen.
AnimaniacsGP Dot Internal Bitmap57 57.png DOT.DXR Internal Bitmap 57 57 A primitive "You Win!" screen.
AnimaniacsGP Dot Internal Bitmap259 joynessjunkforgregPICT.png DOT.DXR Internal Bitmap 259 joyness junk for greg.PICT A sprite sheet/scratchpad for various designs of the TNT item. It appears that they were meant to be themed based on the level, but in the final a variant similar to the "generic" design pictured is used for all levels.
AnimaniacsGP Dot Internal Bitmap268 268.png DOT.DXR Internal Bitmap 268 268 The early "generic" TNT on its own, with a message saying "dontshowme".
AnimaniacsGP Dot Internal Bitmap326 326.png DOT.DXR Internal Bitmap 326 326 A crudely assembled title card for "Level 1 Round 2". Identical ones exist for the remaining 13 levels as Bitmaps 327 through 341. There are no "Round 2" levels in the game, so it is not clear what these would have been.
AnimaniacsGP Dot Internal Bitmap377 377.png DOT.DXR Internal Bitmap 377 377 A "Done" button. Probably for a menu.
AnimaniacsGP DOT Picture 2.png DOT.DXR Internal Bitmap 385 Picture 2 An unused level using primitive graphics. It also shows a placeholder HUD; in Smoocher the level backgrounds are a single image that also includes the HUD graphics.
AnimaniacsGP Dot Internal Bitmap826 line11.png DOT.DXR Internal Bitmap 826 line.1.1 A crudely drawn "New Game" menu item, in the same style as the early title cards.
AnimaniacsGP Dot Internal Bitmap831 line21.png DOT.DXR Internal Bitmap 831 line.2.1 A crudely drawn "Continue Game" menu item, in the same style as the early title cards.
AnimaniacsGP Dot Internal Bitmap836 line31.png DOT.DXR Internal Bitmap 836 line.3.1 A crudely drawn "Options" menu item, in the same style as the early title cards.
AnimaniacsGP Dot Internal Bitmap841 line41.png DOT.DXR Internal Bitmap 841 line.4.1 A crudely drawn "High Scores" menu item, in the same style as the early title cards.
AnimaniacsGP Dot Internal Bitmap846 line51.png DOT.DXR Internal Bitmap 846 line.5.1 A crudely drawn "Instructions" menu item, in the same style as the early title cards.
AnimaniacsGP Dot Internal Bitmap851 line61.png DOT.DXR Internal Bitmap 851 line.6.1 A crudely drawn "Exit Game" menu item, in the same style as the early title cards.
AnimaniacsGP Dot menustuff Bitmap132 132.png DOT.DXR menustuff Bitmap 132 132 A slightly more refined version of the menu, with the text faded out. This style was kept for the Options menu in the final game.
AnimaniacsGP Dot menustuff Bitmap133 optionpanel1.png DOT.DXR menustuff Bitmap 133 optionpanel1 A slightly more refined version of the menu, with the text readable. This style was kept for the Options menu in the final game.
AnimaniacsGP Dot menustuff Bitmap134 optionpanel11.png DOT.DXR menustuff Bitmap 134 optionpanel1.1 Highlight for "New Game" in the unused menu style.
AnimaniacsGP Dot menustuff Bitmap135 optionpanel12.png DOT.DXR menustuff Bitmap 135 optionpanel1.2 Highlight for "Continue Game" in the unused menu style.
AnimaniacsGP Dot menustuff Bitmap136 optionpanel13.png DOT.DXR menustuff Bitmap 136 optionpanel1.3 Highlight for "Options" in the unused menu style.
AnimaniacsGP Dot menustuff Bitmap138 optionpanel14.png DOT.DXR menustuff Bitmap 138 optionpanel1.4 Highlight for "High Scores" in the unused menu style.
AnimaniacsGP Dot menustuff Bitmap139 optionpanel15.png DOT.DXR menustuff Bitmap 139 optionpanel1.5 Highlight for "Instructions" in the unused menu style.
AnimaniacsGP Dot menustuff Bitmap140 optionpanel16.png DOT.DXR menustuff Bitmap 140 optionpanel1.6 Highlight for "Exit Game" in the unused menu style.
AnimaniacsGP Dot Untitled1 Bitmap72 72.png DOT.DXR Untitled-1 Bitmap 72 72 An icon of Wakko that is used in Belchinator Too.

Unused Audio

There are nearly as many unused sounds as used ones!

Sound File Cast Type / ID Internal Name Description
DOT.DXR Internal Sound 521 old.heart.2p Based on the name, presumably an old heart collection sound.
DOT.DXR Internal Sound 522 old.heart.3p Based on the name, presumably an old heart collection sound.
DOT.DXR Internal Sound 523 old.2 point Based on the name, presumably an old heart collection sound.
DOT.DXR Internal Sound 524 old.Hrt1 Based on the name, presumably an old heart collection sound.
DOT.DXR Internal Sound 541 Kiss 1 A kissing sound, which you would expect to be used in a game about kissing. The final sound set does not have any kissing sounds except a single Dot voice line.
DOT.DXR Internal Sound 542 Kiss 2 Another kissing sound.
DOT.DXR Internal Sound 543 Multi Kiss 1 Yet another kissing sound. It's unclear why it is called "Multi Kiss 1" when it is still a single kiss.
DOT.DXR Internal Sound 571 TNT1 Alternate sound for the TNT item.
DOT.DXR Internal Sound 572 TNT2 Alternate sound for the TNT item.
DOT.DXR Internal Sound 575 TNT4 w/Bell Alternate sound for the TNT item. This one is very similar to the final sound, but using a slightly different explosion.
DOT.DXR Internal Sound 586 Jmp1 Unused jump sound.
DOT.DXR Internal Sound 587 Jmp2 Unused jump sound. A second copy of this sound is stored as Sound 601, also unused.
DOT.DXR Internal Sound 588 Jmp3 Unused jump sound.
DOT.DXR Internal Sound 589 Jmp4 Unused jump sound.
DOT.DXR Internal Sound 631 Shoot 3 Unused shooting sound.
DOT.DXR Internal Sound 632 Shoot 4 Unused shooting sound.
DOT.DXR Internal Sound 633 Shoot 5 Unused shooting sound.
DOT.DXR Internal Sound 634 Shoot1 Unused shooting sound.
DOT.DXR Internal Sound 635 Shoot2 Unused shooting sound.
DOT.DXR Internal Sound 641 NO HEART 1 The used "low hearts" sound, but without Dot's voice line at the end.
DOT.DXR Internal Sound 661 charkill1 Cartoon slipping sound. The name is unclear as to whether it was meant for killing an enemy or the player dying.
DOT.DXR Internal Sound 662 charkill2 Cartoon slipping sound. The name is unclear as to whether it was meant for killing an enemy or the player dying.
DOT.DXR Internal Sound 676 deaddot1 Unused death jingle.
DOT.DXR Internal Sound 677 deaddot2 Unused death sound.
DOT.DXR Internal Sound 693 jump3 Unused jump sound. This sound is listed in the cast order alongside the used jumping sounds, but is excluded from the list of random jump sounds to use.
DOT.DXR Internal Sound 705 lowhearts.1 A different "low hearts" sound, structured similarly to the used sound but with a different warning tone.
DOT.DXR Internal Sound 706 lowhearts.1 Same as lowhearts.0, but without Dot's voice line.
DOT.DXR Internal Sound 707 lowhearts.2 A voice saying "You need more hearts!" Yet another unused "low hearts" sound.
DOT.DXR Internal Sound 728 shot8 Unused shooting sound. This sound is listed in the cast order alongside the used shooting sounds, but is excluded from the list of random shooting sounds to use.
DOT.DXR Internal Sound 752 2 point Unused heart collection sound.
DOT.DXR Internal Sound 753 2 Point.2 Unused heart collection sound.

Unused Text

Text File Cast Type / ID Internal Name Description
Why Cant I,32650,9
Stop Playing,29250,9
James,27300,9
Lars,25950,8
James T.,19850,7
Kirk,18550,7
Jason,17000,7
DOT.DXR Internal Field 168 holddefault high scores An early default high score table.
updated: 9/8/97 3:53 PM
DOT.DXR Internal Field 422 lastchange A revision date.

Tee Off Mini Golf

Uncompiled Scripts

There are a whole bunch of old scripts lurking in various Field and Text elements. Presumably, the developers copied the contents of the scripts into these as a form of temporarily storing of a "known good" version of the script... but never removed them. Notably, this means the comments are intact; these are not recoverable when decompiling already-compiled Lingo scripts.

Text File Cast Type / ID Internal Name Description
on moveball
  
  global CubeList
  -- with bounds
  if not grounded then set ball.xyinc = ball.xyinc + point(0.0,1.0)
  set nextxy = ball.xy + ball.xyinc
  set modifier = point(1,1)
  
  repeat with xxx in CubeList
    if xxx<> 0 then
      if ball.z > getat(xxx,3) and ball.z< getat(xxx,2) then
        if inside(ball.xy,getat(xxx,1)) then
          -- figure out how we hit it (which side) to figure out ricochette.
          -- set engines for fudge factor seven
          
          set temp.xy = ball.xy - ball.xyinc -- back it up to see what happened.
          if not inside(ball.xy, getat(xxx,1)) then
            -- 
            set ball.xyinc = - ball.xyinc
            set nextxy = ball.xy + ball.xyinc
          else
            set ball.zinc = - ball.zinc
            set ball.z = ball.z + ball.zinc
          end if
        end if
      end if
    end if
  end repeat
  
  if the locv of nextxy > 440 and not grounded then 
    
    set modifier = point(1,-1)
    set ball.xyinc = ball.xyinc * .7
    set ball.zinc = ball.zinc * .7
    if the locv of ball.xyinc <6 then
      set grounded = 1
      set the locv of ball.xy = 440
      set the locv of ball.xyinc = 0
    end if
    
  end if	
  if the loch of nextxy < 20 or the loch of nextxy > 570 then 
    if ( not OutOfBounds) and (the locv of nextxy > 400) then
      set modifier = modifier * point(-1,1) 
    else
      set OutOfBounds = 1-- ha ha, it went out
      -- keepbouncing
    end if
  end if
  
  if (grounded  and ball.z < 200) or OutOfBounds then 
    set ball.xyinc = ball.xyinc * .95
    set ball.zinc = ball.zinc * .95
  end if  
  
  set ball.xyinc = ball.xyinc * modifier  
  set ball.xy = ball.xy + ball.xyinc   
  set nextz = ball.z + ball.zinc  
  if nextz > 300 or nextz < 1 then 
    if ( not OutOfBounds) and (the locv of nextxy > 400) then
      set ball.zinc = -ball.zinc   
    else
      set OutOfBounds = 1
    end if
  end if
  set ball.z = ball.z + ball.zinc  
  if abs(ball.zinc) < .5 and abs(the loch of ball.xyinc) < .5 then set stopped = 1  
  
  if abs(the loch of ball.xy - 315)< 30 and abs(the locv of ball.xy - 447) < 30 and abs(ball.z - 284)< 15 then 
    set swingstage = 6
    ---alert "Hole in One!"
  end if
end
GOLF.DXR Internal Text 104 104 A very early version of the "moveball" function, which appears to only have very basic functionality implemented.
global boundrymap --  2 lists from front to back for each side 
-- noting each change in boundry position.  drawn on top of background.

global holemap -- map consists of a list of objects sorted by z position
-- each object contains a screen rect and an objectref
--
--  type eachobject
--    maprect     :  rectangle for hit detection
--    object_ref  :  lookup in objectlist
--  end type

global objectlist -- list of all possible objects located on screen
-- in most cases the object will simply point to a animation (in the score)
-- to be played if the ball enters this area.
-- The animation will be keyed to either stop the ball or continue it's movement
--
--  type objectdefs
--    id_tag      :  Used in hard code for special objects.
--    Object_type :  1=nonanimate,2=continuous,3=reacts,4=react_control
--    Object_angle:  modifier on ball's increment
--    static_anim :  list of castmembers    
--    hit_anim    :  list of castmembers
--    hit_snd     :  member of sound to play when hit
--  end type
--

on initbuild
  
  set objectlist = []
  -- object types :
  --   channel entrance 
  --   water hazzard
  --   road way
  --   sand hazard
  --   waterfall
  --   barrels
  --   
  
end

on placeobject
  --  set plotz = 1 + ball.z/2.5
  --  set dotsrc = Init.DotRect + rect(ball.xy,ball.xy)
  --  puppetsprite 9,1
  --  set the stretch of sprite 99 = 1
  --  set the rect of sprite 99 =  map(dotsrc, refrect , getat(spacelist,plotz)) 
end

on defineobject
  
end

on showmap -- assumes that holemap has already been sorted
  set startchan = 10
  repeat with xxx in holemap
    
  end repeat
end

on sortmap
  
end
GOLF.DXR Internal Field 145 145 Various global and function definitions, and a whole lot of commented out lines.
on moveball  
  global CubeList,holeinfo,thishole,animlist
  -- with bounds
  if not grounded then set ball.xyinc = ball.xyinc + point(0.0,1.0)
  set nextxy = ball.xy + ball.xyinc
  set modifier = point(1,1)  
  set farpoint = 0
  repeat with counter = 1 to count(CubeList)
    set acube  = getat( CubeList,counter)
    if listp(acube) then      
      if getat(acube,2) > farpoint then set farpoint = getat(acube,2)
      if (ball.z > getat(acube,3) and ball.z< getat(acube,2)) then
        if inside(nextxy+point(0,-15),getat(acube,1)) then        
          -- figure out how we hit it (which side) to figure out ricochette.
          -- set engines for fudge factor seven
          set tempid = getat(acube,4)
          --          put acube
          case tempid of         
            "water" :
              set OutOfBounds = 2
              set ball.xyinc = point(0,0)
              set ball.zinc = 0
              puppetsound 2, "splash"
              exit repeat
              
            "green" :
              set doit = 1
              put "who's horny?"
              if count(animlist) then set tanimstep = getat(getat(animlist,1),2) -- what step of animation is playing
              case thishole of -- the green of each hole has different effects
                "1.1":-- nothing special
                "2.1":-- castle -- is drawbridge open?
                  if tanimstep > 4 then set doit = 0
                "3.1":-- windmill -- is gate open
                "4.1":-- lighthouse?
                "5.1":-- (old castle)
                "6.1":-- (old windmill)
                "7.1":-- racetrack -- is track clear
                "8.2":-- bridges -- ball bounces or rolls back.
                  
              end case
              if doit then
                set ball.z = 480 -(ball.z - getat(acube,3))
                set ball.zinc = ball.zinc * 4
                set ball.xyinc = ball.xyinc * 4
                set the loch of sprite 99 = -500
                puppetsprite 99,0
                go ("g"&char 1 of thishole)
                abort
              else
                set temp.xy = nextxy - ball.xyinc -- back it up to see what happened.
                if not inside(temp.xy+point(0,-15), getat(acube,1)) then
                  set modifier = point(-1,1)
                  puppetsound 2,("i"&random(9))
                  --set ball.xyinc = - ball.xyinc
                  set nextxy = ball.xy + ball.xyinc
                end if
                set tempz = ball.z - ball.zinc
                if not (tempz > getat(acube,3) and tempz < getat(acube,2)) then
                  set ball.zinc = - ball.zinc
                  puppetsound 2,("i"&random(9))
                  set ball.z = ball.z + ball.zinc*2
                end if
              end if
            "bridge":
              
              if grounded then
                set ball.zinc = ball.zinc - .5                   
              else
                set temp = ( ball.z - getat( acube,2 ) )/( getat( acube,3) - getat( acube,2) )
                set temp2 = (the top of getat(acube,1) * (1-temp)) + (the bottom of getat(acube,1) * (temp))
                if the locv of ball.xy > ( temp2 ) then
                  set the locv of ball.xy = temp2 - 5
                  set ball.zinc = ball.zinc -3
                  set modifier = point(1,-1)
                  puppetsound 2,("b"&random(5))
                end if  
              end if                  
              
            "seg" :              
              set ruct = value(char 3 of thishole)
              set ruct = ruct + 1
              set thishole = char 1 to 2 of thishole & string(ruct)              
              set CubeList = getaprop(holeinfo,thishole) -- first calculation
              set the loch of ball.xy = 450
              set ball.z = 10
              set temp = ball.xyinc
              set ball.xyinc = point(-ball.zinc, the locv of ball.xyinc)
              set ball.zinc = getat(temp, 1)/8              
              set the rect of sprite 99 = rect(-105,-105,-100,-100)
              set the loc of sprite 99 = point (-400,-400)
              
              go marker("p"&thishole) + 3
              abort
              
            otherwise:
              set temp.xy = nextxy - ball.xyinc -- back it up to see what happened.
              if not inside(temp.xy+point(0,-15), getat(acube,1)) then
                set modifier = point(-1,1)
                puppetsound 2,("i"&random(9))
                --set ball.xyinc = - ball.xyinc
                set nextxy = ball.xy + ball.xyinc
              end if
              set tempz = ball.z - ball.zinc
              if not (tempz > getat(acube,3) and tempz < getat(acube,2)) then
                set ball.zinc = - ball.zinc
                puppetsound 2,("i"&random(9))
                set ball.z = ball.z + ball.zinc*2
              end if
          end case   
          exit repeat
        end if
      end if
    end if
  end repeat
  
  --  if ball.z > farpoint then set OutOfBounds = 1
  
  if the locv of nextxy > 440 and not grounded then 
    puppetsound 2,("b"&random(5))
    set modifier = modifier * point(1,-1)
    set ball.xyinc = ball.xyinc * .7
    set ball.zinc = ball.zinc * .7
    if the locv of ball.xyinc <6 then
      set grounded = 1
      set the locv of ball.xy = 440
      set the locv of ball.xyinc = 0
    end if
    
  end if	
  
  if the loch of nextxy < 0 or the loch of nextxy > 600 then     
    set OutOfBounds = 1-- ha ha, it went out    
  end if
  
  if (grounded  and ball.z < 200) or OutOfBounds then 
    set ball.xyinc = ball.xyinc * .98
    set ball.zinc = ball.zinc * .98
  end if  
  
  set ball.xyinc = ball.xyinc * modifier  
  set ball.xy = ball.xy + ball.xyinc   
  set nextz = ball.z + ball.zinc  
  if nextz > 400 or nextz < 1 then 
    if ( not OutOfBounds) and (the locv of nextxy > 400) then
      set ball.zinc = -ball.zinc   
    else
      --      put "Out!"
      set OutOfBounds = 1
    end if
  end if
  set ball.z = ball.z + ball.zinc  
  if abs(ball.zinc) < 1 and abs(the loch of ball.xyinc) < 1 and the locv of nextxy =440 then set stopped = 1    
end
GOLF.DXR Internal Text 146 146 A later, but still incomplete version of the "moveball" function. Now it appears to have checks for terrain types, but not all are implemented. There's also an interesting "put" command in there...
on formatscripts 
  repeat with xxx = 1 to the number of members in castlib 1
    if the type of member xxx = #script then
      set the text of member "text" = the scriptText of member xxx
      set the font of member "text" = "chicago"
      set the scriptText of member xxx = the text of member "text" 
    end if
  end repeat
end
GOLF.DXR Internal Field 190 190 An earlier version of the "formatscripts" function.

Unused Text

Text File Cast Type / ID Internal Name Description
Define size of object using size guide.
GOLF.DXR Internal Text 32 32
Vertical
GOLF.DXR Internal Text 35 35
Horizontal
GOLF.DXR Internal Text 36 36
point(767.3890, 456.5105) point(1.8075, -1.1297)
GOLF.DXR Internal Field 67 test9 Some coordinates.

Version Differences

There are two separate versions in circulation: v1.0 and v1.0o. It appears that v1.0o was only distributed in OEM bundles with new PCs. The game's data files appear to be identical between the two versions, but changes have been made to the AutoRun executable (Teaser.exe) and setup routines.

In both versions, there is an audio file, Saucy.wav present in the root of the disc:


Audio Transcript
The Brain: I am The Brain, your leader. I command you to play many games and be very entertained.


This file is unused in v1.0. However, in v1.0o, it plays when Teaser.exe is opened. This appears to have been an oversight; v1.0o makes a minor change to Teaser.ini to enable this:

[Environment]
Audio=saucy.wav
(Source: Original TCRF research)