Have the VDP limits been reached?
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 ?








- 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 ?








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.
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.
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?'
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....
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....
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?
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
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 possibleIndeed 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.
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?
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

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 possibleIndeed 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.
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
.
Is there still a link somewhere? It sounds cool, even if it's a proof-of-concept
.
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.
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, 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.

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.
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)
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...
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...

By Hrothgar
Champion (281)
09-09-2008, 20:02