While adding partial Arthur support in Bocfel, I found a couple of small things worth noting.
First, in misc.zil
is the following:
<RT-CENTER-PIC ,K-PIC-SWORD>
<RT-CENTER-PIC ,K-PIC-SWORD-MERLIN>
This is from the intro, and shows the following images:
The calls are in immediate succession, but on slow machines this would “animate” Merlin appearing. However, modern systems are so fast that you never even see the first image. Bocfel sleeps for one second (by hacking in a @read_char
) in between the calls, now, so that you get the animation.
Next, the adaptive palette as described by the Blorb standard isn’t sufficient to handle the palette changes required for Arthur.
Briefly, Blorb specifies that adaptive palette images should take on the palette of the last non-adaptive palette image drawn. In the case of Arthur, the decorative banner should change its appearance based on the current room image that’s drawn. But Arthur does not redraw the banner every time you change rooms. It assumes it’s still there from the last time it drew it, and just plots the new image on top, meaning it won’t change colors to the current palette.
You can see this in interpreters which follow the Blorb standard (at least Frotz and Zoom): start the game, then head east into the church. The banner stays purple. But hit F1 to redraw, and it turns brown.
I work around this in Bocfel: whenever an image is drawn, I check whether it’s a room. If so, I redraw the banner manually with the appropriate palette. Which means it has intimate knowledge of Arthur’s image needs, but that’s OK because all Infocom version 6 games require massive hackery in Bocfel, so it’s par for the course.