Introduction:
In May of 2024, Inercia Organisation and the Load ZX Spectrum Museum teamed up to organise the Synergy 2024 event in Portugal, dedicated to the ZX Spectrum home computer. With international guests and speakers coming over to celebrate its history.
As I had already released my Tiny DOS-Intro Album "Bakers' Dozen" the previous year at Inercia Demoparty so I was fully commited to supporting this event and promised psenough that I would help out on the invitation and release a Tiny Intro Album for the ZX Spectrum there, with all new content! ;-)
I had already started development on the Slanted and Jumper intros, so half the album's sizebudget was already called for. I had worked on some smaller stuff as well for various occasions, but when it came to searching for content to include on the album, I came to the shocking conclusion that a lot of it was never backup-up and got lost along with a laptop I left on a train a few month prior.
A bit of panic set in, especially since I also had a Trepaan demo to finish a few weeks later, but I was able to get a hold of myself and started working on the remaining content to fill the album. After a good 2 weeks of hard work, I was finally able to package up the album and submit it just in time for presentation at the Synergy 2024 event.
Slanted (64 Bytes, ZX Spectrum):
I started developing the intro after Blueprint as a personal challenge to basically replicate the effect from Blueprint without all the extra progression and sound woohaa in half the size, and to be fair it was a reasonably easy challenge to clear. I added a bit of slanting to the board effect to give it a unique character compared to my other intros that contained the parallax board effect (Patchwork and Blueprint). For a more detailed explaination on the technicals of this effect, you can check out the development blogs for those two intros.
After completion, this intro had been sitting on the shelves for a while. Initially I considered submitting it as an entry for one of the Lovebyte compos, but eventually together with Jumper ended up as one of the 2 major drivers for this Tiny Intro album.
Jumper (64 Bytes, ZX Spectrum):
As the second 64 byter on the album, this effect together with Slanted take up half the size of the album, but I think the larger size is worth it. I always had the intuition that a proper sine-less rotozoomer should be possible in only 64 bytes on the ZX Spectrum and i'm happy I was able to execute on that idea.
It all started with an idea to do a sine-less oscillator by adding a horizontal slant-value each 'scanline' and adding a horizontal slant value for each pixelblock. To make it work I wanted all of the calculations to stay within 8-bit register limits, basically resulting in 6-bit fixed point calculations and using the top bits to generate a simple 4-color AND pattern.
I started with a simple C prototype to see if my idea would be viable and could be achieved with only using the Z80 registers. Once that was up and running I ported it over to Z80 assembler and started optimizing the code. For a long time this thing sat in at about 72 bytes. It was only after the release of Bazematic when I went back to this and used the quick iteration of live-coding to shave those final bytes off.
Cypherpunk (16 Bytes, ZX Spectrum):
This is my 16-byte version a matrix-type hacker effect on the ZX Spectrum. It is done by continously adding a value to the accumalator, anding and subtracting another value to create these patterned gaps. After that we're doing a final bit scaling and color masking (in this case masking out the dark and light greens).
Here is the sourcecode:
ORG #6044
ld d,c
frame:
res 5,d
add hl,de
adc h
and e
sub e
rla
rla
and c
ld (de),a
inc de
jr frame
Cyclone (16 Bytes, ZX Spectrum):
This intro was designed as one part of a two-part 32 byte intro, but I couldn't intergrate it well enough with the other effect, so I decided to literally cut my losses and include it on the album.
Technically its a bit similar to the original 16 byte Ancoral, where a 16-bit register pair is used to
add to and using that for final color calculations. In this case the 'adder' is using the timervalue (23672)
directly
and was offset a bit to get this cyclone shape instead of the floor-type shape from Ancoral.
Sourcecode:
ORG #605b
ld d,c
frame:
res 2,d
add hl,de
ld a,(23672)
sub h
rlca
rlca
and 8+64
ld (de),a
inc de
jr frame
Medusa (32 Bytes, ZX Spectrum):
In this intro I wanted to explore some pattern animation. It was originally intended as a 16-byte intro, but once I raced past that limited early in development I then decided to add a proper outer-loop with framcounter, add some extra flair and simple sound. I think it eventually ended up at 27 bytes, but I think it is a nice addition to the album in terms of content variety.
Sourcecode:
ORG #6040
frame:
ld d,0x40
ld b,224
update:
ld c,32
xloop:
ld a,b
add c
sub l
ld h,a
ld a,c
sub b
sub l
and h
sub l
and 1+8+64
ld (de),a
inc de
dec c
jr nz,xloop
djnz update
inc l
jr frame
Bored (32 Bytes, ZX Spectrum):
After finishing lanted in 64 bytes, the next challenge ofcourse became to do a parallax board-type of effect in half the size. I knew that Hellmood had done this kind of effect in 32 bytes in X86 assembler DOS, so I was hopeful that Z80 would make this possible as well.
Unlike Slanted, which had a seperate iteration-loop for each character, I knew from the get go that I wouldn't have the sizebudget for that in 32 bytes, so I settled on making the effect hardcoded to 2-layers by creating the xy-logic pattern, shift one of the registers and do another logical operation, resulting in one of the layers remaining static.
This was one of the last productions to get done for the album and therefore didn't fully meet my original expectations, but then again having a smaller duplicate of the 64 byte version of this effect would have given the album content less variation, so I was happy to include this as well.
Chroma8 (8 Bytes, ZX Spectrum):
This is my ZX Spectrum implementation of a 'bit-roller' effect, similar to e.g. the 8-byte Max8room intro I made for DOS. I made a couple of variations for it and picked the one with the best colors / look'n feel. It uses some of the techniques I described in my Extreme ZX Spectrum Sizecoding seminar at Lovebyte 2024.
Here is the sourcecode:
ORG #5cb3
frame:
res 2,b
cpl
rra
ld (bc),a
dec bc
jr frameloop
Drizzle (16 Bytes, ZX Spectrum):
This effect is very similar to the Cypherpunk 16 byte intro on this album, but with a slightly simpler scheme to create the pattern and color-selection. Therefore I was able to free up just enough bytes to mask and output the colorvalue to the speaker for some additional sound.
Bonus: Ancoral8 (8 Bytes, ZX Spectrum):
Ancoral8 is a 8 byte version of my original Ancoral intro for Lovebyte Turbo.
It was created as a complement example for my Lovebyte 2024 seminar on Extreme ZX Spectrum coding.
I included it as a bonus to the collection to round off everything to 256 bytes total.
Conclusion:
It took a lot of hard work to complete this in time for Synergy 2024, just because of the amount of original content needed for this collection, but i'm glad that I just made it in time for the Synergy event. Thanks to Load ZX Spectrum museum and Inercia organisations for organizing the event!
For more information about this Tiny Intro album and its content, you can find it at demozoo
- Enjoy!