Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
  You are not logged in - nap
Dialogue   [2004]

Dialogue Released by :
Focus

Release Date :
24 October 2004

Type :
C64 Demo

Released At :
X'2004

Achievements :
C64 Demo Competition at X'2004 :  #1

User rating:********__  7.8/10 (32 votes)   See votestatistics
********__  7.6/10 (16 votes) - Public votes only.

Credits :
Code .... Ben of Focus
Music .... Hein of Focus, Onslaught, Vision
Graphics .... Hein of Focus, Onslaught, Vision
Design .... Ben of Focus
  Hein of Focus, Onslaught, Vision
Idea .... Ben of Focus
  Hein of Focus, Onslaught, Vision
Loader .... Krill of Plush


SIDs used in this release :
Dialogue (Wally's Tetris Poem)(/MUSICIANS/H/Holt_Hein/Dialogue_Wallys_Tetris_Poem.sid)

Download :

Look for downloads on external sites:
 Pokefinder.org


Production Info
Submitted by Ben on 7 March 2005
Reviews Vandalism News 43:

Jonatan "Macx" Forsberg:
This demo is proof. There is no going back. The demo scene is bound to break new barriers in order to survive, and today it flourishes. The reason: there are no borders for the imagination. The way it passes between the different parts, the new shapes, the awesome relaxed pace. Brilliant! I should not complain as I cannot. The only way forward in a big circular move.

Johan "Hollowman" Bengtson:
Starts off with a magnificant piece of hires which made me freeze my C64 to see what tricks were used to get all those colours (answer: none), continues with some neat impossible shapes to the sound of a great tune, and the production is only let down by the flow and the vector part which doesn't quite cut it.

Eddie "Ed" Svaerd:
Focus was perhaps never famous for their "fast" paced style, although some of their old rasterparts, d.y.c.p. and techtech routines made your brain split in half back in the good old 1990s. Today Focus seem to be harder than ever before with massive backup of the work of Jeroen Tel. If Rewind was paying homage to the past, this demo simply splices way through much of the rubbish and does it in still a similar style to the work of Iopop. Still, this is harder, not so much because it has more ingredients, but because it is funkier and bold in a different way than for instance in comparison to Iopop. This is most obvious if you consider the slow paced shifts between the screen, but with the bold colours playing on the greyish backgrounds. I don't think the ball and square routine was designed for the hiresolution mode in the first place, but it was a brave move. None in the 1990s would have called this anything else than a bug I guess. But as time changed, Focus shows that it's possible and it's not even fake.

Linus "Puterman" Akerlund:
While it's all very fresh and nice, this feels very empty. It's slow and repetitive. The only time it feels like something is actually moving is during that squares and circles part. It has some some nice ideas, but it's not like I feel like watching it again. Maybe if the music had been at least a little bit interesting.

Henrik "Zarch" Matzen:
Very stylish intro.. from the c64 screen and into the demo itself! Cool Tetris-effect building up the picture, while showing nice transparent vectors -- rocking!
Production Info
Submitted by Hein on 6 December 2004
Biggest thrill when watching the demo at the big screen was to see that the loader managed to load the tiny bit of code fast enough...
Production Info
Submitted by Hein on 26 October 2004
The sunflare is a coincidence. Either, the sun shines in US, or, it's a bomb.

Its different for every viewer, almost random.
Production Info
Submitted by Ben on 23 October 2004
Dialogue/ Focus, the story.
=====================

In the text ahead, I (Ben/Focus) will elaborate on technical details and the history of the demo released as Dialogue during the X2004 party in Hengelo, the Netherlands.

The basic idea concerned using the tension between discrete and continuous, digital and analogue, square and round. In practice this turned out to be pictured by using round and square forms, dynamically building graphics from blocks, using different graphical modes, employing rough transitions (rather than ‘sinus’ transitions as Hein used to call them) and last but certainly not least the gradual versus the discrete changes in the music and the use of ‘discretely’ different scales.

The tune featuring in the demo is titled “Wally’s Tetris Poem” and is created by Hein. The graphics were also done by him. Some of the objects featuring in the isometric bob-routine are heavily inspired by the Japanese perspective graphics by Oscar Reutersvärd (1915, Stockholm).
The actual programming was done by me, Ben. The multiplication routine used was first proposed by Dennis/ Paradize. The circle routine was first proposed by Adam/ Focus/ Paradize, and the basics behind the routine did withstand the test of time. I have always felt a great respect for these two very talented programmers.
The loader routine was written by Krill. He was so kind to deliver a freshly updated version only a week before the party which solved a tumbled bit issue I was experiencing. Gunnar pushes the limits of the Turbo Assembler syntax causing cross-assemblers to choke on it.

This demo would not have been if the Focus team was not experiencing this revival. It is largely supported by the forum Jayce/ Focus started, allowing low barrier but structured communication and broadcasting. Also the evenings at our IRC channel are great fun.

Hein and I gradually developed the ideas behind this demo by intensively communicating about further employment of basic ideas and by developing our storyboard along the way. We have received some criticism about the rather static character of the demo, which –apart from the fact it is part of the style of the demo- is partially due to the lack of time.
Anyway, let me elaborate on the effects featuring in and the code-base required for the demo, in a chronological fashion.


The director routine
--------------------------
A director routine is implemented which allows you to instruct the main IRQ to execute a particular routine at a particular fashion and changing graphical banks. First of all, a process running outside the visual part of the screen for updating the currently visible effects, a second process running within the visual part of the screen which can be used to prepare data for upcoming effects and a third process running outside the IRQ used for stuff like the loader, memory moving, initialization and executing of the funk effect (described in more detail below).
The director routine actually is nothing more than a routine interpreting an array of records which contain information on which routine is to be executed by what process and for how long.
This allowed Hein to time the effects to the music as he felt was best.


The Tetris screenfill routine.
-------------------------------------
The character screen is divided into a map of 40*25/4 = 250 Tetris blocks. First of all, a Random Number Generator is used, based on $dd0x values to put blocks in a pseudo-random order. The system clock setting is used as seed value for the RNG, rendering the RNG quite predictable if one uses autorun emulators. If you are interested in the possible patterns, please start the demo manually, causing the clock setting to differ with great likelihood.
A small editor was written for Hein to be able to produce index tables for the order in which block are put onto the screen.


The isometric block routine.
-------------------------------------
The idea actually emerged when seeing the game Crystal Palace (1985) during the year 2000. In itself, the use of isometric figures is nothing new, and it has been used in many games, including Last Ninja, and several demos probably. However, using the Japanese perspective principle to create impossible figures is quite new to C64 demos.
Several objects have been created of which some are heavily inspired by the graphics of Oscar Reutervärd and M.C. Escher. The demo however contains two objects that emerged from Hein his creative imagination, the first is “Hip and Hap” showing a gap in a wall and a 3D plus sign in space possibly fitting in this gap (and if you look from a distance, should not-just-faintly look like a Yin&Yang sign), the second is “Impossible Love” showing two wire frame figures (a man and a woman, although it is hard to tell them apart as genitals are absent) made up of basic Reutervärd forms. Also the FOCUS logo was created by Hein.

In order to describe a basic object like the FOCUS logo by Hein, you need hundreds of entries for the bobs of the size I implemented. In order to alleviate ourselves from the daunting task of describing each and every bob in logical coordinates, and to save precious memory, I implemented a line routine allowing you to describe a series of bobs on a single line, reducing the number of entries to a fraction of the original.


The Tetris Game-like constructed logo.
----------------------------------------------------
The idea and the initial effect actually are quite old, i.e. they emerged during the winter of 1993 and spring 1994. This was one of the last routines I wrote before I stalled my activities on the C64. When I resumed scene activity in 2001, Marco expressed his love for the effect, so I decided to rewrite large parts of it.

In order to record the movement data, the game of Tetris has been written (I could however keep myself from implementing the disappearing of full lines). As the content of the actual blocks is HIRES bitmap (rotating LORES pixels ninety degrees is not what is desired), the graphics and color specifications are to be stored as well. The initial graphics featured a neat, maximally colored hires logo done by Bas Wassink (Compyx/Focus). This simply allowed me to use two sprites for each char in the Tetris block, adding up to eight sprites.
The graphics however needed an upgrade, so Hein produced a picture of a globe. The logo itself was not pushing the color limits, but Hein wanted the blocks to emerge from behind a wall. This in itself required several sprites as even the wall consisted of two colors itself. So, I had to depart the two-sprites-per-block-char strategy, making it fairly difficult to describe each block using five or six sprites. Luckily only a limited number of blocks contained four colors, although in multiple characters. After puzzling and changing block settings during several days I was able to employ multicolor background sprites to describe the blocks in 5 sprites.

The effect is actually more memory consuming than one would expect. One needs the HIRES bitmap, the multicolor background sprites (with the right configuration of the three colors), the block movement data, the block information records (containing the indices of the chars making up the Tetris blocks, the color configuration), the font and screen-color maps, the wall sprites and last but not least the code.


The circle and square funk effect.
--------------------------------------------

The effect known as the funk or ph0nk effect consists of two separate objects, the circle and the square, each with its own history. Please note one can change the ORA/EOR mode (i.e. how the intersection of either the same and different typed object is to be plotted) and the HIRES/LORES fill mode, run-time. I have tried to compile a couple of interesting effects showing the possibilities the routine allows me.

Let me first elaborate on the circle routine and later discuss the square routine.

At the end of the year 1990, Dennis Admiraal (Dennis/Paradize) produced a multiplication routine based on the principle of natural logarithms that n*m= Exp(Ln(n*m)) = Exp(Ln(n)+ Ln(m)), which actually is the work of the brilliant John Napier (Scotland, 1550 - 1617).
Dennis generated an LN and EXP table. He then used n and m as indices to read from the LN table (i.e. determining Ln(n) and Ln(m)), added them and used the outcome as index to read from the EXP table (i.e. determining Exp(Ln(n) + Ln(m))), he obtained the value n*m.
It was of course recognized that this multiplication routine has its limitations due to the discrete character of hexadecimal values. It was appreciated for its speed nonetheless as
ldx #m ; ldy #n
lda LNTable,x
clc ; adc LNTable,y
tax ; lda EXPTable,x
takes only 2 + 2 + 4 + 2 + 4 + 2 + 4 = 17 clock cycles!

In 1993, Jasper Mittelmeyer (Adam/Paradize, Focus) produced a circle routine. Rather than using goniometrics to calculate the location of points, Jasper cleverly used Pythagoras’ insights in a straight forward fashion.
Let (xm,ym) denote the middle of the circle. Let (xm,yt) denote the upper point of the circle. One starts drawing at the top and draws line by line, from xl(y) to xr(y), with k denoting the distance from the middle to y value of the line being drawn, hence k walks from r to 0.
How can one calculate xl(k) and xr(k)? This of course is basic exercise in mathematics as (xm – xl)^2 + k^2 = r^2 according to Pythagoras. Some algebra will give (xm-xl) = SQRT( (r+k) (r-k) ). Something similar holds for (xr – xm).

Now, the multiplication principle of Dennis Admiraal comes in handy: (xm-xl) = Exp ( Ln(r+k) + Ln(r-k) )/2
By using (r+k) and (r-k) as index to read from an LN table, adding these values and using that outcome as an index to read from the EXP table, giving value d, it is obvious xl = xm – d and xr = xm + d.


The square routine however takes a different path. As a matter of fact I tried several approaches.
First of all, I attempted to employ the horizontal line fill approach by looking at the left-hand and right-hand side point of the lines, and traveling down the vertical line through the topmost point. This however required using tangens to blow up distances, i.e. using formulae like xl = x2 – k TAN (45 + A). Regretfully, this renders calculation results slightly imprecise at boundary cases. Furthermore, one would have to distinguish the upper- and lower part of the rectangle and the piece in between two middle points. Not as elegant as I envisioned.

Next, I tried an ordinary dx and dy approach, i.e. something which uses the tangens in an indirect fashion and calculates the location of points by using the begin- and end-point of a line between the corners of the square. One has to distinguish several cases with regard to the parts of the rectangle as mentioned under solution 1. One also has to consider 2 cases, one in which the angle A is 0 <= A < 45 and one in which 45 <= A < 90.
Anyway, then set of formulae like xl = x1 + (x2-x1) * (yt – y2) / (y1 – y2) developed also suffered a precision issue, as, in this example, (yt – y2) / (y1- y2) might be truncated to 0 before multiplying it to the true value. In order to increase precision of the routine, I pre-multiplied the denominator by a factor which I would later compensate for.
This however would mean, I would have to determine the appropriate multiplying factor for each angle. This would turn out to become silly code.

The last and currently used routine simply boils down to a sort of point-by-point line-routine commonly used.
After some transposition the line data is used to enable me to determine the left-most and right-most point for every raster line, after which I can directly use the horizontal fill.
This is not a very elegant, rather a fairly blunt approach.
Search CSDb
Advanced
Navigate
Prev - Random - Next
Detailed Info
· Summaries
· User Comments (21)
· Production Notes (4)
Fun Stuff
· Goofs
· Hidden Parts
· Trivia
Forum
· Discuss this release
Info on other sites
· Pouët
Support CSDb
Help keep CSDb running:



Funding status:




About this site:
CSDb (Commodore 64 Scene Database) is a website which goal is to gather as much information and material about the scene around the commodore 64 computer - the worlds most popular home computer throughout time. Here you can find almost anything which was ever made for the commodore 64, and more is being added every day. As this website is scene related, you can mostly find demos, music and graphics made by the people who made the scene (the sceners), but you can also find a lot of the old classic games here. Try out the search box in the top right corner, or check out the CSDb main page for the latest additions.
Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.109 sec.