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

Bejeweled 3 (Windows, Mac OS X)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Bejeweled 3

Developer: PopCap Games
Publisher: PopCap Games
Platforms: Windows, Mac OS X
Released in US: December 7, 2010

AreasIcon.png This game has unused areas.
CodeIcon.png This game has unused code.
ObjectIcon.png This game has unused objects.
GraphicsIcon.png This game has unused graphics.
MusicIcon.png This game has unused music.
SoundIcon.png This game has unused sounds.
TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.
RegionIcon.png This game has regional differences.

To do:
I'm pretty sure the Mac version on Steam has cheat key support? More info: 1 2 3 4 5

Bejeweled 3 is the third (or fifth?) game of popular match-3 puzzle series.

As with most of PopCap's other games, this game packs most of the resources to a single file named "main.pak". You can extract the resources by using QuickBMS with this plugin. You can also repack the files by using "PopPak.exe" that is included in PopCap Games Framework.


Unused Graphics

Early Exit Button


This graphic would have suited the main title area of Blitz due to it having a different floor backdrop, but it was instead chosen by a text graphic that appears throughout the bottom right of the game.

Checkpoint Marker

If you die, you can restart from here. Oh, you don't have extra lives?

Usage unknown. Probably it pointed to a spot of something interesting?


Scrapped because it's too ugly.

This very out-of-place looking Detonate button is NOT a leftover from the Windows version of Bejeweled Blitz. Blitz had a far more beautiful-looking detonator button than this.

Doom Gem

His count won't decrease, as you can't move gems freely.

Possible leftover from Bejeweled Twist. Bomb Gems made an appearance in this game, but Doom Gems did not.

Green Question


This is a leftover from Bejeweled Blitz's Mystery Gem boost. This is also very similar to Poker mode's wildcard, but the wildcard is stored separately from this.

Regional Differences

Unused Images

Bej3 Incredible.png
Bej3 Astonishing.png

Unused compliments found in Bejeweled 3's Japanese translation. These images do not appear in the Western-language versions.

Unused Special Gems

Doom Gem


What appears to be scrapped from Bejeweled Twist, this gem is incorrectly positioned on the board by default. Even though the manner of the gem being locked to other adjacent matches has remained in this game, the number counter of the gem is not possible to be ticked down as for the different mechanics from Twist.

Two types of the Doom Gem exist; 01 being the numberless version (still explodes when its counter is not set) and 03 having the number on the front.

Leftovers from Bejeweled Blitz (Windows)

Multplier Gem

Shiny shiny...

Lacking the graphics for the numbered score multiplication counters, the game will indeed multiply its score matches by the multiplier matched, until the mode is ended. This gem will go beyond the restriction of the x8 counter Blitz had.

Scrambler, Detonator and Coin Gems

Both available to be set as gem types, these don't have custom graphics on their own and so appear to be a normal gem, until hovered over which can be identified via the flavour text.

The detonator gem appears to be non-working even when other special gems are on the board, but the scrambler gem does scramble the board, for two turns. scramble.wav plays when the gem is clicked on.

The coin gem has the score base value of 300x[Level Number], while playing diamond_mine_treasurefind.ogg when matched, which is completely similar to the sound effect in Blitz.

Mystery Gem

Doesn't give you any special gem...

With similar properties like the Doom Gem, it is locked for interaction with other nearby gems, and would not match with other gems with the same colour. Anyhow, the board will not level up with this gem's presence when the progress bar is full.

Unused Quests

Inside main.pak, there is a "properties" directory which has configuration files.

  • defaultquest.cfg: Early Quest mode configurations
  • quest.cfg: Final Quest mode configurations
  • secret.cfg: Secret modes configurations (Poker, Butterflies, Ice Storm, and Diamond Mine)
  • speed.cfg: Lightning mode configurations
  • badges.txt: Badge requirements
  • ranks.txt: Rank names
  • tips.txt: Tip of the day (Appears during loading screen)
  • music.xml: Music configurations
  • resources.xml: Location of resources

There are two different Quest mode configuration files: defaultquest.cfg and quest.cfg. Only quest.cfg is used by the actual Quest mode. defaultquest.cfg has early designs of Quest mode. It's not used by the game by any normal means. (However, it IS still loaded by the game, and partly used by the Debug Menu)

There are 21 missions in defaultquest.cfg. The only way to play them is by hacking the current quest.cfg.

12 missions can be played without problems. 3 missions require the use of the debug menu because one must bypass the Quest Menu. 4 missions require repairing in order to play. 2 missions are unplayable.

