Anniversary by Lazy Bones
[nfo]
|
||||||||
---|---|---|---|---|---|---|---|---|
|
||||||||
|
popularity : 50% |
|||||||
alltime top: #64807 |
|
|||||||
|
||||||||
added on the 2024-02-06 08:25:31 by zajc |
popularity helper
comments
I recall this one had some rather interesting hardware requirements and it was a nice example prod for WinUAE development. Or was that some other Lazy Bones release..
added on the 2024-02-06 10:12:31 by break
Quote:
Or was that some other Lazy Bones release..
That was Move Any Mountain which used an interesting trick to simulate 1 MB chip memory on 0.5 chip + 0.5 fake fast ECS Amigas.
Ah, of course :) Never mind them. Well at least this one has a decent rotator.
However, this demo was probably the first to use the "7 bitplanes on OCS" trick.
Or not, I think Brainwalker used it long before. Anyway, it still caused Toni lots of extra work. :D
What does using 7 bitplanes on OCS do? Is it a dual playfield thing? Does OCS even have BPL7 registers? OCS doesn't even have EHB!
If you use 7 bitplanes on OCS you get a 5 bitplanes mode, but no DMA is being fetched for the last bitplane. The thing that makes it useful is that you can set the data for the bitplane manually. This means that you can for a part of the screen for example have the data set to zero, but other parts of it being set to $ffff which means the colors then gets the 16-31 range in the palette.
I use the same trick for the textured cube in Eon where cube in the middle uses color 16-31 and the background uses 0-15 but you don't have to pay for having a full extra bitplane. In the case of Eon I use the copper to set the bitplane data at the start of the cube with the copper and then reset it again after.
The saving here is that you save CPU time bitplane DMA has priority over the CPU and you only fetch 4 bitplanes, but have a screen of 5 bitplanes (i.e 32 colors)
I use the same trick for the textured cube in Eon where cube in the middle uses color 16-31 and the background uses 0-15 but you don't have to pay for having a full extra bitplane. In the case of Eon I use the copper to set the bitplane data at the start of the cube with the copper and then reset it again after.
The saving here is that you save CPU time bitplane DMA has priority over the CPU and you only fetch 4 bitplanes, but have a screen of 5 bitplanes (i.e 32 colors)
I should clarify that you only update BPL5DAT (which is what the DMA would have written into if I remember correct) and this value then gets repeated until you poke change it again. So you can use this to write different patterns into it to achieve various effects.
7 bitplane mode on OCS actually gives you four bitplanes with DMA + BPL5DAT and BPL6DAT, which is perfect for chunky c2p HAM modes :)
Nice effect.
Just piggie because there is no music.
Just piggie because there is no music.
Quote:
OCS doesn't even have EHB!
This is not correct, only the very first NTSC A1000 models don't have EHB as the used Denise revision didn't support it.
Huge thumbs up here for independently discovering (*), implementing and then popularizing the OCS 7-bitplane trick. A majority of rotozoomers on OCS today use some variation of this trick. Coyote did a write up that was posted on FIDONet and Usenet (comp.sys.amiga.misc and alt.sys.amiga.demos ).
The write up was so incredibly hard to find that I put up a pastebin here and also in the demozoo nfo here.
If anyone has a good place to mirror this, I think it is an little gem of Amiga democoding history.
Coyote/Lazybones discovered this trick in May 1993, probably during all-out coding for Move Any Mountain, to make it to the Revenge of Mr. Party 3
In his own words, from the textfile:
For mere mortals like me just getting into the Amiga: if you set BPLCON0 ($DFF100) to, say, $7200, you actually get the full EHB colorpalette (32 colors + 32 halfbrite colors), while Agnus occupies only 4 DMA slots to copy bitplanes 0 to 3. Only 4 DMA slots instead of 6 means your code runs faster during the time Agnus is fetching the bitplanes to display them. Four bitplanes gets you 16 colors, but then you can poke BPL5DAT and BPL6DAT via copper or cpu and actually get stuff on screen to use the extra 48 colors.
In practice, a standard 320x256 screen in 6 bitplanes (EHB or HAM mode) will have ~21% fewer words of chip/slow memory bus available for Amiga each 50Hz frame than the usual 16 color 4 bitplane mode (37608 vs 47848), once you take out some bandwidth for audio and memory refresh and count in all the bandwidth you get when Agnus is not working on displaying your gfx. Getting 21% more chip bus bandwidth might not seem like a lot, but even the CPU has to use this bandwidth to literally fetch your beautiful code, so in practice the slowdown is dramatic.
Poking BPL5DAT and BPL6DAT is slower than letting Agnus use DMA to fetch it. But again, you only do it when you need to, such as only poking a word per line for a cool background pattern ..
Or you use it to make your rotozoomer have 3x3 pixel elements as Coyote himself wrote in this post on EAB more than 15 years ago.
Cool stuff, especially when you think some teenager in this village, population 184 people, figured this out in 1993 with no modem and no access to Internet...
[*] Footnote: Stingray insightfully pointed out that Brainwalker/Skidrow first used this trick in his cool Megaroids intro in June 1991. In that intro the use-case is generating some dithering noise, whereas Coyote used it thoroughly in a rotozoomer and did a write up about it.
The write up was so incredibly hard to find that I put up a pastebin here and also in the demozoo nfo here.
If anyone has a good place to mirror this, I think it is an little gem of Amiga democoding history.
Coyote/Lazybones discovered this trick in May 1993, probably during all-out coding for Move Any Mountain, to make it to the Revenge of Mr. Party 3
In his own words, from the textfile:
Quote:
When you fill register $dff100 with value which has the number of
bitplanes specified as 7 (lo-res) something strange is going on. On screen
you will notice only 4 bitplanes but further checking has revealed to me
that there are still some differences from usual 4 bitplane mode.
When 7 bitplanes are 'opened' color index is 6 bit wide. (It would
be better to say 5 bit wide with halfbright enabled.) First 4 bits of color
index is fetched from BPL1DAT-BPL4DAT ($110 through $116) registers which
are filled through DMA channels. 5th and 6th bit of color index is taken
from BPL5DAT and BPL6DAT which are NOT disturbed by DMA. In other words,
you can put in, i.e. BPL5DAT value $aaaa and you will get at odd pixels on
screen color which is indexed as $10 trough $1f. (Same is with BPL6DAT,
value $aaaa would give you halfbright odd pixels.)
The benefit of this is accesing of all colors ($00-$1f) without
loosing speed of copper.
For mere mortals like me just getting into the Amiga: if you set BPLCON0 ($DFF100) to, say, $7200, you actually get the full EHB colorpalette (32 colors + 32 halfbrite colors), while Agnus occupies only 4 DMA slots to copy bitplanes 0 to 3. Only 4 DMA slots instead of 6 means your code runs faster during the time Agnus is fetching the bitplanes to display them. Four bitplanes gets you 16 colors, but then you can poke BPL5DAT and BPL6DAT via copper or cpu and actually get stuff on screen to use the extra 48 colors.
In practice, a standard 320x256 screen in 6 bitplanes (EHB or HAM mode) will have ~21% fewer words of chip/slow memory bus available for Amiga each 50Hz frame than the usual 16 color 4 bitplane mode (37608 vs 47848), once you take out some bandwidth for audio and memory refresh and count in all the bandwidth you get when Agnus is not working on displaying your gfx. Getting 21% more chip bus bandwidth might not seem like a lot, but even the CPU has to use this bandwidth to literally fetch your beautiful code, so in practice the slowdown is dramatic.
Poking BPL5DAT and BPL6DAT is slower than letting Agnus use DMA to fetch it. But again, you only do it when you need to, such as only poking a word per line for a cool background pattern ..
Or you use it to make your rotozoomer have 3x3 pixel elements as Coyote himself wrote in this post on EAB more than 15 years ago.
Cool stuff, especially when you think some teenager in this village, population 184 people, figured this out in 1993 with no modem and no access to Internet...
[*] Footnote: Stingray insightfully pointed out that Brainwalker/Skidrow first used this trick in his cool Megaroids intro in June 1991. In that intro the use-case is generating some dithering noise, whereas Coyote used it thoroughly in a rotozoomer and did a write up about it.
Thanks for adding details that I missed :) Also it should be noted that this mode doesn't work on AGA so if you want your code to be compatible you need a workaround for it (in my case I just use 5 regular bitplanes and have a fixed bitplane for my last bitplane and even if this causes higher DMA cost the faster 020+ CPU makes up for it)
submit changes
if this prod is a fake, some info is false or the download link is broken,
do not post about it in the comments, it will get lost.
instead, click here !