Step8: HAWK First demo - November 1989

At school, I met PhilippeJohnny-B«) who was also using an Amiga 500 to create arts and musics. We decided to create something together. I would create the assembler program and he would create art and musics.

We spend many days and nights talking and creating this demo. It is a single screen demo (with a small intro).

There is a small story in the texts. It is in french but I can explain what is said inside: This is the story of 4 characters: Johnny-B, Me (Oriens), the computer (Amiga), and the manufacturer (Commodore). During the demo, the computer is taking control of the demo and add some text. It is a 4 characters dialogue.

I can not remember why we decided to called ourself «Hawk«. I guess this was because a hawk looks nice. The logo with the colored hawk is really nice. The starting text said:

«Once uppon a time. In a land of confusion. A band was reborned from dust. And it was called: Hawk»

This was surely a reference to Genesis. The dust is something linked to the phoenix (close to hawk 🙂 ). So we were reborned and born at same time. Nice shot.

As the text had many special characters, we typed it into a basic program (surely gfa basic, I do not have it anymore) and then convert it to assembler table.

Demo can be downloaded there: Hawk_1989_FirstDemo.dms

Run it on a A500 with standard 512KB ram or WinUAE with similar configuration.

Source code and data are there: Sources

Sadly some data are corrupted but the source code is complete (see commented version HERE).

As you can see the source code is very long. Assembly is a fast language but instructions are very basic. So everything take lot of lines.

Here is the full video of the demo: (12 mins)

Music

Music is a cover of Alba – Only Music Survives (1985).

Intro of music features voices from «Dragnet» (radio or TV show, I do not know).

«(Their job…) to enforce the laws, and preserve the safety of decent citizens.»

Music module can be downloaded here (109 Kb)

Arts

The first messages are in «hi res», that means 640×512 pixels resolution.

The main screen is composed of 4 parts:

1/ The running men (3 plans, 8 colors, 1 transparent)

2/ Small scrolling. 1 plan (means 1 color)

3/ Big scrolling. 1 plan (means 1 color)

4/ The «Hawk» logo (4 planes, 22 colors).

A bit of technical infos

Check the commented source code: DEMO.S

The commodore Amiga 500 have been released in 1987. The main cpu is a 68000 motorola at 7 Mhz. The fastest language to program is directly 68000 assembly. There is 512 Ko of RAM. There are dedicated processors that make that machine very interesting. We’ll see that later. The display can be 320×256 pixels up to 640×512 pixels. It can display 32 colors from a palette of 4096 colors.

Back to the demo. There are 4 running characters and two scrollings. Horizontal scrolling is done using the «blitter» processor (made for copying data). Once one character is out the screen on the left, another one is copied on the right. The interesting part is about the colors and reflect effect. It is using the processor called «Copper». This is surely one of the main technical fabulous thing of the Amiga. The «copper» is a processor that can execute «lists». These lists are synchronized with display. It can wait position on screen and then put value in «registers».

The registers you can change are the one located in memory $dffxxx. A complete list of these registers is HERE. You can change colors, scrolling values, video pointer, and many others.

For example, in this demo, you can see:

dc.l $300ffffe,$01800000
dc.l $310ffffe,$01800001
dc.l $320ffffe,$01800001
dc.l $330ffffe,$01800001
dc.l $340ffffe,$01800002
dc.l $350ffffe,$01800002
dc.l $360ffffe,$01800002
dc.l $370ffffe,$01800003
dc.l $380ffffe,$01800003
dc.l $390ffffe,$01800003
dc.l $3a0ffffe,$01800003
dc.l $3b0ffffe,$01800004
dc.l $3c0ffffe,$01800004
dc.l $3d0ffffe,$01800005
dc.l $3e0ffffe,$01800005
dc.l $3f0ffffe,$01800005
dc.l $400ffffe,$01800006
dc.l $410ffffe,$01800006
dc.l $420ffffe,$01800007
dc.l $430ffffe,$01800007
dc.l $440ffffe,$01800008
dc.l $450ffffe,$01800008
dc.l $460ffffe,$01800009
dc.l $470ffffe,$01800009
dc.l $480ffffe,$01800009
dc.l $490ffffe,$0180000a
dc.l $4a0ffffe,$0180000a
dc.l $4b0ffffe,$0180000a
dc.l $4c0ffffe,$0180000b
dc.l $4d0ffffe,$0180000b
dc.l $4e0ffffe,$0180000c
dc.l $4f0ffffe,$0180000c
dc.l $510ffffe,$0180000d
dc.l $520ffffe,$0180000d
dc.l $530ffffe,$0180000e
dc.l $540ffffe,$0180000e
dc.l $550ffffe,$0180000f
dc.l $560ffffe,$0180000f
dc.l $570ffffe,$0180000f
dc.l $580ffffe,$0180000e
dc.l $590ffffe,$0180000d
dc.l $5a0ffffe,$0180000c
dc.l $5b0ffffe,$0180000b
dc.l $5c0ffffe,$0180000a

Each line is composed of one wait instruction (from line 48 (0x30) to line 92 (0x5c) ) and one register change: $dff180 is the register for background color (color 0). The copper can only change register after adress $dff000, so only need to write «180» to access $dff180. This is a nice vertical blue gradient. This is the gradient behind running character. So using the copper, you can create color on screen using no pixels. The bitplanes are free for other uses.

The «water» effect is also done using copper list. The video pointer can be changed so for each line, we change the video pointer to the previous lines. The wave effect is done using the scrolling register.

That means all gradient colors and water effect are not using any cpu.
That also mean that the number of colors is higher that is really displayed. There are 27 colors displayed with bitplanes. The total colors one screen is 88. The 61 extra colors are created using the copper.

The source code is complete. But some data are corrupted. Source code is a bit ugly and have some strange labels («hihi» «superman»). All is written in assembly 68000.

A game have been release during that time, it was «Shadow of the beast». The graphics and background animation were fabulous. As you can see the copper is used for creating the back gradient. It is also used to create all the parallax scrolling, but we’ll see that later.

After the demo have been finished

The demo was sent to our contacts (by postmail! no internet 🙂) and it also have been added to one compilation (dms link above). One of my friend Laurent «GLG» (means «Gaston LaGaffe», famous comic strip character) added it into one of his compilation. I coded one small intro for this pack.

And here is the menu of that compilation

No idea if lot of people saw this demo but we were quite happy with it.

Step7 Step9