All but 4 missions select the background randomly, unlike the final game's missions.

Mission #1: Lead to Gold - Any match

Welcome to a strange world
Fill the grid with gold by making matches.

This type of mission is completely unused in the final game. It's similar to Alchemy, but the matches do not turn entire rows/columns to gold.

Your goal is to fill the entire grid to gold within 1 minute. The time limit is short, but fortunately, the outer grids are already gold from the start.

You can't play this mission without using the debug menu, because the game crashes when you open up the Quest Mode menu. The reason of the crash is probably because the final game no longer has the icon for these type of missions.

Mission #2: Lead to Gold - Yellow matches

Before the match After the match
Yellow only? Really?
Fill the grid with gold by making yellow matches.

This type of mission is also completely unused in the final game, and can only be played via the debug menu. Only yellow gem matches can turn the grids to gold, but if you do it, it will turn 8 surrounding grids to gold too. (Similar to how Flame Gems work)

You can't die in this mission; there are no time or move limits.

Mission #3: Lead to Gold - Columns & Rows

Fill the grid with gold by making matches.

This is almost the same as the final game's Alchemy mission. However, you have only 1 minute as opposed to 1:30.

Mission #4: Wall Blast

Can you see where the last breakable wall is?
Destroy the wall with special gems.

This looks similar to the final's one, but there are twists: Most walls are invisible. Some visible walls can't be destroyed. It selects the wall patterns from one of the 3 different maps. There are no time or move limits, but you are still vulnerable to the frustration of invisible/unbreakable walls.

This is one of the four missions that has non-random background. It has background #0, which is same as the final's Wall Blast missions.

Mission #5: Time Bomb

Destroy 10 bomb gems by matching them before the countdown reaches zero!

This is almost the same as the final game's same mission. You have to destroy 10 bomb gems before any countdown to zero. Each bomb has 20 moves countdown.

Mission #6: Time Bomb (Real time)

Destroy 10 bomb gems by matching them before the countdown reaches zero!

This is almost the same as the final game's Time Bomb II mission, but new bombs drop more frequently. You have to destroy 10 bomb gems before any countdown to zero. Each bomb has 60 seconds.

Mission #7: Inferno

Match 200 gems before the flames reach the top of the board!

Inferno is the internal name of Ice Storm mode. So you see ice instead of fire. Strangely, there are no ice bars here, most likely because it lacks the mandatory settings for today's Ice Storm mission.

Mission #8: Balance

Collect 25 red and 25 blue gems, but don't let the weights get too unbalanced!

This is a slightly easier version of the final's Balance III. You have to clear 25 red and blue gems instead of 30.

Mission #9: Stratamax

Clear 100 gems in 20 moves.

This is an easy version of the final's Stratamax missions.

Mission #10: Butterflies

Catch 20 butterflies before they escape the top of the board!

This is a slightly harder version of the final's first Butterflies mission. You have to catch 20 butterflies instead of 15.

Mission #11: Avalanche

Clear 100 gems without allowing the board to fill up. Each move adds 5 gems.

This is very similar to the final's Avalanche IV, but you only need 100 gems instead of 110.

Mission #12: Butterflies + Wall

Invisible walls are back! Now with butterflies!
Knock down the wall and capture any butterflies before they escape.

Two challenges in one mission! Surprisingly, it can be played WITHOUT the debug menu. It uses the Butterflies icon and music.

You must battle against invisible/unbreakable walls (patterns are selected from 3 different maps) while catching the butterflies.

Mission #13: Lead to Gold + Time bomb

Alchemists vs Terrorists
Fill the grid with gold by making matches.

Another mixed challenge. This one crashes the Quest Menu and requires the debug menu, because it uses the scrapped Gold system which is the same as the first mission.

You must battle against an unlimited amount of bomb gems (20 moves) and fill the entire grid to gold. The bomb gems do not appear until the first move.

Mission #14: Buried Treasures

Find buried treasures within 50 moves! Avoid the skull!

It crashes the game if you simply copy paste the configurations from defaultquest.cfg. To repair, use the following configurations instead:

Quest "Buried Treasures"
    Description = "Find buried treasures within 50 moves! Avoid the skull!"
    Challenge = "Move Limit"
    Goal = "Hidden Objects"
    ItemSet = "3"
    Moves = 50;

You have to find 4 treasures in 50 moves, instead of 120 or 90 seconds. The "skull" feature is removed from the final game, but probably a bad thing would have happened when you uncover it.

Mission #15: Sandstorm

