MSX1 vs MSX2 vs Sega Mark III (Golvellius related)

Por Szczepaniak

Expert (87)

Imagen del Szczepaniak

18-09-2017, 14:54

OK, I'm editing an interview with the Golvellius designer and programmer, and I had this gem of an answer from the programmer on why it was ported twice:
---
I wasn't involved with the decisions about what platforms to port it to, so I can't tell you anything about that. I was just assigned to work on the titles. We prettied up the graphics for Mark III, and then we based the MSX2 port on that version, but the palette didn't really match up that well, so we had to do a lot of work on that too! That's why I recall the order of the games being developed so clearly. The rules for how the two platforms [Mark III and MSX2] use colours is very different. (FOOTNOTE GOES HERE) That was somewhat troublesome. I'd imagine the platform holders were eager for content, and that's why those versions got made.
---

Now, I read this page with the various comments:
https://www.msx.org/news/emulation/en/msx-on-sega

I need to put a footnote in explaining the difference between the MSX2 and SMS palette, in a concise manner. Can anyone explain it in layman's terms? I read the pages on CRAM and legacy palette's and 6-bits per pixel, and... blah blah blah.

The first person who describes it simple and intellegently will be credited in the footnote as:
---
[NAME] from msx.org explained "blah blah blah"
---

Cheers. :)

Login sesión o register para postear comentarios

Por ricbit

Champion (438)

Imagen del ricbit

18-09-2017, 18:37

For the background:
MSX2 has a palette with 16 colors, where each color can be chosen from 512 (RRRGGGBBB).
SMS has two palettes with 15 colors each, where each color can be chosen from 64 (RRGGBB). Each tile can use only one palette.

For sprites:
Each MSX2 sprite can only use 1 color per line. If you overlap two sprites, then you can use 3 colors per line.
Each SMS sprite can use any color from the palette 2, meaning up to 15 colors and you can use all of them in a single line if you want (well, kinda. Sprites in sms are 8x16 so you can at have at most 8 colors in line because the lines are 8 pixels wide).

Por Vampier

Prophet (2386)

Imagen del Vampier

19-09-2017, 07:41

What he said ^^^^

Por Szczepaniak

Expert (87)

Imagen del Szczepaniak

19-09-2017, 10:46

Cheers Ricbit!

That's brilliant, and very easy to understand. I've put in the footnotes as follows:

Ricbit from msx.org explained: For the background, MSX2 has a palette with 16 colours, where each colour can be chosen from 512. SMS has two palettes with 15 colours each, where each colour can be chosen from 64. Each tile can use only one palette. For sprites, each MSX2 sprite can only use 1 colour per line. If you overlap two sprites, then you can use 3 colours per line. Each SMS sprite can use any colour from palette #2, meaning up to 15 colours, and you can use any of them in a single line if you want (sprites are 8x16 so at most 8 colours)

Por ricbit

Champion (438)

Imagen del ricbit

19-09-2017, 14:08

I wrote both MSX and SMS emulators back in the day, this stuff is now hardwired in my brain. Smile

Por Szczepaniak

Expert (87)

Imagen del Szczepaniak

19-09-2017, 14:38

Super cool! Big smile

Por sd_snatcher

Prophet (3486)

Imagen del sd_snatcher

19-09-2017, 23:24

Refining the explanation a bit further to add more details and make it easier for laymen to understand:

There are three different restrictions in place:

1) For the background:
- The SMS mode-4 can show 32 simultaneous colors, from a total of 64 (format in bits: RRGGBB). But given the need for a visual palette consistency, rarely more than 24 are used simultaneously.
- Compile used the MSX2 screen-5, that can show 16 simultaneous colors from a total of 512 (format in bits: RRRGGGBBB).

2) For sprites:
- Each SMS sprite can show 15 colors from a total of 64, with any arbitrary color per pixel. But the sprites are 8x16, so you have to pair two sprites to compose the game 16x16 characters. A maximum of 8 sprites can be placed per line, meaning a total of 64 sprite pixels per line.
- Each MSX2 sprite is 16x16 and can only use 1 color per line. But if you overlap two sprites, you can use extended 3 colors per line, like an enhanced version of the NES sprites. A maximum of 8 sprites can be placed per line, meaning a total of 128 one-color pixels per line, or 64 three-color pixels per line.

3) Video memory:
- The SMS has only enough video memory to cover 2/3 of the background with unique tiles. The rest must be covered with reused tiles that can be flipped either vertically or horizontally.
- The MSX2 screen-5 has 4 pages of video memory available and its VDP has a built-in coprocessor that can transfer blocks of data between areas of the video without CPU intervention.

The difference in those constraints meant that a lot of graphics had to be redrawn instead of just being converted. The MSX2 also has its screen-8 with 256 simultaneous colors that could easily handle any SMS backgrounds, but the sprites in this mode have a weird fixed palette that is very hard to use.

Additionally, the intro and ending demos were created for the MSX2+ with 19268 simultaneous colors. This content was entirely new and had to be created from scratch.

Por ricbit

Champion (438)

Imagen del ricbit

20-09-2017, 00:39

SMS cannot show 32 simultaneous colors because color 0 in each palette is transparent, and there's no flag to turn them into actual colors, as in MSX2.

(At least without raster effects. If you allow dynamic palettes then you can show all 64 colors at once).

Por sd_snatcher

Prophet (3486)

Imagen del sd_snatcher

20-09-2017, 03:16

ricbit wrote:

SMS cannot show 32 simultaneous colors because color 0 in each palette is transparent, and there's no flag to turn them into actual colors, as in MSX2.

Are you sure? What is then the color shown for the pixels that have the color-0, on tiles of the background that have the priority bit set to 0, when the border is also set to the color-0?

Por ricbit

Champion (438)

Imagen del ricbit

20-09-2017, 03:51

Any transparent pixel with nothing behind will display the border color, rendered with the sprite palette. I'm not sure if color 0 ever gets rendered, but if it does then the max you can get is 31 colors at the same time (without raster effects).

Por sd_snatcher

Prophet (3486)

Imagen del sd_snatcher

20-09-2017, 12:14

Ok, now I agree. So "31 colors" must be read instead of "32 colors" in that explanation instead. Because the color-0 must be rendered, otherwise the image would get misaligned.