Regarding the OP, I don't know of any other companies that did this. For what reasons? Well, it's pretty clear. If the game becomes popular, you can port it to some other popular machine and reach even more public = more sales. You have a good part of the code already done, after all. Some companies like Dinamic seemed to have some kind of emulation engine for MSX, so they wrote the programs for Spectrum and ported them to MSX with little effort.
As for Elite, I'd say the MSX version is definitely not a port from the Spectrum version. The original version was for the BBC Micro and was ported to or rewritten for many other platforms. According to this page: http://www.elitehomepage.org/z80/index.htm the Spectrum and MSX ports were made by different companies and with a three year difference. The CPC and Spectrum versions are from the same company. The MSX version does not look at all like the Spectrum version, and their Goat Soup generator (the generator of the random planet descriptions) differs.
> Spectrum Elite was programmed by Torus and published by Firebird in 1985.
> Amstrad CPC Elite was programed by Torus and published by Firebird in 1986.
> MSX Elite was programmed by Mr Micro and published by Firebird in 1988.
As for good graphics in the Speccy, I was pretty impressed with the ones in Star Farce [sic], a classic vertical scrolling bullet hell. https://www.youtube.com/watch?v=7zyHxi7C_a0 But I agree, Valley of Rains looks wonderful.
pgimeno: an absolute offtopic, but I guess you're the (legendary!) author of one of the first speccy emulators, right?
This is technically almost incredible:
https://www.youtube.com/watch?v=IKOlaWAX1Gg
They plot multiple colors per tile using cycle accurate code....
A sort of screen 2 done in software as it were an Atari 2600...
BTW
Valley of Rains looks better
When art wins technology
;-)
This is technically almost incredible:
https://www.youtube.com/watch?v=IKOlaWAX1Gg
They plot multiple colors per tile using cycle accurate code....
A sort of screen 2 done in software as it were an Atari 2600...
BTW
Valley of Rains looks better
When art wins technology
;-)
That's insane, I'd love to disassemble it and see how it's done
I love the ingenuity that inspires this kind of thing but it sucks when this kind of technique was done on systems that have 60Hz variations - usually not possible because of the extra cycles/line on PAL :(
this is the Nirvana engine used there
https://www.worldofspectrum.org/forums/discussion/45538/redi...
pgimeno: an absolute offtopic, but I guess you're the (legendary!) author of one of the first speccy emulators, right?
Heh, yes that's me
Also MSX has indirect VRAM access, due to this difference often Speccy ports write to RAM like on Spectrum and then a routine copies it to VRAM rather than directly writing to VRAM. This extra copy simplifies the port but also slows it down.
1) The ZX-Spectrum VRAM lines are shuffled in memory, as the layout is more suited for the raster to output video to the TV
2) The Z80 is slowed down then it access the speccy VRAM
For these two reasons, most of the games draw the image on a backbuffer, and only when finished they transfer it to the VRAM area. When porting to the MSX, they just replaced this VRAM transfer routine.
The biggest reason for the huge slowndown on the Speccy-to-MSX ports is the need to nearly emulate the ZX-Spectrum video on the fly. That means:
1) The MSX has to convert a linear bitmap to tiled bitmap format
2) The MSX has an 8x bigger color table, as you mentioned
Even if the port detects an MSX2 and uses the extra VRAM bandwidth like Amusement Factory does, the CPU cost of (1) and (2) is so high that it's not enough to get a full frame rate.
this is the Nirvana engine used there
https://www.worldofspectrum.org/forums/discussion/45538/redirect/p1
Nirvana engine is impressive! The timings are precise, to make that work. And they stay precise, even in different Spectrum models. I have ran both the Nirvana demo and that game you linked, on my real Spectrum +2. Perfect!
1) The MSX has to convert a linear bitmap to tiled bitmap format
If done right, that doesn't affect much. You'll just do something like this, for every "character" on the screen:
; Offline buffer address in HL PUSH HL ; Repeat 8 times LD A,(HL) INC H OUT (C),A ; end repeat POP HL INC HL ; etc ...
2) The MSX has an 8x bigger color table, as you mentioned
Yes, but most of these spectrum games don't update the color table for every frame, anyway.
I think the cause of the slowdown is usually just bad / lazy programming.