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!

Tornado Outbreak (Wii)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Tornado Outbreak

Also known as: Zephyr: Rise of The Elementals
Developer: Loose Cannon Studios
Publisher: Konami
Platform: Wii
Released in US: September 29, 2009
Released in EU: November 13, 2009


AnimationsIcon.png This game has unused animations.
AreasIcon.png This game has unused areas.
CodeIcon.png This game has unused code.
CopyrightIcon.png This game has hidden developer credits.
DevTextIcon.png This game has hidden development-related text.
ObjectIcon.png This game has unused objects.
MinigameIcon.png This game has unused modes / minigames.
GraphicsIcon.png This game has unused graphics.
MovieIcon.png This game has unused cinematics.
MusicIcon.png This game has unused music.
SoundIcon.png This game has unused sounds.
TextIcon.png This game has unused text.
RegionIcon.png This game has regional differences.


PrereleaseIcon.png This game has a prerelease article
NotesIcon.png This game has a notes page

This cactus is UNDER CONSTRUCTION
This article is a work in progress.
...Well, all the articles here are, in a way. But this one moreso, and the article may contain incomplete information and editor's notes.
SOMETIMES I SEE A TEXT BOX AND I JUST CAN'T HELP MYSSDFGFFDHFGDJGGFSHGDFH
This page sucks.
If you could make it suck less, that would be awesome.
Specifically: Needs a rewrite badly.
Careful, you'll lose an eye.
This page or section needs more images.
There's a whole lotta words here, but not enough pictures. Please fix this.

Tornado Outbreak is a game about... well, guess.

Hmmm...
To do:
  • Wii, and PS3's audio are in the .wem format, and can be played in VGMStream.
  • Xbox 360's audio can be played perfectly fine in VGMstream.
  • Formatting improvements and file rips.
  • What were the cheats used to enable the debug mode?
  • Check out this video for more info.
  • Extract the game's .bnk files and upload the unused sound effects.
  • .bgw files need to be decrypted.
  • .bgw files can be converted into a .dat using offzip.
  • Models and animations are in a .mb format.
  • The dol contains animations and game modes that can be modified, or replaced.
  • fst.bin lists the names of the worlds, movies, and sounds.
  • manifest.xmf contains the timestamp of when the model was created.

Sub-Pages

Read about prerelease information and/or media for this game.
Prerelease Info
Miscellaneous tidbits that are interesting enough to point out here.
Notes
SoundIcon.png
Unused Dialogue
Nimbus got silenced. Yeah.
AreasIcon.png
Unused Maps
Well, who knew a game like this had unused maps?
DebugIcon.png
Debug Menu
Great Balls of Fire! This game has a debug mode!
SoundtestIcon.png
Unused Music
Music that was removed from the final game. Darn!
TextIcon.png
Unused Text
Seems like there used to be a side mission/challenge mode.
AnimationsIcon.png
Unused Animations
Animations that were unique in a very odd way...
ObjectIcon.png
Unused & Hidden Objects

Concept Art

b34_WindyHero.bik

b43_Eddie.bik

A slideshow of the map Double Wide Damage is present in the files, although the slideshow wasn't in the final game. Other unused images include a slide of Military Mayhem, bonus images of Windboy and Windgirl (two cut characters), and two variants of the Stone Stomper:

  • A Stone Stomper with the cartoonish look just like in the game's cutscenes.
  • A more realistic and pale looking Stone Stomper with trees growing on the top of his head and shoulders.

The realistic stone smasher may have been removed because it could've scared younger players.

Unused Levels

By swapping trailerpark.bgw with chickenfarm.bgw, training_firespirite.bgw, or jb_intro.bgw, three unused levels can be found that originally supported multiplayer. The levels were poorly functional because of how small the level was. The jb_intro level is fully functional, but the second player sometimes glitches out of bounds causing the other player to be stuck during the section of the level they were in. Chickenfarm, another playable level, was intended to be a mini boss battle. Player 1 steers the tornado while Player 2 absorbs the fire flyers. However, it's impossible to complete because the game strangely gives a blue screen forcing the player to restart the console. While the training area is fully functional, the second player can't absorb any Fire Flyers.

jb_Intro.bgw chickenfarm.bgw/training_firesprite.bgw

Unused Graphics/Textures

By dumping the game's textures you can find some hidden objects that can't really be seen in-game.

The face of Derek McCaughan; an artist from Loose Cannon Studios. The texture appears in the Tokyo level, but is too small to see.
Tornado Outbreak-unused face.png

A texture of a camera. You weren't intended to see behind the camera.

