(I'm sorry I can't speak English, but I'm using Google Translate. Sorry if the sentences are strange.)
After about three months of development, I ported the Windows version of Viper GTS to GBA (GameBoy Advance). Game data is not included, and only the converter tool is distributed. A separate SGS.DAT file for GTS is required.
https://github.com/akkera102/gbadev-ja-test/tree/main/127_viper_gts_gbaThe analysis data was based on the DecomposeSGS source code provided by Notequalsoft. Specifically, archive unpacking, image data, and audio data decoding. I was especially grateful for the command and parameter information for the script instructions. All the code is available on github. Please refer to it or play around with it if you like.
In terms of technology, the GBA is basically very slow. It can only have one screen buffer and cannot perform composition processing. GTS has 4 screen buffers, and for example, number 3 can display the window frame, number 0 can display a vertically long scrolling image, and numbers 1 and 2 can display images such as the mouth and arms. On the other hand, the GBA cannot do this, and as I said before, it only has one screen.
What I do is to use Python to composite all the images into a single image. Naturally, the capacity increases significantly, but that can't be helped. Basically, a single image is displayed at high speed, and then images of parts such as the mouth and arms are overwritten and displayed.
In the scene where Carrera* looks up at the appearance of the angel, composite and scrolling are performed, but since this is not possible, a single image is displayed as a simple scrolling image.
This project was only possible with the help of Notequalsoft and JG, the forum administrator. Thank you very much.
* EDIT: Changed "Carla" to "Carrera" to remove confusion between VIPER-GTS and VIPER-RSR.