New mass M decompiler for the Ultima Online Demo
Posted:
Fri Sep 24, 2010 9:16 am
by Batlin
Why a new mass M Decompiler was needed:
During development I noticed 13 bugged OSI-scripts:
- 13 scripts bugged.JPG (36.81 KiB) Viewed 14886 times
The guard scripts is the only scripts with 2 such bugs:
- guard script has 2 such bugs.JPG (34.31 KiB) Viewed 14886 times
The new Mass M Decompiler will encompass the extra ")" operator using a block comment as shown in the guard screenshot.
Just for the record, the script parser OSI uses will handle the extra ")" as if it were a ";" punctuator, therefor the scripts will work just fine.
Re: new mass m decompiler preview
Posted:
Fri Sep 24, 2010 3:23 pm
by Derrick
Looking nice man.
I guess it's fortunate that these syntax errors are not more pervasive. I am glad to see the decompiler annotating the errrors. I think there will be a similar situation if the de/compiler ends up supporting the Defines file too, while there's only been a couple errors found in there, I'm betting there's more we haven't seen.
Re: new mass m decompiler preview
Posted:
Mon Sep 27, 2010 11:11 am
by Garret
Wooow, great work was done oO
Re: New mass M decompiler for the Ultima Online Demo
Posted:
Tue May 17, 2011 1:50 pm
by Batlin
Derrick has been working behind the scenes on a new compiler for Ultima Online Demo. During his testing he has discovered some new interesting typo-bugs in the OSI scripts.
The new decompiler, Mass M Decompiler, Publish 7, takes care of those typo bugs and produces clean output. It is important to note that almost none (at all?) of these typo bugs are producing buggy script behaviour. Most bugs are handled silently by the script parser found in the uodemo.exe.
A list of bugs fixed, between Publish 6 and Publish 7:
More missing semicolons bugs:
4159, 4161, detcthid, polymrphbase, shiptillerman, shrine, speechrelay, spellai, test1, trap_statue
More missing comma bugs:
carpentry, chaosguild, hinttest, nonhuman, orderguild, player, virtueguild
Excess comma bug:
flourmill
Double case bugs:
dyetub, itemmanip, mydyetub, scissors, shipplank, torch
Assignment using '==' instead of '=':
old_human
Assignment using '-' instead of '=':
statue_spikes_one, statue_spikes_two
Download link:
The new decompiler also gives an option to handle and fix (comment out) double cases in switch statements. This option is only valid for UOSL (enhanced) output. Also, "return();" is automatically converted to "return;". Both are valid statements for the demo. Derrick and I discussed this and we chose to only allow "return;".