Well, I did manage to get the code generation running in just one day after all! That’s means I have the entire weekend to rewrite the documentation, and there’s still the final week after that for polishing everything off.
Here’s a function as seen in one of the scripts (INHOME.EMC):
00000F88: global_sub0xF88() { 00000F8A: if ((-1 < var4)) { 00000F94: if (!(var17)) { 00000F9C: var17 = 1; 00000FA0: retval = auto_sub0x33C(30, 0, 28); 00000FAC: retval = o1_queryGameFlag(2); 00000FB2: localvar1 = retval; 00000FB6: retval = o1_queryGameFlag(1); 00000FBC: localvar2 = retval; 00000FC0: var3 = 1; 00000FC4: if ((localvar2 && localvar1)) { 00000FCE: retval = o2_zanthiaChat("At least I found my cauldron and my spellbook.", 29); 00000FD6: return; 00000FDA: } 00000FDA: if (localvar1) { 00000FE0: retval = o2_zanthiaChat("At least I found my cauldron.", 30); 00000FE8: return; 00000FEC: } 00000FEC: if (localvar2) { 00000FF2: retval = o2_zanthiaChat("At least I found my spellbook.", 31); 00000FFA: return; 00000FFE: } 00000FFE: retval = auto_sub0x33C(34, 0, 32); 0000100A: retval = auto_sub0x33C(35, 0, 33); 00001016: return; 0000101C: } else { 0000101C: var17 = 0; 00001020: retval = o2_randomSceneChat(); 00001020: } 00001022: var3 = 1; 00001026: return; 0000102A: } 0000102A: retval = o2_useItemOnMainChar(); 0000102C: return; 0000102C: }
Currently, the decompiler only works with scripts from the talkie version of Kyra2, as one of the functions differ in the number of arguments – but I’ll get that fixed before GSoC is over.
Right now, though, I’ll focus on the documentation – there’s a lot of stuff that needs to be written and rewritten with the changes I’ve made for Kyra.