Find buried treasures! They cover back up over time. Avoid the skull!

It crashes the game by default, too. Use the following configurations to repair it:

Quest "Sandstorm"
    Description = "Find buried treasures! They cover back up over time. Avoid the skull!"
    Challenge = "Time Limit"
    Goal = "Hidden Objects"
    ItemSet = "3"
    Time = 120
    RefillRateSec = 20.00;

You have to find 4 treasures within 2 minutes. The sand refills after 20 seconds. This is the early version of Sandstorm II. It has a longer time limit (Sandstorm II has only 1:30) but has a faster sand refill rate (Refill starts after 30 seconds in Sandstorm II).

Mission #16: Poker

 Score 200 points before running out of hands.

 Assemble the best hand possible out of 5 cards! Every
 match reveals a new card of the color of the gem you
 swapped. Mouse over the score sheet on the left to
 see a description of each valid hand.
 You have 10 hands to score 200 points.  Good luck!

It crashes the game if you simply copy paste the configurations from defaultquest.cfg. To repair, use the following configurations instead:

Quest "Poker"
    Description = "Score 200 points before running out of hands."
    HelpText = "Assemble the best hand possible out of 5 cards! Every match reveals a new card of the color of the gem you swapped. Mouse over the score sheet on the left to see a description of each valid hand.\n\nYou have 10 hands to score 200 points. Good luck!"
    Challenge = "Poker"
    HyperMixers = true
    Goal = 200
    Hands = 10
    FlameBonus = 5
    StarBonus = 5
    HandValues = "0, 0, 5, 10, 25, 40, 75";

The value for hands are quite different from the final's Poker missions. Pair and Spectrum are worth 0 points. If your hand ends in Pair or Spectrum, "No Score" will be displayed, but the bonus for special gems are still added.

This mission has detailed help text, unlike most others.

Mission #17: Gold Rush

Yes, the casino had a diamond mine.
Break through the rock to collect diamonds before timer runs out!

You have to mine 15 gold nuggets within 2 minutes. The game play is similar to the final's Gold Rush missions, but visuals are not. It uses Alchemy/Buried Treasure/Sandstorm music, and background #9 (Poker).

Mission #18: Scrolling Gold Rush

Break through the rock to collect diamonds before timer runs out!

It uses the Gold Rush icon, but crashes the game if you try to enter it. It appears to be an early version of the Diamond Mine secret game.

Mission #19: Lead to Gold - Othello

Flip the gold tile twice to earn gold.

This is an early version of Alchemy III. You have 60 seconds instead of 30 moves, and cascades do not turn grids to lead or gold.

When played without repairing, you win the game instantly as soon as you enter here. To actually play this mission, replace the following line:

Target = 100;


Squares = 64;

Mission #20: Ice Storm

 Match 100 gems before ice reaches the top of the board!
 Ice is creeping up the board. Knock ice down by
 making matches above or below it. Match 100 gems
 before ice reaches the top of the board!

It seems this mission was created after the name of Ice Storm was finalized. It works better than Inferno mission; the ice bars are actually working. Either by a mistake or a testing purpose, only 10 gems (not 100) are required to win the game.

It uses background #16 (One of the Classic/Zen only backgrounds).

Mission #21: Diamond Mine

 Mine all rocks and gold above the line before time runs out!
 Dig through rocks and gold by matching gems near
 them. Clear above the line before time runs out to
 keep mining. The deeper you mine the better your

It's the revised version of Scrolling Gold Rush. It crashes the game if you try to enter it. It has high-score related settings and several Artifact related settings. It uses background #3 (Buried Treasure/Sandstorm).

Unused Quest Options

Common Options

There are some common options that can be defined in any quests and secret modes. Some of them are not used by any of quests or secret modes.


# WantPointComplements		true/false		turn on voice point-based complements (default is off)

It will display the complements ("Good!", "Awesome!", etc) when you destroy a large number of gems in a single move or when you make a big cascade.


# RecordHighScores		true/false		game should record high scores

It controls whether to show the stats screen after finishing a game. The default is false for quests, and true for secret games.

This setting can lead to two different unused things. When set to true in a quest, it will show the unused stats screen. When set to false in a secret mode, it will enable access to the debug menu.

ColorCountTarget and ColorCountTargetSec

# ColorCountTarget		integer			number of colors to change to
# ColorCountTargetSec	number			seconds until color target is reached

These options are mentioned only in defaultquest.cfg, and does nothing when used.

Unused Challenge Types

The following are unused Challenge types for Quest Mode that can only be found in the game's executable.


