Difference between revisions of "LUA"
sc4e>Whatevermind m (small revision of the links) |
sc4e>Whatevermind m (small revision of the links) |
(No difference)
|
Revision as of 19:28, 12 January 2013
The information in this article was copied from the SimsWiki and may be outdated. This article has not been reviewed for technical accuracy or updated knowledge on this topic. If you are knowledgeable enough on the topic to review the article, please do so and remove this label. (more info). |
LUA is an imperative programming language, designed in 1993 by Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes, members of the Computer Graphics Technology Group (Tecgraf) at PUC-Rio, the Pontifical University of Rio de Janeiro, in Brazil. "Lua" means "Moon" in Portuguese. Lua is used in SimCity 4 for the generation of help texts, creation of rewards, defining U-Drive-It missions, and other types of codes.
More information about Lua can be found on the official site and on Wikipedia.
Contents
Use in SimCity 4
Lua has many uses in SimCity 4, as mentioned above. The exact format used can vary depending on the use. The formats below are courtesy of Karybdis.
Instance by: CRC24Polynomial = 0x01864cfb, CRC24Seed = 0x00b704ce, return (CRC24(from, false) | 0xFF000000)
The types of LUA files are:
- Advice LUA's
- Advisor Definitions Script
- LUA Definitions
- Mission LUA Files
- LUAObject
- System LUA Files
- Tutorial Scripts
Binary LUA
The following format is for binary Lua scripts, and was developed by Quaxi.
Here are the first things known about the .objLua and .globalObjLua:
General Format
DWord: 1b 4c 75 61 (ID) Byte: Version 16-Bytes: Header ---> Root "Function Block"
Function Block
Dword: Character count n n-Byte: Name of the Function (null terminated) 5-Byte: unknown Byte: argument Count Byte: unknown Byte: stack Size 12-Byte: 00 4-Byte: constant counter ---> Loop Constant Block 4-Byte: functions counter ---> Loop Function Block 4-Byte: instruction counter ---> Loop Instruction Block
Instruction Block
(a=Operand a, b=Operand b, c=Operand c, o=Opcode):
Dword: aaaa aaaa bbbb bbbb bccc cccc ccoo oooo
This Document lists the available opcodes: http://www.tecgraf.puc-rio.br/~lhf/ftp/doc/sblp2005.pdf
Constant Block
Byte: ConstantType ----> Constant Data
List of Known Constant Data Types
0x00 = Empty, Null - This seems to mark an empty block 0x03 = Number DWord: Unknown DWord: Unknown 0x04 = Strings DWord: Length n of the following PString n-Bytes: Instruction Name, null-terminated
|