`----- - --- ---------?\___/?\/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      /              \`--/  \______!      /____________!
                         /________________\