Monday, June 7, 2021

Revisiting: Empire II: Interstellar Sharks (1983)

This was a pretty good character. He lasted 15 minutes.
Empire II: Interstellar Sharks
United States
Interactive Fantasies (developer); Edu-Ware Services (publisher)
Released in 1982 for Apple II
Date Started: 6 February 2014
Date Ended: 7 June 2021
Total Hours: 45
Difficulty: Hard (4.0/5)
Final Rating: 29
Ranking at Time of Posting: 227/414 (55%)

Empire III: Armageddon (1984) came up recently when I went searching for a random game. It would have appeared on the "upcoming" list via the natural course of time soon anyway. I'm eager to try it, but before I did, I thought I'd take another run at Empire II: Interstellar Sharks, which I first covered about seven years ago. You'll want to review that entry before finishing this one, as this builds on that one without re-explaining key concepts.
I spent about seven frustrating hours with the game this week, attempting each of the three character classes with a slew of characters. It's a tough game. You can only save by going back to the space station, and I never saw a commercial flight to the space station, so you have to play long enough to get your own ship if you don't start as a pilot. When a character dies, he's immediately erased from the disk. You can't forestall this by popping the disk out of the drive, as the game continually references the disk, and it crashes--it doesn't ask for the disk; just crashes--if it can't find it. You can't really use save states because it's constantly writing the character and world state to the disk, and if it finds discrepancies between the memory and the saved files, things go wonky.
Winning the game involves making your way to the imperial home planet, Triskelion. This is tough because its location is secret. No commercial flights ever go there; no navigation program will take you there; no "flight planning service" will help you plan a flight there. To get there, you have to have your own ship. Of the three classes, the pilot comes with one, and the businessman and diplomat can buy one after enough financial success.
Making money is a major objective of the game, and each character class has a way of doing it legitimately. The businessman buys and sells stocks and runs missions for his corporation. The diplomat carries messages and handles negotiations. The pilot sells commodities. But there are some sinister implications to the "legitimate" means of making money. Every once in a while, the businessman gets a mission to bomb a rival corporation. The diplomat is asked to assassinate an ambassador or the priest of the Lord of Light. If the pilot wants to make any serious money, he has to trade in weapons or slaves (this is theoretically possible, at least; I never found any place buying or selling slaves). 
This isn't what I got that MBA for.
An interesting element is that any character class can become a businessman simply buy purchasing a seat at the stock exchange. He'll be assigned to a corporation and start getting missions from his corporate masters. A businessman or diplomat can also purchase a ship and start trading cargo. However, I couldn't find any way that a non-diplomat can obtain the things that a diplomat starts with, including high-level passports and diplomatic immunity. Thus, you probably want to start as a diplomat for the most options.
Nonetheless, even the diplomat or businessman eventually gets a quest that requires them to go to Fyrokken, and you can't do that without your own ship. Purchasing a ship from scratch is expensive. At minimum, you need a hull, rockets, a fusion drive, a computer, a navbeacon, and an environmental shield. If you don't want to put your life in the hands of 1d20 roll every time you take off and land, you also need a navigation program. The sum of this equipment is about 10,000 credits, or roughly 5 hours of game play doing diplomatic missions or trading stocks.
You need almost all these parts.
The game's message seems to be that doing things legitimately is for suckers. The easiest way to make a bunch of money in this game is to roll a character with a high dexterity and then STEAL at the bank. The game rolls a 1d20, and as long as it rolls less than your dexterity, you get 100 x the roll. Seven or eight successful thefts can leave you with enough for a ship by itself. Also lucrative is killing criminals in the black markets and playing a gambling game called "Fizzbin" in Denieves. On the other hand, punishment for crime is harsh if you can't BRIBE, ESCAPE, or NEGOTIATE your way out of it.
Bank security sucks in the future.
Unfortunately, your problems are only beginning when you purchase your ship. First, the sheer number of commands to get from one place to another is annoying, and if you forget one of them, you might die. Even if you do everything right, systems fail all the time, usually killing the character. With every single character, I ran into an issue by which the game decided the power no longer worked, and I couldn't load any programs without a battery backup. The problem is, the game only lets you buy one at a time, and it's consumed every time the power fails. If you find yourself on a planet without a Coronal Shipwright (the only place that sells batteries), you can't get anywhere else. And yet the repair service insists that the power is okay. Fortunately, this particular problem seems to be fixed by returning to the space station, saving the character, and reloading. More random failures of power, engine overheating, and environmental systems failures don't have such an easy solution except start again with a new character.
Combat is extremely rare in the game--you basically have to go looking for it, or attack police officers when they try to arrest you for another crime. It's too bad because the system is strong, allowing the character to attack with a variety of weapons, to target specific body parts, to attack recklessly or take AIM, and so forth. The game also offers a staple of tabletop RPGs that we rarely see in CRPGs of the era: frequently rolling against your attributes. If you're trying to escape customs officers, you roll against speed. Trying to negotiate a trade agreement? Roll against charisma. Stealing from the bank? Check your dexterity. Combat uses both strength and dexterity.  
I guess I'm playing a vigilante.
For all the extra time I spent, I still couldn't figure out how to win. I frankly hoped someone else would have figured it out in the last seven years. I did, however, find my way to Triskelion. It turns out that the galaxy is only 6 x 6 locations. The manual warns that the planets move over time, but I always found them in the same places. Finding Triskelion is just a matter of exploring by GO RIGHT, GO FORWARD, and so forth. This process is fraught with a little danger. Systems seem more likely to break when you're manually exploring, and every time you move manually, you have to roll against your "Senses" to see if you were successful in going the direction you intended.
In any event, Triskelion for me was only two moves from either Denieves or Agrosphaire. The problem is, when I arrive, the game just says I can't penetrate its force fields, and then kicks me into a random region of space. There's no opportunity to enter any command.
My map of the galaxy.
Now, I know something else is supposed to happen here (see below), but since there's no opportunity to do anything between your arrival and forced departure, I assume the game must be checking for something that you have. But I've tried buying absolutely everything sold in every store, legal and illegal, to no avail.
For a while, I thought the answer must be the WHITE ROCK. The game calls attention to this specific item, which is only found in the possession of the priest of the Lord of Light or the alien ambassador. You can try to steal it from them or kill them for it. (You can also have fun with the disciples of the Lord of Light by yelling PRAISE THE APEX or PRAISE THE EMPRESS at their meetings.) But it turns out if the rock is in your possession when you arrive at Triskelion, the planet blasts you out of the sky and you die immediately. So that's worse.
The closest I can get to winning.
While we're on the subject, here are some other mysteries:
  • I can't for the life of me figure out how to use either the LASERADIO or NETHERADIO. If I turn them on in the ship, nothing happens. The manual suggests that the laseradio will tell you the name of the planet you're orbiting, if you don't know, but I can't get this to happen. No commands I enter seem to allow me to communicate with other ships with either radio. [Edit: I later figured this out. You turn them on by typing ON LASERADIO and ON NETHERADIO. The netheradio tells you what planets you're near and the laseradio tells you what planet you're orbiting. Each works by scrolling a message in the "communications" window. I had the emulator cranked up too fast to notice it.]
  • There's a ship-to-ship combat mechanism, but you encounter other ships extremely rarely, and it's illegal to possess the items necessary to fight them. Since there's a chance those items will be discovered at customs every time you land on a planet, it doesn't seem worth it.
  • The manual gives SLAVES as one of the commodities that you can trade, but I've never seen them for sale anywhere.
  • You can buy something called a MACROPHONE, "a covert listening device," but I can't figure out any situation in which to use it.
  • You can buy vacuum suits and airtanks to go outside your spaceship, but I can't think of any reason to do that.
