[UTILITY] Lua 5.1 tools: compiler, decompiler, snippets & extendable lua.dll with SDK

Search This thread

sztupy

Inactive Recognized Developer
Dec 21, 2008
1,061
877
Edinburgh
sztupy.hu
[UTILITY] Lua 5.1 tools: compiler, decompiler, snippets & extendable lua.dll with SDK

Hi!

This package contains lots of useful tools for Manila3D Lua5.1 editing. You can find here a compiler a decompiler, a small script repository at post #3 and ExtLua, which provides developers the possibility to extend M3D's functionality.

Also check m9editor which is a really great application to edit mode9 files by 6Fg8!
And check Manila kitchen project which hosts the decompiled scripts with a LUA IDE and everything ready to go.
You might want to try out mode9 converter too.

ChangeLog

LuaDec 2.0
  • Finds out where locals are
  • Read more here

LuaDec 1.9
  • Some changes regarding LDS(2) strings and for loops (it's still a bit unstable)
  • LuaDec has a new option to disassemble instead of decompile
  • The provided lua package (lua, luac and luadec) is now unicode compilant, it will read and write the unicode variants of the scripts instead of the ascii variants.
  • Read more here

LuaDec 1.0
  • Added LDS2 support to both luadec and luac
  • Fixed OP_TFORLOOP handling
  • Read more here

LuaDec Beta6
  • Improved luadecguesser with fast mode
  • Fixed a crashing when encountering boolean values
  • Increases happy face rate in XDA-developers forum
  • Read more here

LuaDec Beta5
  • Improved luadecguesser
  • Read more here

luaDec Beta4
  • Upvalue handling
  • Added a brute-force local variable searcher application
  • Read more here

luaDec Beta3
  • Generic for loop handling
  • Improved local variable handling
  • Read more here

ExtLua 0.1
  • Initial release
  • Read more here

luaDec Beta2
  • Less crashing
  • More decompiling
  • Read more here

LuaDec Beta1
  • Decompiling simpler scripts and recompiling them will result in a semantically identical compiled lua script!
  • Numeric for loops are fixed, they should work fine
  • Complex boolean expressions and conditional statements will make luadec crash
  • Only works with ascii files. Don't forget to convert the lua files to ascii then back to unicode

Good to know

  • Luadec will output a "-- Lua5.1" or "-- Warning" comment to lines, where you should check the output.
  • If luadec crashes try running it with the "-d" parameter to acquire as much information as you can.
  • Compile your lua files with the "-s" parameter set.
  • It was compiled with Visual C++ 2008, so you might need the MSVC++ 2008 redistributables too.
  • Valid Numbers are in range from -32768.0 to 32767.0. Numbers not in this range will be cropped by the compiler.
  • There is a decompilation tutorial starting here

DL link: http://winmo.sztupy.hu/luadec.html

I start a repository at post #3 for them, but you can just look at the decompiled rhodium2 scripts too.
 
Last edited:

sztupy

Inactive Recognized Developer
Dec 21, 2008
1,061
877
Edinburgh
sztupy.hu
Useful snippets of code

Succesfully decompiled scripts

All rhodium and rhodium2 scripts:
http://winmo.sztupy.hu/manilakitchen.html

Run an application:

Code:
Shell_NavigateTo(command,parameters)

Add an eventhandler to an event: (thx D-MAN666)

Code:
object.EventName:connect(functionRef, scopeRef);
object.EventName:disconnect(functionRef, scopeRef);

Where events can be: onPress, onRelease, onReleaseOutside

Example (from 4aefb03d_manila):

Code:
require("hitfeedback")
OnPhotoTouchPress = function(loc_0)
   gnPhotoTouchPressY = loc_0._ymouse
   Camera3DHitFeedback:Press()
end
PhotoHitTarget.onPress:connect(OnPhotoTouchPress)
 
Last edited:

utopykzebulon

Senior Member
Jul 5, 2008
829
515
40
Grenoble
do you have to do something first at manila files?
for me say bad headers!

@udk : i'm running on win 7 beta too and it's working in CMD...
 

sztupy

Inactive Recognized Developer
Dec 21, 2008
1,061
877
Edinburgh
sztupy.hu
Alpha 2:
  • Less chatty (no more "arg" values)
  • Fixed constant loading errors
  • fixed function variables
  • Added handlers to the new opcodes
  • Some changes to OP_TEST

Check first post for links.

I also started a repository for useful snippets of code at post #3
 
Last edited:

sztupy

Inactive Recognized Developer
Dec 21, 2008
1,061
877
Edinburgh
sztupy.hu
Hi!

beta1 is released. I also added a compiler (and an interpreter just in case), that was changed to use TF3D's Q16.16 numeric encoding format. (Thanks to D-MAN for deciphering the encoding)

Currently luadec is able do decompile a lot of scripts, except:
  • Scripts with too much local variables
  • Scripts with complex boolean expressions and conditional statements
  • Scripts where luadec crashes while decompiling

This means however that recompiling small scripts WORK, and will result in a semantically identical files (semantically means it will do the same as the original. Usually the only thing that is changed is the line number of the function declarations (yes, lua stores this information in the compiled files) )

Tutorial

For example, to change 4aefb03d_manila do the following:

1. Convert it to ascii
Code:
luaconv 4aefb03d_manila x uni2asc
2. Decompile
Code:
luadec x > m.lua
3. Edit m.lua
4. Recompile using luac from my package
Code:
luac -s m.lua
5. Convert output back to unicode
Code:
luaconv luac.out 4aefb03d_manila.new asc2uni

Here is an example: this will run footprints instead of HTCAlbum
Code:
require("hitfeedback")
gnPhotoTouchPressY = -1
Camera3DHitFeedback = HitFeedback(Camera3D)
OnPhotoTouchPress = function(loc_0)
   gnPhotoTouchPressY = loc_0._ymouse
   Camera3DHitFeedback:Press()
end

OnPhotoTouchRelease = function(loc_0)
   Camera3DHitFeedback:Release()
   if gnPhotoTouchPressY ~= -1 and loc_0._xmouse < CameraSprit.Position.x and noImage2DCamera._visible == false then
      Shell_NavigateTo("\\Windows\\HTCFootprint.exe", "")
   end
   gnPhotoTouchPressY = -1
end

OnPhotoTouchReleaseOutside = function()
   Camera3DHitFeedback:Release()
end

PhotoHitTarget.onPress:connect(OnPhotoTouchPress)
PhotoHitTarget.onRelease:connect(OnPhotoTouchRelease)
PhotoHitTarget.onReleaseOutside:connect(OnPhotoTouchReleaseOutside)
 

xboxmod

Senior Recognized Developer
May 20, 2007
994
2,010
42
Gap
:)
You're the best
Now we can create a lots of manila mods
i try it now
thanks a lot for this tool
one of the best with mode9editor;)

