This is a sub-page of Glover (Windows, 2022).
|
|
This needs some investigation. |
All throughout the files for this release, source files intended for developer eyes were leftover, spanning from unpacked object files to entire landscape files prior to conversion to level files and commandline tools.
Uncompiled Tools Source Code#
Prior to the update on April 23, 2025 (when these files would be removed), a folder named tools/ was left within the game files, containing five source code files that relate to tools used during Glover's development.
Download Source Code for Glover Command Line Tools File: Glover_cmd_tools.7z (18.6 KB) (info) |
glo.h#
In the root directory of tools/, A header file named glo.h can be found, this file contain typedefs for the struture of .glo files and functions for handling said files. It is used by heck.c.
Comments |
|---|
Line(s) |
144 |
264 |
283 |
298 |
541 |
593 |
699 |
Commented Snippets |
|---|
Line(s) |
148 |
150 |
158 |
166 |
174 |
178 -> 181 |
184 |
188 -> 194 |
197 |
203 |
205 |
207 |
213 |
241 |
246 |
252 |
heck.c#
In tools/hecker/, a C source file named heck.c can be found. It appears to be a command line tool relating to the game's object files with the following functions:
Argument |
Help Text |
|---|---|
test |
verify load+save results in an exact match |
texswap |
rename textures |
texwrap |
list all textures with >1 UV |
meshdel |
delete meshes matching a name |
glo2txt |
convert glo to text format |
txt2glo |
convert text file back into binary glo |
obecomp.c#
In tools/obecomp/, a C file named obecomp.c can be found. It's another command line tool with the purpose of compiling OBE files into Glover Object files (GLO).
The file contents contain some interesting snippets, such as:
- A comment block detailing the specs of the GLO format:
*******************************************************************************
* Convert OBE file to GLO
********************************************************************************
* GLO (Glover Object) spec
* Little endian
*
* "GLO" Magic - 4 bytes
* Version - 2 bytes
* Number of Objects - 2 bytes
* List of objects:
*
* * Number of anim segs - 2 bytes
* * Anim seg list:
* * * Name - 24 bytes
* * * start frame - 4 bytes
* * * end frame - 4 bytes
* * * flags - 4 bytes
* * * speed - 4 bytes
* Number of (top level) meshes - 2 bytes
* Mesh:
* * Name - 24 bytes
* * Number of moveKeys - 2 bytes
* * moveKeys list:
* * * Time - 4 bytes
* * * Vector - 12 bytes
* * Number of scaleKeys - 2 bytes
* * scaleKeys list:
* * * Time - 4 bytes
* * * Vector - 12 bytes
* * Number of rotateKeys - 2 bytes
* * rotateKeys list:
* * * Time - 4 bytes
* * * Quaternion - 16 bytes
* * Number of vertices - 2 bytes
* * Vertex list:
* * * Vector - 12 bytes
* * Number of faces - 2 bytes
* * Face list:
* * * Texture filename - 16 bytes
* * * Color - 4 bytes
* * * Flags - 2 bytes
* * * Vertex ref list (always 3):
* * * * Index in vertex list - 2 bytes
* * * * Texture UV - 8 bytes
* * Number of sprites - 2 bytes
* * Sprite list:
* * * Texture filename - 16 bytes
* * * Color - 4 bytes
* * * Sprite pos - 12 bytes
* * * Sprite size - 8 bytes
* * * Sprite flags - 2 bytes
* * Mesh Translucency - 2 bytes
* * Mesh flags - 2 bytes
* * Has child? - 2 bytes
* * * (Child mesh, recursive)
* * Has next? - 2 bytes
* * * (Next mesh, recursive)
*******************************************************************************/
- A char array of textures that didn't exist (at the time of the file being written):
// Textures that don't exist
const char *NULLTEX[] = {
"ace.bmp", "puzzle.bmp", "hasbro2.bmp", "spank.bmp", "ether.bmp",
"butterfly.bmp", "caterpillar.bmp", "fly.bmp", "ladybird.bmp", "spider.bmp",
"smallfish.bmp", "snail.bmp", "weevil.bmp",
NULL
};
- A struct of textures that needed specific UV fixes (again, at the time of the file being written):
// Textures to expand UVs
const struct {
char name[TEX_NAME_LEN];
float u, v;
} UVFIX[] = {
{ "redstripe.bmp", 5, 4 },
{ "", 0, 0 },
};
scripted.c & scripted.h#
Finally, found in tools/scripted/, a C source file and C header file can be found detailing another command line tool, which contains code relating to a file parser for .lnd files to convert them to .lev files.
Unlike heck and obecomp, this tool includes two header files that were present in the main game's source code, tokens.h and crc32.h. These weren't included in the game files, so under normal circumstances, this can't be recompiled into an executable.
Like obecomp.c, scripted.c also contains numerous amounts of interesting snippets, including:
- A comment block at the start of the file, featuring the project name ("oddballs"), the file's former name ("files.cpp"), a file description ("handles all file control") and a copyright notice from Interactive Studios Limited (ISL) from 1996.
/*
* Project: oddballs
* File: files.cpp
* Description: handles all file control
*
* (c)1996 ISL.
*/
- Several char arrays, listing various names for objects in a file, like actors, conditions and terrain.
Variable Name |
Snippet |
|---|---|
Actor Names |
|
Exit Door Names |
|
Terrain Names |
|
Vent Names |
|
Pickup Names |
|
- Comment blocks that are to specify what each function does. Most aren't filled in.
Function Name |
Comment Block |
|---|---|
main |
|
ParseLandscapeFile |
|
PlatformAddPoint |
|
IsCameraAction |
|
IsCameraCondition |
|
NMEInitInstruction |
|
NMEDetermineConditionType |
|
- Default filepaths of the dev's file structure from when this file was written, they're used as default filepaths on a ParseLandscapeFile call when running main with less than 2 arguments.
File |
Out File |
|---|---|
|
|
- Commented out code.
Function |
Function Code / Function Snippet |
|---|---|
ParseLandscapeFile |
|
PlatformAddPoint |
Landscape Files#
Present in data/levels/, uncompiled source files (*.lnd) for every level can be found next to their compiled counterparts (*.lev). These files are entirely ASCII-based.
The source files can also contain comments, this comment can be found at the start of every .lnd file:
/* ------------------------------------------------------ */
/* Genesis world file. * Interactive Studios Ltd */
/* ------------------------------------------------------ */
/* :Version 0.01a */
/* ------------------------------------------------------ */
Most object declarations (E.G. Platforms, Pickups and Puzzles) can have comments preceding it, an example being:
/* ---- [OBJECT TYPE] - You want a description too? ---- */
After all objects have been specified, most files end that section with this comment:
/* ------------------------------------------------------ */
/* Genesis world file END */
/* ------------------------------------------------------ */
Most of these landscape files match the corresponding .lev file, however there are exceptions where aspects were commented out or changed.
acourse#
acourse.lnd has one line commented out, which is an alternate declaration for the Tip entity that informs you how to change your ball at a different position.
Line(s) |
Unused |
Used |
|---|---|---|
(403 - 405) -> 406 |
![]() |
|
atlantis_boss#
atlantis_boss.lnd also has some lines commented out, this one being a change in one of the puzzle declarations.
Line(s) |
Unused |
Used |
|---|---|---|
(180 - 184) -> (186 - 189) |
|
|
carnival_1#
carnival_1.lnd has a number of declarations that have been commented out, as well as general developer comments.
Changes |
|---|
Line(s) |
33 -> 34 |
115 <- 117 |
(120 - 121) -> 122 |
(125 - 126) -> 127 |
(130 - 131)-> 132 |
363 -> 365 |
371 -> 372 |
825 -> 826 |
855 -> 856 |
877 -> 878 |
900 -> 901 |
982 -> 983 |
(991 - 997) -> (998 - 1002) |
(1028 - 1032) -> (1036 - 1038) |
Commented Definitions |
|---|
Line(s) |
1 |
61 |
282 |
312 |
536 |
946 -> 950 |
957 -> 959 |
987 |
1019 |
present#
present.lnd is the company credits space when you boot the game. The changes in this were purely to comment out the declarations for the assets tied to the original developers.
Commented Definitions |
|---|
Line(s) |
22 |
25 -> 26 |
29 |
35 |
38 |
41 |
44 |
47 -> 48 |
51 -> 52 |
55 -> 56 |
59 |
space_1#
space_1 has two files tied to it, space_1.lnd and space_1.lnd.bak.
While space_1.lnd doesn't have anything noteworthy in it, space_1.lnd.bak appears to be a substancially different level, featuring different puzzles, landscape declarations and usage of the backdrop nebula2.bmp.
The file looks to share a lot of its structure with the OOTW_LEVEL1.lev file found in the 1998 PC port of Glover, however none of the referenced files are present in either release.
Download Space 1 Landscape Backup File File: Glover_Space1_lndbak.7z (1.72 KB) (info) |
space_boss1#
space_boss1.lnd doesn't have much commented, mainly landscapes for an archway and an exit door.
Line(s) |
Definitions |
|---|---|
34 -> 42 |
|
124 |
|
space_boss3#
No, there isn't a "space_boss2" file. space_boss3.lnd has a few more landscape pieces commented out, along with comments describing the Cross-Stitch cameo.
Commented Definitions |
|---|
Line(s) |
25 -> 31 |
35 -> 41 |
137 |
173 -> 176 |
Cameo Comments |
|---|
|
Backup Objects#
Found throughout data/objects, some backup model files were leftover from development, most differ with just textures being swapped.
For easier comparisons, all the files that only have .glo variants have been ran through the heck tool to convert them from .glo files to .txt files.
pikotitbox#
The most interesting file is pikotitbox.txt, which can be found in data/objects/present. This file is a text version of what would be baked into pikotitbox.glo, although the elements are missing their XLU token.
In the leftover text file, the old vertex contents are present, but entirely commented out in favour of new vertex contents. The old contents are likely for the former developer/publisher elements.
Fortress 3 (ff3)#
Stored in data/objects/fortress. A handful of texture assignments were changed from their former assignment to cavewew.bmp.
Unused (ff3_bak.glo) |
Used (ff3.glo) |
|---|---|
|
|
Unused Assignment |
Used Assignment |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
wayroom#
Stored in data/objects/wayroom. The only change between the two is changing the texture assignments from "water1g.bmp" to "cavewew.bmp".
Unused (wayroom_bak.glo) |
Used (wayroom.glo) |
|---|---|
|
|
Texture Bank Comments#
Within the various files found in data/textures/bnk, comments can be found within the many bank files, along with commented out entries.
===textures.ini===
An ini file found in data/textures/bnk. It's apparently not used anymore, but is only kept around for its comments for the files that are used for textures.
Comment |
|---|
|
