Whether or not SaveFailure() can delete the save file, we want to
invalidate the save name because it probably only lives on the
stack so the pointer will become invalid once DoSave() has ended.
This is the second attempt. All the BE resources of DW1 Mac are
handled correctly now. Added READ_16, READ_32, FROM_16, FROM_32 and
TO_32 to handle all of the different cases where endianess is
already handled. Note that the game scripts are LE, so these
haven't been changed
This was a bad idea, as we ended up with another place where the
resource files were processed. Thus, I'm moving back to handling the
BE resources of the Mac version in the engine itself
This is a cleaner approach to handle the Mac version of DW1 (demo
and full versions - refer to bug #3110936). This way, we can keep
the game engine as LE even with the Mac BE resource files.
Both the demo and the full version progress up to drawing the scene
graphics now and crash because of the currently unhandled bitmap
chunk.
This was added in commit 3fdddd53b2.
However, having handling for both BE and LE resource complicates
the engine code unnecessarily. Thus, a different approach will be
done.
Refer to bug #3110936
This is still work in progress, but it doesn't affect the rest
of the LE versions of DW1. Both the Mac demo and the full
version still crash. The music in the Mac version is skipped for
now, as it isn't MIDI
The scrollbar handle was one pixel too far to the left, and the
topmost position was off by one as well. I've verified this to the
best of my ability. I've compared it visually in DOSBox (which is
a bit tricky for Discworld 2, but I think it's right now), and
against the initial Tinsel v1 source code that was added to
ScummVM. I don't know what the initial Tinsel v2 source code
looked like, though.
Adjusted NM_SLIDE_INSET and NM_SLIDE_THICKNESS to make the inventory
scrollbar work as it did before Tinsel v1 and v2 were combined. The
scrollbar worked before, but you had to click a bit to the left of
it to operate it. It's the only place in the code where these
constants are used, so it should not break anything else.
DW1 PSX seems to have its own scene skipping code for scenes 2 and 3, thus
injecting our own causes it to hang. Scenes 2 and 3 can be skipped separately.