This is the alias of Butterflies challenge type. Everything is the same as Butterflies, except for the lack of a quest icon.

No Lose

"No Lose" challenge type actually appears several times in the final game's quest file, but ignored by the game as it is quickly overwritten by another challenge type.

As the name suggests, this challenge features no hazards, and possibly used by the developers for testing.

Unlike other challenges, the progress bar is shown below the game board like Classic/Zen modes. In other challenges, the progress bar is shown inside of the score display.


The game ends after the player makes a certain number of bad moves. The number of bad moves so far made is not displayed to the screen. It is otherwise the same as the "No Lose" challenge type, including the position of the progress bar.

The number of bad moves allowed is defined by an otherwise unused "BadMovesAllowed" option:

BadMovesAllowed = [Integer]

Unused Goal Types

The following are unused Goal types for Quest Mode that can only be found in the game's executable.


The goal is to destroy 20 gems in 1 move. If a cascade ends before reaching 20 gems, the score becomes zero. For 20-gems-requirement, none of the known options seem to change this.


The goal is keep a certain number of Flame Gems on the screen. The score increases when you create Flame Gems, and decreases by destroying them. The number of Flame Gems required is defined by the "Gems" option.


Probably, the goal is to score a certain number of points. However, no known actions give you points. The required number of points is defined by an otherwise unused "Score" option:

Score = [Integer]


The goal is to create a certain number of Flame Gems. You don't have to detonate them; just create them. The required number of Flame Gems is defined by an otherwise unused "FlameGems" option:

FlameGems = [Integer]


The goal is to keep a certain number of certain colored gems on the screen. The score increases when the required colored gems appear on the screen, and decreases by destroying them. The number of required gems is defined by the "Gems" option. The gem color is defined by an otherwise unused "Color" option:

Color = [Integer] (0:Red, 1:White, 2:Green, 3:Yellow, 4:Purple, 5:Orange, 6:Blue)


Gray rectangle gems.
Gray rectangle grids.

The goal is the same as the "Clear Gems" goal type; clear a required number of gems to win. However, when an otherwise unused "HidePerMatch" option has a non-zero value, most of the board is covered with gray rectangles.

HidePerMatch = 1

All gray rectangles reappear each time you make a match. However, the gray rectangles are removed from nearby cleared gems (this includes your match, cascades, and newly generated gems). The difference between two goal types is whether or not you can see the gem color by trying to make a bad move. In HIDDEN GEMS, it's impossible due to the rectangles moving along gems. In HIDDEN GRID, it's possible; the rectangles do not move.

Another option named "HidePerUpdate" exists. Using this will cover the entire board with gray rectangles that cannot be removed.

HidePerUpdate = 1


Probably, the intended goal is to survive a certain number of seconds. However, nothing happens when the required time is passed. The required time is defined by an otherwise unused "SurviveSec" option:

SurviveSec = [Integer]

In the game, the goal is set to (SurviveSec * 100). For example, if SurviveSec is 60, it will display 6000 as the goal. Although the progress bar constantly fills, the score never increases. If the progress bar becomes full, the bar resets.

Other Unused Options


This option sets the initial amount of score ("Money") in Poker quests.

StartingMoney = [Integer]

Unknown Options

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Figure out the functions of these options.

The following are other unused options. Those functions are currently unknown.


Unused Quest Mode Stats Screen

This screen can be enabled by adding the following line after each "Quest" line, in quest.cfg:

RecordHighScores = true

After being enabled, this screen will be activated when the player completes or fails a mission. It has a "New Quest" button (used only in this screen) instead of the "Badges" button.

The buttons do not work as intended; "New Quest" and "Main Menu" buttons will crash the game. "Play Again" button will nearly freeze the game screen, however the player can still exit to the quest menu by pushing the Escape key, which will bring the pause screen. "Play Again" button will still crash the game if the bomb is exploded in Time Bomb missions, as the explosion unloads the board graphics from RAM.

Missions of Butterflies, Poker, and Ice Storm will display some statistics. All other type of missions (including Gold Rush for unknown reason) will show an empty screen.

Debug Menu

Something went wrong.

Debug menu can be enabled by adding the following line after each "Quest" line, in secret.cfg:

RecordHighScores = false

After enabled, go to any of 4 secret modes, then get a Game Over, and you'll be in the debug menu!

When you enter the debug menu, you are at the Secret Games debug menu, but there are lots of mess in the screen. Click the "Back" button to access the main debug menu and clean up the mess.

