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


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

Registered: Apr 2002
Posts: 843
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.
2017-10-10 13:49
HCL

Registered: Feb 2003
Posts: 667
Crest made one (Crossbow of course).. but i can't remember which demo it was.
2017-10-10 13:51
Krill

Registered: Apr 2002
Posts: 843
Pretty sure it wasn't a Crest demo, that wouldn't have made DK bat an eyelid. :D
2017-10-10 13:52
HCL

Registered: Feb 2003
Posts: 667
Maybe this one then.. Partysqueezer+. Check the end part.
2017-10-10 14:02
Krill

Registered: Apr 2002
Posts: 843
Oh yeah, that's probably it!

I'm torn between "Exactly this!" and "Hmm, i remember it being a little different", but that's quite normal with these things.

Thanks! :) (That was quick.)
2017-10-11 08:14
Trash

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

Registered: Aug 2004
Posts: 656
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 14:19
lft

Registered: Jul 2007
Posts: 303
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 14:26
lft

Registered: Jul 2007
Posts: 303
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 15:28
ChristopherJam

Registered: Aug 2004
Posts: 656
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 16:07
Krill

Registered: Apr 2002
Posts: 843
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 17:16
lft

Registered: Jul 2007
Posts: 303
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 18:46
ChristopherJam

Registered: Aug 2004
Posts: 656
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 07:08
ChristopherJam

Registered: Aug 2004
Posts: 656
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 08:10
Krill

Registered: Apr 2002
Posts: 843
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?
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
Claus_2015
Maxlide/Anarchy
kazmat
TMA/Abyss-Connection
psych858o/MSL/Elysiu..
Marq/Fit^Lieves!Tuor..
Trasher/Fairlight
Guests online: 53
Top Demos
1 Uncensored  (9.7)
2 Edge of Disgrace  (9.7)
3 Coma Light 13  (9.6)
4 The Shores of Reflec..  (9.6)
5 Lunatico  (9.6)
6 Quad Core 100%  (9.5)
7 Comaland 100%  (9.5)
8 Incoherent Nightmare  (9.5)
9 Wonderland XII  (9.5)
10 Comaland  (9.5)
Top onefile Demos
1 Pandemoniac Part 2 o..  (9.6)
2 Synthesis  (9.6)
3 Dawnfall V1.1  (9.5)
4 Daah, Those Acid Pil..  (9.5)
5 Field Sort  (9.4)
6 Treu Love [reu]  (9.4)
7 Dawnfall  (9.3)
8 Globe 2016 [reu]  (9.3)
9 KAOS 64  (9.3)
10 Hardware Accelerated..  (9.2)
Top Groups
1 Booze Design  (9.4)
2 Censor Design  (9.4)
3 Oxyron  (9.4)
4 Crest  (9.3)
5 Finnish Gold  (9.3)
Top NTSC-Fixers
1 Horizon  (9.7)
2 Pudwerx  (9.6)
3 Stormbringer  (9.6)
4 Fungus  (9.6)
5 Moloch  (9.3)

Home - Disclaimer
Copyright © No Name 2001-2017
Page generated in: 0.175 sec.