Onder de microscoop: Ecco the Dolphin (Sega PC)

Vandaag bekijken we de PC-versie van Ecco the Dolphin. Dit spel is een adaptatie van de Sega CD-versie uit 1993, wat op zijn beurt weer een verbeterde versie is van het origineel voor de Sega Genesis uit 1992.

Voor de console-edities bestaat er een uitgebreide 'debug mode' cheat waarmee je onder andere levels kunt overslaan en onkwetsbaar wordt. Op de pc moet je je echter normaal gesproken op de harde manier door deze beruchte, moeilijke titel vechten.

Of...? Er zit wat vreemde code in de functie die het 'About'-dialoogvenster van het spel beheert:

/* WM_COMMAND */
if (uMsg == 0x111) {
    if ((wParam == 1) || (wParam == 2)) {
        GetWindowRect(hWnd,&lpRect_2);
        screen_height = GetSystemMetrics(1);
        if ((screen_height < lpRect_2.bottom) &&
            (screen_width = GetSystemMetrics(0), screen_width < lpRect_2.right)) {
            system_flags_0048c334 = system_flags_0048c334 | 0x10;
        }
    }
}

Deze code controleert of de rechteronderhoek van het dialoogvenster buiten het scherm valt op het moment dat het venster wordt gesloten.

Na die controle roept de code GetKeyState aan voor Shift en Ctrl. Als deze toetsen worden ingedrukt terwijl het venster verdwijnt, wordt LoadMenuA aangeroepen voor menu-ID 0x70.

Wat doet dat precies? Het stelt je in staat om toegang te krijgen tot een cheatmenu door Shift+Ctrl in te drukken en met de rechtermuisknop op het hoofdvenster te klikken.

Het cheatmenu

In dit menu vind je de volgende opties:

  • Stage: Hiermee kun je het startniveau kiezen. Maak een selectie en druk op F2 om te beginnen met spelen. Alle items lijken te werken, behalve degene die is gemarkeerd als 'test only'.
  • Life: Geeft je onbeperkt leven en lucht. De meters die deze statistieken bijhouden, verdwijnen volledig wanneer deze cheat is ingeschakeld.

Wanneer het cheatmenu actief is, zie je onderaan het scherm ook positioneringsinformatie. Deze getallen veranderen naarmate Ecco beweegt.

Het uitgebreide cheatmenu

Er is echter meer. De handler-functie van het 'About EccoWin'-dialoogvenster controleert nog op aanvullende voorwaarden. De code stelt de volgende vragen:

  1. Komt het uMsg-argument overeen met het WM_RBUTTONDBLCLK-event?
  2. Heeft het wParam-argument de bits MKSHIFT, MKCONTROL en MK_LBUTTON ingesteld?
  3. Bevindt de cursor zich in een van de hoeken van het dialoogvenster?

Vertaald naar menselijke taal betekent dit het volgende:

  1. Open het dialoogvenster via Help > About EccoWin.
  2. Houd Shift+Ctrl+Linkermuisknop ingedrukt en dubbelklik vervolgens met de rechtermuisknop op de rechteronderhoek van het dialoogvenster. De OK-knop zal veranderen in "kO".
  3. Sluit het dialoogvenster terwijl je Shift+Ctrl blijft vasthouden.

Nu bevat het cheatmenu (nog steeds toegankelijk via Shift+Ctrl+rechtermuisklik op het hoofdvenster) extra opties: Easy, CD check en border.

  • Easy: Op basis van de spelcode lijkt dit bedoeld om de cooldown-timer van het 'dashen' te verkorten. In de praktijk was dit effect voor mij echter nauwelijks merkbaar.
  • CD check: Verwijdert het meldingenvenster met de tekst "This program can only be run from the original CD!".
  • border: Dit lijkt bedoeld te zijn om een soort resource-meter rond de rand van het scherm te plaatsen. In de commerciële versie van het spel lijkt dit echter niet functioneel te zijn.

Slotwoord

Met de Stage- en Life-cheats zul je misschien een van de weinige mensen worden die daadwerkelijk het einde van Ecco hebben gezien.