Have the VDP limits been reached? (General discussion MSX Forum)MSX Resource Center               
              
English Nederlands Espa�ol Portugu�s Russian French         

MSX Forum


MSX Forum

General discussion - Have the VDP limits been reached?

Goto page ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 Next Page )
Author

Have the VDP limits been reached?

Hrothgar
msx freak
Posts: 137
Posted: September 09 2008, 20:02   
After reading the interesting discussions on new MSX graphics cards I'm wondering if we ever truly reached the limits of the old ones. I have the feeling that with outstanding coding more could be achieved than we've seen yet. Some particular areas of interest:

1) Smooth scrolling on MSX1 screen modes. The 8px block scroll has become the trademark of MSX (both 1 and 2) just like colour clash has for the Spectrum. But did it have to be that way? We saw with games like Pippols (or, more recently, Malaika) that within certain boundaries we *can* have smooth scroll on MSX1. Unfortunately the range of games using this is extremely small and both of these games are quite slow platformers without much action. Doesn't the MSX deserve more creations à la Mario, Vampire Killer, Nemesis but then with smooth scroll? (Where horizontal scrollers can have modernistic background patterns such as SM and vertical scrollers more detailed patterns such as most of the Nemesis series). Or even multidirectional ones where the tiles can be redefined on-the-fly in both directions (albeit not simultaneously).

2) Smooth scrolling on screen 5. This is such a shame, because the MSX2 really offers the basics for smooth scrolling. We're however limited to some smooth vertical scrollers (Zanac-Ex, Aleste) and I know only two horizontal ones (SM in screen 4 and Psycho World). From some discussions I've read about the technology behind smooth horizontal screen 5 scroll the basics seem to be this:

- Alternate between two visible pages;
- Block-copy the whole page 16 px;
- Fill the gaps.

You'll *just* have enough time to get these block copies done with 1px subscrolls through the VDP registers to get a boring slow scroller (50px per second).

So what about an alternative approach? As Cas Cremers wrote on his blog on the Coredump development, you can gain a tremendous speed boost by not copying everything but only the parts that change. Hypothetical model:

- Design a level with quite some repetition in the horizontal direction every 32px;
- Store the level maps not as complete maps, but as one initial full screen and then only copy instructions for the areas that change relative to the screen 2 pages ago. The changes are *not* calculated by the CPU but preprocessed and stored in a compact form which should save both VDP cycles and memory for storing the map.

Wouldn't it be technically possible to have 2 or 3-speed screen 5 scrollers to get some more action that way? Or even omnidirectional scrolling as vertical scroll is much less VDP intensive?

3) Parallax scrolling. See e.g. the C64 example of Flimbo's quest (http://www.youtube.com/watch?v=AtdUBPYVKmk). Made with a foreground tileset that is scrolled through the hardware scroll and background tiles that counter-scroll at half speed by dynamic tile changes. This is hardly possible on MSX1 because of lack of hardware scroll and colour clash, but on MSX2 we should be able to combine hardware scroll and multiple tilesets, provided we use an 8px matrix to prevent colour clash. Does anybody know good examples of such a technique on MSX? (Now don't say Moon Patrol )

4) Coloured sprites. One hell of a problem in programming for MSX1 as you have both the 4 sprite limit and monochrome sprites. From the Commodore scene however it seems that changing visual properties on individual scanlines is quite a common technique over there to overcome graphical limitations. Would it be possible on MSX1 to create sprites with separate colours on each line by creating an interrupt on the first (or any specific) scanline and use timed code to redefine properties just on time? Or aren't sprite properties overwritable halfway a sprite on MSX?

Just some hypothetical thoughts on how we could put energy in making better creations with the hardware we have. But I'm hardly an expert so please comment on the feasibility and limits of these approaches. Or of course any other improvements that you think MSX 1 or 2 could still see with their old VDP's.
PingPong
msx master
Posts: 1286
Posted: September 09 2008, 20:38   
Hrothgar : (Especially) The msx1 vdp is created with a good mix of *features* that prevent you to make more than exists.

