Difference between revisions of "42484156"
(Syncronized with BHAV article) |
m (Update, etc) |
||
| Line 1: | Line 1: | ||
| − | + | =42484156 (BHAV)= | |
| − | == | + | This resource contains the [[SimAntics]] subroutines. |
| − | + | ==Format== | |
| − | 64 | + | ;64 bytes |
| − | 12 | + | :File name (null terminated) |
| − | '' | + | ;12 bytes |
| − | + | :(see [[42484156#Header Format|Header Format]] below) | |
| − | + | ;''for each entry'' | |
| − | + | ;variable | |
| + | :(see [[42484156#Entry Format|Entry Format]] below) | ||
| − | + | ===Header Format=== | |
| − | + | ;WORD | |
| − | + | :Signature (0x8000 through 0x8009) | |
| − | + | ;WORD | |
| − | + | :Number of instructions in subroutine | |
| − | + | ;Byte | |
| − | + | :tree type (deprecated) | |
| − | + | ;Byte | |
| + | :Number of parameters passed to the subroutine | ||
| + | ;Byte | ||
| + | :Number of local variables used in the subroutine | ||
| + | ;Byte | ||
| + | :Header flag (depreciated) | ||
| + | ;DWORD | ||
| + | :Tree version number (signed integer) | ||
| + | ===Entry Format=== | ||
| + | The signature defines the structure of the each instruction. | ||
| − | + | ====8000, 8001 & 8002==== | |
| − | + | (instruction length: 12 bytes) | |
| − | + | ;WORD | |
| − | + | :Function/OpCode | |
| − | + | ;Byte | |
| − | + | :Goto on true | |
| − | + | ;Byte | |
| − | + | :Goto on false | |
| − | + | ;8 bytes | |
| − | + | :Operands | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ||
| − | + | ====8003 & 8004==== | |
| − | + | (instruction length: 20 bytes) | |
| − | + | ;WORD | |
| + | :Function/OpCode | ||
| + | ;Byte | ||
| + | :Goto on true | ||
| + | ;Byte | ||
| + | :Goto on false | ||
| + | ;16 bytes | ||
| + | :Operands | ||
| − | + | ====8005 & 8006==== | |
| − | + | (instruction length: 21 bytes) | |
| + | ;WORD | ||
| + | :Function/OpCode | ||
| + | ;Byte | ||
| + | :Goto on True | ||
| + | ;Byte | ||
| + | :Goto on False | ||
| + | ;Byte | ||
| + | :Node version (Flag - 0x00 or 0x01) | ||
| + | ;16 bytes | ||
| + | :Operands | ||
| − | + | ====8007 & 8008==== | |
| − | + | (instruction length: 23 bytes) | |
| + | ;WORD | ||
| + | :Function/OpCode | ||
| + | ;WORD | ||
| + | :Goto on true | ||
| + | ;WORD | ||
| + | :Goto on false | ||
| + | ;Byte | ||
| + | :Node version (Flag - 0x00 or 0x01) | ||
| + | ;16 bytes | ||
| + | :Operands | ||
| + | ====8009==== | ||
| + | (instruction length: 24 bytes) | ||
| + | ;WORD | ||
| + | :Function/OpCode | ||
| + | ;WORD | ||
| + | :Goto on true | ||
| + | ;WORD | ||
| + | :Goto on false | ||
| + | ;Byte | ||
| + | :Node version (Flag - 0x00 or 0x01) | ||
| + | ;16 bytes | ||
| + | :Operands | ||
| + | ;Byte | ||
| + | :Cache flags | ||
| − | Number of each signature type (0x8000 - 0x8007) contained in objects.package: | + | ====Notes==== |
| − | 0x8000 - 1 | + | The 1-byte Goto statements in 8001-8006 appear to use the same codes as was used in [[The Sims 1]]: *0xFD as Error |
| − | 0x8001 - 2 | + | *0xFE as True |
| − | 0x8002 - 25 | + | *0xFF as False. |
| − | 0x8003 - 75 | + | |
| − | 0x8004 - 4 | + | The 2-byte Goto statements in 8007-8009 use these Goto codes: |
| − | 0x8005 - 285 | + | *0xFFFC as Error |
| − | 0x8006 - 1,357 | + | *0xFFFD as True |
| − | 0x8007 - 15,507 | + | *0xFFFE as False. |
| + | |||
| + | The 8007-8009 formats can contain more than 256 seperate instructions, thus the use of 2-byte Goto statements. | ||
| + | |||
| + | ==Notes== | ||
| + | Number of each signature type (0x8000 - 0x8007) contained in (original) objects.package: | ||
| + | *0x8000 - 1 | ||
| + | *0x8001 - 2 | ||
| + | *0x8002 - 25 | ||
| + | *0x8003 - 75 | ||
| + | *0x8004 - 4 | ||
| + | *0x8005 - 285 | ||
| + | *0x8006 - 1,357 | ||
| + | *0x8007 - 15,507 | ||
| + | *0x8008 & 0x8009 introduced later | ||
| + | |||
| + | {{OldWikiEntryCleaned}} | ||
[[Category:Modding]] | [[Category:Modding]] | ||
[[Category:InternalFormats]] | [[Category:InternalFormats]] | ||
Revision as of 00:51, 12 July 2006
Contents |
42484156 (BHAV)
This resource contains the SimAntics subroutines.
Format
- 64 bytes
- File name (null terminated)
- 12 bytes
- (see Header Format below)
- for each entry
- variable
- (see Entry Format below)
Header Format
- WORD
- Signature (0x8000 through 0x8009)
- WORD
- Number of instructions in subroutine
- Byte
- tree type (deprecated)
- Byte
- Number of parameters passed to the subroutine
- Byte
- Number of local variables used in the subroutine
- Byte
- Header flag (depreciated)
- DWORD
- Tree version number (signed integer)
Entry Format
The signature defines the structure of the each instruction.
8000, 8001 & 8002
(instruction length: 12 bytes)
- WORD
- Function/OpCode
- Byte
- Goto on true
- Byte
- Goto on false
- 8 bytes
- Operands
8003 & 8004
(instruction length: 20 bytes)
- WORD
- Function/OpCode
- Byte
- Goto on true
- Byte
- Goto on false
- 16 bytes
- Operands
8005 & 8006
(instruction length: 21 bytes)
- WORD
- Function/OpCode
- Byte
- Goto on True
- Byte
- Goto on False
- Byte
- Node version (Flag - 0x00 or 0x01)
- 16 bytes
- Operands
8007 & 8008
(instruction length: 23 bytes)
- WORD
- Function/OpCode
- WORD
- Goto on true
- WORD
- Goto on false
- Byte
- Node version (Flag - 0x00 or 0x01)
- 16 bytes
- Operands
8009
(instruction length: 24 bytes)
- WORD
- Function/OpCode
- WORD
- Goto on true
- WORD
- Goto on false
- Byte
- Node version (Flag - 0x00 or 0x01)
- 16 bytes
- Operands
- Byte
- Cache flags
Notes
The 1-byte Goto statements in 8001-8006 appear to use the same codes as was used in The Sims 1: *0xFD as Error
- 0xFE as True
- 0xFF as False.
The 2-byte Goto statements in 8007-8009 use these Goto codes:
- 0xFFFC as Error
- 0xFFFD as True
- 0xFFFE as False.
The 8007-8009 formats can contain more than 256 seperate instructions, thus the use of 2-byte Goto statements.
Notes
Number of each signature type (0x8000 - 0x8007) contained in (original) objects.package:
- 0x8000 - 1
- 0x8001 - 2
- 0x8002 - 25
- 0x8003 - 75
- 0x8004 - 4
- 0x8005 - 285
- 0x8006 - 1,357
- 0x8007 - 15,507
- 0x8008 & 0x8009 introduced later
This article is imported from the old MTS2 wiki. It's original page, with comments, can be found at http://old_wiki.modthesims2.com/42484156