
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
- An Apple IIe with 128k RAM and Mockingboard
- It will not work on a IIc or IIgs currently for various reasons. If I have time I’ll see about getting that to work
Credits
-
Code
-
4am – font, transitions
-
DMSC – ZX02 decompression
-
French Touch – Plasma
-
Martin Kahn – martimation
-
Oliver Schmidt – sound player
-
qkumba – fast disk loader
-
Deater - everything else
-
Grap…

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
- An Apple IIe with 128k RAM and Mockingboard
- It will not work on a IIc or IIgs currently for various reasons. If I have time I’ll see about getting that to work
Credits
-
Code
-
4am – font, transitions
-
DMSC – ZX02 decompression
-
French Touch – Plasma
-
Martin Kahn – martimation
-
Oliver Schmidt – sound player
-
qkumba – fast disk loader
-
Deater - everything else
-
Graphics:
-
grimnir – logos/monsters
-
Videlectrix – peasantry
-
The Pixel Apothecary – spooky house
-
Chad Savage – fiendish font (on title screen)
-
Music:
-
ma2e
Downloads
Disk Images
- This is version 1.0 (31 October 2025) monster_splash.dsk (140k)
- If you don’t have real hardware it should work in emulators. Applewin (be sure to enable mockingboard sound support) and MAME both tested.
- Try it on the in-browser emulator at archive.org
Source
- You can find it in the full git repository here: You’ll need cc65 to build it. https://github.com/deater/dos33fsprogs/demos/demosplash2025
You can vote for this: on Pouet
Mini-faq
- Q. Is this demo supposed to be impressive?
A. Well it depends a bit on how you stand on Apple II coding in general and the demoscene in particular.
- There’s not many Apple II demos to begin with, and as far as I know not many target the double-hires mode introduced with the IIe. Not many commercial games used the mode, and the ones that did often just used it for title screens because it takes up massive amounts of RAM and doing sprites (in software) is a huge pain.
- The wipe effects from 4cade by 4am/qkumba are amazing. They are doing some wacky things, like having custom graphics routines compiled on the fly to be run out of the zero page for speed/bank-switch reasons.
- Yes, yes, c64 fans, I can hear your condescending noises from here. To soothe yourself you can go load a demo off a stock 1541 disk drive and come back in an hour when it’s done loading.
- Also, with all due respect, “Boo Atari”
- Q. Since this demo targets Apple IIe and above, are you using any 65C02 opcodes?
A. In theory I’d like this to run on any Apple IIe that has 128k of RAM and double-hires support. Not all IIe systems were IIe enhanced (yes, they enhanced it twice) with the 65C02.
- Q. Are you accelerating the disk loads? It loaded fast!
A. The Apple II disk is a remarkable bit of Woz engineering. Coupled with qkumba fast disk code it leaves other alternatives like the Commodore 1541 in the dust.
- Q. Why does the music sound muddled?
A. We’ve done a lot of research on this, including getting some chips decapped. It turns out modern Mockingboard replicas use AY-3-8913 variants of the chip, which sound worse than AY-3-8910 for some reason (we’ve verified the chips are actually different at the silicon level). Also the Mockingboard has high pass filters on the output which messes with some chiptune effects (especially envelope-driven bass).
French Touch has been investigating it and made some circuit boards that let you use AY-3-8910 variants and bypass the filtering. I actually have some of these but haven’t tried it yet.
It’s also possibly my capture setup is making a mess of things too. It’s a USB/NTSC capture board running into a Linux laptop using OBS.
- Q. Why is there no Apple IIc / IIgs support?
A. This demo depends in places on reading the VBLANK register for some timing. All three advanced models of II (IIe, IIc, IIgs) have different ways of doing this.
IIc is the worst, I think you have to go through the mouse firmware in slot 4 and that’s trouble since I am playing Mockingboard music also on slot 4. It might be possible to get it working anyway but I don’t have hardware to test on.
The GS should be easier, as the VBLANK is just the inverse of Apple IIe. However I think interrupts mess with the language card bank-switch settings and I’m not sure how easy it is to avoid that. I should try and see though.
- Q. Why did you only have 8 sprites during the “woz” segment? Shouldn’t it have been at least 9 if not more? The C64 people are going to be on your case about that.
A. Yes, the original plan was to have 16, and it was going to be hex numbers (or maybe the code that gets printed at the end). I ran out of time to optimize code and as is it’s not really fast enough. I could have had something other than ball shapes, ran out of time for better graphics too.
- Q. Why does the peasant (robed figure) keep changing outfits? Is it the same guy?
A. Yes, it’s all the same guy. He keeps switching from hi-res to double-hires which necessitates a palette change. Also he’s purple when standing in the house for artistic reasons. Either that or he just put on his brown/orange monster hunting robes before leaving.
- Q. This is amazing! How can I support you?
A. I don’t really need any support, though if you have lots of money to burn feel free to donate it to the University of Maine ECE department. Even better, try to convince them to start a named chair of Electrical and Computer Engineering in the name of Chuck Peddle (who led the design of the 6502 processor, he went to UMaine). I’ve been trying to get the school to do this but I guess unless enough people start throwing money at them it’s not going to happen.
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. The audio “Monster Splash” was a last-minute addition and 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 it’s a lot easier to print text. |
Monsters Wave1 ![]() | Amazing monster graphics by Grimnir. The cool 48-wipe effects by 4am. 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, but then when the music is playing it wants its values, so had to make a huge hack that the interrupt handler can temporarily copy in the values it needs. Also it wasn’t well documented but the wipe stomps all over pages $70 - $8F. Luckily I could restore those from the code that’s originally loaded in AUX memory. Finally the Peasantry scenes are used with permission from 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 this was as many as I could get to fit. 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 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 this. 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 hardware so a bit slow. |
hgr8 demo ![]() | The code Woz zaps you with is my 8-byte hi-res demo for Apple II. 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. 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 <br>  | This is an effect by Martin Kahn found on "Side B" of the Apple II PintShop disk\. It's doing some clever things to have a palette cycling looking effect on a system that doesn't have palette cycling\. The Woz overlay is a bit of a hack because I didn't have the budget to do transparency properly\. |
| Final Monster <br>  | 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](http://www.deater.net/weave/rewind2/)\. 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 <br>  | 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](http://www.deater.net/weave/demos/)
---
[Other Apple II Projects](http://www.deater.net/weave/apple/index.html)
---
[Back to the VMW Software Productions Page](http://www.deater.net/weave/index.html)






