Success! The extraction tool works.
I’m almost done with the opcode research, there are only a few mysterious opcodes left but my current knowledge of the opcode table was sufficient for me to make a tool to extract all the Japanese strings from the game.
Next step is to code an insertion tool, which will also be a trivial task. I just have to adjust the offsets of the JumpTo opcode to reflect the new changes and in theory it should work.
The JumpTo opcode redirects the current opcode pointer to another position/opcode in the file, this means Viper 6‘s scripted actions don’t have to be linear at all. Also, when the game is waiting for user input, it’s actually jumping around in circles through several JumpTo opcodes. When the user clicks to advance the story for instance, a trigger repositions the opcode pointer to another location, thus exiting the circle of idleness!