Proto:Theme Hospital/1995 Rolling Demo
This is a sub-page of Proto:Theme Hospital.
Released as part of a "Christmas Demo" pack from Bullfrog that was included on the coverdisc of magazines such as PC Zone Issue 37.
Contents
General Differences
Various parts of a pre-alpha build of the game are demonstrated, including limited use of the early "pin board" UI style seen in many pre-release screenshots. The demo content varies from simple scenes with large numbers of NPCs on screen, to how the room creation UI works to glimpses of actual gameplay with patients being treated by Doctors and waiting in the corridors. Unlike the later rolling demo from 1996, this one runs on the games' actual engine, and as such includes many cut graphics and other files that are not actually visible if the demo is played through. As with the Syndicate Wars pre-alpha Demo, this demo works by replaying a series of pre-recorded actions. Revealingly, the player can interrupt and take limited control by moving the mouse during playback. This will then cause the demo to fail on replay of the next sequence of the demo.
The demo begins with text promising that the final game will feature "4 locations" and "4 time periods", the latter concept of course scrapped in the final game for a modern setting.
The first actual game scene seems to simply demonstrate the large number of on-screen NPCs the game can handle, showing various patients milling around, most interestingly including the Black and Asian Bloaty Heads that are cut from the final game, as well as lots of female patient designs that were also cut.
Next is a demonstration of how rooms are created. This scene demonstrates a large number of cut interface ideas. At this stage of development, it seems rooms start as generic structures, rather than each room having a specific purpose and therefore set size and components. The following can be observed:
- The player clicks on the "blueprint" button in the bottom menu. It seems this instantly puts the game in room creation mode
- Two empty rooms are placed. Door and window placement works as in the final game based on context and order (door first), rather than using the "fold-out" menu seen in pre-release screenshots and videos
- Once the doors and windows are placed, they turn into generic empty rooms. These have a decorators' pasting table covered in wallpaper, paste, and paint in them
- These empty rooms use the bare floorboards tile that is present but unused in the final game
- A spinning 'i' icon hangs above each of these tables, alternating between this and a '?' icon as it spins round
- Once the room menu is used to define the room and start placing objects, the decorators' table disappears and the bare floor gets replaced with carpet
- Items are placed in the room. This part uses an early room item UI design that is somewhat similar to the final game's. Many boxes that should clearly have values such as prices in on the UI are empty.
The fold-out UI design for windows and doors is revealingly not triggered in this scene despite the graphics being included in the files. That the demo places windows and doors in the way the final game behaves, and that it shows an early version of the final game room items pop-up interface suggests this original design UI was already cut and on the way to being completely replaced, something more or less confirmed by the recent hacking of the demo to allow player control.
After this, various scenes of patients being treated play. These are less interesting, but visible are the cut wall charts in various rooms, more unused female NPC variations, and extra long windows on exterior walls.
Restoring Player Control
As with the Syndicate Wars pre-alpha demo, it's possible to hack the demo into being playable.
If the SAVE directory is set to read-only, the demo will fail to playback correctly (the mouse movement recordings are located here in the format of PLAY.RX files), and the mouse pointer will simply constantly move to the top left of the screen, breaking the demo.
This behavior is controlled by two variables, which are set in function 0004a8a0 (the following addresses assume a code segment with start at 00010000 and data segment with start at 00080000):
; Enable playback of actions stored in recorded demo 0004ad28 c6 05 b5 MOV byte ptr [DAT_000956b5],0x1 56 09 00 01 ... ; Disable player mouse control 0004ad39 c6 05 b6 MOV byte ptr [DAT_000956b6],0x0 56 09 00 00
Therefore, patching the first instruction to set value 0x0 disables playback of actions, and patching the second instruction to set value 0x1 enables player mouse control.
This function also iterates through a list of file indexes stored at 0008fa9a. We can zero out all indexes of the first introductory screens, so that after the logo screen, we jump straight into the recorded demo.
However, if the player presses any key during playback, the demo exits. This is due to a hardcoded check in function 000120d0, which parses the pressed key, but instead of calling the corresponding handlers, it sets a variable that exits the game main loop:
; DAT_002d0910 stores the key value, which is 0x0 if no key is pressed 00012122 80 3d 10 CMP byte ptr [DAT_002d0910],0x0 09 2d 00 00 ; If value = 0x0, jump to handlers. However, the handlers expect a ; key value != 0x0, therefore none will be called. 00012129 74 0e JZ LAB_00012139 ; Else value != 0x0, set game main loop variable to exit game 0001212b 66 c7 05 MOV word ptr [DAT_000956ac],0x1 ac 56 09 00 01 00
Therefore, we can change the condition to take the jump if value != 0x0, and set game main loop variable to 0x0, so that the game doesn't exit if no key is pressed.
In summary, all these steps can be performed by patching the following file offsets:
00025d29 = 75 ; don't skip key processing when key is pressed 00025d32 = 00 ; don't end main game loop when key is released 0005e92e = 00 ; disable playback of actions from replay file 0005e93f = 01 ; enable player control 00094690..000946f4 = 00 ; skip loading .LBM files before first replay
The below script will apply these patches:
Download Theme Hospital (1995 Rolling Demo Patch)
File: ThemeHospital1995RollingDemo-Patch.zip (2 KB) (info)
|
Under player control, the game attempts to load file SAVE/HOSP.G0, which isn't present, resulting in an empty map. However, any of the HOSP.G* files can be copied over.
Controlling the Demo
With control restored, it's now possible to see exactly how this build of the game functioned beyond what was carefully selected to be demonstrated by Bullfrog themselves.
Control of the demo reveals that some of the behaviours observed are smoke and mirrors. The patient on the cardio treadmill never finishes running, and other patients never enter the room. The patients in ward beds are actually static graphics and cannot get in/out of bed. However, a lot of the basic AI functions are in place, GP offices seem to work correctly, as does the Scanner. Patient AI is at a basic but functioning level, patients outside of rooms seem to just gravitate to the closest useable item, and otherwise just mill about. If near the receptionist they will walk over and the early iteration of the receptionist will perform a basic animation of typing on her computer before gesturing at the patient and the patient walking away. Patients will sit down on benches if placed, will try and enter the doctor's office if nearby, and will also use vending machines if close to them. Queueing works somewhat, but multiple patients often end up trying to access the same item and will endlessly walk backwards and forwards in a loop trying to avoid each other.
Triggering the advisor by pressing A also demonstrates the game really doesn't have a working palette for him. This further suggests this is a later build than the Bullfrog Progress video where these were working, and the early advisor and the pin board UI likely were being deliberately abandoned to be replaced with new revisions of these ideas.
Interface Changes
Trying to actually use the game's interface, it's pretty much confirmed that the UI design of the game was already moving on from the early "pin board" style exhibited to the less elegant but more functional designs of the later builds. While functional, the pin board control panel is already clearly deprecated as some essential functionality is only possible with keyboard controls, and the UI is clumsy to use compared to not only the final game UI but also the more functional keyboard shortcuts present in the demo (that are clearly being used by the demonstrator over using the UI). To use the pin UI, the player has to click and drag one of the pinned icons from the right side of the control panel to the empty area on the left (a neat effect that essentially "rips" the pinned object off the board). Letting go of the mouse button here then plays the folding out animation as shown below. Confusingly all of the menus must be scrolled by clicking the right mouse button on the arrows at each side. Of the three menus, the room creation menu is the most complete, but this also has some odd bugs not seen in the others. Firstly, the palette used for the actual menu icons is wrong. Secondly the left-hand arrow is misaligned, being placed too high in comparison to the right arrow or even the left arrow position in the other menus. Using the buttons gives little feedback, but clicking on the third icon along (the room with arrows in) puts the demo into room creation mode. Once a room blueprint is placed, it doesn't seem that the window and door buttons actually work, the player can only ever place a single door and window, and cannot seem to further move them once placed. Once a room is laid out, the fourth icon of an arrow pointing down completes a room. However, pressing this does not actually finalise the room. The room remains with no decoration (bare floorboards) and the item picker UI does not appear. The B key still needs to be pressed in addition to properly complete the room and make the pasting table appear to proceed to the item placement stage. The last icon in the menu was presumably to delete a placed room, but this doesn't work and doesn't even seem to have a keyboard equivalent command (it doesn't seem to be possible to delete rooms in the demo).
Once a room is placed, the game offers a choice of items that could be bought and then placed in the room. This doesn't actually seem to work properly, but the game does use the choice here as the basis for the core items it will force placement of once the selector is closed by pressing the two crates icon at the bottom (the other buttons do not work). This behaviour is already very like the final game and contrary to what the UI seems to indicate where it seems individual items can be chosen per room type, choosing anything in the top option "Emergency" results in a pre-canned forced selection of a doctor's desk, filing cabinet and patient chair exactly as when placing a GP's office as in the final game. The same behaviour occurs if anything in Radiology is chosen. If the Intensive Care room is chosen, the game places an inflation machine. If one of the lower sub items is chosen from the Intensive Care list, a half-working version of an inflator is placed where a headless patient and doctor will endlessly go through the first few frames of curing the bloaty head disease. The final rooms Day Clinic, Research, and Administration have no items in their lists so cannot be used as a room base. Clicking on the icons in the item placement screen also has odd effects - the bulldozer icon brings up the Intensive Care items list, and the X button brings up a subset of the Intensive Care items.
The pin board items menu is completely bare, with nothing to choose and seemingly no effect. Based on no pre-release coverage showing this, it looks like this was simply never finished and was already on the way out at the point of the demo, which already uses a newer pop-up UI for room items similar to that of the final game.
The staff menu works, but has limited functionality. Unlike in the Progress Report video, the staff icons don't have the rating stars behind them. All staff types (including the three cut types) are visible, but it's not possible to hire any of them other than basic doctors. If one of the doctor icons is clicked on, the player's mouse cursor will have a doctor hanging from it and an infinite number of doctors can be placed. Again, the right mouse button scrolls the arrows, not left.
The map icon does nothing, and cannot even be ripped off its pin, unlike the other icons. Based on the crude early map that can be triggered by the keyboard, it's likely any player facing map functionality simply wasn't implemented yet.
Unused Graphics
Presentation Screens
The demo has the following .LBM images included in the directory NEWDEMO that are not actually displayed:
DEMO2.LBM - What seems to be an unfinished template for the games' early Doctor logo. The character is not wearing glasses here, but two pairs are drawn next to him, presumably so the image could be customised. Compared to other uses of this art and the file DEMO7.LBM, this version is missing smoothing around the chest lines and also the doctor's syringe has no liquid in it.
Cut Graphics
The demo files contain the following graphics that are not present in the final game:
Fir Tree
Replaced in the final game with a different style of tree. This design does exist in the final game, but only as a tile with several other plants placed together, this standalone version was removed.
Wall Pieces with Mounted Fire Extinguishers
There are several versions of this same graphic with different palettes. In the final game fire extinguishers are separate objects that just sit on the floor. These don't even seem to be used in the demo itself.
Walls with Name Plaques
As well as the separate plaque sprite, there are wall segments with plaques already in place. Does not seem to appear in the demo.
Wall Plaque
Again, a very early feature seemingly removed even by the time of this demo, but visible in the files.
Wall Chart
As seen in the earliest screenshots and visible in the demo.
Pasting Table
Only the low resolution version of this file is included (but unused) in the final game. Used to furnish an unfinished room in this build of the game.
Spinning letter 'i'
The low resolution version of this is included in the final game's files. Used to draw the player's attention to the pasting table in a newly placed room in this early build of the game.
Spinning Question Mark '?'
The low resolution version of this is included in the final game's files. As with the letter 'i', Used to draw the player's attention to the pasting table in a newly placed room.
Coffee Table
A low height coffee table visible in wards in pre-release screenshots. The low resolution version of this is included (but unused) in the final games' files.
Reading Material
Various magazines, books, and newspapers intended to be placed on top of the coffee table, as seen in pre-release screenshots.
Bedside Cabinet
This is visible in one of the scenes in the rolling demo. However, the back plate for cabinets facing away from the camera is not seen. Below is a mock-up of it combined with the front facing cabinet graphic as it would have appeared in-game.
Receptionist Animations
Included in the file but not seen in the demo are these animations from the original iteration of the receptionist. Based on these graphics, pre-release screenshots and the second rolling demo, it seems this first iteration of the receptionist only had animations drawn for facing away from the screen before the idea of the dedicated reception room was scrapped and the simpler final game receptionist design was used instead. From watching the second rolling demo, the two pointing animations below were for greeting patients and pointing them to the correct hospital department, the other was for typing on a computer. Control of the demo shows she used the first frame of the pointing animation as her default idle state until approached by a patient.
Reception Desk
A lot of work was seemingly put into this early and vastly more complicated and space-consuming iteration of the receptionist desk.
Reception Desk Walls
These graphics are in the VBLK-0 files, used for external walls and ground tiles. However, two of the tiles from the set above are also reproduced in this file (not included here) These seem to be the mandatory core parts of the reception area structure.
Reception Desk Blueprints
Placement blueprints for the desk. implies that reception areas must have been built from long static segments between corner pieces/joins and was likely considered a room type. Note the entrance flaps have different shading, showing them to be considered "doors" for the room.
Reception Desk Flap
The animations for the entrance flaps for the desk. These flaps are not seen in action in any of the rolling demos, but can be seen in some of the pre-release screenshots of this build. Control of the demo shows that these animations do not play, NPCs simply walk through the flaps rather than them opening.
Reception Desk Accessories
Various items that would be placed on the desk, including several telephone designs, a visitors book, and computers. There is also an extended drawer graphic for the desks with drawers above. It's not clear why there are multiple telephone recolors - possibly they were intended for multiplayer. There are four corresponding phones facing away, but they are all white, so it seems this was abandoned early on. The front facing white phone is also off the hook.
Cut Staff Portraits
These are for the Staff Management screen, and can be seen in a very early pre-release screenshot. The demo includes what became the final game art for general Doctors, Nurses and Receptionists along with the below, so these are additional classes that once existed in the game.
Clearly the first is a Surgeon, so presumably they were an entire separate hireable class at one point rather than just a specialization of the basic Doctor. Next appears to be a Nurse (with literally the same face as the regular Nurse), but in surgical scrubs. Finally, there is what seems to be a Handyman, but with a very different uniform and overall smarter appearance. Based on the appearance here and the very earliest pre-release screenshots of the game (where similar figures are carrying a stretcher), this class seems to have been intended as some kind of orderly character that was changed to the final game's more generic Handyman.
Stars
These are found alongside the staff portraits, and can be seen in the Bullfrog progress report video which shows they were part of the cut fold-out staff hire UI. Presumably gold, silver and bronze were early versions of the staff rating system.
Plants
A planter and different style of pot plant. Neither of these have corresponding withered plant versions, so they were likely created before the plant watering mechanic had been instated. As such it's likely the introduction of this mechanic that led to the planter being cut and replaced with simpler pot plants. Based on pre-release images it seems the plant pot here was intended to be placed on top of things like desks and tables.
Shopping Bags
Graphics for what would presumably be a dropped carrier bag, and other ones in the hands of various kinds of patients
Bouquet of Flowers
Two different sets of flowers with a gap presumably for a hand to hold them.
Early Advisor Animations
To do: Try and find a working palette and rip these properly |
As in the final game, there are animations for the Advisor to pop up to grant some advice. However, in the demo files and as per early promotional artwork, the Advisor appears in his original Theme Park outfit, before his costume was redesigned to have a doctor theme. In fact, he appears twice - once in his Theme Park garb, but also dressed up in a bowler hat and glasses the same as the bank manager wears in the final game. Presumably he would wear this costume when popping up to offer advice on financial matters such as loans. Unfortunately, the palette used for these two images seems different to that used for the rest of the sprites, and the other palette file included with the game still does not look right, resulting in these graphics being a garbled mess. Both of these animations can be seen in the Bullfrog Progress Report video.
Unused UI Graphics
The demo also includes the complete set of interface graphics for the bottom "pin board" design, despite these animations oddly never being seen in the actual demo. The first "blueprint" set is complete, and includes several icons that would be displayed. The item order form and staff hiring UIs have their basic layout graphics, but no actual items are present in the demos' files. The fact that these interfaces are never seen in the demo suggests either a) they simply were not finished in time, but also b) based on the way the demo behaves where doors and windows are placed in the same way as the final game, and items are placed from a dedicated pop-up window, they were already cut.
The below animations are recreated based on the early pre-release screens of these animations, which are incomplete, so may be incorrect. The mid-animation frame in the pre-release shots also does not make sense as it shows the far left edge of the blueprint fold out further away from the edge of the box then it can possibly be for the next (and final) frame of the left edge folding out. It's therefore likely these were mocked-up screens and this entire design was never actually used in the game.
The staff fold-out menu seems to have been short-lived based on pre-release screenshots that already show a pop-up menu similar to the final game's UI with staff in for this build. However, the Bullfrog progress report video does show this and the room placement menus in action. Revealingly, the actual fold-out animation is never played, even when switching from the room placement to staff hire menu. There is no menu shown at all for room items.
The Room item menu has no object icons at all, and based on the lack of screenshots of them (and that all screenshots showing items being placed use a pop-up menu interface similar to the final game, as does this demo) it's likely this was abandoned before these were ever created.
The blueprint style set for creating rooms seems to be expecting a slightly different palette to that used by the demo itself. This means each part has a clearly incorrect turquoise area at the bottom. That the icon graphics (windows, doors, etc.) still look as in the pre-release shots with the same palette file show this is an error, and the color has been replaced based on these icons in the animations below.
Room Menu Graphics Examples with original Palette
Debug Stuff
Unused Console Output
A variable that controls the console output of some debug messages is initialized in function 00010010 with value 0x1. However, it is then compared with value 0x0 to bypass the output. We can restore it by modifying the condition to compare with value 0x1, by applying patch 00023f04 = 01
.
Output:
Hospital v0.0 SIZEOF THING STRUCTURE: 2150 SAVE GAME SIZE: 1106733
Unused Command Line Options
An unreachable switch-case statement that handles command line options is present in function 00010010. We can restore it by replacing the first jump instruction of that function to instead jump into this parsing logic, by applying patch 00023c30 = c0
.
These can be provided in format -x or /x, either lowercase or uppercase, with some also supporting a number parameter: /x-1 for negative, /x+1 for positive.
This needs some investigation. Discuss ideas and findings on the talk page. Specifically: Networking setup in function 0004dee0 formats some strings such as ADDING TESTER and CALLING TESTER , but these don't appear to be printed, may require patching. |
Options:
/c | Unused, sets unreferenced variable at 000953a6 |
/d | Unused, sets unreferenced variable at 000953c8 |
/e | Loads Map Editor |
/f | Loads Complex Editor, but crashes the game. Likely due to missing a call to function 00022e40, which is done when this editor is activated in-game |
/g+1 | Loads HOSP.G1 |
/l+1 | Loads level.l1 |
/m | Switches the default video mode (101h, 640x480) with a lower resolution video mode (13h, 320x200). However, it attempts to load missing graphics files, and crashes the game after the logo screen |
/n+2 | Enables networking between two peers if value >= 2. Communication is done with NetBIOS over IPX, which can be emulated with two DOSBox instances. The game exits if NETBIOS.EXE is not found on the game directory. If this option is used along with /s+0, NetBIOS names for each peer are HOSP00 and HOSP01. The implementation appears to be buggy, since both peers print on screen --------OUT OF SYNC---------- , although some actions are synced: loading a level with Shift + n updates the map position on both peers, and Shift + Esc also exits the game on both peers.
|
/o | Unused, no-op |
/p+1 | Enables playback of file SAVE/PLAY.R1 |
/q | Enables console debug output, although it requires a patch |
/r+1 | Enables recording to file SAVE/PLAY.R1, however it only appears to allow player control, unknown if any recording is actually written. |
/s+0 | Sets the NetBIOS name prefix HOSP0, used along with option /n. |
/x+1 | Tests shift operations applied on the given number. First operation is a Shift Arithmetic Right (SAR) with expression (x & 0xff) >> 8 , which will always return 0. Second operation is a Shift Logical Right (SHR) with expression (x >> 8) & 0xff . For example, if we pass /x+256, we get the following output:ANSWER IS 0 OTHER ANSWER IS 1 |
In-Game Screen
When taking screenshots, these are stored under directory scrshots, which isn't present. Therefore, make sure you create it beforehand.
It's possible to activate editors from the in-game screen, but due to buggy behavior, they only show up after toggling the Progress Report screen.
This needs some investigation. Discuss ideas and findings on the talk page. Specifically: Check if recording can be activated, since there is code to handle that function. |
Controls:
F1 | Toggles Progress Report screen |
1 | Create a peep |
Shift + 1 | Create a peep at mouse position |
2 | Enter room creation mode (click+hold mouse button to place blueprint) |
5 | Create a peep on mouse click |
8 | Place a room object |
9 | Place a decorative object |
a | Plays advisor animation |
b | Complete all rooms in Blueprint mode on the map |
e | Open map editor |
f | Open complex editor |
i | Draw bounding boxes around objects |
m | Build Reception desk (click+hold mouse button to place blueprint) |
p | Pauses animations |
t | Blacks out screen and creates picture-in-picture window |
Keypad + | Creates Picture-in-picture windows. Can be used in conjunction with t. Windows can be resized with mouse. Last clicked window can be scrolled with cursors/mouse. Click in main window to scroll that view again. Toggling map editor removes windows |
. | Toggles the Town Map screen |
Alt + c | Takes a screenshot and saves in scrshots\HOSP001.LBM |
Alt + r | Loads level.l0 tiles. However, this file isn't present in the demo. Attempting to copy over a level from a later version loads garbled tiles, likely due to differences in the level format. |
Alt + l | Loads HOSP.G0 |
Alt + s | Saves HOSP.G0 |
Shift + n | Loads level.l0 |
Shift + Esc | Exits the level |
Map Editor
Controls:
Right-Click on panel | Scrolls to next/previous entries |
Left-Click on panel | Selects tile |
Left-Click on ground | Places tile |
f + Right-Click on ground | Fills the ground with the selected tile |
u | Undo placed tile |
Unused Functions
Located near the map editor's initialization function 0002d5d0, there are 2 unreferenced functions that add additional debugging functionality. These can be activated by replacing the return instruction of function 0002d5d0 with a jump instruction to either one of those unreferenced functions. To do so, apply one of the following patches at the corresponding file offset:
- Function 0002d700:
000412fa = e9 01 00 00 00
- Function 0002dd00:
000412fa = e9 01 06 00 00
Function 0002d700 adds both a debug display and an overlay mode, where a flashing white rectangle represents the mouse position. The player can place marks on the overlay. Additionally, the top panel has visible buttons when the overlay is active. These buttons can also be activated without the overlay, even though they aren't rendered.
Controls:
1 | Clears mark |
2 to 5 | Places different styles of marks |
7 | Toggles overlay |
8 | Places a large mark |
Function 0002dd00 only adds a slightly different debug display.
Complex Editor
The Complex Editor is where the game's disparate animations were combined to create coherent behaviors for the game's characters, as demonstrated in the later rolling demo.
Some functions load and save files under directory CDATA, which isn't present. Therefore, make sure you create it beforehand.
This needs some investigation. Discuss ideas and findings on the talk page. Specifically: Menus appear to be mostly broken, check if there are associated functions and if they can be fixed. |
Controls:
Right-Click on panel | Scrolls to next/previous entries |
Left-Click on panel | Selects object |
Left-Click on ground | Places object |
1 | Increases HEAD variable |
2 | Increases BODY variable |
3 | Increases SHOES variable |
4 | Increases ACCESS variable |
5 | Increases SPECIAL variable |
F1 | Loads bottom panel entries with peep animations |
F2 | Loads bottom panel entries with objects |
c | Closes sub-menu |
e | Hides objects |
r | Reveals objects |
n | Input FUNCTION NAME |
p | Switches to CDATA/CTHING_P.d* save file |
s | Switches to CDATA/CTHING_S.d* save file |
Shift + Delete | Deletes objects |
Shift + f | Exits the editor |
Up / Down arrow keys | Loads the next/previous save file under CDATA |
Unused Main Menu
Function 00035130 checks for left and right mouse clicks while the complex editor is active. However, it then calls functions that were compiled as no-ops. Near these functions, there's the unreferenced function 000353e0 that sets up a main menu with some available actions.
We can activate this menu on right mouse click with this patch:
00048dab = 31 00048dac = 02 00049050 = 08
Development-Related Text
Complex Editor Main Menu Entries
Menu entries start at file offset 0009280D.
PLACE STAFF PEOPLE FILE & UTILS OPTION5 OPTION6 RETURN TO GAME EXIT GAME
STAFF PATIENTS OBJECTS MAIN MENU
LIST FUNCTIONS NEW FUNCTION CHANGE FUNCTION ADD ACTION REMOVE ACTION DELETE FUNCTION MAIN MENU
LIST FUNCTIONS NEW FUNCTION CHANGE FUNCTION ADD ACTION REMOVE ACTION DELETE FUNCTION MAIN MENU
LOAD STAFF SAVE STAFF LOAD PEOPLE SAVE PEOPLE WRITE PBM MAIN MENU
Menus/Defined Animations List
Starts at file offset 0008A3BD.
Desk Cabinet Door Bench Chair Drinks 1 Bed 9 10 11 12 13 14 15 cX ÈNull GOTO OBJECT PLAY ANIMATION SETUP EXIT COMPLEX XX ST - DOCTOR_IN_OFFICE ARRIVE AT OBJECT LEAVE OBJECT ADVANCE OBJECT 1 FRAME XX XX Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null Null !Null "Null #Null $Null %Null &Null 'Null (Null )Null *Null +Null ,Null -Null .Null /Null 0Null 1Null 2Null 3Null 4Null 5Null 6Null 7Null 8Null 9Null :Null ;Null <Null =Null >Null ?Null @Null ANull BNull CNull DNull ENull FNull GNull HNull INull JNull KNull LNull MNull NNull ONull PNull QNull RNull SNull TNull UNull VNull WNull XNull YNull ZNull [Null \Null ]Null ^Null _Null `Null aNull bNull cNull dNull eUNUSEABLE - Goto Desk fUNUSEABLE - Goto Cabinet gUNUSEABLE - Goto Door hUNUSEABLE - Goto Bench iUNUSEABLE - Goto Chair jUNUSEABLE - Goto Drink1 kUNUSEABLE - Goto Bed lUNUSEABLE - Goto 9 mUNUSEABLE - Goto 10 nUNUSEABLE - Goto 11 oUNUSEABLE - Goto 12 pUNUSEABLE - Goto 13 qUNUSEABLE - Goto 14 rUNUSEABLE - Goto 15 sUNUSEABLE - NE tUNUSEABLE - SIT DESK uUNUSEABLE - WORK DESK vUNUSEABLE - LEAVE DESK wUNUSEABLE - A_ST_USE CAB
A second table of animations found at file offset 0008A6E3.
Null GOTO OBJECT PLAY ANIM CHOOSE ANIM SET EXIT SEQ FACE OBJECT MAKE PERSON WAIT PERSON SITS ARRIVE AT OBJECT LEAVE OBJECT ARRIVE DOOR LEAVE DOOR GOTO OBJECT - DEST SET Null Null ST PERSON_GONE ST PERSON_AT_DOOR ST PERSON_IN_QUEUE SP PERSON THROUGH DOOR ST PERSON_WAITS ADVANCE OBJECT BY FRAME Null Null Null Null Null Null Null Null Null Null Null Null Null !Null "Null #Null $Null %Null &Null 'Null (Null )Null *Null +Null ,Null -Null .Null /Null 0Null 1Null 2Null 3Null 4Null 5Null 6Null 7Null 8Null 9Null :Null ;Null <Null =Null >Null ?Null @Null ANull BNull CNull DNull ENull FNull GNull HNull INull JNull KNull LNull MNull NNull ONull PNull QNull RNull SNull TNull UNull VNull WNull XNull YNull ZNull [Null \Null ]Null ^Null _Null `Null aNull bNull cNull dNull eUNUSEABLE - Goto Desk fUNUSEABLE - Goto Cabinet gUNUSEABLE - Goto Door hUNUSEABLE - Goto Bench iUNUSEABLE - Goto Chair jUNUSEABLE - Goto Drink1 kUNUSEABLE - Goto Bed lUNUSEABLE - Goto 9 mUNUSEABLE - Goto 10 nUNUSEABLE - Goto 11 oUNUSEABLE - Goto 12 pUNUSEABLE - Goto 13 qUNUSEABLE - Goto 14 rUNUSEABLE - Goto 15 sUNUSEABLE - Anim CHECKIN tUNUSEABLE - Anim KNOCK uUNUSEABLE - Anim BUY DR vUNUSEABLE - Anim SIT1 wUNUSEABLE - Anim SIT2 xUNUSEABLE - Anim SIT3 yUNUSEABLE - Anim ENTER DO zUNUSEABLE - Anim EXIT DO {UNUSEABLE - Anim STAND |UNUSEABLE - Anim SITTING }UNUSEABLE - Anim GET UP ~UNUSEABLE - Face Desk UNUSEABLE - Face Cabinet €UNUSEABLE - Face Door UNUSEABLE - Face Bench ‚UNUSEABLE - Face Chair ƒUNUSEABLE - Face Drink1 „UNUSEABLE - Face Bed …UNUSEABLE - Face 9 †UNUSEABLE - Face 10 ‡UNUSEABLE - Face 11 ˆUNUSEABLE - Face 12 ‰UNUSEABLE - Face 13 ŠUNUSEABLE - Face 14 ‹UNUSEABLE - Face 15
Several labels and filenames at file offset 00084DEC.
CEDITOR BACKED UP %SAVE/HOSP.R%d tisave/HOSP.g%d ].save/level.l%d COMPLEX RETRY OCCURRING PEEP %d COMPLEX RETRY OCCURRING PEEP %d %d èEDITOR LEVEL %d Owner Status %d üSAVING MAP DETAILS X=%d,Y=%d timap_pos=%d %MouseX=%d MouseY=%d cdMOUSE LOCKED LBM************** EDITOR : LEVEL %d ************** save/back.g%d ELsave/level.l%d t******* %d ******** %d ***** %d *********** os=NOTHING MORE TO UNDO =%dNOTHING MORE TO REDO ***PUT LINE * ECOPY : CUT PASTE **FILL ***UNDO REDO PLACE üSTAFF üPEOPLE üFILE & UTILS üOPTION5 OPTION6 RETURN TO GAME *EXIT GAME HPATIENTS TO OBJECTS MAIN MENU T LIST FUNCTIONS NEW FUNCTION ILLCHANGE FUNCTION ADD ACTION FREMOVE ACTION LEDELETE FUNCTION 6 LOAD STAFF ASAVE STAFF MLOAD PEOPLE SAVE PEOPLE WRITE PBM DETAIL FOR FUNCTION %d DELETED CHANGES HAVE BEEN MADE - SHIFT + ESC TO RETURN TO GAME WITH NO CHANGES NDESTINATION STORED AS CELL %d - PRESS D TO SET DESTINATIONS DESTINATION RESET FOR %d STAFF CDESTINATION RESET FOR %d PEEP(S) N MCHANGES HAVE BEEN MADE - SHIFT + F TO RETURN TO GAME WITH NO CHANGES N SDISK ERROR - UNABLE TO SAVE FUNCTION %d SAVED - COMPLEX TABLES SAVED FOR STAFF & PATIENTS RDISK ERROR - UNABLE TO SAVE FUNCTION %d DISK ERROR - UNABLE TO SAVE FUNCTION %d DISK ERROR - UNABLE TO SAVE FUNCTION %d DISK ERROR - UNABLE TO SAVE FUNCTION %d à¿ 0@ à? à¿ 0@ à? à¿ 0@ à? à¿ 0@ à? à¿ 0@ à? à¿ 0@ à?hosp - FUNC %d NEW P FUNC %d à¿ 0@ 4@ à? $@ à¿ 0@ 4@ à? $@ à¿ 0@ 4@ à? $@ à¿ 0@ 4@ à? $@NEcdata/CTHING_S.d%d ¿cdata/CTHING_P.d%d cdata/S_COMP.BAK data/S_COMP.LEX cdata/S_COMP.TXT cdata/S_COMP.LEX 4@w %d, // %s à¿ #define %s @%d S_COMP.LEX @cdata/P_COMP.BAK d%ddata/P_COMP.LEX cdata/P_COMP.TXT P.Bcdata/P_COMP.LEX P_COMP.LEX .cdata/PREF.CED PNULL ACTION COMPLEX EXIT BRANCH TO FUNCTION %d %FINDOBJECT %s DO %d DODETAIL %d NEWSTATE %d COUNT %d REPEAT %d datFINDOBJECT %s DO %d DODETAIL %d NEWSTATE %d COUNT %d REPEAT %d LEXFINDOBJECT %s DO %d DODETAIL %d NEWSTATE %d COUNT %d REPEAT %d TE FINDOBJECT %s DO %d DODETAIL %d NEWSTATE %d COUNT %d REPEAT %d NEWMODE : STAFF UNTMODE : PEOPLE d FUNCTION NO : %d DACTIVE THINGS : %d FUNCTION NAME : %s TBRANCH TO F%d %s E F_ DOR EC* %sFUNCTION NAME : %s%s d FUNCTION %d DETAIL LOADED UNABLE TO LOAD FUNCTION %d DETAIL P//*S* *SE* ION*S* r %dCPXTABLE.C T//*P* *PE* UNC*P* DISK ERROR - UNABLE TO SAVE FUNCTION %d cdata/S_TEMP.LEX : cdata/S_TEMP.TXT cdata/P_TEMP.LEX NCTcdata/P_TEMP.TXT /*SHEAD %d BODY %d SHOES %d ACCESS %d SPECIAL %d
Unused Text
The executable MAIN.exe has a huge amount of unseen text inside it, both from debug information, and what is clear the game's editors' menus.
There is also a list of pictures to load during the initial slideshow part of the demo, which includes two pictures not present in the actual demo released: x.LBM and um, SHIT.LBM. Starts at position 0009421C.
SHIT.LBM newdemo/frog4.LBM newdemo/logo.LBM NEWDEMO/Demo3.LBM NEWDEMO/Demo4.LBM NEWDEMO/sign.LBM NEWDEMO/Demo6.LBM NEWDEMO/Demo7.LBM NEWDEMO/x.LBM NEWDEMO/x.LBM NEWDEMO/Demo7.LBM NEWDEMO/COMING.LBM NEWDEMO/HI-RES.LBM NEWDEMO/16000.LBM NEWDEMO/TIME.LBM NEWDEMO/4LOCS.LBM NEWDEMO/PLAN.LBM NEWDEMO/DIAGNOSE.LBM NEWDEMO/ADVTECH.LBM NEWDEMO/NET.LBM NEWDEMO/ELVIS.LBM NEWDEMO/SOON.LBM NEWDEMO/WILLSEE.LBM
This list of files includes some not seen in the demo, most notably the mspr files, which in the final game are the low resolution mode graphics. This suggests that while they are not included with the demo, they were already being worked on at this point in development. Found at position 00088F8C.
data/mspr-0.dat ŒS data/mspr-0.tab „S xS data/mfra-0.ani |S lS data/msta-0.ani S data/mele-0.ani XS LS data/mblk-0.dat €S data/mblk-0.tab tS ˆS data/mpalette.dat œS data/mpointer.dat ”S data/mpointer.tab ˜S S data/mfont-0.dat ¸G data/mfont-0.tab pH PH data/mpanel-0.dat ÈR data/mpanel-0.tab @S \S data/vspr-0.dat ŒS data/vspr-0.tab „S xS data/vfra-0.ani |S lS data/vsta-0.ani S data/vele-0.ani XS LS data/vblk-0.dat €S data/vblk-0.tab tS ˆS data/mpalette.dat œS data/mpointer.dat ”S data/mpointer.tab ˜S S data/vfont-0.dat ¸G data/vfont-0.tab pH PH data/font01v.dat ¼G data/font01v.tab tH TH data/vpanel-0.dat ÈR data/vpanel-0.tab @S \S data/vpspr.dat ¼R data/vpspr.tab <S S data/border01.dat ØR data/border01.tab S S data/button01.dat \ % data/button01.tab L % 8 % data/slab01.dat P % data/presents.dat hS data/presents.tab PS S data/emerg.dat DS data/emerg.tab 4S 0S data/sptdoc.dat 8S data/sptdoc.tab HS S data/dpalette.dat $S data/languk-0.dat ”H ”R data/s_comp.lex (S data/p_comp.lex dS *WB_SCREEN ¤ % ` *VESA €P& *MAP TS `S p *ROOMS ,S äR *SKILLREGISTER ÄR ÐR è *PAGERS ìR S x *COMPUTER øR àR ª *CONTROL ÀR üR ¬ *HOSPITAL ðR ÌR ì *THING
Error Messages
We can find messages for different kinds of errors that would be displayed on screen. However, attempting to load one of these errors (for example, by patching a jump instruction with 00055DDB = 74
) makes the game crash, without allowing the player to continue or quit.
Error display labels at file offset 00084C04.
COMPLEX FUCKED AT %d AND %d %s(%d) : ERROR! >%s< Press [F10-Continue] [ESC-Quit].
Error details at file offset 000858B0.
tri_new : overflow ünavigate.c ¤default.tri rotate_edgeAC : lB not found CESrotate_edgeAC : A not found rotate_edgeAC : B not found tri_split3 : A not found /S_tri_split3 : B not found tri_split2 : A not found ateinsert_point : triangle not found nmake_3point : skip>4 for nonquad fomake_edge : border point fothin_wall : border edge edge_points : edge not found %d->%d route_to_path : loop i:%d pl:%d (%d,%d)->(%d,%d) fouExceeded max path length (i:%d,L:%d) (%d,%d)->(%d,%d) orExceeded max path length (i:%d,R:%d) (%d,%d)->(%d,%d) e Exceeded max path length - gate_route_to_coords Exceeded max path length (i:%d,rl:%d) x Exceeded max path length (i:%d,rl:%d) d)path_init8 : implement random externally %d CHARTS %s ü%2d * : %s %2d : %s ü%d Ð[%d,%d] ERROR: Allocation %s. Press return to continue ERROR: File %s.