summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAetias <aetias@outlook.com>2024-03-17 09:07:19 +0100
committerAetias <aetias@outlook.com>2024-03-17 09:07:19 +0100
commitc0e876d2f695c6b97e89d628d7370b3470bd8140 (patch)
tree74ea00f66718a60959b8b7470ba03bb489e39f64
parentc661e62d40bf219f6e9a28a27d23656d4cb6e67a (diff)
Update docs
-rw-r--r--docs/actors.md108
-rw-r--r--docs/assets.md38
-rw-r--r--docs/link.md108
3 files changed, 158 insertions, 96 deletions
diff --git a/docs/actors.md b/docs/actors.md
index 0ccd1e25..a5c8d2ee 100644
--- a/docs/actors.md
+++ b/docs/actors.md
@@ -1,7 +1,6 @@
# Actors
This file documents what is known about actors in the game.
- [Actor IDs](#actor-ids)
-- [Link states](#link-states)
## Actor IDs
Many actors have a 4-character ID associated with it. This table shows all known IDs and their respective meanings or
@@ -11,98 +10,15 @@ translations. Feel free to contribute to this list!
> These IDs will appear in memory in reverse order. This is because allocation IDs are often interpreted as 32-bit integers,
> and integers are stored in little-endian which effectively "reverses" the character order.
- ID | Translation | Meaning
--------|-------------|---------
-`NAVI` | Navi | Spirit of Courage (Ciela)
-`FCNV` | Force Navi | Spirit of Power (Leaf)
-`WSNV` | Wisdom Navi | Spirit of Wisdom (Neri)
-
-## Link states
-Link's states are organized in a hierarchical structure. Similar to actor IDs, states are labelled by 4-character IDs. In
-addition, the states have names in Japanese.
-
-> [!NOTE]
-> The hierarchy and Japanese names were likely used for debugging and may have no meaning in the actual game engine.
-
-- `PLYR`: Player
- - `PLNK`: Link motion (リンクモーション)
- - `LGNR`: General (全般)
- - `LWIT`: Wait (ウェイト)
- - `LMOV`: Move (移動)
- - `LROL`: Roll (前転)
- - `LAJP`: Auto-jump (オートジャンプ)
- - `LATK`: Attack (剣振り)
- - `LVAT`: Vertical attack (縦切り)
- - `LLAT`: Horizontal attack (横切り)
- - `LSAT`: Stab attack (突き)
- - `LTAT`: Spin attack (回転切り)
- - `LARB`: Recoil (反動)
- - `LJAT`: Jump attack (ジャンプ切り)
- - `LDFC`: Defence (防御)
- - `LDMG`: Damage (ダメージ)
- - `LGRB`: Grab (持ち上げ)
- - `LPSH`: Push/pull (押し引き)
- - `LIGT`: Item get (アイテムゲット)
- - `LNAV`: Navi (精霊)
- - `LBOW`: Bow (弓矢)
- - `LBMR`: Boomerang (ブーメラン)
- - `LHMR`: Hammer (ハンマー)
- - `LROP`: Rope (ロープ)
- - `LSCP`: Scoop (スコップ)
- - `LOIT`: Other item (他のアイテム)
- - `LABN`: Abnormal state (状態異常)
- - `LLOT`: Other (その他)
- - `PTMP`: Temporary (一時調整)
- - `PEFT`: Effect (エフェクト)
-
-The states can also be found in `Player/motion.bhio` in the assets. The file appears to contain configurable properties for
-some of the states. The properties are labelled with up to 12 bytes (6 characters) of Japanese text, causing some labels to be cut off.
-
-State | Property | Type | Value | Japanese
--------|--------------------------|---------|-------|----------
-`LGNR` | Shadow darkness | `int` | 26 | 影の濃さ
-`LGNR` | Model type | `int` | 2 | モデルタイプ
-`LGNR` | Semi-transparent model | `int` | 11 | 半透明モデル
-`LGNR` | Semi-transparent R | `int` | 31 | 半透明R
-`LGNR` | Semi-transparent G | `int` | 31 | 半透明G
-`LGNR` | Semi-transparent B | `int` | 31 | 半透明B
-`LGNR` | Area change | `int` | 15 | エリア替えフ
-`LGNR` | Stairway fade | `int` | 10 | 階段フェード
-`LGNR` | Other ho... | `int` | 13 | その他フェー
-`LGNR` | Area movement o... | `20.12` | 1.9 | エリア移動オ
-`LDMG` | Damage tie... | `int` | 0 | ダメージタイ
-`LDMG` | Small damage speed | `20.12` | 2.0 | 小ダメ再生速
-`LDMG` | Small damage start frame | `20.12` | 0.0 | 小ダメ開始フ
-`LDMG` | Small damage end frame | `20.12` | 10.0 | 小ダメ終了フ
-`LDMG` | ??? | `int` | 6 | ビリビリ回数
-`LDMG` | ??? | `20.12` | 1.0 | ビリビリ再生
-`LDMG` | ??? | `20.12` | 1.23 | 吹き上げ高さ
-`LDMG` | ??? | `20.12` | 0.2 | 吹き上げふっ
-`LDMG` | ??? | `20.12` | 0.2 | フリック跳び
-`LDMG` | Ice damage? | `int` | 60 | 凍りダメージ
-`LGRB` | Grab speed | `20.12` | 1.6 | 持ち上げ再生
-`LGRB` | Grab start | `20.12` | 2.0 | 持ち上げ開始
-`LGRB` | Grab end | `20.12` | 10.0 | 持ち上げ終了
-`LGRB` | Throw speed | `20.12` | 1.0 | 投げ再生速度
-`LGRB` | Throw start frame | `20.12` | 0.0 | 投げ開始フレ
-`LGRB` | Throw end frame | `20.12` | 15.0 | 投げ終了フレ
-`LGRB` | Throw frame | `20.12` | 2.0 | 投げ離れフレ
-`LPSH` | Stop time | `int` | 3 | 停止時間
-`LPSH` | Direct push | `20.12` | 0.5 | ダイレクトプ
-`LIGT` | X-offset | `20.12` | 0.368 | オフセットX
-`LIGT` | Y-offset | `20.12` | 1.323 | オフセットY
-`LIGT` | Z-offset | `20.12` | 0.05 | オフセットZ
-`LIGT` | Rotation speed | `20.12` | 0.066 | 回転速度
-`LROP` | Rope width | `20.12` | 0.12 | ロープ幅
-`LROP` | Texture... | `20.12` | 30.0 | テクスチャリ
-`LROP` | High jump | `20.12` | 0.54 | ハイジャンプ
-`LROP` | Lean depth? | `20.12` | 0.6 | 寄りかかり深
-`LLOT` | Breath start frame | `20.12` | 0.0 | 息吹き開始フ
-`LLOT` | Breath end frame | `20.12` | 10.0 | 息吹き終了フ
-`LLOT` | Walk offset | `20.12` | 1.1 | 歩きオフセッ
-`LLOT` | Run offset | `20.12` | 1.7 | 走りオフセッ
-`LLOT` | Stairway offset | `20.12` | 1.0 | 階段オフセッ
-`LLOT` | Player ... | `20.12` | 0.01 | プレイヤー消
-`LLOT` | Warp ho... | `int` | 55 | ワープフェー
-`LLOT` | Player ... | `int` | 10 | プレイヤー半
-`LLOT` | Warp rise | `20.12` | 0.03 | ワープ浮き上
+ ID | Translation | Meaning
+-------|--------------|---------
+`NAVI` | Navi | Spirit of Courage (Ciela)
+`FCNV` | Force Navi | Spirit of Power (Leaf)
+`WSNV` | Wisdom Navi | Spirit of Wisdom (Neri)
+`RUPY` | Rupee
+`HART` | Heart
+`BOMB` | Bomb
+`ARRW` | Arrow
+`AMOS` | Armos
+`CHUC` | Chuchu
+`PLDM` | Player Dummy | Placeholder for switching between Gongoron/Link
diff --git a/docs/assets.md b/docs/assets.md
new file mode 100644
index 00000000..23433f3d
--- /dev/null
+++ b/docs/assets.md
@@ -0,0 +1,38 @@
+# Assets
+This file documents the purpose of various asset files in the game.
+- [`/Player`](#player)
+
+## `/Player`
+- [`item.bin` and `item.nsbtx`](#itembin-and-itemnsbtx)
+- [`obj.bin` and `obj.nsbtx`](#objbin-and-objnsbtx)
+
+### `item.bin` and `item.nsbtx`
+These files contains models, textures and animations for Link's equipment items.
+
+The items consist of arrow, headless arrow, bomb, bombchu, bombchu destination, bow, hammer, red potion, purple potion, yellow
+potion, grapple hook, shovel, wooden shield, Oshus's sword and the phantom sword.
+
+`item.bin` is compressed and contains three files:
+- `item.nsbca`: Joint animations
+ - Hammer idle/swing
+ - Shield block
+- `item.nsbma`: Unknown
+- `item.nsbmd`: Models
+
+Lastly, `item.nsbtx` contains textures.
+
+These files are loaded by `ItemModelLoader` and are stored in `ItemManager` in the field `mItemModels`.
+
+### `obj.bin` and `obj.nsbtx`
+These files contains models, textures and animations for dungeon items.
+
+The items consist of boss key, force gems, circle crystal, square crystal and triangle crystal.
+
+`obj.bin` is compressed and contains two files:
+- `obj.nsbmd`: Models
+- `obj.nsbtp`: Material animations
+ - Force gem colors
+
+Lastly, `obj.nsbtx` contains textures.
+
+These files are loaded by `ItemModelLoader` and are stored in `ItemManager` in the field `mDungeonItemModels`.
diff --git a/docs/link.md b/docs/link.md
new file mode 100644
index 00000000..40f9431d
--- /dev/null
+++ b/docs/link.md
@@ -0,0 +1,108 @@
+# Link
+This file documents technical information about Link.
+- [States](#states)
+- [State hierarchy](#state-hierarchy)
+
+## State handlers
+State handlers contain data and functions to process Link's state. Only one state handler is active at a time, but data can be
+shared outside of the active state handler.
+
+ Index | Name | Description
+-------|---------------|-------------
+0 | `LinkMove` | Handles Link's movement.
+1 | `LinkItem` | Handles item usage.
+2 | `LinkGrab` | Handles grabbing objects.
+3 | `LinkState3` | Unknown
+4 | `LinkState4` | Unknown
+5 | `LinkDamage` | Handles receiving damage.
+6 | `LinkItemGet` | Handles getting items.
+
+## State hierarchy
+Link's states are organized in a hierarchical structure. Similar to actor IDs, states are labelled by 4-character IDs. In
+addition, the states have names in Japanese.
+
+> [!NOTE]
+> The hierarchy and Japanese names were likely used for debugging and may have no meaning in the actual game engine.
+
+- `PLYR`: Player
+ - `PLNK`: Link motion (リンクモーション)
+ - `LGNR`: General (全般)
+ - `LWIT`: Wait (ウェイト)
+ - `LMOV`: Move (移動)
+ - `LROL`: Roll (前転)
+ - `LAJP`: Auto-jump (オートジャンプ)
+ - `LATK`: Attack (剣振り)
+ - `LVAT`: Vertical attack (縦切り)
+ - `LLAT`: Horizontal attack (横切り)
+ - `LSAT`: Stab attack (突き)
+ - `LTAT`: Spin attack (回転切り)
+ - `LARB`: Recoil (反動)
+ - `LJAT`: Jump attack (ジャンプ切り)
+ - `LDFC`: Defence (防御)
+ - `LDMG`: Damage (ダメージ)
+ - `LGRB`: Grab (持ち上げ)
+ - `LPSH`: Push/pull (押し引き)
+ - `LIGT`: Item get (アイテムゲット)
+ - `LNAV`: Navi (精霊)
+ - `LBOW`: Bow (弓矢)
+ - `LBMR`: Boomerang (ブーメラン)
+ - `LHMR`: Hammer (ハンマー)
+ - `LROP`: Rope (ロープ)
+ - `LSCP`: Scoop (スコップ)
+ - `LOIT`: Other item (他のアイテム)
+ - `LABN`: Abnormal state (状態異常)
+ - `LLOT`: Other (その他)
+ - `PTMP`: Temporary (一時調整)
+ - `PEFT`: Effect (エフェクト)
+
+The states can also be found in `Player/motion.bhio` in the assets. The file appears to contain configurable properties for
+some of the states. The properties are labelled with up to 12 bytes (6 characters) of Japanese text, causing some labels to be cut off.
+
+State | Property | Type | Value | Japanese
+-------|--------------------------|---------|-------|----------
+`LGNR` | Shadow darkness | `int` | 26 | 影の濃さ
+`LGNR` | Model type | `int` | 2 | モデルタイプ
+`LGNR` | Semi-transparent model | `int` | 11 | 半透明モデル
+`LGNR` | Semi-transparent R | `int` | 31 | 半透明R
+`LGNR` | Semi-transparent G | `int` | 31 | 半透明G
+`LGNR` | Semi-transparent B | `int` | 31 | 半透明B
+`LGNR` | Area change | `int` | 15 | エリア替えフ
+`LGNR` | Stairway fade | `int` | 10 | 階段フェード
+`LGNR` | Other ho... | `int` | 13 | その他フェー
+`LGNR` | Area movement offset | `20.12` | 1.9 | エリア移動オ
+`LDMG` | Damage tie... | `int` | 0 | ダメージタイ
+`LDMG` | Small damage speed | `20.12` | 2.0 | 小ダメ再生速
+`LDMG` | Small damage start frame | `20.12` | 0.0 | 小ダメ開始フ
+`LDMG` | Small damage end frame | `20.12` | 10.0 | 小ダメ終了フ
+`LDMG` | ??? | `int` | 6 | ビリビリ回数
+`LDMG` | ??? | `20.12` | 1.0 | ビリビリ再生
+`LDMG` | ??? | `20.12` | 1.23 | 吹き上げ高さ
+`LDMG` | ??? | `20.12` | 0.2 | 吹き上げふっ
+`LDMG` | ??? | `20.12` | 0.2 | フリック跳び
+`LDMG` | Ice damage? | `int` | 60 | 凍りダメージ
+`LGRB` | Grab speed | `20.12` | 1.6 | 持ち上げ再生
+`LGRB` | Grab start | `20.12` | 2.0 | 持ち上げ開始
+`LGRB` | Grab end | `20.12` | 10.0 | 持ち上げ終了
+`LGRB` | Throw speed | `20.12` | 1.0 | 投げ再生速度
+`LGRB` | Throw start frame | `20.12` | 0.0 | 投げ開始フレ
+`LGRB` | Throw end frame | `20.12` | 15.0 | 投げ終了フレ
+`LGRB` | Throw frame | `20.12` | 2.0 | 投げ離れフレ
+`LPSH` | Stop time | `int` | 3 | 停止時間
+`LPSH` | Direct push | `20.12` | 0.5 | ダイレクトプ
+`LIGT` | X-offset | `20.12` | 0.368 | オフセットX
+`LIGT` | Y-offset | `20.12` | 1.323 | オフセットY
+`LIGT` | Z-offset | `20.12` | 0.05 | オフセットZ
+`LIGT` | Rotation speed | `20.12` | 0.066 | 回転速度
+`LROP` | Rope width | `20.12` | 0.12 | ロープ幅
+`LROP` | Texture... | `20.12` | 30.0 | テクスチャリ
+`LROP` | High jump | `20.12` | 0.54 | ハイジャンプ
+`LROP` | Lean depth? | `20.12` | 0.6 | 寄りかかり深
+`LLOT` | Breath start frame | `20.12` | 0.0 | 息吹き開始フ
+`LLOT` | Breath end frame | `20.12` | 10.0 | 息吹き終了フ
+`LLOT` | Walk offset | `20.12` | 1.1 | 歩きオフセッ
+`LLOT` | Run offset | `20.12` | 1.7 | 走りオフセッ
+`LLOT` | Stairway offset | `20.12` | 1.0 | 階段オフセッ
+`LLOT` | Player ... | `20.12` | 0.01 | プレイヤー消
+`LLOT` | Warp ho... | `int` | 55 | ワープフェー
+`LLOT` | Player ... | `int` | 10 | プレイヤー半
+`LLOT` | Warp rise | `20.12` | 0.03 | ワープ浮き上