Jump to content
IGNORED

Crownland Multiplexing


Tezz

Recommended Posts

I've been looking at the PM multiplexing again in the Crownland preview which was very impressive to me (I know there's been comments about the final game being rushed for the competition etc which might be the case why the finished game now has a 32 byte wide screen and now the plexed sprites flicker) but anyway on the preview and final the multiplexed sprites have their own independent colours, horiz and vert screen position and most impressive the shape/anim. Impressively to me they can exist on the same horizontal line animated. I've seen many multiplexed sprites routines over the years but non to my mind that are this good? (I'm sure you will tell me otherwise :) ) There are in Crownland several plexed sprites on screen together (several also meaning that all 4 are making each one of the multicoloured sprite characters of course) I didn't think this was possible? Does anyone have any technical info on the routines or even better any source? I'm really intrigued by what they have achieved. What are the limits? I mean Crownland has a whole lot going on with multiple DLIs, music routines, pseudo paralax scrolling etc etc.. I'm thinking what is possible in terms of multiplexing on a static non scrolling game? How many sprite itterations can the routine handle? I would love to get my head around the routine for some of my projects (one of which is also 32 byte wide)

Link to comment
Share on other sites

Well, you might know already that vertical splitting is simply done by hardware ;-)

 

The "doubling" is nothing else like:

 

IF more than available hardwaresprites needed, jump to every other Sprite routine....

 

frame 1 -> jump to routine 1

 

frame 2 - > jump to routine 2

 

frame 3 -> jump to routine 1

 

frame 4 - > jump to routine 2

 

The work isn't really more for the CPU as to use only one "sprite" to move...

 

 

 

It's ok to use this.

But there really seem to be a lot of Bugs in the game:

Having a look at the main Sprite, it flickers also when other objects are "8" lines above... which is caused by "code" not by "hardware".

Link to comment
Share on other sites

In Preview, sprite multiplexer was very very simple - It's only changing horizontal position ($d000,$d001,$d004 and $d005 registers) and colors($d012,$d013 registers) of PM by DLI after each 4 charlines. It has limitations - only one enemy or bonus for each four charlines.

 

In full version, multiplexer is much better and don't have Y position limits - it can multiple up to 16sprites even in the same scanline... each of 16sprites have own shape, colors and individual position...

 

The sprite flickering isn't a bug - it's a method to have more than 2 sprites per scanline (you can see the same flickering effect in many NES games - Double Dragon 3, Bubble Bobble, Little Nemo or even Super Mario Bros (when bunch of sprites is in the same charline (e.g. beggining of Level 8-1)).

Atari is not C64/NES - we had only two multicolored sprites, so the flickering is only one way to make illusion of many sprites with different shapes in the same charline (except of software sprites - but they suxx if we want nice, colorfull and fast(50fps) game)

 

so don't blame me abount flickering - I had no choice - only one bonus/enemy in horizontal area without flickering OR sprites without any limits but with flickering - answer is simple (for me)

 

The multiplexer in full version of Crownland can display about 5-6 sprites(each 10x16) or even more if we have smaller sprites (e.g. stars) in one frame, but in static non-scrolling game i bet it could be much more (about 10-12).

 

http://atariarea.krap.pl/24h/spritemania/STRSPLXR.COM - here is a demo that use crownland sprite multiplexer - it's display 13 hardware sprites 10x10 with clipping in one frame.

 

and 32byte wide screen is a must have, because in 40byte screen we don't have enough cycles for changing all 12 PM registers in one scanline during DLI (we even don't have it in 32byte screen - it's a reason that sometimes a small color artifacts can appear on sprites in second scanline of charline)

 

none the less i discover a small bug in multiplexer - it's not get items(sprites) from queue in optimal way, so if we have 4 sprites in the same charline, in queue we have: sprite1, sprite2, sprite3, sprite4. On first frame multiplexer draws: sprite1 and sprite2 on second frame it draw: sprite2 and sprite3 (and this is wrong way - we should draw now sprite3 and sprite4). I think that fixed this bug can reduce flickering a bit..

 

 

Emkay your'e wrong it's not code bug - the sprites flickering because they are in the same CHARLINE. The DLI is per CHARLINE not per SCANLINE...

Link to comment
Share on other sites

I've been looking at the PM multiplexing again in the Crownland preview which was very impressive to me (I know there's been comments about the final game being rushed for the competition etc which might be the case why the finished game now has a 32 byte wide screen and now the plexed sprites flicker) but anyway on the preview and final the multiplexed sprites have their own independent colours, horiz and vert screen position and most impressive the shape/anim. Impressively to me they can exist on the same horizontal line animated. I've seen many multiplexed sprites routines over the years but non to my mind that are this good? (I'm sure you will tell me otherwise :) ) There are in Crownland several plexed sprites on screen together (several also meaning that all 4 are making each one of the multicoloured sprite characters of course) I didn't think this was possible? Does anyone have any technical info on the routines or even better any source? I'm really intrigued by what they have achieved. What are the limits? I mean Crownland has a whole lot going on with multiple DLIs, music routines, pseudo paralax scrolling etc etc.. I'm thinking what is possible in terms of multiplexing on a static non scrolling game? How many sprite itterations can the routine handle? I would love to get my head around the routine for some of my projects (one of which is also 32 byte wide)

 

