Discoveries

Was Lost But Now Found: Math Blaster Episode 1 for DOS

  • 218
  • 0
On November 24, 2022, Math Blaster Episodes 1 and 2 became available on digital distribution for the first time ever, on the ZOOM Platform. While Episode 2 has a 32-bit Windows version that can be made to run on 64-bit Windows with minimal hassle, Episode 1 does not. As a result, it required WineVDM, a compatibility layer that allows 16-bit applications to run on 64-bit Windows.

There was, however, known to be a DOS version of Math Blaster Episode 1. Despite this, it was nowhere to be found in any corner of the internet I scoured. Worse, it was never released on CD-ROM in any form; only the Windows version was.

One day, I found an interesting auction: a sealed copy of Math Blaster: In Search of Spot. And it was the DOS version! I snatched it up, knowing that the disks inside were guaranteed to be pristine. Up to that point, I didn't bother with collecting games on floppy disk, preferring to get them from CD-ROM releases whenever I could. In this case, I made an exception to that...

Partial Mega Math Blaster source found?

  • 1,292
  • 0
It seems like someone at Davidson accidentally shipped a development file for Mega Math Blaster onto a retail CD!

That's right, my CD of Math Blaster Ages 6-9, a 1998 re-release of Mega Math Blaster that I got as a kid, contains a file called MEGAMB.APP. You can view it here.

I've been trying to reverse-engineer the Blaster series' engine, which is called Atlas Game Engine. I've posted my findings here, but here it is again:

The Atlas Game Engine is a proprietary game engine developed by Davidson & Associates for use in their games in the Blaster Learning System. It was originally developed for the classic Mac OS and Windows.

Much of the game data is stored in three game files that use the game's ID as the name. They contain the extensions DLL, BAP, and RES. The DLL file is referred to as the "personality". It...

I Wanna Go Fast

  • 1,228
  • 0
Most SCI games keep track of CPU speed. They do this at startup in a room commonly known as speedTest, and save the recorded speed in a global variable commonly known as machineSpeed.

Initially, there was no upper limit. This leads to bugs in Leisure Suit Larry 3.
In the exercise room, the amount of exercise you needed to become fit depends on your computer's speed; the slower your system, the less exercise required. At the time of release, this was reasonable, but as computers grew faster, it became practically impossible to get past this.
At the hotel lobby, the slower your computer, the less time it takes for the elevator to arrive. On faster computers, the elevator never arrives, leading to another bug that makes the unwinnable.

Fortunately, the developers soon realized this, and added the howFast global. This is set at the speed tester, based on the machineSpeed value. It has only a few values that determine the approximate speed, and has an upper limit if the speed is any...

SCUMM Nutcracker Utilities

  • 1,708
  • 0
I've just been informed on Mixnmojo of a set of utilities called Nutcracker. It's a set of tools for editing resources in SCUMM games. Its decompiler outputs code that very closely matches that of the original SCUMM syntax, as shown in the official SCUMM documentation. If this were an IDE, it'd be really useful. Right now, v5 and v6 are supported.

I've now started work on new decompilations of compatible games here.

Nutcracker
Download the latest binary release here
Here's an example script from Secret of Monkey Island:
Code:
room recipe {

    exit { ; EXCD LECF_0001\LFLF_0084\ROOM\EXCD
    local variable L.0

        set-screen 0 to 144...

A Fresh Restart

  • 1,211
  • 0
Restarting a 16-bit SCI game is pretty simple. In Game:restart...

Code:
   (method (restart)
        (if modelessDialog
            (modelessDialog dispose:)
        )
        (RestartGame)
    )

In other words, it clears any modeless dialog, and invokes the kernel call RestartGame to clear everything - globals, cast, sounds, etc. Then the game is re-initialized.
This behavior is unchanged from early SCI0 to late SCI1.1.

When SCI moved to 32-bit, however, things changed. While the interpreter still has the RestartGame kernel call, it does absolutely nothing!
For this reason, restarting had to be re-implemented in script code. Each game had its own restart code that re-initializes everything that needs to be cleared on restart.

Zak McKracken's Gambling Problem

  • 1,517
  • 0
Here's my first SCUMM-related discovery!

One of the things you need to keep track of in Zak McKracken and the Alien Mindbenders is your characters' CashCard balance. Just like reality!

The best way for Zak to replenish his savings is to play the lottery, which only he can do. You can rig the odds in your favor by reading the Lott-O-Dictor on the King's ship. Note the number, then go back to San Francisco. You can go back by inputting the button combination or giving an artifact to the king - but don't worry, you can get the artifacts back if you choose the latter.

Once Zak's back home, he can go to Lou's Loans and buy a lottery ticket. Input the number that was on the Lott-O-Dictor. Eventually, the numbers will be picked, and Zak will win $10000! If only it were that easy in real life...

But how many times can Zak do this? The answer is five. You see, every time you win big, the game remembers. Once you've won the lottery five times, Lou will pay up one last time, and...

"Put bag in bottle"

  • 1,310
  • 0
In Leisure Suit Larry 2, an oversight in the game's vocab makes it so that mere "put bag in bottle" doesn't work... supposedly. From the Leisure Suit Larry Collection's readme:

When you reach the top of the volcano at the end of the game, be sure to include the word "the" in your commands, such as "put THE bag in THE bottle" or "drop THE bottle in THE crevice." A subtle bug slipped into Larry 2 just before it shipped. This eliminates it.

Is there any truth to this? Let's find out.

The most common version of the game (the one included in collections) is 1.200 (January 11, 1989). It's not the absolute newest version (the Amiga port is), but that's a subject for another post.

"The" is just an article, so I think the parser just ignores it. None of the said specs in rm82:handleEvent use it.
"Put" is an imperative verb.
"Bag" is both a noun and an imperative verb.
"Airsick" is a qualifying adjective, but it only appears as an optional said spec for the inventory...

Flagged: A History of SCI Game Flags

  • 1,331
  • 0
KQ4 and LSL2, the first-ever SCI games, did not have many of the luxuries that later games did.

For starters, there were no special procedures to handle event flags. All events were flagged using global variables directly. This way is obviously inefficient and a waste of heap space.

To address this issue, PQ2 introduced the Bset, Bclr, and Btst procedures, which use a global array in which each variable could have 16 flags. That saves a lot of heap space!
Of course, the downside of global variables is that the original programmers could not declare them as arrays with square brackets. This required them to take an educated guess as to how many flags they would need for their games, and note the beginning and end points for the gameFlags array. (SCICompanion has no such limitation.)

Also noteworthy is a procedure or method that not only gives puzzle points, but sets a flag so that the points for that puzzle are only given once. Its name and implementation vary, but the basic idea...

The Virgin Suicide

  • 1,525
  • 0
We all know how, in the original Leisure Suit Larry, the title character would commit suicide if he didn't lose his virginity by sunrise. I even uploaded a video of this on YouTube.


But what causes this? When does it happen? Does sleeping with the prostitute prevent it? And can this happen in the VGA remake?

Well, let's look at the game's code, in any sidewalk room:

Code:
if (initLog)
    {
    if  (watchHours > 4 &&            [    Anything after 5 am.
        watchHours < 10)
        {
        NewRoom( rmSunrise);
        }
So we know that it happens at 5 AM, when entering any sidewalk room.
Contrary to popular belief, doing the deed with the prostitute does NOT remove this time limit, since the code doesn't check for that.

Also contrary to popular belief, this death DOES occur in the VGA remake. From script 700, sidewalk:init...
Code:
        (if (> (GameHour) 7)    ;anytime after 5 am
            (self setScript: virginScript)...
Back
Top