27 January 2020, 11:16 | #341 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,186
|
Code:
Last update 2018, FEBRUARY |
14 February 2022, 15:40 | #342 |
Registered User
Join Date: Feb 2022
Location: Athens, Greece
Posts: 41
|
Well, sorry for being too late in this discussion (by a few years!!!), but two digital loves that I have is the Amiga and the Outrun game, and I still haven't seen anyone tackling their marriage... ;-)
Regarding huge sprites and smooth 3d motion, there is a game named Drivin' Force. Not the very best of games, but its huge sprites and 50 fps gameplay are difficult to go unnoticed. And it runs like that on a stock A500!!! Couldn't a possible Outrun port take a few hints from Drivin' Force? Has anyone ever disassembled Drivin' Force's graphics to see how they work? Thank you for your attention in this decades old now topic... |
14 February 2022, 18:32 | #343 | |
J.M.D - Bedroom Musician
Join Date: Apr 2014
Location: los angeles,ca
Posts: 3,519
|
Quote:
For a better OCS/ECS port i consider the source code improvement by Fedepede04 on STE as the best option. They showed earlier in this same thread here Last edited by saimon69; 14 February 2022 at 18:43. Reason: added link |
|
15 February 2022, 10:44 | #344 | |
Registered User
Join Date: Feb 2022
Location: Athens, Greece
Posts: 41
|
Quote:
Thanks for the info about Drivin' Force. That was a very clever trick! Judging from that and from copper chunky demos (with resolution similar to that), it seems the Amiga needs about 4 times the processing power to implement basic scaling/rotation on the 320x256 resolution at 50 fps... Regarding roadside objects, one thing that could be implemented is minimal precalculated scaling on intermediate states between two bitmaps. I really hate roadside objects not being enlarged smoothly as they go by. So, I just thought that perhaps the 'lost frames' could be represented as precalculated lists of blit commands that blit overlapping parts of a bitmap. Since there are a lot of bitmaps for each roadside object, only a few lists would be needed between two actual frames. For example, images could be scaled down by splitting them in 4 parts and draw them in overlapping fashion. For example, a 5x5 image: 12345 6789A BCDEF GHIJK LMNOP Could be made to be 4x4 pixels, like this: 1245 679A GHJK LMNP And it could be made to be 3x3 pixels, like this: 145 GJK LOP Last edited by axilmar; 15 February 2022 at 13:28. |
|
15 February 2022, 11:19 | #345 |
Registered User
Join Date: Feb 2022
Location: Athens, Greece
Posts: 41
|
Another crazy idea might be the following: during a blit operation, either the CPU or the copper modifies the blitter source registers so as that they repeat a previous pixel of a line, effectively doing actual scaling.
i.e. if the blitter has to blit the following line: 123456789ABCDEFGHIJK then if pixels '5', 'C' and 'H' must be duplicated, then the copper or CPU could affect the blitter source position while these pixels are drawn in order to repeat the operation, in order to duplicate pixels. The result would be: 1234556789ABCCDEFGHHIJK I know the timings of the CPU, copper and blitter are known exactly, but I don't know if this can actually be achieved due to other issues. Last edited by axilmar; 15 February 2022 at 13:29. |
15 February 2022, 14:44 | #346 |
Registered User
Join Date: Jun 2020
Location: Brno
Posts: 90
|
Are you talking about OCS or AGA (with some beefed up expensive turbo card?)
Do you know that Amiga blitter doesn't work with separate pixels but with data aligned to "words" only (= 16 pixels)? Pixel zooming is not an easy task for standard Amiga. Especially if you need to scale many objects separately. Don't be fooled by demos (for example by the famous Elysium/Sanity full-screen zoomer). |
15 February 2022, 17:32 | #347 | |
J.M.D - Bedroom Musician
Join Date: Apr 2014
Location: los angeles,ca
Posts: 3,519
|
Quote:
|
|
15 February 2022, 18:33 | #348 |
Registered User
Join Date: May 2016
Location: Rostock/Germany
Posts: 132
|
Maybe you'd like to have a look at https://github.com/HenrykRichter/Cannonball-C for an updated version (binary archive in release/). It sill requires tons of CPU (060) and Picasso96 in HiColor but renders faster than the MVG's old port and has all graphics enabled.
|
15 February 2022, 22:27 | #349 | |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,186
|
Quote:
|
|
15 February 2022, 23:56 | #350 | |
Registered User
Join Date: Feb 2022
Location: Athens, Greece
Posts: 41
|
Quote:
I was talking about timing, for example, MC68000 code in such a way that when the blitter decides to move and mask word 'x', the cpu (or copper) changes the registers and so it actually moves another word 'y'. But now that I think of it, I don't think it's doable. I know the tricks these demos do. Here is another thought: I wonder if the MC68000 could calculate, on the fly, the scaling of an image, in terms of shifts and ORs. Since the system actually works on bitplanes, each bitplane's shifting and ORing of words would be the same numerically, right? this shifting/ORing could actually be precalculated and applied on the fly for each bitplane. For example, if we have a 3x3 bitmap that looks like this: 010 111 010 Then in order to make it 4x3, for example, one would have to shift the 2 bits to the right, and OR the mid column (I don't know if the 68000 has one instruction to do that or shift part of a word). 0110 1111 0110 anyway... |
|
16 February 2022, 03:48 | #351 |
Total Chaos forever!
Join Date: Aug 2007
Location: Waterville, MN, USA
Age: 49
Posts: 2,186
|
The 68000 does not have that capability (partial shifting) nor does the 68020, nor 68030, nor 68040 nor 68060. Chunky modes are needed for this type of bitmap scaling and texture mapping helps even more than the blitter. Of course vector scaling is another matter....
|
16 February 2022, 11:54 | #352 |
Registered User
Join Date: Dec 2014
Location: germany
Posts: 439
|
AFAIK the only meaningful way to use the blitter for zooming is the iterative approach - split the object in two halves, blitt them one pixel apart, fill the gap with a doubled 1-pix column/row, repeat for the next zoom level. Does not work very well for fast zooms where more than 1 pix is added per frame, and needs ofc an intermediate buffer if you want to draw your zoomed object on a background or other objects.
But, if you have a lot of identical objects in a section of the track, it may be possible to keep those intermediate zoomed objects during that section and reuse them, maybe mixed with some pre-calculated zoom levels. The nice thing about an Outrun-style game is the predictability, you always know exactly what's coming next (apart from the other cars), so you could add trigger points to the track for pre-scaling, pre-estimate performance and adapt your track accordingly and so on. All this ofc complicates logic & memory management quite a bit and will not reach the raw perfomance levels of a completely pre-scaled approach. But it may look smoother. |
16 February 2022, 12:33 | #353 | |
Registered User
Join Date: Feb 2022
Location: Athens, Greece
Posts: 41
|
Quote:
The same subroutine shall be used for all the bitplanes of a bitmap, therefore allowing scaling for planar displays. The game could then have a table of such subroutines for each combination of image size vs scaled size. The only question is then how fast will these be executed, within chip ram (in order to allow the resulting bitplanes to be used for blitting). According to this (http://oldwww.nvg.ntnu.no/amiga/MC68...000timing.HTML), for the 68000, shift instructions take minimum 8 cycles, a d OR might take 8/12 minimum cycles, and moves might take between 16 and 28 cycles. So, a list of say, 16 move/shift/OR instructions, with average 16 cycles per instruction, it would take 16x16 = 256 cycles for one line of each bitplane of each bitmap. So if, let's say, we have 16 bitmaps to scale, and each bitmap is 64 lines tall, and has 4 bitplanes, then we have 16 x 64 x 4 x 256 = 1,048,576 cycles taken up by scaling computations on chip ram. It doesn't seem that far fetched, even for the 68000 working on chip ram. Remember, we don't need to do the same scaling as the coinop, we only need to do a few scales between predrawn bitmaps. Working on fast ram would allow double or even more scaling, but then I don't know how much time it would take to transfer all these data to chip ram. And if the target was Amiga 1200 (i.e. MC68020), the results would be even better. |
|
16 February 2022, 22:54 | #354 |
Registered User
Join Date: Mar 2018
Location: Hastings, New Zealand
Posts: 2,544
|
|
16 February 2022, 23:17 | #355 |
Registered User
Join Date: Mar 2018
Location: Hastings, New Zealand
Posts: 2,544
|
Proof that 'huge sprites' and 'smooth 3d motion' don't make a good game. What a mess!
|
16 February 2022, 23:55 | #356 |
Lemon. / Core Design
Join Date: Mar 2016
Location: Tier 5
Posts: 1,211
|
I've investigated lots of methods of realtime bitmap scaling in various demos that I've worked on, and I can say for sure, there's no way on an A500, that you could implement any kind of real-time sprite scaling that would work for multiple on-screen sprites and keep a decent framerate.
The only real way is to use prescaled sprites, but you can look at how the sprites are constructed, and optimise the rendering and storage of the prescaled frames (for example, a palm tree, like in the 1st level of Outrun, could be built from 2 elements, the leaves area, and the trunk, which is slimmer and taller) Unfortunately, with prescaled sprites, you don't get the "blocky" effect of objects that are passing Z=0 and coming close to the camera, which is evident in practically EVERY amiga sprite based 3d racer |
16 February 2022, 23:57 | #357 |
Lemon. / Core Design
Join Date: Mar 2016
Location: Tier 5
Posts: 1,211
|
|
17 February 2022, 00:59 | #358 |
J.M.D - Bedroom Musician
Join Date: Apr 2014
Location: los angeles,ca
Posts: 3,519
|
|
17 February 2022, 01:03 | #359 |
J.M.D - Bedroom Musician
Join Date: Apr 2014
Location: los angeles,ca
Posts: 3,519
|
Not a big deal if you are the player, might bother a bit if you are an observer; wonder if it can be faked with a "fake" partial [ok tried to break down things mentally and i think not; a partial masking of the border with sprites might help in theory though]
|
17 February 2022, 11:36 | #360 |
cheeky scoundrel
Join Date: Nov 2004
Location: Spijkenisse/Netherlands
Age: 42
Posts: 6,908
|
I don't mind it to be honest, it defines that "Amiga look". I'm not going to really call blocky graphics a good thing, it just looked cool to see sprites scale so smoothly (but blocky and jittery) on arcade machines at the time because there was nothing better
|
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Outrun likes games question | sandruzzo | Nostalgia & memories | 51 | 20 July 2013 17:40 |
would you like to have an Outrun like for Aga? | sandruzzo | Retrogaming General Discussion | 50 | 30 January 2013 12:03 |
Problems running outrun europa | dlfrsilver | project.WHDLoad | 12 | 23 November 2007 22:30 |
good retro racer in Lotus/Outrun style | s2325 | Retrogaming General Discussion | 4 | 27 May 2007 20:57 |
Outrun arcade challenge.......... | Bloodwych | Retrogaming General Discussion | 0 | 12 September 2003 15:42 |
|
|