I was frustrated enough trying to figure out this game that I installed an Apple II disk file utility so I could read the programs. Unfortunately, I only know enough of Apple BASIC to confuse myself. The critical lines seem to be in the program labeled IS.4:
243  GOSUB 236: IF LR THEN LM$ = "WHAT IS THE WAY?":CM = 1: GOSUB 26: GOSUB 60: IF OB = 72 THEN LM$ = "YOU ARE PREPARED FOR ARMAGEDDON":RQ = 0:CM = 0: GOSUB 26:LM$ = "PASSWORD 2: 'ERGO'": GOSUB 26: FOR J = 0 TO 9: POKE AR% + J,15 +  FN D(3): NEXT : GOTO 229
244 RP$ = NM$ + " IS SPACE DUST": GOSUB 261: GOTO 61

"You can't penetrate the imperial force field" is the message I get if I try to visit the planet; "Chester is space dust" is the message I get if I try to visit with the white rock. What I'm not sure is how I get the messages in line 243. There are a bunch of conditions in here using language that I don't understand, with values that are set in other places in the programming. 

Coming to the CRPG Addict in June!
If anyone with more Apple BASIC skills (or knowledge of the game) wants to help me figure it out, I'd be very grateful. The disk can be downloaded here, and I used CiderPress to inspect the files. I'll give it a week or so to see if anyone responds, and then give Empire III a try either way.
As usual, my commenters came through, and I've been able to see the end, although I'm not 100% sure what to make of it. As you read above, I was able to find Triskelion by exploring space. It turns out you need a) the white rock in your inventory, b) the laseradio on, and c) the CODEBREAK program running when you approach the planet. The white rock must do something to negate the shield, but heaven knows why.
A ship appears as you approach. If your laseradio is not active, the ship simply destroys you. If it is active, you get a message. If CODEBREAK isn't running, you can't read it, but if it is running, the message is "WHAT IS THE WAY?"
I don't feel prepared.
I had to inspect the source code to get the answer. I tried a lot of objects and verbs first, including APEX, EMPRESS, LIGHT, LORD OF LIGHT, FORWARD, SNUFF, and INFINITY. All of those, plus any other incorrect answer, results in the ship blowing you out of the sky. If you type HOME, it takes you back to the space station and you can save the game, but it's not a "win." The winning word is TORCH. At that point, the ship radios: "YOU ARE PREPARED FOR ARMAGEDDON. PASSWORD 2: 'ERGO'." The game then takes you back to the space station on which you started.
So why "Torch"? Code elsewhere in the game suggests that the "Way of the Torch" is affiliated with the Lord of Light, the worship of whom is illegal in the empire. In some encounter--I don't know how it's triggered--you can be visited by the Lord of Light who says, "Remember the Way of the Torch." TORCH is also given in the game manual as one of the many objects that the game recognizes, although I never found an actual torch during the game.
So it was a bit of a cheat, but I'm still going to call it a win. I now feel much better prepared for Empire III, where presumably the ERGO password will get me something.


  1. This game actually seems pretty cool, if it had a bit more to do (monsters to fight etc.) and was a bit less janky and punishing it feels like it would be fun for the right sort of person and somewhat ahead of its time.

  2. Really a cool game. It has something of the oddness of TERA.
    I wanted to use the opportunity to state how many games are called Empire, of wildly different genres :
    - Empire by Peter Langston (1972) - multiplayer strat game on HP2000 (a computer I never heard about)
    - Empire by John Daleske (1973) - multiplayer space 4X for PLATO
    - Empire by Walter Bright (1977) "earth" 4X for FORTRAN
    - Empire, Wargame of the Century (1984), port of the above for all the computers of 1984
    - Empire, published by CLOAD (a magazine) in 1981, an Hammurabi kind of game
    - Empire I, World Builder (1981), which you covered
    - Empire II and Empire III, follow-up of the previous one
    - Empire by Shards Software (1984), risk-like for BBC Micro
    - Empire! by Andrew Glaister (1986), a space trade game
    - Empire by Larry Scott and Mickey Brian (1980s) for Atari, a 2-player space campaign game

    And that's ffor the "Empire" alone. Don't get me started on the "Galactic Empires"

    1. Galactic Empire(s) big problem is that searching for that term gets you a ton of stuff related to Star Wars that isn't easily removed for. I spent a lot of time looking up a walkthrough/info on Coktel Vision's adventure/FPS hybrid passing between increasingly bizarre Star Wars-related websites.

    2. There is also "World Empire" series (for some reason, I can only find mentions of II, III and IV), which is a Risk variant for PC. I used to play it a lot all by myself (without a human or computer opponents), inventing stories for all factions under my control. I'm... not big on losing. Ever.

    3. Thanks for mentioning that Galactic Empire is a Coktel Vision game! I saw an advertisement about it in an early nineties magazine and it seemed a cool game (the covert art was very memorable) whose requirements were way above the capabilities of my compute. Decades later, any try to find more information about it (as I still remembered the title) meet the same problem that you experienced: all my searches returned only Star Wars webpages.

    4. Its worth mentioning that if you do play Galactic Empire is that all the English DOS rips that I know of don't work in DOSbox, but the French ones do. I don't know if that's because all the English rips are bad or if there's something different about the English version, but it is what it is. The Amiga version works fine.

  3. As far as I can tell, line 242 gives you the forcefield message if memory address 16126 contains a zero value. If that address is non-zero, it should skip that line and move on to stuff in 243. But, I can't find anything in the BASIC code that sets memory address 16126. There's one other reference to that address in IS.7, but it's just being read there too and used to manipulate a variable called "VT", whose meaning I can't follow.

    I can only speculate that there's also assembly code on the disk that is running whatever logic actually sets that address? Hence why it's just a memory address instead of a BASIC variable.

    1. That, or the game does something like "POKE 16120 + X, 1" where X is some other variable that happens to be set to 6 at some point. I mean this is sloppy coding at its finest, but maybe 16120 + something is the array of inventory items. Or maybe it's 16114 or some other arbitrary value.

  4. So it looks like the peek(16126) is checking if you have the white rock (if it returns 0 then you get the message about the force field), then the Gosub to line 236 is doing a check which must write to the variable LR. That that’s false then it skips the rest of the line and your space dust. So whatever is in that line will say what you need

    1. It's really NOT that simple. Line 236 is simple printing routine, LR variable is being set elsewhere. And that 'elsewhere' is the spaghetti code mess that is almost impossible to follow.

      For what I can see, the only lines on which LR value directly depends are 136 and 144. In line 136 TP value (which probably means something like 'temporary pointer', as it is being used in many different ways across the file) is being initialized to 10. And then if VB = 29, TP is reinitialized to 138. On line 144 LR is set to TP - 138. So, if VB is not 29 (and maybe some other conditions satisfied), then we'll probably get the right value for LR.

      Unfortunately, without some serious reverse engineering effort it's very hard to figure out what exactly VB stands for and how to influence that variable. I can only guess that VB is something like 'verb' and you need to give the game a specific command or word at some previous time.

    2. I'm guessing based on context that LR is LASERADIO because it also shows up in the following contexts:

      69 TE = 9:ML = 16012: GOSUB 18: IF NOT (DC - (((SL = 2) AND LR) OR ((SL = 3) AND RD) * 5) < = PEEK (ML)) THEN RP$ = "NO ANSWER": GOTO 58

      231 ON RD AND FN D(5) > PEEK (16089) GOSUB 258: IF LR AND FN D(5) > PEEK (16088) AND SL = 2 THEN MS$ = "ORBITING " + PL$(PL):CM = 0: GOSUB 234

      240 ON FN D(10) > 1 OR NOT LP GOTO 245: GOSUB 236:TE = LP: GOSUB 40: POKE 16202,LP:LP = 0: PRINT R$"@3V23H@NONE ": IF LR THEN LM$ = "HAR! HAR! GOT ME SOME BOOTY!":CM = 0: GOSUB 26:WS = 0: GOSUB 80: PRINT "@8H5VL"PL"C0K@" CHR$ (11) CHR$ (12)R$

      All these seem to be about communication and Line 231 in particular seems consistent with how the LASERADIO is supposed to work.

      The test about OB seems harder to figure out from context. It gets set as

      60 FOR I = 0 TO 2: POKE 30724 + I,255: NEXT : CALL 30727: PRINT S2$ SPC( 38):TM = TM + 1:VB = PEEK (30724):AD = PEEK (30725):OB = PEEK (30726): ON VB = 10 GOTO 265: RETURN

      This seems to be part of the core gameplay loop because it advances time (TM) by one step and each file has some version of this command. I don't know what VB, AD, and OB are tracking though. Are there 3 key statistics of some sort routinely updated?

    3. I also figured out the structure of the memory for PEEK / POKE / CALL. The BIN files have as their AUX information where they start getting loaded in memory. For example, all the of the characters start at 0x3E80.

      So peek(16126), when converted to hex looks at 0x3EFE. So you can use this to check what slot of the character is being checked and hex edit in appropriate items if desired.

      The CALL 30727 looks somewhere in the Parser, but I'm not sufficiently motivated to start figuring out such low level code.

    4. If VB is verb, then potentially AD is adverb and OB is object.

    5. Well, thanks to your help, I've gotten a little further. Deificus's guess was right; LR probably is "laseradio." I fiddled with it some more and figured out how it works. You have to type ON LASERADIO to get it working. When you arrive at a planet, it quickly scrolls a message about what planet you're orbiting in the "Communications" window. I had the emulator cranked up so fast, I wasn't seeing that.

      If I go to Triskelion with the laseradio on, I just get the same message about the force field. But if I go with the laseradio on AND the white rock in my possession, a ship pops up and delivers a cryptic message (nonsense characters) in the communications window. I have one chance to enter some command. Everything I try just gets me destroyed, but I'm sure this is the point I was supposed to reach. Now I just have to figure out what I'm meant to say here.

    6. Even closer! If I run the CODEBREAK program before reaching the planet, the "cryptic message" becomes WHAT IS THE WAY?

    7. I think Radiant's guess is correct from this chunk of code:

      93 GOSUB 60: ON AD < 5 AND VB < > 22 GOTO 105: ON SL > 9 AND (VB < > 29 OR OB < > 24) GOTO 100: ON VB = 2 GOTO 65: IF VB = 5 THEN GOSUB 42:RP$ = Q$: GOTO 58
      94 ON VB = 3 AND OB < 65 GOTO 107: IF VB = 4 AND OB < 65 THEN ON ASC (PS$(OB)) > 96 GOTO 109:RP$ = "YOU CAN'T DROP THAT": GOTO 58
      95 ON VB = 1 GOTO 111: ON (VB = 28 OR VB = 29) AND OB < 64 GOTO 133: ON VB = 30 AND ((OB > 26 AND OB < 31) OR OB = 56 OR OB = 59) GOTO 147: ON VB = 33 AND SL = 1 GOTO 151: ON VB = 31 GOTO 154: ON VB = 32 AND SL = 2 GOTO 166
      96 ON VB = 22 AND OB = 64 AND FL GOTO 193: ON VB = 22 AND AD < 5 AND SL < > 1 GOTO 194: IF AD = 11 AND SL = 1 THEN POKE 16185,PL:RM = 41:IS = 2:TE = 8: GOTO 62
      97 ON VB = 7 AND OB = 48 AND SL = 7 GOTO 201: ON AD = 11 AND SL < > 1 GOTO 120: ON VB = 22 AND OB = 65 AND SL = 2 GOTO 223
      98 IF VB = 22 AND OB = 64 AND SL = 6 AND DS THEN PX = SP(DS - 1,0):PY = SP(DS - 1,1): GOSUB 220: GOSUB 68: GOSUB 66: GOSUB 83: GOTO 207
      99 ON VB = 26 AND OB = 13 GOTO 218: ON VB = 44 AND SL < > 1 GOTO 152: ON VB = 42 AND (SL = 2 OR SL = 3) GOTO 69: IF VB = 17 AND OB = 65 AND SL = 7 THEN DS = PL:EO = EO - 1: GOTO 224
      100 IF AD = 10 AND SL > 10 THEN 204
      101 IF VB < 255 THEN RP$ = "THAT WORD IS NOT USED NOW": GOTO 58

      It seems to be looking at the command entered and handling it in various ways. In particular, this chunk is revealing:

      IF VB = 4 AND OB < 65 THEN ON ASC (PS$(OB)) > 96 GOTO 109:RP$ = "YOU CAN'T DROP THAT"

      VB 4 Must be DROP and Objects 0-64 are the possible inventory items. Apparently items with upper case names internally cannot be dropped. So the question is what noun corresponds to Object 72 (not an inventory item) which is the answer needed.

    8. I was following that exact logic, Deificus, and I got it. I still don't understand the answer, but I'll amend this posting in a bit.

  5. Just in case you weren't tired of Star Trek references in Might&Magic yet: the cardgame Fizzbin is a Star Trek reference, and it also appears in Might&Magic.

    1. Ah, fizzbin! The game Kirk made up in the glorious ridiculousness that is the mobster planet episode.

    2. It's only ridiculous taken at face value. ;)
      Thematically it is a really good allegory for the NATO/Warsaw Pact arms race.

  6. If you open PARSER.BIN in hex dump mode, you'll get a list of commands and inventory items that game can recognize. Maybe some of them can give you ideas.

  7. The comments above this one were made before I won the game and attached the addendum.

    1. Is perhaps the password "TORCH" given by the Lord of Light in the first game?

    2. Good thinking, but it doesn't appear so. I just searched the files, and the only reference to "torch" is to an "electorch" that you can mine with.

  8. This may be a dumb question, but what happens if you go back to Triskelion and say "ERGO?"

  9. It's so satisfying to see how gaming mysteries like this get resolved by the addict and this great community.

  10. The Basic and HEX edit Force is strong with this group of young Padawans... ;-)

  11. If it is PASSWORD 2, does that means what the first game had another password in it's ending? You haven't won the first game, so maybe you should check its files before tackling the last one.

    1. The first game doesn't have a winning condition. There is no mention of a password in its files.

    2. Seeing as Ergo is the second word in Cogito Ergo Sum, maybe it’s hinting that’s the whole password?

    3. That would make sense, but if so, the other two must come from the third game. COGNITO doesn't appear in the code for the first game or the second, and nothing about a password or passcode appears in the code for the first.

    4. I’m thinking the third game might ask for a as phrase and your meant to infer it from the Ergo part. Will see when you get to part 3

  12. Someone finally found a copy of Empires 3? I wonder what it's like.

  13. I did a bit more looking at the code that triggers the encounter to give you the password.

    225 DC = FN D(10): ON DC < 9 GOTO 228: PRINT "@0KL@": GOSUB 8: IF DC = 10 THEN RP$ = "SHIP EXPLODES!": GOSUB 261: GOTO 61
    226 FOR I = 7 TO 272 STEP 7: HCOLOR= FN D(8) - 1: HPLOT I,8 TO 279 - I,151: NEXT : FOR I = 8 TO 151 STEP 5: HPLOT 7,I TO 272,159 - I: HCOLOR= FN D(8) - 1: NEXT : PRINT R$"@L250Y@": FOR I = 80 TO 140 STEP 20: PRINT "@"I"XN@": NEXT

    There seem to be various paths leading to this code, so I'm not sure exactly what the "typical" way to get here is, but once here it looks like 10% of the time your ship simply explodes, 10% of the time you get the Lord of Light encounter, and the other 80% of the time you follow some other code paths that depending of you exact circumstances lead to various sorts of death, injury, etc.

    So it seems like this is meant to be some sort of lucky rescue when things go wrong that you'll see if you have enough characters die. I noticed on the entry for Empire 1 there was also a Lord of Light random encounter. So if this is really the only way you are meant to learn the answer needed to win the game it seems pretty cheap.

    1. Given how it works in the first game, I am 90% sure that your interpretation is correct. Since I didn't engage in a lot of ship combat in Empire II, it makes sense that I never experienced this encounter.