Please note when you play games from debug menu, you must disable "Animate Background" option to avoid huge slowdowns.

The regular backgrounds are not loaded when playing from the debug menu. Instead the game uses the static screen shot of Secret Games debug menu as a background.

Main Debug Menu

The shortcuts.
  • Play Classic: Starts Classic mode.
  • Time Bonus: Starts Lightning mode.
  • Tug of War: Crashes the game. (Removed mode?)
  • Play Zen: Starts Zen mode.
  • Play Quests: Takes you to normal Quest mode menu.
  • Secret Modes: Takes you to Secret Games debug menu, but without the mess in the screen.
  • [Bunch of small buttons]: Quest mode shortcut. The quest names are loaded from defaultquest.cfg, but actual quest configurations are loaded from quest.cfg. So, if you click "Lead to Gold - Any match" button, you'll be taken to the first Butterflies mission. The game will crash upon completion of the mission.
  • Main Menu: Takes you to Secret Games debug menu.
  • Quit: Quits the game without confirming.

Secret Games Debug Menu

Clean and simple.
  • Poker: Starts Poker mode.
  • Butterflies: Starts Butterflies mode.
  • Ice Storm: Starts Ice Storm mode.
  • Diamond Mine: Starts Diamond Mine mode.
  • Back: Takes you to the main debug menu.

Unused Text

This Quest needs help text. Insert a
HelpText parameter in the appropriate
quest .XML file

This help text appears when you click the quest objective in most of the unused quests. Please note the final game does not use XML for quest mode configurations.

Scrambles all gems on the board.
Detonates all Special Gems on the board.
Creates a random Special Gem at game start.
Creates a x2 Multiplier at game start.
Adds 5 seconds to the end of the game.
Mystery Gem
Free Multiplier
+5 Seconds
Randomly drops onto your board. Match it to increase your score multiplier by 1!
Clear this Gem to collect the coin inside! Save money to buy Boosts!

Leftover text from Bejeweled Blitz.

<!-- DO NOT EDIT THIS FILE. This file is generated by ResourceGen3.  Any changes will be overwritten! -->

The generation note in resources.xml was changed in Mac version and future releases, also having more parameters. Possibly from Resource Generator 3.

Unused Music Sequences

Several unused music strings can be found in the main Bejeweled3_suite.mo3 file.

Sequences 22 to 27. Uniquely, outside of this game it is listed in Bejeweled 3's Bandcamp OST as a "bonus track" with the name Gems of Glass.

Sequences 90 to 94, that is apparent that were initially part of Zen's music, judging from the Pattern Name from the remastered OST file.

Sequences 96 to 105 are all linked together, with the majority of them appearing to be left unfinished as fragments.

Offset 96, with tempo 176, which perhaps might suggest to be an earlier version of Avalanche/Stratamax's music. In the tracker file of the remastered OST, this is named "Hoppers."

Offset 97, with tempo 112. In the tracker file of the remastered OST, this is named "Waiting." Perhaps this was an early loading screen theme?

Offset 98 to 99, with tempo 112. In the tracker file of the remastered OST, this is named "Dumb Theme."

Offset 100, with tempo 112. In the tracker file of the remastered OST, this is named "Das Boat." Quest Level music perhaps?

Offset 101, with tempo 120. In the tracker file of the remastered OST, this is named "Celt Hero." Maybe was going to be used as another Quest theme due to Celt meaning "A cut stone for use as a tool."

Offset 102, with tempo 128.

Offset 103, with tempo 128. In the tracker file of the remastered OST, this is named "Slow Theme Test."

Offset 104, with tempo 144. In the tracker file of the remastered OST, this is named "Zeitgeist 1." Likely another early version of Stratamax/Avalanche's theme due to similar instruments used.

Offset 105, with tempo 96. In the tracker file of the remastered OST, this is named "Vangalis Herp Derp." Despite the funny sounding name, this might've been used for Diamond Mine or the Gold Rush and Buried Treasure/Sandstorm quests due to this theme having similar instruments used.

Unused Sounds

There are 2 unused sound effects. Both are leftovers from Bejeweled Blitz, but the file format is converted to WAV. (All sound effects of Blitz use .ogg format)


It was played when the Coin Gems appear on the board. Coin Gems are unused in this game.


It was played when the player uses Scramble power-up. There is no Scramble power-up in this game, although played via unused Scrambler-type gems. No other Blitz power-up sound effects can be found in this game.

However, there is one sound that is not in Blitz that is new in 3.


An unused 500hz sinewave. Unknown purpose.

Debug Commands

