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


Forums > Requests > Looking for a specific obscure ancient demo with a very interesting bitmap stretcher
2017-10-10 11:43
Krill

Registered: Apr 2002
Posts: 2980
Looking for a specific obscure ancient demo with a very interesting bitmap stretcher

... which DeeKay (are you reading this?) once showed me. It features a bitmap stretcher which has been baffling him as it has baffled me, as it seemed to be able to stretch every line (not just the badlines) but still showed a bitmap that was around 20 or more char rows high and colourful (not just 3+1 colours). The stretching patterns seemed a little weird, so there might be a connection to this feat.

It must have been from around 1988-1990 (yes, i know, there's a shitload of obscure demos from that era) and is on CSDb.

I've wanted to take a closer look at the code ever since, but alas, failed to re-locate the demo.
 
... 4 posts hidden. Click here to view all posts....
 
2017-10-11 06:14
Trash

Registered: Jan 2002
Posts: 122
If I remember correctly one of the demos (from that time period) made by Megastyle contains a similar effect...
2017-10-11 09:57
ChristopherJam

Registered: Aug 2004
Posts: 1409
Nice!

At a guess I'd assume there are eight half-height bitmaps scattered across the four banks, each containing duplicates of lines j+8n of the source, where j is the bitmap number.. but as to how to increment row pointer by 40 only when required, while still displaying a full 40 chars wide, my d011 fu falls short.

(trivial if it had only been a 37 character wide image of course :) )
2017-10-11 12:19
lft

Registered: Jul 2007
Posts: 369
Here's my theory, based on looking briefly at the code and then making educated guesses: Each row of the picture (8 lines of bitmap data, one row of VM and colour RAM) is handled in turn. It can be displayed normally, occuping 8 rasterlines, or it can be stretched to any height.

The row is stored in eight versions, in separate banks. Each version contains the 8 lines, rotated vertically by a fixed amount. Thus, regardless of the value of RC, it is always possible to select a bank that displays any desired line of graphics from the current row.

RC remains 0 while stretching, and is then allowed to proceed all the way to 7. The correct bank is selected for each rasterline, based on the value of RC and the desired line of graphics.

Is this really an unusual way of stretching bitmaps?
2017-10-11 12:26
lft

Registered: Jul 2007
Posts: 369
Scratch the vertical rotation, by the way. It's easier to just keep eight copies of line #0 in bank #0, eight copies of line #1 in bank #1 etc.
2017-10-11 13:28
ChristopherJam

Registered: Aug 2004
Posts: 1409
Quoting lft
It's easier to just keep eight copies of line #0 in bank #0, eight copies of line #1 in bank #1 etc.


Yes, that is what I meant; I just didn't put it very well.

The part that loses me is where they do stretching without initiating three-cycles-late DMA...
2017-10-11 14:07
Krill

Registered: Apr 2002
Posts: 2980
Quoting ChristopherJam
The part that loses me is where they do stretching without initiating three-cycles-late DMA...
Without having studied the code thoroughly yet:

TL;DR: Why issue late FLI DMA if normal DMA is done automatically after 7 rasterlines of non-stretch? :)

Once you can select arbitrary bitmap lines on a badline, can't you stop stretching 7 lines before the intended pointer increase by 40/320, and do the $d018/$dd00 updates for the remaining 7 rasterlines of the current char row without $d011 hammering, then let the pointer increase and have normal badline DMA, then stretch that badline again?
2017-10-11 15:16
lft

Registered: Jul 2007
Posts: 369
Exactly, Krill clarified what I described.

Now for an improvement (which may or may not be done in the demo). Suppose your sine tables are set up so that each row of graphics can stretch to at most 13 lines. Then you can get away with six bitmaps, which in turn means that they don't have to be half-height anymore.

Each column in the following table corresponds to one bitmap bank. The eight lines of graphics that make up one row are distributed according to the lines of the table. Now it's possible to stretch the first line up to five times, and then find a way down to line RC=7 that stretches any line(s) up to 5x along the way.

012345
123456
234567
34567
4567
567
67
7
2017-10-11 16:46
ChristopherJam

Registered: Aug 2004
Posts: 1409
Argh! Of course. Because the original was a perfectly ordinary koala, no extra char DMA is needed after the first line in each section. Thanks for pointing out the obvious, I feel a bit silly now :)
2017-10-17 05:08
ChristopherJam

Registered: Aug 2004
Posts: 1409
Speaking of ancient demos with interesting bitmap stretchers, does anyone remember a row-by-row stretcher featuring the Hunters Moon loading screen and music?

It just introduced black gaps between character rows, but it was the first time I'd seen the effect - jaw dropping.

I always just thought of it as "the hunters moon demo," but it's apparently not the production with that title here.
2017-10-17 06:10
Krill

Registered: Apr 2002
Posts: 2980
I remember that FLD effect being used by at least one of the versions of The Syndicate/Beastie Boys' "Picture Linker" tools, http://csdb.dk/search/?seinsel=all&search=picture+linker. But this didn't link music, it just played that classic ringmod hum, iirc.

Anyways, maybe it wasn't a regular demo but just the loading pic linked with that intromaker-like tool? Or a crack of the game with the loader picture linked using this tool?
Previous - 1 | 2 - Next
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
Isildur/Samar
JackAsser/Booze Design
Inge/HVSC
Didi/Laxity
MWR/Visdom
Freeze/Blazon
goerp/F4CG/HF
FranckS
Mason/Unicess
DanPhillips
psych
algorithm
TheRyk/MYD!
Guests online: 97
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 Layers  (9.6)
2 No Listen  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Triad  (9.3)
5 Censor Design  (9.3)
Top Swappers
1 Derbyshire Ram  (10)
2 Jerry  (9.8)
3 Violator  (9.7)
4 Acidchild  (9.7)
5 Cash  (9.6)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.044 sec.