Ideograph by Five Finger Punch & Insane [web]

IDEOGRAPH by Five Finger Punch feat. iNSANE
for unexpanded Amiga 500 OCS 512 Kb

Released at Datastorm 2017

I started with this demo because Bjoppen/iNSANE kept
asking when I would code something for Amiga again.
There would not have been a demo without him!

I contacted Mygg/iNSANE and asked if he could make music for
me. I thought I had finished the demo but, I was wrong! 
Before long Mygg had dragged Corel/iNSANE and Premium/iNSANE 
into the project as well. Lots of graphics and three new 
parts were added. Big thanks to you guys!!!

Some short tech about each part for those interested:

- intro
  Shows bitmaps in sync with music and shakes the last bitmap
  using hardware scroll. Bitmaps are packed using Imodiums
  packer Punify. I ported the unpacker to 68000 for this 
  demo. The packer is basically a variant of LZ77 aimed at
  more resource constrained machines like Spectravideo 328 or
  ZX Spectrum.

- zooming and rotating rotozoom
  Copper chunky rotozoom using a prescaled bitmap
  for each z. Move it in sync with music using hardware
  scroll. Z calculations are done using Bresenham style error
  forwarding; not perspective correct.

- metaballs
  Saturation addition using copper controlled blitter.
  Basically use the blitter as a half adder on each bitplane.
  Combine the results and repeat. 
  Textmessages are sprites. Change colors in sync with music.

- logo
  Abusing hardware scroll to zoom horizontally 16px
  and using modulo to zoom vertically. Simultaneously set up
  blitter interrupts to scale the bitmap 16px. Then repeat.
  Zoom calculations are done using Bresenham style error
  forwarding. This part didn't work when I first tested it on
  real hardware. The error could not be reproduced in fs-uae,
  but fortunately in WinUAE.
  The logo is packed using Punify.
- spiral
  Polygon clipping using the algorithm described in the paper
  "A new fast method for polygon clipping", Maillot,
  1992. I could have just used bitplane pointers and
  faked it instead. Would have been both faster and easier.
  I actually coded this back in 1991 using homemade line
  clipping, but made a completely new implementation for this
  demo. Vertical white lines are sprites.

- simulation
  Verlet cloth simulation inspired by the paper "Advanced
  character physics", Jakobsen, 2003. Imodium figured out a
  way to do the calculations without using square roots.
  Background is packed using Punify. Balloon and sheeps are

- perspective sinescroll
  Pixelplotting and xor filling. The vertical lines are

- hand dots
  Particle system with about 1200 16.16 fixed point dots.
  The flashing stars at the end are sprites.

- heart
  Just a simple change between two bitmaps. Bitmaps are 
  packed using Punify.

- music
  Music playback using The Player. Sync with effects is done
  using E8x commands.

Morbid / Five Finger Punch