[ scummvm-Bugs-812891 ] FMTOWNS: Palette bugs

SourceForge.net noreply at sourceforge.net
Fri Sep 26 07:26:51 CEST 2003


Bugs item #812891, was opened at 2003-09-26 07:26
Message generated for change (Tracker Item Submitted) made by Item Submitter
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418820&aid=812891&group_id=37116

Category: Graphics
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Thomas Combeleran (hibernatus)
Assigned to: Nobody/Anonymous (nobody)
Summary: FMTOWNS: Palette bugs

Initial Comment:
In Loom FM Towns there are some rooms where the 

distaff has wrong colors (and other objects actually, the 

leaf for example).

That's because the 16 first colors of the palette should 

be constant.

They're initialized in sub_114C in INDY3.EXP, sub_156C in 

LOOM.EXP and sub_1550 in ZAK.EXP.

And you can find the right palettes at 0x230B8 in 

INDY3.EXP, 0x23E6C in LOOM.EXP and 0x23E0C in 

ZAK.EXP. See: http://hibernatus34.free.fr/pv/



A little warning: When you enter room 5 in Loom, a call 

to o5_roomOps does _shadowPalette[13] = 6 which 

makes another glitch on the distaff. So the 16 first 

colors are really constant and shouldn't be remapped.



I guess it isn't very important for Zak (there's a 

difference, but it's not annoying).

Indy3 should also be ok since the PC version has the 

same "bug" as scummvm (look at the verbs in the 

gymnasium).

But since you have to fix Loom, i guess it won't hurt to 

fix every FM Towns game :)



Same thing for CharsetRendererV3::setColor.

You only fixed Loom, but if you look at the disassembly 

(sub_3014 in INDY3.EXP, sub_3718 in ZAK.EXP, 

sub_36CC in LOOM.EXP), you can see it should be:



void CharsetRendererV3::setColor(byte color) {

	_shadowColor = (_vm->_features & 

GF_FMTOWNS) ? 8 : 0;

	_color = color & 0x0F;

	if ((_vm->_features & GF_FMTOWNS) && 

_color == 0)

		_color = 8;

	if (_vm->_features & GF_OLD256)

		_dropShadow = ((color & 0x80) != 0);

	else if (_vm->_features & GF_16COLOR)

		_dropShadow = ((color & 0xF0) != 0);

	else

		_dropShadow = false;

}



The "if (_color == 0) _color = 8;" can be seen at 

0000397B in the disassembly of ZAK.EXP for example.

But i guess that case never happens in scripts.



----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418820&aid=812891&group_id=37116




More information about the Scummvm-tracker mailing list