(Tornado Outbreak) camera texture.png

Unused Cutscenes

There are two unused intro and outro cutscenes named bonus_chickenfarm_intro/outro.bik featuring the Fire Flyers and (the cut) Windboy. Another unused cutscene is bonus_e3_attract_4x3.bik.

bonus_chickenfarm_intro.bik bonus_chickenfarm_outro.bik

Developer Related Text

Hmmm...
To do:
Add the rest of the developer-related text.

These texts are from the tornadoalley.bsu file. this checks uses of undeclared global variables..-- All global variables must be 'declared' through a regular assignment..-- (even assigning nil will do) in a main chunk before being used..-- anywhere or assigned to inside a function...

given A.B.C for the name, we'll create tables for each '.' in the path..-- with the last path component getting assigned 'value'

first param is optional, falls back to global

enhanced format that converts all its 'weird' args to strings..function format

this is here for debug support only when running commands direct from fuse

this will never get used in release builds.

Reporting globals....-- note that these will not actually do anything until luamgr has registered..-- its callbacks. so for any logging or asserts that are supposed to print..-- during startup, use print() or syserror/sysassert

$$ future: extend log to work like .net {0} style stuff, where i can put..-- formatting codes in to control depth of table/array traversal, etc

clear this stuff out in release builds, don't need it..if buildconfig.isrelease then

these are extensions to the built-in lua class 'table'....-- given a table, returns a "read only" version of it that errors on attempts..-- to modify contents. also can give an error if looking up a nonexistent..-- value. so we can catch spelling errors on constants etc

now that we have this function, protect the buildconfig

mix and match these. just don't modify them! make a copy first if you want..-- them to do something different.....table.mts = {}....-- attach this metatable to a table to have any references to nonexistent..-- children create sub-tables on-demand

do a collect to compact things, then ask lua how much mem it thinks we're using

let's get the string array right now, before any more get added by the act of collecting

we're about to use a ton of memory, make sure we're in preview mode

There sure are a lot of Lua timers! We're at %d now, maybe Scott should review this.

Illegal recursion! Can't wait while this script is already waiting. You smoking some crazy

What you say? You wait end with no begin??

Waiting has no effect when not in a thread - something weird going on?

IMPORTANT: do not modify this file without talking to Scott first!! This..-- code is very closely tied to LuaMgr.cpp and one small mistake could cause..-- some really hard to debug problems!

future: support a type "indexer" that adds to _indexers table in a...-- general way what i'm doing with 'children' works......

These are the permitted event function names for go's to respond to. This.. -- table is a safety check against Evil...

only scott should mess with these!

To do notes

table and other gc refs + strings - convert to an index instead of mem addr for easier matching..-- do not separate single-ref tables from multi-ref..-- . first instance found = its "global name"..--. enum certain table trees first to make sure they get the first instance (like classes)..-- two pass: first collects all data into dump structures and ref counts etc, second does the reporting..-- print truncated, \n-removed, compacted string for each..-- get environment for everything that could have it and include in the walk along with metatable..-- store in the value part of the 'all' table a table with full name (including mt/env to get there), ref count.....-- look at userdata and associate with a 'go'....if buildconfig.isrelease then...return..end

Unused Cheats