edit after use:
really a giant leap in manila research....
 
Last edited:

6Fg8

Retired Senior Moderator
Apr 13, 2008
1,150
7
Vienna
fantastic work, sztupy. Already working on integration with m9editor. You're going to break the final frontier :cool:
 

pcarvalho

Inactive Recognized Developer
Jan 6, 2008
2,705
206
WOW! manila's inside out :D
great work

i'm using windows 7 beta and i'm getting this error:
the application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.

how to correct this?
 
Last edited:

sztupy

Inactive Recognized Developer
Dec 21, 2008
1,061
877
Edinburgh
sztupy.hu
WOW! manila's inside out :D
great work

i'm using windows 7 beta and i'm getting this error:
the application has failed to start because its side-by-side configuration is incorrect. Please see the application event log or use the command-line sxstrace.exe tool for more detail.

how to correct this?

Did you install the MSVC++ 2008 redistributables?
 

pcarvalho

Inactive Recognized Developer
Jan 6, 2008
2,705
206
Did you install the MSVC++ 2008 redistributables?

yes, all that you say in first post is installed...

in the log i have:

Activation context generation failed for "C:\Users\XXXXXXXXX\Desktop\lua\luadec.exe". Dependent Assembly Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="9.0.21022.8" could not be found. Please use sxstrace.exe for detailed diagnosis.

and found this...
http://www.gamedev.net/community/forums/topic.asp?topic_id=493103
 
Last edited:

Top Liked Posts

  • There are no posts matching your filters.
  • 1
    I still haven't been able to figure out where this is actually referring too. I see similar situation in other lua files. But in each case, I've been unable to locate where or what it's actually trying to do. :confused:

    They are dialogs (as their name suggests). They are defined in manila.xml (26948339_manila). They seem to be like some kind of "embedded mode9" files

    Example:
    Code:
    <PageGroup Name="settings">
    (...)
      <PageGroup Name="updatesanddata">
        <Page Order="0" Name="updatesanddata.page" PackageName="HTC" Title="[[IDS_UPDATESANDDATA]]" Default="true" >
          <ComponentReference Name="page"  Mode9Path="HTC\settings.mode9" Component="UpdatesAndDataPageComponent" SmartComponent="true"  />
        </Page>
      </PageGroup>
    (...)
    </PageGroup>