Introduction:
This intro started as an experiment during one of my lunchbreaks at work. I had an image in my mind of a futuristic neon cityscape that I might be able to draw using a minimal set of line commands. So I booted up an instance of TIC-80 and started a prototype of what this potentially could look like.
Once I had a rough idea of what the scene would look like, I figured this could be a thing for the Atari XE/XL because of the (very slow) rom-routines for linedrawing available for the platform.
Visuals
The intro runs in Graphics15 mode (320x192x4 colors
) with using color1 instead of the background color for the raster. They are drawn by a very specific structure that contains:
startposx,startposy, numlines, startcolor, drawmode
The drawmode controls the way the lines are drawn:
- Draw lines from the center to the edge or in rectangle configuration.
- Single color or cycling colors
Here are some of the different steps to give you an idea of how the background visuals are built up:
Step 1: Clear screen with color1 and draw diagonal lines from center
Step 2: Add bottom rails and cut out rectangular gaps

Step 3: Add building fronts and bridges

Once I had the first version of the drawing up and running, the intro was way over budget because of the amount of data used, so some optimisation had to be done down the road.
Adding Sprites
Up next was adding sprites of moving metrocarts to the image, to make everything come alive a bit more. However doing sprites on an Atari 8-bit is not that trivial and only a minor step up from racing the beam on the Atari 2600. Yes luckily for horizontal movement there is an option to set a horizontal position directly instead of having to 'hop' towards the position in small steps like on the 2600, so that is nice.
Vertical positioning and updating the spritedata each scanline is still a bit tricky. You can either choose to count
scanline positions and change graphics by hand on the correct positions, or setup a sprite dma that will copy a long strip of memory (defined by PMBASE
) to the spritedata for each scanline. Picking the best option differs for each usecase, but since there was only horizontal movement going on and I wanted to add some rasters to the visuals as well, I opted to pay a little extra sizepenalty in the setup at the start and have the sprite updates be easier down the road.
Audio
I wanted to add a little audio to add some atmosphere, but the budget was tight. Luckily I knew that just sliding
values inside one of the audio registers will give a nice small audio loop with blips and noise, so I knew I could
get some cheap sounds by inserting a sta $d203
somewhere in the horizontal metrosprite update code.
Optimisations
Early optimisations were done by basically rolling 3 different things into the single 'draw lineboxes' loop during init. This includes setting the colors, updating the spritedata in the PMBASE and ofcourse drawing the actual lineboxes.
Sadly a few features had to be dropped to make the final size. In earlier version there were 'cars' moving about on the perspective roads at the bottom in a similar way as for example our interstate128 intro.
Further optimisations contained minimizing the drawing tables as well as hardcode initializing the 2 metro sprites at a fixed vertical position and keeping the color at zero/init value to save on initialisation. Any registers that needed setting I was checking if there was a value in the X,Y,A registers already I could use or otherwise get the right bitpattern in with a INC,DEC or Shift to save a few more bytes.
Finalisation
Final steps included finalising the raster-effect and finding the final color scheme before finally ending up with the released version you see below. Thanks a ton to Blossom who had some great insights and tips during the development as well as setting the final tone and concept for the production. And with the change in visual tone, we decided to call it Brave New World after the Aldous Huxley book as the final visuals felt a bit like what we imagined New London to be like from reading the book.
Release
This was a nice and challenging production to work on that slowly got shaped into the eventual release. The final release of this intro was delayed a bit and finally released at CAFe 2022 where it took first place.
For more information, you can download the intro at: demozoo.org