Habitat is a massively multiplayer online role-playing game for the Commodore 64 on top of the Quant...
The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:
Habitat is a massively multiplayer online role-playing game for the Commodore 64 on top of the QuantumLink online platform.
Habitat was developed between 1985 and 1987 by Chip Morningstar and Randy Farmer at Lucasfilm Ltd.
The game was originally codenamed "Microcosm", released as "Habitat" in 1986, and re-launched as "Club Caribe" in 1988.
The original source has been resurrected in the context of preservation and restoration by The Museum of Art and Digital Entertainment.
This repository is based on the original Fujitsu technology transfer archive, and contains
The original archive aimed to collect all information on and all source for the project, so it consisted of several independent disk/tape dumps. Consequently, some of the source in this repository exists in multiple versions in different subdirectories.
Caveat: There are C64 source files in the same directory that only differ in case. A checkout of this repository requires a case sensitive filesystem. On Linux, this is the default; on OS X, you can create a case sensitive HFS disk image using Disk Utility.
Habitat was created by the Lucasfilm Games Division and Quantum Computer Services.
Chip Morningstar was project leader, programmer and principal designer. Randy Farmer and Aric Wilmunder wrote the Commodore 64 software. Gary Winnick created most of the artwork and animation, with additional artwork by Ken Macklin. Chris Grigg created the sounds. Additional technical contributions by Charlie Kellner (the original cel animation system), Kevin Furry (high-speed Commodore disk routines) and Ron Gilbert (the original Commodore object memory manager). Additional creative support was provided by Noah Falstein, David Fox, Douglas Crockford, Mary Paterno, Chris Werner and David Martin. Creative irritation provided by David Levine. The "Official Avatar Handbook" was written by Jamie Williams and Chip Morningstar. Project schedule coordination at Lucasfilm was handled by Nancy Mohler. General Manager of the Lucasfilm Games Division was Steve Arnold. Thanks to Janice Morningstar, Pamela Farmer and Lori Wilmunder for tolerance and support beyond the call of duty. Special thanks to George Lucas.
Janet Hunter was the primary Q-Link host system programmer. Additional technical support provided by Ken Huntsman, Craig Dykstra and Mike Ficco. Project schedule coordination at Quantum was handled by Cathy Anderson. Marc Serrif was technical manager at Quantum. Special thanks to Clive Smith of Commodore Business Machines without whose support and interest this project would never have come to be.
Habitat is assembled with the macross assembler and linked with the slinky linker. If you compile macross and slinky yourself with “make” in both the macross and the slinky directories, you will get binaries that can successfully assemble and link Habitat.
macross and slinky have been hacked to be binary compatible with existing .o files, so you can mix and match existing .o files and newly assembled ones, and link them with slinky. See the comments in macross/Makefile for details.
There is a recurring version number of “6.4” in the source and the binaries. Lower version numbers can be found in documentation files. In other places, the version is called “Beta 1.0”. The documentation says Beta 1.0 is from December 1987. According to documentation, the version was at “6.4” when they declared it was not “Beta 1.0”. There was an “Alpha 6.4”, and a “Beta 1.0”. Since “Beta 1.0”, the exact version is no longer used, but encoded in code.
The C64 application consists of the following components:
Habitat consists of two disks sides: * Side A, “program disk”: "Main" resides on this side * Side B, “image disk”: The rest is on this side, so after the main program is loaded, side B can remain in the drive. The layout of side B is defined like this:
(TRACK) 1 2 3 12345678901234567890123456789012345 0 cccaaasssiiiiiiiiIiiiiiihhhhhhhhhhh S 1 cccaaasssiiiiiiii*iiiiiihhhhhhhhhhh E 2 cccaaasssiiiiiiii*iiiiiihhhhhhhhhhh C 3 cccaaasssiiiiiiii*iiiiiihhhhhhhhhhh T 4 cccaaasssiiiiiiii*iiiiiihhhhhhhhhhh O 5 cccaaasssiiiiiiii*iiiiiihhhhhhhhhhh R 6 cccaaasssiiiiiiii?iiiiiihhhhhhhhhhh 7 cccaaasssiiiiiiii?iiiiiihhhhhhhhhhh 8 cccaaasssiiiiiiiiCiiiiiihhhhhhhhhhh 9 cccaaasssiiiiiiiiCiiiiiihhhhhhhhhhh 10 cccaaasssiiiiiiiiCiiiiiihhhhhhhhhhh 11 cccaaasssiiiiiiiiCiiiiiihhhhhhhhhhh 12 cccaaasssiiiiiiiiCiiiiiihhhhhhhhhhh 13 cccaaasssiiiiiiii?iiiiiihhhhhhhhhhh 14 cccaaasssiiiiiiii?iiiiiihhhhhhhhhhh 15 cccaaasssiiiiiiii?iiiiiihhhhhhhhhhh 16 cccaaasssiiiiiiii?iiiiiihhhhhh 17 cccaaasssiiiiiiii?iiiiii 18 cccaaasssiiiiiiii 19 cccaaasssiiiiiiii
c=class file 15360 a=action file 15360 s=sound file 15360 i=images file 68608 h=head file 46592 C=on_disk_charset I=id_file.dat *=required directory files ?=free? (current dos will not read)
id_file.dat is interesting: it’s the BAM sector, but it doesn’t contain a BAM. It doesn’t even contain the 18/01 link. It’s all ASCII, with a disk number and version at the beginning, and lots of credits after that. The region after 0x90 is laid out so the disk title looks OK though.
The "filldisk" tool creates a disk image from the inputs according to this specification. It is missing from our tree though.
When the client logs in, the server can update the image disk by sending blocks that are supposed to be written. When done, it’ll send a new T18/S0 with an updated version number. The tool “puddle” is used to create .dat files with minimal differences from an old and a new state.
Set of tools to generate/edit regions visually on a combination of Sun and C64. Reno only exists in binary form (~32 KB!).
If the game panics, it can save its state to a “dump disk”.
The tool “loadrom” is missing. It seems to read “macross -p” (position-independent code) output and create raw .bin files.
mtobin is another tool we don't have. It seems to be a script that compiles a macross .m file and creates a headerless .bin file. It's referenced from the Makefile in Images.