Autor
| Is it possible to make this screen mode?
|
Ada msx novice Mensajes: 29 | Publicado: Mayo 22 2007, 17:23   |
Hi!
I wonder if it's possible to make a screen mode like the one we find on the Spectrum, I mean 6144 bytes for patterns and 768 bytes for the color table (like screen 1). Take into account I'm talking about being possible for MSX1 also. If possible, could this lead into trouble, as it would be a 'mixed' mode?
Thanks!  |
|
jltursan msx professional Mensajes: 826 | Publicado: Mayo 22 2007, 18:47   |
Not totally VDP controlled I'm afraid; but you can always get the same results vpokeing the 8 color table bytes...  |
|
nikodr msx addict Mensajes: 449 | Publicado: Mayo 23 2007, 03:08   |
Why would someone want to limit himself to only 6144 bytes?
|
|
Ada msx novice Mensajes: 29 | Publicado: Mayo 23 2007, 09:41   |
The reason is to vpoke just one byte and not eight. I wnat to do that in order to emulate the spectrum screen layout, so I can use software sprites in MSX, like the old conversions from that computer. I know you all hate them, but I'm doing experiments, that's all  |
|
jltursan msx professional Mensajes: 826 | Publicado: Mayo 23 2007, 12:45   |
If you define a monochrome area it's easy to emulate; the problem arises when you try to get colored sprites, I can see what you're talking about; but AFAIK there's no solution to that, you need to set the 8 color bytes.
If you think about the spectrum games with the "famous" multicolored blocky sprites (Savage, Popeye,...), now the MSX could benefit of the speed of its nametable. Maybe you can explore this way (I really like the Hudson blocky games or the big sprites of games like DoorDoor)
|
|
SLotman msx professional Mensajes: 518 | Publicado: Mayo 23 2007, 15:07   |
The biggest problem is that spectrum VRAM is linear while on MSX you have to plot it on 8x8 blocks.
Add to this that you cant write directly to VRAM like Spectrum, and you have explained why conversions from Spectrum to MSX runs much slower than the originals (in most cases, of course)
Would be nice if the conversions could be made using MSX sprites, specially in some games to reduce color clash... but it's not an easy task
Games could be even further adapted, to - when running on MSX2 - play music or samples (Robocop comes to mind) from Spectrum 128k;
But if someone even attempt to do these things, they're better coding the game from scratch, it will be faster  |
|
Ada msx novice Mensajes: 29 | Publicado: Mayo 23 2007, 16:21   |
Thanks!
I could vpoke the color table first (after drawing the screen, and as JL says, vpokeing the 8 bytes of the characters) and then move the sprites. I've seen this effect on some Spectrum games but the problem is the sprites take the color of the zone they're in. Most Spectrum games also "colour" the sprite zone (there's color clash with the background, of course) but I'm afraid MSX is too slow to vpoke the colors as I've got to LDIRVM the pattern table also. That's why I found that a color system like screen1 would be easier as I'd have to dump only 768 bytes (or whatever I use). If you have any ideas using pure sc2, I'll be more than happy.
Thanks again!  |
|
Ada msx novice Mensajes: 29 | Publicado: Mayo 23 2007, 16:23   |
Oh, by the way, I'm not making a conversion, just a new game (yes, you'll hate me cause I'm doing this that way!)  |
|
pitpan msx master Mensajes: 1367 | Publicado: Mayo 23 2007, 18:19   |
You won't get very far if you use LDIRVM. To update a big amount of the VRAM you'll need to forget the BIOS and use a bunch of OUTIs instead. Anyway, even using the fastest techniques, you won't break the 1,5 KB / frame barrier. Remember that you need to introduce a pause between OUTIs in order to prevent data corruption.
About software sprites, you can have a look at http://www.robsy.net/joemove4.rom
Use UP/DOWN to modify the number of sprites and SPACEBAR to use the border-colour trick to measure CPU usage. |
|
PingPong msx professional Mensajes: 869 | Publicado: Mayo 23 2007, 22:10   |
Quote:
| You won't get very far if you use LDIRVM. To update a big amount of the VRAM you'll need to forget the BIOS and use a bunch of OUTIs instead. Anyway, even using the fastest techniques, you won't break the 1,5 KB / frame barrier. Remember that you need to introduce a pause between OUTIs in order to prevent data corruption.
About software sprites, you can have a look at http://www.robsy.net/joemove4.rom
Use UP/DOWN to modify the number of sprites and SPACEBAR to use the border-colour trick to measure CPU usage.
|
Hi, pitpan, can you make a msx2 screen5 version of the demo using the vdp blitter? would be nice to compare the performance results... |
|
jltursan msx professional Mensajes: 826 | Publicado: Mayo 24 2007, 10:55   |
I've been lately doing SC8 blitting experiments and found that a 16x16 area takes about 4200T (measured by the time waiting the VDP end flag); so it's slighty faster than using bare OUTIs. To speed up the blitting, the sprites were disabled and the screen height reduced to 192 pixels. I guess that in SC5 the blitting speed must be twice if you plot only on even X coordinates.
|
|
pitpan msx master Mensajes: 1367 | Publicado: Mayo 24 2007, 18:02   |
Are you seriously asking me to code for MSX2!!!?  |
|
|
|
|