Skip to content
This repository has been archived by the owner on Aug 1, 2024. It is now read-only.
Jinnosuke9 edited this page Nov 25, 2023 · 2 revisions

rom/actor/

Naming

rom/actor/0xXXXX-ActorName/

Content

  • *.zovl
  • config.cfg

config.cfg

Actor config is generated automatically so user does not need to touch it.

# Poe
vram_addr       = 0x80ADDD50
init_vars       = 0x80AE1A54
alloc_type      = 0

src/actor/

Naming

src/actor/0xXXXX-ActorName/

Content

Src directory is required to have atleast one *.c file in order to compile.

actor.toml

Files that are named "actor.toml" within the actor folder can be read by Sharp Ocarina to easily assign properties such as switch flag, type or any other properties that your actor may have. An actor.toml example is included within the actor 0x01E0-EnPlayCutscene:

Name = "Cutscene Trigger"
Category = "SWITCH"

[[Property]]
	Mask          = 0xFF00
	Name          = "Set Flag"
	Target        = "XRot"
	Dropdown = [ [ 0xFF, "NULL"] ]
[[Property]]
	Mask           = 0x00FF
	Name           = "Get Flag"
	Target         = "XRot"
	Dropdown = [ [ 0xFF, "NULL"] ]
[[Property]]
	Mask          = 0xC000
	Name          = "Set Flag Type"
	Target        = "Var"
	Dropdown = [
		[ 0, "Switch"      ],
		[ 1, "Chest"       ],
		[ 2, "Collectible" ],
		[ 3, "Global"      ],
	]
[[Property]]
	Mask          = 0x3000
	Name          = "Get Flag Type"
	Target        = "Var"
	Dropdown = [
		[ 0, "Switch"      ],
		[ 1, "Chest"       ],
		[ 2, "Collectible" ],
		[ 3, "Global"      ],
	]
[[Property]]
	Mask          = 0xFF00
	Name          = "Flip Get"
	Target        = "YRot"
	Dropdown = [ [ 0, "false"], [ 1, "true" ] ]
[[Property]]
	Mask          = 0x0C00
	Name          = "Force"
	Target        = "Var"
	Dropdown = [ [ 0, "false"], [ 1, "true" ] ]
[[Property]]
	Mask          = 0x03FF
	Name          = "Distance (x10)"
	Target        = "Var"
[[Property]]
	Mask          = 0xF0
	Name          = "Distance Type"
	Target        = "YRot"
	Dropdown = [ [ 0, "XZ" ], [ 1, "XZY" ] ]
[[Property]]
	Mask          = 0xF
	Name          = "Header Index"
	Target        = "YRot"

The Name used will be what is displayed within Sharp Ocarina.

Categories assist when searching for actors. i.e. "TRANSITIONS" "SWITCH" // This is not required

Properties must have at least the following:

[[Property]]
    Mask = mask used
    Name = "named field"
    Target = "property being modified"
    Dropdown = [ // Optional field
        [0, "named field"], // Number in hex that is assigned in SO and any name that corresponds with your actor.
    ]

All properties within SO are handled by 0xFFFF values. These are the properties that can by defined and are placed as the Target

Variable     //     Target = "Var"
X Rotation   //     Target = "XRot"
Y Rotation   //     Target = "YRot"
Z Rotation   //     Target = "ZRot"

**Note rotations may be changed to their Hex equivalent with options-> "Show rotation values as hexadecimal"


Masking is required to modify specific bits. Masking is basically a method that bits are isolated from the binary equivalent of the hexadecimal value:

Some examples can be seen below:

Mask = 0xFFFF //all bits used
//1111 1111 1111 1111
Mask = 0x00F0 //only bits 5-8 used.
//0000 0000 1111 0000
Mask = 0x3F00 //only bits 9-14 used.
//0011 1111 0000 0000
Mask = 0xC000 //only bits 15-16 used.
//1100 0000 0000 0000

Rendering of actors can be done with the following:

[[Render]]
   Regex = "...." // specific offsets can be specified if you have additional display lists in the object
   // Regex = "...[1E10]"
   Scale = 0.01 // Scale of actor displayed in SO
   YOffset = 0 //offset from the actor's box position for visual displays
   DisplayList = "gEnVisibleWall_DlSquarePlatform" // Define what display list to specifically show