Moved to grim-fandango.com



Hacking


Here is an article written by the greatly talented Serge, about how to go deeper into the LucasArts engine and enable develper mode in Grim Fandango, which was featured on his old SCUMM Revisited site. To access the developer mode he talks about, use bgbennyboy's launcher to launch the game. It may also be worth visiting LucasHacks, which contains various other LucasArts related hacking tools.


This article will go through a few of the ways to get further into the LucasArts engines. Developer modes, additional parameters, etc. etc. First, let's look extensively at Grim Fandango. Then a small look at how to play CMI in a window. Please note that this stuff is NOT for beginners. Although it's easy to enter developer mode, it may screw up your game totally (normally a reinstall should take care of that :) - I don't take any responsibility and provide no support for this. Be warned. Now that you're all scared away, let's move on to the dangerous info ;)

Noone Messes with Manuel Calavera

But we will, anyway. You may have noticed that executing "GRIMFANDANGO.EXE -?" displays a lot of arguments you may send to the Grim Fandango executable. Some of them look quite interesting don't they? Well, there are only a few of them that will actually do anything (such as -s, loading the most recently saved game) - unless you enter development mode!

You can enter the development mode of Grim Fandango by going to the registry. Find the Grim Fandango key (usually in HKEY_LOCAL_MACHINE/Software/LucasArts Entertainment Company LLC/Grim Fandango/v1.0) and add a new string value in it. Call this new string value good_times, and give it the value "TRUE". Now you'll be able to use all the locked arguments of GRIMFANDANGO.EXE. These include:

-w Runs Grim Fandango in windowed mode, rather than full screen. This crashed on my computer. However, there is a different way of going to windowed mode when developer mode is turned on. While playing the game, go to options, and choose the old 3D Hardware Options item. Then pick the item saying "DIBSection Windowed Display" and do as prompted. This worked on my comp. Woohoo! :)
-l Logs messages to debug.log. This only works if you have the proper debuglog.dll in your Grim Fandango directory. Maybe it won't even work when that condition is met - I haven't tested. If you want to try anyway, download the debugging patches from the download page.
-r Logs resource info to a file called resource.log in your Grim directory. This works without debuglog.dll. Question is if it's very interesting to anyone who isn't writing a game in GrimE ;).
-c After Grim Fandango starts, this will invoke the chore tool, which is an interface used for setting up walking boxes, actor chores etc. Only problem is, it requires choreface.dll, which isn't included with the release version of Grim Fandango. Quite clever, aren't they? - LucasArts.
-m I guess this does what the window says: Sets the maximum memory usage to whatever you specify (-m 2048 = 2MB). Used for testing the game with lower amounts of memory than what the test machine has.
-s I already mentioned this one. It works without the registry modification, and is used for loading the most recently saved game (it's what the launcher program calls to achieve this).
-b Allows you to pass parameters to the BOOT script (the one called _system.lua). As I haven't got this script decompiled yet, I can't tell you whether there actually are any useable parameters.
-p This allows you to add an additional data directory to Grim Fandango. Normally, the game will load resources from the CD Resource dirs, the Grim directory, and the Grim\Scripts directory (if you have TextAllowed=TRUE in the registry - see the Secret and Less Secret Issues part of the SCUMM Revisited help file). So, with this you can add, say, Grim\MyData by running GRIM.EXE -p MyData.
-z Accellerated z-buffers. I have no idea how accellerated these are. I noticed no difference when running the game with this parameter.

Ingame Keys

Lots of ingame keys are turned on when you enter development mode. Stuff like:

Ctrl+e Allows you to enter Lua code and send it directly to the engine for execution (try stuff like SayLine("I killed Guybrush Threepwood") or DrawLine(0,0,640,480)) Note that Lua is case-sensitive!
Ctrl+g Will allow you to choose any room you want to jump to, either using the full name (such as "Manny's Office") or a shortcut, which is the .set name of the room (e.g. "mo"). The rooms are as follows:

Short name Friendly name Description
pf photofinish
testroom testroom Glottis' Dog House
charlie_inv charlie_inv Chowchilla Charlie's Suit
death_inv death_inv Black Robe Inventory
siberian_inv siberian_inv Siberian Coat Inventory
nautical_inv nautical_inv Nautical Uniform Inventory
cafe_inv cafe_inv White Dinner Jacket Inventory
action_inv action_inv Army Uniform Inventory
suit_inv suit_inv Work suit inventory
mo Manny's Office Manny's DOD Office
os office steps Stairs Outside the DOD
rp ramp Highway Ramp outside DOD
ha Hallway DOD Hallway
lo lobby DOD Lobby
ga Garage DOD Garage
gs Glottis' Shop Glottis' Mechanics Shop
al Alley Alley behind DOD
st st El Marrow Main Street
le Ledge DOD Ledge
co Copal's Office Don Copal's Office
lr Diner Land of the Living Diner
pk Packing Room DOD Packing Room
do Domino's Office Domino Hurley's Office
fe festival Festival of the Dead
tu Tube Room Tube Server
hq headquarters LSA Headquarters
rf Roof DOD Roof
sm sm El Marrow Skyline from Forest
sg signpost fork Petrified Forest Signpost Fork
sp spiderweb Petrified Forest Spider Web
na navigation room Petrified Forest "Maze"
lb Lobby for Beaver Room Beaver Warning Sign
bd Beaver Dam Beaver Dam
bv beaver room Gate Outside Beaver Dam
tr tree pump room Tree Pump Machinery Room
fc foggy cactus Outside Rubacava
re rubamat exterior Rubacava Rubamat Exterior
ri rubamat interior Rubacava Rubamat Interior
cf cafe office Cafe Calavera Office
cc coat check Cafe Calavera Coat Check
ci cafe interior Cafe Calavera Bar
cn casino interior Cafe Calavera Casino
ce cafe ext Cafe Calavera Exterior
cl cafe ledge Cafe Calavera Ledge
lm Limbo Dock Rubacava Dock
hb temp hub room
bw blue casket wide Blue Casket Wide Shot
be Blue Casket Exterior Blue Casket Exterior
bi Blue Casket interior Blue Casket Interior
bk Blue Casket kitchen Blue Casket Kitchen
se scrimshaw exterior Tattoo Shop Exterior
si Scrimshaw Interior Tattoo Shop Interior
ev Elevator Station Rubacava Elevator Station
pc police station Rubacava Police Station
mg morgue Rubacava Morgue
bp bridge police side Rubacava Bridge - Police Side
bb blimp bridge Rubacava Bridge
gt lol gate Rubacava City Gate
sl shuttle security Security Officer Carla
tb track betting Kitty Track Betting Area
tw track window Kitty Track Overview Window
ts track stairs Kitty Track Stairs
kh Kitty Hallway Kitty Track Hallway (Sanspoof)
ks kitty stable Kitty Stable
dd dry dock The Bees' Dry Dock
hh high roller hall High Rollers Lounge Hall
hl high roller lounge High Rollers Lounge
hk high roller kitchen High Rollers Lounge Kitchen
hp high roller pantry High Rollers Lounge Pantry
he high roller elevator High Rollers Lounge Elevator
wc wine cellar High Rollers Wine Cellar
de dillopede elevator High Rollers Dillopede
dh dillopede hall High Rollers Dillopede Hall
mx maximinos office Swanky Maximino's Office
pi police interior Rubacava Police Station Int.
lx lighthouse exterior Rubacava Lighthouse Exterior
xb extend o bridge Velasco's Storage Room
tx track base
cb cafe balcony Cafe Calavera Balcony
tp ticket printer Betting Ticket Printer
lz lola zapata Deck of Lola
il Inside the Lola Lola Interior
ei engine room interior Lola Engine Room
dp dock porthole Engines Porthole - Dock
op ocean porthole Engines Porthole - Ocean
su sunken lola Sunken Lola
ps pearl sub Octopus Submarine
ew end of the world End of the World Overview
ea exterior airlock End of the World Airlock
mn miners End of the World Mines
fh temp factory hub End of the World Factory Hub
vd vault door Number 9 Tickets Vault Door
ar ashtray room End of the World Ashtray Room
dr dominos room Domino at the End of the World
fo foremans office Mining Foreman's Office
cy conveyor Conveyor Belt
ac anchor room Anchor at Conveyor Belt
gh Glottis hanging on the Lamancha Lamancha over the Edge of the World
cv crane conveyor Crane and Conveyor Belt
bu upper beach Upper Beach
ck crane track Crane Track Overview
bl beach lower Lower Beach
cu crane crusher Crusher
vo outer vault Outer Number 9 Tickets Vault
vi vault interior Inner Number 9 Tickets Vault
lu lamancha sub Submarine Battle
inv_naut Inventory Nautical Inventory
ul undernath [sic!] the Lola
tg temple gate 9th Underworld Temple Gate
bs temple back stairs Temple Back Stairs
my mayan workshop Mayan Workshop
td truck depot Mayan Truck Depot
mk mechanics kitchen Mayan Mechanics Kitchen
jb Bone Wagon Garage Velasco's Storage Room Int.
nq New Headquarters New LSA Headquarters
sh sewer hub
lw lsa sewer LSA Headquarters Sewer
te theater sewer Sewer outside Theater
th theater backstage El Marrow Theater Backstage
zw sewer maze Sewer Forking
at albinizod tunnel Tunnel Outside Florist's Shop
fp florist shop Florist's Shop Exterior
fi florist interior Florist's Shop Interior
ly le mans lobby Le Man's Lobby
hf hectors foyer Le Man's Foyer
nl Neon Ledge El Marrow Neon Ledge
mf Meadow Flowers Meadow outside Greenhouse
me meadow exterior Meadow outside Greenhouse
mt mayan train station Station Before 9th Underworld

Ctrl+i Turns on/off walking boxes.
Ctrl+l Turns on/off lighting (i.e., when off, Manny (and the other actors) won't be shaded according to shadows etc.)
Ctrl+n Displays the background image name in the lower left corner
Ctrl+o Creates a door. May require choreface.dll
Ctrl+p Executes patch-file.
Ctrl+s Turns on cursor - you can move the cursor along the y and z axis using the arrow keys, Alt+arrow up/down moves the cursor along the x axis. Home places Manny as close to the cursor as he can get.
Ctrl+u Creates a new object. May require choreface.dll
Ctrl+v Prints the value of a variable.
Alt+n, Alt+p Changes back and forth between view points.
Alt+s Allows you to run a Lua script.
Shift+n, Shift+p Moves back and forth between rooms (Note: This will often force you to change CD).
Shift+o Displays/Hides object names.
F3 Enables/disables the Sector Editor (which probably requires choreface.dll and thus can't be used for anything).
Home Positions Manny at his home position in the current room.
j Jumps to specific spots in the game. Some of these - don't know if I have them all:

"Number" Description
rb Reaped Bruno
rm Reaped Meche
gb Packing Room
tb Manny's Office
tc Tube Room
mm Manny and Meche dialogue
sd Locked up in Glottis' Shop (Salvador).
cr Ledge
rip Petrified Forest (Glottis rips his heart out)
gh Spider Web (Glottis' heart)
tp Tree Pump
tf Scrimshaw Interiors
dm Morgue
shanghai2 Cafe Exteriors
hrkitchen High Roller Kitchen
winecellar Wine cellar
ts Meadow exterior




SCUMM Revisited Annotations

Here are some annotations for Grim Fandango in SCUMM revisited. Use these while viewing the voice files, and they will tell you what line of dialogue every file is. Very useful!

GF Voice Annotations