I welcome all comments about the material in this blog, and I generally do not censor them. However, please follow these rules:

1. Do not link to any commercial entities, including Kickstarter campaigns, unless they're directly relevant to the material in the associated blog posting. (For instance, that GOG is selling the particular game I'm playing is relevant; that Steam is having a sale this week on other games is not.) This also includes user names that link to advertising.

2. Please avoid profanity and vulgar language. I don't want my blog flagged by too many filters.

3. Please don't comment anonymously. It makes it impossible to tell who's who in a thread. Choose the "Name/URL" option, pick a name for yourself, and just leave the URL blank.

4. I appreciate if you use ROT13 for explicit spoilers for the current game and upcoming games. Please at least mention "ROT13" in the comment so we don't get a lot of replies saying "what is that gibberish?"

Also, Blogger has a way of "eating" comments, so I highly recommend that you copy your words to the clipboard before submitting, just in case.

I read all comments, no matter how old the entry. So do many of my subscribers. Reader comments on "old" games continue to supplement our understanding of them. As such, all comment threads on this blog are live and active unless I specifically turn them off. There is no such thing as "necro-posting" on this blog, and thus no need to use that term.

I will delete any comments that simply point out typos. If you want to use the commenting system to alert me to them, great, I appreciate it, but there's no reason to leave such comments preserved for posterity.

I'm sorry for any difficulty commenting. I turn moderation on and off and "word verification" on and off frequently depending on the volume of spam I'm receiving. I only use either when spam gets out of control, so I appreciate your patience with both moderation tools.