- No-Line int support, so forget raster effects until you use polling (but it's heavy on CPU time) (your (4))
- No scroll support. Ah, ok, i will do dynamic redefinition of tilesets, by blitting to vram...... Umh, no, i cannot do it, due to the limited bandwidth .... + colour clash. Plus screen2 have to move 12KB of VRAM to redefine all the tiles
- Exceptional sprite support. With the !unique! (c) feature of 4 sprites / scanline very often you think about to not use sprites at all. take this example: a C64 zoomed multicolor sprite, if made to look the same on msx1 will take ALL the 4 sprites , (the c64 one is a three color sprite the msx1 is a 2 color sprite however! )

On msx2 things are a little better, but having good scroll+animations with the limited horsepower of MSX2 VDP it's not possible.
think about it: most flickering sprite routines on msx1 rotate the sprites priority like in a circular list. While this is feasible on msx1 vdp, on msx2 one, it's hard, because of the G R E A T - M U L T I C O L O R support that forces you to rotate not only 128 bytes, but instead 640! GREAT!

Plus the vdp had the big help, that allow to know what sprite of the potentially 28 is not displayed correctly. PRATICALLY USELESS!.

The only decent is the V9958. Having scroll support allow the use of VDP for animation (SW sprites) and scroll support is by hardware. Plus you can use 8 hardware sprites ... (without boring of sprites)


With those all good things where you want to go ?


Maggoo
msx professional
Posts: 599
Posted: September 09 2008, 20:41   
1) Best example of smooth, multidirectional scroll on MSX 1 for me is Theseus, Lotus F3 and MAlaika. The big problem with this, is that it makes the graphics very limited. I'd rather have a game like Montana Joe without scrolling or Nemesis with 8 pixels scrolling and better graphics than 2 color blocks scrolling everywhere. The problem on MSX1 is that you don't only deal with the constraint of no scroll register, but also with the constraint of 2 colors per 8 pix line. If you want to do smooth scroll, you have even more limits in the graphics you make, and there is no way tricks you can use around that. Vertical only scroll is somewhat easier since you dont have the same constraints (as shown in Pippols).

2) Smooth scroll in screen 5 can be done but the speed of your scrolling will be limited to 1 pixel per frame (2 if you somewhat decrease the display area). The best example of this IMO is "Total Parody" by Artrag. There are also some contraints you may have to deal with (sudden change of direction, etc). I would only use that for a game where the scroll path is pre-define, like for a nemesis type shooter. The best on MSX2 is still to use screen 4.

3) Already done in screen 4. Check the Vscreen demo 1.0, it should be available on the MRC for download. The parralax scrolling is working like you describe.

4) Possible but is it really worth it ? It's a real pain to deal with interupts on MSX1 so doing it with sprites might be possible but even more of a hassle. On MSX2 it's possible, I've tried it already (using it to distort sprites at every scan lines). Problem is, updating sprites attributes takes a lot of "out" so there is just so much you can do with it. And it's pointless to use for colors on MSX2 anyway.

Overall, I would say it's always possible to push the enveloppe a little further but I feel like sometime it turns out into being more a "demo" than a real game. Those visual tricks takes the focus from the developper away from the gameplay and design and don't always add much to the game itself.
wolf_
online

msx legend
Posts: 5178
Posted: September 09 2008, 20:50   
Maggoo, 3) may have been done for individual tiles, but -afaik- not with the level of detail like in that C64 game. In that game one sees two layers. In MSX games with that technique one sees 1 layer with 'rotating' tiles. I mean, they've never fooled me.., while I *did* watch that tube vid a bit like 'wtf?'
ARTRAG
msx guru
Posts: 2227
Posted: September 09 2008, 21:11   
There was a developing version of total parody with 4 directions scrolling (well this was also in the public promo), parallax and borders.
The parallax was done by rotating "tiles" of a large area representing clouds (IIRC it was 8x4 tiles of 16x16), the tiles were marked as "solid" and "transparent". Solid tiles were copied by byte copy, transparent tiles were copied twice, first as solid for the backgromd and than as transparent for the foreground.
The sole limit was no more than 3 transparent tiles per column (yes, the screen was build column by column in 16 steps).
All the background animations (yes you have animated background, like gears, elevators, etc) have constant frame speed of 1/16 of the scroll rate, also parallax move at that speed.