Cheats that could only be accessed by hacking, or running the game in debug mode.

 bonusmaterial = {
 [0] = { name = 1611, filename = "b00_Last_Hero", type = 1 },
 [1] = { name = 1612, filename = "b01_Character_Growth", type = 1 },
 [2] = { name = 1613, filename = "b02_fire_3", type = 1 },
 [3] = { name = 1614, filename = "b03_fire_color", type = 1 },
 [4] = { name = 1615, filename = "b04_fire_big", type = 1 },
 [5] = { name = 1616, filename = "bm07_Chicken_Con_Carnage", type = 1 },
 [6] = { name = 1617, filename = "b06_Fire", type = 1 },
 [7] = { name = 1618, filename = "bm01_Roadside_Destruction", type = 1 },
 [8] = { name = 1619, filename = "bonus_cannon_corked", type = 0 },
 [9] = { name = 1620, filename = "trailerpark_intro", type = 0 },
 [10] = { name = 1621, filename = "trailerpark_outro", type = 0 },
 [11] = { name = 1622, filename = "b09_TrailerPark", type = 1 },
 [12] = { name = 1623, filename = "b10_Japan", type = 1 },
 [13] = { name = 1624, filename = "b11_Earth", type = 1 },
 [14] = { name = 1625, filename = "b12_SizeStudy", type = 1 },
 [15] = { name = 1626, filename = "b13_HarmoniumStudy", type = 1 },
 [16] = { name = 1627, filename = "b14_EddieStudy", type = 1 },
 [17] = { name = 1628, filename = "b15_WaterStudy", type = 1 },
 [18] = { name = 1629, filename = "bm06_Drivein_Unused", type = 1 },
 [19] = { name = 1630, filename = "bonus_cannon_fish", type = 0 },
 [20] = { name = 1631, filename = "area51_intro", type = 0 },
 [21] = { name = 1632, filename = "area51_outro", type = 0 },
 [22] = { name = 1633, filename = "b18_Hero1", type = 1 },
 [23] = { name = 1634, filename = "b19_Hero2", type = 1 },
 [24] = { name = 1635, filename = "b20_OurLittleGuy", type = 1 },
 [25] = { name = 1636, filename = "b21_Hero3", type = 1 },
 [26] = { name = 1637, filename = "b22_WindBear", type = 1 },
 [27] = { name = 1638, filename = "b23_WindBear2", type = 1 },
 [28] = { name = 1639, filename = "b24_RockGuy", type = 1 },
 [29] = { name = 1640, filename = "bm08_High_Roller", type = 1 },
 [30] = { name = 1641, filename = "bonus_cannon_spike", type = 0 },
 [31] = { name = 1642, filename = "strip_intro", type = 0 },
 [32] = { name = 1643, filename = "strip_outro", type = 0 },
 [33] = { name = 1644, filename = "b27_Rocky3", type = 1 },
 [34] = { name = 1645, filename = "b28_Windy", type = 1 },
 [35] = { name = 1646, filename = "b29_Original_Wind", type = 1 },
 [36] = { name = 1647, filename = "b30_Wind_Concept", type = 1 },
 [37] = { name = 1648, filename = "b31_Wind_Concept", type = 1 },
 [38] = { name = 1649, filename = "b32_Wind_Concept", type = 1 },
 [39] = { name = 1650, filename = "b33_Wind_Concept", type = 1 },
 [40] = { name = 1651, filename = "bm02_Carnival_Chaos", type = 1 },
 [41] = { name = 1652, filename = "bonus_cannon_truck", type = 0 },
 [42] = { name = 1653, filename = "amusementpark_intro", type = 0 },
 [43] = { name = 1654, filename = "amusementpark_outro", type = 0 },
 [44] = { name = 1655, filename = "b36_Water", type = 1 },
 [45] = { name = 1656, filename = "b37_Water", type = 1 },
 [46] = { name = 1657, filename = "b38_Octopus", type = 1 },
 [47] = { name = 1658, filename = "b39_Bubbleman", type = 1 },
 [48] = { name = 1659, filename = "b40_Windboy", type = 1 },
 [49] = { name = 1660, filename = "b41_Screen", type = 1 },
 [50] = { name = 1661, filename = "b42_Nimbus", type = 1 },
 [51] = { name = 1662, filename = "bm03_UK_Part_I", type = 1 },
 [52] = { name = 1663, filename = "bonus_blooper1", type = 0 },
 [53] = { name = 1664, filename = "wellstown_intro", type = 0 },
 [54] = { name = 1665, filename = "wellstown_outro", type = 0 },
 [55] = { name = 1666, filename = "b08_Omegaton", type = 1 },
 [56] = { name = 1667, filename = "b17_Logo", type = 1 },
 [57] = { name = 1668, filename = "bonus_sizzlereel", type = 0 },
 [58] = { name = 1669, filename = "b05_Possession", type = 1 },
 [59] = { name = 1670, filename = "b44_Land", type = 1 },
 [60] = { name = 1671, filename = "b54_Tornado2", type = 1 },
 [61] = { name = 1672, filename = "b50_OrigNim2", type = 1 },
 [62] = { name = 1673, filename = "bm04_UK_Part_2", type = 1 },
 [63] = { name = 1674, filename = "bonus_blooper2", type = 0 },
 [64] = { name = 1675, filename = "renfaire_intro", type = 0 },
 [65] = { name = 1676, filename = "renfaire_outro", type = 0 },
 [66] = { name = 1677, filename = "bm10_Tokyo", type = 1 },
 [67] = { name = 1678, filename = "bonus_previs", type = 0 },
 [68] = { name = 1679, filename = "b47_Augie", type = 1 },
 [69] = { name = 1680, filename = "b48_Mileage", type = 1 },
 [70] = { name = 1681, filename = "b49_OrigNim", type = 1 },
 [71] = { name = 1682, filename = "bm11_Japan", type = 1 },
 [72] = { name = 1683, filename = "b51_Mileage2", type = 1 },
 [73] = { name = 1684, filename = "b46_Tornado", type = 1 },
 [74] = { name = 1685, filename = "bonus_blooper3", type = 0 },
 [75] = { name = 1686, filename = "fishingvillage_intro", type = 0 },
 [76] = { name = 1687, filename = "fishingvillage_outro", type = 0 },
 [77] = { name = 1697, filename = "tokyo_intro", type = 0 },
 [78] = { name = 1698, filename = "tokyo_outro", type = 0 },
 [79] = { name = 1699, filename = "route66_outro", type = 0 },
 [80] = { name = 1705, filename = "chickenfarm_outro", type = 0 },
 [81] = { name = 1700, filename = "tokyo_outro2", type = 0 },
 }

