the cutting room mirror

UFO 50

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.

UFO50_sIconEmpty_11.png UFO50_sIconEmpty_12.png

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

UFO50_sTermPilotBackup_0.png UFO50_sTermPilotBackup_1.png UFO50_sTermPilotBackup_2.png UFO50_sTermPilotBackup_3.png

UFO50_sTermPilot_0.png UFO50_sTermPilot_2.png UFO50_sTermPilot_3.png

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.

References#


  1. https://store.steampowered.com/app/1147860/UFO_50/↩︎