To do:
There may be more.

Pressing CTRL-ALT-D will play a sound to indicate debug key input is enabled, allowing options of typing unique keys for debugging displays or mechanisms, another use will disable it, most were upgraded and few were removed as the framework got an overhaul.

  • F2 - Start/Stop perf timing, using Shift with this shows an in-game display in red saying PERF RECORD, if a symbol file is present, the file will be loaded for name of the said symbols for the function recently triggered to show the function called and its parameter(s).
  • F3 - Toggle FPS display. Unique to this game, also does something similar to Bejeweled Twist, but most other functions compared to that one were not present.


The value on the top right corner shows the total game time in frames, while the bracketed numbers with the word to for dividing the terms are the X and Y offsets of a current match.

  • CTRL-F3 - Shows a window.
Frame overdraw %.2fx
  • Shift-F3 - Toggle FPS/FPS + Perf bars/mouse coordinate display.
  • F8 - Show a window with the current Video Stats (mostly used to see if 3D acceleration is currently on).
3D-Mode is %s (3D is %s on this system)

Direct3D Version: %d
Num Images: %d
Num Sounds: %d
Video Memory: %d/%d KB
Image Memory: %d KB
Texture Memory: %d KB
A8R8G8B8: %d - %d KB
A4R4G4B4: %d - %d KB
R5G6B5: %d - %d KB
Palette8: %d - %d KB
  • CTRL-F8 - Enables 3D acceleration, if disabled, otherwise adjusts Direct3D's API from 9-7, do not use this on the main menu as it crashes the game.
  • Shift-F8 - Toggle 3D acceleration, do not use this with DX9 on the main menu as it crashes the game.
  • Shift-F11 - Dump all program images in memory to the ProgramData/OEM/Bejeweled3/_dump directory as PNG and JPEG images.

Command-Line Launch Options

The game uses the typical PopCap Framework launch options, some like -webroot were ported from Bejeweled Blitz with no working functionality but a couple are unique.

Argument Description Screenshot (if necessary)
-600 Forces the game to run at the "Normal" resolution mode (800x600). N/A
-768 Forces the game to run at the "High" resolution mode (1024x768). N/A
-1200 Forces the game to run at the "Ultra" resolution mode (1920x1200). N/A
-classic When the game starts, it will skip the main menu and jump to the Classic mode. N/A
-speed When the game starts, it will skip the main menu and jump to the Lightning mode. N/A
-quest When the game starts, it will skip the main menu and jump to the Quest mode. N/A
-wide Forces the game into the widescreen mode, even if the player is using windowed mode. Bejeweled 3-DebuggingCommand-Wide.png
-zen When the game starts, it will skip the main menu and jump to the Zen mode. N/A
-testbkg Loads a specific background with said images from a PopAnim Module file after starting a game mode. Example use: testbkg=images\1200\backgrounds\main_menu\main_menu.pam Bej3 DebuggingCommand Testbkg.png
-nod3d9 Boots up the game with the Direct3D 8 graphics API. N/A

Development leftovers


default.cfgasm is present in the Chinese version, it has a plaintext numeric list of content from the compatibility configuration file has no use from the game.

