Introduction:
After the overwhelming success of the first Lovebyte party, everyone was excited for this second edition with more compos, seminars and other events coming our way.
Interstate 128 (128 Bytes, Atari XE/XL):
This intro was our main release for Lovebyte 2022. It was also my first release for the Atari 8-bit, so I wanted to come out of the gate with a strong release to show that I ment business.
Prototypes:
This intro started as a prototype in TIC-80 where I was tinkering with isometric shapes. Once this was starting to look like a viable idea for an intro, I started weighing my options in terms of what size and platform would be the best fit for this.
At first a DOS version was made in 128 bytes which was nice but didn't feel too impressive compared to some of the other intros I had done before in that size on the DOS platform.
Going 8-bit:
I then shifted my focus towards the Atari 8-bit, a platform that I just started to get comfortable with and already made a few test projects for to help me get to grips with the hardware.
Since the Atari 8bit multicolor bitmap mode already has doublewidth pixels this means you sort of get the 2:1 isometric perspective for free, so i started to precalculate draw the isometric road using the (slow) ROM plot routine.
After some work I finally had the road background working in 3 multicolor grayscale. Now i was thinking I could plot the 'car lanes' in a different color and use realtime rasters to enable and disable the car colors at the right time.
It was at this stage that i realised i needed at least 2 colors to do the lanes properly and given that black was already used as a background color that ment I only had 1 color left to draw the actual roads and some complex dithering was needed to differentiate between the different elements of the roads.
Optimisation Hell:
After the dithered implementation (which also extended to the car lanes themselves) and the raster routine to manage the cars driving in opposite directions, the intro was weighing in at around a whopping 150-160 bytes. I really didn't think it would be possible to squeeze it down all the way to 128 bytes. At some point I even asked Blossom if she could write a tool that would find byte-sequence matches in ROM with different XOR transforms and/or inverse reads (the reasoning that if the read+transform would be smaller than the tablesize, it would still be a win in size).
But slowly but surely there were several micro-optimisations I could do that brought the size down.
Some of the optimisations i found included, but not limited to:
* No sync on the raster-handling for the cars, which wasn't noticable due to the dither and the way the
cars moved.
* The fact that the dark gray for the road can be achieved by INC-ing one of the all-black colors.
* Abusing the Cursor increase on the ROM plot routine.
* Reusing index memory access and accumalator values for writing many things at once.
* Crunching down the size of the road pattern.
* Using undocumented opcodes all over.
In the end I was extremely proud of the seemingly impossible optimisations I was able to pull off for this intro and it seems that the Lovebyte audience appreciated the intro as well as it won the 128 byte oldschool intro competition by a large margin.
Magmarizer (32 Bytes, DOS):
After the success of Blake32 the previous year, I wanted to do something different for this edition of Lovebyte, so this time I went for an simple automaton type of effect, which would leave me some space to do some special colorization and sound.
Basically most of the intro is fancy setupcode for the palette and midi sound. Earlier version had speaker/covox noise, but i really wanted to have a single midi note in there, but couldn' get the sound i ACTUALLY wanted. Without the sound the intro was about 28 bytes so it sorta felt it could be possible. So after several versions i settled for the organ with note 26.
I think the palette can be useful for others in the future as well... Its fairly cheap to setup and looks better than just grey or blue imho
; -----------------------------------------------------------------------------
; Magmarizer - A 32 byte intro by marquee design
; (c)2021-2022 marquee design
;
; Greetings to all sizecoders and everyone at the sizecoding discord.
; -----------------------------------------------------------------------------
org 100h
; init videomode
lds bx,[bx]
mov al,13h
; palette and sound setup
palloop:
int 10h ; cd 10h (set organ instrument)
mov dx,330h ; midi port
popf ; 9d (play note + pops the flags 255 times)
es outsb ; 26 (note number)
xchg ax,dx
inc bx
mov ax,1010h
loop palloop
; automaton effect
frameloop:
lodsb
or al,[si-320]
dec ax
mov [si],al
imul si,byte 81
jmp frameloop
I'm happy with the result of this intro as I think it brought something fresh to the 32 byte space. And even though this intro won the competition, to be honest I think that Hellmood's 32 byte automaton, despite lacking a custom color palette, was slightly better overall in terms of how the bytes were spent because of the concept.
Webremix (16 Bytes, DOS):
This was an experiment to recreate/remix Hellmood's 32 byte darkweb intro without sound in 16 bytes.
As it was just ment a fun personal exercise, I decided to enter this into the Out of Compo showcase.
Here is the sourcecode:
org 100h
frameloop:
adc al,0x13
int 0x10
mov ax,cx
imul ax
mov al,ch
aaa
mov ah,12
dec cx
jmp frameloop
The intro is using the BIOS plot call to draw pixels at cx,dx and uses a clever trick to double as initializer for mode 13h on the first pass as well as mapping the colors to gray in combination with aaa.
Vapor8 (8 Bytes, DOS):
Where in the 8 byte space, most of the productions are somewhat directed accidents, this intro actually went through several stages of development with different versions before landing on the final version that was submitted to Lovebyte 2022.
Sourcecode:
; -----------------------------------------------------------------------------
; Vapor8 - a 8 byte intro by marquee design
; (c)2021-2022 marquee design
;
; Runs at about 8000 cycles
;
; Greetings to all sizecoders and everyone at the sizecoding discord.
; -----------------------------------------------------------------------------
org 100h
les ax,[si]
frameloop:
aas
stosb
cmpsw
das
jmp frameloop
I'm really happy how this one turns out and I think its my best 8 byte DOS intro.
Conclusion:
After a succesful first party in 2021, I was very happy to see Lovebyte 2022 continue its success with more competitions, events and releases. A big thanks to everyone who helped out and submitted to the party!
For more information about all the Lovebyte 2022 releases, you can find them at demozoo
- Enjoy!