Little Computer People

The very first Tamagotchi-type game as far as we are aware was Puppy Love on the Apple Mac. However Little Computer People was the first game that provided users with a unique experience with each copy of the game.

This is a very interesting game from a technical point of view. Our investigations started when we were told that every copy of the game was unique, that every “Little Computer Person” was different with every copy (in personality, name, shirt colour, etc.). It was very interesting to find out what was going on with this game, so we have detailed our investigations of the Amiga version.

Little Computer People Title ScreenLittle Computer People Gameplay

The manual says:

‘Although only one LCP will occupy any given “House-On-A-Disk,” most computers have more than one LCP living inside of them. In order to contact another LCP in your computer, you would need another “House-On-A-Disk.”’

What an excellent concept...

But we certainly did not actually believe that each actual disk was unique because the Trace duplicators used to master this game could not create unique disks. So we just assumed that when you first played the game, it generated a random number which was then saved back to the disk to be used ever more. Our quick look at a disk dump seemed to confirm this since the dump we had was modified in several places by another machine other than the duplicator itself.

Since we assumed it was being modified on first boot, we thought it rather unlikely that we would find an unmodified copy of the game and put it on the wanted page. Later, after getting access to more dumps we found something very interesting.

  1. Every copy we had (5 retail and 4 budget at the time of writing) had some tracks modified including track 79.1 (cylinder 79, head 1) which was always modified.
  2. When compared, the only difference on 79.1 was the serial number.
  3. Most of the game disks have been modified by two different drives:
    1. A drive modifying files starting at 40.0
    2. A drive modifying 79.1
  4. Track 79.1 could not be (and was not) written by the drive that modified the other tracks. It was either modified by a mastering device or a misaligned Commodore drive running at 301.5 rpm... All the other “normal” modifications on the disks have been done by drives running at 300 rpm. It is actually impossible for track 79.1 to have been written with the other 300 rpm drives.
  5. All dumps have a modified 79.1 track by the same 301.5 rpm drive, and we have dumps originating from Germany, Japan and the US.
  6. The game on the otherwise unmodified (minus track 79.1) dump could not possibly create the serial number at first boot as expected originally. Why? Because if you make or change a file the root entry on the disk on 40.0 will be changed. The only modified track however is 79.1. We later traced the loader game code, and it does not actually write to 79.1 anywhere.
  7. You really cannot create a unique serial number with a Trace machine. But these were used for the duplication of this game. The reason it could not be done was due to the lack of global variables in the Trace machine scripting language. Each variable is reset at the writing of a new disk. So they could only make an unique ID by either using a different duplicator machine or a real Amiga for that track. Whatever it was, it produced a track that could not be written by any of the drives involved in modifying the dumped disks.

There are two possible explanations for all these things:

  1. All the games somehow come from the very same shop, where they were opened by the shop assistants and modified to annoy The Software Preservation Society eighteen years later on. Obviously not too likely.
  2. The game was indeed modified by the duplicator or the publisher.

We have the budget/revised edition dumped, and it contains the original serial number as set by the developer for those people who are not happy with possibly the only game ever on Amiga that was modified by the factory. :) It is basically the original game, just without the protection applied, and the serial number is 32145678.

To clarify above, we should say that unlike most budget releases, this one is not a dodgy crack, it is a master before protection was applied, and all file/dates are authentic. We are positive that the serial value above was used when duplicating the original release of the game (the file date is 1986.5.28) before it got modified. In fact we are 99.999% positive that if we ever got submitted an “unmodified” disk of the retail LCP it would be simply because someone was not bothered to do their job at duplication. :)

Once it was out on budget and the hype was over, the publisher probably could not be bothered to use another machine for individual serial number generation. Either that, or perhaps they originally used an early duplication system that allowed global variables for that track (a possibility since the Bit Cell width is exactly the same width as the protection track found on Hacker), but that system was no longer around, or too expensive to use by the time the budget version came out.

We thought it would be nice to allow people to generate their own “Little Computer Person”, but the problem is that we have no idea how the serial number was generated. We thought it was probably just by incrementing a number, but we had no idea how it was used. We thought probably just a random seed value, but if it is not, we may break something if we added a bad value.

People are free to modify the serial any way they like and experiment with it. We thought we would never find out since we doubt anyone is willing to learn from 188k of compiled C code how the number value is used... It could be as simple as reading and setting the random seed value for the random routine, or could be much more complex. In the first case understanding what it does is a waste of time just to get it confirmed, in any other case without the source you’d be spending the rest of your life understanding game code.

“Without someone involved with the game’s development or a script for the duplication we will never know for sure.”

Actually, we thought it would be nice to get some of this confirmed, so we contacted David Crane, designer of the game and programmer for the Commodore 64 version, and he was kind enough to give us the info we needed. His mail follows.

“I’m sorry to say that I don’t have first-hand knowledge as to the actual duplication process used on the Amiga version of that game. Here’s what I do know:“Little Computer People first came out on the Commodore 64. It was the first time that a game was distributed where every copy was unique. We contracted with the manufacturer of the disk duplicator that we used to modify the code to place an incrementing serial number on each disk. I am pretty sure that for the C-64 this was done in a single pass. It is entirely possible that the Amiga disks were serialized in two passes, possibly ordered with a serial number rather than formatted blank.“As for the game itself, the serial number was used to customize the game’s initial state (no other special parameters). That number was used as a seed to a polynomial counter that specified all the personality factors for your Little Computer Person. A 256 byte block of data on the disk held the LCPs “brain” to keep personality status as the LCP aged and developed. If you have a disk that has been executed you will see that that block has been rewritten by the user’s disk drive. If it is a virgin diskette that block will be in its initial state (probably all zeros).“I personally programmed the C-64 version. The Amiga version was programmed by Gene Smith. Sadly, Gene passed away last year from a virulent cancer. But up until that time he was still actively programming video games.”– David Crane

So unfortunately, what happened at mastering with the Amiga version may never be known, but at least now, what we had discovered, and what we assumed about it has been verified.

It would have been nice to find out the minimum and maximum values used in duplication, but it is unlikely to matter much. People are certainly free to modify the serial number themselves, but since it is a seed value, do not expect to see any relationships between values!

The question was raised whether support for serial number generation should be put into the IPF file, but it was decided that changing the serial has no place in a preservation file because the user or the duplicator is not supposed to choose it. It would not be accurate in any case, since we do not know the range of values used. The IPF contains information about what was on a disk, not what might have been on multiple disks.

It is a much better idea to create an external Amiga tool to change it. This would mean it could be used in emulation and on a real machine. This is exactly how it worked for real, just the number was automatically generated. Of course, people can easily change the serial number themselves by editing the serial number file on the disk.

If you kill your LCP, or they die from natural causes. You can of course rewrite the disk in the case of a real machine, or delete the UAE diff file. Of course resurrecting LCP’s that have gone to a higher plane of existence, is not exactly a nice thing to do (think Buffy) so you may want to attract a different one at the same time, perhaps use the attractor above to find an LCP who is linked to a family member, friend or pet.