0:	Load Const Int "4318"
3:	Store Var "VENDOR_NVIDIA" [0:0]
6:	Pop
7:	Load Const Int "4098"
10:	Store Var "VENDOR_ATI" [0:2]
13:	Pop
14:	Load Const Int "32902"
17:	Store Var "VENDOR_INTEL" [0:4]
20:	Pop
21:	Load Const Int "4153"
24:	Store Var "VENDOR_SIS" [0:6]
27:	Pop
28:	Load Const Int "4139"
31:	Store Var "VENDOR_MATROX" [0:8]
34:	Pop
35:	Jmp @145
37:	Load Property "compat_IsVista" [0:15]
40:	Jf @111
42:	Load Property "compat_AppSysMemTotalMB" [0:12]
45:	Load Const Int "768"
48:	CmpGE
49:	Copy
50:	Jf @60
52:	Pop
53:	Load Property "compat_AppOrigScreenHeight" [0:14]
56:	Load Const Int "1050"
59:	CmpGE
60:	Copy
61:	Jf @71
63:	Pop
64:	Load Property "compat_AppVidMemory" [0:10]
67:	Load Const Int "192"
70:	CmpGE
71:	Jf @79
73:	Load Const Int "1200"
76:	Ret
77:	Jmp @109
79:	Load Property "compat_AppSysMemTotalMB" [0:12]
82:	Load Const Int "512"
85:	CmpGT
86:	Copy
87:	Jf @97
89:	Pop
90:	Load Property "compat_AppOrigScreenHeight" [0:14]
93:	Load Const Int "600"
96:	CmpGT
97:	Jf @105
99:	Load Const Int "768"
102:	Ret
103:	Jmp @109
105:	Load Const Int "600"
108:	Ret
109:	Jmp @141
111:	Load Property "compat_AppSysMemTotalMB" [0:12]
114:	Load Const Int "512"
117:	CmpGT
118:	Copy
119:	Jf @129
121:	Pop
122:	Load Property "compat_AppOrigScreenHeight" [0:14]
125:	Load Const Int "600"
128:	CmpGT
129:	Jf @137
131:	Load Const Int "768"
134:	Ret
135:	Jmp @141
137:	Load Const Int "600"
140:	Ret
141:	Load Const Bool "false"
144:	Ret
145:	Load Const Int "0"
148:	Store Property "shader_whiteout_fallback" [0:29]
151:	Pop
152:	Load Const Int "0"
155:	Store Property "shader_sidebar_p_fallback" [0:31]
158:	Pop
159:	Load Const Int "0"
162:	Store Property "shader_sidebar_tube_p_fallback" [0:33]
165:	Pop
166:	Load Const Int "0"
169:	Store Property "shader_sidebar_engine_p_fallback" [0:35]
172:	Pop
173:	Load Const Int "0"
176:	Store Property "shader_cube_p_fallback" [0:37]
179:	Pop
180:	Load Const Int "0"
183:	Store Property "shader_rainbow_cube_p_fallback" [0:39]
186:	Pop
187:	Jmp @382
189:	Load Property "compat_D3DVendorID" [0:18]
192:	Store Var "vendor" [9:0]
195:	Pop
196:	Load Property "compat_D3DDeviceID" [0:19]
199:	Store Var "device" [9:1]
202:	Pop
203:	Load Const Int "4"
206:	Store Var "maxstages" [9:2]
209:	Pop
210:	Load Var "vendor" [9:0]
213:	Load Var "VENDOR_INTEL" [0:4]
216:	CmpEQ
217:	Jf @237
219:	Load Property "compat_D3DPSVersion" [0:28]
222:	Load Const Float "1.000000"
225:	CmpLT
226:	Jf @235
228:	Load Const Int "1"
231:	Store Var "maxstages" [9:2]
234:	Pop
235:	Jmp @253
237:	Load Property "compat_D3DPSVersion" [0:28]
240:	Load Const Float "1.000000"
243:	CmpLT
244:	Jf @253
246:	Load Const Int "2"
249:	Store Var "maxstages" [9:2]
252:	Pop
253:	Load Var "maxstages" [9:2]
256:	Load Const Int "2"
259:	CmpEQ
260:	Jf @285
262:	Load Const Int "2"
265:	Store Property "shader_whiteout_fallback" [0:29]
268:	Pop
269:	Load Const Int "2"
272:	Store Property "shader_sidebar_p_fallback" [0:31]
275:	Pop
276:	Load Const Int "2"
279:	Store Property "shader_rainbow_cube_p_fallback" [0:39]
282:	Pop
283:	Jmp @322
285:	Load Var "maxstages" [9:2]
288:	Load Const Int "1"
291:	CmpEQ
292:	Jf @322
294:	Load Const Int "3"
297:	Store Property "shader_whiteout_fallback" [0:29]
300:	Pop
301:	Load Const Int "3"
304:	Store Property "shader_sidebar_p_fallback" [0:31]
307:	Pop
308:	Load Const Int "2"
311:	Store Property "shader_sidebar_tube_p_fallback" [0:33]
314:	Pop
315:	Load Const Int "3"
318:	Store Property "shader_rainbow_cube_p_fallback" [0:39]
321:	Pop
322:	Load Const String "maxstages = "
325:	Load Var "maxstages" [9:2]
328:	Add
329:	Log
330:	Load Const String "shader_whiteout = "
333:	Load Property "shader_whiteout_fallback" [0:29]
336:	Add
337:	Log
338:	Load Const String "shader_sidebar_p = "
341:	Load Property "shader_sidebar_p_fallback" [0:31]
344:	Add
345:	Log
346:	Load Const String "shader_sidebar_tube_p = "
349:	Load Property "shader_sidebar_tube_p_fallback" [0:33]
352:	Add
353:	Log
354:	Load Const String "shader_sidebar_engine_p = "
357:	Load Property "shader_sidebar_engine_p_fallback" [0:35]
360:	Add
361:	Log
362:	Load Const String "shader_cube_p = "
365:	Load Property "shader_cube_p_fallback" [0:37]
368:	Add
369:	Log
370:	Load Const String "shader_rainbow_cube_p = "
373:	Load Property "shader_rainbow_cube_p_fallback" [0:39]
376:	Add
377:	Log
378:	Load Const Bool "false"
381:	Ret
382:	Jmp @420
384:	Load Property "compat_D3DVendorID" [0:18]
387:	Load Var "VENDOR_SIS" [0:6]
390:	CmpEQ
391:	Copy
392:	Jt @402
394:	Pop
395:	Load Property "compat_D3DVendorID" [0:18]
398:	Load Var "VENDOR_MATROX" [0:8]
401:	CmpEQ
402:	Jf @412
404:	Load Const String "Returning Is3DSupported false due to SIS or Matrox hardware"
407:	Log
408:	Load Const Bool "false"
411:	Ret
412:	Load Const Bool "true"
415:	Ret
416:	Load Const Bool "false"
419:	Ret
420:	Jmp @463
422:	Load Property "compat_D3DVendorID" [0:18]
425:	Load Var "VENDOR_NVIDIA" [0:0]
428:	CmpEQ
429:	Jf @455
431:	Load Property "compat_IsVista" [0:15]
434:	Copy
435:	Jf @445
437:	Pop
438:	Load Property "compat_D3DDriverVersion" [0:25]
441:	Load Const String ""
444:	CmpEQ
445:	Jf @455
447:	Load Const String "Returning Is3DRecommended false due to bad default Vista driver for nVidia cards"
450:	Log
451:	Load Const Bool "false"
454:	Ret
455:	Load Const Bool "true"
458:	Ret
459:	Load Const Bool "false"
462:	Ret
463:	Jmp @473
465:	Load Const Bool "false"
468:	Ret
469:	Load Const Bool "false"
472:	Ret
473:	Jmp @520
475:	Load Property "compat_IsVista" [0:15]
478:	Load Const Bool "false"
481:	CmpEQ
482:	Copy
483:	Jt @493
485:	Pop
486:	Load Property "compat_AppVidMemory" [0:10]
489:	Load Const Int "0"
492:	CmpEQ
493:	Jf @499
495:	Load Const Bool "true"
498:	Ret
499:	Load Property "compat_AppVidMemory" [0:10]
502:	Load Const Int "92"
505:	CmpLT
506:	Jf @512
508:	Load Const Bool "false"
511:	Ret
512:	Load Const Bool "true"
515:	Ret
516:	Load Const Bool "false"
519:	Ret
520:	Jmp @567
522:	Load Property "compat_IsVista" [0:15]
525:	Load Const Bool "false"
528:	CmpEQ
529:	Copy
530:	Jt @540
532:	Pop
533:	Load Property "compat_AppVidMemory" [0:10]
536:	Load Const Int "0"
539:	CmpEQ
540:	Jf @546
542:	Load Const Bool "true"
545:	Ret
546:	Load Property "compat_AppVidMemory" [0:10]
549:	Load Const Int "192"
552:	CmpLT
553:	Jf @559
555:	Load Const Bool "false"
558:	Ret
559:	Load Const Bool "true"
562:	Ret
563:	Load Const Bool "false"
566:	Ret
567:	Jmp @585
569:	Load Property "compat_D3DInterface" [0:17]
572:	Load Const Int "0"
575:	CmpGT
576:	Jf @581
578:	Call @189
580:	Pop
581:	Load Const Bool "false"
584:	Ret

Blender file

Elementary, my dear Cactus.
This needs some investigation.
Discuss ideas and findings on the talk page.
Specifically: Find out what distribution had this file first if possible.

The root of the game data from the Japanese and Chinese distributions have a Blender file titled Gems.blend possibly related to how PopCap made the Gems with their animations. It only works on Blender 2.73 as it crashes in modern Blender. A compilation location shows they were made in the following directory, suggesting this file was copied over from Bejeweled Twist.

d:\popcap\Resources\Bejeweled Twist\Gems\

Unused code

Resource Generator 3

There is code for executing a program Rg3Win.exe in a folder outside the game directory being \bin\ResourceGen3\. It's possible it relates to a file called Bej3.rg3watch and also resprops\resprops.txt as well as properties\resources.xml.

Revisional Differences

  • The Steam version of the game was compiled with a newer version of the PopCap framework, given by there are some related strings are exclusively present.