This can be used to trigger cutscenes while in the debug mode(?)

Debug Mode

Debug mode is currently inaccessible. The only way to run the game in debug mode is to modify the game's scripts. There is a pre-release screenshot showing the debug menu in-action from the Xbox 360 version.

There are options to enable certain game modes, show the FPS, trigger in-game cutscenes, view and replace animations, etc.

TornadoOutbreak-R6TEA4 Missing String.png

Additionally, it wasn't intended for the player to complete a level while in debug mode, so the game instead throws an error message.

Come back later

Oddly, if the players exits the game's debug mode a goodbye message will appear.

Anti Cheating

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.

Three levels have an anti-cheat code active. If the game detects that you're cheating, it will show a blue screen and hangs the game, forcing you to reset your console. To add insult to injury, if you use a program to change a memory value the game will become unplayable and the game will no longer start. Any attempt to disable in-game missions, or just enable the "hasshownstomptutorial" or "hasshowndashtutorial" after the player has completed the level, will trigger the blue screen.

Cut Content

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Separate what exists and what doesn't exist in the files. What doesn't exist needs to be moved to a pre-release page. This stuff may also need to go onto a notes page.

The following content was seen in the game's files, but not in the actual game.

  • Slideshow of the map Double Wide Damage (cut due to a lack of space).
  • Eddie (an early name/prototype for Zephyr).
  • An E32009 demo.
  • Slideshow of Military Mayhem (replaced with Eddie Study).
  • Two bonus Chicken Con Carnage cut scenes with the Fire Flyers and Windboy. Along with a news reporter named Chuck Gavel.
  • Concept art of Windboy (which was replaced with a drawn model).
  • Surfy concept art of Windboy surfing.
  • Mileage Study concept art of the chicken farm from Chicken Con Carnage.
  • Rocky (cut Stone Stomper).
  • Rockguy, a Stone Stomper that was more realistic looking. Could've possibly scared younger players(?)
  • Windgirl, another wind character that was cut.
  • FireGuy, another cut character.
  • Nimbus as a multiplayer character. His multiplayer animations are still in the game's files, but in the end he received the axe.
  • Side mission mode (disabled, but can still be enabled by hacking the game).
  • Wingman.mb (an early version of the Wind Warrior. The model was replaced by avatar2.mb).

Scrapped Content

Originally, there was an easy mode (auto collecting) and a hard mode (advance chain collecting). In the auto collecting mode, players could easily destroy objects and automatically collect and absorb the Fire Flyers. In the advance chain collecting mode, players search the world to find the Fire Flyers hiding under buildings and vehicles and absorb them using the grab move. There is a Gecko Code that reenables the advance chain collecting mode, but makes the vortex race harder to complete in the process. A side mission mode was originally planned, but never got finished.

Version Code
NTSC C2060E64 00000001

60000000 00000000

(Source: Larry Edwards (Unused Advance Chain Collecting mode (Gecko Code))

Regional Differences

The European version has some minor changes that the North American version of the game lacks.

  • If the player quits the game in the European version, the player will be taken to the title screen. In the North American version the game simply returns the player to the Wii remote screen.
  • The smoke from the destroyed levels, and the Totem polls, do not repeat; instead, a five second delay occurs, then the smoke/fire animation will play again.

Version Differences

  • In the Xbox 360 version, players have the ability to change their gamma (brightness). This is set to 3 as default.
  • The KA-SMASH sprite is removed in the PlayStation 3 version.
  • The chicken farm sign no longer spins in the Xbox 360 and PlayStation 3 versions.
  • The framerate on the Xbox 360 and PlayStation 3 versions, drop to 25 to 16 FPS. It's unknown why this happens.