Peggle Deluxe (Windows, Mac OS X)
Peggle Deluxe |
---|
Developer: PopCap Games
![]() ![]() |
Peggle Deluxe takes you on a magical adventure to bounce a ball onto other balls.
To do:
|
Contents
Sub-Pages
Prototype Info |
Prerelease Info |
Unused levels PopCap wasn't having a ball with these. |
Installer Directory
In the Korean version, an installer directory remained, containing material related to packaging the game into an installer, it also has two scripts for building one.
@REM ******************************************************** @REM ** This file creates the base least-common-denominator @REM ** build from which all partner builds are derived. @REM ** @REM ********************************************************* @SET LangCode=ko-KR @SET BaseExeName=PeggleSetup_%LangCode%.exe @SET BaseFileDirectory=Peggle Deluxe @SET FontFolder=fonts_%LangCode% @REM ********************************************************* mkdir Filez rd /q /s Filez @if ErrorLevel 2 goto CopyFailed mkdir Filez @if ErrorLevel 1 goto CopyFailed xcopy ..\..\Peggle.exe "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed rem xcopy ..\..\Peggle.scr "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed xcopy ..\..\bass.dll "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed xcopy ..\..\j2k-codec.dll "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed copy license.txt "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed copy readme.html "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\characters\" copy ..\..\characters\*.* "Filez\%BaseFileDirectory%\characters\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\%FontFolder%\" copy ..\..\%FontFolder%\*.* "Filez\%BaseFileDirectory%\%FontFolder%\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\images\" xcopy /s ..\..\images\*.* "Filez\%BaseFileDirectory%\images\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\levels\" copy ..\..\levels\*.* "Filez\%BaseFileDirectory%\levels\" xcopy ..\..\levels\cached_thumbnails\* "Filez\%BaseFileDirectory%\levels\cached_thumbnails\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\leveleditor\" copy ..\..\leveleditor\*.cfg "Filez\%BaseFileDirectory%\leveleditor\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\music\" copy ..\..\music\*.* "Filez\%BaseFileDirectory%\music\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\properties\" copy ..\..\properties\default.xml "Filez\%BaseFileDirectory%\properties\" copy ..\..\properties\partner.xml "Filez\%BaseFileDirectory%\properties\" copy ..\..\properties\resources.xml "Filez\%BaseFileDirectory%\properties\" copy ..\..\properties\partner_logo*.* "Filez\%BaseFileDirectory%\properties\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\trailer\" copy ..\..\trailer\*.* "Filez\%BaseFileDirectory%\trailer\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\sounds\" copy ..\..\sounds\*.* "Filez\%BaseFileDirectory%\sounds\" @if ErrorLevel 1 goto CopyFailed del "Filez\%BaseFileDirectory%\sounds\cached*.*" cd "Filez\%BaseFileDirectory%\" del /s Entries del /s Repository del /s Root del /s Thumbs.db del /s .#* cd ..\..\ @REM ****************** @REM * Sign XML files * @REM ****************** %BinPath%\SignFile -setsigcode="Filez\%BaseFileDirectory%\%SignVerExe%" "Filez\%BaseFileDirectory%\properties\partner.xml" %BinPath%\SignFile -setsigcode="Filez\%BaseFileDirectory%\%SignVerExe%" "Filez\%BaseFileDirectory%\properties\default.xml" \bin\poppak /P "Filez\%BaseFileDirectory%\main.pak" "PakFilez\%BaseFileDirectory%" @if ErrorLevel 1 goto PakFailed \bin\popinstall installer.xml %BaseExeName% @if ErrorLevel 1 goto InstallerFailed @goto Done @REM ********************************************************* :CopyFailed @echo. @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @echo !!!! FAILED TO COPY FILES !!!! @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @goto Done :InstallerFailed @echo. @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @echo !!!! FAILED TO BUILD INSTALLER !!!! @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @goto Done :Done PAUSE
@REM ******************************************************** @REM ** This file creates the base least-common-denominator @REM ** build from which all partner builds are derived. @REM ** @REM ********************************************************* @SET LangCode=ko-KR @SET BaseExeName=PeggleSetup_%LangCode%.exe @SET BaseFileDirectory=Peggle Deluxe @SET SignVerExe=Peggle.exe @SET BinPath=c:\bin @SET FontFolder=fonts_%LangCode% @REM ********************************************************* mkdir Filez rd /q /s Filez @if ErrorLevel 2 goto CopyFailed mkdir Filez @if ErrorLevel 1 goto CopyFailed mkdir PakFilez rd /q /s PakFilez @if ErrorLevel 2 goto CopyFailed mkdir PakFilez @if ErrorLevel 1 goto CopyFailed xcopy ..\..\Peggle.exe "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed rem xcopy ..\..\Peggle.scr "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed xcopy ..\..\bass.dll "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed xcopy ..\..\j2k-codec.dll "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed copy license.txt "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed copy readme.html "Filez\%BaseFileDirectory%\" @if ErrorLevel 1 goto CopyFailed REM ******************************************************** REM * CHARACTERS SECTION * REM ******************************************************** mkdir "PakFilez\%BaseFileDirectory%\characters\" copy ..\..\characters\*.* "PakFilez\%BaseFileDirectory%\characters\" @if ErrorLevel 1 goto CopyFailed REM ******************************************************** mkdir "PakFilez\%BaseFileDirectory%\%FontFolder%\" copy ..\..\%FontFolder%\*.* "PakFilez\%BaseFileDirectory%\%FontFolder%\" @if ErrorLevel 1 goto CopyFailed mkdir "PakFilez\%BaseFileDirectory%\images\" xcopy /s ..\..\images\*.* "PakFilez\%BaseFileDirectory%\images\" @if ErrorLevel 1 goto CopyFailed REM ******************************************************** REM * LEVELS SECTION * REM ******************************************************** mkdir "PakFilez\%BaseFileDirectory%\levels\" mkdir "PakFilez\%BaseFileDirectory%\levels\cached_thumbnails\" copy ..\..\levels\*.* "PakFilez\%BaseFileDirectory%\levels\" copy ..\..\levels\cached_thumbnails\*.* "PakFilez\%BaseFileDirectory%\levels\cached_thumbnails\" @if ErrorLevel 1 goto CopyFailed REM ******************************************************** mkdir "PakFilez\%BaseFileDirectory%\leveleditor\" copy ..\..\leveleditor\*.cfg "PakFilez\%BaseFileDirectory%\leveleditor\" @if ErrorLevel 1 goto CopyFailed mkdir "Filez\%BaseFileDirectory%\music\" copy ..\..\music\*.* "Filez\%BaseFileDirectory%\music\" @if ErrorLevel 1 goto CopyFailed REM ******************************************************** REM * PROPERTIES SECTION * REM ******************************************************** mkdir "PakFilez\%BaseFileDirectory%\properties\" copy ..\..\properties\*.xml "PakFilez\%BaseFileDirectory%\properties\" del "PakFilez\%BaseFileDirectory%\properties\partner.xml" del "PakFilez\%BaseFileDirectory%\properties\default.xml" mkdir "Filez\%BaseFileDirectory%\properties\" copy ..\..\properties\partner.xml "Filez\%BaseFileDirectory%\properties\" copy ..\..\properties\default.xml "Filez\%BaseFileDirectory%\properties\" copy ..\..\properties\partner_logo*.* "Filez\%BaseFileDirectory%\properties\" @if ErrorLevel 1 goto CopyFailed REM ******************************************************** mkdir "PakFilez\%BaseFileDirectory%\trailer\" copy ..\..\trailer\*.* "PakFilez\%BaseFileDirectory%\trailer\" @if ErrorLevel 1 goto CopyFailed mkdir "PakFilez\%BaseFileDirectory%\sounds\" copy ..\..\sounds\*.* "PakFilez\%BaseFileDirectory%\sounds\" @if ErrorLevel 1 goto CopyFailed del "Filez\%BaseFileDirectory%\sounds\cached*.*" cd "Filez\%BaseFileDirectory%\" del /s Entries del /s Repository del /s Root del /s Thumbs.db del /s .#* cd ..\..\ cd "PakFilez\%BaseFileDirectory%\" del /s Entries del /s Repository del /s Root del /s Thumbs.db del /s .#* cd ..\..\ @REM ****************** @REM * Sign XML files * @REM ****************** %BinPath%\SignFile -setsigcode="Filez\%BaseFileDirectory%\%SignVerExe%" "Filez\%BaseFileDirectory%\properties\partner.xml" rem %BinPath%\SignFile -setsigcode="Filez\%BaseFileDirectory%\%SignVerExe%" "Filez\%BaseFileDirectory%\properties\default.xml" \bin\poppak /P "Filez\%BaseFileDirectory%\main.pak" "PakFilez\%BaseFileDirectory%" @if ErrorLevel 1 goto PakFailed \bin\popinstall installer.xml %BaseExeName% @if ErrorLevel 1 goto InstallerFailed @goto Done @REM ********************************************************* :CopyFailed @echo. @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @echo !!!! FAILED TO COPY FILES !!!! @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @goto Done :InstallerFailed @echo. @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @echo !!!! FAILED TO BUILD INSTALLER !!!! @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @goto Done :PakFailed @echo. @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @echo !!!! FAILED TO GENERATE PAK FILE !!!! @echo !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @goto Done :Done
Leftover Web Demo Level Images
Images of layouts for a few levels from the web demo, in the cached_thumbnails folder.
level12web:
level18web:
level19aweb:
slides:
Unused Powerups
To do: Better videos for Time Bomb and Nudge. |
In the executable code, there are three powerups not used by any character. By making simple replacements to their used powerups in the master character config, they can be used.
Time Bomb
After shooting the ball, pressing the mouse will make a big explosion hitbox around the ball and then end that ball's run. The powerup also uses the unused Explode sound below.
Nudge
This powerup is usable for a set amount of time per shot by a mouse press and gradually increases the height of the ball. Activating another green peg does not award the 25,000 point bonus for activating two in one shot.
Shot Extender
This powerup activates upon losing a ball, letting you shoot the same ball again, keeping meter score and all hit pegs active as well. Activating another green peg with the extra shot counts towards the 25,000 point bonus.
Unused Sounds
Generic Powerup
A generic powerup sound. Quite similar to a sound in Zuma. Used when obtaining the unused Shot Extender power.
Bucket Hit
A rather springy sounding bucket hit sound. It might have been for hitting the Free Ball Bucket.
Explode
An cartoonish explosion sound. Used when activating the unused Time Bomb power. Interestingly, it was later used in the Peggle Extreme for the title screen.
Multiball
An early sound for activating the multiball powerup.
Unused Music
Beat 10
Beat 10 is quite similar to another beat that is heard in the game, but this version is unused.
Beat 5
Beat 5 is played in the downloadable version of the game on PopCap's site, but not in the Steam version.
Unused Graphics
A red-and-white checkered frame.
A very pixely stickynote with "TIP" written on it.
A logo placeholder for third-party distributors.
Leftover Debug Keys
- At the loading screen if "B" is pressed, the ball bounce animation will play.
- Holding CTRL and clicking "CLICK TO PLAY!" at the loading screen on Windows will load a blank level.
Command-line Parameters
The game's executable mentions developer command lines for starting the game. It's not friendly with commands using spaces, so use = instead. It shares most of the usable parameters from Plants vs. Zombies, though one has been altered and another is entirely new. Note this does not work on Mac OS as the framework port didn't support them at the time.
- -screensaver: Immediately loads the game into screensaver mode. The game is automatically played by the computer, and moving the mouse or pressing any key quits the game. Also of note is that the loading text says Starting Screensaver.
- -replay: Immediately loads a specified replay file after bootup (you must target the proper directory of a replay file to load it, or else nothing happens). Also of note is that the loading text says Loading Replay instead.
Unused Code
Level Editor
To do: The logic is present in the executable but inaccessible from normal means, perhaps it's possible to recover it. |
Text for a level editor can be found in main.pak. This level editor is found within the game's prototype.
IncludeFile: LevelEditor_Types.cfg Group BrickDef { Val: Type, brickdef_type Val: Radius, brickdef_radius Val: Angle, brickdef_angle Val: Thickness, brickdef_thickness Val: Rotation, brickdef_rotation Val: Subdivisions, brickdef_subdiv Val: LeftAngle, brickdef_leftangle Val: RightAngle, brickdef_rightangle } Group Brick { Val: Type, brick_type Val: Radius, brick_radius Val: Angle, brick_angle Val: Thickness, brick_thickness Val: Rotation, brick_rotation Val: Subdivisions, brick_subdiv Val: Anchor, brick_anchor } Group "Brick\nAdvanced" { Val: TextureFlip, brick_texflip Val: LeftAngle, brick_leftangle Val: RightAngle, brick_rightangle } Group Dimensions { Val: x-pos, physobj_xpos Val: y-pos, physobj_ypos Val: Radius, ball_radius Val: Width, poly_width Val: Height, poly_height Val: Align, physobj_align } Group Grid { Val: Size, grid_size Val: Width, grid_width Val: Height, grid_height Val: x-off, grid_x Val: y-off, grid_y Val: zoom, grid_zoom } Group Hole { Val: Score, hole_score Val: Width, poly_width Val: Height, poly_height Val: Circular, hole_circular Val: Out Delay, hole_outdelay } Group Id { Val: Id, physobj_id Val: SubId, physobj_subid Val: Logic, physobj_logic Val: BaseObj, physobj_baseobj } Group Image { Val: Name, physobj_image Val: center-dx, physobj_imagedx Val: center-dy, physobj_imagedy Val: Rotation, physobj_imagerot Val: Mirror, poly_imagemirror Val: Background, physobj_background Val: Foreground, physobj_foreground Val: Foreground2, physobj_foreground2 } Group Material { Val: Visible, physobj_visible Val: Collidable, physobj_collidable Val: Bouncy, physobj_bouncy Val: Rolly, physobj_rolly Val: SolidColor, physobj_solidcolor Val: OutlineColor, physobj_outlinecolor Val: Sound, physobj_sound Val: StopReset, physobj_ballstopreset } Group Material2 { Val: MaxBounceVel, physobj_maxbouncevel Val: DrawSort, physobj_drawsort Val: DrawFloat, physobj_drawfloat Val: FlipperFlags, physobj_flipperflags } Group Movement { Val: Type, mover_type Val: Moving, physobj_moving Val: Radius, mover_radius Val: Time, mover_time Val: Phase, mover_phase Val: Rotation, mover_rotation Val: y-radius, mover_radius2 Val: MaxAngle, mover_maxangle } Group "Movement\nAdvanced" { Val: Offset, mover_offset Val: Pause 1, mover_pause1 Val: Phase 1, mover_phase1 Val: Pause 2, mover_pause2 Val: Phase 2, mover_phase2 Val: Post Phase, mover_postdelayphase Val: Path Rotate, mover_moverotation } Group "Peg" { Val: Type, peg_type Val: Variable, peg_variable Val: Crumble, peg_crumble } Group Poly { Val: Rotation, poly_rotation Val: Scale, poly_scale Val: NormalDir, poly_normaldir Val: Convex, poly_convex Val: GrowType, poly_growtype } Group Types { Val: Display, display_flags Val: Selection, select_flags Val: Num Pegs, count_pegs Val: Num BallPegs, count_ballpegs Val: Num BrickPegs, count_brickpegs }
Choice ball_radius { Vals: 3,5 Sep: 16 Val: 6, Ball Standard Val: 10, Peg Standard Sep: 16 Vals: 15,20,25,30,35,40,45,50,75,100 } Choice brick_anchor { Val: 0, No Anchor Val: 1, Left Anchor Val: 2, Right Anchor Val: 3, Both Anchor } Choice brick_radius { Vals: 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375, 400, 425, 450, 475, 500,600,700,800,900,1000,1250,1500,1750,2000,2500,3000,3500,4000,4500,5000,7500,10000 } Choice brick_subdiv { Vals: 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 } Choice brick_type { Val: 0, Normal Curved Val: 1, Outer Curved Val: 2, Outer Curved 90 Val: 3, Inner Curved Val: 4, Inner Curved 90 Val: 5, Straight } Choice brick_thickness { Vals: 10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95,100 } Choice choice_time { Vals: 50, 100, 150, 200, 250, 300, 500, 750, 1000, 1500, 2000, 3000, 5000, 10000 } Choice choice_moveradius { Vals: 25, 50, 75, 100, 125, 150, 175, 200, 225, 250, 275, 300, 325, 350, 375, 400, 425, 450, 475, 500 } Choice choice_percent { Vals: 0,5,10,15,20,25,30,35,40,45,50,55,60,65,70,75,80,85,90,95 } Choice choice_angle { Vals: 0, 30, 45, 60 Sep: 16 Vals: 90, 120, 135, 150 Sep: 16 Vals: 180, 210, 225, 240 Sep: 16 Vals: 270, 300, 315, 330 } Choice type_flags { Val: 0000, All Val: 0003, BallPegs Val: 0005, BrickPegs Sep: 16 Val: 0001, Pegs Val: 0002, Balls Val: 0004, Bricks Val: 0008, Image Val: 0020, NonVariable Val: 0040, Crumble Sep: 16 Val: 1000, NonPegs Val: 2000, NonBalls Val: 4000, NonBricks Val: 8000, NonImages } Choice grid_size { Val: 1, 5x5 Val: 2, 10x10 Val: 3, 15x15 Val: 4, 20x20 Val: 5, 25x25 Val: 6, 30x30 Val: 7, 35x35 Val: 8, 40x40 Val: 9, 45x45 Val: 10, 50x50 } Choice grid_zoom { Vals: 1.0 Sep: 16 Vals: 0.25, 0.5, 0.75 Sep: 16 Vals: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } Choice help_keyboard { Val: a - Force autosave Val: b - Add brick Val: e - Attach bricks to selected brick Val: c - Copy selected object attributes Val: d - Toggle drag mode Val: D - Toggle center point drag mode Val: f - Flip (top-bottom) selected Val: F - Flip (top-bottom) selected (pos only) Val: g - Toggle grid Val: h - Set hole teleport Val: H - Unset hole teleport Val: i - Toggle image drag mode Val: I - Load image Val: j - Join objects for movement Val: J - Unjoin objects for movement Val: k - Toggle peg ordering mode Val: l - Add line Val: m - Show movement on selected objects Val: M - Hide movement on selected objects Val: n - Copy current brick attributes to def brick attributes Val: o - Toggle outline mode Val: p - Add polygon Val: P - Reverse selected polygon's Direction Val: r - Reflect (left-right) selected Val: R - Reflect (left-right) selected (pos only) Val: s - Toggle single select mode Val: t - Reset movement time Val: v - Add brick and change direction Val: z - Bring to front Val: Z - Bring to back Sep: 16 Val: ? - Keyboard help Val: <period> - Toggle DrawPoints Val: <comma> - Toggle DrawSelection Val: <semicolon> - Toggle Multi-Place Val: <space> - Pause Sep: 16 Val: CTRL-A - Add edit fields Val: CTRL-SHIFT-A: Remove edit fields Val: CTRL-C - Copy Val: CTRL-G - Toggle grid Val: CTRL-M - Turn of all movement drawing Val: CTRL-N - Make new level Val: CTRL-O - Reload Images Val: CTRL-R - Inspect AutoSaves Val: CTRL-T - Reset movement time Val: CTRL-V - Paste Val: CTRL-X - Cut Val: CTRL-Z - Undo } Choice mover_type { Val: 0, No Movement Val: 1, Vertical Cycle Val: 2, Horizontal Cycle Val: 3, Circle Val: 4, Horizontal Infinity Val: 5, Verical Infinity Val: 6, Horizontal Arc Val: 7, Vertical Arc Val: 8, Rotate Val: 9, Rotate Back And Forth Val: 11, Vertical Wrap Val: 12, Horizontal Wrap Val: 13, Rotate Around Circle } Choice peg_type { Val: 0, None Val: 1, Normal Val: 2, Goal Val: 3, Score Val: 4, Powerup } Choice physobj_align { Val: 22, MiddleCenter Sep: 16 Val: 01, Left Val: 02, Center Val: 03, Right Sep: 16 Val: 10, Top Val: 20, Middle Val: 30, Bottom Sep: 16 Val: 11, TopLeft Val: 12, TopCenter Val: 13, TopRight Sep: 16 Val: 21, MiddleLeft Val: 22, MiddleCenter Val: 23, MiddleRight Sep: 16 Val: 31, BottomLeft Val: 32, BottomCenter Val: 33, BottomRight } Choice physobj_bouncy { Val: 0, Default Sep: 16 Val: 0.90, Ball Standard Val: 0.80, Semi Bouncy Val: 0.75, Poly Standard Val: 0.65, Less Bouncy Val: 0.55, Little Bounce } Choice physobj_flipperflags { Val: 0, Default Sep: 16 Val: 1, Off Val: 2, On } Choice poly_normaldir { Val: " 1", Keep Out Val: "-1", Keep In Val: " 0", Both } Choice poly_growtype { Val: "0", None Val: "1", reveal-left-to-right Val: "2", reveal-right-to-left Val: "3", move-left-to-right Val: "4", move-right-to-left Val: "5", middle-out } Choice poly_size { Vals: 5,10,15,20,25,30,35,40,45,50,75,100,150,200,250,300,350,400,450,480,500,640 } Choice poly_scale { Vals: 0.1, 0.2, 0.25, 0.33, 0.5, 0.67, 0.75, 1.0, 1.25, 1.5, 1.75, 2.0, 2.5, 3.0, 4.0, 5.0, 10.0 } Choice choice_color { Val: 0x000000, Transparent Val: 0xFFFFFF, White Val: 0x000001, Black Val: 0xFF0000, Red Val: 0x00FF00, Green Val: 0x0000FF, Blue Val1: "",------------------------------ Val: 0xF0F8FF, AliceBlue Val: 0xFAEBD7, AntiqueWhite Val: 0x00FFFF, Aqua Val: 0x7FFFD4, Aquamarine Val: 0xF0FFFF, Azure Val: 0xF5F5DC, Beige Val: 0xFFE4C4, Bisque Val: 0x000000, Black Val: 0xFFEBCD, BlanchedAlmond Val: 0x0000FF, Blue Val: 0x8A2BE2, BlueViolet Val: 0xA52A2A, Brown Val: 0xDEB887, BurlyWood Val: 0x5F9EA0, CadetBlue Val: 0x7FFF00, Chartreuse Val: 0xD2691E, Chocolate Val: 0xFF7F50, Coral Val: 0x6495ED, CornflowerBlue Val: 0xFFF8DC, Cornsilk Val: 0xDC143C, Crimson Val: 0x00FFFF, Cyan Val: 0x00008B, DarkBlue Val: 0x008B8B, DarkCyan Val: 0xB8860B, DarkGoldenrod Val: 0xA9A9A9, DarkGray Val: 0x006400, DarkGreen Val: 0xBDB76B, DarkKhaki Val: 0x8B008B, DarkMagenta Val: 0x556B2F, DarkOliveGreen Val: 0xFF8C00, DarkOrange Val: 0x9932CC, DarkOrchid Val: 0x8B0000, DarkRed Val: 0xE9967A, DarkSalmon Val: 0x8FBC8B, DarkSeaGreen Val: 0x483D8B, DarkSlateBlue Val: 0x2F4F4F, DarkSlateGray Val: 0x00CED1, DarkTurquoise Val: 0x9400D3, DarkViolet Val: 0xFF1493, DeepPink Val: 0x00BFFF, DeepSkyBlue Val: 0x696969, DimGray Val: 0x1E90FF, DodgerBlue Val: 0xB22222, Firebrick Val: 0xFFFAF0, FloralWhite Val: 0x228B22, ForestGreen Val: 0xFF00FF, Fuchsia Val: 0xDCDCDC, Gainsboro Val: 0xF8F8FF, GhostWhite Val: 0xFFD700, Gold Val: 0xDAA520, Goldenrod Val: 0x808080, Gray Val: 0x008000, Green Val: 0xADFF2F, GreenYellow Val: 0xF0FFF0, Honeydew Val: 0xFF69B4, HotPink Val: 0xCD5C5C, IndianRed Val: 0x4B0082, Indigo Val: 0xFFFFF0, Ivory Val: 0xF0E68C, Khaki Val: 0xE6E6FA, Lavender Val: 0xFFF0F5, LavenderBlush Val: 0x7CFC00, LawnGreen Val: 0xFFFACD, LemonChiffon Val: 0xADD8E6, LightBlue Val: 0xF08080, LightCoral Val: 0xE0FFFF, LightCyan Val: 0xFAFAD2, LightGoldenrodYellow Val: 0xD3D3D3, LightGray Val: 0x90EE90, LightGreen Val: 0xFFB6C1, LightPink Val: 0xFFA07A, LightSalmon Val: 0x20B2AA, LightSeaGreen Val: 0x87CEFA, LightSkyBlue Val: 0x778899, LightSlateGray Val: 0xB0C4DE, LightSteelBlue Val: 0xFFFFE0, LightYellow Val: 0x00FF00, Lime Val: 0x32CD32, LimeGreen Val: 0xFAF0E6, Linen Val: 0xFF00FF, Magenta Val: 0x800000, Maroon Val: 0x66CDAA, MediumAquamarine Val: 0x0000CD, MediumBlue Val: 0xBA55D3, MediumOrchid Val: 0x9370DB, MediumPurple Val: 0x3CB371, MediumSeaGreen Val: 0x7B68EE, MediumSlateBlue Val: 0x00FA9A, MediumSpringGreen Val: 0x48D1CC, MediumTurquoise Val: 0xC71585, MediumVioletRed Val: 0x191970, MidnightBlue Val: 0xF5FFFA, MintCream Val: 0xFFE4E1, MistyRose Val: 0xFFE4B5, Moccasin Val: 0xFFDEAD, NavajoWhite Val: 0x000080, Navy Val: 0xFDF5E6, OldLace Val: 0x808000, Olive Val: 0x6B8E23, OliveDrab Val: 0xFFA500, Orange Val: 0xFF4500, OrangeRed Val: 0xDA70D6, Orchid Val: 0xEEE8AA, PaleGoldenrod Val: 0x98FB98, PaleGreen Val: 0xAFEEEE, PaleTurquoise Val: 0xDB7093, PaleVioletRed Val: 0xFFEFD5, PapayaWhip Val: 0xFFDAB9, PeachPuff Val: 0xCD853F, Peru Val: 0xFFC0CB, Pink Val: 0xDDA0DD, Plum Val: 0xB0E0E6, PowderBlue Val: 0x800080, Purple Val: 0xFF0000, Red Val: 0xBC8F8F, RosyBrown Val: 0x4169E1, RoyalBlue Val: 0x8B4513, SaddleBrown Val: 0xFA8072, Salmon Val: 0xF4A460, SandyBrown Val: 0x2E8B57, SeaGreen Val: 0xFFF5EE, SeaShell Val: 0xA0522D, Sienna Val: 0xC0C0C0, Silver Val: 0x87CEEB, SkyBlue Val: 0x6A5ACD, SlateBlue Val: 0x708090, SlateGray Val: 0xFFFAFA, Snow Val: 0x00FF7F, SpringGreen Val: 0x4682B4, SteelBlue Val: 0xD2B48C, Tan Val: 0x008080, Teal Val: 0xD8BFD8, Thistle Val: 0xFF6347, Tomato Val: 0xFFFFFF, Transparent Val: 0x40E0D0, Turquoise Val: 0xEE82EE, Violet Val: 0xF5DEB3, Wheat Val: 0xFFFFFF, White Val: 0xF5F5F5, WhiteSmoke Val: 0xFFFF00, Yellow Val: 0x9ACD32, YellowGreen }
IncludeFile: LevelEditor_Choices.cfg Num: ball_radius Num: brick_radius Num: brick_angle, local, choice_angle Num: brick_leftangle, local, choice_angle Num: brick_rightangle, local, choice_angle Num: brick_thickness Num: brick_rotation, local, choice_angle Num: brick_subdiv Num: brick_type Num: brick_anchor Bool: brick_texflip Num: brickdef_radius, global, brick_radius Num: brickdef_angle, global, choice_angle Num: brickdef_leftangle, global, choice_angle Num: brickdef_rightangle, global, choice_angle Num: brickdef_thickness, global, brick_thickness Num: brickdef_rotation, global, choice_angle Num: brickdef_subdiv, global, brick_subdiv Num: brickdef_type, global, brick_type Num: count_pegs, global Num: count_ballpegs, global Num: count_brickpegs, global Hex4: select_flags, global, type_flags Hex4: display_flags, global, type_flags Num: grid_width, global Num: grid_height, global Num: grid_x, global Num: grid_y, global Num: grid_size, global Num: grid_zoom, global Num: hole_score Bool: hole_circular Num: hole_outdelay Num: mover_type Num: mover_radius, local, choice_moveradius Num: mover_time, local, choice_time Num: mover_phase, local, choice_percent Num: mover_rotation, local, choice_angle Num: mover_radius2, local, choice_moveradius Num: mover_maxangle, local, choice_angle Num: mover_moverotation, local, choice_angle Num: mover_offset Num: mover_pause1, local, choice_time Num: mover_phase1, local, choice_percent Num: mover_pause2, local, choice_time Num: mover_phase2, local, choice_percent Num: mover_postdelayphase, local, choice_percent Num: peg_type Bool: peg_crumble Bool: peg_variable Num: physobj_bouncy Num: physobj_rolly Num: physobj_maxbouncevel Num: physobj_xpos Num: physobj_ypos Num: physobj_sound Hex6: physobj_solidcolor, local, choice_color Hex6: physobj_outlinecolor, local, choice_color Bool: physobj_visible Bool: physobj_collidable Bool: physobj_moving Bool: physobj_background Bool: physobj_baseobj Bool: physobj_foreground Bool: physobj_foreground2 Bool: physobj_ballstopreset Bool: physobj_drawsort Bool: physobj_drawfloat Hex2: physobj_align String: physobj_id String: physobj_logic String: physobj_image Num: physobj_subid Num: physobj_flipperflags Num: physobj_imagedx Num: physobj_imagedy Num: physobj_imagerot, local, choice_angle Num: poly_rotation, local, choice_angle Num: poly_width, local, poly_size Num: poly_height, local, poly_size Num: poly_scale Num: poly_normaldir Hex4: poly_growtype Bool: poly_convex Bool: poly_imagetile Bool: poly_imagemirror
The game executable also mentions strings for one.
LevelEditor/autosave
The strings below along with their code are only present in the Windows, Android TV and the Xbox 360 releases.
Keyboard Reference Edit (Multi Place) (Drag) (Make Poly) (Center Drag) (Image Drag) (Single Sel) (No Draw Sel) (Paused) Edit (Order Mode) LevelEditor/globals.dat LevelEditor/buffer%d.dat LevelFile SOFTWARE\\ levels editlevel.dat *.dat Save Level .dat autosave LevelEditor LevelEditor/autosave LevelEditor/autosave%d.dat leveleditor/editlevel.dat autosave%d Inspect AutoSaves? Would you like to inspect AutoSaves? No autosaves No autosave data available LevelEditor/LevelEditor.cfg LevelEditor/editlevel.dat Choose Group No Choices : Clear Level? Do you want to clear the level? Copy Group Attributes? Do you want to copy the current group of attributes to all selected objects? Distribute Phase? Would you like to distribute movement phase among selected objects? Load Image
Cheat Stats File Save
A function that generates a file named stats_cheat.dat file in LevelEditor (created if not present) in the game asset directory is present and called by the game whenever stats need to be saved (like when clearing an Adventure level). Changing the below function to NOP will trigger it.
Build | Address |
---|---|
PopCap.com/Steam (Worldwide, 1.0.0.1 [Final]) | 00464C50 |
Level Loader
To do: If possible, find the values that properly enable this. Hijacking the level loading function by replacing a JNE feels forced. |
The game has support for loading raw level files and their backdrops elsewhere via using a dialog related to your OS. It's possible to enable it by changing the function at the following address with one that has no operation will load it when trying to load a level or demo, clicking cancel will make the game load an empty level with an error message. This does not seem to be present in the Mac version.
Build | Address |
---|---|
PopCap.com/Steam (Worldwide, 1.0.0.1 [Final]) | 00429D67 |
If loading levels this way, the word Dev will be above the word score on your scoreboard and that will write to replay data, you also cannot save high scores from levels loaded this way and the level complete dialog only offers three options, returning to the main menu, replaying the level or playing a random level. Reloading a level makes the game write the name of the level file to the game window in this form.
- %s
LoadTime.h Generator
A function that generates a LoadTime.h header file in the game asset directory is present and called by the game at the loading screen but it's normally not possible to trigger it. Changing the value to 1 will trigger it.
Build | Address |
---|---|
PopCap.com/Steam (Worldwide, 1.0.0.1 [Final]) | 0040B439 |
Unused Text
Pego Leftovers
<String id="Check here to allow your monitor to go into powersave mode while running the Pego Screensaver."> <String id="Check here to set your Pego as your Screensaver.">
Dubbed "Pego" for months of production, the team was suddenly tasked with changing the name based on copyright issues, which explains the presence of these duplicated (but renamed) strings.
.pego
Present in the game executable, replays don't use a .pego extension but the game can still view them if so.
Kat-Tut Stage Dialogue
English | Japanese |
---|---|
StageDialog: 2, "C'mon! Hit \"Continue\" and let's do this!" | StageDialog: 2, "さあ、今すぐ。「続行」を押してチャレンジしてみて !" |
This text was commented out from Kat-Tut's dialogue on the second stage in stages.cfg.
Page 2 Name Alterations
The Mac release has some commented names of certain stages in the config file, suggesting different levels were planned for Jimmy's stages or Splork was planned to be unlocked before Jimmy early in development.
Level # | Old level | Final level |
---|---|---|
2 | We Come In Peace | Buffalo Wings |
3 | Maid in Space | Skate Park |
4 | Win a Monkey | Spiral of Doom |
Internal Project Name
The internal name of the game is Thunderball according to strings in the game executable, referring to when it was a game themed around Thor very early on.
The Peggle series
| |
---|---|
Windows, Mac OS X | Peggle Deluxe (Prototype) • Peggle Extreme • Peggle Nights • Peggle: World of Warcraft Edition |
Nintendo DS | Peggle Dual Shot |
Xbox 360, Xbox One, PlayStation 4 | Peggle 2 |
Android | Peggle Deluxe • Peggle Blast |
iOS | Peggle Blast |
- Pages missing developer references
- Games developed by PopCap Games
- Pages missing publisher references
- Games published by PopCap Games
- Windows games
- Mac OS X games
- Pages missing date references
- Games released in 2007
- Games released in February
- Games released on February 27
- Games with unused areas
- Games with unused code
- Games with hidden development-related text
- Games with unused graphics
- Games with unused items
- Games with unused abilities
- Games with unused music
- Games with unused text
- Games with debugging functions
- To do
- Peggle 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 hidden development-related text
Games > Games by content > Games with unused abilities
Games > Games by content > Games with unused areas
Games > Games by content > Games with unused code
Games > Games by content > Games with unused graphics
Games > Games by content > Games with unused items
Games > Games by content > Games with unused music
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 > Mac OS X 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 2007
Games > Games by release date > Games released in February
Games > Games by release date > Games released in February > Games released on February 27
Games > Games by series > Peggle series