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.
2017-10-10 11:49
HCL

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

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

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

Registered: Apr 2002
Posts: 2980
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 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?
 
... 4 posts hidden. Click here to view all posts....
 
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
apprentix
Fred/Channel 4
The Syndrom/TIA/Pret..
MCM/ONSLAUGHT
Guests online: 136
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 Webmasters
1 Slaygon  (9.6)
2 Perff  (9.6)
3 Sabbi  (9.5)
4 Morpheus  (9.4)
5 CreaMD  (9.1)

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