[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 483: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/bbcode.php on line 112: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4712: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3842)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4714: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3842)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4715: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3842)
[phpBB Debug] PHP Warning: in file [ROOT]/includes/functions.php on line 4716: Cannot modify header information - headers already sent by (output started at [ROOT]/includes/functions.php:3842)
JoinUO Forums • View topic - New mass M decompiler for the Ultima Online Demo
Page 1 of 1

New mass M decompiler for the Ultima Online Demo

PostPosted: 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
13 scripts bugged.JPG (36.81 KiB) Viewed 11644 times


The guard scripts is the only scripts with 2 such bugs:
guard script has 2 such bugs.JPG
guard script has 2 such bugs.JPG (34.31 KiB) Viewed 11644 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

PostPosted: Fri Sep 24, 2010 2:33 pm
by Batlin

Re: new mass m decompiler preview

PostPosted: 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

PostPosted: Mon Sep 27, 2010 11:11 am
by Garret
Wooow, great work was done oO

Re: new mass m decompiler preview

PostPosted: Mon Sep 27, 2010 12:30 pm
by Dies Irae
Totally great.

^_^

Re: New mass M decompiler for the Ultima Online Demo

PostPosted: Wed Mar 16, 2011 2:19 pm
by Batlin

Re: New mass M decompiler for the Ultima Online Demo

PostPosted: Tue Apr 05, 2011 3:05 pm
by Batlin

Re: New mass M decompiler for the Ultima Online Demo

PostPosted: 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;".