Apple II "Island Adventure" 32k Demo


Presented at Outline Online 2021 Demoparty (won 2nd place combined demo)

By -=DEsIRE=-: code by deater, music by mA2E, magic by Qkumba

Should run on Apple II+/IIe/IIc though you'll need a Mockingboard for sound. 48k is enough RAM.

Note that it's extremely rare for an Apple II demo to place this high at a European demoparty, especially in the combined demo category where it's competing with Amiga, DOS, and modern shader demos.

Video

Capture on an actual Apple IIe Platinum. Sorry for the sound, always have trouble with the Mockingboard capture for various reasons.

Sourcecode and Disk Image

You can get the disk image here: outline2021.dsk (140k), 18 May 2021

You can get the official entry zip here: outline2021_island.zip (85k), 18 May 2021

(Note, this is version 2 which adds support for Apple IIc)

You can get the sourcecode here in the demos/outline2021 directory of my dos33fsprogs github repository:
git clone https://github.com/deater/dos33fsprogs/
Vote for this at Pouet

Run-through of the Effects

First, you'll note how fast it loads from disk. It's using qkumba's qboot for fast boot and raw track reads. It loads from a raw disk image with a custom boot sector, no operating system at all. This also gives you more RAM to work with as you don't have to worry about preserving DOS at $9600-$BFFF.

Shimmering dSr Logo



This is using shapetables to draw the dSr logo, then cycling through the hires page and flipping the top "palette" bit on each byte which changes the colors from green/purple to orange/blue but also on Apple II this shifts everything a half pixel. Many emulators can't handle half-pixel shifts like this so it definitely looks better on real hardware.

The large number of dSr logos is an over-the-top response to a joking complaint that my 128 byte entry didn't manage to have room for any logos.

Lo-res Apple II



This is an apple ii image I made for one of my Apple II BASIC twitter bot entries. The initial Sierpinski is another joke, as at Lovebyte I managed to overdo Sierpinski a bit. Here though we quickly transition to the wire spark that's one of the themes in this demo.

The apple II drawing is a size-coded way of compactly drawing lo-res shapes using lists of rectangles.

Lo-res rotozoom



Lo-res rotozoom, I'm reusing this effect from my `Talbot Fantasy 7' RPG. It's been highly optimized for speed but still you can only get so high of a framerate on a 1MHz 6502. It's using a fast multiply routine (subtracting of squares) that takes up 2k of RAM for lookup tables.

Lo-res Wires



The full-screen wire effect. Originally a 141byte demo for the AppleII twitterbot. Some of these effects are inspired by BBC Micro bot demos, but unlike that machine the Apple II can't rotate palettes. Here we fake palette rotation entirely in software by having a 16x16 offscreen buffer with the pattern that has its colors rotated manually then copied to the lo-res display.

Lo-res Rotating Plasma



This isn't quite a plamsa effect but I came up with it when trying to make one. It's again using fake palette rotation while shifting the texture lookup co-ordinates to get a rotation effect. It turns out that the Apple II fixed NTSC 15-color lo-res palette actually has a few decent gradient colors.

Lo-res Water Drops



This one was inspired by an Atari 8-bit demo. It's done by randomly putting a new color bursts on the screen, then iteratively averaging the colors. It's a bit trickier than on the Atari because again we don't have a palette so we have to do an extra lookup to map the intensities to blue colors.

Lo-res Mode 7



I had some Mode7 (as in the SNES mode, not an actual Apple II mode) flying code, again developed for my TF7 RPG game. Usually the ship flies over a static texture, but I realized I could instead have it use one of the dynamic textures from one of the earlier effects.

Lo-res Another World / Myst mashup



I have demakes of both Myst and Another World for the Apple II. This is reusing some of the artwork I developed for that. It's compressed with LZSA, but even then we just barely fit in 32k (an Apple II+ has 48k, but we are using both pages of hi-res which are 8k each, plus lo-res, and we need room for our code). It was actually a tight fit, and the demo's load address is carefully chosen and the earlier parts of the code get over-written with graphics as the demo runs.

I originally was going to have it more obvious you were crashing into the Myst clock tower. The tentacle monster is from Another World (Out of this World). Lester from OOTW was originally going to be holding his zapper gun at you before getting grabbed, but that made no sense plotwise. Then it was going to be Sirrus from Myst, but I wasn't sure what weapon to have him holding. In the end it's just Atrus getting livid with you for breaking his clock puzzle, but don't worry, I'm pretty sure he escaped the monster unharmed, and probably was able to fix the tower by writing in his books (though that depends a bit on what part of Myst lore you believe in).

Myst Rocket



Our protagonist is contining the story from a previous demo (Apple II lo-res escape). With her ship crashed, she does the obvious thing and commandeers the Myst Island rocket ship. I always wanted to do that in-game. It's shocking I never did it by accident when trying to solve the impossible piano puzzle.

Hi-res Rocket



People always complain about my use of 40x48 lores graphics, so I've been trying to branch out to hi-res. It's so much harder. You wouldn't believe how much work it was getting that spaceship to hop across the screen like that without it turning blue every other frame. Also it takes 8 times as much RAM as lo-res graphics and is much slower and much harder to get right.

The graphic is a 3d-render a friend of mine made for me 25 years ago, which I also reuse in TF7.

In the end I felt like the ship looked a bit like Scott Manley's youtube intro, which is why his "Fly Safe" admonishment ends up in the credits.

Entropy Credits



I always like this effect, it's made using the Apple II shapetables and just Xor-ing random sized boxes over each other. The effect is by D. McKellar and I first found out about it as a 2-line BASIC contest winner "entropy" included on one of the Beagle Bros disks.

Music

This whole thing wouldn't have happened with out mAZE's soundtrack. It kicked me into gear to get this together over the course of a week or so. The music is using my PT3 player.

The music doesn't sync with the action as much as I'd like. I had it much better, but the music was having dropouts (a long standing Mockingboard problem I haven't been able to diagnose). It got a bit better when I moved the interrupts from 50Hz (divide by $4FE7, 1023*20), as the Apple II clock actually runs at 1.023MHz with every 65th cycle stretched) to having a divider of $4E20 (1000*20) which is what other demos (such as from French Touch) use. But after doing that of course all my carefully timed scene transitions were off and I didn't have time to fix it.
Back to my Demos