23 August 2018, 13:49 | #181 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Over the last couple of days I've worked on some sprite mutliplexing, with the scrolling mixed in the best I could achieve with 32x32 bobs was around 10 sprites so some thinking needed to be done.
Rygar is a fairly simple game really, enemies attack in 3 zones on the display which makes a sprite multiplexer appealing. You have the flying dragons and griffins in the upper zone, the drones, rhinos and little village henchman, lava men in the mid zone and you have the lava snakes in the lower zone. So over the last couple of days I've worked on (with help from @ross) on putting 4 hardware sprites in each zone and mixing in the bobs engine. Sprites are limited to 16 colours, you can select different palettes for odd and even sprite but it makes no difference when attached sprites are used (as far as I'm concerned anyway). So with that in mind I've had to select which enemies are bobs and hardware sprites and look at how often they appear in the game. The Blue drones for example only appear on round 1,2 and 13 so they're gonna be bobs as they use a deep Blue gradient palette and is one of the first things that stand out when you see the game. Some sprites I can have a mix but the upshot is that enemies that are Brown, Red or White can be used as hardware sprites. As the little rhinos are only 16 pixels high I get 2 for 1 on those with Bobs so I have them as both hw sprites and bobs as they appear often in the game. The Demon dude will be a bob because he can appear after I've dropped the background blitting, the Blue large demon is a Bob because well...he's Blue - no getting round that. The end of round metal things are bobs as they are well..metal and they only appear once each round. The multiplexer I've got at the moment does have some weird limitation in that I can't seem to reuse the same sprite further down the screen, not sure why yet but with about 20 sprites available now I think the game should be doable. I think this game will all be about compromises, but it's going to take a lot of effort. [ Show youtube player ] |
23 August 2018, 14:31 | #182 | |
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,479
|
Quote:
You need to be sure that DMA system do not reload SPRxPOS/CTL after sprite's last data fetch so immediately point PTR to a void zone with copper (or the new sprite's data, that logically can also be the same). And be sure that y end pos, span whole screen. Great progress here! |
|
23 August 2018, 23:15 | #183 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
I managed to work out what was wrong with the identical sprites in the multiplexer and fixed it.
Anyway, before I sign off for the long bank holiday weekend away with the family I decided to create some of the animations... I should point out that only the Bobs are animated, I haven't plugged in the routines for the hardware sprites yet... pretty trivial to do though as I did it with Bomb Jack also. There is definitely enough sprites to handle the game action now... very pleased. Coding it will still be hard though and it will require alot of thinking time. Enjoy and have a great weekend everyone. [ Show youtube player ] |
23 August 2018, 23:25 | #184 |
Banned
Join Date: Aug 2005
Location: London / Sydney
Age: 47
Posts: 20,420
|
Looking good my friend
|
25 August 2018, 17:32 | #185 |
Registered User
Join Date: Oct 2007
Location: Athens , Greece
Posts: 1,848
|
Great work so far!
|
26 August 2018, 22:21 | #186 | ||||
Code Kitten
Join Date: Aug 2015
Location: Montreal/Canadia
Age: 52
Posts: 1,178
|
Quote:
Quote:
Quote:
Assuming that the answer is going to be negative is not productive and I would say is a bad habit of the Amiga community. Sure this avoids potential deception but this also guarantees that no authorization is ever received even thought there are definitely studios who would agree to that, but to find them, we must ask them. Whoever does not try, never wins. Quote:
Anyway, back on topic: great work! Keep up the effort. |
||||
26 August 2018, 22:42 | #187 | |
Missile Command Champion
Join Date: Aug 2005
Location: Germany
Age: 52
Posts: 12,453
|
Quote:
Last edited by Retro-Nerd; 26 August 2018 at 23:34. |
|
26 August 2018, 23:15 | #188 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
The game wont be offered commercially.
However it will be offered on a download for free or pay anything term, which will go toward future project developments. Only fair given i will spend probbaly 500 hours building the game. |
27 August 2018, 00:02 | #189 |
pixels
Join Date: May 2014
Location: Australia
Age: 52
Posts: 476
|
Worse case scenario mcgeezer, we'll use the engine and re-skin it with a futuristic/robotic city or something else I'm sure your great efforts won't be wasted, I think your more likely to get some agreement with the company if your upfront and open about the project.
|
29 August 2018, 19:15 | #190 |
Inviyya Dude!
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,784
|
Super nice project! A shame I just discovered it now.
Was in kind of in an Amiga hiatus over the summer time, just coming back... |
31 August 2018, 09:32 | #191 | |
Inviyya Dude!
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,784
|
Quote:
Where do you get the dma blitting the whole background "playfield" every frame then? I guess I am missing some detail here... Anyway, interesting technical setup at work here. |
|
31 August 2018, 11:02 | #192 | |
Registered User
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,423
|
Quote:
However, he has set the palette up for a layer of 32 and a layer of 8 colours. Then, he blits 1 of the 'background' bitplanes with the content and offset matching the 'foreground' bitplanes. This way he gets one 5 bitplane foreground and one 3 bitplane background, while only blitting one plane. Quite a nice technique |
|
31 August 2018, 11:54 | #193 |
Inviyya Dude!
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,784
|
That's superclever and interesting to me as well, since my most missed feature on the OCS is a 4-2 bitplane split instead of 3-3, which feels so useless most of the time.
Currently I use a sprite backplane, but that's taking almost all of the DMA and leaves not much for blitting objects, even with triple buffering at work. Wonder if this method leaves more time for that. |
31 August 2018, 12:10 | #194 |
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,479
|
I do not think so.
This works because of AGA, that leave much free DMA time than OCS (for the blitter screen shift). Remember that you need to use a single scroll register in this mode, so you are forced to rewrite all 3 planes for every x scroll movements. Dual playfield avoids all this! Agony and some other use a single, lines limited, plane... |
31 August 2018, 13:24 | #195 |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Yes, there are two methods in AGA to get a 32 colour and 8 colour parallax as far as I can see, both with pros and cons.
Method 1 is to use normal hardware scrolling keeping both odd and even BPLCON1 hardware scroll registers the same and blitting the 3 background planes every frame or as required. Method 2 is to put 4 front planes on odd registers and 3 on even registers and an additional front plane on the remaining odd register. You then use different BPLCON1 hardware scroll values and then compensate the display with the wrong even plane by blitting the plane from the pristine buffer. Method 1 uses more time than 2. I have method 1 and 2 working, however... In Rygar I will probably go with method 1 for a couple of reasons. If you watch the arcade game you'll notice that busier parts do not have the background showing, this means I can disable the background blits at key points where I would not be able to do that with method 2. Some backgrounds are smaller than other too. Method 2 requires a more difficult palette to be setup which does not help when it comes to using the hardware sprites. If possible I might even use both methods.... but by God, method 2 was hard to implement.... it actually made me ill for a short while as my head hurt so much from it. The palette in method 1 is simple. Each of the 8 palette banks has the same palette repeating except for each register except the first register after bank 5. Registers 0,32,64,96,128,160,192 & 224 all make up the background colour registers. The palette in method 2 isn't, but I documented how to do in a previous post, a real brain teaser. Geezer |
31 August 2018, 13:46 | #196 | |
Inviyya Dude!
Join Date: Sep 2016
Location: Amiga Island
Posts: 2,784
|
Quote:
I call that "going the full Gollum", since in the end I feel like I have been living in a cave for weeks, having headache, being tired and my face is pale.. I was like that when I had finally finished my sprite multiplexer for Inviyya. |
|
31 August 2018, 13:49 | #197 |
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,479
|
Method 2 is
But good that you've written a reference implementation in your 'diary' |
31 August 2018, 13:53 | #198 | ||
Registered User
Join Date: Jul 2015
Location: The Netherlands
Posts: 3,423
|
Quote:
All you need to do is update the background bitplane pointers every time the shift register overflows. Well, that and blit the one background bitplane you want to keep aligned with the foreground. (And get a serious headache setting all this 'easy' stuff up so that it works ) Edit: the bit above might no longer be relevant. This post took some time and others have also replied in the mean time. -- Quote:
The question whether or not this is worthwhile for performance benefits does remain, so out with the back of the envelope and a calculator Generally, a sprite layer will take one or two copper waits + 18-20 sprite reposition moves per scanline, plus sprite DMA for 8 sprites. This is equivalent to 39-43 (copper)+16 (sprites) = 55-59 DMA slots per scanline total. Blitting one full bitplane means blitting in copy mode for 19-21 words (288-320px + 1 word for shifting) per scanline. A copy mode blit costs 2 DMA slots per words, or 38-42 DMA slots per scanline total. This is faster, but do note that this is a somewhat simplified view on the algorithm and memory buffers needed to achieve this so the actual work needed might creep closer to the sprite layer cost. |
||
31 August 2018, 13:59 | #199 | |
Defendit numerus
Join Date: Mar 2017
Location: Crossing the Rubicon
Age: 53
Posts: 4,479
|
Quote:
My intention was to specify that it is not as simple as in the dual playfield where even and odd bitplanes scroll registers can move fields freely without interactions between them. Method 2 colors interaction are terrible.. |
|
31 August 2018, 14:03 | #200 | |
Registered User
Join Date: Oct 2017
Location: Sunderland, England
Posts: 2,702
|
Quote:
I'd be interested to see details on your sprite multiplexer... Ross really helped me massively with the one I have for Rygar but I'm always looking for improvements. re. method 2 - here is a link to post 175 earlier in the thread that hurt my brain. http://eab.abime.net/showpost.php?p=...&postcount=175 |
|
Currently Active Users Viewing This Thread: 2 (0 members and 2 guests) | |
Thread Tools | |
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Entry: Rygar AGA Edition | mcgeezer | Coders. Entries | 75 | 28 February 2019 20:41 |
On the Ball - World Cup Edition AGA | djcasey | request.Old Rare Games | 4 | 25 January 2013 12:39 |
On The Ball League Edition AGA , Player Manager 2 | StarEye | Games images which need to be WHDified | 11 | 22 January 2010 18:21 |
The Vague #1 AGA-RTG edition is released ! | kas1e | Amiga scene | 12 | 30 October 2007 00:27 |
On The Ball: World Cup Edition AGA | CodyJarrett | request.Old Rare Games | 11 | 27 May 2003 06:14 |
|
|