Actually it can be done...
And so what?
The game engine becomes a pain in the ass, as the time for AI is fractioned in the waiting time of the VDP.
There is no room for some good code...
In the end I concluded that it was a very hard work for getting something that on the msx2+ is practically effortless
and I gave up, giving priority to other projects...

The real improvement I really missed is skipping the copy of the tiles already there....


Hrothgar
msx freak
Posts: 137
Posted: September 09 2008, 21:22   
Quote:

Smooth scroll in screen 5 can be done but the speed of your scrolling will be limited to 1 pixel per frame (2 if you somewhat decrease the display area). The best example of this IMO is "Total Parody" by Artrag. There are also some contraints you may have to deal with (sudden change of direction, etc). I would only use that for a game where the scroll path is pre-define, like for a nemesis type shooter.

I've seen the "Total Parody" mentioned before, is it available somewhere? About the speed of the scroll: does it copy everything or only parts of the screen? Selective copying is the key part really, shouldn't that allow for much more variation in scroll speed without squeezing the whole screen to 120px? Just think about the amounts of air, bottom or repeated bricks and roofs - these don't have to be copied at all.

As for sudden change of movement: the screen shouldn't have to respond on a pixel-for-pixel basis as the player turns in the exact center of the screen; there can be margins. When considering a 32px wide center zone there should be some space to react to player movement?

Quote:

3) Already done in screen 4. Check the Vscreen demo 1.0, it should be available on the MRC for download. The parralax scrolling is working like you describe.

I'll check, but I guess the similarities are more on a technical level than overall visual resemblance to the game I mentioned

Quote:

Possible but is it really worth it ? It's a real pain to deal with interupts on MSX1 so doing it with sprites might be possible but even more of a hassle. On MSX2 it's possible

Indeed this trick would only be useful for MSX1. And I understand the technical hurdles, but then again these seem to be taken on some other systems as well. As I've read some C64 games need to operate with their CPU and video chip in 'synched mode' throughout the game, going as far as issuing commands to the VDP on an exact xth clock cycle of a certain scanline to achieve graphical effects. It took that scene eight years to achieve that level of programming to use it for games not demos. I was just hoping something like that could be possible on MSX as well.

As for interrupt trouble: another trick that comes to mind is a cartridge-aided interrupt generator. Wasn't that used for the NES as well? As for complexity it seems a rather limited enhancement but with great possibilities, somewhat like the SCC chip. Just a thought.
Hrothgar
msx freak
Posts: 137
Posted: September 09 2008, 21:27   
Quote:

There was a developing version of total parody with 4 directions scrolling (well this was also in the public promo), parallax and borders.

Is there still a link somewhere? It sounds cool, even if it's a proof-of-concept .
ARTRAG
msx guru
Posts: 2227
Posted: September 09 2008, 22:11   
As I told you it does it copy everything, and the screen does not respond on a pixel-for-pixel basis, but you need time to set up the direction change. The game exploits the time the MC moves from one side to the other to set up the change of direction.
About the development version of the copy with parallax I have to see what has survived in my last PC crash, I did it in 2005 using sjasm. I'll put on line what I find.
Maggoo
msx professional
Posts: 599
Posted: September 09 2008, 22:11   
Quote:

Maggoo, 3) may have been done for individual tiles, but -afaik- not with the level of detail like in that C64 game. In that game one sees two layers. In MSX games with that technique one sees 1 layer with 'rotating' tiles. I mean, they've never fooled me.., while I *did* watch that tube vid a bit like 'wtf?'



