It appears a lot, and these casts are intentional and look safe.
Example:
../scummvm/engines/glk/alan3/actor.cpp: In function 'Glk::Alan3::ScriptEntry* Glk::Alan3::scriptOf(int)':
../scummvm/engines/glk/alan3/lists.h:35:52: warning: converting a packed 'Glk::Alan3::ScriptEntry' pointer (alignment 1) to a 'Glk::Alan3::Aword' {aka 'unsigned int'} pointer (alignment 4) may result in an unaligned pointer value [-Waddress-of-packed-member]
35 | #define isEndOfArray(x) implementationOfIsEndOfList((Aword *) (x))
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~
../scummvm/engines/glk/alan3/actor.cpp:38:84: note: in expansion of macro 'isEndOfArray'
38 | for (scr = (ScriptEntry *) pointerTo(header->scriptTableAddress); !isEndOfArray(scr); scr++)
| ^~~~~~~~~~~~
In file included from ../scummvm/engines/glk/alan3/actor.h:25,
from ../scummvm/engines/glk/alan3/actor.cpp:22:
../scummvm/engines/glk/alan3/acode.h:453:8: note: defined here
453 | struct ScriptEntry { /* SCRIPT TABLE */
| ^~~~~~~~~~~
Unlike the 8-disk version, this one has proper MT-32 resources (see
commit 655afcdf55 for more context).
Reported by a French player owning this (rare?) release.
The French VGA floppy version of Monkey 1 (and, apparently, this version
alone) is missing the usual 'roland' room, and the index references an
invalid DISK00.LEC file, although the game scripts didn't disable the
MT-32 feature itself. This causes a fatal error when trying to run this
game with MT-32 support, even with the original interpreter (while it
does work with the English and Spanish VGA floppy versions).
We can't do much about this, since many resources appear to be missing,
but we can detect this version and warn the user before going back to
Adlib mode. Otherwise, some users can be confused by the fatal error
about the DISK00.LEC file.
The talkie version was silently killed while we completed the support for the regular Mac version.
Also cleanup all the LOK static resources a bit (remove garbage offsets).
Add the GameController framework to the project and enable support for
controller user interaction in the Info.plist file. This allows for
Game Controller compatible devices to notify the application when
connected.
Add GameController framework to configure and ports.mk if not using
Xcode to build the target.
Several whitespace changes to the output in order to make the resulting
cpp file consistent with how cpp is formatted in the repo.
- Properly align the opening of the first comment block.
- Properly align the closing brace of the Sci namespace scope.
Methods in scifx_to_cpp.py refer to arrays outside of their scope.
Refactored them to take them as parameters instead to improve
readability.
Tested by calling on the .scifx files in the same directory as below.
Output is unchanged.
```
python .\scifx_to_cpp.py .\lsl2.scifx
```
The scifx_to_cpp.py script has methods intermingled with method calls
that execute when you call the script. Moving the method calls under
a "__main__" header to improve readability.
Tested by calling the script like shown below on the .scifx files in
the same directory. The output is the name.
```
python .\scifx_to_cpp.py .\lsl2.scifx
```