86Box / 86Box

Emulator of x86-based machines.
GNU General Public License v2.0
2.67k stars 332 forks source link

Wrong colors in Tandy 4 color palette #510

Closed Fenix770 closed 4 years ago

Fenix770 commented 4 years ago

Explanation

The game "Amazing of Spiderman" has a separated graphics mode for Tandy 4 color and 16 colors and other for CGA 4 colors. In standard IBM PC with CGA/EGA/VGA card or CGA emulation used in the Hercules card, the Tandy 4 color video mode looks identical to CGA. But In Tandy 1000 machine the Tandy 4 colors option has a different palete of colors than CGA.

Bug: Dosbox seems to detect and use the alternate 4 colors palette if the machine type is set to Tandy and the option 3 is selected. In 86box in both Tandy 1000 HX and SL/2 emulation the standard CGA pallete is used insted of the Tandy palette even with if the option 3 is selected.

Here is the screenshot of the video modes. spidey_002

Here is the game with the Tandy 4 colors mode with Tandy emulation in Dosbox spidey_000.

And here the CGA 4 colors mode or Tandy 4 colors mode in non Tandy 1000 machine or 86box spidey_001

Here is image file of the game: Amazing Spiderman.zip

The game starts with Spidey.exe file.

Posible reason for 4 color mode on Tandy 1000: The Tandy 4 color video mode could be necessary only in Tandy 1000 machines with 384kb of ram, because 128kb was used by the video chip when a 16 color video mode is used leaving insuficient ram for the game itself. Althogh I did not test it in a real Tandy machine, some machines sold in 1988 had 384kb ram like EX,HX and SL. Later models had 512kb as minimum system memory.

OBattler commented 4 years ago

I know that the CGA, if I recall correctly, has a third color palette with exactly the red, cyan, and white colors. What happens if you try to select the Tandy 4 colors mode in the game on a CGA on 86Box?

OBattler commented 4 years ago

OK, I fixed this now and committed the fix. It turns out the Tandy Graphics Adapter processes the CGA colors through the palette array after doing the normal CGA stuff, and that wasn't implemented.

OBattler commented 4 years ago

Since this is fixed, I'm closing this.