`----- - --- ---------?\___/?\/zS!?\___/?\/--o
Alcatraz |
`----- - --- ------ -----\___/?\/!?\___/?\/--o
|
release name: Soil |
type: Amiga 500 - 40k intro |
release date: 19.01.2024 |
|
code + music: Virgill |
gfx: Critikill |
|
Amiga ASCII: NE7 |
|
rendering worlds, needs +512k to run |
|
|
Contact us @ PLK 555-NASE |
|
I (Virgill) embarked on a delightful |
8-week journey rekindling my coding |
skills on the Amiga. After a whopping 33 |
years, my mind was practically a blank |
slate. It all began when I pondered if a |
routine, akin to my Windows 4k intro |
"Xorverse," could somehow find a home on |
the Amiga. Excited, I fired up the |
fantastic VScode-Amiga-debug environment |
from Abyss, only to hit a snag - the |
good old Amiga could only handle |
rendering a maximum of 2 lines of |
graphics for those xor algorithms per |
frame. |
|
Undeterred, I decided scrolling could be |
a solution, and that's when the real |
challenges surfaced. How on earth do I |
create a copperlist? What's the secret |
to waiting for the beam in the lower |
part of the screen? And how in the world |
do I turn the graphics upside down? Ah, |
there's a modulo register; let's just |
brute force it until it looks good. |
|
Thinking I could turn this into a |
complete intro, I needed a music player. |
Choosing Aklang and LSP seemed like a |
no-brainer, but boy, it gave me more |
grey hairs than I anticipated. Shoutout |
to Platon42 and Leonard for coming to my |
rescue, helping me run it smoothly. And |
yes, I even had to dabble in assembler |
to coax a beat counter out of LSP, |
bringing back the basics of 68000 |
assembly. |
|
Next up on the list: sprites. It |
couldn't be that hard, right? Wrong! |
Creating data structures for sprites |
turned out to be a headache, courtesy of |
Commodore. I longed for the simplicity |
of the C64. Still, I somehow managed to |
showcase a spaceship, invaders, and a |
border. |
|
Enter Critikill, whose involvement |
injected new life into the project. His |
fantastic graphics and assets became a |
tremendous source of inspiration. Thanks |
a bunch, mate! |
|
Now, it was time to tackle the blitter, |
a step that filled me with awe. |
Brute-forcing blitter minterms |
(resulting in the fire-fx) was the |
initial approach until Leonard |
enlightened me on an easier way to |
calculate them. Blitting those bubbles |
ensued, discovering the comfort of |
interleaved bitplanes mode. One blit per |
bubble – how comfy! Crafting the |
copperlist for those looping bitplanes |
in two speeds took a week of logic. |
Blitting over the repeating bitplane |
borders? Another week :) |
|
The sine part threw another challenge my |
way. In C, plotting many dots wasn't |
feasible, so back to asm it was. Speed |
increased, but occasional jerky frame |
drops persisted. Thanks to Platon for |
the hint on the CIA player and how to |
fix the waitVBL routine! |
|
I could share more, like the |
satisfaction when a simple fade routine |
finally worked, or the art of filling |
the remaining 4k with a speech sample |
when coding fatigue set in. |
|
Major kudos to the insane Amiga coders |
who've mastered every bit and trick in |
this machine. It's downright crazy hard! |
|
Special thanks to: |
|
Soundy for the quick gradientmaster |
update. |
Magic for testing on real hardware. |
Nosferatu, Platon, Dan, Ok3anos for |
helpful tips. |
Noname, Hellfire, Artlace, and possibly |
others I forgot – you know who you are! |
_ .:!
<----- ----- - - - - - ----- ----\/----'
___________ /\
\ |_____ / \ ______ ______________
\ | | _______ / \ | /__________ _______| /
__\ | |/ ____// \| | __ \\ | ___ /
/ \___ | | Z___/__ | _| Z/ /_\___ |___Z/ /
/ Z/ | |_ / | |_ /_____/ Z/ !/ ______/--.
/ / |_____/_______/ |_____/ /\ !___/\____| Z/ |
/______/\______!NE7 / \`--/ \______! /____________!
/________________\