I spent some quality time reading the Essential Data Duplicator manual, as one does. This was the best bit copier ever written for the Apple ][. It received updates until 1993 (!) and never branched out into general disk/file utilities. It was what it was and made no apology.
1/
The manual is well-written, extremely technical, and pulls no punches. Here it accuses the author of Locksmith (another popular bit copier) of inventing and productizing a copy protection scheme, i.e. playing both sides.
2/
And here it reveals how the popular "Lock-It-Up" protection worked.
3/
Like several other bit copiers, Essential Data Duplicator invented what we would now call a DSL (domain-specific language) for declaring how to copy specific disks. Here is its annotated DSL routine for copying "Lock-It-Up".
4/
In prose, this searches the track buffer for the address prologue for track $00 sector $0A, and replaces the entire data field with $00 nibbles. Due to limitations of the Apple ][ disk hardware, you can write $00 nibbles but they will get read back as random data.
5/
Since EDD can't distinguish this random nonsense data from, you know, actual data, it includes this routine to rewrite the sector. Note that the routine is not executed by default. You have to enable it per-disk.
6/
This is how all bit copiers worked. They included specialized routines for copying specific disks, but they punted the analysis to the end user. Then they sold parameter lists as updates, either on paper or on disk, that mapped programs to the routines that could copy them.
7/
There was a LOT of domain knowledge in these parameter lists, but sadly, there was not a lot of quality control. Many were submitted by end users. Others were scraped from questionable sources. Everything was aggregated and nothing ever removed, because you never know.
8/
Publishers frequently rereleased popular titles with new protection (which was productized and sold by disk duplication companies), so... maybe try this? Or that? Or one of these others from another company?
9/
There were rumors.
10/
There was history.
11/
There were digs at competitors.
12/
There were exclamation points!!!
13/
There was even the occasional admission of defeat.
14/
I knew basically none of this history when I started cracking (in 2014) or started writing Passport (in 2016). It's interesting to go back now and compare the collective wisdom of 1993 with what we've (re)learned in the modern era.
15/
For example, I rediscovered the "Lock-It-Up" protection because I kept finding it on individual disks, and I eventually realized it was productized, but I didn't know it had a name. Passport just called it "the $BB00 protection check" until yesterday: github.com/a2-4am/passpor…
16/
I rediscovered the "generic bit-slip" protection in 2015, reverse engineered it by looking at the protection code, and called it the E7 bitstream.
I was not the first to figure out any of this. Here's a great write-up on "generic bit-slip" protection by Michael Kelsey in 1993, including a method of resynchronizing the bitstream: groups.google.com/d/msg/comp.sys…
18/
I later minimized qkumba's resynchronization method down to a 12-byte patch, which I included in Passport. github.com/a2-4am/passpor…
20/
What I'm saying is that, in 2043, someone who's never heard of 4am or qkumba or Passport is going to rediscover how Apple ][ copy protection works, from the bits up, and I hope they enjoy it as much as I have.
That's not where I thought this thread was going, but okay.
/fin
• • •
Missing some Tweet in this thread? You can try to
force a refresh
One of the improvements in the (unreleased) Total Replay 5 is a massive influx of super hi-res box art. @helix_nrg and other Apple IIgs fans have been on a mission to find, scan, and retouch the original artwork for Apple II games.
A lot of people have fond memories of their favorite Apple II games, but have you ever even seen the original box? But could you pick the box out of a line-up? Did you even know they came in boxes?
"Captain Goodnight and the Islands of Fear," scanned and retouched by @helix_nrg
Funny story about this game: it basically doesn't exist. The company was pivoting away from the Apple ][ right as it was going to production. The number of copies sold rounds to zero.
A classic crack exists and appears complete (modulo the defaced title screen). This crack uses side B of the classic crack, which does not appear to be defaced. (It contains compressed graphics, non-trivial to change without proper tooling.)
Shortly after the release of Total Replay v2, @a2_qkumba and I embarked on a month-long refactoring binge, which eventually (d)evolved into the most ridiculous game of 6502 code golf you've ever seen.
1/
My first major refactor was to create the global variable gGameToLaunch and keep it updated. Previously, pressing RETURN would invoke a context-specific routine that figured out which game was showing on the screen, then launch it.
This commit <github.com/a2-4am/4cade/c…> creates gGameToLaunch and modifies routines throughout Total Replay to keep it up to date. Whenever we load a new screenshot — whether in search mode or browse mode or attract mode — we update that single variable.
First off, sectors on tracks are normally delimited by "sync fields" of nibbles that allow the disk controller code to get in phase with the nibbles, no matter where it starts. (It can't tell where it is within a track when it seeks to it.)
"Sync" nibbles are usually eight "1" bits (0xFF) followed two "0" bits. Because reasons (read "Beneath Apple DOS"), this allows 6502 disk reading code to get back in sync quickly if it happened to start reading data in the middle of a byte, which happens most of the time.
Furthermore, the Disk ][ has a hardware limitation that limits the stable representation of data on disk: it can only reliably read two "0" bits in a row. This is why sector data can't just be stored as-is on disk; there has to be an intermediate format (6-and-2 encoded nibbles).
In 1981, @jmechner tried and failed to publish an Asteroids clone for the Apple II. It looked like this:
38 years later (so, this year), @a2_qkumba ported it to ProDOS and we included it in "Total Replay," our pack of 200+ Apple II games <archive.org/details/TotalR…>. Our version looked like this.
Shortly thereafter, someone reported a bug against Total Replay that Asteroid Blaster had corrupted graphics. This is ironic since Jordan had gone to great lengths to ensure that the asteroids looked exactly like the original, and this is why the game was ultimately canceled.