Saturday, November 01, 2008

SPOILER: Unlock Blue Frog "Cheat" Mode and Battle Mode in Quest For Glory 2 (QFG2) VGA Remake

What is Blue Frog Mode?

The original Sierra "Quest for Glory 2: Trial by Fire" EGA game had a "cheat" mode. If you typed "suck blue frog," you could use secret key codes to give you unlimited money, raise your stats, create any item, teleport to any room in the game, etc. Officially it's a debug mode, used by developers to test the game without playing through the entire game. Unofficially, most people use it to cheat.

The AGDI have released a VGA remake for Quest for Glory 2; it has a similar "debug" / "cheat" mode called "Blue Frog Mode." Finding it is hard, but unlocking it is easy.

Blue Frog Mode Menu

Unlocking the easy way

Just download this file (Qfg2vga.025) put it in your "Quest for Glory II" installation directory, which is probably in "C:\Program Files\AGD Interactive\Quest for Glory II." You'll need to replace the Qfg2vga.025 file that already exists in that directory.

Then just start the game from the beginning (or import a character from the previous game, "Quest for Glory I" aka Qfg1 aka "Hero's Quest"). Press F10 to activate Blue Frog Mode.

Unlocking the normal way

It's a little more work to unlock Blue Frog Mode yourself without "cheating." You have to find and capture the blue frog, and beat the game with maximum puzzle points.

First, you'll need the bellows from Issur, the weaponsmaster. Go to the Dervish; there's a lilypad in Dervish's oasis. Repeatedly exit/enter the oasis. Every time you enter the oasis there's a small chance that a tiny blue frog will be sitting on the lilypad. Use the bellows on the frog; you'll take the frog and keep it in your inventory.

Dervish Oasis with Blue Frog

Note that the bellows must be empty to find and capture the blue frog. Later in the game you have to use the bellows to capture the Air Elemental; once you've captured the Air Elemental, you can't get the blue frog.

Once you have the blue frog, you must finish the game with maximum puzzle points to unlock Blue Frog Mode. For non-Paladins, you need 500 puzzle points out of a maximum of 500; for Paladins, you need 550 puzzle points out of a maximum of 550. (If you're short a few Paladin points at the end of the game, you can choose to "decline" becoming a Paladin to lower the maximum to 500 points.)

Note that on the AGDI forums, some people have suggested that you also need to max out all of your character statistics (strength, agility, etc. need to be 200) to unlock Blue Frog Mode. You definitely do not need max stats. I was able to unlock Blue Frog Mode as a Thief imported from Qfg1 with Communications of 185 and Honor of 107. Admittedly, all of my other stats were at or above 200, so there may be some requirement around stats, but I doubt it.

Instructions on how to get the bellows and find the Dervish are available in CyricZ's excellent GameFAQs walkthrough for the VGA remake; no doubt it will be updated soon to include information on how to unlock Blue Frog Mode. If you're having trouble finishing the game with maximum puzzle points, CyricZ also includes a "Point List" in section 10C, which lists all of the possible ways to earn points. In some cases, you may need to restore your game or even start your game over from scratch to get maximum points.

Item/Room List

Here's a list of item numbers for Blue Frog Mode; here's a list of room numbers for Blue Frog Mode. Note that most room numbers just cause the game to crash with an error message.

Battle Mode

There is a second "debug" mode available called "Battle Mode." Battle Mode and Blue Frog Mode must be unlocked separately.

Battle Mode has five features:

  • Combat Tests: Battle any specific monster in "test" mode. In test mode, you won't die if you lose, but you also won't gain stats during the fight. (Not that you care because you've also got Blue Frog Mode, right?)
  • Damage Meter: See the exact amount of damage dealt in combat.
  • Summon Monsters: In the desert, cause a specific monster to appear.
  • Enable/Disable Random Encounters in the desert.
  • Set Battle Speed: Press Ctrl-Z during combat to slow down or speed up the fight.
  • Enable/Disable Auto-Critical Mode: All of your attacks become critical hits.

The easy way to unlock Battle Mode is to install this file (Qfg2vga.026) in your Qfg2 installation directory. Start a new game and press F4 to access the Battle Mode menu.

The hard way to unlock Battle Mode is to find, defeat and capture the secret Pizza Elemental, then beat the game with maximum puzzle points.

To capture the Pizza Elemental, you'll need an empty pizza box. You can find one outside the entrance to the Eternal Order of Fighters. In the simplified street system it's at the end of Saif Darb; in the classic street system it's at the end of Askari Darb, which branches off of Saif Darb.



You can't find the Pizza Elemental until after you've defeated the Fire Elemental, on Day 5 or later. When you're ready, go four (4) screens South of Shapier, then about forty (40) screens West. Eventually you'll find the Pizza Elemental.

Defeating the Pizza Elemental is a lot of work, even at the easiest combat difficulty setting. I recommend unlocking Blue Frog Mode first, and using it to raise your Luck, Dodge and Weapon Use skill to 250 before challenging him. (You can raise your other stats to 250 as well, but if you start the fight with more than 200 HP or 200 SP, you'll be reduced to 200 HP/SP at the start of the fight.)

CyricZ's walkthrough includes some tips on how to defeat the Pizza Elemental. There's also a YouTube clip demonstrating how to beat him.

Basically, you have to step back and duck a lot (avoid jumping, it wastes stamina). Be sure to attack the elemental when he eats you or tries to eat a pizza. Eventually you'll run out of stamina; just patiently dodge the falling pizzas to recover stamina until you're ready to fight again. It requires quick reflexes and a lot of patience.

Once you've beaten the Pizza Elemental, use your pizza box to capture him. Then beat the game with maximum puzzle points (again, maximum stats are not required) to unlock Battle Mode.

Despite what you may have read elsewhere, you do not have to defeat Sweeping Sir James to unlock Battle Mode, or complete the Warrior's Diary. (See CyricZ's walkthrough for details on these optional missions.)

Monday, March 10, 2008

Java annotation parameters can't default to null

I don't update here often enough, but here's a tidbit I wish I'd found on Google earlier.

Suppose you want to write a Java annotation that has a parameter value, but you want its default value to be null. Well, too bad. It is illegal to write this annotation:

public @interface Optional {
   public String value() default null;

It's a compile time error. javac says "attribute value must be constant;" Eclipse says "The value for annotation attribute Optional.value must be a constant expression." In fact, it's not that surprising, because even if you didn't set a default value, writing this would also be illegal (same error):


What the error is saying is that you can't set a Java annotation parameter to null.

Why is this? The specifications are opaque. JSR-175, which defined annotations for Java 5, just says "If member type is a primitive type or String, the ConditionalExpression must be a constant expression (JLS 15.28)." JLS 15.28, in turn, says that constant expressions can be, for example, any of these:

Integer.MAX_VALUE / 2
2.0 * Math.PI
"The integer " + Long.MAX_VALUE + " is mighty big."

Notice anything missing? That's right, null. You can never pass null as a Java annotation parameter value, because, uh, null isn't a ConstantExpression.

Why? We may never know. The only thing you can do is workaround it, like this:

public @interface Optional {
   public String value() default NULL;
   public static final NULL = "THIS IS A SPECIAL NULL VALUE - DO NOT USE";

... and then make your code carefully treat Optional.NULL as if it were really null.


Friday, January 11, 2008

BART Tracker

BART Tracker reports on arriving San Francisco area BART trains in real time, using a system tray icon.

It uses BART's new "Estimated Arrivals" or "BART System Status" feature, that reports on the current up-to-the-minute status of arriving trains at every BART station.