[ scummvm-Patches-608138 ] palManipulateInit code (bug #558245)

noreply at sourceforge.net noreply at sourceforge.net
Thu Sep 12 03:25:02 CEST 2002


Patches item #608138, was opened at 2002-09-11 20:25
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=418822&aid=608138&group_id=37116

Category: None
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Jamieson Christian (jamieson630)
Assigned to: Nobody/Anonymous (nobody)
Summary: palManipulateInit code (bug #558245)

Initial Comment:
The included modifications to gfx.cpp implement 
palManipulateInit with the necessary information for 
palManipulate to correctly execute SCUMM opcode 
0x33 subcode 0x0F (palManipulate). The lack of 
implementation of this opcode is addressed in bug 
#558245, in which the knowledge basis for this 
implementation was developed.

Some notes:

* The implementation of palManipulate was left 
untouched, since according to fingolfin it is the result of 
direct reverse engineering on the LEC code. However, it 
has a resolution problem: the slowest transition rate it 
supports is 1 luminescence value every 256 ticks. FOA 
has at least one occurrence of a palManipulate over 800 
ticks, and I believe the lack of resolution shows. (I also 
believe this is why in that instance, there is a trailing 
palManipulate to immediately change to the target 
palette and clean up any inaccuracies that arose over 
the course of the transition.)

I originally showed fingolfin a slightly modified 
palManipulate implementation that has no such 
resolution limitations, at the cost of 3 extra divide 
operations per tick. If there is any interest in this 
variation, I would be happy to submit a patch for that as 
well. (There are associated mods to palManipulateInit to 
make it work.)

* I have assumed in my code that each tick corrseponds 
to 1/10 second; consequently, _palManipCounter is set 
equal to the "time" parameter without any 
transformation. In timing tests, this appeared to work out 
properly. I'm sure someone can confirm or deny the 
validity of this assumption for me off the top of their head.

* I tested the palManipulate usage in FOA Room 23 (the 
Inner Sanctum) and Room 96 (the extro). Everything 
seems to be working quite well. However, I only tested it 
in the Win32 non-MP3 debug build. For some reason, I 
kept getting page faults immediately when trying to run 
the Win32 release build. I may be linking to a debug 
version of SDL.lib; I'll keep trying to get it to work.

* The patch submitted was generated by diff - GNU 
diffutils version 2.7, the Win32 port available from 
SourceForge. I was using the "diff" command on CVS 
1.11.2, but its output appeared to be substantially 
different from the patches that I've seen here. Let me 
know if this patch is not in the form needed.

I hope this patch helps bring that gorgeous Indy sunset 
back to life. :-)

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

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




More information about the Scummvm-tracker mailing list