Debug Mode#
In "gml_GlobalScript_scrInit" is a variable "global.debugOn" which is normally set to false and is never changed by any other code. Modifying the game to set it to true will enable a lot of extra debug functionality in all of the games, and several extra messages in the logs.
Pressing F10 in nearly any instance with debug mode enabled will close UFO 50 entirely.
Library Controls#
The following controls apply when on the library menu:
- 0: Toggles input recording mode; see below.
- 1: Opens the profile debug menu; see below.
- 7: Loads Miasma Tower's Godsblood "prototype". (Music isn't reset, so the library's music will continue to play over it.)
- 8: Intended to convert unencrypted, individual language JSON files in the appdata folder, into modifiable CSV files; one for each of the 51 games (including Miasma Tower), a library one, and a "meta" one. Displays a Windows dialog box when it's done. Just writes blank files if the files don't exist.
- 9: Converts said CSV files back into encrypted JSON files. Displays a Windows dialog box when it's done. Does nothing if the files made by the previous option don't exist.
Input Recording#
Pressing 0 with debug mode enabled while in the library starts the input recorder. If done successfully, there will be "RECORDING" text in the upper-left of the screen.
After selecting a game, it will start to record inputs. Pressing the MENU key writes all inputs to a file called "[internal game id]_AttractMode.txt", as code which can be copied directly into GameMaker. This writes from the last time the MENU key, or from the beginning of recording if it was never pressed while recording. Enabling this mode temporarily disables all profile progress, but it is reloaded when the mode is toggled off. This appears to be what the developers used for recording their attract mode demos.
This can also be disabled by pressing 0 while in the library again.
Profile Debug#
Pressing 1 with debug mode enabled while in the library opens a debug menu which can alter the state of the currently selected profile. UP/DOWN changes which option is selected, BUTTON I activates the current selection, while BUTTON II quickly exits back to the library.
- OPEN ALL CARTS: Un-dusts all of the games; convenient for skipping animations on a new profile.
- GOLD ALL CARTS: Unlocks the Trophy condition for all games.
- CHERRY ALL CARTS: Unlocks the Cherry condition for all games.
- MAX OUT TIME PLAYED: Directly sets play time to 9999 hours. (While it's called "max out", it will continue to increment higher than this.)
- RESET: Can reset Steam achievements & in-game milestone status. What kind of achievements get reset can be changed by pressing RIGHT on this option:
- CHEEVOS AND MILESTONES: Resets both Steam achievements and in-game milestones.
- MILESTONES ONLY: Only in-game milestones.
- STEAM CHEEVOS ONLY: Only Steam achievements.
- EXIT: Exits back to the library.
- A grid that lets you toggle individual game progress. Each character corresponds to the games on the library menu (in CHRONOLOGY order). UP/DOWN/LEFT/RIGHT navigate which cell is selected. BUTTON I increases game progress value, wrapping around to 0 after reaching the limit. The values mean the following:
- .: Never played. Once the game has been dusted off, it can't be re-dusted by this menu.
- 0: Played, aka blue cart.
- 1: Got Trophy, aka gold cart.
- 2: Got Cherry, aka red cart.
- X: Can be technically be displayed if the library menu is modified to remove games, but this doesn't happen in the final.
The text at the very bottom determines Steam connection status. "STEAM READY!" is displayed if Steam is connected, and "STEAM NOT READY..." otherwise. Steam achievements are unaffected by the RESET command if Steam is not connected.
Garden Controls#
The following controls apply in the library when viewing the Garden:
- 0: Toggles displaying the pet debug HUD (see below), as well as red dots indicating where Buddy's movement nodes are at.
- 1: Increases Buddy's hunger need by 100.
- 2: Temporarily sets up the items that interact with the tree (Cow, Fruit, Monkey, Owl).
- 4: Increases Buddy's poop need by 100.
- 5: Resets most of the Garden's state; Buddy's state is reset, their position is moved, and all of the items are recreated.
- 6: Increases Buddy's speed if ever pressed. Also increases their state counter by 10000, so pressing it while they're doing something else will immediately finish their current action.
- 7: Toggle between the tree's different states. (Unfortunately, the Godsblood library debug shortcut forgot to check for the Garden being viewed, so this is always interrupted.)
- 8: Temporarily sets up the Garden as if the game was 100% completed. Does not affect the save file at all.
- 9: Increases Buddy's fatigue by 100.
When the pet debug HUD is enabled, it displays the following:
- STATE: A number representing Buddy's current state.
- SUB: A number representing Buddy's current sub-state.
- COUNTER: The time Buddy has spent in their current state.
- DEST: The name of the node that Buddy is pathfinding to.
- NEXT: The name of the node that Buddy is going towards in order to reach DEST.
- NEED: A number representing what Buddy wants to do.
- FATIGUE: Once high enough, Buddy will need to sleep.
- HUNGER: Once high enough, Buddy will need to eat.
- POOP: Once high enough, Buddy will need to go.
Game Controls#
The following controls apply when playing ANY game, but NOT in the library:
- 0 while on a title screen: Instantly play the attract demo.
- R: Restarts the current "room". What exactly this means depends on how each game is programmed; might restart that game entirely, restart a single stage within a game, etc.
- F1: Restarts UFO 50 entirely. This appears to have been left in a buggy state, as it crashes when attempting to return to the profile selection screen.
- Numpad -: Changes the FPS to 5; aka, slow motion.
- Numpad +: Changes the FPS back to 60.
Each game may have their own additional controls in addition to these, which are documented on each games' sub-page.
Pause Controls#
The Pause menu has several controls, which instantly input and execute the Terminal codes for Miasma Tower.
- 1: Inputs "EXEC-MIAS" (basement)
- 2: Inputs "HIDE-HOLE" (closet)
- 3: Inputs "SOAP-STOP" (bathroom)
- 4: Inputs "0229-1988" (games room)
Note that these are set-up to function when the Pause menu is open in general, NOT when the Terminal is open specifically. UFO 50 will crash when pressing these keys in other parts of the Pause menu.
Other Variables#
A couple additional global variables exist in the code which allow for quicker testing, which are never set by the game otherwise, and many of which only work when debug mode is also turned on.
- PROFILE_PRELOAD, when set to non-0, forces the game to use a particular profile ID, and skips the profile select screen. Can be 1 to 3 to test with a user profile slot, or 4 to test the "-arcade" parameter profile. Attempting to switch profile in the pause menu will go back to the library menu instantly.
- QUICK_PLAY, when set to non-0, immediately opens a game by it's internal game ID (see below) on launch, skipping past the intro and library screens entirely. Attempting to go back to the library closes the game instead. If PROFILE_PRELOAD is also set, that profile will be used, otherwise it loads profile 1.
- SKIP_INTRO skips the UFO 50 Recovery Team "cracktro" at the start, going directly to the title screen. It is set by QUICK_PLAY, but it also functions on its own.
- SKIP_GAME_INTRO skips the UFOSOFT logos at the start of some games.
- EXCLUDE_ABSENT_GAMES disables cart filters, and doesn't show unimplemented games on the menu. Possibly could have been used when demoing the game publicly before every game was finished.
Internal Game Order#
Each game has its own internal ID, separate from the order suggested by the Chronology filter. This may suggest the order in which the games had actually started development, with the fictional "release order" of the games not directly correlating to this. Each games' assets are also named after a working title, which is sometimes different from their final name.
The Godsblood prototype has a peculiar ID of "35b" for its assets. This game is seen in early trailers, and suggests that its files were replaced sometime during development before being re-added for Miasma Tower.
Internal ID |
Internal Name(s) |
Release ID |
Release Name |
|---|---|---|---|
01 |
Sacrifice |
0032 |
Mortol II |
02 |
Armies |
0009 |
Attactics |
03 |
UFO |
0017 |
Campanella |
04 |
Camo, Camouflage |
0016 |
Camouflage |
05 |
Diabolika |
0010 |
Devilition |
06 |
Golfania |
0018 |
Golfaria |
07 |
GravGuns |
0029 |
Vainger |
08 |
UFO_VR, UFOVR |
0049 |
Campanella 3 |
09 |
FistHell |
0033 |
Fist Hell |
10 |
SubHunt |
0022 |
Porgy |
11 |
Mooncat |
0013 |
Mooncat |
12 |
Cowboys, Brimstone |
0040 |
Grimstone |
13 |
TrainRobbery |
0028 |
Rail Heist |
14 |
QuibbleRace |
0047 |
Quibble Race |
15 |
Fragile |
0007 |
Velgress |
16 |
Warptank |
0020 |
Warptank |
17 |
VertShmup |
0039 |
Star Waspir |
18 |
Blokkle |
0015 |
Block Koala |
19 |
Divers |
0027 |
Divers |
20 |
ArenaRun |
0002 |
Bug Hunter |
21 |
WalrusHopper, Waldorf |
0021 |
Waldorf's Journey |
22 |
BushidoBall |
0014 |
Bushido Ball |
23 |
Pingolf |
0031 |
Pingolf |
24 |
Rakshasa |
0038 |
Rakshasa |
25 |
AntWar |
0046 |
Combatants |
26 |
Soccer |
0011 |
Kick Club |
27 |
Parade |
0005 |
Magic Garden |
28 |
Ufoparty |
0019 |
The Big Bell Race |
29 |
SacrificeI, Sacrifice |
0006 |
Mortol |
30 |
Overbold |
0034 |
Overbold |
31 |
Elfazar |
0043 |
Elfazar's Hat |
32 |
Onion |
0023 |
Onion Delivery |
33 |
DiscLords, MarbleHeroes |
0041 |
Lords of Diskonia |
34 |
Ninja, Ninpek |
0003 |
Ninpek |
35 |
DunSlash |
0037 |
Valbrace |
35b |
Godsblood |
0229 |
Godsblood |
36 |
PartyKing |
0025 |
Party House |
37 |
Incremental |
0044 |
Pilot Quest |
38 |
UFO_II, UFO2 |
0035 |
Campanella 2 |
39 |
NightManor |
0042 |
Night Manor |
40 |
Traps |
0001 |
Barbuta |
41 |
Infinitesimal, Infinite |
0045 |
Mini & Max |
42 |
PlatformGladiators |
0036 |
Hyper Contender |
43 |
HotFoot |
0026 |
Hot Foot |
44 |
DinoDefense |
0030 |
Rock On! Island |
45 |
CyberOwls |
0050 |
Cyber Owls |
46 |
PhotoShoot |
0024 |
Caramel Caramel |
47 |
SeasideDrive |
0048 |
Seaside Drive |
48 |
Zoldath |
0008 |
Planet Zoldath |
49 |
PaintRacer, PaintChase |
0004 |
Paint Chase |
50 |
DinoGods |
0012 |
Avianos |
51 |
UfoTower, MiasmaCity |
0051 |
Miasma Tower |
Unused Graphics#
Library#
"RopeChamps" Icon#
The icon for a game referred to as "RopeChamps", which otherwise doesn't exist in the final game at all. This graphic doesn't have the dark, monochrome palette version for dusty game carts.
Game Carts#
|
Early |
Final |
|---|---|
|
|
|
There is a slightly older version of the selectable game cartridge as an extra animation frame in the main cartridge sprite. The only difference between this and the final version is that there is less shading on the bottom part of the cart.
Additionally, there is another unused design for the cartridge, which is more square. There's also a variant of it with a "2P" sticker on the bottom of it. This could have been a way to denote which games had a 2P mode before the multiplayer filter was added.
Options#
A large neon green wrench with a blue outline. The name "sIconOptions" is a similar naming scheme to the library's game icons, which may suggest that the options menu could have been accessed from the library; in the final game, options can be accessed by pausing anywhere.
Terminal#
Background#
|
Unused |
Used |
|---|---|
|
|
|
An older version of the Terminal background. Instead of the LX Systems logo at the top, there is the grasshopper leg logo on the right.
Buddy#
|
Unused |
Used |
|---|---|
|
|
|
Buddy on the Terminal screen is labeled as "sTermPilot" internally. The original sprites were kept in "sTermPilotBackup", revealing that it used to be based on Pilot Quest's player sprites at one point.
Buddy still technically has a "walking" animation while idle, but it was dummied out by duplicating frames.
Revisional Differences#
- First released version (1.1.3?) had holes in clipping in some areas in Miasma Tower allowing out of bounds, originally called it "ufo tower" in info but updated.
- Later revisions fix typos (like "
SUPRISE"), move punctuation into quotes (TEXT LIKE "THIS."), as well as other assorted bug fixes. - Some names changed in in-game credits.