Difference between revisions of "42484156"

From SimsWiki
Jump to: navigation, search
(Syncronized with BHAV article)
 
(9 intermediate revisions by 3 users not shown)
Line 1: Line 1:
{{OldWikiEntry}}
+
{{Resource tgi
====""SimAntics"" Behavioural Function====
+
|short = BHAV
 +
|long = Behavior function
 +
}}
  
__All BHAVs have a similar basic format:__
+
This resource contains the [[SimAntics]] subroutines.
64 - Filename (null terminated)
+
12 - Header
+
''var'' - Instruction 1
+
''var'' - Instruction 2
+
''var'' - Instruction n
+
...
+
  
__Each header also uses a similar format:__
+
==Format==
2 - signature (0x8000 through 0x8009)
+
;64 bytes
2 - count (number of instructions in file)
+
:File name (null terminated)
1 - tree type (deprecated)
+
;12 bytes
1 - args (number of Parameters passed to the subroutine)
+
:(see [[42484156#Header Format|Header Format]] below)
1 - locals (number of local variables used in the subroutine)
+
;''for each entry''
1 - header flag (deprecated)
+
;variable
4 - Tree Version # (signed integer)
+
:(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 (deprecated)
 +
;DWORD
 +
:Tree version number (signed integer)
  
The signature also defines the structure of the individual
+
===Entry Format===
instructions, as follows:
+
The signature defines the structure of the each instruction.
*  8000, 8001 & 8002 (instruction length: 12 bytes)
+
- 2 - Function/OpCode
+
- 1 - Goto on True
+
- 1 - Goto on False
+
- 8 - Operands
+
*  8003 & 8004 (instruction length: 20 bytes)
+
- 2 - Function/OpCode
+
- 1 - Goto on True
+
- 1 - Goto on False
+
- 16 - Operands
+
*  8005 & 8006 (instruction length: 21 bytes)
+
- 2 - Function/OpCode
+
- 1 - Goto on True
+
- 1 - Goto on False
+
- 1 - Node Version (Flag - 0x00 or 0x01)
+
- 16 - Operands
+
*  8007 & 8008 (instruction length: 23 bytes)
+
- 2 - Function/OpCode
+
- 2 - Goto on True
+
- 2 - Goto on False
+
- 1 - Node Version (Flag - 0x00 or 0x01)
+
- 16 - Operands
+
*  8009 (instruction length: 24 bytes)
+
- 2 - Function/OpCode
+
- 2 - Goto on True
+
- 2 - Goto on False
+
- 1 - Node Version (Flag - 0x00 or 0x01)
+
- 16 - Operands
+
- 1 - Cacheflags
+
  
Notes:
+
====8000, 8001 & 8002====
The 1-byte Goto statements in 8001-8006 appear to be the same as
+
(instruction length: 12 bytes)
  was used in TS1: 0xFD as Error, 0xFE as True, and 0xFF as False.
+
;WORD
 +
:Function/OpCode
 +
;Byte
 +
:Goto on true
 +
;Byte
 +
:Goto on false
 +
;8 bytes
 +
:Operands
  
The 2-byte Goto statements in 8007 appear to be using
+
====8003 & 8004====
  0xFFFC as Error, 0xFFFD as True, and 0xFFFE as False.
+
(instruction length: 20 bytes)
 +
;WORD
 +
:Function/OpCode
 +
;Byte
 +
:Goto on true
 +
;Byte
 +
:Goto on false
 +
;16 bytes
 +
:Operands
  
The 8007 format can contain more than 256 seperate instructions,
+
====8005 & 8006====
  thus the use of 2-byte Goto statements.
+
(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
  
Number of each signature type (0x8000 - 0x8007) contained in objects.package:
+
====8007 & 8008====
0x8000 - 1
+
(instruction length: 23 bytes)
0x8001 - 2
+
;WORD
0x8002 - 25
+
:Function/OpCode
0x8003 - 75
+
;WORD
0x8004 - 4
+
:Goto on true
0x8005 - 285
+
;WORD
0x8006 - 1,357
+
:Goto on false
0x8007 - 15,507
+
;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
  
[[Category:Modding]]
+
====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
 +
 
 +
{{OldWikiEntryCleaned|42484156|BHAV}}
 +
 
 +
[[Category:Sims 2 Modding]]
 
[[Category:InternalFormats]]
 
[[Category:InternalFormats]]
 +
[[Category:FormatsByTGI]]

Latest revision as of 12:24, 17 September 2012

42484156
Short name: BHAV
Long name: Behavior function

This resource contains the SimAntics subroutines.

Contents

[edit] Format

64 bytes
File name (null terminated)
12 bytes
(see Header Format below)
for each entry
variable
(see Entry Format below)

[edit] 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 (deprecated)
DWORD
Tree version number (signed integer)

[edit] Entry Format

The signature defines the structure of the each instruction.

[edit] 8000, 8001 & 8002

(instruction length: 12 bytes)

WORD
Function/OpCode
Byte
Goto on true
Byte
Goto on false
8 bytes
Operands

[edit] 8003 & 8004

(instruction length: 20 bytes)

WORD
Function/OpCode
Byte
Goto on true
Byte
Goto on false
16 bytes
Operands

[edit] 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

[edit] 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

[edit] 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

[edit] 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.

[edit] 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 one of several on this topic imported from the old MTS2 wiki. It's original pages, with comments, can be found at http://old_wiki.modthesims2.com/42484156 and http://old_wiki.modthesims2.com/BHAV

Personal tools
Namespaces

Variants
Actions
Navigation
game select
Toolbox