Bejeweled Twist (Windows)
Bejeweled Twist |
---|
Developer: PopCap Games This game has unused objects. This game has a prerelease article This game has a notes page |
A Twist on an old series that also introduced dancing fruit.
Contents
- 1 Sub-Pages
- 2 Unused Graphics
- 3 Oddities
- 4 Unused Special Gems
- 5 Unused Music Sequences
- 6 Unused Sounds
- 7 Snackers the Cat
- 8 Unused Configuration Files
- 9 Unused Challenge Mode Objectives
- 10 Stats Dump Function
- 11 Unused Text
- 11.1 ResourceMan2 Generation Text
- 11.2 Fragments
- 11.3 donedescription
- 11.4 Old Rank Names
- 11.5 Challenge Description Fragments
- 11.6 Night Mode Unlocked Message
- 11.7 Old Statistics Screen Text
- 11.8 Early Mode Names
- 11.9 Unused Tutorial Fragments
- 11.10 Action Mode's Game Configuration
- 11.11 Diamond Mine Leftovers
- 12 Revisional Differences
- 13 Debugging Material
- 14 Unused Game Modes
Sub-Pages
Prerelease Info |
Notes |
Developer Leftovers |
Unused Graphics
planet_inferno.png
Named planet_inferno.png, this graphic is likely an earlier version of the Firestorm planet's graphic and name. Interestingly, this was reused as another texture for the GravityField visualizer, called gravity_spiraltexture.png, but the texture has motion blur added to it.
Texture used in the visualizer
CHAIN GANG.png
Chain Reaction's old name might have been Chain Gang, as evident in this unused graphic.
blitzbub.png
This bar under the Blitz button might've been able to be seen at one point. Maybe Blitz was able to be savable and the time left would've shown on this bar, but that wouldn't have been the case because there exists as a "Level" text for it, which likely means this was going to be some sort of Action mode like in Bejeweled 2.
Fruit Gem Challenge Icon
There is one challenge icon for fruit gems. A fruit gem objective exists in the game's code, but it is unused as stated in the Unused Challenges section. It might've meant there was a fruit gem themed planet but might've been scrapped very late into development.
Challenge Score Pod Doors Animation
There are unused doors for the score pod of the ship. Oddly enough, if you were able to create a custom challenge but there was a bug in the challenge objective, the score pod would show this graphic then the game crashes.
These are more rectangular and very early buttons for the How to Play section.
"Action" and "Extreme" Leaderboard Score Titles
This is text for the leaderboard for the two of the unused modes, Action and Extreme. Action could've been like mode from Bejeweled 2, and Extreme maybe would've been Classic mode but, much harder.
"More Games" Button
There exist another button for the main menu saying "MORE GAMES." This likely took you to PopCap's website (or PopCap's Steam or Origin page if you have either of those distributions of the game) to let you see more of their games like in Bejeweled 1 and 2.
Unused "ECLIPSE" Title
The current game's Eclipse challenge title uses the Continuum font, this uses the same or a similar font used for the challenge planet titles. Perhaps this is just an early graphic or "Eclipse" was a planet name at one point?
Bejeweled 1 Leftovers
editbox.png
For some reason, the Bejeweled 1 edit box is in the game files of Bejeweled Twist, likely for testing reasons. Also the texture is larger in resolution than the original game's.
Oddities
Obscured UFO Texture
Being an obscured sprite of the game, this texture isn't noticed by many. It tends to appear on a UFO sprite upon beating Level 10 of Classic Mode, although it's rather difficult to be seen.
"New Challenge Unlocked" Voice
During sound editing, for some reason this voice clip isn't pitched down by 2 semitones, has weird fade out, and has less reverb and delay than all other voice clips.
Unused Special Gems
Ice Gem
When matched, an Ice Gem will "freeze" the board, tinting the background blue, pausing the music, and preventing bombs from ticking down for three turns. It will not stop the timer in timer-based modes, however. Unlike all other special gems (even the Skull Gem below), this gem does not have special hover-over text.
This gem can be created in Challenge mode by editing the game's save file (users/{Player's Name}/profile.dat) and configuration file (properties/config.xml). Using a hex editor, open profile.dat and change offset 0x6A from 18 to 58. Then, using a text editor, open config.xml, locate the IceGemsAllowed setting, and change it to true:
<Boolean id="IceGemsAllowed"> true </Boolean>
An Ice Gem can then be created by forming an X shape with a single color of gems. This would have been accompanied by the following tutorial text, though the code to display it seems to have been removed:
- "You've created an ICE GEM by making an 'X' with 5 gems. Match it for Time Freeze!"
Ice Gems can only be created in Challenge mode. Even if you edit the configuration files of other modes to enable Ice Gem, the game doesn't recognize X shape matches. This is also the only gem that gives a lavender-colored tutorial text, which is not possible anymore since this gem was scrapped.
Skull Gem
The Skull Gem lacks any graphics whatsoever, simply appearing as a blank space on the grid. When you take a turn, it'll start eating the gems below it. When it reaches the bottom, the game will crash (presumably due to a lack of a game over animation for it). It will properly display some special text when hovered over, however:
- SKULL GEM
- Careful! Skull gems eat downwards. When they reach the bottom, you lose!
Interestingly, leftover tutorial text exists for this gem too:
- "What's this? This SKULL is chomping thru your gems! Destroy it before it hits the bottom!"
Also unusually, Classic mode contains settings that would spawn these gems at level 25 or higher, but they are ignored by the game. The game will freeze if the setting is changed.
Angel Gem
The Angel Gem would've removed all bombs from the field when matched.
Although it can be placed on the grid, the game would crash as soon as the cursor is moved in-game. The text when hovered over if it wasn't for the crash, however:
- ANGEL GEM
- Angel Gems are the rarest of all. They are formed by making 4 gems in a 'plus' shape. When detonated they clear all bad gems from the screen.
In the final game, the Challenges ended up taking up this behavior; completing one destroys all Bomb and Doom Gems on the field, as this (supposedly) would have done.
Unused Music Sequences
Sequence 44 in Skaven's section of the music (BejeweledTwist24.mo3) is only placed at the very end of the file, never reached under any circumstances. It sounds like it would've fit in with the Untimed Challenge theme.
Similarly, sequence 45 is located right after 44, and is the last sequence in the file.
This music is named "TROPHYROOM" in music.xml and has offset 100 with tempo 112. "Trophy Room" was a achievement screen of PopCap's previous game "Chuzzle". Although later Bejeweled games do implement an achievement system as Badges, the badge list screen of those games simply use the Main Menu song.
This fanfare is named "HIGHSCORE" in properties/music.xml, with offset 103 and tempo 141. In the final version, there is only "A new highscore" voice if you get a highscore.
This music is named "WHEELINTRO" in music.xml and has offset 104 with tempo 126. While the "wheel" does show up in Bomb Disarm screen, this music is too bright for that scene and probably intended for some kind of bonus stage.
This music is named "WHEELSCORE" in music.xml and has offset 107 with tempo 144. This was also probably intended for some kind of bonus stage, likely when the player is "spinning" a roulette-like thing.
This music is named "BONUSROUND" in music.xml and has offset 108 with tempo 126. This was probably intended for the main theme of bonus stage. Either that, or some sort of "sugar crush".
Unused Sounds
A number of sound effects not used in Bejeweled Twist are also present in the game.
chainx1.ogg
The original pitch for this sound is unheard in the game. It is sped up by a few semitones.
eclipseintro1.ogg
This was possibly meant to be played for unlocking a challenge's Eclipse puzzle. In the final game, nothing in particular plays when the 7th challenge of a planet is beaten.
supergem_create.ogg
Judging from the name, it is likely that this was initially played when a Supernova gem is formed. Additionally, when this sound is slowed down, it sounds to the equivalent of trans_spacenoise.ogg. Further note, this sound was used in the Launch Event of Twist.
tutorial_snap.ogg
Nowhere in the tutorial level plays this sound effect.
whirlpool1.ogg
Perhaps initially played when you complete a level?
Snackers the Cat
Typing 'snackers' while any piece of Coal is on the grid will change all of the Coal into Snackers, Popcap co-founder and Bejeweled creator Jason Kapalka's cat. In order for this to happen, the Gem Rotator must be off the board and there must be at least one Coal on the board. This changes the hover-over text as well:
- SNACKERS
- This adorable cat can't be matched, but if you startle it with Flame or Lightning, you'll get an awesome bonus!
Additionally, Snackers will purr if you hover over her long enough.
Unused Configuration Files
To do: Describe config_action.xml |
In properties directory there are some unused XML files. config_locksmith.xml contains the settings that make Lock Gems appear frequently. While the final game doesn't have a Challenge named "Locksmith", it is possible that the game once had missions that involve Lock Gems.
The following is an example challenge that makes use of config_locksmith.xml:
<challenge> <description>"Destroy as many Lock Gems as possible in 3 minutes"</description> <counttitle> "Lock Gems" </counttitle> <bestscore> 20 </bestscore> <rules> "LockGems>=0, Time<3, CONFIG='properties/config_locksmith.xml', nightmode"</rules> </challenge>
There is also an unused gamemode that uses config_casual which can be accessed when modifying any 'savegame_*' files by changing the gamemode byte value (offset 0x04) to zero. Casual gamemode seems to be an easier version of Classic Mode with larger minimum bomb values and Doom gems are not included. One more curious effect when playing on casual mode is that you can't hear any music. Bejeweled Twist will make a new savegame_casual when quitting from the modified saved game playthrough.
Unused Challenge Mode Objectives
There are several objectives and options for Challenge mode that are not used in the final game.
- Matches represents the number of Gem sets created. Both your own matches and cascades count towards this goal. L or T shaped clear will count as 2 matches.
- MaxCascade represents the maximum number of cascades created in the current game. This is most likely replaced by Cascade objective with Onemove option, as MaxCascade doesn't display your ongoing cascade progress in realtime.
- LockGems represents the number of Lock Gems destroyed, which might have been used with config_locksmith.xml.
- ShardsLost stays at 0 as "Shards" system no longer exists in the final game.
- BiggestMatchColor seems to represent what colored gem is destroyed in one move. Its value ranges from 0 to 6.
- SkullGems most likely represents the number of Skull Gems destroyed, but since this gem is scrapped its score stays at 0.
- Level is always 2 due to Challenge mode's lack of level system. The reason it is always 2 is probably because the most special gems are not allowed to appear on level 1 or lower.
- DevilGems represents the number of Doom Gems destroyed.
- AngelGems most likely represents the number of Angel Gems destroyed, but since this gem is scrapped its score stays at 0.
- CountdownGems represents the number of Bomb Gems destroyed.
- FruitGems most likely represents the number of Fruit Gems destroyed, but since this gem doesn't appear in challenges its score stays at 0.
- Icegems represents the number of Ice Gems destroyed. If the player edits the save and config files to unlock Ice Gem creation ability, this objective will work perfectly.
- CONSTANTCOUNTERS is an option that make Bomb Gems immediately respawn when destroyed. It works similar to its Doom Gems counterpart "constantdoom".
Preserver Objectives
- OrangeGems and PurpleGems are unused Preserver objectives. When used with the Onboard option, the HUD correctly displays both color of gems.
- All Preserver objectives, including the unused OrangeGems and PurpleGems, will represent the number of colored gems destroyed if the Onboard option is not used.
- Coalgems is compatible with the Onboard option, unlike all other special gems.
quitonfail
quitonfail option will instantly end the game if the player breaks any of the mission criteria (e.g. do not use any Lightning Gems). In the following example challenge, the game ends when the player creates a minimum of x5 cascade.
<challenge> <description>"Create a minimum of x5 cascade"</description> <counttitle> "Cascades" </counttitle> <bestscore>8</bestscore> <rules> "Cascades>=0, Cascades<=4, Onemove, quitonfail, nightmode"</rules> </challenge>
While this option is technically used in Preserver Eclipse, it is redundant in that mission because the badgem option will always terminate the game when the specified gem is destroyed, even without the quitonfail option.
Stats Dump Function
To do: What else does it do and what content does the file contain? |
The game contains a function to dump stats to PopCap's internal network share that is called on startup. While being hard to know what it actually does, strings for it are below. It calls OPTIONS before doing anything else. The first string is the computer name while the last string is the selected profile of the user.
SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName ComputerName \\\\sea-popshare\\sandbox\\Game Builds\\BejeweledTwist\\twistdumps_beta4\\ %s_%s.csv ab
Unused Text
To do: BejeweledTwist.exe has more unused text. |
ResourceMan2 Generation Text
The way PopCap internally creates a resources.xml file for locating the game content has been changed, providing this string on every compilation, suggesting a new internal tool was used to generate these files for this game and their later games.
<!-- DO NOT EDIT THIS FILE. This file is generated by ResourceMan2. Any changes will be overwritten! -->
Fragments
Strings are found in the game executable. Laser Gem is the initial name for a Lightning Gem. Also includes the number of Ice Gem matches as a configuration?
TimeFreezeMatchCount LaserGemCascades
donedescription
All challenges (defined in properties/challenges.xml) have an unused property named "donedescription". These messages might have been intended to appear upon completing a mission. The "#" symbols are variables, and programming for it is partially left in the game (see the "Variable replacement" section below).
You destroyed # gems You destroyed # gems without Lightning You made 3 red matches in a row You made 4 orange matches in a row You made 5 yellow matches in a row You made 6 green matches in a row You made 7 blue matches in a row You made 8 white matches in a row You made 9 violet matches You destroyed # coals in 1 move You destroyed # coals without Lightning You created a x# chain You created a x# chain in 5 minutes You made a x# cascade You cleared x# gems with no Flame or Lightning You got # green gems onscreen You got # red gems onscreen You got # blue gems onscreen You got # white and # red gems onscreen You got # yellow gems onscreen You got # red and # blue gems onscreen You got # green, # blue and # red gems onscreen You detonated # Flame Gems in # You detonated # Flame Gems in 1 move You cleared # gems in # moves You triggered # Lightning Gems in 1 move You triggered # Flame and # Lightning Gems in 1 move You cleared # gems in # You survived # turns You detonated # Lightning Gems in # You detonated # Lightning Gems in 1 move You created # Flame Gems in 1 move You created # Flame and # Lightning Gems in 1 move You created # Lightning Gems in 1 move You created a # gem match You created an # gem match
Variable Replacement
The programming for handling the "#" symbols in messages partially exists in the game, and can be seen by copy-pasting the donedescription property to description property. The following code is an example of Chain Reaction 1:
<challenge> <description> "You created a x# chain"</description> <counttitle> "Chains" </counttitle> <donedescription> "You created a x# chain"</donedescription> <rules> " MaxChain>=15 " </rules> </challenge>
The programming of it only exists for the following challenges. All other missions crash the game when you hover your mouse-cursor on challenges.
- Chain Reaction
- Preserver
- Firestorm (except for "detonate X Flame Gems in 1 move in 5 minutes" missions)
- Survivor
- Voltage (except for "detonate X Lightning Gems in 1 move in 5 minutes" missions)
Old Rank Names
A text file exists in the properties folder called ranksold.txt which has older names for ranks during earlier versions of the game before release. Some ranks were either left in or changed in the final game in ranks.txt.
"Trainee", 0 "Newbie", 50000 "Junior Rotator", 100000 "Rotator", 150000 "Senior Rotator", 200000 "Electro Spinner", 275000 "Spinner", 350000 "Chain Spinner", 425000 "Blast Spinner", 600000 "Senior Spinner", 800000 "Twister", 1000000 "Pyro Twister", 1250000 "Twister Plus", 1500000 "Master Twister", 1750000 "Cryo Spinner", 2000000 "Junior Gemspinner", 2300000 "Electro Gemspinner", 2600000 "Gemspinner", 2900000 "Pyro Gemspinner", 3500000 "Senior Gemspinner", 4000000 "Divine Spinner", 4500000 "Junior Bejeweler", 5000000 "Electro Bejeweler", 5500000 "Bejeweler", 6000000 "Cryo Bejeweler", 6500000 "Super Rotator", 7000000 "Fruit Spinner", 7500000 "Super Twister", 8000000 "Super Bejeweler", 8000000 "Mega Rotator", 8000000 "Mega Spinner", 8000000 "Pyro Twister", 8000000 "Mega Bejeweler", 8000000 "Pyro Rotator", 8000000 "Angelic Twister", 8000000 "Ultra Spinner", 8000000 "Ultra Twister", 8000000 "Ultra Bejeweler", 8000000 "Hyper Rotator", 8000000 "Hyper Spinner", 8000000 "Hyper Twister", 8000000 "Shock Bejeweler", 8000000 "Twistmaster", 8000000 "Twistmaster Plus", 8000000 "Super Twistmaster", 8000000 "Twistmaster Mega", 8000000 "Twistmaster Enduro", 8000000 "Twistmaster Ultra", 8000000 "Twistmaster Hyper", 8000000 "Twistmaster Giga", 8000000 "Twistmaster Supreme", 8000000 "Twistwizard Alpha", 8000000 "Twistwizard Beta", 8000000 "Twistwizard Delta", 8000000 "Twistwizard Omega", 8000000 "Twistwizard Supreme", 8000000 "Junior Spinmaster", 8000000 "Cryo Fruitmaster", 8000000 "Pyro Fruitmaster", 8000000 "Spinmaster Supreme", 8000000 "Jewelkeeper 3rd class", 8000000 "Jewelkeeper 2nd class", 8000000 "Jewelkeeper 1st class", 8000000 "Master Jewelkeeper", 8000000 "Junior Gemmaster", 8000000 "Gemmaster", 8000000 "Senior Gemmaster", 8000000 "Gemmaster Supreme", 8000000 "Twist Hero", 8000000 "Super Twist Hero", 8000000 "Mega Twist Hero", 8000000 "Ultra Twist Hero", 8000000 "Hyper Twist Hero", 8000000 "Ultimate Twist Hero",8000000 "Twist Hero Supreme", 8000000 "Overlord of Twisting", 8000000 "Sultan of Spin", 8000000 "Gem General", 8000000 "Gem King", 8000000 "Ultimate Gem Master", 8000000 "Gem Master Supreme", 8000000
Challenge Description Fragments
There are several fragments of challenge descriptions in the exe file. It suggests that the game could have generated the challenge descriptions automatically. In the final game, the challenge descriptions are written directly to the properties/challenges.xml, and if the description property is missing the game will leave the description blank.
%d point %d counter gem with no countdown gems %d devil gem %d skull gem without matching skull gems %d fruit gem %d angel gem %d ice gem without matching ice gems %d lightning gem without matching lightning gems %d flame gem without matching flame gems %d match%s without chained moves with no shards lost %d gem in %d moves in more than %d moves in one move in %d minute%s Match Score Make a match of at level after level by level Reach level Make a chain of
Night Mode Unlocked Message
There is an unused message regarding unlocking the "Night Mode". Night Mode is the internal name of Eclipse challenges, but none of them are speedrun mode. The final game does not display any special messages upon completing all challenges.
NIGHT MODE UNLOCKED You've unlocked the Challenge Night Mode! Each planet now only has one challenge. How fast can you complete it?
Old Statistics Screen Text
Unused text for the statistics screen exists in the game's executable file, which includes text for the scrapped special gems. The final game only records total points, best single move score, total gems destroyed, and so on.
SUPERNOVAS CASCADES BLUE GEMS ORANGE GEMS PURPLE GEMS YELLOW GEMS GREEN GEMS WHITE GEMS RED GEMS COAL GEMS TOTAL POINTS TOTAL LOCK GEMS MATCHED TOTAL COUNTER GEMS MATCHED TOTAL SKULL GEMS MATCHED TOTAL FRUIT GEMS MATCHED TOTAL DEVIL GEMS MATCHED TOTAL ANGEL GEMS MATCHED TOTAL ICE GEMS MATCHED TOTAL LIGHTNING GEMS MATCHED TOTAL FLAME GEMS MATCHED TOTAL GEMS MATCHED TOTAL GEMS CLEARED TOTAL FRUIT POINTS TOTAL COAL POINTS TOTAL FLAME POINTS TOTAL LIGHTNING POINTS CUMULATIVE POINT MULTIPLIER RANK POINTS FIRST 3X LEVEL FIRST 2X LEVEL WHEEL FIRST LEVEL WHEEL SPINS DEATHS BY COUNTER DEATHS BY SKULL DEATHS BY DEVIL SHARDS COUNTERED SHARDS SKULLED FIRST SHARD LOST LEVEL TOTAL SHARDS LOST BIGGEST CASCADE BIGGEST CHAIN TOTAL MATCHES FIRST ANGELGEM LEVEL FIRST LIGHTNING GEM LEVEL FIRST FLAMEGEM LEVEL FIRST ICEGEM LEVEL TOTAL TIME (SEC) TOTAL BAD MOVES TOTAL MOVES BEST MOVE (POINTS) BEST MOVE (GEMS) MEGAMATCHES BIGGEST MATCH COLOR BIGGEST MATCH LOCK GEMS COUNTER GEMS SKULL GEMS FRUIT GEMS MADE ANGEL GEMS MADE ICE GEMS MADE FLAME GEMS MADE LIGHTNING GEMS MADE x10+ CHAINS x9 CHAINS x8 CHAINS x7 CHAINS x6 CHAINS x5 CHAINS x10+ CASCADES x9 CASCADES x8 CASCADES x7 CASCADES x6 CASCADES x5 CASCADES LONGEST ACTION GAME LONGEST CLASSIC GAME LONGEST CASUAL GAME PUZZLE GAMES ZEN GAMES ACTION GAMES CLASSIC GAMES CASUAL GAMES
Early Mode Names
There is an early list of mode names which does not match with the one in the Old Statistics Screen Text or the final game's roster.
TIMED MODE FREE MODE PUZZLE MODE CREATING MODE
There is also text for saving and editing the "puzzles", which might have been used in the Creating Mode.
PUZZLE %d SAVED EDIT
Unused Tutorial Fragments
Several tutorial fragments can be found in tutorial.txt.
//title "Lesson 2\nA Fiery Friend" //levelup
There were supposed to be multiple tutorials? Maybe this explains why skull gems were supposed to appear. Speaking of skull gems...
Tutorial Completion
textbox "You've ^00ff00^graduated^ffffff^ basic training! \n Time to start your first game!" vcenter graduate textbox "You've ^00ff00^graduated^ffffff^ basic training! \n Time to start your first game!" vcenter graduate textbox "You've ^00ff00^graduated^ffffff^ basic training! \n Time to start your first game!" vcenter graduate textbox "You've ^00ff00^graduated^ffffff^ basic training! \n Time to start your first game!" vcenter graduate
A much more different completion text than the final game's, and for some reason this text is duplicated 3 more times.
Skull Gem
One of the skull gem text was already mentioned in the unused gems section, but there was another system that was also going to be explained in the tutorial called "Shards."
//pointat shards //textbox "If the Skull reaches the bottom, it will destroy one of your Shards!" 6,1 end
Shards were possibly some sort of lives system, sort of like the lawn mowers in Plants vs. Zombies.
Shard System
:shardloss pointat shards textbox "Ouch! One of your ^ffff00^SHARDS^ffffff^ was destroyed!" 7,1 textbox "Be careful, if you lose them all, the game's over..." 7,1 end
Apparently Skull gems weren't the only one to destroy shards, bomb gems could too, which meant if you don't successfully disarm a bomb, you only lose a shard.
Action Mode's Game Configuration
Action still has an XML for it's game mode still left in the final release.
<Properties> <!-- Number of rows, columns in game board --> <Integer id="GameRows"> 8 </Integer> <Integer id="GameColumns"> 8 </Integer> <!-- COUNTER GEMS --> <!-- what is the first level they appear on? --> <Integer id="CounterFirstLevel"> 2 </Integer> <!-- what is the value for that first level --> <Integer id="CounterBase"> 18 </Integer> <!-- does this value decrement based on turns or gems? --> <Boolean id="CounterTurnBased"> false </Boolean> <!-- how many level ups until the value changes --> <Integer id="CounterLevelsBetweenChange" > 2 </Integer> <!-- what is the change to the value? --> <Integer id="CounterChange"> -1 </Integer> <!-- what level does this value start to change? --> <Integer id="CounterFirstChangeLevel"> 6 </Integer> <!-- what is the minimum the value can be? --> <Integer id="CounterMin"> 10 </Integer> <!-- what is the initial value of the counter as levels increase? --> <Integer id="CounterValueFirstLevel"> 2 </Integer> <!-- what is the value for that first level --> <Integer id="CounterValueBase"> 15 </Integer> <!-- how many level ups until the value changes --> <Integer id="CounterValueLevelsBetweenChange" > 2 </Integer> <!-- what is the change to the value? --> <Integer id="CounterValueChange"> -1 </Integer> <!-- what level does this value start to change? --> <Integer id="CounterValueFirstChangeLevel"> 4 </Integer> <!-- what is the minimum the value can be? --> <Integer id="CounterValueMin"> 8 </Integer> <Integer id="CounterValueMax"> 20 </Integer> <!-- BAD GEMS --> <!-- how many "bad" gems (skulls, devils, counters, locks) can be on the board at once? --> <!-- what is the first level they appear on? --> <Integer id="BadGemsOnBoardMaxFirstLevel"> 1 </Integer> <!-- what is the value for that first level --> <Integer id="BadGemsOnBoardMaxBase"> 3 </Integer> <!-- what is the change to the value? --> <Integer id="BadGemsOnBoardMaxChange"> 1 </Integer> <!-- how many level ups until the value changes --> <Integer id="BadGemsOnBoardMaxLevelsBetweenChange" > 3 </Integer> <!-- what level does this value start to change? --> <Integer id="BadGemsOnBoardMaxFirstChangeLevel"> 6 </Integer> <!-- what is the maximum the value can be? --> <Integer id="BadGemsOnBoardMaxMax"> 15 </Integer> <!-- what is the first level they appear on? --> <Integer id="LevelUpPointsFirstLevel"> 1 </Integer> <!-- what is the value for that first level --> <Integer id="LevelUpPointsBase"> 2000 </Integer> <!-- what is the change to the value? --> <Integer id="LevelUpPointsChange"> 300 </Integer> <!-- gem combo size required to get "amnesty" on bad gem appearing next move --> <Integer id="AmnestyGemCount"> 8 </Integer> <!-- LOCK GEMS --> <!-- what is the first level they appear on? --> <Integer id="LockGemFirstLevel"> 6 </Integer> <!-- what is the value for that first level --> <Integer id="LockGemBase"> 16 </Integer> <!-- does this value decrement based on turns or gems? --> <Boolean id="LockGemTurnBased"> true </Boolean> <!-- how many level ups until the value changes --> <Integer id="LockGemLevelsBetweenChange" > 3 </Integer> <!-- what is the change to the value? --> <Integer id="LockGemChange"> -1 </Integer> <!-- what is the minimum the value can be? --> <Integer id="LockGemMin"> 5 </Integer> <!-- SKULL GEMS --> <!-- what is the first level they appear on? --> <Integer id="SkullsFirstLevel"> 9 </Integer> <!-- what is the value for that first level --> <Integer id="SkullsBase"> 30 </Integer> <!-- does this value decrement based on turns(true) or gems (false) ? --> <Boolean id="SkullsTurnBased"> true </Boolean> <!-- how many level ups until the value changes --> <Integer id="SkullsLevelsBetweenChange"> 3 </Integer> <!-- what is the change to the value? --> <Integer id="SkullsChange"> -1 </Integer> <!-- what is the minimum the value can be? --> <Integer id="SkullsMin"> 10 </Integer> <!-- DEVIL GEMS --> <!-- what is the first level they appear on? --> <Integer id="DevilFirstLevel"> 12 </Integer> <!-- what is the value for that first level --> <Integer id="DevilBase"> 100 </Integer> <!-- what is the change to the value? --> <Integer id="DevilChange"> -1 </Integer> <!-- does this value decrement based on turns or gems? --> <Boolean id="DevilTurnBased"> false </Boolean> <!-- how many level ups until the value changes --> <Integer id="DevilLevelsBetweenChange" > 1 </Integer> <!-- what is the minimum the value can be? --> <Integer id="DevilMin"> 20 </Integer> <!-- what is the first level they appear on? --> <Integer id="DevilValueFirstLevel"> 1 </Integer> <!-- what is the value for that first level --> <Integer id="DevilValueBase"> 10 </Integer> <!-- what is the change to the value? --> <Integer id="DevilValueChange"> -1 </Integer> <!-- how many level ups until the value changes --> <Integer id="DevilValueLevelsBetweenChange" > 1 </Integer> <!-- what is the minimum the value can be? --> <Integer id="DevilValueMin"> 10 </Integer> <!-- overall multiplier of points for each move based on what game you're playing --> <Integer id="ModeMultiplier"> 3 </Integer> <Boolean id="IceGemsAllowed"> true </Boolean> </Properties>
Diamond Mine Leftovers
<!-- Board.cpp --> <String id="EXCELLENT">EXCELLENT!</String> <String id="NO_MOVES">NO MOVES!</String> <String id="LEVEL">LEVEL %d</String> <String id="GO">GO!</String> <String id="TIME_UP">TIME UP!</String> <String id="GAME_PAUSED">*** GAME PAUSED ***</String> <String id="CLICK_HERE_TO_CONTINUE">Click Here to Continue!</String> <!-- HighScoreDialog.cpp --> <String id="HSDLG_HIGH_SCORES">HIGH SCORES</String> <String id="HSDLG_DONE">DONE</String> <String id="HSDLG_NORMAL">NORMAL</String> <String id="HSDLG_TIMED">TIMED</String> <String id="HSDLG_TODAYS_HIGH_SCORE">TODAY'S HIGH SCORE</String> <String id="HSDLG_EMPTY">- Empty -</String> <String id="HSDLG_ALL_TIME_HIGH_SCORES">ALL TIME HIGH SCORES</String> <!-- HighScoreWidget.cpp --> <String id="HSWIDGET_CLICK_HERE_TO_PLAY_AGAIN">CLICK HERE TO PLAY AGAIN</String> <String id="HSWIDGET_TIP0">TIP- You can click and drag a gem instead of clicking twice</String> <String id="HSWIDGET_TIP1">TIP- Fill the bonus bar to proceed to higher-scoring levels</String> <String id="HSWIDGET_TIP2">TIP- Make cascades of chain-reacting gems for extra points</String> <String id="HSWIDGET_TIP3">TIP- Create rows of 4 or 5 gems for extra points</String> <String id="HSWIDGET_TIP4">TIP- Complete 2 rows with one move for bonus points</String> <String id="HSWIDGET_TIP5">TIP- Replenish the bonus bar in Timetrial by scoring combos</String> <String id="HSWIDGET_TIP6">TIP- You can click and drag a gem to swap it with another</String> <String id="HSWIDGET_TIP7">TIP- Press any key to pause the game in Timetrial mode</String> <String id="HSWIDGET_TIP_DEFAULT">TIP- Visit us online at www.popcap.com for more games!</String> <String id="HSWIDGET_HIGH_SCORE_OF_THE_DAY_PLACEMENT_PREFIX">You got the highest score of&cr;the day! For all time, your place was</String> <String id="HSWIDGET_HIGH_SCORE_OF_THE_DAY_PLACEMENT_SUFFIX">!&cr;&cr;Would you like to register so&cr;you can record your score?</String> <String id="HSWIDGET_HIGH_SCORE_OF_THE_DAY_REGISTRATION_DIALOG">You got the highest score&cr;of the day!&cr;&cr;Would you like to register so&cr;you can record your score?</String> <String id="HSWIDGET_HIGH_SCORE_OF_ALL_TIME_REGISTRATION_DIALOG_PREFIX">You got place </String> <String id="HSWIDGET_HIGH_SCORE_OF_ALL_TIME_REGISTRATION_DIALOG_SUFFIX">in the All-Time Scores!&cr;&cr;Would you like to register so&cr;you can record your score?</String> <String id="HSWIDGET_HIGH_SCORE_OF_ALL_TIME_PLACEMENT_PREFIX">You got the highest score of&cr;the day! In the All-Time Scores, you made place </String> <String id="HSWIDGET_HIGH_SCORE_OF_ALL_TIME_PLACEMENT_SUFFIX">!</String> <String id="HSWIDGET_BEST_TODAY">You got the highest score&cr;of the day!</String> <String id="HSWIDGET_SCORE_PLACEMENT_PREFIX">In the All-Time Scores you made place </String> <String id="HSWIDGET_SCORE_PLACEMENT_SUFFIX">!</String> <String id="HSWIDGET_GAME_OVER">GAME OVER</String> <String id="HSWIDGET_GAME_DURATION">GAME DURATION</String> <String id="HSWIDGET_GEMS_CLEARED">GEMS CLEARED</String> <String id="HSWIDGET_LONGEST_CASCADE">LONGEST CASCADE</String> <String id="HSWIDGET_BEST_SINGLE_MOVE">BEST SINGLE MOVE</String> <String id="HSWIDGET_HIGH_SCORES">HIGH SCORES</String> <String id="HSWIDGET_NORMAL">NORMAL</String> <String id="HSWIDGET_TIMED">TIMED</String> <String id="HSWIDGET_TODAYS_HIGH_SCORE">TODAY'S HIGH SCORE</String> <String id="HSWIDGET_EMPTY">- Empty -</String> <String id="HSWIDGET_ALL_TIME_HIGH_SCORES">ALL TIME HIGH SCORES</String> <!-- OptionsDialog.cpp --> <String id="OPTIONSDLG_OPTIONS">Options</String> <String id="OPTIONSDLG_DONE">Done</String> <String id="OPTIONSDLG_HELP">Help</String> <String id="OPTIONSDLG_REGISTER">Register</String> <String id="OPTIONSDLG_HIGH_SCORES">High Scores</String> <String id="OPTIONSDLG_CLICK_HERE_TO_TRY_ALCHEMY">Click Here to Try Alchemy</String> <String id="OPTIONSDLG_VISIT_POPCAP_FOR_MORE_GAMES">Visit PopCap.com For More Games</String> <String id="OPTIONSDLG_CHECK_FOR_UPDATES">Check for Updates</String> <String id="OPTIONSDLG_MUSIC">Music</String> <String id="OPTIONSDLG_SOUND_FX">Sound Fx</String> <String id="OPTIONSDLG_FULLSCREEN">Fullscreen</String> <String id="OPTIONSDLG_CUSTOM_CURSORS">Custom Cursors</String> <!-- RecordScoreDialog.cpp --> <String id="RECORDSCOREDLG_HIGH_SCORE">High Score</String> <String id="RECORDSCOREDLG_ENTER_YOUR_NAME">Enter Your Name</String> <!-- RegisterDialog.cpp --> <String id="REGISTER_DIAMOND_MINE">REGISTER DIAMOND MINE</String> <String id="REGISTER_BEJEWELED">REGISTER BEJEWELED</String> <String id="CLICK_HERE_TO_REGISTER_ONLINE">Click here to register online</String> <String id="WEB_BROWSER_WILL_OPEN_NOTICE1">Note - This will open a browser window.</String> <String id="WEB_BROWSER_WILL_OPEN_NOTICE2">When you have registered, enter your</String> <String id="WEB_BROWSER_WILL_OPEN_NOTICE3">registration information below.</String> <String id="REGISTERED_NAME">Registered Name</String> <String id="LICENSE_CODE">License Code</String> <!-- TitleScreen.cpp --> <String id="YOU_MUST_REG1">You must register online now to continue playing Diamond Mine!</String> <String id="YOU_MUST_REG2">You must register online now to continue playing Bejeweled!</String> <String id="UNREGISTERED1">UNREGISTERED VERSION - YOU HAVE PLAYED %d TIMES</String> <String id="UNREGISTERED2">UNREGISTERED VERSION</String> <String id="THANKS_FOR_REGISTERING">THANKS FOR REGISTERING!</String> <String id="VERSION">Version</String> <String id="CLICK_HERE_TO_PLAY">CLICK HERE TO PLAY!</String> <String id="REGISTER_NOW_TO_REMOVE_THIS_DELAY">REGISTER NOW TO REMOVE THIS DELAY!</String> <String id="CLICK_HERE_TO_QUIT">CLICK HERE TO QUIT</String> <String id="CLICK_HERE_TO_REGISTER_NOW">CLICK HERE TO REGISTER NOW!</String> <!-- WinDMApp.cpp --> <String id="URL_OPEN_ERROR1">Please open the following URL in your browser:&cr;</String> <String id="URL_OPEN_ERROR2">&cr;&cr;For your convenience, this URL has already been copied to your clipboard.</String> <String id="OPEN_BROWSER">OPEN BROWSER</String> <String id="OPENING_BROWSER">Opening Browser ...</String> <String id="REGISTRATION_INVALID_DIALOG1">Registration Invalid</String> <String id="REGISTRATION_INVALID_DIALOG2">The registration number you entered is not valid for that name.&cr;&cr;Make sure the name and registration number are entered correctly.</String> <String id="REGISTRATION_INVALID_DIALOG3">OK</String> <String id="HIGH_SCORE">High Score</String> <String id="CONFIRM_LOAD_DIALOG1">Continue Old Game?</String> <String id="CONFIRM_LOAD_DIALOG2">Do you want to continue your last game? Your position was saved when you quit. If you do not continue now, that game will be lost.</String> <String id="UPDATES">Updates</String> <String id="DO_YOU_WANT_TO_CHECK_FOR_UPDATES_TO_DIAMOND_MINE">Do you want to check for updates and expansion packs for Diamond Mine 2? </String> <String id="DO_YOU_WANT_TO_CHECK_FOR_UPDATES_TO_BEJEWELED">Do you want to check for updates and expansion packs for Bejeweled 2? </String> <String id="UPDATES_DESC">New versions may offer new features and bug fixes. This requires an active Internet connection.</String> <String id="NEWGAMEDIALOG1">New Game</String> <String id="NEWGAMEDIALOG2">Are you sure you want to end&cr;the current game?</String> <String id="CONFIRMNORMALMODE1">Normal Mode</String> <String id="CONFIRMNORMALMODE2">You must end the current game&cr;to switch to normal mode. Ok?</String> <String id="CONFIRMTIMEDMODE1">Timed Mode</String> <String id="CONFIRMTIMEDMODE2">You must end the current game&cr;to switch to timed mode. Ok?</String> <String id="CONFIRMQUIT1">Are you sure you want to&cr;quit the game?</String> <String id="CONFIRMQUIT2">&cr;&cr;Your current game in progress&cr;will be saved so you can&cr;continue next time.</String> <String id="QUIT">Quit</String> <String id="INSTRUCTIONDIALOG">Swap adjacent gems to create rows of 3 or more!</String> <String id="DONE">DONE</String> <String id="COLOR_DEPTH_EXPLANATION1">No Windowed Mode</String> <String id="COLOR_DEPTH_EXPLANATION2">Windowed mode is only available if your desktop is running in either 16 bit or 32 bit color mode, which it is not.</String> <String id="YOU_HAVE_PLAYED_DIAMOND_MINE_D_TIMES">You have played Diamond Mine %d times!&cr;&cr;</String> <String id="YOU_HAVE_PLAYED_BEJEWELLED_D_TIMES">You have played Bejeweled %d times!&cr;&cr;</String> <String id="YOU_ARE_A_DIAMOND_MINE_AHOLIC">You are a Diamond Mine-aholic!&cr;&cr;</String> <String id="YOU_ARE_A_BEJEWELAHOLIC">You are a Bejewelaholic!&cr;&cr;</String> <String id="LOOKS_LIKE_YOU_ARE_ADDICTED">Looks like you are addicted!&cr;&cr;</String> <String id="ARE_YOU_GETTING_HOOKED">Are you getting hooked?&cr;&cr;</String> <String id="LOADING_NAG">Register online to remove the loading delay and this screen. Registering also unlocks the High Score feature, so you can record your best scores!&cr;&cr;Register now?</String> <String id="REGISTER_NOW">Register Now</String>
Why is there still Diamond Mine strings in default.xml? Unsure.
Revisional Differences
The Steam version of Bejeweled Twist unlocks Blitz mode by default.
To do: Sound and texture definitions were also changed. |
In the CD-ROM version, the textures are uncompressed JPG files, heavily increasing the content size of the game to 200+MB compared to later versions.
Debugging Material
The game has a small variety of debugging content. As of this game, the PopCap Framework was internally upgraded so both a few new command line parameters and debug keys were added.
Command-line Parameters
The game's executable mentions command lines parameters for starting the game. It's not friendly with commands using spaces, so use = instead. These are:
- -artres1200: Sets the Art Resolution to 1200, forcing Ultra Resolution (1920x1200) mode, this one is game-specific.
- -artres768: Sets the Art Resolution to 768, forcing High-Res (1024x768) mode, this one is game-specific.
- -artres600: Sets the Art Resolution to 600, forcing Normal-Res (800x600) mode, this one is game-specific.
- -autoplay: Makes the game boot to play the Classic game mode on its own, if a Game Over happens, the process repeats, this one is game-specific.
- -minidump: Unknown.
- -ultradump: Unknown.
- -noacceleration: Doesn't seem to work, likely disables 3D Acceleration.
- -nod3d9: Boots up the game with the Direct3D 8 graphics API.
- -playback: Plays recording.dat if its present.
- -record: Records a file named recording.dat and saves after shutdown of the game, overrides the PopCap Framework version however doesn't appear to work correctly.
- -skipmenu: Immediately goes to Classic mode, be careful with existing save data as this overwrites it, this one is game-specific.
- -widescreen: Forces the game into the widescreen mode, even if the player is using windowed mode, this one is game-specific.
Debug Commands
To do: Make it possible to see UpdateCount without messing with another value. |
F1 was added, being the only debug key not requiring debug keys enabled and a few other debug keys were changed and added. This tends to lower the framerate with 3D Acceleration enabled so use this carefully. It shows a display in this format:
Game Version: %s, Current Time: %s, UpdateCount: %d %s %s, ArtRes: %dp BackBuffer: %s DisplayMode: %s "%s" V.%x D.%x S.%x R.%x "%s" %d.%d.%d.%d D3D DLL Version: %s Build %d %s CPU %d: "%s" "%s" MemLoad %d%% Phys %d/%dMB Page %d/%dMB Virt %d/%dMB D3D Texture Memory: %dkB Drawn (%d%%) / %dkB Alloced / %dkB Wasted (%d%%) D3D RTPool: Total:%d (%d Full, %d Half, %d Quarter, %d Other); Locked:%d
- Game Version: Version of the game executable.
- UpdateCount: A value showing the total number of frames the game engine is running for. The value isn't shown despite it is present in the string and has working code that does get used, if you set address 00767C45 (Final WW) to NOP, you can make it visible at the sacrifice of viewing Current Time.
- Current Time The current date, 24-hour time and also the year of the device.
The string after is the game window settings. Wide is displayed when the game is widescreen and Windowed appears after if the game is windowed while Fullscreen appears instead if the game is fullscreen. The renderer is next, SW is shown if 3D Acceleration is disabled, being the software renderer while HW DX%i is shown if 3D Acceleration is enabled where %i is 7, 8 or 9, symbolizing DirectX versions. ArtRes is the resolution of textures and animations for the game to use, being either 600, 768 or 1200.
- BackBuffer: The game resolution in 32 bits and texture format. Only displayed when 3D Acceleration is enabled.
- DisplayMode: Similar to above but for the monitor, also includes the HZ rate.
The string below is the Graphics Driver information. The first string is the description, next is the vendor ID, device ID, subsystem ID, revision, driver and driver version with the Direct3D DLL version. The below string is displayed when 3D Acceleration is disabled.
No Adapter Info Available No D3D Version Information Available
The string after is the Windows version, being Windows 97-7, including NT. The below is displayed if the Windows device is unknown while the one underneath would appear on an NT-based device.
Unknown Windows %d.%d Unknown WinNT %d.%d
- CPU: Repeats per processor for the device, being the number, name and key name.
- MemLoad: Memory status, being the % of memory used on the device, available + total physical memory, available + total pagefile memory and available + total virtual memory.
- D3D Texture Memory: Direct3D texture memory of the device, being ? drawn + percent of ? , allocated memory and wasted memory + percent of wasted memory. Only shows with 3D Acceleration on as the below appears if otherwise.
No D3D Texture Memory Information Available
- D3D RTPool: Direct3D Render Target Pool, being the entry count, full + half + quarter + other size count and locked count.
- F3 - Added a unique function to this game when activated, adds a display when in-game.
The top left corner is the name of the visual background. The Japanese and Origin version of the game has added new values.
%s %d Valid:%d DrawPrim List(%d/%d) Strip(%d/%d) Fan(%d/%d) FPS:%3.2f SChan:%d SetRT: %d (-%d), DistMapUsed: %d, SetVS: %d, SetPS: %d
Valid is if the move will be valid based on the cursor's position, changes to 1 if so, while the number to the left of it were the amount of gems eliminated from the current move. Close to the bottom left corner are 3 frame displays. The top display shows the total game time in frames. The left number is a count for consistent matches in the game window. The middle number shows the number of frames before a successful match was made currently. The right number shows the number of frames the player is unable to move during a turn, goes up by failed matches and reopening the game.
- F8: Added Direct3D Version.
- CTRL-F8 - Added to enable 3D Acceleration. If disabled, otherwise changes Direct3D's version from 9 and 8, this does NOT restart the game.
- SHIFT-F8 - Updated to also change the Direct3D version to 9.
- ALT-F8 - Added to toggle VSync, this does NOT restart the game.
Unused Game Modes
Action Mode
An unused mode found in the game's code. It was most likely similar to Bejeweled's Timed mode and Bejeweled 2's Action or Hyper mode in which the level-up bar is halfway full and slowly empties over time, making the player have to keep making matches before the level-up bar is completely depleted.
Extreme Mode
An unused mode that was essentially the same as Classic Mode, but the Progress Bar was longer than normal.
The Bejeweled series
| |
---|---|
Java | Diamond Mine |
Windows | Bejeweled • Bejeweled 2 • Bejeweled Twist • Bejeweled Blitz • Bejeweled 3 • Bejeweled Live |
Mac OS Classic | Bejeweled |
Mac OS X | Bejeweled • Bejeweled 2 • Bejeweled 3 |
iOS | Bejeweled 2 • Bejeweled Blitz • Bejeweled Classic • Bejeweled Stars |
Android | Bejeweled Classic • Bejeweled Stars |
Adobe Flash | Bejeweled • Bejeweled 2 • Bejeweled Twist • Bejeweled 3 |
HTML5 | Bejeweled • Bejeweled Stars |
PopCap Loader | Bejeweled 2 |
- Pages missing developer references
- Games developed by PopCap Games
- Pages missing publisher references
- Games published by PopCap Games
- Windows games
- Pages missing date references
- Games released in 2008
- Games released in October
- Games released on October 27
- Games with unused objects
- Games with unused game types
- Games with unused graphics
- Games with unused music
- Games with unused sounds
- Games with unused text
- Games with debugging functions
- Games with revisional differences
- To do
- Bejeweled series
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Cleanup > To do
Games > Games by content > Games with debugging functions
Games > Games by content > Games with revisional differences
Games > Games by content > Games with unused game types
Games > Games by content > Games with unused graphics
Games > Games by content > Games with unused music
Games > Games by content > Games with unused objects
Games > Games by content > Games with unused sounds
Games > Games by content > Games with unused text
Games > Games by developer > Games developed by Electronic Arts > Games developed by PopCap Games
Games > Games by platform > Windows games
Games > Games by publisher > Games published by Electronic Arts > Games published by PopCap Games
Games > Games by release date > Games released in 2008
Games > Games by release date > Games released in October
Games > Games by release date > Games released in October > Games released on October 27
Games > Games by series > Bejeweled series