Can be done for more than a single tile really. I have used it for blocks of 16x16 (4 tiles) in Vscreen and did tests of 64x64 (64 tiles) and it was working fine. So one could push that much further if needed. It really depends of how many tiles you want to reserve for your background. You dont want to use that many tiles for something that is just a neat visual thing.
wolf_
online

msx legend
Posts: 5178
Posted: September 09 2008, 22:28   
Yeah sure, but that C64 game was far more than 64 tiles I bet. Did you ever find out what would be the max? (combined with a complete game eh)
ARTRAG
msx guru
Posts: 2227
Posted: September 09 2008, 23:08   
To whom it may concern, here you can find the latest working files of Total Parody as survived to my PC crash:


https://sites.google.com/site/testmsx/working-files-of-total-parody


This is the state of art of 8 direction scrolling in screen 5....
Just the game is a bit missing :-)
Hrothgar, do you want to continue the work ?
maybe skipping the blocks already there, you
can get enough CPU time to add a decent game engine...
manuel
msx legend
Posts: 4320
Posted: September 09 2008, 23:19   
btw: Manbow 2 has very smooth scrolling on screen 5 in all directions.
ARTRAG
msx guru
Posts: 2227
Posted: September 09 2008, 23:22   
but not parallax nor animated background,
just a static background with fixed scrolling direction (just horizontal speed counts ;-)
dvik
msx master
Posts: 1481
Posted: September 09 2008, 23:47   
Quote:

VDP on an exact xth clock cycle of a certain scanline to achieve graphical effects. It took that scene eight years to achieve that level of programming to use it for games not demos. I was just hoping something like that could be possible on MSX as well.



Its somewhat possible. We use it quite a lot in our MSX1 demos and it works well on most MSXes. The problem though is that some MSXes (not sure the ratio but probably up to 50%) have one clock for the Z80 and one for the VDP. The problem with separate clocks is that they are not perfectly synced, so any synchronous code can be pretty messed up on some machines.




MäSäXi
msx professional
Posts: 850
Posted: September 10 2008, 10:23   
About scrolling:

Have you forgot Ghost´n´Goblins demo game, which have SMOOTH (but flickery) scrolling on MSX-1 ?

I really hope we can see finished MSX-1 G´n´G with smooth scrolling some day!!!!!!!


I must say, that I like to see new MSX-1 game with smooth SCREEN 1 scrolling. Well defined and well planned graphics can provide non-colorclashing scroll which is still looking good and colourful!

How about making PAC-LAND with smooth scrolling? Original arcade graphics are simple indeed, in background graphics there is very little to take off, actually just take outlines off, to suit it to screen 1, result is colourful spectrum like backgound, and make it scroll smoothly without colour clash.

How avoid colour clash?

Like this: Lets say sky colour is 4, buildings´ walls colour is 15 and windows are colour 5. Make buildings´ walls with just one colour, tile´s foreground colour is 15 and background colour is 4, same as sky, window´s foreground colour is 5 and background colour is 15, same as wall, etc.... there should not be colourclash problem this way.

I can surely live with screen 1 graphics if I can play good smooth scrolling game, like PAC-LAND!

But I guess,that the real problem is that many people don´t want to see SCREEN 1 graphics, and that´s why they don´t want to see smooth scrolling games which have SCREEN 1 graphics.


About sprites:

this is not an idea at all, just talking about what can be done with msx´s "sprite-features".

Colecovision´s DIG DUG have really good looking sprites, player and all monsters have more than one colour!!

That is achieved simply making ALL sprites flicker ALL THE TIME.

Of course they flicker, but they still look REALLY FANTASTIC, when compared to crude spectrum like MSX-1 Namcot DIG DUG......

Please take a look at Coleco´s DIG DUG!!! (I haven´t played it on real coleco, but on BlueMSX)

What if someone could program such like DIG DUG (or other game) for MSX, but this time only flickering those sprites which get on same row? Result should be really good looking!!!!!!!!!


 
Goto page ( 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 Next Page )
 







(c) 1994 - 2010 MSX Resource Center Foundation. MSX is a trademark of MSX Licensing Corporation.