If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!
Zuma's Revenge! (Windows)
Zuma's Revenge! |
---|
Developer: PopCap Games This game has unused code. |
This page is rather stubbly and could use some expansion. Are you a bad enough dude to rescue this article? |
To do:
|
Zuma's Revenge! is the sequel to the previous ball shooter puzzle game from PopCap, with enhanced visuals and high definition graphics!
Contents
- 1 Development Leftovers
- 2 Unused levels
- 2.1 Jungle9/Jungle9-all
- 2.2 IronFrog5-all
- 2.3 IronFrog8-all
- 2.4 City10-all
- 2.5 Grotto10-all
- 2.6 Boss Level Tests
- 2.6.1 boss1/boss1test.dat
- 2.6.2 boss1/boss1test2.dat
- 2.6.3 boss1/boss1test3.dat
- 2.6.4 boss1/boss1test4.dat
- 2.6.5 boss1/boss1test5.dat
- 2.6.6 boss1/boss1test6.dat
- 2.6.7 boss1/boss1test7.dat
- 2.6.8 boss1/boss1test8.dat
- 2.6.9 boss1/boss1test8v2.dat
- 2.6.10 boss1/boss1test8v3.dat
- 2.6.11 boss1/boss1test8v4.dat
- 2.6.12 boss1/boss1test8v5.dat
- 2.6.13 boss1/boss1test8v6.dat
- 2.6.14 boss1/boss1test9.dat
- 2.6.15 boss1/boss1test9v2.dat
- 2.6.16 boss1/boss1v2.dat
- 2.6.17 boss1/boss1v3.dat
- 2.6.18 boss1/boss1v4.dat
- 2.6.19 boss1/TikiTest.dat
- 3 Development Compilation Directories
- 4 Development Text
- 5 Unused Challenge Mode Difficulty
- 6 Debug Displays
- 7 Debug Commands
- 8 Unused Sound Effects
- 9 Unused Text
- 10 Unused code
- 11 Oddities
- 12 Internal Project Name
Development Leftovers
LevelArchive folder A LOT of development leftovers, including MANY levels, even from the first game! |
Text Documents
The Spanish Mac OS X distribution has two rich text documents titled level.rtf and levels_hard.rtf in the levels directory. They have pretty much the exact same data as the English release, only changing \ to /. They were both written and modified around 3 PM on July 22nd, 2009 by mcoffey, most likely Mark Coffey.
CFGASM file
compat.cfgasm is present in the Korean version, it has a plaintext numeric list of content from the compatibility configuration file that has no use from the game, maybe a debug engine build can make use of it.
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 @60 37: Load Property "compat_D3DVendorID" [0:15] 40: Load Var "VENDOR_NVIDIA" [0:0] 43: CmpEQ 44: Copy 45: Jt @55 47: Pop 48: Load Property "compat_D3DVendorID" [0:15] 51: Load Var "VENDOR_ATI" [0:2] 54: CmpEQ 55: Ret 56: Load Const Bool "false" 59: Ret 60: Jmp @128 62: Call @37 64: Store Var "isHiResHardware" [2:0] 67: Pop 68: Load Const String "isHiResHardware = " 71: Load Var "isHiResHardware" [2:0] 74: Add 75: Log 76: Load Var "isHiResHardware" [2:0] 79: Copy 80: Jf @90 82: Pop 83: Load Property "compat_AppSysMemTotalMB" [0:12] 86: Load Const Int "768" 89: CmpGE 90: Copy 91: Jf @101 93: Pop 94: Load Property "compat_AppOrigScreenHeight" [0:14] 97: Load Const Int "1000" 100: CmpGE 101: Copy 102: Jf @112 104: Pop 105: Load Property "compat_AppVidMemory" [0:10] 108: Load Const Int "92" 111: CmpGE 112: Jf @120 114: Load Const Int "1200" 117: Ret 118: Jmp @124 120: Load Const Int "600" 123: Ret 124: Load Const Bool "false" 127: Ret 128: Jmp @151 130: Load Property "compat_AppVidMemory" [0:10] 133: Load Const Int "92" 136: CmpLT 137: Jf @143 139: Load Const Bool "false" 142: Ret 143: Load Const Bool "true" 146: Ret 147: Load Const Bool "false" 150: Ret 151: Jmp @306 153: Load Property "compat_D3DVendorID" [0:15] 156: Load Var "VENDOR_SIS" [0:6] 159: CmpEQ 160: Jf @172 162: Load Const String "Returning Is3DSupported false due to SIS" 165: Log 166: Load Const Bool "false" 169: Ret 170: Jmp @298 172: Load Property "compat_D3DVendorID" [0:15] 175: Load Var "VENDOR_NVIDIA" [0:0] 178: CmpEQ 179: Jf @217 181: Load Property "compat_D3DDeviceID" [0:16] 184: Load Const Int "256" 187: CmpGE 188: Copy 189: Jf @199 191: Pop 192: Load Property "compat_D3DDeviceID" [0:16] 195: Load Const Int "272" 198: CmpLT 199: Jf @211 201: Load Const String "Returning Is3DSupported false due to old nVidia GeForce 1 card" 204: Log 205: Load Const Bool "false" 208: Ret 209: Jmp @215 211: Load Const Bool "true" 214: Ret 215: Jmp @298 217: Load Property "compat_D3DVendorID" [0:15] 220: Load Var "VENDOR_ATI" [0:2] 223: CmpEQ 224: Jf @281 226: Load Property "compat_D3DDeviceID" [0:16] 229: Load Const Int "20825" 232: CmpEQ 233: Jf @245 235: Load Const String "Returning Is3DSupported false due to old Radeon 7000 card" 238: Log 239: Load Const Bool "false" 242: Ret 243: Jmp @279 245: Load Property "compat_D3DInterface" [0:17] 248: Load Const Int "9" 251: CmpEQ 252: Copy 253: Jf @263 255: Pop 256: Load Property "compat_D3DDriverVersion" [0:23] 259: Load Const String "6.14.10.6599" 262: CmpEQ 263: Jf @275 265: Load Const String "Returning Is3DSupported false due to bad ATI D3D9 driver" 268: Log 269: Load Const Bool "false" 272: Ret 273: Jmp @279 275: Load Const Bool "true" 278: Ret 279: Jmp @298 281: Load Property "compat_D3DVendorID" [0:15] 284: Load Var "VENDOR_MATROX" [0:8] 287: CmpEQ 288: Jf @298 290: Load Const String "Returning Is3DSupported false due to Matrox" 293: Log 294: Load Const Bool "false" 297: Ret 298: Load Const Bool "true" 301: Ret 302: Load Const Bool "false" 305: Ret 306: Jmp @479 308: Load Property "compat_D3DDeviceID" [0:16] 311: Store Var "d" [16:0] 314: Pop 315: Load Var "d" [16:0] 318: Load Const Int "272" 321: CmpGE 322: Copy 323: Jf @333 325: Pop 326: Load Var "d" [16:0] 329: Load Const Int "275" 332: CmpLE 333: Copy 334: Jt @355 336: Pop 337: Load Var "d" [16:0] 340: Load Const Int "336" 343: CmpGE 344: Copy 345: Jf @355 347: Pop 348: Load Var "d" [16:0] 351: Load Const Int "339" 354: CmpLE 355: Copy 356: Jt @377 358: Pop 359: Load Var "d" [16:0] 362: Load Const Int "368" 365: CmpGE 366: Copy 367: Jf @377 369: Pop 370: Load Var "d" [16:0] 373: Load Const Int "378" 376: CmpLE 377: Copy 378: Jt @388 380: Pop 381: Load Var "d" [16:0] 384: Load Const Int "380" 387: CmpEQ 388: Copy 389: Jt @399 391: Pop 392: Load Var "d" [16:0] 395: Load Const Int "381" 398: CmpEQ 399: Copy 400: Jt @421 402: Pop 403: Load Var "d" [16:0] 406: Load Const Int "385" 409: CmpGE 410: Copy 411: Jf @421 413: Pop 414: Load Var "d" [16:0] 417: Load Const Int "387" 420: CmpLE 421: Copy 422: Jt @443 424: Pop 425: Load Var "d" [16:0] 428: Load Const Int "389" 431: CmpGE 432: Copy 433: Jf @443 435: Pop 436: Load Var "d" [16:0] 439: Load Const Int "392" 442: CmpLE 443: Copy 444: Jt @465 446: Pop 447: Load Var "d" [16:0] 450: Load Const Int "394" 453: CmpGE 454: Copy 455: Jf @465 457: Pop 458: Load Var "d" [16:0] 461: Load Const Int "397" 464: CmpLE 465: Jf @471 467: Load Const Bool "true" 470: Ret 471: Load Const Bool "false" 474: Ret 475: Load Const Bool "false" 478: Ret 479: Jmp @674 481: Load Property "compat_D3DVendorID" [0:15] 484: Load Var "VENDOR_NVIDIA" [0:0] 487: CmpEQ 488: Jf @640 490: Load Property "compat_IsVista" [0:27] 493: Copy 494: Jf @504 496: Pop 497: Load Property "compat_D3DDriverVersion" [0:23] 500: Load Const String "7.15.10.9686" 503: CmpEQ 504: Jf @516 506: Load Const String "Returning Is3DRecommended false due to bad default Vista driver for nVidia cards" 509: Log 510: Load Const Bool "false" 513: Ret 514: Jmp @638 516: Call @308 518: Jf @638 520: Load Const Bool "true" 523: Store Var "isGoodDriver" [21:0] 526: Pop 527: Load Property "compat_D3DDriverVersionA" [0:19] 530: Load Const Int "6" 533: CmpLT 534: Jf @545 536: Load Const Bool "false" 539: Store Var "isGoodDriver" [21:0] 542: Pop 543: Jmp @624 545: Load Property "compat_D3DDriverVersionA" [0:19] 548: Load Const Int "6" 551: CmpEQ 552: Jf @624 554: Load Property "compat_D3DDriverVersionB" [0:20] 557: Load Const Int "14" 560: CmpLT 561: Jf @572 563: Load Const Bool "false" 566: Store Var "isGoodDriver" [21:0] 569: Pop 570: Jmp @624 572: Load Property "compat_D3DDriverVersionB" [0:20] 575: Load Const Int "14" 578: CmpEQ 579: Jf @624 581: Load Property "compat_D3DDriverVersionC" [0:21] 584: Load Const Int "10" 587: CmpLT 588: Jf @599 590: Load Const Bool "false" 593: Store Var "isGoodDriver" [21:0] 596: Pop 597: Jmp @624 599: Load Property "compat_D3DDriverVersionC" [0:21] 602: Load Const Int "10" 605: CmpEQ 606: Jf @624 608: Load Property "compat_D3DDriverVersionD" [0:22] 611: Load Const Int "9371" 614: CmpLT 615: Jf @624 617: Load Const Bool "false" 620: Store Var "isGoodDriver" [21:0] 623: Pop 624: Load Var "isGoodDriver" [21:0] 627: LNot 628: Jf @638 630: Load Const String "Returning Is3DRecommended false due to outdated legacy GeForce2/4MX driver" 633: Log 634: Load Const Bool "false" 637: Ret 638: Jmp @666 640: Load Property "compat_D3DVendorID" [0:15] 643: Load Var "VENDOR_ATI" [0:2] 646: CmpEQ 647: Jf @666 649: Load Property "compat_D3DDeviceID" [0:16] 652: Load Const Int "22880" 655: CmpEQ 656: Jf @666 658: Load Const String "Returning Is3DRecommended false due to Radeon 9250 card" 661: Log 662: Load Const Bool "false" 665: Ret 666: Load Const Bool "true" 669: Ret 670: Load Const Bool "false" 673: Ret 674: Jmp @701 676: Load Property "compat_D3DVendorID" [0:15] 679: Load Var "VENDOR_NVIDIA" [0:0] 682: CmpEQ 683: Jf @693 685: Call @308 687: Jf @693 689: Load Const Bool "true" 692: Ret 693: Load Const Bool "false" 696: Ret 697: Load Const Bool "false" 700: Ret 701: Jmp @717 703: Load Property "compat_D3DInterface" [0:17] 706: Load Const Int "0" 709: CmpGT 710: Jf @713 712: Nop 713: Load Const Bool "false" 716: Ret
Unused levels
To do: Get screenshots of these levels in the game, check if these values are correct. |
A portion of unused levels are present in the final game. As of this game, the format for the levels was upgraded, granting the ability to add general level parameters.
Jungle9/Jungle9-all
Pretty much a copy of Creeper Copse with both curves in one file, exact same layout. The game cannot render two death areas from one curve file, making the second curve's skull texture not be drawn, and also be replaced with a tunnel. most likely the developers scrapped it for use of a separate level file to make it not use identical parameters of only one curve. The _hard variant is similar except most parameters are changed to make the level harder, including rarity of powerups.
TODO
IronFrog5-all
Pretty much a copy of Fossil Food with both curves in one file, exact same layout.
TODO
IronFrog8-all
Pretty much a copy of Web Two Point Oh with both curves in one file, exact same layout.
TODO
City10-all
Pretty much a copy of Double Danger with both curves in one file, exact same layout.
Grotto10-all
Pretty much a copy of Shark Den with both curves in one file, exact same layout.
Boss Level Tests
LevelArchive's levels_scott.xml file reveals a small portion of level display names and boss parameters.
boss1/boss1test.dat
Identical to the original except the level version is 12.
<Level id="boss1test1" dispname="Boss 1 test1" hurryamt=".75" noflip="true" drawcurve="true" drawtunnel="true" curve1="boss1\boss1test" background="" tfreq="1000" partime="100"> <Gun type="horiz" startx="97" starty="497" width="590"/> <Boss type="3" subtype="2" MaxBullets="1" shotdelay="60" AllowLevelDDS="false" hpdec="10" startx="115" endx="611" y="108" minhover="50" maxhover="150" movespeed="2.5" xshake="5" yshake="5" shottype="target" minfire="250" maxfire="350" stun="200" minbullet="2.6" maxbullet="3.0" CanCompact="false" endhoveronhit="true" flightspeed="5.0" minflightdist="300" art="tiger" HeartXOff="100" HeartYOff="0"> <DDS value="maxhover" min="550" max="350" ddsmin="0" ddsmax="20"/> <DDS value="maxhover" min="350" max="300" ddsmin="20" ddsmax="50"/> <DDS value="maxhover" min="300" max="250" ddsmin="50" ddsmax="101"/> <DDS value="minhover" min="500" max="300" ddsmin="0" ddsmax="20"/> <DDS value="minhover" min="300" max="250" ddsmin="20" ddsmax="50"/> <DDS value="minhover" min="250" max="150" ddsmin="50" ddsmax="101"/> <DDS value="minfire" min="400" max="300" ddsmin="0" ddsmax="20"/> <DDS value="minfire" min="300" max="260" ddsmin="20" ddsmax="80"/> <DDS value="minfire" min="260" max="180" ddsmin="80" ddsmax="101"/> <DDS value="maxfire" min="300" max="200" ddsmin="0" ddsmax="20"/> <DDS value="maxfire" min="200" max="140" ddsmin="20" ddsmax="80"/> <DDS value="maxfire" min="140" max="100" ddsmin="80" ddsmax="101"/> <DDS value="minbullet" min="2.0" max="2.3" ddsmin="0" ddsmax="50"/> <DDS value="minbullet" min="2.3" max="2.5" ddsmin="50" ddsmax="75"/> <DDS value="minbullet" min="2.5" max="3.1" ddsmin="75" ddsmax="101"/> <DDS value="maxbullet" min="2.5" max="3.0" ddsmin="0" ddsmax="50"/> <DDS value="maxbullet" min="3.0" max="3.3" ddsmin="50" ddsmax="75"/> <DDS value="maxbullet" min="3.3" max="3.8" ddsmin="75" ddsmax="101"/> <DDS value="movespeed" min="1.75" max="2.0" ddsmin="0" ddsmax="50"/> <DDS value="movespeed" min="2.0" max="2.25" ddsmin="50" ddsmax="75"/> <DDS value="movespeed" min="2.25" max="2.75" ddsmin="75" ddsmax="101"/> <DDS value="frogstun" min="150" max="200" ddsmin="0" ddsmax="50"/> <DDS value="frogstun" min="200" max="250" ddsmin="50" ddsmax="101"/> <DDS value="hurryamt" min=".50" max=".75" ddsmin="0" ddsmax="50"/> <DDS value="hurryamt" min=".75" max=".95" ddsmin="50" ddsmax="101"/> <Berserk value="maxbullets" amount="1" HealthLimit="30"/> <Berserk value="maxbullet" amount=".5" HealthLimit="30"/> <Berserk value="minbullet" amount=".9" HealthLimit="30"/> <Berserk value="movespeed" amount="2.0" HealthLimit="30"/> <Berserk value="minhover" amount="-100" HealthLimit="30"/> <Berserk value="maxhover" amount="-100" HealthLimit="30"/> </Boss> </Level>
boss1/boss1test2.dat
This version of the level uses diagonal paths. Level version is 12. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
startDistance | 39 | 50 |
ballRepeat | 44 | 50 |
maxSingle | 6 | 10 |
boss1/boss1test3.dat
This version of the level uses oval paths. Level version is 12. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
startDistance | 43 | 50 |
maxSingle | 6 | 10 |
editTypeByteCount | 84 | 144 |
boss1/boss1test4.dat
Largely identical to boss1/boss1test4.dat but one pathpoint was removed, the first's Y offset was edited and some were altered. Not defined so the XML parameters are lost.
boss1/boss1test5.dat
Layout is largely identical to the final but moved and some parameters were edited. Level format version 12. The level ID and XML parameters are not present but suggests the file is used for boss 3, 4 and 6.
Param | Value | Final Value |
---|---|---|
isLinear | true | false |
startDistance | 47 | 50 |
editTypeByteCount | 94 | 144 |
boss1/boss1test6.dat
Some parameters were edited. Level format version 12. The level ID and XML parameters are not present but suggests the file is used for boss 2.
Param | Value | Final Value |
---|---|---|
startDistance | 43 | 50 |
maxSingle | 6 | 10 |
editTypeByteCount | 94 | 144 |
boss1/boss1test7.dat
Similar to boss1test2.dat, with most identical parameters. The level ID and XML parameters are not present but suggests the file is used for boss 5.
Level format version 12.
Param | Value | Final Value |
---|---|---|
startDistance | 39 | 50 |
ballRepeat | 44 | 50 |
maxSingle | 6 | 10 |
editTypeByteCount | 184 | 144 |
boss1/boss1test8.dat
This one went through 6 revisions. Level format version 14. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
pwrUpChance | 300 | 1200 |
editTypeByteCount | 74 | 144 |
boss1/boss1test8v2.dat
Similar to boss1test8.dat but the curve in the middle is changed, version 14. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
speed | 0.8 | 0.5 |
pwrUpChance | 300 | 1200 |
editTypeByteCount | 114 | 144 |
boss1/boss1test8v3.dat
Similar to boss1test8v2.dat but the angle of the curve at the top is changed, version 14. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
speed | 0.8 | 0.5 |
PowerType_ProximityBomb.frequency (Deprecated Powerup) | 100 | 0 |
pwrUpChance | 300 | 1200 |
editTypeByteCount | 134 | 144 |
boss1/boss1test8v4.dat
Identical version and parameters as boss1test8v3.dat but the pathpoint data is different, version 14. Not defined so the XML parameters are lost.
boss1/boss1test8v5.dat
A slight modification of boss1test8v4.dat, version 14. Not defined so the XML parameters are lost.
boss1/boss1test8v6.dat
Seems to be based off boss1test8v3.dat, version 14. Not defined so the XML parameters are lost.
boss1/boss1test9.dat
Went through one revision. Level version 15. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
speed | 45 | 50 |
maxSingle | 5 | 10 |
maxClumpSize | 5 | 10 |
editTypeByteCount | 194 | 144 |
boss1/boss1test9v2.dat
The top and middle curves were altered from the original. Level version 14. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
maxSingle | 6 | 10 |
editTypeByteCount | 194 | 144 |
boss1/boss1v2.dat
The only level file without test in the name but unused. Level version 12. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
startDistance | 65 | 50 |
ballRepeat | 17 | 50 |
speed | 1.45 | 0.5 |
slowDist | 450 | 200 |
accelRate | 0.025 | 0.000 |
maxSpeed | 1.75 | 100.00 |
PowerType_ProximityBomb.frequency (Deprecated Powerup) | 100 | 0 |
PowerType_SlowDown.frequency (Deprecated Powerup) | 20 | 0 |
PowerType_Accuracy.frequency (Deprecated Powerup) | 20 | 0 |
PowerType_MoveBackwards.frequency (Deprecated Powerup) | 20 | 0 |
PowerType_Cannon.frequency (Deprecated Powerup) | 100 | 0 |
pwrUpChance | 2000 | 1200 |
editTypeByteCount | 284 | 144 |
boss1/boss1v3.dat
Seems to be based off boss1v2.dat but inverted. Level version 12. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
startDistance | 45 | 50 |
ballRepeat | 17 | 50 |
speed | 0.95 | 0.5 |
slowDist | 350 | 200 |
accelRate | 0.001 | 0.000 |
maxSpeed | 0.95 | 100.00 |
PowerType_ProximityBomb.frequency (Deprecated Powerup) | 100 | 0 |
PowerType_SlowDown.frequency (Deprecated Powerup) | 20 | 0 |
PowerType_MoveBackwards.frequency (Deprecated Powerup) | 20 | 0 |
pwrUpChance | 2000 | 1200 |
editTypeByteCount | 214 | 144 |
boss1/boss1v4.dat
Level version 12. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
startDistance | 60 | 50 |
ballRepeat | 40 | 50 |
maxSingle | 8 | 10 |
speed | 0.75 | 0.5 |
slowDist | 75 | 200 |
pwrUpChance | 2000 | 1200 |
editTypeByteCount | 174 | 144 |
boss1/TikiTest.dat
Curve path is identical to the final version so a screenshot won't be necessary. Level version 12. Not defined so the XML parameters are lost.
Param | Value | Final Value |
---|---|---|
maxSingle | 4 | 10 |
Development Compilation Directories
C:\Documents and Settings\jeff\Desktop\ C:\work\games\Art\ZumasRevenge\Working\ C:\Documents and Settings\Architekt\Desktop\
The PAX files have some metadata which describes part of a few directories in the game. Jeff is most likely Jeff Weinstein, a programmer of many games from PopCap; "Architekt" is his alternative name, commonly seen on forums. Guess he has two user accounts.
Development Text
To do: Some functions of the game have swears. |
There's a lot of interesting strings.
Your boss DDS parameters were all reset. You should quit and restart.
A message displayed when all level managers are reloaded.
ADVENTURE STATS DO NOT DELETE.csv HEROIC STATS DO NOT DELETE.csv CHALLENGE STATS DO NOT DELETE.csv IRON FROG STATS DO NOT DELETE.csv ERROR.csv users/user%d_%s_stats.dat
Possible names for save files from beta testing.
Message Maybe you don't care? Unabled to load level file:
Error message when a curve binary file is missing or improperly created.
One or more of your levels is outdated. The latest version of Zuma's Revenge has a new option to control overall powerup frequency and uses a weighted system to pick the one that appears. Powerups have been disabled. Please edit your curve to fix this. This message will only be displayed once per session. The first level found with this error is: %s
Error message for use of an older level format.
Instantly causes a game over gameover Causes the balls to rush towards the danger point danger Restarts the current level restart Jumps to the next level, restarts current one if no more nextlevel Also jumps to the next level nl Indicate the level ID to switch to. Example: changelevel new2 changelevel Also changes level cl Displays a list of all the available levels to choose from listlevels Also lists levels ll Reparses the level xml file and restarts the current level. reload Hides all balls and pauses the game. hide Mouse cheat mode: Mouse over a ball, 0-5/DEL changes color/deletes mcheat Specify a resource XML file to load to replace existing sounds. soundres Forces the equivalent of the reverse/backwards powerup. reverse Toggles on/off the accuracy powerup. accuracy Warps to a challenge level. Specify level ID. challenge Nukes all balls and ends the level. killall Toggles if the game is paused when you lose focus. nopause Sets it so that the game thinks you've beaten adventure mode once. beatgame Unlocks this zone for play in challenge mode: the same as beating level 10 of the zone naturally. beatzone Sets the number of lives the player has left. lives Makes the game crash. crash Makes the game assert (and then immediately quit). assert Sets your score to the specified value. score For challenge mode only: Sets the time remaining IN SECONDS (will inc difficulty, can be float) time For challenge mode only: Sets ALL BUT ONE level in the zone as if it were aced (unlocks if needed) acecup For challenge mode only: Sets ALL BUT ONE levle in the zone as it were normally beat (unlocks if needed) beatcup Resets steam achievements (steam builds only) resetsteam Displays all unlocked Steam achievements. showsteam Displays all stats recoreded for this user. showsteamstats
Text for a cheat console. resetsteam, showsteam ' and showsteamstats were added in the Steam, Final and multilingual Mac release. mcheat has no references to the game, making it have no effect.
*** Command Console *** Type /help for a list of commands. ^fff71f^ctrl-UP^FFFFFF^: Scrolls the currently displayed text up a line ^fff71f^ctrl-DOWN^FFFFFF^: Scrolls the currently displayed text down a line ^fff71f^UP^FFFFFF^: Scrolls up in the command history buffer ^fff71f^DOWN^FFFFFF^: Scrolls down in the command history buffer ^fff71f^/clear^ffffff^: Clears the console ^fff71f^` key^FFFFFF^: Closes/opens this window *** Help Menu *** ^fff71f^/help^ffffff^: Displays this menu ^fff71f^ctrl-UP^ffffff^: Scrolls the currently displayed text up a line ^fff71f^ctrl-DOWN^ffffff^: Scrolls the currently displayed text down a line ^fff71f^UP^ffffff^: Scrolls up in the command history buffer ^fff71f^DOWN^ffffff^: Scrolls down in the command history buffer ^fff71f^` key^ffffff^: Closes/opens this window Commands valid in the current context: ^ffffff^: ^fff71f^ /help /clear Error: unknown command \"
Text and commands for a debug console, titled a Command Console.
Zuma's Revenge!.app/Contents/MacOS/Cheat.app %20 open \"%s\ Popcap/Zuma's Revenge!/console.rbs
Related to the debug console, but the Mac version appears to use a separate app named Cheat which isn't bundled in any way.
To do: There's a function to convert level data. |
resprops\\resprops2.txt ShaderDefaults * PSEntry=main VSEntry=main; ImageDefaults * Group= FontDefaults * Group= SoundDefaults * Group= \\ / /../ Font Sound id= alias= cols= rows= volume= tags= ; Image resprops\\resprops.txt ..\\..\\..\\..\\..\\bin\\ResourceGen2.exe properties\\resources.xml
Text for a function to convert the game's resources.
%s\\Zuma2 Crash Data SUBMIT THIS FILE ASAP %d.zip _ _%d_ ZUMA2 CRASH_ \\\\sea-jeff\\c\\dump\\Zuma2Crashes\\ \\\\10.1.2.181\\c\\dump\\Zuma2Crashes\\ %s\\%s %s Crash %d.mdmp _%d_minidump.zip crash_tmp.zip crash %d.mdmp There was a problem creating a zip file of your crash information. Please report this problem at once to jeff@popcap.com. Thank you. You appear to have crash information saved on your desktop. This is VERY important data. You should post it to burrito, or barring that, email it to jeff@popcap.com. After you do that, you may delete the file. The file is ON YOUR DESKTOP and named:
Text for an alternative crash reporter. Burrito is an internal forum PopCap developers used to hitch ideas/logs and also post internal builds of games; a tool is also present. SEA likely relates to PopCap Seattle, the main branch of the company.
Unused Challenge Mode Difficulty
Normally, each game of Challenge mode lasts only 3 minutes (18000 in game's internal timer value) and get gradually more difficult as they go along. However, in one of the game's XML files (main.pak/levels/levels.xml), difficulty settings for lengths through 5:20 (32000 in game's internal timer value) exist:
Single curve levels: <Difficulty time="18000" colors="6" speed=".85" startdist="50" zumascore="1550" ballrepeat="37" powerup="560" rollback="50" dangerratio="2.5" maxclumps="2" maxsingles="6" rollbackduration="0"/> <Difficulty time="20000" colors="6" speed=".88" startdist="50" zumascore="1550" ballrepeat="37" powerup="550" rollback="50" dangerratio="2.4" maxclumps="2" maxsingles="6" rollbackduration="0"/> <Difficulty time="22000" colors="6" speed=".92" startdist="50" zumascore="1550" ballrepeat="36" powerup="550" rollback="50" dangerratio="2.4" maxclumps="2" maxsingles="6" rollbackduration="0"/> <Difficulty time="24000" colors="6" speed=".96" startdist="50" zumascore="1550" ballrepeat="36" powerup="560" rollback="50" dangerratio="2.3" maxclumps="2" maxsingles="6" rollbackduration="0"/> <Difficulty time="26000" colors="6" speed=".99" startdist="50" zumascore="1550" ballrepeat="35" powerup="570" rollback="50" dangerratio="2.3" maxclumps="2" maxsingles="7" rollbackduration="0"/> <Difficulty time="28000" colors="6" speed="1.03" startdist="50" zumascore="1550" ballrepeat="35" powerup="580" rollback="50" dangerratio="2.1" maxclumps="2" maxsingles="7" rollbackduration="0"/> <Difficulty time="30000" colors="6" speed="1.07" startdist="50" zumascore="1550" ballrepeat="34" powerup="590" rollback="50" dangerratio="1.9" maxclumps="2" maxsingles="7" rollbackduration="0"/> <Difficulty time="32000" colors="6" speed="1.1" startdist="50" zumascore="1550" ballrepeat="34" powerup="600" rollback="50" dangerratio="1.8" maxclumps="2" maxsingles="7" rollbackduration="0"/>
Double curve levels: <Difficulty time="18000" colors="6" speed="0.625" startdist="50" zumascore="1550" ballrepeat="36" powerup="500" rollback="50" dangerratio="2.1" maxclumps="3" maxsingles="5" rollbackduration="0"/> <Difficulty time="20000" colors="6" speed="0.625" startdist="50" zumascore="1550" ballrepeat="35" powerup="480" rollback="50" dangerratio="1.9" maxclumps="2" maxsingles="5" rollbackduration="0"/> <Difficulty time="22000" colors="6" speed="0.65" startdist="50" zumascore="1550" ballrepeat="34" powerup="460" rollback="50" dangerratio="1.9" maxclumps="2" maxsingles="5" rollbackduration="0"/> <Difficulty time="24000" colors="6" speed="0.65" startdist="50" zumascore="1550" ballrepeat="34" powerup="450" rollback="50" dangerratio="1.85" maxclumps="2" maxsingles="5" rollbackduration="0"/> <Difficulty time="26000" colors="6" speed="0.675" startdist="50" zumascore="1550" ballrepeat="34" powerup="460" rollback="50" dangerratio="1.8" maxclumps="2" maxsingles="5" rollbackduration="0"/> <Difficulty time="28000" colors="6" speed="0.675" startdist="50" zumascore="1550" ballrepeat="34" powerup="470" rollback="50" dangerratio="1.75" maxclumps="2" maxsingles="5" rollbackduration="0"/> <Difficulty time="30000" colors="6" speed="0.7" startdist="50" zumascore="1550" ballrepeat="34" powerup="480" rollback="50" dangerratio="1.7" maxclumps="2" maxsingles="5" rollbackduration="0"/> <Difficulty time="32000" colors="6" speed="0.725" startdist="50" zumascore="1550" ballrepeat="34" powerup="490" rollback="50" dangerratio="1.65" maxclumps="2" maxsingles="5" rollbackduration="0"/>
It's possible to extend the time limit of Challenge mode by editing the "GauntletSessionLength" property in the same XML file. After 3 minutes, the balls move even faster and the colors become more scattered, so the player will likely perish very soon.
Additionally, if you change the "time" parameter to a "points" parameter, the difficulty goes up based on the player's score. This is described in a developer's comment in levels.xml:
<!-- if you use "points" instead of "time" then when the users crosses that point threshhold the difficulty increases, otherwise it goes up over time -->
Debug Displays
To do: What does DDS for the game mean? It's obviously not meaning the term for textures of DirectX. 0042D139 in memory of final is interesting but crashes the game when set to 1 after either loading a level afterwards, clicking Menu or pausing the game. NOP'ing the related JNE enables the boss DDS window when pausing in all modes but is there a way to properly enable it? There's a boss DDS window too. |
Curve Drawing
Most levels have a property "drawcurve" in levels.xml. Changing them to true
will draw the ball path as a red line in gameplay. On Mac OS X, this only works with the final worldwide version of the game. In certain levels like Shipwrecked!, this doesn't render properly without modification as the chutes below overlap the red line drawn.
Tunnel Drawing
Most levels have a property "drawtunnel" in levels.xml. Changing them to true
unfortunately does nothing, as the function is stripped from the game.
DDS Window
A display of level parameters is hidden with no references to enable it. Changing the following byte at the end of the value on the memory address to 1 will enable it and draws related text in a colored blue square on the bottom left corner of the game. The text is only visible in Challenge Mode but leaving the game window unfocused or paused (most notably with space), also renders it temporarily.
Build | Address |
---|---|
v1.0.4.9495 | 0042CB8F |
Debug Commands
Pressing CTRL-ALT-D will play a sound to indicate debug key input is enabled, allowing the option of typing unique keys for debugging displays or mechanisms; another use will disable it. Two of the functions was slightly altered from Bejeweled Twist and F11 does not exist.
- F1 - The ArtRes entry was removed. You can enable the UpdateCount display with setting 004A3E76 (JPN) or 004A3E76 (Final) to NOP.
- F3 - Now includes the virtual memory FPS and changes the existing FPS string to ActFPS and being an older framework version, this doesn't include the Shift key inclusion for mouse coordinates.
ActFPS: %d VirtFPS: %.1f
- F8 - Now includes Texture Memory.
Unused Sound Effects
The loading screen has two unused sound effects.
logoappears1.ogg
This cool "Zuma!" title call voice wasn't used.
shipwreck1.ogg
The scene where the frog's ship is wrecked doesn't exist, but this sound effect suggests that PopCap might have planned it to.
Unused Text
Kahtiki Khan Maga Maga Baron Digo Kulo Komari Cephalo Ka Zhaka Mu Drumstick Willie His Crumbleness
Each boss battle has a level name, which is never displayed. The bottom three are each section of the final boss.
Oh no! Jungle Boss is on a rampage! Blast him through holes in the curve when his shield is down. But don't let the curve reach the skull!
You've awakened Village Boss from his slumber! Use the lilypads to take shots at his heads when they glow. Be sure to keep the balls out of the skull!
Level 10 and 20 in levels.xml have a parameter called "NextLevelText", as described in developer's comment:
<!-- NEW LEVEL PARAMETER: NextLevelText - In addition to displaying this round's stats, this text will be displayed so that the user can know what to expect on the next level. -->
The idea of NextLevelText appears to be dropped early in development, as they only exist in the first two worlds. In the final version of the game, it was replaced by a boss "placard", and the accompanying text is part of the graphics.
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Berserk mode: This is for bosses only. This lets you alter any of the boss' parameters when his health drops below a certain amount. CURRENTLY, *ALL* VALUES DESCRIBED IN THE ABOVE DDS SECTION CAN BE USED AS BERSERK VALUES. I will list extra values below when they are added. When the boss' health drops below a threshhold you specify, the values are modified by the amount you set. Like the <DDS> tag, <Berserk> tags go between a <Boss> section. Here's an example tag: <Berserk value="HPDecPerHit" amount="-5" HealthLimit="75"/> The number in /amount/ is ADDED to the present value of the variable. /HealthLimit/ indicates that if the boss previously had a health greater than or equal to this but is now less than this (i.e. you damaged him and he dropped below the number) then this rule should take effect. It only happens the first time the boss crosses that threshhold, so it won't keep constantly apply -5 to HPDecPerHit when he's below 75 health. If you have multiple entries you want affected at the same HealthLimit, just specify them with another <Berserk> tag, using the same HealthLimit value. If you wanted HPDecPerHit to change again if say the boss dropped below 30 health, you would simply add another <Berserk> tag like so: <Berserk value="HPDecPerHit" amount="-5" HealthLimit="30"/> Skip to the end of this file for a testbed boss for more examples on the <Berserk> section. SPECIAL BERSERK MOVEMENT RELATED COMMANDS: ------------------------------------------ You can have the boss switch to a different movement pattern completely upon berserking. This requires a berserk tag of this form: <Berserk value="movement" HealthLimit="<num>" .../> NOTE THAT YOU HAVE TO SPECIFY "movement" FOR YOUR VALUE TAG!!!! And you don't specify /amount/ or /override/. Set any parameters here relating to position that you normally would set up for the boss' default movement pattern. The following are the ONLY valid tags that can be used here: please note that their usage and combination are subject to the same rules as described elsewhere in this doc. startx, endx, starty, endy, x, y, x1 and y1 through infinity 2 examples: This would switch movement to rail based: <Berserk value="movement" HealthLimit="60" startx="123" endx="456" y="123"/> This would switch to waypoint based: <Berserk value="movement" HealthLimit="95" x1="175" y1="217" x2="647" y2="217"/> This will COMPLETELY wipe out the values for these previous variables (all others aren't touched, like strafe, move speed, etc etc). ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->
<!-- ================================================================================================================== The following is a list of all valid parameters for bosses only: Common to all: -------------- HPDec - How much health the boss loses per shot fire. Must be multiple of 5 (each 5 indicates a 1/4 heart) HPDecProxBomb - Like above but for how much health damage a proximity bomb does. IF NOT DEFINED AT ALL, DEFAULTS TO /HPDec/! ImpatientTimer - If specified, when this time runs out the boss becomes impatient and every 10 seconds, the curve moves 10% faster, the boss starts firing faster and more often. NormalPassUnder - If true, normal bullets don't affect the boss and he can only be hit by cannon balls. BombDelay - In frames, this will make it so the proximity bomb can spawn multiple times but limited by this delay instead of the present cap of 1 per curve. X/YShake - Makes the boss shake when hit by the specified amount. Use 0 for none. CanCompact - If "true", the boss will compact the curve when he's hit HeartXOff/HeartYOff - Lets you position the location of the boss heart gauge, relative to the boss' location. TikiStunTime - how long the tiki stops moving for if hit. If this is 0, the tiki will behave like the others do in regards to getting hit. Only valid for moving tikis. tiki<num>track - if true, this tiki follows the player, otherwise it behaves like the others do tiki<num>accel - If tracking the player, this is how fast it accelerates after overshooting You can put a tiki on a rail, either vert or horiz. Just do /tiki<num>w/ or /tiki<num>h/ to set the rail width or height, respectively. To set the traveltime between the rail points, use /tiki<num>time/. You can setup the location and size of a wall by inserting any of the following tags still on the <BOSS> line, where the # symbol is an integer ID number of the wall: wall#x, wall#y - location of the wall wall#w, wall#h - width/height of the wall If you have an even number of tikis to walls, then the tikis will make the wall of the same ID disappear when hit. If you have only 1 wall but more than 1 tiki, you must hit all tikis to make the wall disappear. Specific to boss type 3 (present "Ace" style boss permutations): ---------------------------------------------------------------- USE ONLY 1 OF THE FOLLOWING MOVEMENT METHODS MOVEMENT METHOD1 StartX/EndX - The boss moves horizontally between these points. He'll randomly start somewhere in between y - He doesn't change Y coordinate, so just set 1 value for this MOVEMENT METHOD2 x1/y1, x2/y2, etc - Specify any number of paired coordinates and the boss will instantly warp between them, rather than picking a spot on a rail between endpoints. Hovering parameters and all other parameters are respected. BombFreqMin/Max - Lets you force a prox bomb to spawn every this number of balls BombDuration - Lets you override how long the prox bomb powerup stays on screen for (default is 20 seconds) minhover/maxhover - Min/max time to hover in place movespeed - How fast he moves after hovering to the next spot minfire/maxfire - Min/Max firing delay when he's hovering ONLY USE 1 OF THE FOLLOWING 3 OPTIONS: stun - how long the frog is stunned for poison - how long frog is poisoned and has mouse controls inverted for hallucinate - how long ball colors are messed up for SHIELD RELATED UseShield - If true, the boss gets a shield around him that is made of 4 quadrants that must be destroyed by a prox bomb. If false, none of the rest of the parameters matter. ShieldRotSpeed - How fast (degrees per update frame) the shield SMOOTHLY rotates ShieldPauseTime - Use ONLY this or ShieldRotSpeed: if set, the shield will sit still until this time elapse, then it rotates 90 degrees. ShieldRespawnTime - How quickly the shield segments respawn. ShieldHP - Use with the next parameter: lets you set how much HP a shield segment has. BallShieldDamage - If the above is set, then this is how much HP a normal bullet does to a shield segment. When the segment drops to 0 HP, it disappears for /ShieldRespawnTime/. So if you set this to 1 and /ShieldHP/ to 3, you'd need to make 3 hits to open the shield segment. Hitting a shield segment with a prox bomb always instantly opens it up. EnrageShieldRestore - If true, the entire shield regens instantly when the boss goes berserk DrawRadius - If true, will draw a radius that indicates a region in which, if a prox bomb goes off in, will damage the boss. minbullet/maxbullet - Min/max speed of the projectiles he fires noflip - Disables the ability to flip back and forth on the rail. subtype - Set to 1 for how boss1 works: just fires a bullet right at the player. Set to 2 to allow the boss to fire multiple bullets at the player. ONLY IF SUBTYPE IS 2 WILL THE NEXT PARAMETER, /maxbullets/ APPLY! Otherwise it'll be ignored. shottype - If you're using subtype 2, aka multishot, this lets you set a specific type of shot to do for the boss' regular attacks. Specify "any" or leave blank to allow any (randomly chosen) shot type. Specify "target" to have the bullet target the player, specify "sine" for one of the sinusoidal variants (works for both the sine types we made), and finally the new one, specify "straight" to make the boss fire a perpendicular shot that isn't targeted. NEW ADDITION: specify "homing" to make the projectile's X velocity track the player. Used in conjunction with /homingspeed/ homingspeed - A floating point value only used with homing shot type. This is how fast the missile corrects its speed. shotdelay - In MS, this is only used if firing multiple shots. This lets you make shots delayed by an amount so as to stagger them. retalshotdelay - Like the above but for retaliatory shots. EndHoverOnHit - If true, when the boss is shot, he'll stop hovering and go to his next spot flightspeed - a floating point value that overrides the speed for when the boss is hit and is fleeing immediate fleeing effect. Only valid with endhoveronhit. minflightdist - the minimum pixel distance the dude has to travel if he is fleeing in terror. Only valid with endhoveronhit. EnrageAmt - Every time the boss loses this amount of health, he increments the maxbullets amount by 1 RetalEnrageAmt - Like above but for his retaliation shot counter maxbullets - If subtype is 2, this controls how many bullets the boss will fire when he's ready to retaliation - For either subtype, when the boss is hit, this is how many shots he'll fire retaltype - Retaliation shot type: set to "sine" to make the shots be sinusoidal. If you fire more than 1, he'll alternate firing a left/right sine pattern. If anything but "sine" he'll fire right at the player. THE FOLLOWING ARE ONLY USED IF /retaltype/ IS SINE: (Only one of these sections can be valid at a time) min/maxamp - Sets the min/max amplitude for the sine wave function. The large the value, the taller/higher the sine wave goes to. Think of this as the volume of a sound wave. min/maxfreq - Sets teh min/max range for the frequency of the wave shape. Think of this as how close together the actual humps/curves of the sine graph are. Higher values put them closer together. Min/MaxSineYInc - How fast in the Y direction the bullet moves SineShotsTargetPlayer - Only use this for vertical bosses at the moment. MinSineShotTime - How long sine shots take to travel from the boss to the player, min in a range MaxSineShotTime - How long sine shots take to travel from the boss to the player, max in a range CanShootBullets - Allows the bullets to be destroyed by frog balls. haha /FrogShield/ How long the frog shield powerup will last for /BossFreeze/ How long the boss freeze powerup will last for COLOR VAMP PARAMETERS: ColorVampire - If true, he's a color vampire, if not, stop reading the rest of this. AvoidColor - If true, the player has to AVOID hitting the boss when he's displaying the color. In that case, if you hit him with the color he's showing, he can regain health, if you let him. If false, you HAVE TO hit him with the displayed color. He won't regain health no matter what. VampHealthInc - If avoidcolor, this is how much health he'll get back. It follows the same rules/restrictions as the /hpdec/ parameter. Ignored if not avoidcolor. VampColorChangeMin/Max - The min/max time for him to change colors, though he'll change after being hit regardless. ColorHelp - Only valid for color vampire bosses whom you have to hit with the showing color: this is the % chance that when hit, the next color chosen will be the same as the 2nd ball color. ================================================================================================================== -->
Information on boss parameters.
<!-- DDS tiers must be added in order. /powerpct/ is the % increase to all powerups, /slowadd/ is the extra pixel distance to add to the danger/slowdown value. The /speedpct/ value affects the cruising speed of the balls. Set it to 200 (200%) to make the balls go twice as fast...which would be dumb. Set it to 50 (50%) to make them go half as fast at cruising speed. /zumapct/ is the amount to reduce the number of points needed for zuma by. Set it to 0 to leave it the same. Set it to 50 to make the user only need 50% of the points to achieve zuma. -->
<!-- don't touch this. If you change the boss names for some odd reason though, the /boss/ tag will need to be updated. So let's just not do that. -->
<!-- PLEASE DON'T REMOVE THESE: You may update them and modify them to balance and stuff but leave at least something defined for gauntlet mode so I can continue to test it w/out crashing -->
<pre> <!-- for the PopCap logo --> <!-- "Level" for level locked, empty/undefined for none or some overidden other DRM method --> <!-- If this is true, we'll display the upsell if the user hits the exit button on the main menu, otherwise we'll just quit. Note: This will never display an upsell if you hit alt-f4 or the "x" to close the app --> <!-- Set the number of partner logos to display in the "NumLogos" field. For EACH logo, make a Logo#File and a Logo#HoldTime entry. The file entry should be a path relative to the game's .exe. DO NOT SPECIFY A FILE EXTENSION. Supported file types are: gif, jpg, jp2, png, j2k, and limited support for tga. The hold time is specified in hundredths of a second, so 100 is equal to 1 second. --> <!-- <Integer id="NumLogos">2</Integer> <String id="Logo1File">images/1</String> <Integer id="Logo1HoldTime">300</Integer> <String id="Logo2File">images/2</String> <Integer id="Logo2HoldTime">150</Integer> -->
Interestingly, the Mac version has this information in partner.xml.
Unused code
3D Object Loader
A function called Load3DObject is present in the executable, which has later been renamed to Load3DMesh in Prime, PopCap's multiplatform revision of their engine. It loads P3D files that only were used in the Bejeweled series beyond 2, despite being engine-specific code. Perhaps it was carried over from Bejeweled Twist's engine revision.
Resource Generator 2
To do: Check the Mac version. |
There is code for executing a program called ResourceGen2.exe in ..\..\..\..\..\bin. It's possible it relates to resprops\resprops.txt as well as properties\resources.xml.
Oddities
Debug Boss Naming
IMAGE_LEVELS_DEBUGBOSS6PART5_BKGRND IMAGE_LEVELS_DEBUGBOSS6PART5_CHUTE1 IMAGE_LEVELS_DEBUGBOSS6PART5_CHUTE2 IMAGE_LEVELS_DEBUGBOSS6PART5_CHUTE3 IMAGE_LEVELS_DEBUGBOSS6PART3_BKGRND IMAGE_LEVELS_DEBUGBOSS6PART3_CHUTE1 IMAGE_LEVELS_DEBUGBOSS6PART3_CHUTE2 IMAGE_LEVELS_DEBUGBOSS6PART3_CHUTE3 IMAGE_LEVELS_DEBUGBOSS6PART3_CHUTE4 IMAGE_LEVELS_DEBUGBOSS6PART3_CHUTE5 IMAGE_LEVELS_DEBUGBOSS6PART2_BKGRND IMAGE_LEVELS_DEBUGBOSS6PART2_CHUTE1 IMAGE_LEVELS_DEBUGBOSS6PART2_CHUTE2
The rest of the final bosses have debug in their internal resource names, despite being used. In the WP7 version, this was corrected.
Internal Project Name
This needs some investigation. Discuss ideas and findings on the talk page. Specifically: Ranidae in MacOS version source filepath, it roughly translates to "True Frog", would that be another? |
The internal name of the game is Zuma2, most likely Zuma 2 Deluxe.
The Zuma series
| |
---|---|
Windows | Zuma Deluxe • Zuma's Revenge! |
Mac OS X | Zuma Deluxe |
Adobe Flash | Zuma • Zuma High Speed Challenge! • Zuma's Revenge! • Zuma Blitz: Kroakatoa Island |
Nintendo DS | Zuma's Revenge! |
Xbox 360 | Zuma's Revenge! (Prototype) |
PopCap Loader | Zuma |
- 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 2009
- Games released in September
- Games released on September 15
- Games with unused code
- Games with hidden development-related text
- Games with unused sounds
- Games with unused text
- Games with debugging functions
- Stubs
- To do
- Pages with broken file links
- To investigate
- Zuma series
Cleanup > Pages missing date references
Cleanup > Pages missing developer references
Cleanup > Pages missing publisher references
Cleanup > Pages with broken file links
Cleanup > Stubs
Cleanup > To do
Cleanup > To investigate
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 code
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 > 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 2009
Games > Games by release date > Games released in September
Games > Games by release date > Games released in September > Games released on September 15
Games > Games by series > Zuma series