This week I have spent all time reversing dialogs bytecode format.
I have almost reversed and implemented it.
Let’s look at opcode format.
The opcodes in dialog format have size of 4 bytes.
There are at least 10 opcodes:
- BREAK
- MENU
- GOTO
- MENURET
- 0x05
- RETURN
- PLAY
- CIRCLE
- 0x09
- 0xA
For example, PLAY opcode contains index of struct which contains speaker id, sound name and subtitle. The engine executes this opcode and when the sound ends the next opcode is executed.
For now the only thing that I doesn’t understand why the file with dialogs contains data which is not used. But I assume this was used to display some useful info for developers.
Small video showing the current state of first game scene.
The next week I plan to implement drawing subtitles and polish dialogs, so that intro dialog in first game scene can be continued.