I missed the boat on the final version of Crownland. How many levels does it have? Where can I download it?

 

 

thanks

Kev

Link to comment
Share on other sites

Emkay your'e wrong it's not code bug - the sprites flickering because they are in the same CHARLINE. The DLI is per CHARLINE not per SCANLINE...

 

 

That's what I thought. So, if the resolution of the Player multiplexing is 8 scanlines, why taking care about having all needed pm registers changed in one scanline?

Link to comment
Share on other sites

@Tezz:

 

Study the Millipede game on advanced levels. It shows great multiplexing multicolored sprites on static screen, the best I've ever seen.

 

I always thought millipede used character graphics for lots of stuff. The waves of lots of enemies (forget the names) do use PM's are all vertically separated and usually all the same enemy so no color changes are needed. It is a lot easier to handle when you know they will be separated vs the general case of allowing all sprites to go anywhere.

 

In Beef Drop, my graphics sometimes flicker even if they are not on the same horizontal line simply because there isn't enough time to change all the registers. It is even a little worse since I divide the screen up into zones 8 (or 16, don't remember) pixels high, and they kind of get assigned to zones with preference given to objects not displayed the previous frame. even objects close to a zone may get effected. The chef isn't multiplexed, but the three enemies can be. The only thing I didn't get quite right is there are times when it flickers two enemies at 50hz, and the other not at all when they are in the same zone instead of flickering all three but flickering them less. It might also be nice to have it boost the brightness of flickering objects.

 

Just my 4 cents.

 

--Ken

Link to comment
Share on other sites

Probe...the sprite multiplexor is quite good...

 

my investigations so far:

 

http://www.atariage.com/forums/index.php?s...mp;hl=multiplex

 

Probe... i guess you designed the levels with your limitations of your engine in mind? have you ever wrote a complete "chaotic" one where the sprites move complete independent?

 

as far as i remember in Crownland they do not move vertical except of the final boss, right?

Link to comment
Share on other sites

@Pr0be .. Thanks so much for your detailed explanation. Your multiplexer routine in the full version to not have Y position limits and having up to 16 sprites posible with their own shape, colors and individual position on the same scanline truely amazes and impresses me. I thought that the cycle saving 32 byte wide screen would be the reason, I had been planning to attempt a software sprite routine with heavy interrupts using 32 byte wide for the same reason.

 

.. don't blame me abount flickering - I had no choice - only one bonus/enemy in horizontal area without flickering OR sprites without any limits but with flickering - answer is simple (for me)
No critisim intended, quite the opposite! I was just interested in the reasons for the flicker between the preview and final. The final routine is even more flexible than I dreamed possible. I seems you have even improved this now drawing sprite 3 and sprite 4 on second frame to reduce the flicker. This small amount of flicker is not a problem to me at all. What is important (and great) is up to 16 independent sprites! Like you said many old NES games did which I remember too.

 

http://atariarea.krap.pl/24h/spritemania/STRSPLXR.COM - here is a demo that use crownland sprite multiplexer - it's display 13 hardware sprites 10x10 with clipping in one frame.
That's awesome. A great example

 

... software sprites - but they suxx if we want nice, colorfull and fast(50fps) game)
Yes, absolutely. Software sprites are just too memory hungry or slow. I've really been struggling with them.

 

...in static non-scrolling game i bet it could be much more (about 10-12).)
:) That's great news, it's music to my ears! I never pursed it very far as I assumed it would be more limited. Edited by Tezz
Link to comment
Share on other sites

@Tezz:

Study the Millipede game on advanced levels. It shows great multiplexing multicolored sprites on static screen, the best I've ever seen.

Thanks, I'll have a look into that. I never really thought about Millipede before, I've not run it for many many years, I would have assumed it was mainly character based.

 

Does anyone have some good source code for multiplexing the player/missile graphics. I think this may be more of a solution to a problem I've been having with a game I've been working with. Was trying to split it up with DLIs, but ran into issues.
Yes, that would be great for me too! I'll be thinking about this a lot now I have my coding bug excited :) sourcecode says a thousand words
Link to comment
Share on other sites

