Monster Splash for Apple IIe





Details

A spooky demo for Apple IIe.

Finished 1st place in the Retro Demo category at Demosplash 2025


Videos

Video capture from an actual Apple IIe Platinum:


The percussion sounds a bit off compared to the emulator. I probably need a better recording setup.

System Requirements


Credits


Downloads

Disk Images

Source


You can vote for this: on Pouet

Mini-faq


Code Notes

Overall Framework

This reuses the demo framework from my Rewind 2 port. The Vortextracker music is being played via the 6502 PT3 player I made. The graphics are converted from PNG by some tools I have and compressed with ZX02 compression.

Technical Issues

I won't go into details here, but the Apple IIe is a later model Apple II released by Apple in 1983. It was easily expandable up to 128k memory, but to access more than 48k you have to do some complex bank-switching. Click here for a summary of the Apple IIe memory layout

It's mostly backwards compatible to the original Apple II from 1977, but introduced some new graphics modes. So in addition to the hi-res 280x192 6-color mode it now has a 280x192 16-color mode. All those stats are borderline lies, it's all NTSC artifacting and a mess of interleaving. Double hi-res is worse as parts of the pixels are in the bank-switched RAM (and the split isn't on even pixel boundaries). It does have page-flipping but that's complex to do in double-hires. Click here for a summary of the double-hires layout

Other than that, no acceleration. No hardware scrolling. No hardware sprites. No palette. Just the 6502 and you.

The Apple II disk drive is an amazing feat of engineering, and the disk code I am using by qkumba pushes it to the limit. It's orders of magnitude faster than the C64 drive.

One downside of the amazing code by Woz to run the drives is it's all hard-real time cycle-counted code. Which means you generally can't read from the disk while interrupts are going. This is a problem when playing music at the same time. A lot of trouble went into cramming all 128k of RAM completely full of data at the demo's start so we don't have to access the disk mid-demo. It's in theory possible to read the disk very carefully when playing music but I don't have a setup for doing that yet.

Generally the Apple II has poor sound support, you have to bitbang the speaker without any sort of timer to help out. I do play a btc encoded digital sample at the title screen. For music we are using the Mockingboard which was a contemporary add-on soundcard using AY-3-8910 square-wave chips. It's playing PT3 Vortextracker music (a sound format usually found on ZX Spectrum or Atari ST).

Effects summary

Falling Letters
I've always wanted to make this falling letter effect. A lot of C64 demos do fun things with the boot message text before launching into the demo proper. On the Apple II there's a bit of a giveaway because when you sneakily switch to graphics mode, the color-killer circuit turns off so the text suddenly gets purple/green fringes. It technically might be possible to avoid that by cycle-counting and flipping from text to graphics mid-screen but didn't seem worth the trouble.
Title screen
This title screen is just plain hi-res, to save space. It's using the nice free "Fiendish Font" by Chad Savage. It's convenient that the Demosplash logo maps fairly well to the available hi-res colors.

There is some digitized audio here at the beginning though it's a bit hard to hear on my capture. It's a pitched-down version of me saying "Monster Splash" and it was a last-minute addition that nearly broke everything as I was trying to squeeze it in. I was trying to load it into "unused" memory that actually I had been using elsewhere and forgot about.
Logo Screens
Some nice double hi-res Desire logos by Grimnir. The cool red-line wipe is by 4am. As I probably mentioned these wipes are all from the "Total Replay" 4cade package which you should look into if you haven't heard of it before.
Scrolling House
This spooky house artwork is by The Pixel Apothecary. It's a classy place for a peasant to live, I'm guessing that's maybe not Rather Dashing, maybe his rich cousin.

This is regular hi-res too as it only needed four colors so dhgr would be overkill. It's twice as fast to scroll, and also a lot easier to print text in plain hi-res mode.

In later scenes when you do see text in double-hires mode it's actually doing sub-pixel rendering in order to fit 40-columns across. I had to hack up my conversion utilities to handle this properly.
Monsters Wave1
Amazing monster graphics by Grimnir.

The cool 48-wipe effects by 4am from the 4cade/Total Replay project. Getting these wipes to work was a huge pain, as they use the *entire* zero page (yes, all of it) so I have to back up the zero page before/after, but even then when the music is playing it wants its zero-page values, so had to make a huge hack where the interrupt handler can known a wipe is happening and temporarily copy over the zero-page values it needs. Also it wasn't obvious at first but the wipe also stomps all over pages $70 - $8F. Luckily I could restore those pages easily because as side-effect of loading the relevant values are still backed up in AUX memory.

Finally the Peasantry scenes are used with permission from Videlectrix / the Brothers Chaps.
Monsters Wave2
In addition to more amazing monster graphics by Grimnir the story progresses with some scenes borrowed from the Homestar Runner "Peasant's Quest" game (which I have a mostly completed Apple II demake). This is what the game would look like in double-hires, my demake is only in regular hi-res as "good graphics" take up twice as much space and are 10 times as complex.

I had hoped to have a lightning animation on this screen but ran out of time and space for it.

Grimnir actually made many more graphics (and more that are full color) but I wasn't able to fit them all in memory.

The graphics are compressed. At first just with ZX02 compression, but I later found that the really weird Apple II double-hires doesn't compress well (it packs 7 pixels into 4 bytes in a complex way that is interleaved in banked memory, and the actual lines on the screen are also weirdly interleaved in hi-res fashion). If instead I save a raw normal bitmap with 2 colors per byte, things compress much better and I can repack to double-hires in software. This is a bit slower though and since I only have 8k of scratchpad RAM it's why some of the image decodes seem to pause halfway while decompressing the second half.

I wanted to use some more of the 48-wipes here but ran out of RAM to hold things. Given more time I could have made it fit, but instead you get a fizzle wipe (also by 4am) instead.

Wizard of Woz
This is a parody of the C64 "nine" demo by lft. I originally had grand plans for the Apple II version. Whizzing around sprites, transparency, maybe the letters for the code snippet flying around, an animation of Woz taking off his hat, maybe him riding a segway. Too complex though, only barely have double-hires sprites going, and as we can see since it's all in software so a bit slow.

In retrospect though I should have had at least 10 sprites, even if it was slower. I'm kicking myself for not doing that. I was low on time and generating the co-ordinates for the circle was much easier with a power of two number.
hgr8 demo
The code Woz zaps you with is my 8-byte hi-res demo for Apple II. (You can read about it in more detail in the September 2025 issue of "Juiced.GS" magazine)

If you enter that code after a fresh boot to Applesoft BASIC it will show approximately this effect. I'm faking it here though because the effect depends on the Applesoft ROM being mapped in, but we've disabled it because we banked the ROM out to get more RAM (and also because the interrupt handler lives there as well).

If you want to try it on your own Apple II/emulator, here it is again:
CALL -151
B8: 2C EA 20 F4 F3 20 D8 F3 
BDG
Martymation
This is an effect by Martin Kahn found on "Side B" of the Apple II PrintShop disk. It's doing some clever things to have a palette cycling looking effect on a system that doesn't have palette cycling. (It makes clever use of the fact that Apple II hires has 8 colors but two of them are black and two of them are white).

The Woz overlay is a bit of a hack because I didn't have the budget to do transparency properly.
Final Monster
This is what started the idea for the whole project. I had some code that could do multi-color variants of a greyscale 4-color double-hires image. This came from my rewind2 proof of concept.

The plasma overlay was a happy accident when trying to make a double-hires plasma effect. It's a variant of the FrenchTouch "Plasmagoria" plasma but in double hires. It's actually what you get when you run the orange/blue hi-res version (from my second reality port) unchanged with double-hires enabled. Due to NTSC artifacting it gives a really nice almost iridescent look. Completely unintentional.

The reason the background image is still visible too is because the plasma is only drawing every 4th row (I think it's 4th, too lazy to check right now) for speed.

I was going to make a "proper" double-hires plasma but unpacking/repacking all the pixels sounded exhausting (and slow) and the alternative seems like it would have been an enormous amount of lookup tables. This particular chunk of demo has to fit in 4k so not a lot of room for something fancier.
Credits
Re-using some vertical scroll code from previous demos, with some minor changes. Be sure to stick around for the after-credits scene!

Development Notes

31 October 2025

Been working on this for a month. Really difficult as it was an extremely busy time with work and family. Did finish before the deadline with an hour or so to spare.


Other VMW Software Demos
Other Apple II Projects
Back to the VMW Software Productions Page