diff options
| author | Aetias <aetias@outlook.com> | 2024-03-17 09:07:19 +0100 |
|---|---|---|
| committer | Aetias <aetias@outlook.com> | 2024-03-17 09:07:19 +0100 |
| commit | c0e876d2f695c6b97e89d628d7370b3470bd8140 (patch) | |
| tree | 74ea00f66718a60959b8b7470ba03bb489e39f64 /docs | |
| parent | c661e62d40bf219f6e9a28a27d23656d4cb6e67a (diff) | |
Update docs
Diffstat (limited to 'docs')
| -rw-r--r-- | docs/actors.md | 108 | ||||
| -rw-r--r-- | docs/assets.md | 38 | ||||
| -rw-r--r-- | docs/link.md | 108 |
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 | ワープ浮き上 |