Tezz... your're welcome. for you questions... just let me know... :).

 

ps. and yes... soft sprites are a pain and hardware sprites on atari as well... ;) except for "mule lookalike" timebars... ;)

 

 

Reading those "lamentings" after the release of Jetboy really starts to hurt the reader's eye.

Jetboy looks really good and it is a good solution to use 32 bytes width with hires..... moving sprites in hires and for giving the playfield colours with PM overlays.

 

really.... to put the screen to a 32 byte width just for having flickering sprites.... it's ok . But to prefer it against the "overlay with softwaresprite" solution is even more odd when using 32 bytes width.

Heck.... to create the "stars" it was even easier to use some char animation with ONE overlayed Player and additional GPRIOR colours. In charmode you have the background, two separated colours and two colours that can be used for Player overlay...

GPRIOR can be set by DLI as every other GTIA register. So why do the stars have to flicker?

Btw: Flicker. Where are the 50Hz here, when the moving elements are shown with 25Hz?

 

Example: Using char animation with GTIA overlay would give the possibility of a lot more rotating stars per scanline than only 2.

Link to comment
Share on other sites

@ MK I agree with that too for hi-res yes. Software sprites done correctly can be good also and then using the PMs for underlays can be put to good use like the Spectrum Bombjack I have been playing around with recently.

 

Multiplexing the hardware sprites with independent colours is more useful for the calibur of games that Atari users are lusting for :)

 

... I prefer PMs for Overlays like in Beyond Evil, for using as special fx like healthbars and other special fx... or use them for the main hero sprite...
Yes I like to fully utilise PMs to enhance score panels and so forth too, they should always in my opinion be used to help to overcome the colour limitations as well as provide the main game sprite. Edited by Tezz
Link to comment
Share on other sites

Btw: Flicker. Where are the 50Hz here, when the moving elements are shown with 25Hz?

When the playfield is scrolling, all sprites are moving along, in 50 Hz.

 

That's actually what it looks like. You would gain the same effect with a double buffered graphics and updating the softwaresprites every other frame.

 

Really, nothing (or very less) would have to flicker if using the charset for rotating objects and using overlay with the GPRIOR colours. One even could do a bonus level with "hundreds" of rotating stars with their own colour.

Try to compare what was using more cpu cycles:

 

a) By dlis splitted sprites, based on two players with changing of the whole content every second frame.

 

b) small rotating objects based on 4 chars, changing the content of those and re - use the chars. overlayed with one player for a defined range.

Link to comment
Share on other sites

yup. I am using MADS for more than 1 year now... it's compatible to XASM 3.0 and you gain local vars/labels which is quite good sometimes. but i do not use the more advanced features as there is no proper english documentation.

 

but i use MADS in conjunction with XBOOT to generate the ATRs. As Fox doesn't updated XASM for quite a long time I would go for MADS... you don't loose anything.

Edited by Heaven/TQA
Link to comment
Share on other sites

yup. I am using MADS for more than 1 year now... it's compatible to XASM 3.0 and you gain local vars/labels which is quite good sometimes. but i do not use the more advanced features as there is no proper english documentation.

 

but i use MADS in conjunction with XBOOT to generate the ATRs. As Fox doesn't updated XASM for quite a long time I would go for MADS... you don't loose anything.

Great, ok yes that makes sense, I should swap over to MADS. Thanks :) I think i'll keep with using the code genie gui too. Hopefully someone will translate the docs soon
Link to comment
Share on other sites

none the less i discover a small bug in multiplexer - it's not get items(sprites) from queue in optimal way, so if we have 4 sprites in the same charline, in queue we have: sprite1, sprite2, sprite3, sprite4. On first frame multiplexer draws: sprite1 and sprite2 on second frame it draw: sprite2 and sprite3 (and this is wrong way - we should draw now sprite3 and sprite4). I think that fixed this bug can reduce flickering a bit..

 

Hi Probe, are you going to release the fixed version?

Link to comment
Share on other sites

.... I am using MADS for more than 1 year now... it's compatible to XASM 3.0
I'm trying out MADS tonight for the first time but I'm getting lots of assembly error messages? It seems even simply setting my equates at the beginning like WSYNC = $D40A says "ERROR: Extra characters on line" Maybe I am too tired tonight after working but I can't see anything wrong in my syntax anywhere different from x-asm? I wrote the source on notepad as code genie doesn't seem to be downloadable anymore . I am trying to read the Polish documents for MADS with limited success to understand allowed syntax like for example in my dli routine I have lda # sta 512 to read from location 512.. i'm not sure how to write this for MADS??
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...