mjhelto, (edited )

I make no claim to this info, nor do I understand it, nor do I take responsibility for its use. As linked, I got this from a reddit post about the company and copy/pasted it into Obsidian so I’d have it. The code blocks are as close to the original as I cared to fiddle with. This is all greek to me but there are Python scripts linked, which may help you generate a key that works to register EV. Good luck!

Note: I had to split this into multiple posts cause it was not wanting to post the entire thing in one reply.


Ambrosia and Registration (Site)

Now that Ambrosia is gone, new registrations are no longer possible, and due to their expiring codes, using legitimate license keys has become difficult. We may hope to see a few of their games revived in the future but at present, only the original releases are available. Perhaps this case study on Ambrosia’s registration algorithms will be useful to some.

The Old System

In their earliest days, ASW didn’t require registration, but they eventually began locking core features away behind codes. All of their classic titles use the original algorithm by Andrew Welch.

Given a licensee name, number of copies, and game name, the code generator runs through two loops. The first loop iterates over each letter of the capitalized licensee name, adding the ASCII representation of that letter with the number of copies and then rotating the resulting bits. The second loop repeats that operation, only using the game’s name instead of the license holder’s name.

Beginning with Mars Rising, later games added a step to these loops: XOR the current code with the common hex string $DEADBEEF. However, the rest of the algorithm remained essentially unchanged.

The resulting 32 bits are converted into a text registration code by adding the ASCII offset of $41 to each hex digit. This maps the 32-bit string into 8 characters, but due to the limit of a hex digit to only encode 16 values, codes only contain letters from the first 16 of the alphabet.

The following chart shows an example using a well-known hacked code for Slithereens.


<span style="color:#323232;">			Iteration 1 ('A' in ANONYMOUS)
</span><span style="color:#323232;">Name: Anonymous             Code = $0 + $41
</span><span style="color:#323232;">Number: 100 (hex: $64)  ->        &lt;&lt; 6             ... -> Code = $FD53 FFA0
</span><span style="color:#323232;">Game: Slithereens                 + $64
</span><span style="color:#323232;">                                  ^ $DEAD BEEF
</span><span style="color:#323232;">                                  >> 1
</span><span style="color:#323232;">
</span><span style="color:#323232;">Add $41 to each digit:                                      Registration
</span><span style="color:#323232;">-> $41 + $F = $50 = P    ->      Reverse string        ->   ------------
</span><span style="color:#323232;">   $41 + $D = $4E = N                                       | AKPPDFNP |
</span><span style="color:#323232;">   ...                                                      ------------
</span>

Here is a Python implementation of the v1 system: aswreg_v1.py

Once you have the bit-string module installed via sudo pip install bitstring, you can test the output yourself with python aswreg_v1.py “Anonymous” 100 “Slithereens”.

  • All
  • Subscribed
  • Moderated
  • Favorites
  • piracy@lemmy.dbzer0.com
  • localhost
  • All magazines
  • Loading…
    Loading the web debug toolbar…
    Attempt #