Prerequesites
- A Windows computer
- The original Pitfall: The Lost Expedition CD or ISO. I will not give any link here, you'll have to look or ask around for yourself.
- DxWnd: https://sourceforge.net/projects/dxwnd/ if you'd like to play in windowed mode.
- Pitfall PC LiveSplit Autosplitter and Load Remover (should now be downloaded automatically, see Resources for example splits)
- If you want to play with a GameCube controller: A GameCube-to-USB adapter and the Xbox360 Controller Emulator, aka x360ce
Install Pitfall and configure inputs
First you need to trick the installer into thinking you're on a Windows XP machine by right clicking setup.exe > Properties > Compatibility mode > Windows XP (Service Pack 2)
You can now run the installer. Make sure to install the game on an SSD if you have one! While we do have a load remover (and I highly recommend using it!), the leaderboard still uses RTA over loadless for now. It's also much nicer to wait less for loads.
Next, you need to delete C:\Program Files (x86)\Aspyr\PITFALL The Lost Expedition\Game\KBhook.dll
. THIS IS AN IMPORTANT STEP, see "KBhook.dll" below.
Next you need to configure the game to your likings. Run the start.exe program found at the root of the installed folder.
Screen resolution should be less than your monitor size. "Enable hi-res water" breaks some water effects like electric eels and raft bowling's water current. Although this is no longer an issue since Native Village has been taken out of the 100% route.
Controls
Keyboard: Support for 3 directional inputs (2 joysticks + D-pad) would be a bit overwhelming, so on PC the right stick and D-pad actions got merged. You select an item by using the item action while pressing the "Toggle Item" key. You'll also find a dedicated "Sneak" button that was not present on the GameCube (but exists on Xbox). "Pause" is forced to "Esc".
GamePad:
Direct input is supported. Xbox 360, XBox One, Ps4, Switch Pro and other direct input controllers are supported. PS3 requires some special drivers (use DsHidMini for windows 10+, or ScpToolkit) that will make your computer see it as an Xbox controller.
To bind analog inputs like Triggers and Joysticks, you have to select the Axis and click "Assign". You should not bind Triggers to binary actions or you'll have a bad time.
Since only the Keyboard inputs will be shown on screen, I recommend binding those to keys that "speaks to you" (in my example below I made them look like a GameCube configuration).
KBhook.dll
You could boot the game right now and start playing if you want! But it will make for a bad experience, and all technical problems from here on out are due to the quite unorthodox implementation of fullscreen. The first obvious issue is that, depending on your display, the game may stretch to your entire monitor. But the more catastrophic problem is that the game will do everything to keep focus. And I mean everything.
- There is no Windowed mode
- You can't Alt+Tab, Alt+F4 or Ctrl+Alt+Delete
- If you Ctrl+Alt+Esc, the Task Manager appears behind the game
- The windows key can show you the menu, but you can't do anything with it
- The game always appear on top
- You have 1 frame to do anything before it steals back focus. Meaning that if you have multiple monitors, you have to click then do your action in less than a frame
- The only way to exit the game is to go back to the main menu and select "Exit"
- If you softlock in a way where you can't pause the game (ie: at explorers). You have to turn off your computer
Using DxWnd for windowed mode
We can force the game to play in windowed mode using DxWnd, a DirectX wrapper.
Windowed with DxWnd
Start by installing DxWnd. Once again I recommend you install in on an SSD if possible.
Once the installation is completed, open DxWnd. In the menu select Edit > Add
. Add Pitfall by configuring the target as such:
- Name can be whatever you want
- Path should be the Pitfall executable in the Game folder, NOT Start.exe. This will bypass the configuration window that would open everytime. It should look something like
C:\Program Files (x86)\Aspyr\PITFALL The Lost Expedition\Game\PITFALL The Lost Expedition.exe
- Check "Run in Window"
- Initial window size (W & H) should be the same as the "Screen resolution" you chose earlier in the game's configuration window
- Choose which monitor you want the game to appear on (for me it's my 3rd monitor)
- I recommend selecting "Desktop center", but you can play around with "X,Y coordinates"
The cons
You can now play Pitfall at proper resolution without locking down your entire computer! There are still some issues however.
- Game sounds won't play if you don't have the window focused (music will still play)
- Keyboard inputs outside of the game will make the game crash. This includes LiveSplit hotkeys.
- You cannot move, minimize or close the game's window. You can still easily kill the game through DxWnd or by typing something out of focus.
- You won't be able to click your main screen's taskbar until you restart the Windows Explorer Process in Task Manager. There is however a workaround for that last one. Using the following batch file you can tell DxWnd to start your game and automatically restart the explorer process 5 seconds later:
taskkill /f /im "PITFALL The Lost Expedition.exe"
taskkill /f /im DxWnd.exe
cd "C:\Program Files\DxWnd v2_05_52_build"
start "" DxWnd /R:0
ping -n 4 127.0.0.1 >nul
taskkill /f /im explorer.exe
start explorer.exe
Autosplitter and Load remover
To use it, simply edit your splits, and click "Activate". By default it'll automatically start and split on loads and Pusca hitting 0 health. If you choose to automatically start, make sure to configure your splits to start the timer at 1.35 to compensate for the time between pressing "New Game" and the first load!
For 100% runs, there's also an option to split on idol/explorer collection and Shaman
Since the autosplitter offers a load remover, don't forget to use and show BOTH the Real time and "Game time" (loadless) timers! (there's no rule enforcing it at the moment, but you may as well futureproof your run, with wildly variable load times and an easy to use load-remover, it's only natural PC runs will migrate to loadless/IGT).
Using a DirectInput controller
For this guide, I will be using the Mayflash Adapter. But any DirectInput Adapter or controller should work. Configurations might differ.
-
Download and open x360ce, you will need to keep this application open, but minimized, as long as you're playing.
-
Click "Add..." select your Mayflash Adapter Port and click "Add Selected Device". The device interface number (MI) is inverse to the port number. So for port 1 you want MI_03.
-
Configure x360ce and Pitfall as such:
Note that PC requires a dedicated button to swap items. On a regular controller I would simply map to Right Joystick Click, but the GameCube is lacking in available buttons. For that reason I have opted to disable both "Look" and "Sneak" actions (not used in speedruns) and use Z as the "Toggle Item". Note that the D-Pad is a digital Axis, not a button, so it's not usable as-is.
You can copy the following then click on "Paste Preset" to have the same x360ce configuration: <PadSetting> <PadSettingChecksum>1ce75d11-41f4-3fb9-f2b6-16537193edee</PadSettingChecksum> <ButtonA>2</ButtonA> <ButtonB>1</ButtonB> <ButtonBack>8</ButtonBack> <ButtonStart>10</ButtonStart> <ButtonX>3</ButtonX> <ButtonY>4</ButtonY> <DPad>p1</DPad> <GamePadType>1</GamePadType> <LeftMotorPeriod>60</LeftMotorPeriod> <LeftShoulder>5</LeftShoulder> <LeftThumbAxisX>a1</LeftThumbAxisX> <LeftThumbAxisY>a-2</LeftThumbAxisY> <LeftTrigger>a4</LeftTrigger> <RightMotorPeriod>120</RightMotorPeriod> <RightShoulder>6</RightShoulder> <RightThumbAxisX>a6</RightThumbAxisX> <RightThumbAxisY>a-3</RightThumbAxisY> <RightTrigger>a5</RightTrigger> <ButtonADeadZone>8192</ButtonADeadZone> <ButtonBDeadZone>8192</ButtonBDeadZone> <ButtonBackDeadZone>8192</ButtonBackDeadZone> <ButtonStartDeadZone>8192</ButtonStartDeadZone> <ButtonXDeadZone>8192</ButtonXDeadZone> <ButtonYDeadZone>8192</ButtonYDeadZone> <LeftThumbButtonDeadZone>8192</LeftThumbButtonDeadZone> <RightThumbButtonDeadZone>8192</RightThumbButtonDeadZone> <LeftShoulderDeadZone>8192</LeftShoulderDeadZone> <RightShoulderDeadZone>8192</RightShoulderDeadZone> <DPadDownDeadZone>8192</DPadDownDeadZone> <DPadLeftDeadZone>8192</DPadLeftDeadZone> <DPadRightDeadZone>8192</DPadRightDeadZone> <DPadUpDeadZone>8192</DPadUpDeadZone> </PadSetting>
- You may need to calibrate your controller (my joysticks only reached 87% range). For that, click on "DXTweaks", and make sure that the values under "Calibration" match what you get under "Raw" when you move your joysticks completely left or right.