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.
(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