From 5f90c7fbf8625a3a2070bc178fa0410321193a0f Mon Sep 17 00:00:00 2001 From: <> Date: Mon, 19 Feb 2024 00:45:23 +0000 Subject: [PATCH] Deployed c45c7666 with MkDocs version: 1.5.3 --- 404.html | 46 + discoveries/blueblur/hud/blb_gauge/index.html | 46 + discoveries/index.html | 46 + .../sonic2013/cutscenes/levels/index.html | 46 + .../sonic2013/levels/colors/index.html | 46 + .../sonic2013/levels/deleted/index.html | 46 + .../levels/original-order/index.html | 46 + discoveries/sonic2013/levels/test/index.html | 46 + discoveries/swa/ps3/install/index.html | 46 + docs/general/hson/index.html | 46 + .../blueblur/cameras/index.html | 6320 +++++++++++++++++ .../blueblur/events/index.html | 6246 ++++++++++++++++ .../blueblur/levels/ids/index.html | 48 +- docs/hedgehog-engine/gamelist/index.html | 46 + .../rangers/dlc/ids/index.html | 46 + .../enemies/guardians/names/index.html | 46 + .../rangers/events/ids/index.html | 46 + .../rangers/files/rfl/mapping/index.html | 46 + .../rangers/levels/ids/index.html | 46 + .../rangers/scripts/funcs/index.html | 46 + .../sonic2010/files/lightfield/index.html | 46 + .../sonic2010/files/setobject/index.html | 46 + .../swa/cutscenes/ids/index.html | 46 + .../hedgehog-engine/swa/levels/ids/index.html | 48 +- docs/hedgehog-engine/swa/towns/ids/index.html | 46 + .../wars/levels/ids/index.html | 46 + docs/index.html | 46 + docs/nn/common/chunk-format/index.html | 46 + .../nn/common/chunk-format/texlist/index.html | 46 + .../blueblur/files/xncp/anims/index.html | 46 + .../blueblur/files/xncp/basics/index.html | 46 + .../blueblur/levels/glvl/index.html | 46 + .../levels/importing-collision/index.html | 46 + .../levels/importing-terrain/index.html | 46 + .../levels/troubleshooting/index.html | 46 + .../blueblur/locations/sound/index.html | 46 + .../animation/import-export/index.html | 46 + .../rangers/audio/replacing/index.html | 46 + .../rangers/cyloop/color/index.html | 46 + .../materials/advanced-mats/index.html | 46 + .../rangers/models/import/index.html | 46 + .../swa/levels/glvl/index.html | 46 + guides/index.html | 46 + guides/nn/marathon/levels/glvl/index.html | 46 + index.html | 46 + search/search_index.json | 2 +- sitemap.xml | 170 +- sitemap.xml.gz | Bin 848 -> 858 bytes tools/general/audio/index.html | 46 + tools/general/files/index.html | 46 + .../blueblur/files/ar/index.html | 46 + .../blueblur/files/fco/index.html | 46 + .../blueblur/files/gte/index.html | 46 + .../blueblur/files/sav/index.html | 46 + .../blueblur/files/xncp/index.html | 46 + .../blueblur/levels/index.html | 46 + .../common/animation/index.html | 46 + tools/hedgehog-engine/common/files/index.html | 46 + .../hedgehog-engine/common/levels/index.html | 46 + .../common/lighting/index.html | 46 + .../hedgehog-engine/common/models/index.html | 46 + tools/hedgehog-engine/common/text/index.html | 46 + .../hedgehog-engine/rainbow/files/index.html | 46 + .../rangers/files/anmpxd/index.html | 46 + .../rangers/files/btmesh/index.html | 46 + .../rangers/files/cemt/index.html | 46 + .../rangers/files/rfl/index.html | 46 + .../hedgehog-engine/rangers/models/index.html | 46 + .../sonic2010/files/arc/index.html | 46 + .../sonic2010/files/general/index.html | 46 + .../sonic2010/files/xncp/index.html | 46 + .../sonic2010/files/xtb/index.html | 46 + .../sonic2010/levels/index.html | 46 + .../sonic2013/levels/index.html | 46 + tools/hedgehog-engine/swa/files/index.html | 46 + tools/index.html | 46 + tools/nn/marathon/files/index.html | 46 + tools/nn/marathon/levels/index.html | 46 + tools/others/adventure/files/index.html | 46 + tools/renderware/common/files/one/index.html | 46 + tools/renderware/common/files/pac/index.html | 46 + tools/renderware/common/files/txd/index.html | 46 + tools/renderware/common/levels/index.html | 46 + .../retro-engine/common/animation/index.html | 46 + tools/retro-engine/common/files/index.html | 46 + tools/retro-engine/common/models/index.html | 46 + 86 files changed, 16385 insertions(+), 83 deletions(-) create mode 100644 docs/hedgehog-engine/blueblur/cameras/index.html create mode 100644 docs/hedgehog-engine/blueblur/events/index.html diff --git a/404.html b/404.html index eebfa86e..4f01794e 100644 --- a/404.html +++ b/404.html @@ -3968,6 +3968,10 @@ + + + + @@ -4074,6 +4078,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/discoveries/blueblur/hud/blb_gauge/index.html b/discoveries/blueblur/hud/blb_gauge/index.html index 9d660691..0fc2bebf 100644 --- a/discoveries/blueblur/hud/blb_gauge/index.html +++ b/discoveries/blueblur/hud/blb_gauge/index.html @@ -3981,6 +3981,10 @@ + + + + @@ -4087,6 +4091,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/discoveries/index.html b/discoveries/index.html index b3a4e6ec..2fd97ef2 100644 --- a/discoveries/index.html +++ b/discoveries/index.html @@ -3981,6 +3981,10 @@ + + + + @@ -4087,6 +4091,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/discoveries/sonic2013/cutscenes/levels/index.html b/discoveries/sonic2013/cutscenes/levels/index.html index 2b6ffb64..4192b451 100644 --- a/discoveries/sonic2013/cutscenes/levels/index.html +++ b/discoveries/sonic2013/cutscenes/levels/index.html @@ -3981,6 +3981,10 @@ + + + + @@ -4087,6 +4091,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/discoveries/sonic2013/levels/colors/index.html b/discoveries/sonic2013/levels/colors/index.html index b90c6b97..ee381fb5 100644 --- a/discoveries/sonic2013/levels/colors/index.html +++ b/discoveries/sonic2013/levels/colors/index.html @@ -3981,6 +3981,10 @@ + + + + @@ -4087,6 +4091,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/discoveries/sonic2013/levels/deleted/index.html b/discoveries/sonic2013/levels/deleted/index.html index a2e1d75d..1218a42c 100644 --- a/discoveries/sonic2013/levels/deleted/index.html +++ b/discoveries/sonic2013/levels/deleted/index.html @@ -3981,6 +3981,10 @@ + + + + @@ -4087,6 +4091,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/discoveries/sonic2013/levels/original-order/index.html b/discoveries/sonic2013/levels/original-order/index.html index 9cc9144a..aaa4fb2b 100644 --- a/discoveries/sonic2013/levels/original-order/index.html +++ b/discoveries/sonic2013/levels/original-order/index.html @@ -3979,6 +3979,10 @@ + + + + @@ -4085,6 +4089,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/discoveries/sonic2013/levels/test/index.html b/discoveries/sonic2013/levels/test/index.html index f0efb57b..552b605d 100644 --- a/discoveries/sonic2013/levels/test/index.html +++ b/discoveries/sonic2013/levels/test/index.html @@ -3981,6 +3981,10 @@ + + + + @@ -4087,6 +4091,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/discoveries/swa/ps3/install/index.html b/discoveries/swa/ps3/install/index.html index 3ea18a5e..2d641186 100644 --- a/discoveries/swa/ps3/install/index.html +++ b/discoveries/swa/ps3/install/index.html @@ -3981,6 +3981,10 @@ + + + + @@ -4087,6 +4091,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/general/hson/index.html b/docs/general/hson/index.html index 35889534..955df9b4 100644 --- a/docs/general/hson/index.html +++ b/docs/general/hson/index.html @@ -4286,6 +4286,10 @@ + + + + @@ -4392,6 +4396,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/blueblur/cameras/index.html b/docs/hedgehog-engine/blueblur/cameras/index.html new file mode 100644 index 00000000..2a27467c --- /dev/null +++ b/docs/hedgehog-engine/blueblur/cameras/index.html @@ -0,0 +1,6320 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Camera Types - HedgeDocs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + +
    +
    + +
    + + + + + + + +

    Camera Type List

    +

    ObjCamera

    + + + + + + + + + + + + + + + + + + + + + + + + + +
    Camera TypeDescription
    ObjCameraFixStays in its place while pointing at the coordinates defined in TargetPosition
    ObjCameraNormalThe regular camera
    ObjCameraPanHas a different behaviour depending on CameraPositionMode: 0 - Stays in its place while pointing at Sonic; 1 - ???
    ObjCameraPointFollows Sonic, while pointing at the camera object's location
    +

    Camera Collisions

    + + + + + + + + + + + + + +
    Collision TypeDescription
    ChangeVolumeCameraChanges the camera used to the one defined in Target
    + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/hedgehog-engine/blueblur/events/index.html b/docs/hedgehog-engine/blueblur/events/index.html new file mode 100644 index 00000000..703e9d64 --- /dev/null +++ b/docs/hedgehog-engine/blueblur/events/index.html @@ -0,0 +1,6246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + Event List - HedgeDocs + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + + Skip to content + + +
    +
    + +
    + + + + + + +
    + + + + + + + +
    + +
    + + + + +
    +
    + + + +
    +
    +
    + + + + + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    +
    + + + +
    +
    + +
    +
    + +
    + + + + + + + +

    Event List

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Event IDDescription
    1Used for EventSetter
    2Used for EventSetter
    3Used for EventSetter
    4Used for EventSetter
    5Used for EventSetter
    6Enable
    7Disable
    12Destroy / Break (ObjectPhysics)
    + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + +
    + +
    + + + +
    +
    +
    +
    + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/hedgehog-engine/blueblur/levels/ids/index.html b/docs/hedgehog-engine/blueblur/levels/ids/index.html index 09e2c446..ca1810d8 100644 --- a/docs/hedgehog-engine/blueblur/levels/ids/index.html +++ b/docs/hedgehog-engine/blueblur/levels/ids/index.html @@ -16,7 +16,7 @@ - + @@ -3995,6 +3995,10 @@ + + + + @@ -4186,6 +4190,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/gamelist/index.html b/docs/hedgehog-engine/gamelist/index.html index 638d16ef..623dfdb4 100644 --- a/docs/hedgehog-engine/gamelist/index.html +++ b/docs/hedgehog-engine/gamelist/index.html @@ -4052,6 +4052,10 @@ + + + + @@ -4158,6 +4162,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/rangers/dlc/ids/index.html b/docs/hedgehog-engine/rangers/dlc/ids/index.html index 642b140f..8112df8b 100644 --- a/docs/hedgehog-engine/rangers/dlc/ids/index.html +++ b/docs/hedgehog-engine/rangers/dlc/ids/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/rangers/enemies/guardians/names/index.html b/docs/hedgehog-engine/rangers/enemies/guardians/names/index.html index 67d74d17..a8628c35 100644 --- a/docs/hedgehog-engine/rangers/enemies/guardians/names/index.html +++ b/docs/hedgehog-engine/rangers/enemies/guardians/names/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/rangers/events/ids/index.html b/docs/hedgehog-engine/rangers/events/ids/index.html index c9fd1a9b..99525ac4 100644 --- a/docs/hedgehog-engine/rangers/events/ids/index.html +++ b/docs/hedgehog-engine/rangers/events/ids/index.html @@ -3989,6 +3989,10 @@ + + + + @@ -4095,6 +4099,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/rangers/files/rfl/mapping/index.html b/docs/hedgehog-engine/rangers/files/rfl/mapping/index.html index e8e86d27..68a35bbc 100644 --- a/docs/hedgehog-engine/rangers/files/rfl/mapping/index.html +++ b/docs/hedgehog-engine/rangers/files/rfl/mapping/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/rangers/levels/ids/index.html b/docs/hedgehog-engine/rangers/levels/ids/index.html index c40b7856..5ff5fd9f 100644 --- a/docs/hedgehog-engine/rangers/levels/ids/index.html +++ b/docs/hedgehog-engine/rangers/levels/ids/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/rangers/scripts/funcs/index.html b/docs/hedgehog-engine/rangers/scripts/funcs/index.html index c9dfe271..de8b4555 100644 --- a/docs/hedgehog-engine/rangers/scripts/funcs/index.html +++ b/docs/hedgehog-engine/rangers/scripts/funcs/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/sonic2010/files/lightfield/index.html b/docs/hedgehog-engine/sonic2010/files/lightfield/index.html index 9a087c1d..35c70a62 100644 --- a/docs/hedgehog-engine/sonic2010/files/lightfield/index.html +++ b/docs/hedgehog-engine/sonic2010/files/lightfield/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/sonic2010/files/setobject/index.html b/docs/hedgehog-engine/sonic2010/files/setobject/index.html index b5705012..95027103 100644 --- a/docs/hedgehog-engine/sonic2010/files/setobject/index.html +++ b/docs/hedgehog-engine/sonic2010/files/setobject/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/swa/cutscenes/ids/index.html b/docs/hedgehog-engine/swa/cutscenes/ids/index.html index b420abda..305cb734 100644 --- a/docs/hedgehog-engine/swa/cutscenes/ids/index.html +++ b/docs/hedgehog-engine/swa/cutscenes/ids/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/swa/levels/ids/index.html b/docs/hedgehog-engine/swa/levels/ids/index.html index 6a25096e..166018d0 100644 --- a/docs/hedgehog-engine/swa/levels/ids/index.html +++ b/docs/hedgehog-engine/swa/levels/ids/index.html @@ -13,7 +13,7 @@ - + @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/swa/towns/ids/index.html b/docs/hedgehog-engine/swa/towns/ids/index.html index 52f3c532..0a88ed4d 100644 --- a/docs/hedgehog-engine/swa/towns/ids/index.html +++ b/docs/hedgehog-engine/swa/towns/ids/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/hedgehog-engine/wars/levels/ids/index.html b/docs/hedgehog-engine/wars/levels/ids/index.html index 7adb624e..41e1f312 100644 --- a/docs/hedgehog-engine/wars/levels/ids/index.html +++ b/docs/hedgehog-engine/wars/levels/ids/index.html @@ -3994,6 +3994,10 @@ + + + + @@ -4100,6 +4104,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/index.html b/docs/index.html index 65a2fba3..0847a730 100644 --- a/docs/index.html +++ b/docs/index.html @@ -3992,6 +3992,10 @@ + + + + @@ -4098,6 +4102,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/nn/common/chunk-format/index.html b/docs/nn/common/chunk-format/index.html index 2efc52d5..534f2413 100644 --- a/docs/nn/common/chunk-format/index.html +++ b/docs/nn/common/chunk-format/index.html @@ -3992,6 +3992,10 @@ + + + + @@ -4098,6 +4102,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/docs/nn/common/chunk-format/texlist/index.html b/docs/nn/common/chunk-format/texlist/index.html index a9e1daa4..a3c1ddb2 100644 --- a/docs/nn/common/chunk-format/texlist/index.html +++ b/docs/nn/common/chunk-format/texlist/index.html @@ -3992,6 +3992,10 @@ + + + + @@ -4098,6 +4102,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/blueblur/files/xncp/anims/index.html b/guides/hedgehog-engine/blueblur/files/xncp/anims/index.html index 657038d4..3ecd9316 100644 --- a/guides/hedgehog-engine/blueblur/files/xncp/anims/index.html +++ b/guides/hedgehog-engine/blueblur/files/xncp/anims/index.html @@ -4061,6 +4061,10 @@ + + + + @@ -4167,6 +4171,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/blueblur/files/xncp/basics/index.html b/guides/hedgehog-engine/blueblur/files/xncp/basics/index.html index 253373b9..15fcb5e7 100644 --- a/guides/hedgehog-engine/blueblur/files/xncp/basics/index.html +++ b/guides/hedgehog-engine/blueblur/files/xncp/basics/index.html @@ -4088,6 +4088,10 @@ + + + + @@ -4194,6 +4198,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/blueblur/levels/glvl/index.html b/guides/hedgehog-engine/blueblur/levels/glvl/index.html index 3f6a90ea..fecc36be 100644 --- a/guides/hedgehog-engine/blueblur/levels/glvl/index.html +++ b/guides/hedgehog-engine/blueblur/levels/glvl/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/blueblur/levels/importing-collision/index.html b/guides/hedgehog-engine/blueblur/levels/importing-collision/index.html index d64ad239..7e6f20b7 100644 --- a/guides/hedgehog-engine/blueblur/levels/importing-collision/index.html +++ b/guides/hedgehog-engine/blueblur/levels/importing-collision/index.html @@ -4068,6 +4068,10 @@ + + + + @@ -4174,6 +4178,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/blueblur/levels/importing-terrain/index.html b/guides/hedgehog-engine/blueblur/levels/importing-terrain/index.html index 0ad77b03..0733ff67 100644 --- a/guides/hedgehog-engine/blueblur/levels/importing-terrain/index.html +++ b/guides/hedgehog-engine/blueblur/levels/importing-terrain/index.html @@ -4134,6 +4134,10 @@ + + + + @@ -4240,6 +4244,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/blueblur/levels/troubleshooting/index.html b/guides/hedgehog-engine/blueblur/levels/troubleshooting/index.html index b27e470c..a23e1f68 100644 --- a/guides/hedgehog-engine/blueblur/levels/troubleshooting/index.html +++ b/guides/hedgehog-engine/blueblur/levels/troubleshooting/index.html @@ -4215,6 +4215,10 @@ + + + + @@ -4321,6 +4325,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/blueblur/locations/sound/index.html b/guides/hedgehog-engine/blueblur/locations/sound/index.html index 2c4e5730..d14d3dcb 100644 --- a/guides/hedgehog-engine/blueblur/locations/sound/index.html +++ b/guides/hedgehog-engine/blueblur/locations/sound/index.html @@ -4122,6 +4122,10 @@ + + + + @@ -4228,6 +4232,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/rangers/animation/import-export/index.html b/guides/hedgehog-engine/rangers/animation/import-export/index.html index d2da07fa..b64d21c8 100644 --- a/guides/hedgehog-engine/rangers/animation/import-export/index.html +++ b/guides/hedgehog-engine/rangers/animation/import-export/index.html @@ -4095,6 +4095,10 @@ + + + + @@ -4201,6 +4205,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/rangers/audio/replacing/index.html b/guides/hedgehog-engine/rangers/audio/replacing/index.html index 1f439077..179ca5e2 100644 --- a/guides/hedgehog-engine/rangers/audio/replacing/index.html +++ b/guides/hedgehog-engine/rangers/audio/replacing/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/rangers/cyloop/color/index.html b/guides/hedgehog-engine/rangers/cyloop/color/index.html index 688eb374..deffcf0f 100644 --- a/guides/hedgehog-engine/rangers/cyloop/color/index.html +++ b/guides/hedgehog-engine/rangers/cyloop/color/index.html @@ -4077,6 +4077,10 @@ + + + + @@ -4183,6 +4187,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/rangers/materials/advanced-mats/index.html b/guides/hedgehog-engine/rangers/materials/advanced-mats/index.html index 91e617c4..69cc33cb 100644 --- a/guides/hedgehog-engine/rangers/materials/advanced-mats/index.html +++ b/guides/hedgehog-engine/rangers/materials/advanced-mats/index.html @@ -4092,6 +4092,10 @@ + + + + @@ -4198,6 +4202,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/rangers/models/import/index.html b/guides/hedgehog-engine/rangers/models/import/index.html index 25b2f30c..f366eb1a 100644 --- a/guides/hedgehog-engine/rangers/models/import/index.html +++ b/guides/hedgehog-engine/rangers/models/import/index.html @@ -4011,6 +4011,10 @@ + + + + @@ -4117,6 +4121,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/hedgehog-engine/swa/levels/glvl/index.html b/guides/hedgehog-engine/swa/levels/glvl/index.html index bf27339b..563b0ba1 100644 --- a/guides/hedgehog-engine/swa/levels/glvl/index.html +++ b/guides/hedgehog-engine/swa/levels/glvl/index.html @@ -4068,6 +4068,10 @@ + + + + @@ -4174,6 +4178,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/index.html b/guides/index.html index ec10b6ad..63467ef3 100644 --- a/guides/index.html +++ b/guides/index.html @@ -3995,6 +3995,10 @@ + + + + @@ -4101,6 +4105,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/guides/nn/marathon/levels/glvl/index.html b/guides/nn/marathon/levels/glvl/index.html index 1f3c7be5..16abb022 100644 --- a/guides/nn/marathon/levels/glvl/index.html +++ b/guides/nn/marathon/levels/glvl/index.html @@ -4086,6 +4086,10 @@ + + + + @@ -4192,6 +4196,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/index.html b/index.html index 2446dad4..a457a9c3 100644 --- a/index.html +++ b/index.html @@ -3984,6 +3984,10 @@ + + + + @@ -4090,6 +4094,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/search/search_index.json b/search/search_index.json index 47fd7bb9..7e95a814 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"discoveries/blueblur/hud/blb_gauge/","title":"Unused Time Eater Gauge","text":"

    There's an unused gauge that was supposed to be used in the Time Eater boss battle. The gauge is present in bb.cpk/SonicActionCommonHud/ui_gameplay.xncp, in the blb_gauge XNCP scene. Unfortunately, this gauge isn't functional in-game, and its usage also remains unknown.

    Visually, this element appears to be finished, and it even features animations. Below you can see the available animations for this element. Some were recorded in-game, but others were recorded using a WIP build of Shuriken, which may not be 100% accurate.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#intro_anim","title":"Intro_Anim","text":"

    Following the naming scheme of almost every XNCP animation made for Generations, this was supposed to be played whenever the HUD element showed up on screen. Simple slide-in animation.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#change_c2g-change_g2c","title":"change_c2g / change_g2c","text":"

    These animations are played whenever you switch between Classic Sonic to Modern Sonic and vice versa. The video below shows a recording of the animation in-game.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#change_c2w-change_g2w","title":"change_c2w / change_g2w","text":"

    Seems like these were supposed to be animations for changing to an intermediate state between Classic and Modern Sonic, like in the final part of the boss battle. The \"w\" means \"double\" in japanese.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#cl_gauge_size_1","title":"cl_gauge_size_1","text":"

    Animation for Classic Sonic's gauge.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#gn_gauge_size_1","title":"gn_gauge_size_1","text":"

    Animation for Modern Sonic's gauge.

    "},{"location":"discoveries/sonic2013/cutscenes/levels/","title":"Real-Time Cutscene Levels","text":"

    Empty folders can be found for the real-time cutscene levels in the raw folder found within the Wii U release of the game. These folders are listed below.

    raw\n\u251c\u2500\u2500 event\n|   |\u2500\u2500 scene\n\u2502   |   \u251c\u2500\u2500 ev000\n\u2502   \u2502   \u251c\u2500\u2500 ev120\n\u2502   \u2502   \u251c\u2500\u2500 ev125\n\u2502   \u2502   \u251c\u2500\u2500 ev130\n\u2502   \u2502   \u251c\u2500\u2500 ev140\n\u2502   \u2502   \u251c\u2500\u2500 ev150\n\u2502   \u2502   \u251c\u2500\u2500 ev210\n\u2502   \u2502   \u251c\u2500\u2500 ev220\n\u2502   \u2502   \u251c\u2500\u2500 ev230\n\u2502   \u2502   \u251c\u2500\u2500 ev240\n\u2502   \u2502   \u251c\u2500\u2500 ev250\n\u2502   \u2502   \u251c\u2500\u2500 ev310\n\u2502   \u2502   \u251c\u2500\u2500 ev320\n\u2502   \u2502   \u251c\u2500\u2500 ev330\n\u2502   \u2502   \u251c\u2500\u2500 ev345\n\u2502   \u2502   \u251c\u2500\u2500 ev350\n\u2502   \u2502   \u251c\u2500\u2500 ev360\n\u2502   \u2502   \u251c\u2500\u2500 ev410\n\u2502   \u2502   \u251c\u2500\u2500 ev420\n\u2502   \u2502   \u251c\u2500\u2500 ev430\n\u2502   \u2502   \u251c\u2500\u2500 ev435\n\u2502   \u2502   \u251c\u2500\u2500 ev440\n\u2502   \u2502   \u251c\u2500\u2500 ev450\n\u2502   \u2502   \u251c\u2500\u2500 ev510\n\u2502   \u2502   \u251c\u2500\u2500 ev520\n\u2502   \u2502   \u251c\u2500\u2500 ev530\n\u2502   \u2502   \u251c\u2500\u2500 ev540\n\u2502   \u2502   \u251c\u2500\u2500 ev550\n\u2502   \u2502   \u251c\u2500\u2500 ev610\n\u2502   \u2502   \u251c\u2500\u2500 ev620\n\u2502   \u2502   \u251c\u2500\u2500 ev630\n\u2502   \u2502   \u251c\u2500\u2500 ev642\n\u2502   \u2502   \u251c\u2500\u2500 ev645\n\u2502   \u2502   \u251c\u2500\u2500 ev650\n\u2502   \u2502   \u251c\u2500\u2500 ev720\n\u2502   \u2502   \u251c\u2500\u2500 ev730\n\u2502   \u2502   \u251c\u2500\u2500 ev740\n\u2502   \u2502   \u251c\u2500\u2500 ev750\n\u2502   \u2502   \u251c\u2500\u2500 ev755\n\u2502   \u2502   \u251c\u2500\u2500 ev757\n\u2502   \u2502   \u251c\u2500\u2500 ev760\n\u2502   \u2502   \u251c\u2500\u2500 ev764\n\u2502   \u2502   \u251c\u2500\u2500 ev770\n|   |\u2500\u2500 stage\n\u2502   |   \u251c\u2500\u2500 ev000\n\u2502   \u2502   \u251c\u2500\u2500 ev120\n\u2502   \u2502   \u251c\u2500\u2500 ev130\n\u2502   \u2502   \u251c\u2500\u2500 ev140\n\u2502   \u2502   \u251c\u2500\u2500 ev150\n\u2502   \u2502   \u251c\u2500\u2500 ev210\n\u2502   \u2502   \u251c\u2500\u2500 ev220\n\u2502   \u2502   \u251c\u2500\u2500 ev250\n\u2502   \u2502   \u251c\u2500\u2500 ev342\n\u2502   \u2502   \u251c\u2500\u2500 ev350\n\u2502   \u2502   \u251c\u2500\u2500 ev430\n\u2502   \u2502   \u251c\u2500\u2500 ev440\n\u2502   \u2502   \u251c\u2500\u2500 ev520\n\u2502   \u2502   \u251c\u2500\u2500 ev530\n\u2502   \u2502   \u251c\u2500\u2500 ev620\n\u2502   \u2502   \u251c\u2500\u2500 ev642\n\u2502   \u2502   \u251c\u2500\u2500 ev645\n\u2502   \u2502   \u251c\u2500\u2500 ev710\n\u2502   \u2502   \u251c\u2500\u2500 ev720\n\u2502   \u2502   \u251c\u2500\u2500 ev750\n

    "},{"location":"discoveries/sonic2013/levels/colors/","title":"Colors Leftovers","text":""},{"location":"discoveries/sonic2013/levels/colors/#tropical-resort-act-1","title":"Tropical Resort Act 1","text":"

    There\u2019s an unused Tropical Resort Act 1 entry in Sonic Lost World\u2019s actstgmission.lua file.

    actstgmission.lua
    mission_all = {\n    -- RSO(\u30ea\u30be\u30fc\u30c8\u9762)\n    {\n        missions = {\n            -- \uff21\uff23\uff34\uff11\uff08\u65e7\uff21\uff23\uff34\uff11\u306e\u524d\u534a\u90e8\u5206\uff09\n            {\n                name        = \"stg110\",\n                data        = \"stg110\",\n                player_pos  = { -11942.84, 1575.931, 16972.49 },\n                player_dir  = { 0.0, -159.2, 0.0 },\n                start_event = 1,\n                bgm         = \"bgm_stg110_rso\",\n                phantoms    = { \"laser\", \"drill\" },\n                result_bg   = \"result_01_rso_act1\",\n\n                --\u3010\u30b9\u30b3\u30a2\u8a2d\u5b9a\u9818\u57df\u3011\n                score = {\n                    rank = {\n                        60,   -- S rank (\u30b4\u30fc\u30eb\u79d2\u6570)\n                        120,  -- A rank\n                        180,  -- B rank\n                        240,  -- C rank\n                        320,  -- D rank\n                    },\n                    time_basis = 320000,\n                    time_down = 1100,\n\n                    no_miss = {\n                        280000,\n                        210000,\n                        182000,\n                        56000,\n                        28000,\n                    },\n\n                },\n            },\n        },\n    },\n}\n

    Only thing changed in this entry from the Sonic Colors version is that player_dir takes in a 3D value, just like every other Sonic Lost World entry.

    The entire score block, start_event and result_bg are leftovers from Colors as well, as those values are not read by Sonic Lost World's lua parser function.

    "},{"location":"discoveries/sonic2013/levels/colors/#actstgmissionlua","title":"actstgmission.lua","text":"

    This file is responsible for serving information to the game regarding stages, such as where the player should start at or what folder to read the assets for the stage from.

    "},{"location":"discoveries/sonic2013/levels/colors/#test-levels","title":"Test Levels","text":"

    Due to the release of Sonic Colors Ultimate we can identify a few test levels from Sonic Colors that were reused in Sonic Lost World.

    actstgmission.lua
    test_mission_all = {\n   -- \u30d7\u30ed\u30b0\u30e9\u30de\u30c6\u30b9\u30c8.\n   {\n      missions = {\n         -- mission test(stg901)\n         {\n            name        = \"stg901\",\n            dir         = \"test/stg901\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n           --\u3010\u30b9\u30b3\u30a2\u8a2d\u5b9a\u9818\u57df\u3011\n            score = {\n               rank = {\n                   800000,  -- S rank\n                   700000,  -- A rank\n                   450000,  -- B rank\n                   200000,  -- C rank\n               },\n               time_basis = 10000,\n               time_down = 500,\n\n               no_miss = {\n                  100000,\n                  50000,\n                  25000,\n                  10000,\n                  0,\n               },\n            },\n         },\n         -- mission test(stg902)\n         {\n            name        = \"stg902\",\n            dir         = \"test/stg902\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n      },\n   },\n}\n

    The only difference here when compared to the Colors version is that the entries used take a 3D value for the player_dir tag and the inclusion of the asteroid wisp in the phantoms tag.

    actstgdata.lua
    stage_all = {\n   -- \u30c6\u30b9\u30c8\u30b9\u30c6\u30fc\u30b8\n   {\n      title = \"\u30c6\u30b9\u30c8\u30b9\u30c6\u30fc\u30b8\",\n\n      stages = {\n         -- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c6\u30b9\u30c8\u7528\n         {\n            name = \"stg901\",\n            title = \"\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\",\n         },\n         -- \u897f\u6751\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\n         {\n            name = \"stg902\",\n            title = \"\u897f\u6751\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\",\n         },\n         -- Multi\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c6\u30b9\u30c8\u7528\n         {\n            name = \"stg905\",\n            title = \"Multi\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\",\n         },\n      },\n   },\n}\n

    The Japanese titles translate to the same values in Sonic Colors Ultimate's files.

    "},{"location":"discoveries/sonic2013/levels/colors/#actstgdatalua","title":"actstgdata.lua","text":"

    This file was only meant to be used by the game's debug menu, which does not exist in the final release, thus making the file a leftover.

    "},{"location":"discoveries/sonic2013/levels/deleted/","title":"Deleted Levels","text":"

    There are several levels that have been removed from the game, but their entries can still be found in actstgmission.lua.

    actstgmission.lua
    mission_all = {\n    {\n        missions = {\n            --old stage\n            -- w2-a03 \u53e4\u4ee3\u90fd\u5e02\n            {\n                name        = \"w2a03\",\n                data        = \"w2a03\",\n                player_pos  = { 0.00, 0.00, 51.00 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n            -- w2-a04 \u30bf\u30ab\u30a2\u30b7\u30ac\u30cb\n            {\n                name        = \"w2a04\",\n                data        = \"w2a04\",\n                player_pos  = { 2.19, 0.47, 0.49 },\n                player_dir  = { 0.0, 90.0, 0.0 },\n                player_mode = \"2D\",\n            },\n            -- w2-a05 \u30b5\u30f3\u30c9\u30ef\u30fc\u30e0\u4f53\u5185\n            {\n                name        = \"w2a05\",\n                data        = \"w2a05\",\n                player_pos  = { -1000.29, 540.33, -7.00 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n                player_mode = \"2D\",\n            },\n            -- w3-a07 \u5357\u56fd\u30d3\u30fc\u30c12\n            {\n                name        = \"w3a07\",\n                data        = \"w3a07\",\n                player_pos  = { -0.54, 0.44, 105.00 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n\n            -- w1-a02 \u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f\n            {\n                name        = \"w1a02\",\n                data        = \"w1a02\",\n                player_pos  = { 50.1, -10.55, -188.27 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n            -- w1-a05 \u30e2\u30a2\u30a4\n            {\n                name        = \"w1a05\",\n                data        = \"w1a05\",\n                player_pos  = { 80, 10067.96, 0 },\n                player_dir  = { 0.0, 90.0, 0.0 },\n                player_mode = \"2D\",\n            },\n            -- w1-c01 \u30ad\u30f3\u6597\u96f2\n            {\n                name        = \"w1c01\",\n                data        = \"w1c01\",\n                player_pos  = { 0.00, -95.00, 30.00 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n            -- w2-a02 \u30b9\u30ab\u30a4\u30c1\u30a7\u30a4\u30b9\n            {\n                name        = \"w2a02\",\n                data        = \"w2a02\",\n                player_pos  = { 2401.1, 63.06, 3125.81 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n                player_mode = \"SKYCHASE\"\n            },\n            -- w4-a02 \u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f2\n            {\n                name        = \"w4a02\",\n                data        = \"w4a02\",\n                player_pos  = { -0.18, -52.03, -73.52 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n            -- w4-a03 ilomilo\u304a\u83d3\u5b50\n            {\n                name        = \"w4a03\",\n                data        = \"w4a03\",\n                player_pos  = { -1.08, 3.02, -3.30 },\n                player_dir  = { 0.0, 90.0, 0.0 },\n                player_mode = \"2D\",\n            },\n        },\n    },\n}\n
    "},{"location":"discoveries/sonic2013/levels/original-order/","title":"Original Level Order","text":""},{"location":"discoveries/sonic2013/levels/original-order/#partial-original-order","title":"Partial Original Order","text":"

    Up to a point the game's original level order can be revealed to us by investigating the game's leftover actstgdata.lua file.

    actstgdata.lua
    old_stage_all = {\n   -- w1\n   {\n      title = \"w1\u8349\u539f\",\n\n      stages = {\n         {\n            name = \"w1a01\",\n            title = \"w1-1:\u30b0\u30e9\u30b9\u30d2\u30eb\",\n         },\n         {\n            name = \"w1a02\",\n            title = \"w1-2:\u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f\",\n         },\n         {\n            name = \"w1a03\",\n            title = \"w1-3:\u6708\u5149\",\n         },\n         {\n            name = \"w1a04\",\n            title = \"w1-4:\u5927\u30ca\u30fc\u30eb\u8ecd\",\n         },\n         {\n            name = \"w1a05\",\n            title = \"w1-5:\u30e2\u30a2\u30a4\",\n         },\n         {\n            name = \"w1c01\",\n            title = \"w1-A:\u30ad\u30f3\u6597\u96f2\",\n         },\n      },\n   },\n   -- w2\n   {\n      title = \"w2\u7802\u6f20\",\n\n      stages = {\n         {\n            name = \"w2a01\",\n            title = \"w2-1:\u30b5\u30f3\u30c9\u30ef\u30fc\u30e0\u8ecd\",\n         },\n         {\n            name = \"w2a02\",\n            title = \"w2-2:\u30b9\u30ab\u30a4\u30c1\u30a7\u30a4\u30b9\",\n         },\n         {\n            name = \"w2a03\",\n            title = \"w2-3:\u53e4\u4ee3\u90fd\u5e02\",\n         },\n         {\n            name = \"w2a04\",\n            title = \"w2-4:\u30bf\u30ab\u30a2\u30b7\u30ac\u30cb\",\n         },\n         {\n            name = \"w2a05\",\n            title = \"w2-5:\u30b5\u30f3\u30c9\u30ef\u30fc\u30e0\u4f53\u5185\",\n         },\n         {\n            name = \"w2a06\",\n            title = \"w2-6:\u7adc\u5dfb\",\n         },\n         {\n            name = \"w2c01\",\n            title = \"w2-A:\u9ec4\u8272\u4e09\u9023\u30d0\u30cd\",\n         },\n      },\n   },\n   -- w3\n   {\n      title = \"w3\u5357\u56fd\",\n\n      stages = {\n         {\n            name = \"w3a01\",\n            title = \"w3-1:\u5357\u56fd\u30d3\u30fc\u30c1\",\n         },\n         {\n            name = \"w3a03\",\n            title = \"w3-3:\u30d5\u30eb\u30fc\u30c4\u8fb2\u5712\",\n         },\n         {\n            name = \"w3a07\",\n            title = \"w3-7:\u5357\u56fd\u30d3\u30fc\u30c12\",\n         },\n      },\n   },\n   -- w4\n   {\n      title = \"w4\u96ea\",\n\n      stages = {\n         {\n            name = \"w4a01\",\n            title = \"w4-1:\u8ecd\u4e8b\u5de5\u5834\",\n         },\n         {\n            name = \"w4a02\",\n            title = \"w4-2:\u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f2\",\n         },\n         {\n            name = \"w4a03\",\n            title = \"w4-3:ilomilo\u304a\u83d3\u5b50\",\n         },\n      },\n   },\n   -- w5\n   {\n      title = \"w5\u30b8\u30e3\u30f3\u30b0\u30eb\",\n\n      stages = {\n         {\n            name = \"w5a01\",\n            title = \"w5-1:\u30b8\u30e3\u30f3\u30b0\u30eb\u8ecc\u9053\u65bd\u8a2d\",\n         },\n      },\n   },\n}\n

    Many of these levels have been deleted. However, there's plenty of changes we can dissect in this list.

    "},{"location":"discoveries/sonic2013/levels/original-order/#windy-hill","title":"Windy Hill","text":"Final Original w1a01 w1a01 w1a03 w1a02 xind01 w1a03 w1a06 w1a04 w1a05 w1c01"},{"location":"discoveries/sonic2013/levels/original-order/#w1a02","title":"w1a02","text":"

    Starting off just like the final, it swiftly changes gears by heading into w1a02 instead of w1a03. However, checking the description of the level (\u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f), it matches up with the final game's xind01 suggesting the two stages are one and the same, however the starting positions don't line up.

    xind01 w1a02 { -25.0, -43.3, 1328.6 } { 50.1, -10.55, -188.27 }"},{"location":"discoveries/sonic2013/levels/original-order/#w1a03","title":"w1a03","text":"

    The following level is w1a03, meaning Act 3 and Act 2 were likely swapped around early into development.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w1a04","title":"w1a04","text":"

    The order then continues with w1a04, which is originally used as Sky Road Act 1. This suggests that this level was meant to be used in Windy Hill, which is supported by the fact that the level shares a very similar look with that area of the game.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w1a05","title":"w1a05","text":"

    w1a05 shares its description (\u30e2\u30a2\u30a4) with the level xmoa01 (Silent Forest Act 4) suggesting, just like the previous stage, it was to come much sooner into the game, however once again the starting positions don't line up.

    xmoa01 w1a05 { -720, 7070, 0 } { 80, 10067.96, 0 }

    Looking at xmoa01's set data reveals a few leftover objects in the sky around w1a05's spawn position. This list includes: 4x - ObjPointSoundSource 1x - ObjGiantMoaiOut 1x - ObjGFieldConstant 1x - EventVolumeCameraChange 1x - GPathCamera 1x - GoalRing 1x - SetRigidBody

    The spawn position being so close to the GoalRing means the level was more than likely supposed to start close to its end, though not meaning it was a short level as the Moai objects function as warp objects.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w1c01","title":"w1c01","text":"

    Finally for Windy Hill there's w1c01. Taking note of the change from a to a c, it seems this level wasn't meant to be a normal act but a challenge level. Looking at the description (\u30ad\u30f3\u6597\u96f2) once again, it reveals to us that this level is non-other than xnim01 (Hidden World Act 1) from the final game, however once again there's a small difference in starting locations.

    xnim01 w1c01 { 0.00, -100.00,-10.00 } { 0.00, -95.00, 30.00 }

    Interestingly enough this leaves the final game's second encounter with Zazz in w1a06 nowhere to be seen.

    "},{"location":"discoveries/sonic2013/levels/original-order/#desert-ruins","title":"Desert Ruins","text":"Final Original w2a01 w2a01 xbee01 w2a02 xswe01 w2a03 w2a06 w2a04 w2a05 w2a06 w2c01"},{"location":"discoveries/sonic2013/levels/original-order/#w2a02","title":"w2a02","text":"

    Starting off just like the final, it swiftly changes gears by heading into w2a02 instead of xbee01. However, checking the description of the level (\u30b9\u30ab\u30a4\u30c1\u30a7\u30a4\u30b9), it matches up with the final game's xsky01, suggesting the two stages are one and the same, however the starting positions don't line up. Interestingly enough this level also has the SKYCHASE tag, meaning it was a level where you controlled the Tornado just like the final iteration of the stage.

    xsky01 w2a02 { 0.0, 270.0, 17950.0 } { 2401.1, 63.06, 3125.81 }

    Test level stg823 has the following comment, which is about this level: w2-2\uff1a\u76f4\u5f8420\uff4d\u30c6\u30b9\u30c8. This comment roughly translates to World 2-2: 20m Diameter Test.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w2a03","title":"w2a03","text":"

    This level sadly does not have a final counterpart in the release of the game. Its description roughly translates to Ancient City.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w2a04","title":"w2a04","text":"

    This level sadly does not have a final counterpart in the release of the game. Its description roughly translates to Japanese Spider Crab.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w2a05","title":"w2a05","text":"

    This level sadly does not have a final counterpart in the release of the game. Its description roughly translates to Sandworm Body.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w2c01","title":"w2c01","text":"

    w2c01 is the final level of the original order for Desert Ruins, but it's actually used as Sky Road Act 4 in the final game. The aesthetics of the area does match up with the look of Desert Ruins, so it's quite likely that this level was supposed to be there originally. The description for this level roughly translates to \"Yellow Triple Spring\", meaning it was very likely going to function like the Yellow Spring levels from Sonic Colors. This is supported by the fact that the Moving Springs in the level behave very similarly to the Yellow Springs in Sonic Colors.

    "},{"location":"discoveries/sonic2013/levels/original-order/#tropical-coast","title":"Tropical Coast","text":"

    From here on out the original level order becomes very segmented with barely any trace left of it.

    Final Original w3a01 w3a01 w3a03 xsea01 w3a03 w3a06 w6a03 w3a07"},{"location":"discoveries/sonic2013/levels/original-order/#w3a07","title":"w3a07","text":"

    This level sadly does not have a final counterpart in the release of the game. Its description is the same as w3a01's with but it has a 2 at the end.

    "},{"location":"discoveries/sonic2013/levels/original-order/#frozen-factory","title":"Frozen Factory","text":"Final Original w4a01 w4a01 w4a04 w4a02 xcas01 w4a03 w4a06"},{"location":"discoveries/sonic2013/levels/original-order/#w4a02","title":"w4a02","text":"

    The second level instead of being w4a04 is w4a02. However, checking the description of the level (\u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f2), it matches up with the final game's xind02 (Silent Forest Act 3) suggesting the two stages are one and the same, however the starting positions don't line up.

    xind02 w4a02 { 0.00, -49.99, 14663.00 } { -0.18, -52.03, -73.52 }"},{"location":"discoveries/sonic2013/levels/original-order/#w4a03","title":"w4a03","text":"

    The third level instead of being xcas01 is w4a03. However, checking the description of the level (ilomilo\u304a\u83d3\u5b50), it matches up with the final game's xswe01 (Desert Ruins Act 3) suggesting the two stages are one and the same, however the starting positions don't line up.

    xswe01 w4a03 { -590.76, 403.30, 1040.85 } { -1.08, 3.02, -3.30 }

    Inside the configuration file for the level xswe01, the file is still called w4a03_config.lua, however the brief section states it's a configuration file for w2a05.

    xswe01_config.lua
    ---------------------------------------------------------------\n-- @file    w4a03_config.lua\n-- @author  Jibiki_Hisae\n-- @brief   w2-5 \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\n-- @data    2012/7/20\n---------------------------------------------------------------\n
    "},{"location":"discoveries/sonic2013/levels/original-order/#silent-forest","title":"Silent Forest","text":"Final Original w5a01 w5a01 w5a02 xind02 xmoa01"},{"location":"discoveries/sonic2013/levels/original-order/#sky-road","title":"Sky Road","text":""},{"location":"discoveries/sonic2013/levels/original-order/#w6a03","title":"w6a03","text":"

    The secret level of Tropical Coast in the final game. As most of Sky Roads levels seem to come from elsewhere, it's hard to make a proper judgement on whether the stage would aesthetically belong in Sky Road or not, it does however play very similarly to w6a05, Sky Road's Act 3. The configuration file for the level does state that it belongs to Sky Road as well.

    w6a03_config.lua
    ---------------------------------------------------------------\n-- @file    w6a03_config.lua\n-- @author  Yoshitaka Miura\n-- @brief   w6-3 \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\n-- @data    2012/10/30\n---------------------------------------------------------------\n
    "},{"location":"discoveries/sonic2013/levels/original-order/#w6a05","title":"w6a05","text":"

    Inside the configuration file for the level xnim02 the brief section states it's a configuration file for w6a05. xnim02_config.lua

    ---------------------------------------------------------------\n-- @file     xnim02_config.lua\n-- @author  Yoshitaka_Miura\n-- @brief   w6-5 \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\n-- @data    2013/5/4\n---------------------------------------------------------------\n

    "},{"location":"discoveries/sonic2013/levels/original-order/#speculative-additions","title":"Speculative Additions","text":"

    This section includes educated guesses due to lack of leftover data from the game.

    "},{"location":"discoveries/sonic2013/levels/original-order/#tropical-coast_1","title":"Tropical Coast","text":"

    w3a02, w3a04, and w3c01 are nowhere to be seen. It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with. As the stage originally had a 7th act it's possible that is what would have been the equivalent of w3c01 in this zone.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w3a05","title":"w3a05","text":"

    Test level w0a04 has the following comment, which is about this level: w3-5\uff1aSV\u30ab\u30b8\u30ce\u30c6\u30b9\u30c8\uff08w0a04\uff09. This comment roughly translates to World 3-5: Sideview Casino Test (w0a04). This could mean that w3a05 turned into xcas01 later on into development, which is housed in Frozen Factory in the final game.

    "},{"location":"discoveries/sonic2013/levels/original-order/#frozen-factory_1","title":"Frozen Factory","text":"

    w4a05 and w4c01 are nowhere to be seen. It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with.

    "},{"location":"discoveries/sonic2013/levels/original-order/#silent-forest_1","title":"Silent Forest","text":"

    w5a04, w5a05, w5a06 and w5c01 are nowhere to be seen.It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w5a03","title":"w5a03","text":"

    The second level of Sky Road in the original game. The overall aesthetic of the level does match up with Silent Forest, which suggests it really did belong to Silent Forest at some point.

    "},{"location":"discoveries/sonic2013/levels/original-order/#sky-road_1","title":"Sky Road","text":"

    w6a01, w6a02, w6a06 and w6c01 are nowhere to be seen. It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with.

    "},{"location":"discoveries/sonic2013/levels/original-order/#lava-mountain","title":"Lava Mountain","text":"

    w7a04, w7a05 and w7c01 are nowhere to be seen. It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with.

    "},{"location":"discoveries/sonic2013/levels/test/","title":"Test Levels","text":"

    There are several entries for test levels leftover in Sonic Lost World's testmission.lua file.

    Some of these entries are using the naming scheme from Sonic Colors for stage names, that being stgXYY. Another chunk of the entries are named according to the scheme standardized in Sonic Lost World, w0xYY.

    testmission.lua
    ---------------------------------------------------------------\n-- @file    testmission.lua\n-- @author  Kawabata Yoshitaka\n-- @brief   \u30c6\u30b9\u30c8\u7528\u30df\u30c3\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\n---------------------------------------------------------------\n\ntest_mission_all = {\n\n   -- \u30d7\u30ed\u30b0\u30e9\u30de\u30c6\u30b9\u30c8.\n   {\n      missions = {\n         -- mission test(w0a01)\n         {\n            name        = \"w0a01\",\n            dir         = \"test/w0a01\",\n            player_pos  = { -1111.71, 49.99, -594.29 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 270.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n         -- mission test(w0c99)\u30c7\u30b6\u30a4\u30f3\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\n         {\n            name        = \"w0c99\",\n            dir         = \"test/w0c99\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0c99)\u64ae\u5f71\u6240\n         {\n            name        = \"w0c99_2\",\n            dir         = \"test/w0c99\",\n            player_pos  = { -1200, 0, -1200 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0c98)\u30b7\u30a7\u30fc\u30c0\u30fc\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\n         {\n            name        = \"w0c98\",\n            dir         = \"test/w0c98\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0c97)\u30c7\u30b6\u30a4\u30f3\u30c6\u30b9\u30c8\u30de\u30c3\u30d72(\u6697\u3044\u9762)\n         {\n            name        = \"w0c97\",\n            dir         = \"test/w0c97\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0c96)\u30b3\u30ea\u30b8\u30e7\u30f3\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\n         {\n            name        = \"w0c96\",\n            dir         = \"test/w0c96\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(stg901)\n         {\n            name        = \"stg901\",\n            dir         = \"test/stg901\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n           --\u3010\u30b9\u30b3\u30a2\u8a2d\u5b9a\u9818\u57df\u3011\n            score = {\n               rank = {\n                   800000,  -- S rank\n                   700000,  -- A rank\n                   450000,  -- B rank\n                   200000,  -- C rank\n               },\n               time_basis = 10000,\n               time_down = 500,\n\n               no_miss = {\n                  100000,\n                  50000,\n                  25000,\n                  10000,\n                  0,\n               },\n            },\n         },\n         -- mission test(stg811)\n         {\n            name        = \"stg811\",\n            dir         = \"test/stg811\",\n            player_pos  = { -0.65, 0.09, 50.8 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n         -- mission test(stg812)\n         {\n            name        = \"stg812\",\n            dir         = \"test/stg812\",\n            player_pos  = { 0, -50, -60 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n         -- mission test(stg813)\n         {\n            name        = \"stg813\",\n            dir         = \"test/stg813\",\n            player_pos  = { 4000.0, -2500.0, 7050.0 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n         -- mission test(stg814)\n         {\n            name        = \"stg814\",\n            dir         = \"test/stg814\",\n            player_pos  = { 0,0.5, 55 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n         -- mission test(stg815)\n         {\n            name        = \"stg815\",\n            dir         = \"test/stg815\",\n            player_pos  = { -7677.16, 841.78, 50.83 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n          -- mission test(stg816)\n         {\n            name        = \"stg816\",\n            dir         = \"test/stg816\",\n            player_pos  = { 1.92, -32.61, 237.17 },\n            player_mode = \"2D\",\n            player_dir  = { 0.0, 90.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n          -- mission test(stg817)\n         {\n            name        = \"stg817\",\n            dir         = \"test/stg817\",\n            player_pos  = { 0.04, 466.24, -6.63 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n          -- mission test(stg818)\n         {\n            name        = \"stg818\",\n            dir         = \"test/stg818\",\n            player_pos  = { 3.47, 320.30, -1.62 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n          -- mission test(stg819)\n         {\n            name        = \"stg819\",\n            dir         = \"test/stg819\",\n            player_pos  = { 1240.18, 1923.53, -15.45 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n          -- mission test(stg820)\n         {\n            name        = \"stg820\",\n            dir         = \"test/stg820\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(stg821)\n         {\n            name        = \"stg821\",\n            dir         = \"test/stg821\",\n            player_pos  = { 80, 72, 0 },\n            player_dir  = { 0.0, 90.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(stg822)\n         {\n            name        = \"stg822\",\n            dir         = \"test/stg822\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(stg823)\n         {\n            name        = \"stg823\",\n            dir         = \"test/stg823\",\n            player_pos  = { 1393.38, 42.29, 774.04 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"SKYCHASE\",\n         },\n          -- mission test(w0a03)\n         {\n            name        = \"w0a03\",\n            dir         = \"test/w0a03\",\n            player_pos  = { -267.95, 905.79, -2215.56 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a04)\n         {\n            name        = \"w0a04\",\n            dir         = \"test/w0a04\",\n            player_pos  = { 0.0, 0.0, 0.0 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a05)\n         {\n            name        = \"w0a05\",\n            dir         = \"test/w0a05\",\n            player_pos  = { -1.21, -87.9, 24.48 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a06)\n         {\n            name        = \"w0a06\",\n            dir         = \"test/w0a06\",\n            player_pos  = { 721.07, 994.32, -6.55 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a07)\n         {\n            name        = \"w0a07\",\n            dir         = \"test/w0a07\",\n            player_pos  = { 51.82, 40.93, -74.29 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a08)\n         {\n            name        = \"w0a08\",\n            dir         = \"test/w0a08\",\n            player_pos  = { 514.80, 648.50, 4219.32 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a09)\n         {\n            name        = \"w0a09\",\n            dir         = \"test/w0a09\",\n            player_pos  = { -5694.29, 672.14, -295.32 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a10)\n         {\n            name        = \"w0a10\",\n            dir         = \"test/w0a10\",\n            player_pos  = { -0.0, 50.0, 450.00 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a11)\n         {\n            name        = \"w0a11\",\n            dir         = \"test/w0a11\",\n            player_pos  = { 0.0, -32.86, 41.54 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a12)\n         {\n            name        = \"w0a12\",\n            dir         = \"test/w0a12\",\n            player_pos  = { 0.0, 510.0, 151.0 },\n            player_mode = \"TOP\",\n            player_dir  = { 0.0, 0.0, 0.0 },\n         },\n          -- mission test(w0a13)\n         {\n            name        = \"w0a13\",\n            dir         = \"test/w0a13\",\n            player_pos  = { -331.97, 600.15, -260.02 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a14)\n         {\n            name        = \"w0a14\",\n            dir         = \"test/w0a14\",\n            player_pos  = { -2624.82, -1925.34, 7370.24 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a15)\n         {\n            name        = \"w0a15\",\n            dir         = \"test/w0a15\",\n            player_pos  = { 500, -47, -15 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a16)\n         {\n            name        = \"w0a16\",\n            dir         = \"test/w0a16\",\n            player_pos  = { 218.12, -501.53, -613.49 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n         -- mission test(stg902)\n         {\n            name        = \"stg902\",\n            dir         = \"test/stg902\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0a90)\n         {\n            name        = \"w0a90\",\n            dir         = \"test/w0a90\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 90.0, 0.0 },\n            player_mode = \"2D\",\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(stg978)\n         {\n            name        = \"stg978\",\n            dir         = \"test/stg978\",\n            player_pos  = { 8147, -360, -18974 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n         -- mission test(stg981)\n         {\n            name        = \"stg981\",\n            dir         = \"test/stg981\",\n            player_pos  = { 0, 5.00, -37.43 },\n            player_mode = \"2D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(stg985)\n         {\n            name        = \"stg985\",\n            dir         = \"test/stg985\",\n            player_pos  = { 1065.00, 49.91, -594.88 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 270.0, 0.0 },\n            dead_line       = -50000,\n         },\n         -- mission test(stg988)\n         {\n            name        = \"stg988\",\n            dir         = \"test/stg988\",\n            player_pos  = { -1111.71, 49.99, -594.29 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 270.0, 0.0 },\n            dead_line       = -50000,\n         },\n         -- mission test(stg989)\n         {\n            name        = \"stg989\",\n            dir         = \"test/stg989\",\n            player_pos  = { 0, -138.52, -301.15 },\n            player_mode = \"2D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n         },\n      },\n   },\n}\n

    Empty folders can be found for some of the test levels in the raw folder found within the Wii U release of the game. These folders are listed below.

    raw\n\u251c\u2500\u2500 test\n\u2502   \u251c\u2500\u2500 stg811\n\u2502   \u251c\u2500\u2500 stg812\n\u2502   \u251c\u2500\u2500 stg813\n\u2502   \u251c\u2500\u2500 stg814\n\u2502   \u251c\u2500\u2500 stg815\n\u2502   \u251c\u2500\u2500 stg817\n\u2502   \u251c\u2500\u2500 stg818\n\u2502   \u251c\u2500\u2500 stg819\n\u2502   \u251c\u2500\u2500 stg820\n\u2502   \u251c\u2500\u2500 stg821\n\u2502   \u251c\u2500\u2500 stg822\n\u2502   \u251c\u2500\u2500 stg823\n\u2502   \u251c\u2500\u2500 stg901\n\u2502   \u251c\u2500\u2500 stg902\n\u2502   \u251c\u2500\u2500 stg978\n\u2502   \u251c\u2500\u2500 stg981\n\u2502   \u251c\u2500\u2500 stg985\n\u2502   \u251c\u2500\u2500 stg988\n\u2502   \u251c\u2500\u2500 stg989\n\u2502   \u251c\u2500\u2500 w0a01\n\u2502   \u251c\u2500\u2500 w0a02\n\u2502   \u251c\u2500\u2500 w0a03\n\u2502   \u251c\u2500\u2500 w0a04\n\u2502   \u251c\u2500\u2500 w0a05\n\u2502   \u251c\u2500\u2500 w0a06\n\u2502   \u251c\u2500\u2500 w0a07\n\u2502   \u251c\u2500\u2500 w0a08\n\u2502   \u251c\u2500\u2500 w0a09\n\u2502   \u251c\u2500\u2500 w0a10\n\u2502   \u251c\u2500\u2500 w0a11\n\u2502   \u251c\u2500\u2500 w0a12\n\u2502   \u251c\u2500\u2500 w0a13\n\u2502   \u251c\u2500\u2500 w0a14\n\u2502   \u251c\u2500\u2500 w0a15\n\u2502   \u251c\u2500\u2500 w0a16\n\u2502   \u251c\u2500\u2500 w0a90\n\u2502   \u251c\u2500\u2500 w0a96\n\u2502   \u251c\u2500\u2500 w0a97\n\u2502   \u251c\u2500\u2500 w0a98\n\u2502   \u251c\u2500\u2500 w0a99\n

    "},{"location":"discoveries/swa/ps3/install/","title":"Leftover Install Assets","text":"

    There are assets leftover from an installation process. The files and folder related to it are listed below.

    USRDIR\n\u251c\u2500\u2500 Install\n\u2502   \u251c\u2500\u2500 install_001.dds\n\u2502   \u251c\u2500\u2500 install_002.dds\n\u2502   \u251c\u2500\u2500 install_003.dds\n\u2502   \u251c\u2500\u2500 install_004.dds\n\u2502   \u251c\u2500\u2500 install_005.dds\n\u2502   \u251c\u2500\u2500 install_006.dds\n\u2502   \u251c\u2500\u2500 install_007.dds\n\u2502   \u2514\u2500\u2500 install_008.dds\n\u251c\u2500\u2500 Install.ar.00\n\u251c\u2500\u2500 Install.arl\n\u251c\u2500\u2500 install.files.xml\n\u2514\u2500\u2500 install.mounts.xml\n
    "},{"location":"discoveries/swa/ps3/install/#install-folder","title":"Install Folder","text":"

    Within the disk contains a folder named Install, which contains 8 images of several characters in Sonic Unleashed. This folder is also present in the PC port of Sonic Generations, inside bb2.cpk.

    "},{"location":"discoveries/swa/ps3/install/#install-archive","title":"Install Archive","text":"

    There is also UI (ui_install.yncp) that would have shown during the install process. Despite only being in the PlayStation 3 version of the game, it uses the controller prompts texture from the Xbox 360 version of the game.

    Please note that this was recorded using a WIP build of Shuriken, so the preview may not be 100% accurate to how it would look in-game.

    "},{"location":"discoveries/swa/ps3/install/#playstation-3s-icon0-and-pic1","title":"PlayStation 3's ICON0 and PIC1","text":"

    In install.files.xml there's information for the game to take icons/hdd_icon0.png and icons/hdd_pic1.png, and rename them to ICON0.png and PIC1.png respectively.

    install.files.xml
    <System Name=\"icons/hdd_icon0.png\" To=\"ICON0.PNG\"/><System Name=\"icons/hdd_pic1.png\" To=\"PIC1.PNG\"/>\n

    "},{"location":"docs/general/hson/","title":"HSON Format","text":"

    The Hedgehog Set Object Notation Format (\"HSON\") is a custom JSON-based file format designed collaboratively by Dar\u00edo, Radfordhound, \u0110e\u00e4Th, Skyth, and Sajid to represent object placement in a \"universal\" (non-game/editor-specific) way.

    It was designed with the following principles in-mind:

    "},{"location":"docs/general/hson/#json-schema","title":"JSON Schema","text":"

    The official JSON Schema for the HSON Format can be found at the hson-schema GitHub repository.

    It's useful (but not necessary) to validate .hson files against this schema in editors which support this feature, as doing so allows you to have autocompletion, descriptions of each property, and data validation.

    To validate all .hson files against the schema in your editor of choice, refer to the instructions in the README from the above repository.

    To manually validate against the schema on a per-file basis, include the following line at the top-level of your HSON file(s), before the HSON file format version parameter.

    \"$schema\": \"https://raw.githubusercontent.com/hedge-dev/hson-schema/main/hson.schema.json\",\n

    If writing tooling that generates HSON, consider having your tooling write this line to generated files.

    "},{"location":"docs/general/hson/#implementations","title":"Implementations","text":"

    As of the time of writing, the following known implementations exist:

    "},{"location":"docs/general/hson/#csharp","title":"C#","text":""},{"location":"docs/general/hson/#cpp","title":"C++","text":""},{"location":"docs/general/hson/#example","title":"Example","text":"

    The following is an example file in the HSON Format, which represents a \"project\" called \"Sample Project\" that contains 5 objects.

    This example file will be referenced periodically throughout the format specification.

    {\n  \"$schema\": \"https://raw.githubusercontent.com/hedge-dev/hson-schema/main/hson.schema.json\",\n  \"version\": 1,\n  \"metadata\": {\n    \"name\": \"Sample Project\",\n    \"author\": \"Takashi Iizuka, Morio Kishimoto\",\n    \"date\": \"2023-02-09T22:38:42Z\",\n    \"version\": \"1.0.0\",\n    \"description\": \"green hill is looking a lot more like sand hill rn\",\n    \"myCustomEditor\": {\n      \"viewportTabIndex\": 0\n    }\n  },\n  \"objects\": [\n    {\n      \"id\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n      \"name\": \"Spring #1\",\n      \"type\": \"Spring\",\n      \"position\": [ 100.0, 0.0, 0.0 ],\n      \"rotation\": [ 0.0, 0.0, 0.0, 1.0 ],\n      \"scale\": [ 1.0, 1.0, 1.0 ],\n      \"isEditorVisible\": true,\n      \"isExcluded\": false,\n      \"parameters\": {\n        \"tags\": {\n          \"RangeSpawning\": {\n            \"rangeIn\": 100.0,\n            \"rangeOut\": 20.0\n          }\n        },\n        \"visual\": \"Normal\",\n        \"firstSpeed\": 420,\n        \"outOfControl\": 2.5,\n        \"isHorming\": true,\n        \"actions\": [\n          {\n            \"action\": \"On\",\n            \"objectIds\": [\n                \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n                \"{38285a58-9969-4c5f-a649-b91440962a71}\"\n            ],\n            \"delayTime\": 0.5\n          },\n          {\n            \"action\": \"Off\",\n            \"objectIds\": [],\n            \"delayTime\": 0.0\n          },\n          {\n            \"action\": \"Off\",\n            \"objectIds\": [],\n            \"delayTime\": 0.0\n          }\n        ],\n      }\n    },\n    {\n      \"type\": \"Ring\"\n    },\n    {\n      \"id\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n      \"parentId\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n      \"type\": \"Ring\",\n      \"position\": [ 0.0, 1.0, 0.0 ],\n      \"parameters\": {\n        \"visibility\": \"Visible\",\n        \"respawnTime\": 0.0\n      },\n      \"myCustomValue\": 893.5,\n      \"myCustomEditor\": {\n        \"presetPlacementType\": \"LINE\",\n        \"presetPlacementDistance\": 1.0\n      }\n    },\n    {\n      \"id\": \"{38285a58-9969-4c5f-a649-b91440962a71}\",\n      \"instanceOf\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n      \"position\": [ 0.0, 2.0, 0.0 ],\n      \"parameters\": {\n        \"respawnTime\": 0.5\n      }\n    },\n    {\n      \"id\": \"{81fdcaff-aa37-4c47-a665-5b6265a6b780}\",\n      \"parentId\": \"{00000000-0000-0000-0000-000000000000}\",\n      \"type\": \"DashPanel\"\n    }\n  ]\n}\n
    "},{"location":"docs/general/hson/#format-specification","title":"Format Specification","text":"

    What follows is a specification of all standard properties supported by the HSON Format.

    Important

    All of the following properties are OPTIONAL, unless otherwise specified.

    "},{"location":"docs/general/hson/#1-version","title":"1. version","text":"

    Info

    This value is REQUIRED to be present in all HSON files.

    The version of the HSON format being used by this file. It is represented as a number that is restricted in the following ways:

    Because of these restrictions, it is valid for tooling to parse this value into an unsigned int.

    Currently, version 1 is the latest version.

    "},{"location":"docs/general/hson/#2-metadata","title":"2. metadata","text":"

    Info

    Metadata for the project represented by this file.

    It is intended to be used purely for tooling display purposes.

    metadata is represented as a JSON object consisting of the following properties:

    "},{"location":"docs/general/hson/#21-name","title":"2.1. name","text":"

    Info

    The name of the project represented by this file.

    "},{"location":"docs/general/hson/#22-author","title":"2.2. author","text":"

    Info

    The author(s) of the project represented by this file.

    If the project has multiple authors, we recommend writing each author's name with a comma and space separating them, like so:

    Example

    \"author\": \"Me, Myself, I\"\n

    With that said, this is a recommendation and by no means a requirement.

    Tooling should treat this as an arbitrary string in no particular format.

    "},{"location":"docs/general/hson/#23-date","title":"2.3. date","text":"

    Info

    The date/time the project was created at, represented as a string in the RFC 3339 format (a similar standard to ISO 8601).

    It is invalid to represent the date using any other format.

    This limitation makes parsing dates in tooling a lot easier.

    Getting the current DateTime in RFC 3339 format programmatically

    Feel free to copy-paste any of these code snippets and do what you want with them.

    C#:

    public static string GetRFC3339Time()\n{\n    return DateTime.UtcNow.ToString(\"yyyy-MM-ddTHH:mm:ssK\",\n        CultureInfo.InvariantCulture);\n}\n

    C++11:

    #include <string>\n#include <stdexcept>\n#include <ctime>\n\nstd::string getRFC3339Time()\n{\n    char buf[32]; // This is a few extra characters than should be necessary, just to be safe.\n    const auto time = std::time(nullptr);\n    const auto len = std::strftime(buf, sizeof(buf), \"%FT%TZ\", std::gmtime(&time));\n\n    if (!len)\n    {\n        throw std::runtime_error(\"Failed to get RFC 3339 format time\");\n    }\n\n    return std::string(buf, len);\n}\n

    C:

    #include <time.h>\n\n/*\n  Returns 0 on failure, or the number of bytes written\n  into buf (not including the null terminator) on success.\n*/\nint getRFC3339Time(size_t bufSize, char* buf)\n{\n    const time_t time = time(NULL);\n    return strftime(buf, bufSize, \"%FT%TZ\", gmtime(&time));\n}\n
    "},{"location":"docs/general/hson/#24-version","title":"2.4. version","text":"

    Info

    The version number of the project, represented as a string.

    How you want to version your project is up to you; these are all valid:

    Examples

    \"version\": \"1.0.0\"\n
    \"version\": \"1\"\n
    \"version\": \"beta release\"\n

    Tooling should treat this as an arbitrary string in no particular format.

    "},{"location":"docs/general/hson/#25-description","title":"2.5. description","text":"

    Info

    The description of the project represented by this file.

    "},{"location":"docs/general/hson/#3-objects","title":"3. objects","text":"

    Info

    An array containing all of the objects contained within the project.

    Each object is represented as a JSON object consisting of the following properties:

    "},{"location":"docs/general/hson/#31-id","title":"3.1. id","text":"

    Info

    The UUID (aka GUID) of the object, represented as a case-insensitive string formatted like this: {11111111-2222-3333-4444-555555555555}.

    Note that it is enclosed in curly brackets; this is to make it clear that it is supposed to be parsed as a UUID, and NOT as a number.

    The object's UUID is used to reference the object throughout the project.

    It must be unique throughout the project; that is, no two objects within the same project are allowed to have the same UUID. That's what makes them UUIDs.

    It also cannot be set to the following value: {00000000-0000-0000-0000-000000000000}, as this value is reserved for \"null\" object references.

    This property can be omitted (leaving the object without a specified UUID) if the object never needs to be referenced. This helps to save some space.

    Tools are free to generate their own UUIDs for objects without a specified UUID, or to just think of the object as not having a UUID. Whichever is more convenient.

    Examples

    Valid UUID (lowercase):

    \"id\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\"\n

    Valid UUID (uppercase):

    \"id\": \"{FD3E6BC9-5D2D-4DA8-A22D-F88E709B3E48}\"\n

    Invalid UUID (no enclosing curly brackets):

    \"id\": \"fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48\"\n

    Invalid UUID (not a UUID):

    \"id\": \"{2}\"\n

    Invalid UUID (the special \"null\" UUID value is not valid to use as the object's id):

    \"id\": \"{00000000-0000-0000-0000-000000000000}\"\n

    Valid object references (the special \"null\" UUID value is valid to use in object references):

    \"parentId\": \"{00000000-0000-0000-0000-000000000000}\",\n\"instanceOf\": \"{00000000-0000-0000-0000-000000000000}\"\n
    "},{"location":"docs/general/hson/#32-name","title":"3.2. name","text":"

    Info

    The name of the object. This is an arbitrary string that can be anything you want.

    It is intended to be used purely for tooling display purposes.

    "},{"location":"docs/general/hson/#33-parentid","title":"3.3. parentId","text":"

    Info

    The id of this object's parent object, or a null UUID.

    If specified as a valid, non-null UUID, this object is a child of the object with the given UUID, meaning that the object's transform (represented via position, rotation, and scale) is relative to the parent's transform (which is relative to its parent's transform, and so on).

    Otherwise, if it is not specified, or is specified as a null UUID, this object has no parent object, and the transform is global.

    Parenting Example

    {\n  \"id\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n  \"parentId\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n  \"type\": \"Ring\",\n  \"position\": [ 0.0, 1.0, 0.0 ],\n  \"parameters\": {\n    \"visibility\": \"Visible\",\n    \"respawnTime\": 0.0\n  },\n  \"myCustomValue\": 893.5,\n  \"myCustomEditor\": {\n    \"presetPlacementType\": \"LINE\",\n    \"presetPlacementDistance\": 1.0\n  }\n}\n

    In this snippet from the example file, the object has specified a position of [ 0.0, 1.0, 0.0 ], and a parentId of {fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}, which means that its transform is local to the transform of the object which uses that UUID (not included in this snippet).

    This parent object has a position of [ 100.0, 0.0, 0.0 ].

    So, the above object's global position is [ 100.0, 1.0, 0.0 ].

    Null Reference Example

    {\n  \"id\": \"{81fdcaff-aa37-4c47-a665-5b6265a6b780}\",\n  \"parentId\": \"{00000000-0000-0000-0000-000000000000}\",\n  \"type\": \"DashPanel\"\n}\n

    In this snippet from the example file, the object has specified a parentId of {00000000-0000-0000-0000-000000000000} (the special UUID null value), which is equivalent to not specifying a parentId. This means that this object has no parent.

    "},{"location":"docs/general/hson/#34-instanceof","title":"3.4. instanceOf","text":"

    Info

    The id of the object to be instanced, or a null UUID.

    If specified as a valid, non-null UUID, this object is an instance of the object with the given UUID, meaning that it will inherit ALL unspecified properties from the instanced object, with the notable exception of the id property, instead of falling back to the usual defaults.

    Note that it will NOT affect the object's specified properties; these will effectively \"override\" any properties taken from the instanced object.

    Otherwise, if it is not specified, or is specified as a null UUID, this object is not an instance.

    Example

    {\n  \"id\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n  \"parentId\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n  \"type\": \"Ring\",\n  \"position\": [ 0.0, 1.0, 0.0 ],\n  \"parameters\": {\n    \"visibility\": \"Visible\",\n    \"respawnTime\": 0.0\n  },\n  \"myCustomValue\": 893.5,\n  \"myCustomEditor\": {\n    \"presetPlacementType\": \"LINE\",\n    \"presetPlacementDistance\": 1.0\n  }\n},\n{\n  \"id\": \"{38285a58-9969-4c5f-a649-b91440962a71}\",\n  \"instanceOf\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n  \"position\": [ 0.0, 2.0, 0.0 ],\n  \"parameters\": {\n    \"respawnTime\": 0.5\n  }\n}\n

    In this snippet from the example file, the second listed object (UUID: 38285a58-9969-4c5f-a649-b91440962a71) is an instance of the first listed object (UUID: 2737e92f-4842-46cb-a590-e074f7b882f0).

    As such, it will inherit all of the unspecified properties from the first object, including the parentId, type, myCustomValue, and myCustomEditor properties, as well as the visibility parameter.

    It will NOT, however, inherit the specified properties, including the id, instanceOf, and position properties, as well as the respawnTime parameter.

    This means that the second object in the above snippet will be equivalent to the following object:

    {\n  \"id\": \"{38285a58-9969-4c5f-a649-b91440962a71}\",\n  \"parentId\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n  \"type\": \"Ring\",\n  \"instanceOf\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n  \"position\": [ 0.0, 2.0, 0.0 ],\n  \"parameters\": {\n    \"visibility\": \"Visible\",\n    \"respawnTime\": 0.5\n  },\n  \"myCustomValue\": 893.5,\n  \"myCustomEditor\": {\n    \"presetPlacementType\": \"LINE\",\n    \"presetPlacementDistance\": 1.0\n  }\n}\n

    As you can see, this is a simple, yet powerful system that allows for many possibilities.

    Note

    UUIDs have a special exception; they never get inherited from the instanced object.

    For example:

    {\n  \"id\": \"{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}\",\n  \"type\": \"Ring\"\n},\n{\n  \"instanceOf\": \"{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}\"\n}\n

    The second object listed in the above example will inherit all properties from the first object, except for the id.

    This is due to the fact that every valid object must have its own unique UUID.

    "},{"location":"docs/general/hson/#35-type","title":"3.5. type","text":"

    Info

    This value is REQUIRED to be present, unless this object is an instance of another object, in which case, it is optional, as the type will just be taken from the instanced object.

    The type of the object (e.g. \"Spring\", \"Ring\", etc.).

    Note that this value is not game-specific and can be set to anything, with one exception: it is not valid for type to be an empty string.

    "},{"location":"docs/general/hson/#36-position","title":"3.6. position","text":"

    Info

    The position of the object within 3D space. Represented as a three-dimensional array of numbers, representing a vector3 using Y-Up right-handed coordinates (X-right, Y-up, and Z-backwards), and meters as its units.

    If this object is a child of another object, this position value is local to the transform of the parent object (which is local to the transform of its parent, and so on).

    Otherwise, this position value is global.

    If this property is not specified, the value [ 0.0, 0.0, 0.0 ] will be used as a fallback.

    "},{"location":"docs/general/hson/#37-rotation","title":"3.7. rotation","text":"

    Info

    The rotation of the object within 3D space. Represented as a four-dimensional array of numbers, representing a quaternion using Y-up right-handed coordinates.

    If this object is a child of another object, this rotation value is local to the transform of the parent object (which is local to the transform of its parent, and so on).

    Otherwise, this rotation value is global.

    If this property is not specified, the value [ 0.0, 0.0, 0.0, 1.0 ] will be used as a fallback.

    Note

    Rotation values must be represented as a four-dimensional array representing a quaternion.

    It is not valid to represent rotation values using other methods, such as by using three-dimensional arrays representing euler angles or binary angle measurement (BAMS).

    When dealing with formats that utilize these (or other) methods, tooling must convert to/from quaternions as necessary.

    "},{"location":"docs/general/hson/#38-scale","title":"3.8. scale","text":"

    Info

    The scale of the object within 3D space. Represented as a three-dimensional array of numbers, representing a vector3 using Y-up right-handed coordinates (X-right, Y-up, and Z-backwards), and meters as its units.

    If this object is a child of another object, this scale value is local to the transform of the parent object (which is local to the transform of its parent, and so on).

    Otherwise, this scale value is global.

    If this property is not specified, the value [ 1.0, 1.0, 1.0 ] will be used as a fallback.

    "},{"location":"docs/general/hson/#39-iseditorvisible","title":"3.9. isEditorVisible","text":"

    Info

    Whether the object should be visible in the editor's 3D display (as applicable). Note that this is purely for editors, and has no effect on whether the object is visible in-game.

    When converting from HSON to game-specific file(s), tooling should ignore this value.

    If this property is not specified, the value true will be used as a fallback.

    "},{"location":"docs/general/hson/#310-isexcluded","title":"3.10. isExcluded","text":"

    Info

    Whether the object should be excluded from game data.

    If specified as true, editors should (as applicable) hide the object from 3D display, but still show it in the object hierarchy as a disabled object, and provide a mechanism for users to un-exclude it.

    When converting from HSON to a game format, tooling should treat excluded objects as if they do not exist, by simply not writing them to the resulting game-specific file(s).

    If this property is not specified, the value false will be used as a fallback.

    "},{"location":"docs/general/hson/#311-parameters","title":"3.11. parameters","text":"

    Info

    All named parameters specific to this object type and/or game. For example, the firstSpeed parameter for objects of the Spring type in Sonic Frontiers, which specifies the speed the object will launch the player off with.

    This is the place to put all parameters that are specific to objects of the specified type. It's also a great place to put game-specific parameters, such as object visibility ranges.

    Any number of properties of any JSON type are allowed here, all of which are always entirely optional.

    Tooling should treat this as an arbitrary list of key-value pairs, and provide some mechanism that allows the user to modify ALL of them as they please. It does not, however, have to provide a mechanism to add, remove, or edit the type of these parameters, as this may be undesirable depending on your use-case.

    Tooling should not require any of these parameters to be present. When converting, tooling should, instead, lookup each parameter by its name as needed, and either error-out or fallback to a default value if a required parameter is not present.

    Important

    Note that the following are not allowed to be used as parameter names:

    Info

    The \"no forward slash\" rule allows tooling to access parameters by \"path\", like so:

    \"parameters\": {\n  \"tags\": {\n    \"RangeSpawning\": {\n      \"rangeIn\": 100.0,\n      \"rangeOut\": 20.0\n    }\n  }\n}\n

    "},{"location":"docs/general/hson/#custom-properties","title":"Custom Properties","text":"

    In addition to all of the standard properties listed in the above specification, it is also completely valid to have your own custom properties which are not part of the specification, as demonstrated with the myCustomEditor and myCustomValue properties shown in the example file.

    If you use custom properties, it's highly recommended to place them in a property named after your tooling, as demonstrated with the myCustomEditor properties in the example.

    \"myCustomEditor\": {\n  \"presetPlacementType\": \"LINE\",\n  \"presetPlacementDistance\": 1.0\n}\n

    Doing this helps to reduce potential name collisions with custom properties from other tools, which might end up sharing the same name(s).

    If your custom property is intended to be used across multiple tools (e.g. an unofficial \"extension\" to the HSON format), then it's recommended to ignore the above advice and just use the custom property directly instead, as demonstrated with the myCustomValue property in the example.

    \"myCustomValue\": 893.5,\n

    Important

    Note that the following are not allowed to be used as custom property names:

    Info

    The \"no forward slash\" rule allows tooling to access custom properties by \"path\", like so:

    \"myCustomEditor\": {\n  \"presetPlacementType\": \"LINE\",\n  \"presetPlacementDistance\": 1.0\n}\n

    "},{"location":"docs/hedgehog-engine/gamelist/","title":"Game List","text":""},{"location":"docs/hedgehog-engine/gamelist/#hedgehog-engine","title":"Hedgehog Engine","text":"Game Name Internal Name Sonic Unleashed (Sonic World Adventure) SWA Sonic Colors sonic2010 Sonic Generations BlueBlur Sonic Lost World sonic2013 Sonic Colors: Ultimate* Rainbow

    * Sonic Colors: Ultimate also makes use of a forked version of Godot 3.

    "},{"location":"docs/hedgehog-engine/gamelist/#hedgehog-engine-2","title":"Hedgehog Engine 2","text":"Game Name Internal Name Mario & Sonic at the Rio 2016 Olympic Games unison Sonic Forces wars Olympic Games Tokyo 2020 - The Official Video Game musashi Mario & Sonic at the Tokyo 2020 Olympic Games rings (New) Sakura Wars arukas Puyo Puyo Tetris 2 tenpex Sonic Origins* hite Sonic Frontiers rangers Sonic Frontiers: Digital Art Book with Mini Digital Soundtrack rangers_artbook Sonic Origins Plus* hiteplus Sonic Superstars - Digital Artbook and mini-OST orion_artbook SONIC X SHADOW GENERATIONS** miller

    * Sonic Origins (Plus) also makes use of Retro Engine v5U.

    ** SONIC X SHADOW GENERATIONS also makes use of the Hedgehog Engine.

    "},{"location":"docs/hedgehog-engine/blueblur/levels/ids/","title":"Level ID Map","text":""},{"location":"docs/hedgehog-engine/blueblur/levels/ids/#mapping","title":"Mapping","text":"

    Stage IDs are defined like this:

    {stage_short_name}{stage_type}\n

    Example

    cte200 -> City Escape Modern

    cte100 -> City Escape Classic

    cte101 -> City Escape Classic Mission 1

    "},{"location":"docs/hedgehog-engine/blueblur/levels/ids/#levels","title":"Levels","text":"Level Short Name Level Name Location ghz Green Hill disk/bb cpz Chemical Plant disk/bb ssz Sky Sanctuary disk/bb sph Speed Highway disk/bb cte City Escape disk/bb ssh Seaside Hill disk/bb2 csc Crisis City disk/bb2 euc Rooftop Run disk/bb2 pla Planet Wisp disk/bb2 cnz Casino Night Zone disk/bb2 Level Type ID Level Type 100 Classic Sonic Stage 200 Modern Sonic Stage 10x Classic Sonic Mission 20x Modern Sonic Mission

    Note

    There's some missions which have their own terrain, and missions which are using original level's terrain.

    So, for first type of missions, you have mission's own terrain and # file in the root of the CPK. For the second type of missions, you have original level's terrain and # file in the root of the CPK.

    Example: mission ghz103 has its own terrain, ghz101 and ghz102 doesn't have it, so they're using terrain from ghz100.

    "},{"location":"docs/hedgehog-engine/blueblur/levels/ids/#bosses","title":"Bosses","text":"Boss ID Boss Name Location bms Metal Sonic disk/bb2 bde Death Egg Robot disk/bb bsd Shadow disk/bb2 bpc Perfect Chaos disk/bb bsl Silver disk/bb2 bne Egg Dragoon disk/bb blb Time Eater disk/bb"},{"location":"docs/hedgehog-engine/blueblur/levels/ids/#hub-worlds","title":"HUB Worlds","text":"HUB ID HUB Name Location fig000 Statue Room disk/bb2 pam000 Full White World disk/bb2 pam001 White World before completing Green Hill disk/bb2"},{"location":"docs/hedgehog-engine/rangers/dlc/ids/","title":"DLC ID Map","text":"DLC Name Internal Name ID Steam App ID Adventurer's Treasure Box dlcrsv 0 2079300 Explorer's Treasure Box dlcddx 1 2079301 Monster Hunter Collaboration Pack dlcmhr 2 2089730 Sonic Emote (Koco) dlcslr 3 N/A Inugami Korone Collaboration DLC \"Gloves & Shoes\" dlcholoA 4 N/A Inugami Korone Collaboration DLC \"SE: Inugami Korone\" dlcholoB 5 N/A Inugami Korone Collaboration DLC \"Koronesuki\" dlcholoC 6 N/A Sonic Adventure 2 Shoes dlccrm 7 2089840 Holiday Cheer Suit dlcxmas 8 2089733"},{"location":"docs/hedgehog-engine/rangers/enemies/guardians/names/","title":"Guardian Internal Names","text":"

    This list identifies what each of the guardians are referred to within the game executable and its filesystem.

    Name Internal Name Asura Ashura Caterpillar Charger Fortress Warship Ghost Tracker Ninja Blade Shark Skier Spider Spider Squid Flyer Strider Strider Sumo Sumo Tank Tyrant Tower Daruma"},{"location":"docs/hedgehog-engine/rangers/events/ids/","title":"Event ID Map","text":"

    Warning

    This mapping is still a work in progress! Any additions and updates are greatly appreciated!

    Event ID Event Description bo1120 sonic turns super against giganto bo1140 giganto second phase start bo1160 sonic murders giganto bo1180 sonic dies in giganto fight (run out of rings) chl1060 open zone timer mission chl1090 open zone timer mission chl1090 open zone timer mission chl1130 open zone timer mission chl1170 open zone timer mission chl1200 open zone timer mission ev0020 Prerecorded opening scene (Sonic and friends arrive to the Starfall Islands). Needs the level \"ui_gamemodeopening\" to be loaded to not crash. ga1010 sonic entering cyberspace for the first time ga1011 sonic returns from cyberspace ga1012 different version of ga1010 ga1013 different version of ga1011 ga1014 sonic re-enters cyberspace ga1016 sonic activates a fishing portal ga1017 sonic returns from a fishing portal ga1020 blue emerald vault now unlocked ga1021 cyan emerald vault now unlocked ga1022 green emerald vault now unlocked ga1023 purple emerald vault now unlocked ga1024 red emerald vault now unlocked ga1025 white emerald vault now unlocked ga1026 yellow emerald vault now unlocked ga1030 different version of ga1020 ga1031 different version of ga1021 ga1032 different version of ga1022 ga1033 different version of ga1023 ga1034 different version of ga1024 ga1035 different version of ga1025 ga1036 different version of ga1026 ga1040 vault key get ga1050 sonic opens blue emerald vault ga1051 sonic opens cyan emerald vault ga1052 sonic opens green emerald vault ga1053 sonic opens purple emerald vault ga1054 sonic opens red emerald vault ga1055 sonic opens white emerald vault ga1056 sonic opens yellow emerald vault ga1111 different version of ga1011 ga1113 different version of ga1011 ga1120 sonic takes the blue emerald ga1121 sonic takes the cyan emerald ga1122 sonic takes the green emerald ga1123 sonic takes the purple emerald ga1124 sonic takes the red emerald ga1125 sonic takes the white emerald ga1126 sonic takes the yellow emerald ga1130 faster version of ga1120 ga1131 faster version of ga1121 ga1132 faster version of ga1122 ga1133 faster version of ga1123 ga1134 faster version of ga1124 ga1135 faster version of ga1125 ga1136 faster version of ga1126 ga1205 tutorial bridge ga1210 bridge opens in ouranos (part of old kronos) ga1220 open the waterfall ga1225 pre-giganto ga1410 tutorial island enemies spawn in house ga1620 starfall event but on ouranos/rhea?"},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/","title":"RFL Binary Template Map","text":"

    Warning

    This list is still a work in progress! Any additions and updates are greatly appreciated!

    This list defines which binary templates to use specific RFL files, as well as what that file contains.

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#ambsoundparameter","title":"AmbSoundParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#arcadedata","title":"ArcadeData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_1","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_1","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bakeboxparameter","title":"BakeBoxParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_2","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_2","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bakecameraparameter","title":"BakeCameraParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_3","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_3","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bakecameraparameterdata","title":"BakeCameraParameterData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_4","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_4","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bgminfoparameter","title":"BGMInfoParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_5","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_5","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossbitconfig","title":"BossBitConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_6","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_6","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bosscommonparameters","title":"BossCommonParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_7","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_7","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossdragonconfig","title":"BossDragonConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_8","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_8","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossgiantconfig","title":"BossGiantConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_9","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_9","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossknightconfig","title":"BossKnightConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_10","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_10","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossrifleconfig","title":"BossRifleConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_11","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_11","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossriflethresholdringsupplyparam","title":"BossRifleThresholdRingSupplyParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_12","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_12","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossstatusparameterbase","title":"BossStatusParameterBase","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_13","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_13","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bosstheendconfig","title":"BossTheEndConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_14","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_14","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bulletpatternsetparameters","title":"BulletPatternSetParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_15","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_15","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#camerashaketable","title":"CameraShakeTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_16","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_16","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#captionparameter","title":"CaptionParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_17","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_17","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#contentparameter","title":"ContentParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_18","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_18","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#decoconfigparam","title":"DecoConfigParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_19","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_19","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#decotechparams","title":"DecoTechParams","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_20","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_20","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#devconfigparameters","title":"DevConfigParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_21","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_21","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#dlcmhrbarbecueparameter","title":"DLCMhrBarbecueParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_22","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_22","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#dlcparameter","title":"DLCParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_23","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_23","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#effectrecordbasetable","title":"EffectRecordBaseTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_24","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_24","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#effectrecordtable","title":"EffectRecordTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_25","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_25","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#electriclineparameter","title":"ElectricLineParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_26","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_26","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyaquaballconfig","title":"EnemyAquaballConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_27","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_27","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyattackrecordbasetable","title":"EnemyAttackRecordBaseTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_28","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_28","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyattackrecordtable","title":"EnemyAttackRecordTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_29","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_29","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemybirdconfig","title":"EnemyBirdConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_30","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_30","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemybommerconfig","title":"EnemyBommerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_31","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_31","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemybubbleconfig","title":"EnemyBubbleConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_32","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_32","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemydefencerecordbasetable","title":"EnemyDefenceRecordBaseTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_33","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_33","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemydefencerecordtable","title":"EnemyDefenceRecordTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_34","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_34","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemydefenderconfig","title":"EnemyDefenderConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_35","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_35","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyeggroboconfig","title":"EnemyEggRoboConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_36","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_36","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyhelicopterconfig","title":"EnemyHelicopterConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_37","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_37","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyjellymanconfig","title":"EnemyJellymanConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_38","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_38","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyjumperconfig","title":"EnemyJumperConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_39","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_39","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyjumpersubconfig","title":"EnemyJumperSubConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_40","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_40","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemylaserconfig","title":"EnemyLaserConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_41","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_41","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyrobberconfig","title":"EnemyRobberConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_42","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_42","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemysniperconfig","title":"EnemySniperConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_43","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_43","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemytwisterconfig","title":"EnemyTwisterConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_44","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_44","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyumbrellaconfig","title":"EnemyUmbrellaConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_45","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_45","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemywolfconfig","title":"EnemyWolfConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_46","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_46","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#extremeconfig","title":"ExtremeConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_47","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_47","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fishingparameter","title":"FishingParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_48","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_48","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxcloudshadowparameter","title":"FxCloudShadowParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_49","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_49","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxdensitywindparameter","title":"FxDensityWindParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_50","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_50","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxdirectionalradialblurparameter","title":"FxDirectionalRadialBlurParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_51","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_51","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxfogparameter","title":"FxFogParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_52","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_52","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxfxaaparameter","title":"FxFXAAParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_53","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_53","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxheightmapparameter","title":"FxHeightMapParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_54","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_54","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxplanarprojectionshadowparameter","title":"FxPlanarProjectionShadowParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_55","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_55","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxsmaaparameter","title":"FxSMAAParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_56","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_56","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gamedata","title":"GameData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_57","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_57","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gameexpparameter","title":"GameExpParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_58","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_58","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gamegrassinteractionparameter","title":"GameGrassInteractionParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_59","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_59","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gamegrindlodparameter","title":"GameGrindLodParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_60","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_60","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gamehitstopparameter","title":"GameHitStopParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_61","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_61","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gameskillparameter","title":"GameSkillParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_62","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_62","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gimmickcamerasimpleparam","title":"GimmickCameraSimpleParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_63","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_63","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gismoconfigdesigndata","title":"GismoConfigDesignData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_64","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_64","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gismoconfigplandata","title":"GismoConfigPlanData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_65","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_65","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#graphicsparameters","title":"GraphicsParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_66","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_66","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#hackingenemyparameters","title":"HackingEnemyParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_67","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_67","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#heightfieldconfig","title":"HeightFieldConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_68","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_68","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#islandparameter","title":"IslandParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_69","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_69","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#meteorshowerparameter","title":"MeteorShowerParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_70","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_70","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossashuraconfig","title":"MiniBossAshuraConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_71","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_71","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossbladeconfig","title":"MiniBossBladeConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_72","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_72","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosschargerattackparam","title":"MiniBossChargerAttackParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_73","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_73","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosschargercamerashake","title":"MiniBossChargerCameraShake","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_74","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_74","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosschargerconfig","title":"MiniBossChargerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_75","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_75","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossdarumaconfig","title":"MiniBossDarumaConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_76","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_76","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossflyerconfig","title":"MiniBossFlyerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_77","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_77","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossskierconfig","title":"MiniBossSkierConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_78","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_78","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossspiderconfig","title":"MiniBossSpiderConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_79","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_79","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossstriderconfig","title":"MiniBossStriderConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_80","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_80","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosssumoconfig","title":"MiniBossSumoConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_81","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_81","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosstrackerconfig","title":"MiniBossTrackerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_82","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_82","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosstyrantconfig","title":"MiniBossTyrantConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_83","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_83","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosswarshipconfig","title":"MiniBossWarshipConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_84","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_84","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#monologueparameters","title":"MonologueParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_85","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_85","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#navmeshparameter","title":"NavMeshParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_86","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_86","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#needlefxscenedata","title":"NeedleFxSceneData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_87","title":"Filename Format","text":"

    {stagename}.rfl

    Example

    w1r03.rfl

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_87","title":"Usage","text":"

    Controls the stage's scene data

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#noisepresetparameters","title":"NoisePresetParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_88","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_88","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#obj3dpuzzleblockconfig","title":"Obj3DPuzzleBlockConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_89","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_89","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objbattingmachineconfig","title":"ObjBattingMachineConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_90","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_90","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objbirdlaserconfig","title":"ObjBirdLaserConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_91","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_91","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objbossringsupplyconfig","title":"ObjBossRingSupplyConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_92","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_92","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objcggconfig","title":"ObjCGGConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_93","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_93","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objeffectdebrisparameters","title":"ObjEffectDebrisParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_94","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_94","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objhackingplayermachineconfig","title":"ObjHackingPlayerMachineConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_95","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_95","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objhoverstoneconfig","title":"ObjHoverStoneConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_96","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_96","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objkodamaescortparameter","title":"ObjKodamaEscortParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_97","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_97","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objkodamaquestparameter","title":"ObjKodamaQuestParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_98","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_98","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objlasermirrorconfig","title":"ObjLaserMirrorConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_99","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_99","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objmowingparameter","title":"ObjMowingParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_100","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_100","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objnormalfloorconfig","title":"ObjNormalFloorConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_101","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_101","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objquestboxparameter","title":"ObjQuestBoxParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_102","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_102","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objrotatablestatueconfig","title":"ObjRotatableStatueConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_103","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_103","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objrotatabletombstoneconfig","title":"ObjRotatableTombStoneConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_104","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_104","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objshotguntouchparam","title":"ObjShotGunTouchParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_105","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_105","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objskiermissileconfig","title":"ObjSkierMissileConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_106","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_106","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objstriderbulletconfig","title":"ObjStriderBulletConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_107","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_107","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objstridergrindrailconfig","title":"ObjStriderGrindRailConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_108","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_108","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objstriderlaserconfig","title":"ObjStriderLaserConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_109","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_109","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objsumopoleconfig","title":"ObjSumoPoleConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_110","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_110","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objsumopuckconfig","title":"ObjSumoPuckConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_111","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_111","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objtheendplayermachineconfig","title":"ObjTheEndPlayerMachineConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_112","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_112","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objtimeballconfig","title":"ObjTimeBallConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_113","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_113","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objwarshipdashringconfig","title":"ObjWarshipDashRingConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_114","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_114","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objwolfmanagerconfig","title":"ObjWolfManagerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_115","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_115","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#occlusioncapsulelist","title":"OcclusionCapsuleList","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_116","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_116","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#offmeshlinkparameter","title":"OffMeshLinkParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_117","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_117","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#optiondata","title":"OptionData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_118","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_118","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playercamerasetparameters","title":"PlayerCameraSetParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_119","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_119","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparamaerialfinish","title":"PlayerParamAerialFinish","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_120","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_120","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparambehindfinish","title":"PlayerParamBehindFinish","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_121","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_121","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparameters","title":"PlayerParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_122","title":"Filename Format","text":"

    player_common.rfl

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_122","title":"Usage","text":"

    Controls Sonic's physics and other player parameters, including the cyloop colour for example.

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparamlowaltitudejump","title":"PlayerParamLowAltitudeJump","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_123","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_123","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparampursuitfinish","title":"PlayerParamPursuitFinish","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_124","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_124","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparamstompingfinish","title":"PlayerParamStompingFinish","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_125","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_125","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playstats","title":"PlayStats","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_126","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_126","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#practiceparameters","title":"PracticeParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_127","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_127","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#questcollectitemparameter","title":"QuestCollectItemParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_128","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_128","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#questdarumabattleparameter","title":"QuestDarumaBattleParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_129","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_129","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#questdrawbridgeparameter","title":"QuestDrawBridgeParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_130","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_130","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#questmowingparameter","title":"QuestMowingParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_131","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_131","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#recorddata","title":"RecordData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_132","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_132","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#reflexespanelparam","title":"ReflexesPanelParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_133","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_133","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#scriptparameter","title":"ScriptParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_134","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_134","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#seedparameter","title":"SeedParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_135","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_135","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#sequenceparameter","title":"SequenceParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_136","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_136","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#soundcommonparameter","title":"SoundCommonParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_137","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_137","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#standardcameraconfig","title":"StandardCameraConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_138","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_138","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#statsdatacontainer","title":"StatsDataContainer","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_139","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_139","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#swayparamindivisual","title":"SwayParamIndivisual","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_140","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_140","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#talkeventcamerapresetparameters","title":"TalkEventCameraPresetParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_141","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_141","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#timeserviceparam","title":"TimeServiceParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_142","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_142","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#tornadoringparameter","title":"TornadoRingParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_143","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_143","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#uicreditparameter","title":"UICreditParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_144","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_144","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#uifishiguideconfig","title":"UIFishiGuideConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_145","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_145","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#uimapparameter","title":"UIMapParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_146","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_146","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#uiwireframeparameter","title":"UIWireframeParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_147","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_147","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#viewspaceoffsetrflparam","title":"ViewSpaceOffsetRflParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_148","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_148","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#volumesize","title":"VolumeSize","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_149","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_149","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#wolfvolumesize","title":"WolfVolumeSize","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_150","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_150","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/levels/ids/","title":"Level ID Map","text":""},{"location":"docs/hedgehog-engine/rangers/levels/ids/#mapping","title":"Mapping","text":"

    Stage IDs are defined like this:

    {world_id}{stage_type}{stage_number}\n

    Example

    w2r01 -> Ares Open Zone 1

    "},{"location":"docs/hedgehog-engine/rangers/levels/ids/#worlds-zones","title":"Worlds (Zones)","text":"World ID World Name w1 Kronos w2 Ares w3 Chaos w5 The End w6 Green Hill w7 Chemical Plant w8 Sky Sanctuary w9 Highway"},{"location":"docs/hedgehog-engine/rangers/levels/ids/#stage-type","title":"Stage Type","text":"Stage Type ID Stage Type r Open Zone d Cyber Space f Fishing (always w1) h Hacking (always w1)"},{"location":"docs/hedgehog-engine/rangers/levels/ids/#stages-cyberspace","title":"Stages (Cyberspace)","text":"Stage Name Level ID 1-1 w6d01 1-2 w8d01 1-3 w9d04 1-4 w6d02 1-5 w7d04 1-6 w6d06 1-7 w9d06 2-1 w6d05 2-2 w8d03 2-3 w7d02 2-4 w7d06 2-5 w8d04 2-6 w6d03 2-7 w8d05 3-1 w6d04 3-2 w6d08 3-3 w8d02 3-4 w6d09 3-5 w6d07 3-6 w8d06 3-7 w7d03 4-1 w7d08 4-2 w9d02 4-3 w7d01 4-4 w9d03 4-5 w6d10 4-6 w7d07 4-7 w9d05 4-8 w7d05 4-9 w9d07"},{"location":"docs/hedgehog-engine/rangers/levels/ids/#oddities","title":"Oddities","text":"

    Due to Ouranos and Rhea actually being part of Kronos, their map files are stored in w1:

    There are also various versions of Kronos in the game files (not present in the PC release), those being:

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/","title":"Functions","text":"

    Warning

    This list is still a work in progress! Any additions and updates are greatly appreciated!

    Functions are listed below in the following format:

    Function(arguments, ...) : returnType\n

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#achivementunlockstring-number","title":"\ud83d\uddd2\ufe0f AchivementUnlock(string, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description","title":"Description","text":"

    Unlocks an achievement.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitycompletenumber-unknown","title":"\ud83d\uddd2\ufe0f ActivityComplete(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_1","title":"Description","text":"

    This function has no callback function.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_1","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitystartnumber-unknown","title":"\ud83d\uddd2\ufe0f ActivityStart(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_2","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_2","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_1","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitytaskcompletenumber-number-unknown","title":"\ud83d\uddd2\ufe0f ActivityTaskComplete(number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_3","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_3","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_2","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitytaskend-unknown","title":"\ud83d\uddd2\ufe0f ActivityTaskEnd() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_4","title":"Description","text":"

    This function is unused and has no callback function.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_4","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_3","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitytaskstartnumber-number-unknown","title":"\ud83d\uddd2\ufe0f ActivityTaskStart(number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_5","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_5","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_4","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#addpracticenotifierpermissiondenystring-unknown","title":"\ud83d\uddd2\ufe0f AddPracticeNotifierPermissionDeny(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_6","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_6","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_5","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#autosavestring","title":"\ud83d\uddd2\ufe0f AutoSave(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_7","title":"Description","text":"

    Saves the current game data into the autosave slot.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_7","title":"Parameters","text":" Mode Description forceimmediate The most common and seemingly default save mode. immediate Unknown..."},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#begintalkmodestring-unknown","title":"\ud83d\uddd2\ufe0f BeginTalkMode(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_8","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_8","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_6","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changeeventcamerastring","title":"\ud83d\uddd2\ufe0f ChangeEventCamera(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_9","title":"Description","text":"

    Change to an event camera.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_9","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changemotionstring","title":"\ud83d\uddd2\ufe0f ChangeMotion(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_10","title":"Description","text":"

    Changes animations for dialogue events.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_10","title":"Parameters","text":" Name happy no rod take talk talk_start think yes"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changeplayeraniminholdstring-number-yield","title":"\ud83d\uddd2\ufe0f ChangePlayerAnimInHold(string, number) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_11","title":"Description","text":"

    Plays an animation from an *.asm file using the friendly (upper-case) name when the player is frozen using HoldPlayer().

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_11","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changeplayermotionstring-number-yield","title":"\ud83d\uddd2\ufe0f ChangePlayerMotion(string, number) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_12","title":"Description","text":"

    Plays an animation from an *.asm file using the friendly (upper-case) name where available.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_12","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changesavepermissionstring","title":"\ud83d\uddd2\ufe0f ChangeSavePermission(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_13","title":"Description","text":"

    Toggles whether the player has permission to save.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_13","title":"Parameters","text":" State allow deny"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changeweathernumber-string","title":"\ud83d\uddd2\ufe0f ChangeWeather(number, string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_14","title":"Description","text":"

    Changes the current weather.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_14","title":"Parameters","text":" Name Cloudy Rainy SandStorm Sunny"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearisland","title":"\ud83d\uddd2\ufe0f ClearIsland()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_15","title":"Description","text":"

    Sets the cleared state of the current island and proceeds to the next.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearobjecttarget-unknown","title":"\ud83d\uddd2\ufe0f ClearObjectTarget() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_16","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_15","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_7","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearpracticenotifier-yield","title":"\ud83d\uddd2\ufe0f ClearPracticeNotifier() : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_17","title":"Description","text":"

    Clears the Training Simulator notification on the top-right of the heads-up display.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearquesttarget-unknown","title":"\ud83d\uddd2\ufe0f ClearQuestTarget() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_18","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_16","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_8","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#cleartutorialuiboolean-unknown","title":"\ud83d\uddd2\ufe0f ClearTutorialUI(boolean) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_19","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_17","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_9","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearuserguidui-yield","title":"\ud83d\uddd2\ufe0f ClearUserGuidUI() : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_20","title":"Description","text":"

    Clears an input guide.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#debugprint-number","title":"\ud83d\uddd2\ufe0f DebugPrint() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_21","title":"Description","text":"

    This function is unused and has a stripped callback function.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_18","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_10","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#deletepracticenotifierpermissiondenystring-unknown","title":"\ud83d\uddd2\ufe0f DeletePracticeNotifierPermissionDeny(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_22","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_19","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_11","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#endletterboxui-unknown","title":"\ud83d\uddd2\ufe0f EndLetterBoxUI() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_23","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_20","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_12","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#endtalkmode-unknown","title":"\ud83d\uddd2\ufe0f EndTalkMode() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_24","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_21","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_13","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#endtimegimmick-unknown","title":"\ud83d\uddd2\ufe0f EndTimeGimmick() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_25","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_22","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_14","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#exit","title":"\ud83d\uddd2\ufe0f Exit()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_26","title":"Description","text":"

    Ends the current script sequence.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#fadeinnumber","title":"\ud83d\uddd2\ufe0f FadeIn(number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_27","title":"Description","text":"

    Fades the screen into gameplay from black within the specified duration.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_23","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#fadeoutnumber-string-yield","title":"\ud83d\uddd2\ufe0f FadeOut(number, string) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_28","title":"Description","text":"

    Fades the screen out within the specified duration.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_24","title":"Parameters","text":" Colours black (default) white"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getblock-number","title":"\ud83d\uddd2\ufe0f GetBlock() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_29","title":"Description","text":"

    Gets the current internal block ID for Lua conditions within update functions.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_15","title":"Return Value","text":"

    The current block ID.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getchaosemeraldstring-unknown","title":"\ud83d\uddd2\ufe0f GetChaosEmerald(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_30","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_25","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_16","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getchaosemeraldnum-number","title":"\ud83d\uddd2\ufe0f GetChaosEmeraldNum() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_31","title":"Description","text":"

    Gets the total number of Chaos Emeralds.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_17","title":"Return Value","text":"

    The total number of Chaos Emeralds.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getcleartowernum-unknown","title":"\ud83d\uddd2\ufe0f GetClearTowerNum() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_32","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_26","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_18","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getdebugflagstring-number","title":"\ud83d\uddd2\ufe0f GetDebugFlag(string) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_33","title":"Description","text":"

    Gets the value of any flag Sonic Team wants to check within Lua scripts.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_27","title":"Parameters","text":" Name isTutorialEnable"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_19","title":"Return Value","text":"

    The value of the requested flag.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getguardlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetGuardLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_34","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_28","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_20","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#gethackingaliveenemynum-unknown","title":"\ud83d\uddd2\ufe0f GetHackingAliveEnemyNum() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_35","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_29","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_21","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#gethackingcurrentwaveid-unknown","title":"\ud83d\uddd2\ufe0f GetHackingCurrentWaveId() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_36","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_30","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_22","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#gethaschaosemeraldnum-number","title":"\ud83d\uddd2\ufe0f GetHasChaosEmeraldNum() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_37","title":"Description","text":"

    Gets the total number of currently obtained Chaos Emeralds.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_23","title":"Return Value","text":"

    The total number of currently obtained Chaos Emeralds.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getmaxguardlevel-number","title":"\ud83d\uddd2\ufe0f GetMaxGuardLevel() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_38","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_31","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_24","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getmaxpowerlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetMaxPowerLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_39","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_32","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_25","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getmaxringlevel-number","title":"\ud83d\uddd2\ufe0f GetMaxRingLevel() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_40","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_33","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_26","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getmaxspeedlevel-number","title":"\ud83d\uddd2\ufe0f GetMaxSpeedLevel() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_41","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_34","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_27","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getminigamequestprogressstring-unknown","title":"\ud83d\uddd2\ufe0f GetMinigameQuestProgress(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_42","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_35","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_28","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getobjstatusstring-number-number-boolean","title":"\ud83d\uddd2\ufe0f GetObjStatus(string, number, number) : boolean","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_43","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_36","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_29","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getpinballstatusstring-unknown","title":"\ud83d\uddd2\ufe0f GetPinballStatus(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_44","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_37","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_30","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getplayeriteminfostring-number","title":"\ud83d\uddd2\ufe0f GetPlayerItemInfo(string) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_45","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_38","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_31","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getplayerstatusstring-number","title":"\ud83d\uddd2\ufe0f GetPlayerStatus(string) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_46","title":"Description","text":"

    Returns the value of status flags for the player.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_39","title":"Parameters","text":" Name Description Hold Checks if the player is frozen via HoldPlayer() OnGround Checks if the player is grounded"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_32","title":"Return Value","text":"

    A 0/1 number representing the requested state.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getpowerlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetPowerLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_47","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_40","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_33","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getpoweruprequiredkodamanum-unknown","title":"\ud83d\uddd2\ufe0f GetPowerupRequiredKodamaNum() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_48","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_41","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_34","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getringlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetRingLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_49","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_42","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_35","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getselectresultnumber-number","title":"\ud83d\uddd2\ufe0f GetSelectResult(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_50","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_43","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_36","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getspeedlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetSpeedLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_51","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_44","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_37","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getvaluestring-number-number","title":"\ud83d\uddd2\ufe0f GetValue(string, number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_52","title":"Description","text":"

    Get the value of a flag based on the flag name and flag number.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_45","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_38","title":"Return Value","text":"

    The value of the requested flag.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#giantorbreleasetemporarilyreset-unknown","title":"\ud83d\uddd2\ufe0f GiantOrbReleaseTemporarilyReset() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_53","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_46","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_39","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#giantorbtemporarilyreset-unknown","title":"\ud83d\uddd2\ufe0f GiantOrbTemporarilyReset() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_54","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_47","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_40","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#gotocyberstagestring-yield","title":"\ud83d\uddd2\ufe0f GoToCyberStage(string) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_55","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_48","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#hideobjectineventstring","title":"\ud83d\uddd2\ufe0f HideObjectInEvent(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_56","title":"Description","text":"

    Hides the specified object during an event.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_49","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#holdplayer","title":"\ud83d\uddd2\ufe0f HoldPlayer()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_57","title":"Description","text":"

    Disables player movement.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isavailablekodamaelderlvup-boolean","title":"\ud83d\uddd2\ufe0f IsAvailableKodamaElderLvUp() : boolean","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_58","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_50","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_41","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#ishackingcurrentwaveidinrangenumber-number-unknown","title":"\ud83d\uddd2\ufe0f IsHackingCurrentWaveIdInRange(number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_59","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_51","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_42","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isinscreenviewstring-number-number-boolean","title":"\ud83d\uddd2\ufe0f IsInScreenView(string, number, number) : boolean","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_60","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_52","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_43","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isloadinglevel-number","title":"\ud83d\uddd2\ufe0f IsLoadingLevel() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_61","title":"Description","text":"

    Returns whether a level is actively being loaded via the LoadLevel() function for pausing the script until it's finished.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_44","title":"Return Value","text":"

    A 0/1 number representing if a level is being loaded.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isplayingdieventstring-number","title":"\ud83d\uddd2\ufe0f IsPlayingDiEvent(string) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_62","title":"Description","text":"

    Returns whether the specified event is currently playing.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_53","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_45","title":"Return Value","text":"

    A 0/1 number representing if the specified event is currently playing.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isplayingdieventall-number","title":"\ud83d\uddd2\ufe0f IsPlayingDiEventAll() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_63","title":"Description","text":"

    Returns whether any event is playing.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_46","title":"Return Value","text":"

    A 0/1 number representing if any event is playing.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isplayingquest-unknown","title":"\ud83d\uddd2\ufe0f IsPlayingQuest() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_64","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_54","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_47","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#killpinballobjects-unknown","title":"\ud83d\uddd2\ufe0f KillPinballObjects() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_65","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_55","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_48","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#loaddieventstring-unknown","title":"\ud83d\uddd2\ufe0f LoadDiEvent(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_66","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_56","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_49","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#loaddieventfrozenstring-unknown","title":"\ud83d\uddd2\ufe0f LoadDiEventFrozen(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_67","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_57","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_50","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#loadlevelstring-unknown","title":"\ud83d\uddd2\ufe0f LoadLevel(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_68","title":"Description","text":"

    Loads an archive (*.pac) using its respective *.level file.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_58","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#makeelectriclinestring-unknown","title":"\ud83d\uddd2\ufe0f MakeElectricLine(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_69","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_59","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_51","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#movedplayerstring-unknown","title":"\ud83d\uddd2\ufe0f MovedPlayer(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_70","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_60","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_52","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#nextblocknumber-unknown","title":"\ud83d\uddd2\ufe0f NextBlock(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_71","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_61","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_53","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#nextsequencenumber","title":"\ud83d\uddd2\ufe0f NextSequence(number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_72","title":"Description","text":"

    Exits the current script sequence and loads the next one via the input ID.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_62","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#notifyactionstring-string","title":"\ud83d\uddd2\ufe0f NotifyAction(string, string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_73","title":"Description","text":"

    Sends a message to the specified object in the *.gedit files. Typically used to turn camera volumes on or off.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_63","title":"Parameters","text":" Name Description on Activates the object. off Deactivates the object. start Unknown..."},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playdieventstring-unknown","title":"\ud83d\uddd2\ufe0f PlayDiEvent(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_74","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_64","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_54","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playdieventfrozenstring-unknown","title":"\ud83d\uddd2\ufe0f PlayDiEventFrozen(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_75","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_65","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_55","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playergetitemstring-number","title":"\ud83d\uddd2\ufe0f PlayerGetItem(string, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_76","title":"Description","text":"

    Gives the player a specific number of specific items.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_66","title":"Parameters","text":" Name Ring ExpPoint"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playernonoperation-yield","title":"\ud83d\uddd2\ufe0f PlayerNonOperation() : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_77","title":"Description","text":"

    Disables player movement.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playvoicestring-unknown","title":"\ud83d\uddd2\ufe0f PlayVoice(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_78","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_67","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_56","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#quitminigamequest-unknown","title":"\ud83d\uddd2\ufe0f QuitMinigameQuest() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_79","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_68","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_57","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#releaseholdplayer","title":"\ud83d\uddd2\ufe0f ReleaseHoldPlayer()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_80","title":"Description","text":"

    Enables player movement.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#releasepresentskillstring-unknown","title":"\ud83d\uddd2\ufe0f ReleasePresentSkill(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_81","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_69","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_58","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#resetcamera","title":"\ud83d\uddd2\ufe0f ResetCamera()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_82","title":"Description","text":"

    Restores the player-operated camera.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#resetmenudisabledminigamequest-unknown","title":"\ud83d\uddd2\ufe0f ResetMenuDisabledMinigameQuest() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_83","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_70","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_59","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#resetpinball-unknown","title":"\ud83d\uddd2\ufe0f ResetPinball() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_84","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_71","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_60","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#resetweathernumber-unknown","title":"\ud83d\uddd2\ufe0f ResetWeather(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_85","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_72","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_61","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#save-yield","title":"\ud83d\uddd2\ufe0f Save() : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_86","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_73","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setbossknightlayerenabledboolean-unknown","title":"\ud83d\uddd2\ufe0f SetBossKnightLayerEnabled(boolean) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_87","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_74","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_62","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#sethackingbulletpatternglobalveltimesnumber-unknown","title":"\ud83d\uddd2\ufe0f SetHackingBulletPatternGlobalVelTimes(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_88","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_75","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_63","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#sethackingbulletpatternvelrangenumber-number-unknown","title":"\ud83d\uddd2\ufe0f SetHackingBulletPatternVelRange(number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_89","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_76","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_64","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#sethudenabledstring-boolean","title":"\ud83d\uddd2\ufe0f SetHUDEnabled(string, boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_90","title":"Description","text":"

    Toggles whether certain menus are available to the player.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_77","title":"Parameters","text":" Name Description MainMenu Toggles access to the pause menu. MapMenu Toggles access to the map screen. "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setlayerenabledstring-boolean","title":"\ud83d\uddd2\ufe0f SetLayerEnabled(string, boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_91","title":"Description","text":"

    Toggles whether an object layout layer is visible.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_78","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setlayerenabledineventstring-boolean","title":"\ud83d\uddd2\ufe0f SetLayerEnabledInEvent(string, boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_92","title":"Description","text":"

    Toggles whether an object layout layer is visible during an event.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_79","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setlookatnumber-number-number","title":"\ud83d\uddd2\ufe0f SetLookAt(number, number, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_93","title":"Description","text":"

    Forces the camera to always look towards the specified position.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_80","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setmenudisabledminigamequeststring-unknown","title":"\ud83d\uddd2\ufe0f SetMenuDisabledMinigameQuest(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_94","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_81","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_65","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setobjstatusstring-number-number-unknown","title":"\ud83d\uddd2\ufe0f SetObjStatus(string, number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_95","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_82","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_66","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setplayerabilityenabledstring-boolean","title":"\ud83d\uddd2\ufe0f SetPlayerAbilityEnabled(string, boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_96","title":"Description","text":"

    Toggles whether the specified ability can be used by the player.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_83","title":"Parameters","text":" Name Description Boost Toggles the ability to boost. ComboAttack Toggles the ability to perform combo attacks. ControlCamera Toggles the ability to move the camera. Cyloop Toggles the ability to perform Cyloop. HomingAttack Toggles the ability to homing attack. Jump Toggles the ability to jump. Lockon Toggles the ability to lock onto enemies. Parry Toggles the ability to parry. WallAction Toggles the ability to climb walls. "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#settimenumber-number","title":"\ud83d\uddd2\ufe0f SetTime(number, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_97","title":"Description","text":"

    Sets the current time.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_84","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#settimepauseboolean","title":"\ud83d\uddd2\ufe0f SetTimePause(boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_98","title":"Description","text":"

    Toggles the passage of time.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_85","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setvaluestring-number-number","title":"\ud83d\uddd2\ufe0f SetValue(string, number, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_99","title":"Description","text":"

    Sets a value for the specified flag.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_86","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setvisiblekodamastring","title":"\ud83d\uddd2\ufe0f SetVisibleKodama(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_100","title":"Description","text":"

    This function does not work.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_87","title":"Parameters","text":" States hide show"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#shootbulletpatternstring","title":"\ud83d\uddd2\ufe0f ShootBulletPattern(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_101","title":"Description","text":"

    Shoots a pre-defined pattern of bullets for the Hacking minigame.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_88","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showheaderwindowuistring-string","title":"\ud83d\uddd2\ufe0f ShowHeaderWindowUI(string, string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_102","title":"Description","text":"

    Displays a dialog using a caption and body entry from a *.cnvrs-text file.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_89","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showobjecttargetstring-unknown","title":"\ud83d\uddd2\ufe0f ShowObjectTarget(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_103","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_90","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_67","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showpracticenotifiernumber-number-number-unknown","title":"\ud83d\uddd2\ufe0f ShowPracticeNotifier(number, number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_104","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_91","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_68","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showquesttargetstring-unknown","title":"\ud83d\uddd2\ufe0f ShowQuestTarget(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_105","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_92","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_69","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showrobbertargetui-unknown","title":"\ud83d\uddd2\ufe0f ShowRobberTargetUI() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_106","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_93","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_70","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showselectboxstring-string-string-string-unknown","title":"\ud83d\uddd2\ufe0f ShowSelectBox(string, string, string, string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_107","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_94","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_71","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showselectboxnowaitvoicestring-string-string-string-string-unknown","title":"\ud83d\uddd2\ufe0f ShowSelectBoxNoWaitVoice(string, string, string, string, string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_108","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_95","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_72","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showsequenceuistring","title":"\ud83d\uddd2\ufe0f ShowSequenceUI(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_109","title":"Description","text":"

    Displays a menu depending on the current sequence.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_96","title":"Parameters","text":" Name Description MainMenu Unknown... MainMenu_ForTutorial Displays the pause menu for highlighting the Cyloop skill. MapMenu Unknown... PauseMenu Unknown..."},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showtalkcaptionstring","title":"\ud83d\uddd2\ufe0f ShowTalkCaption(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_110","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_97","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showtalkcaptionoverfadestring-yield","title":"\ud83d\uddd2\ufe0f ShowTalkCaptionOverFade(string) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_111","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_98","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_73","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showtoastuistring-unknown","title":"\ud83d\uddd2\ufe0f ShowToastUI(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_112","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_99","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_74","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showtutorialuistring-string-unknown","title":"\ud83d\uddd2\ufe0f ShowTutorialUI(string, string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_113","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_100","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_75","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showuserguiduistring","title":"\ud83d\uddd2\ufe0f ShowUserGuidUI(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_114","title":"Description","text":"

    Displays an input guide for the specified control method.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_101","title":"Parameters","text":"

    Notice

    Only three of these are actually used, as Sonic Team moved to using internal methods for displaying these guides, rather than using Lua.

    Some names are unknown as they use string hashes that have no source yet.

    Name Internal ID Description CameraControl 0 Displays a graphic for the right stick with the text \"Camera\". Unknown... 1 Displays a quad direction graphic with no text. Jump (unused) 2 Displays a graphic for the A button with no text. Boost (unused) 3 Displays a graphic for the right trigger with no text. HomingAttack 4 Displays a graphic for the X button with the text \"Homing Attack\". Lockon (unused) 5 Displays a graphic for the right stick button with the text \"Lock On\". Cyloop (unused) 6 Displays a graphic for the Y button with the text \"Cyloop (while moving)\". CyloopBattle 7 Displays a graphic for the Y button with the text \"Cyloop (while moving)\". Unknown... 8 Displays a graphic for the left bumper with no text. WallRun (unused) 9 Displays two graphics, one with a quad direction graphic with the text \"Climb\", and another with a graphic for the right trigger with the text \"Wall Run (while climbing)\". Boarding (unused) 10 Displays two graphics, one with a quad direction graphic with the text \"Climb\", and another with a graphic for the A button with no text. Unknown... 11 Displays two graphics, one with a left/right direction graphic with no text, and another with a graphic for the left trigger with no text. Diving (unused) 12 Displays a graphic for the right trigger with no text. Unknown... 13 Displays two graphics, one with a quad direction graphic with the text \"Move the target\", and another with a graphic for the A button with the text \"Cast the line\". Unknown... 14 Displays a graphic for the B button with the text \"Quit\". Unknown... 15 Displays a graphic for the A button with the text \"Reel it in\". Unknown... 16 Displays a graphic for the A button with the text \"Hook the fish\". Unknown... 17 Displays a graphic for the A button with no text. Unknown... 18 Displays a graphic for the A button with no text. Unknown... 19 Displays a graphic for the X button with the text \"Place cannonball\". Unknown... 20 Displays a graphic for the X button with the text \"Load cannon\"."},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showyesnowindowuistring-string-yield","title":"\ud83d\uddd2\ufe0f ShowYesNoWindowUI(string, string) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_115","title":"Description","text":"

    Displays a Yes/No dialog using a caption and body entry from a *.cnvrs-text file.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_102","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#spawnhackingenemystring-unknown","title":"\ud83d\uddd2\ufe0f SpawnHackingEnemy(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_116","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_103","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_76","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#spawnpinballobjects-unknown","title":"\ud83d\uddd2\ufe0f SpawnPinballObjects() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_117","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_104","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_77","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#spawnpinballobjectsafterclearing-unknown","title":"\ud83d\uddd2\ufe0f SpawnPinballObjectsAfterClearing() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_118","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_105","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_78","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startclearcheck-unknown","title":"\ud83d\uddd2\ufe0f StartClearCheck() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_119","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_106","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_79","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startletterboxui-unknown","title":"\ud83d\uddd2\ufe0f StartLetterBoxUI() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_120","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_107","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_80","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startminigamequeststring-unknown","title":"\ud83d\uddd2\ufe0f StartMinigameQuest(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_121","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_108","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_81","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startpinball-unknown","title":"\ud83d\uddd2\ufe0f StartPinball() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_122","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_109","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_82","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#starttimegimmick-unknown","title":"\ud83d\uddd2\ufe0f StartTimeGimmick() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_123","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_110","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_83","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startupgimmickinfo-unknown","title":"\ud83d\uddd2\ufe0f StartupGimmickInfo() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_124","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_111","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_84","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startwaitminigamequest-unknown","title":"\ud83d\uddd2\ufe0f StartWaitMinigameQuest() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_125","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_112","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_85","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#unloaddievent-unknown","title":"\ud83d\uddd2\ufe0f UnloadDiEvent() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_126","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_113","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_86","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#unloadlevel-unknown","title":"\ud83d\uddd2\ufe0f UnloadLevel() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_127","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_114","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_87","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#waitfromchaosemeraldnum-unknown","title":"\ud83d\uddd2\ufe0f WaitFromChaosEmeraldNum() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_128","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_115","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_88","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#waitfromflag-unknown","title":"\ud83d\uddd2\ufe0f WaitFromFlag() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_129","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_116","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_89","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#waittimenumber","title":"\ud83d\uddd2\ufe0f WaitTime(number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_130","title":"Description","text":"

    Waits for a specified amount of time (in seconds).

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_117","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/sonic2010/files/lightfield/","title":"Light Field","text":"

    Light fields are invisible pieces of geometry utilized by Sonic Colors to tint the color of Sonic, and the world around him, as he runs through the stage. Sadly this mechanic is mostly broken in Sonic Colors: Ultimate, but the files still remain.

    "},{"location":"docs/hedgehog-engine/sonic2010/files/lightfield/#light-field-format","title":"Light Field Format","text":"

    Light field data is stored in \"stgxxx_lfield.orc\" BINA containers, which can be found in \"stgxxx_obj.arc\" archives for a given stage. In the original Wii release, the data is stored in big-endian format.

    The format for these files is as follows:

    class LightFieldData {\n    uint signature = 1380730451; // \"RLFS\" ASCII in big-endian.\n    uint version = 1; // Always \"1\".\n    uint lfArrayHierarchyDepth; // The depth count of the Light Field object array hierarchy.\n    uint lfArrayCount; // The number of entries in the Light Field object array.\n    uint lfArrayOffset; // The non-absolute offset to the Light Field object array.\n    uint lfAabbTreeCount; // The number of entries in the Light Field AABB (Axis Aligned Bounding Box) tree.\n    uint lfAabbTreeOffset; // The non-absolute offset to the Light Field AABB tree.\n    LightFieldObject[lfArrayCount] lfObjectArray;\n    LightFieldAABBTreeNode[lfAabbTreeCount] lfAabbTree;\n}\n\nenum LightFieldObjectType : uint8 {\n    SPHERE = 0,\n    CAPSULE = 1,\n    BOX = 2,\n    OMNIBOX = 3\n}\n\nclass LightFieldObject {\n    uint nameOffset; // The non-absolute offset to the object name in the BINA string table.\n    int index; // The index of the Light Field object, to be referenced in \"stgxxx_config.lua\" files.\n    LightFieldObjectType type; // The type of the Light Field object.\n    uint8 padding1; // Padding to pad out the type field to 2 bytes.\n    uint16 childrenAABBTreeEntryIndex; // The index to the bounding box of this node's children in the Light Field AABB tree. 0 if the object node has no children.\n    float[5] scale; // The scale of the Light Field object. Data format varies depending on the LightFieldObjectType (see below for more information).\n    float[3] position; // The position of the Light Field object in 3D space.\n    float[4] rotation; // The rotation of the Light Field object in 3D space.\n}\n\nclass LightFieldAABBTreeNode {\n    int leftNodeIndex; // Index to the left node in the Light Field AABB tree.\n    int rightNodeIndex; // Index to the right node in the Light Field AABB tree. If leftNodeIndex is 0, this field serves as an index back into the Light Field object array.\n    float[3] bBoxMin; // The minimum bounding box vertex position in 3D space.\n    float[3] bBoxMax; // The maximum bounding box vertex position in 3D space.\n}\n
    "},{"location":"docs/hedgehog-engine/sonic2010/files/lightfield/#light-field-object-scale","title":"Light Field Object Scale","text":"

    The contents of the \"scale\" float array in a LightFieldObject varies depending on the type specified in the LightFieldObjectType field.

    Type Layout Sphere radius, margin, 0.0, 0.0, 0.0 Capsule radius, height, margin, 0.0, 0.0 Box length, width, height, margin1, margin2 Omnibox length, width, height, margin, 0.0"},{"location":"docs/hedgehog-engine/sonic2010/files/lightfield/#lightfieldconv-xml-layout","title":"LightFieldConv XML Layout","text":"

    LightFieldConv was a tool used by Sonic Team to convert light field XML data into \"binarc\" .src files, in preparation for packing the data into a BINA container. The following example XML data can be used to generate an .src file, similar to that which would have been used to create \"stg901_lfield.orc\" for the test level discovered in Sonic Colors: Ultimate:

    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Sonic2010LField version=\"1.0.0\">\n    <scene>\n        <lfield_array>        \n            <node id=\"LFieldBox_01\">\n                <lfield type=\"box\">\n                    <index>2</index>\n                    <box>\n                        <length>80.0</length>\n                        <width>80.0</width>\n                        <height>80.0</height>\n                        <margin1>10.0</margin1>\n                        <margin2>10.0</margin2>\n                    </box>\n                    <bbox>\n                        <min>-40.0 -20.0 -40.0</min>\n                        <max>40.0 60.0 40.0</max>\n                    </bbox>\n                </lfield>\n                <translate>0.0 20.0 -40.0</translate>\n                <rotate>0.707107 0.0 0.0 0.707107</rotate>\n            </node>\n\n            <node id=\"LFieldCapsule_01\">\n                <lfield type=\"capsule\">\n                    <index>3</index>\n                    <capsule>\n                        <radius>30.0</radius>\n                        <height>100.0</height>\n                        <margin>5.0</margin>\n                    </capsule>\n                    <bbox>\n                        <min>25.550200 -30.0 -139.162003</min>\n                        <max>156.261002 30.0 -8.451360</max>\n                    </bbox>\n                </lfield>\n                <translate>90.905502 79.9999 -73.806702</translate>\n                <rotate>0.923880 0.0 -0.382683 -0.000001</rotate>\n            </node>\n\n            <node id=\"LFieldSphere_01\">\n                <lfield type=\"sphere\">\n                    <index>4</index>\n                    <sphere>\n                        <radius>40.0</radius>\n                        <margin>10.0</margin>\n                    </sphere>\n                    <bbox>\n                        <min>-126.564003 -40.0 42.505001</min>\n                        <max>-46.564201 40.0 122.504997</max>\n                    </bbox>\n                </lfield>\n                <translate>-86.564201 0.0 82.504997</translate>\n                <rotate>0.0 0.0 0.0 1.0</rotate>\n            </node>\n\n            <node id=\"LFieldOmniBox_01\">\n                <lfield type=\"omnibox\">\n                    <index>5</index>\n                    <omnibox>\n                        <length>40.0</length>\n                        <width>40.0</width>\n                        <height>40.0</height>\n                        <margin1>10.0</margin1>\n                        <margin2>0.0</margin2>\n                    </omnibox>\n                    <bbox>\n                        <min>60.0 -40.0 40.0</min>\n                        <max>140.0 40.0 120.0</max>\n                    </bbox>\n                </lfield>\n                <translate>100.0 0.0 80.0</translate>\n                <rotate>0.0 0.0 0.0 1.0</rotate>\n            </node>\n        </lfield_array>\n    </scene>\n</Sonic2010LField>\n
    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/","title":"Set Object","text":"

    The Set Object file format is used in Sonic Colors in order to define stage object layout, serving the same purpose as \"Set\" and \"setdata\" XML files in Sonic Unleashed and Sonic Generations respectively. However, unlike in those games, this data is actually stored in binary format for greater efficiency, with the same practice being carried forward in all future titles by Sonic Team.

    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/#set-object-format","title":"Set Object Format","text":"

    Set object data is stored in \"stgxxx_obj_xx.orc\" BINA containers, which can be found in \"set\" folder in \"sonic2010_0.cpk\". The objects themselves are arranged into 8 \"layers\" for each stage, separated into files with suffixes from 00 to 07 in the \"set\" folder. In the original Wii release, the data is stored in big-endian format.

    class SetObjectData {\n    uint signature = 1397703242; // \"SOBJ\" ASCII in big-endian.\n    uint version = 1; // Always \"1\".\n    uint objectDictCount; // The number of unique object types.\n    uint objectDictOffset; // The non-absolute offset to the object dictionary array.\n    uint bvhTreeOffset; // The non-absolute offset to the bounding volume hierarchy tree. This is unused in Colors.\n    uint objectOffsetArrayOffset; // The non-absolute offset to the array of offsets to all the objects stored in the file.\n    uint objectCount; // The number of objects stored in the file.\n    uint bvhTreeNodeCount; // The number of nodes in the bounding volume hierarchy tree.\n    uint objectInstanceCount; // The total number of object instances in the object instance array.\n\n    SetObjectDictNode[objectDictCount] objectDictArray; // The dictionary of object types;\n    SetObjectIndicesArrayNode[objectDictCount] objectIndicesArray; // An array of nodes, that each store indices to objects in the object array, grouped by object type.\n    uint[objectCount] objectOffsetArray; // An array of offsets to all of the objects stored in the file, indexed into by SetObjectIndicesArrayNode entries.\n    SetObject[objectCount] objectArray; // The \"array\" of objects. The term \"array\" is used loosely here as the objects are not fixed size, due to the custom parameters that can be defined for them.\n    SetObjectInstance[objectInstanceCount] objectInstanceArray; // The array of object instances.\n}\n\n// One node for every object type in the SOBJ file.\nclass SetObjectDictNode {\n    uint objectTypeNameOffset; // The non-absolute offset to the object type name in the BINA string table.\n    uint objectIndicesCount; // The number of indices in the object indices array that are of the corresponding type.\n    uint objectIndicesOffset; // The non-absolute offset to the array of object indices for the corresponding type.\n}\n\n// One node for every object type in the SOBJ file.\nclass SetObjectIndicesArrayNode {\n    uint[objectIndicesCount] objectIndices; // An array of indices of all the objects of the corresponding type in the object indices array.\n}\n\nenum ReplicationAlignment : uint8 {\n    NONE = 0,\n    GROUND = 1,\n    GUIDE = 2,\n    GRIND = 3,\n    SV = 4, // Side View\n    CIRCLE = 5\n}\n\n// setcvtr actually treats these enum values as 4 bit uints, with each padded out with a second 4 bit uint to the length of a uint8. For clarity this is documented as a uint8.\nenum ReplicationLayout : uint8 {\n    FRONT = 0x00,\n    SIDE = 0x10,\n    UP = 0x20\n}\n\n// Set objects can be thought of as templates for object instances. Here common parameters can be defined for later use by multiple instances of the same object.\n\nclass SetObject {\n    uint replicationObjectIDComposite; // Composite field of object replication parameters (ReplicationAlignment + ReplicationLayout) and the object ID (uint16), stored as a single uint.\n    uint classId; // The unique ID assigned to the object class in the SetEdClass XML file.\n    uint unknownOffset1 = 0; // Unknown offset, hardcoded to null in setcvtr. Likely intended to be an offset to a node in the unused bvh tree.\n    float interval; // The interval between replicated objects.\n    float rangeIn; // The distance from Sonic where the object should become visible.\n    float rangeOut; // The distance from Sonic where the object should disappear.\n    uint objectInstanceArrayOffset; // The non-absolute offset to the object instance array.\n    uint objectInstanceArrayCount; // The number of instances in the instance array.\n    uint unknownInt = 0; // Unknown uint, hardcoded to 0 in setcvtr.\n\n    // ... Object-specific parameters, defined in SetEdClass XML \"<class>\" entries.\n\n}\n\n// Object instances, or \"units\" as they are referred to in Sonic Team's \"setcvtr\" development tool, are instances of SetObject templates that are described above. By using this system of separating object units from objects themselves, clusters of objects can be defined in a level with the same parameters, with minimal repitition.\n\nclass SetObjectInstance {\n    float[3] position; // The position of the object instance in 3D space.\n    float[3] rotation; // The rotation of the object instance in 3D space.\n}\n
    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/#setcvtr-xml-layouts","title":"setcvtr XML Layouts","text":"

    \"setcvtr\" was a tool used by Sonic Team with the purpose of converting set data XML files into binarc \".src\" files, in preparation for packing data into BINA containers. This allowed the team to define objects in XML format to make development and testing easier. The tool takes two XML files as input, which are explained below.

    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/#setedclass-xml-layout","title":"SetEdClass XML Layout","text":"

    The \"SetEdClass\" XML layout is used to define the various types of objects, and their respective parameters, that can be utilized within stages. The following XML demonstrates how a SetEdClass XML can be defined, alongside object classes and parameters:

    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SetEdClass>\n    <class name=\"DummyObjectClass1\" crc=\"1\">\n        <param_desc_array>\n            <param_desc name=\"boolParam\" type=\"bool\" />\n\n            <param_desc name=\"sint8Param\" type=\"sint8\" default=\"1\" />\n            <param_desc name=\"sint16Param\" type=\"sint16\" />\n            <param_desc name=\"sint32Param\" type=\"sint32\" />\n\n            <param_desc name=\"uint8Param\" type=\"uint8\" />\n            <param_desc name=\"uint16Param\" type=\"uint16\" />\n            <param_desc name=\"uint32Param\" type=\"uint32\" />\n\n            <!--\n                Accepts normal integers, but doesn't appear to take hex input correctly.\n            -->\n            <param_desc name=\"uint32HexParam\" type=\"uint32_hex\" />\n\n            <param_desc name=\"floatParam\" type=\"float\" />\n\n            <!--\n                Arrays are not fixed size at the class level, count is declared when the parameter is used in the SetObject XML.\n            -->\n            <param_desc name=\"sint32ArrayParam\" type=\"array_sint32\" />\n            <param_desc name=\"floatArrayParam\" type=\"array_float\" />\n        </param_desc_array>\n    </class>\n\n    <class name=\"DummyObjectClass2\" crc=\"2\">\n        <param_desc_array>\n            <param_desc name=\"enumParam\" type=\"enum\" default=\"test2\">\n                <!--\n                    When used in the SetObject XML, numbers can be also used in place of item names.\n                -->\n                <item name=\"enum1\" caption=\"Enum 1 Description\" />\n                <item name=\"enum2\" caption=\"Enum 2 Description\" />\n                <item name=\"enum3\" caption=\"Enum 3 Description\" />\n            </param_desc>\n\n            <param_desc name=\"bitsetParam\" type=\"bitset\">\n                <field name=\"bit1\" pos=\"0\" />\n                <field name=\"bit2\" pos=\"1\" />\n                <field name=\"bit3\" pos=\"2\" />\n                <field name=\"bit4\" pos=\"3\" />\n            </param_desc>\n\n            <!--\n                Valid parameter type, but doesn't appear to function correctly - causes setcvtr to fail on declaration.\n            -->\n            <!-- <param_desc name=\"stringParam\" type=\"string\" /> -->\n\n            <param_desc name=\"positionParam\" type=\"position\" />\n\n            <param_desc name=\"targetParam\" type=\"target\" />\n\n        </param_desc_array>\n    </class>\n</SetEdClass>\n
    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/#setobject-xml-layout","title":"SetObject XML Layout","text":"

    The \"SetObject\" XML layout is used to define objects, and their respective \"units\", that should be placed within a stage. The following XML demonstrates how a SetObject XML can be defined, utilizing objects from the SetEdClass in the previous example and defining the parameters:

    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SetObject>\n    <object id=\"1\" class=\"DummyObjectClass1\" range_in=\"100\" range_out=\"120\">\n        <param_array>\n            <param name=\"boolParam\">true</param>\n\n            <param name=\"sint8Param\">5</param>\n            <param name=\"sint16Param\">10</param>\n            <param name=\"sint32Param\">15</param>\n\n            <param name=\"uint8Param\">20</param>\n            <param name=\"uint16Param\">25</param>\n            <param name=\"uint32Param\">30</param>\n\n            <param name=\"uint32HexParam\">100</param>\n\n            <param name=\"floatParam\">1.5</param>\n\n            <param name=\"sint32ArrayParam\" count=\"5\">1 2 3 4 5</param>\n            <param name=\"floatArrayParam\" count=\"3\">1 2 3</param>\n        </param_array>\n\n        <unit_array interval=\"0\" alignment=\"none\" layout=\"front\">\n            <unit position=\"10 10 10\" rotation=\"0.0 0.0 0.0\"/>\n            <unit position=\"30 30 30\" rotation=\"0.0 0.0 0.0\"/>\n            <unit position=\"50 50 50\" rotation=\"0.0 0.0 0.0\"/>\n        </unit_array>\n    </object>\n\n    <object id=\"2\" class=\"DummyObjectClass2\" range_in=\"110\" range_out=\"130\">\n        <param_array>\n            <!--\n                Bits are set to true by defining them in the parameter. If a bit is omitted, it's set to false.\n            -->\n            <param name=\"bitsetParam\">\n                <bit name=\"bit1\" />\n                <bit name=\"bit2\" />\n                <bit name=\"bit4\" />\n            </param>\n\n            <param name=\"enumParam\">enum2</param>\n\n            <!-- <param name=\"stringParam\">demostring</param> -->\n\n            <param name=\"positionParam\">10 20 30</param>\n\n            <param name=\"targetParam\">1</param>\n        </param_array>\n        <unit_array interval=\"1\" alignment=\"circle\" layout=\"side\">\n            <unit position=\"5 5 5\" rotation=\"0.707107 0.0 0.0\"/>\n            <unit position=\"25 25 25\" rotation=\"0.923880 0.0 -0.382683\"/>\n        </unit_array>\n    </object>\n</SetObject>\n
    "},{"location":"docs/hedgehog-engine/swa/cutscenes/ids/","title":"Cutscene IDs for Sonic Unleashed","text":"

    Info

    Thanks to Archxe and Hedgeturdd for writing these documents!

    Here's a list with all the cutscenes and their respective archive names in Sonic Unleashed.

    Cutscene Name Cutscene ID Opening M0_01_05 A New Journey M0_06 Special Sundae M1_01 The First Night M1_02 Tails in Trouble! M1_03_1 To Spagonia! M1_03_2 Kidnapped M2_01 Same As Ever M2_02 Gaia Manuscripts M2_03 Eggman Again M3_01 The Egg Beetle M3_02 Temple Activated! M3_03 Planet Pieces M3_04 Tails' Report M3_05 Eggman's Idea M4_01 Guiding Pulse M5_01 The Dark Gaia Project M5_02 Chip's Change M6_01 Chip's Memories M6_02 No Reason M6_03 Eggmanland M7_01 The Final Temple M7_02 The 7th Continent M7_03 Congratulations M7_04 Pickle's Message M8_01 The Egg Dragoon M8_02 Planet's End M8_03 Dark Gaia Appears M8_04 Shrines in Flight M8_05 Hour of Awakening M8_06_1 Let's Finish This! M8_06_2 Speading Darkness M8_07 Dark World M8_08 Hope and Despair M8_09 The Final Form M8_10 Darkness and Light M8_11_1 Annihilation M8_11_2 A Score Settled M8_11_3 Rekindled Light M8_12 Begin Anew M8_13 Save the Speech M8_14 To the Surface M8_15 Always M8_16 The Divine Beast S1_03 The Key S1_04 Chun-Nan Temple S1_05 Back to Normal S1_06 Amy's Mistake S2_01 Midnight Dance S2_03 Rescuing Amy S2_04 A Monster on Ice S3_03 Holoskan Temple S3_04 Spagonian Temple T0_01 Shamaran Temple T0_02 Charge! T0_03 Temple Entrance T0_04 Sonic and Chip (in Chun-nan) CHN Sonic and Chip (in Adabat) SEA Sonic and Chip (in Holoska) SNW_gooON"},{"location":"docs/hedgehog-engine/swa/levels/ids/","title":"Level IDs for Sonic Unleashed","text":"

    Info

    Thanks to Archxe and Hedgeturdd for writing these documents!

    "},{"location":"docs/hedgehog-engine/swa/levels/ids/#mapping","title":"Mapping","text":"

    Level IDs are defined like this:

    Act{Day/Night}_{region}Act{stage_number}\nor\nAct{Day/Night}_{sub}{region}_{substage_number}\n

    Note

    Not all stages follow this format, exceptions include:

    ActD_EU -> Rooftop Run Day 1

    ActD_SubMykonos_01 -> Windmill Isle Day Act 3

    Here's a list with all the levels and their respective archive names in Sonic Unleashed.

    "},{"location":"docs/hedgehog-engine/swa/levels/ids/#region-names","title":"Region Names","text":"Region Internal Name Apotos/Windmill Isle Mykonos Mazuri/Savannah Citadel Africa Spagonia/Rooftop Run EU Chun-Nan/Dragon Road China Holoska/Cool Edge Snow Shamar/Arid Sands Petra Empire City/Skyscraper Scamper NY Adabat/Jungle Joyride Beach EggmanLand EggManLand"},{"location":"docs/hedgehog-engine/swa/levels/ids/#stages-day","title":"Stages (Day)","text":"Stage Name Level ID Windmill Isle Day Act 1 ActD_MykonosAct1 Windmill Isle Day Act 1-2 ActD_SubMykonos_04 Windmill Isle Day Act 2 ActD_MykonosAct2 Windmill Isle Day Act 2-2 ActD_SubMykonos_05 Windmill Isle Day Act 3 ActD_SubMykonos_01 Windmill Isle Day Act 4 ActD_SubMykonos_02 Savannah Citadel Day Act 1 ActD_Africa Savannah Citadel Day Act 1-2 ActD_SubAfrica_05 Savannah Citadel Day Act 2 ActD_SubAfrica_01 Savannah Citadel Day Act 3 ActD_SubAfrica_03 Savannah Citadel Day Act 3-2 ActD_SubAfrica_06 Savannah Citadel Day Act 4 ActD_SubAfrica_02 Savannah Citadel Day Act 5 ActD_SubAfrica_04 Rooftop Run Day 1 ActD_EU Rooftop Run Day Act 1-2 ActD_SubEU_05 Rooftop Run Day Act 2 ActD_SubEU_01 Rooftop Run Day Act 2-2 ActD_SubEU_06 Rooftop Run Day Act 3 ActD_SubEU_02 Rooftop Run Day Act 4 ActD_SubEU_03 Rooftop Run Day Act 5 ActD_SubEU_04 Tornado Defence Act 1 ExStageTails1 Dragon Road Day Act 1 ActD_China Dragon Road Day Act 1-2 ActD_SubChina_05 Dragon Road Day Act 2 ActD_SubChina_03 Dragon Road Day Act 2-2 ActD_SubChina_06 Dragon Road Day Act 3 ActD_SubChina_04 Dragon Road Day Act 4 ActD_SubChina_01 Dragon Road Day Act 5 ActD_SubChina_02 Cool Edge Day Act 1 ActD_Snow Cool Edge Day Act 1-2 ActD_SubSnow_04 Cool Edge Day Act 2 ActD_SubSnow_01 Cool Edge Day Act 2-2 ActD_SubSnow_05 Cool Edge Day Act 3 ActD_SubSnow_02 Cool Edge Day Act 4 ActD_SubSnow_03 Arid Sands Day Act 1 ActD_Petra Arid Sands Day Act 1-2 ActD_SubPetra_04 Arid Sands Day Act 2 ActD_SubPetra_03 Skyscraper Scamper Day Act 1 ActD_NY Skyscraper Scamper Day Act 1-2 ActD_SubNY_03 Skyscraper Scamper Day Act 2 ActD_SubNY_01 Skyscraper Scamper Day Act 3 ActD_SubNY_02 Jungle Joyride Day Act 1 ActD_Beach Jungle Joyride Day Act 1-2 ActD_SubBeach_05 Jungle Joyride Day Act 2 ActD_SubBeach_02 Jungle Joyride Day Act 3 ActD_SubBeach_04 Jungle Joyride Day Act 4 ActD_SubBeach_01 Jungle Joyride Day Act 5 ActD_SubBeach_03 EggmanLand Act_EggmanLand Tornado Defense Act 2 ExStageTails2"},{"location":"docs/hedgehog-engine/swa/levels/ids/#stages-night","title":"Stages (Night)","text":"Stage Name Level ID Windmill Isle Night Act 1 ActN_MykonosEvil Windmill Isle Night Act 1-2 ActN_SubMykonos_03 Windmill Isle Night Act 1-3 ActN_SubMykonos_04 Windmill Isle Night Act 2 ActN_SubMykonos_01 Savannah Citadel Night Act 1 ActN_AfricaEvil Savannah Citadel Night Act 2 ActN_SubAfrica_01 Savannah Citadel Night Act 3 ActN_SubAfrica_02 Savannah Citadel Night Act 4 ActN_SubAfrica_03 Rooftop Run Night Act 1 ActN_EUEvil Rooftop Run Night Act 1-2 ActN_SubEU_02 Rooftop Run Night Act 2 ActN_SubEU_01 Dragon Road Night Act 1 ActN_ChinaEvil Dragon Road Night Act 1-2 ActN_SubChina_03 Dragon Road Night Act 2 ActN_SubChina_01 Dragon Road Night Act 3 ActN_SubChina_02 Arid Sands Night Act 1 ActN_PetraEvil Arid Sands Night Act 2 ActD_SubPetra_04 Arid Sands Night Act 3 ActD_SubPetra_04 Cool Edge Night Act 1 ActN_SnowEvil Cool Edge Night Act 2 ActN_SubSnow_01 Cool Edge Night Act 3 ActN_SubSnow_02 Skyscraper Scamper Night Act 1 ActN_NYEvil Skyscraper Scamper Night Act 2 ActN_SubNY_02 Skyscraper Scamper Night Act 3 ActN_SubNY_01 Jungle Joyride Night Act 1 ActN_BeachEvil Jungle Joyride Night Act 1-2 ActN_SubBeach_03 Jungle Joyride Night Act 2 ActN_SubBeach_01 Jungle Joyride Night Act 3 ActN_SubBeach_02"},{"location":"docs/hedgehog-engine/swa/levels/ids/#bosses","title":"Bosses","text":"Boss Name Level ID Egg Beetle BossEggBeetle Egg Devil Ray BossEggRayBird Dark Gaia Phoenix BossPhoenix Dark Gaia Moray BossDarkGaiaMoray Dark Guardian BossPetra Egg Lancer BossEggLancer Egg Dragoon BossEggDragoon Dark Gaia - Gaia Colossus Sections BossDarkGaia1_1Air Dark Gaia - Sonic Section 1 BossDarkGaia1_1Run Dark Gaia - Sonic Section 2 BossDarkGaia1_2Run Dark Gaia - Sonic Section 3 BossDarkGaia1_3Run Perfect Dark Gaia BossFinalDarkGaia"},{"location":"docs/hedgehog-engine/swa/towns/ids/","title":"Town IDs for Sonic Unleashed","text":"

    Info

    Thanks to Archxe and Hedgeturdd for writing these documents!

    Here's a list with all the towns and their respective archive names in Sonic Unleashed.

    "},{"location":"docs/hedgehog-engine/swa/towns/ids/#towns-day","title":"Towns (Day)","text":"Town Name Level ID Apotos Day Town Town_Mykonos Apotos Day Entrance Field Town_MykonosETF Mazuri Day Town Town_Africa Mazuri Day Entrance Field Town_AfricaETF Spagonia Day Town Town_EuropeanCity Spagonia Day Entrance Field Town_EuropeanCityETF Spagonia Day Lab Town_EULabo Chun-Nan Day Town Town_China Chun-Nan Day Entrance Field Town_ChinaETF Holoska Day Town Town_Snow Holoska Day Entrance Field Town_SnowETF Shamar Day Town Town_PetraCapital Shamar Day Entrance Field Town_PetraCapitalETF Shamar Day Lab Town_PetraLabo Empire City Day Town Town_NYCity Empire City Day Entrance Field Town_NYCityETF Adabat Day Town Town_SouthEastAsia Adabat Day Entrance Field Town_SouthEastAsiaETF EggmanLand Town Town_EggManBase"},{"location":"docs/hedgehog-engine/swa/towns/ids/#towns-night","title":"Towns (Night)","text":"Town Name Level ID Apotos Night Town Town_Mykonos_Night Apotos Night Entrance Field Town_MykonosETF_Night Mazuri Night Town Town_Africa_Night Mazuri Night Entrance Field Town_AfricaETF_Night Spagonia Night Town Town_EuropeanCity_Night Spagonia Night Entrance Field Town_EuropeanCityETF_Night Spagonia Night Lab Town_EULabo_Night Chun-Nan Night Town Town_China_Night Chun-Nan Night Entrance Field Town_ChinaETF_Night Holoska Night Town Town_Snow_Night Holoska Night Entrance Field Town_SnowETF_Night Shamar Night Town Town_PetraCapital_Night Shamar Night Entrance Field Town_PetraCapitalETF_Night Shamar Night Lab Town_PetraLabo_Night Empire City Night Town Town_NYCity_Night Empire City Night Entrance Field Town_NYCityETF_Night Adabat Night Town Town_SouthEastAsia_Night Adabat Night Entrance Field Town_SouthEastAsiaETF_Night"},{"location":"docs/hedgehog-engine/wars/levels/ids/","title":"Level ID Map","text":""},{"location":"docs/hedgehog-engine/wars/levels/ids/#mapping","title":"Mapping","text":"

    Stage IDs are defined like this:

    {world_id}{stage_type}{character_index}\n

    Example

    w5a01 -> Lost Valley

    "},{"location":"docs/hedgehog-engine/wars/levels/ids/#worlds-zones","title":"Worlds (Zones)","text":"World ID World Name w1 Death Egg w2 Chemical Plant w3 City w4 Mystic Jungle w5 Green Hill w6 Metropolis w7 Eggman Empire Fortress"},{"location":"docs/hedgehog-engine/wars/levels/ids/#stage-type","title":"Stage Type","text":"Stage Type ID Stage Type a Act b Boss d DLC s Credits t Title x Extra"},{"location":"docs/hedgehog-engine/wars/levels/ids/#character-index","title":"Character Index","text":"Character Index Character 01 Modern Sonic 02 Avatar 03 Tag Team 04 Classic Sonic

    Note

    Bosses don't use this value to indicate character, rather as a boss index for the current world (which only comes up in World 7).

    Note

    The Secret and Extra stages don't use this value to indicate character.

    "},{"location":"docs/hedgehog-engine/wars/levels/ids/#main-stages","title":"Main Stages","text":"Stage Name Level ID Lost Valley w5a01 Space Port w2a02 Ghost Town w3a04 Prison Hall w1a02 VS. Zavok w1b01 Egg Gate w1a01 Arsenal Pyramid w5a03 Luminous Forest w4a01 VS. Infinite w4b01 Green Hill w5a04 VS. Eggman w5b01 Park Avenue w3a02 Casino Forest w4a04 Aqua Road w4a02 Sunset Heights w3a01 Capital City w6a02 VS. Infinite w6b01 Chemical Plant w2a04 Red Gate Bridge w3a03 Guardian Rock w5a02 Network Terminal w2a01 Death Egg w1a04 Metropolitan Highway w6a01 Null Space w6a03 Imperial Tower w7a02 Mortar Canyon w7a01 VS. Infinite w7b01 Iron Fortress w7a04 Final Judgement w7a03 VS. Death Egg Robot w7b02"},{"location":"docs/hedgehog-engine/wars/levels/ids/#secret-stages","title":"Secret Stages","text":"Stage Name Level ID Fire Cannon 1 w4x02 Vanish Panel 1 w3x02 Bomb Block 1 w5x03 Plasma Cannon 1 w2x02 Laser Cannon 1 w1x02 Reverse Block 1 w6x02"},{"location":"docs/hedgehog-engine/wars/levels/ids/#extra-stages","title":"Extra Stages","text":"Stage Name Level ID Flying Pod w5x02 Bomb Block 2 w2x01 Laser Cannon 2 w6x01 Reverse Block 2 w5x01 Vanish Panel 2 w4x01 Fire Cannon 2 w3x01 Plasma Cannon 2 w1x01"},{"location":"docs/hedgehog-engine/wars/levels/ids/#episode-shadow-stages","title":"Episode Shadow Stages","text":"Stage Name Level ID Enemy Territory w3d01 Eggman's Facility w4d01 Virtual Reality w5d01"},{"location":"docs/nn/common/chunk-format/","title":"NN Chunk Format","text":"

    Warning

    This page is still a work in progress! Any additions and updates are greatly appreciated!

    Info

    HedgeDocs' initial Sega NN documentation was written by: Radfordhound.

    Thanks to:

    The Sega NN Chunk Format is a generic \"container\" format developed by Sega somewhere around 2002-2004. It originally appeared in 2004's \"Sega Superstars\" (to our knowledge), and has been heavily utilized in many Sega games released since.

    The format is heavily based on the older \"Sega Ninja Chunk Model\" format, which was originally developed for the Sega Dreamcast and was utilized in many Dreamcast games (it was even included as part of the Dreamcast's \"Katana\" SDK).

    While the exact meaning of the \"NN\" in \"Sega NN\" is still currently unknown, given that it is so heavily based off of the older Ninja format, it's almost certainly an acronym for something like \"New Ninja\" or \"Ninja Next\".

    "},{"location":"docs/nn/common/chunk-format/#platforms","title":"Platforms","text":"

    The NN Chunk Format, much like the older Ninja format it's based on, is designed heavily around the specific hardware/software requirements of whatever platform it is intended to be used on.

    Unlike the older Ninja format, however (which only supports one platform: the Sega Dreamcast), the NN Chunk Format is \"multi-platform\", and therefore comes in many different platform-specific variants.

    All known supported platforms are listed in the following chart:

    ID Meaning CC NN Library Version Endianness Alignment Description NX Ninja Xbox x DirectX G1.1 Little 16 Xbox/Xbox 360 NS Ninja Sony s PlayStation 2 Little 16 ? PlayStation 2 NG Ninja Gamecube g GAMECUBE Big 32 Gamecube/Wii NC Ninja Cell c ? PS3 Little ? 16 ? PlayStation 3 NU Ninja Umd ? u/s PSP Little 16 ? PlayStation Portable DS DS ? ? Little 16 ? Nintendo DS/3DS NI Ninja Ios i ? OpenGL ES 1.1 Little 16 ? iOS/Android/Windows Phone NE ? ? DirectX G2.0 on XBOX360 Little ? 16 ? Xbox 360 NY ? ? ? Big 16 ? Xbox 360/PlayStation 3 NZ Ninja [Other] z DirectX G2.0 Little 16 Other platforms, such as PC"},{"location":"docs/nn/common/chunk-format/#data-chunks","title":"Data Chunks","text":"

    As the name implies, files in the NN Chunk Format are comprised of a series of one or more \"data chunks\", one after another.

    A \"data chunk\" is simply a block of data (structs, arrays, strings, etc.) that represents a single resource of a specific type.

    All known data chunk types are listed in the following chart:

    ID CC Type Description TL t TEXLIST A list of textures. EF ? EFFECTLIST A list of effects (shaders). NN a NODENAMELIST A list of names for the nodes (bones) within an object (a model). OB o OBJECT A model. CA ? CAMERA Camera parameters. MO m MOTION (node) A node (bone) animation. MC d MOTION (camera) A camera animation. ML ? MOTION (light) A light animation. MM f MOTION (morph) A morph animation. MA v MOTION (material) A material animation. LI l LIGHT A light.

    Todo

    Add the rest of the data chunk types.

    For more specific information on the format of these data chunk types, please refer to the linked pages in the above chart.

    "},{"location":"docs/nn/common/chunk-format/#file-types","title":"File Types","text":"

    Just like with the older Ninja format, NN chunk files come in two forms:

    Info

    The vast majority of NN chunk files in released games are in binary-form.

    To our knowledge, all released games using NN don't support loading text-form files, meaning that all NN text-form files found in the games are unused developer leftovers!

    File extensions for NN chunk files typically consist of three characters:

    1. The \"CC\" (character-code) of the platform.
    2. n for Binary-Form files, or t for Text-Form files.
    3. The \"CC\" (character-code) of the last data chunk contained within the file.

    Examples

    Extension Meaning .xno Xbox | Binary-Form | OBJECT .gno Gamecube | Binary-Form | OBJECT .xtv Xbox | Text-Form | MOTION (material) .snt Sony | Binary-Form | TEXLIST"},{"location":"docs/nn/common/chunk-format/#binary-form-file-format","title":"Binary-Form File Format","text":"

    Binary-Form NN chunk files are just a series of consecutive \"binary chunks\", each of which begins with the following struct:

    Important

    All instances of this struct (and ONLY this struct) are represented in little-endian, regardless of the endianness specified by the platform. Everything else in Binary-Form NN chunk files is represented in the endianness specified by the platform.

    /*\n    NOTE: A struct type with this name does not actually exist\n    (to my knowledge) in real Sega NN implementations; instead,\n    these fields are just embedded directly within every binary\n    chunk's header struct. This is just an easier way to think\n    about it for our purposes.\n*/\nstruct NNS_BINCNK_HEADER\n{\n  /*\n    The four-character identifier for this binary chunk;\n    specifies what type of binary chunk this is.\n  */\n  uint32_t Id;\n\n  /*\n    The offset to the next four-character identifier in the\n    file, relative to the end of this struct (such that after\n    doing fread(&OfsNextId, sizeof(OfsNextId), 1, file);\n    you can just do fseek(file, OfsNextId, SEEK_CUR)).\n  */\n  uint32_t OfsNextId;\n};\n

    Immediately following this struct comes all of the data (structs, strings, etc.) required to represent the binary chunk. The format of this data depends on the platform and type of binary chunk being represented. Check the Id field to determine this.

    After each binary chunk (including all of its data) has been written, the file is padded (with 0s) to a position that is divisible by the \"alignment\" specified by the platform (usually it's 16, but notably, it's 32 on Gamecube/Wii).

    What follows is documentation for all known binary chunk types, in the order they appear within binary-form NN chunk files.

    "},{"location":"docs/nn/common/chunk-format/#info-chunk","title":"Info Chunk","text":"

    Important

    This chunk is required to be present at the beginning of all binary-form NN chunk files! The Sega NN games I checked actually rely on this behavior, so you can too.

    This binary chunk serves as the header for a binary-form NN chunk file, and contains info needed to parse the file. It is represented as the following struct:

    struct NNS_BINCNK_FILEHEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to \"**IF\", where \"**\" is the \"ID\" of\n    the platform (e.g. \"NGIF\" for \"Ninja Gamecube InFo\").\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /* The number of data chunks in the file. */\n  uint32_t nChunk;\n\n  /* Absolute offset to the first data chunk in the file. */\n  uint32_t OfsData;\n\n  /* The combined size of all of the data chunks in the file, including padding. */\n  uint32_t SizeData;\n\n  /* Absolute offset to the (required) NOF0 binary chunk. */\n  uint32_t OfsNOF0;\n\n  /*\n    Size of the (required) NOF0 binary chunk, including its header.\n    Depending on the variant of the format, this size either includes\n    the padding that comes after the NOF0 binary chunk, or it doesn't.\n\n    (I haven't figured out exactly which versions include padding yet).\n\n    (It seems PSP files and .[x]ncp files don't count the padding,\n    but everything else does?)\n  */\n  uint32_t SizeNOF0;\n\n  /*\n    1 in most files, 0 in some newer variants.\n    (Maybe they just stopped using this value?)\n  */\n  uint32_t Version;\n};\n

    Todo

    Further research NIFL header chunks and add info on those.

    "},{"location":"docs/nn/common/chunk-format/#data-chunk-header","title":"Data Chunk Header","text":"

    After the Info Chunk, comes a sequence of one or more data chunks.

    In binary-form NN chunk files, each data chunk begins with the following struct:

    struct NNS_BINCNK_DATAHEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to the \"ID\" of the platform, followed\n    by the \"ID\" of the data chunk type being written (e.g.\n    \"NXTL\" for \"Ninja Xbox Texture List\").\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /*\n    Offset to the \"main\" (root) struct that makes up this chunk's data\n    (e.g. offset to a NNS_NODENAMELIST if the chunk type indicates\n    that this is a NODENAMELIST data chunk), relative to the\n    position specified by the [OfsData] field from the info chunk.\n  */\n  uint32_t OfsMainData;\n\n  /* Always 0 in every file I've seen thus far. */\n  uint32_t Version;\n};\n

    Immediately following this struct comes all of the data (structs, strings, etc.) required to represent the data chunk. The format of this data depends on the platform and type of data chunk being represented. Check the chunk ID from the ChunkHeader field in the above struct to determine this.

    See the linked pages in the data chunks chart.

    "},{"location":"docs/nn/common/chunk-format/#offsets-list-chunk","title":"Offsets List Chunk","text":"

    Important

    This chunk is required to be present in all binary-form NN chunk files!

    After all of the data chunks, comes the offsets list chunk.

    This binary chunk represents a list of positions for all of the pointers (\"offsets\") in all of the data chunks in the file, relative to the value of the [OfsData] field from the file's info chunk.

    struct NNS_BINCNK_NOF0HEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to \"NOF0\".\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /* The number of pointer positions listed within this chunk. */\n  uint32_t nData;\n\n  /*\n    Padding; always 0 in files.\n\n    Some games use this value as a marker that states whether or not\n    the offsets have been \"fixed\". In those games, after they're done\n    \"fixing\" all of the pointers listed within this chunk, they will set\n    this value to 1 in memory.\n  */\n  uint32_t Pad;\n};\n

    Immediately following this struct comes an array of uint32_t values of size [nData]. These values represent the positions of every pointer in all of the data chunks in the file, relative to the [OfsData] field from the file's info chunk.

    Most Sega NN games use this chunk to quickly \"fix\" all of the pointers within the data chunks (that is, to convert all of the offsets into absolute memory addresses that can then just be used as normal pointers).

    Some games, however, (namely: Sonic 4 Episode I for Windows Phone) ignore the values in this chunk, and instead, just manually add [OfsData] to each offset to get an absolute file position whenever they need to jump there.

    Regardless of whether the data is used or not, it is still required to be present.

    Todo

    Add pseudo-code for \"fixing\" the offsets listed in this chunk.

    "},{"location":"docs/nn/common/chunk-format/#file-name-chunk","title":"File Name Chunk","text":"

    Info

    This chunk is completely optional and seems to only be used for debugging/internal-tooling purposes.

    This chunk simply states the name and extension (without the path) of the file it's contained in.

    struct NNS_BINCNK_NFN0HEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to \"NFN0\".\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /* Padding; always 0 in files. */\n  uint32_t Pad[2];\n};\n

    Immediately following this header comes a null-terminated string which represents the file's name and extension (without its path).

    "},{"location":"docs/nn/common/chunk-format/#end-chunk","title":"End Chunk","text":"

    Important

    This chunk is required to be present as the last chunk in all binary-form NN chunk files!

    This is the last chunk in all binary-form NN chunk files. It exists purely to indicate that there are no more chunks left in the file, so that you know when to stop reading if you're reading the file one chunk at a time.

    struct NNS_BINCNK_NENDHEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to \"NEND\".\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /* Padding; always 0 in files. */\n  uint32_t Pad[2];\n};\n
    "},{"location":"docs/nn/common/chunk-format/#text-form-file-format","title":"Text-Form File Format","text":"

    Just like text-form Ninja chunk model files, text-form NN chunk files are actually C header files designed to be directly #include-able from C or C++ code, allowing developers to literally embed NN data directly into the game's code itself!

    They also, however, are designed to serve as a human-readable variant of binary-form NN chunk files that can be more easily parsed and/or generated by the official Sega NN tooling.

    They accomplish all of this by using only a very strict subset of C in a precise layout, and by heavily utilizing preprocessor defines from other NN library header files that the developer is supposed to #include in their code before #include-ing the text-form NN chunk file.

    The general layout is as follows:

    Important

    Replace these special phrases in all of the following \"text snippets\" as follows:

    1. A required (?) \"header\" comment that is comprised of the following, in order:
      1. The name and version number of the tool used to create this file.
      2. \"Create\\t:\" followed by the date this file was created in the \"ddd MMM dd HH:mm:ss yyyy\" .NET DateTime format.
      3. References to each of the \"main\" (root) structs that makes up the data of every data chunk used in the file, in this format: \"TYPE\\t: NAME\", where TYPE refers to the type of the struct being referenced (e.g. NNS_TEXFILELIST). See the linked pages in the data chunks chart.
    2. One or more data chunks, each of which is comprised of the following, in order:
      1. A comment with the text: \"TYPE START\", where TYPE refers to the data chunk's type (e.g. TEXLIST).
      2. All of the data used by this data chunk, represented as C code comprised heavily of special NN preprocessor macros. See the linked pages in the data chunks chart.
      3. A comment with the text: \"TYPE END\", where TYPE refers to the data chunk's type (e.g. TEXLIST).
    3. A required (?) comment with the text: \"End of File\".

    SampleFile.xtt

    /*\n    Sample NN Exporter Version 1.00.00\n    Create  : Wed Feb 08 21:06:46 2023\n    NNS_TEXFILELIST : nntexfilelist_SampleFile\n*/\n\n/* TEXLIST START */\n\nNNS_TEXFILE nntexfile_SampleFile[] =\n{\n    TEXFILE(\n        TF_FILENAME( \"SampleTex_dif.dds\" ),\n        TF_FILTER( NND_MIN_LINEAR_MIPMAP_NEAREST, NND_MAG_LINEAR )\n    ),\n    TEXFILE(\n        TF_FILENAME( \"SampleTex_spec.dds\" ),\n        TF_FILTER( NND_MIN_LINEAR_MIPMAP_NEAREST, NND_MAG_LINEAR )\n    ),\n    TEXFILE(\n        TF_FILENAME( \"SampleTex_norm.dds\" ),\n        TF_FILTER( NND_MIN_LINEAR_MIPMAP_NEAREST, NND_MAG_LINEAR )\n    ),\n};\n\nNNS_TEXFILELIST nntexfilelist_SampleFile[] =\n{\n    TEXFILELIST(\n        TFL_N_TEXFILE( 3 ),\n        TFL_TEXFILE( nntexfile_SampleFile )\n    )\n};\n\n/* TEXLIST END */\n\n/* End of File */\n

    Info

    All of the following in the above example are struct/enum/preprocessor defines from the NN library:

    For a complete list of all of these defines, please refer to the individual pages linked in the data chunks chart (for this example, refer to the TEXLIST documentation).

    The ordering of the data within each data chunk is generally in \"reverse\" order, such that any reference to a value will not be written until after the value it is referencing, as is required by C.

    In some cases, the \"reverse\" order is still not enough to satisfy this requirement, so the Sega NN exporters will write an extern declaration for the value being referenced.

    Example snippet from en_Kyozoress.xto in Sonic '06

    Here, the nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye value is declared so that it can be referenced by the VTX_LISTPTR field in nnvertexdesc_plb_op_en_Kyozoress_head_l__2_w2_Eye:

    extern NNS_VTXTYPE_XB_PW4INCT nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye[];\n\nNNS_VTXLIST_DX_DESC nnvertexdesc_plb_op_en_Kyozoress_head_l__2_w2_Eye[] =\n{\n    VTXDESC(\n        /* ... */\n        VTX_LISTPTR( nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye ),\n        /* ... */\n    ),\n};\n

    Then, later on in the file, the referenced nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye value is defined as usual (contents redacted due to extreme length):

    NNS_VTXTYPE_XB_PW4INCT nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye[] =\n{\n    /* ... */\n};\n
    "},{"location":"docs/nn/common/chunk-format/texlist/","title":"TEXLIST","text":""},{"location":"docs/nn/common/chunk-format/texlist/#nns_texfilelist","title":"NNS_TEXFILELIST","text":"

    Important

    This is the \"main\" (root) struct for all NN texture list chunks.

    struct NNS_TEXFILELIST\n{\n  /* The size of the [pTexFileList] array. */\n  uint32_t nTex;\n\n  /* An array of NNS_TEXFILE structs. */\n  NNS_TEXFILE* pTexFileList;\n};\n\n/*\n  Binary-form files can additionally contain embedded\n  texture data via setting the [Filename] field\n  within one or more NNS_TEXFILE structs to NULL.\n\n  In binary-form files which utilize this feature,\n  there is an extra field in NNS_TEXFILELIST after\n  [pTexFileList], which is a pointer to an array of\n  size [nTex] of NNS_TEXFILEDATA structs, which go like this:\n*/\n\n/* NOTE: This name was guessed. */\nstruct NNS_TEXFILEDATA\n{\n  /* Seems to be flags? */\n  uint32_t Unknown1;\n\n  /* Pointer to the embedded texture data. */\n  void* pData;\n};\n\n/* Macros used by Text-Form files: */\n#define TEXFILELIST(nTex, pTexFileList) { nTex, pTexFileList }\n#define TFL_N_TEXFILE(nTex) (nTex)\n#define TFL_TEXFILE(pTexFileList) (pTexFileList)\n

    Todo

    See if there exists any data using the NNS_TEXLIST struct type from Sonic 4 Episode 1 Windows Phone symbols.

    "},{"location":"docs/nn/common/chunk-format/texlist/#nns_texfile","title":"NNS_TEXFILE","text":"
    struct NNS_TEXFILE\n{\n  /* Types and flags, as specified by NNE_TEXFTYPE. */\n  uint32_t fType;\n\n  /*\n    The name of the file this texture is stored in, or NULL if\n    this texture's data is embedded within this file. This value\n    should be ignored if NND_TEXFTYPE_NO_FILENAME is set in [type].\n  */\n  char* Filename;\n\n  /*\n    The minification filter to use on the texture, as specified by NNE_MIN.\n    This value should be ignored if NND_TEXFTYPE_NO_FILTER is set\n    in [type];\n  */\n  uint16_t MinFilter;\n\n  /*\n    The magnification filter to use on the texture, as specified by NNE_MAG.\n    This value should be ignored if NND_TEXFTYPE_NO_FILTER is set\n    in [type];\n  */\n  uint16_t MagFilter;\n\n  /*\n    Unknown. Maybe some games have a global texture array, and\n    this is the index into that array to place this texture into?\n    This value should always be ignored *unless* NND_TEXFTYPE_LISTGLBIDX\n    is set in [type].\n  */\n  uint32_t GlobalIndex;\n\n  /*\n    Unknown. Maybe some games group textures into banks?\n    This value should always be ignored *unless* NND_TEXFTYPE_LISTBANK\n    is set in [type].\n  */\n  uint32_t Bank;\n};\n\n/* Macros used by Text-Form files: */\n#define TEXFILE(filename, filter) { 0, filename, filter, 0, 0 }\n#define TF_FILENAME(filename) (filename)\n#define TF_FILTER(minFilter, magFilter) (minFilter), (magFilter)\n
    "},{"location":"docs/nn/common/chunk-format/texlist/#nne_mag","title":"NNE_MAG","text":"

    All possible texture magnification filters.

    enum NNE_MAG\n{\n  /* Nearest magnification filtering. */\n  NND_MAG_NEAREST = 0,\n\n  /* Linear magnification filtering. */\n  NND_MAG_LINEAR = 1,\n\n  /* Anisotropic magnification filtering. */\n  NND_MAG_ANISOTROPIC = 2\n};\n
    "},{"location":"docs/nn/common/chunk-format/texlist/#nne_min","title":"NNE_MIN","text":"

    All possible texture minification filters.

    enum NNE_MIN\n{\n  /* Nearest minification filtering. */\n  NND_MIN_NEAREST = 0,\n\n  /* Linear minification filtering. */\n  NND_MIN_LINEAR = 1,\n\n  /* TODO */\n  NND_MIN_NEAREST_MIPMAP_NEAREST = 2,\n\n  /* TODO */\n  NND_MIN_NEAREST_MIPMAP_LINEAR = 3,\n\n  /* TODO */\n  NND_MIN_LINEAR_MIPMAP_NEAREST = 4,\n\n  /* TODO */\n  NND_MIN_LINEAR_MIPMAP_LINEAR = 5,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC = 6,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC2 = 6,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC_MIPMAP_NEAREST = 7,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC2_MIPMAP_NEAREST = 7,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC_MIPMAP_LINEAR = 8,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC2_MIPMAP_LINEAR = 8,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC4 = 9,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC4_MIPMAP_NEAREST = 10,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC4_MIPMAP_LINEAR = 11,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC8 = 12,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC8_MIPMAP_NEAREST = 13,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC8_MIPMAP_LINEAR = 14\n};\n
    "},{"location":"docs/nn/common/chunk-format/texlist/#nne_texftype","title":"NNE_TEXFTYPE","text":"

    Types and flags for a NNS_TEXFILE struct.

    enum NNE_TEXFTYPE\n{\n  /*\n    =======================================================\n    == Masks\n    =======================================================\n  */\n\n\n  /* Apply this mask to get just the texture's type, without any flags. */\n  NND_TEXFTYPE_TEXTYPE_MASK = 255,\n\n\n\n  /*\n    =======================================================\n    == Types (required; only one must be used at a time)\n    =======================================================\n  */\n\n\n  /* The platform's default format (used most of the time). */\n  NND_TEXFTYPE_DEFAULT = 0,\n\n  /* The .gim format (used on PSP). */\n  NND_TEXFTYPE_GIMTEX = 1,\n\n\n\n  /*\n    =======================================================\n    == Flags (optional; one or more can be used at a time)\n    =======================================================\n  */\n\n\n  /* The [FileName] field should be ignored. */\n  NND_TEXFTYPE_NO_FILENAME = 256,\n\n  /* The [MinFilter] and [MagFilter] fields should be ignored. */\n  NND_TEXFTYPE_NO_FILTER = 512,\n\n  /* The [GlobalIndex] field is used (default is to ignore it). */\n  NND_TEXFTYPE_LISTGLBIDX = 1024,\n\n  /* The [Bank] field is used (default is to ignore it). */\n  NND_TEXFTYPE_LISTBANK = 2048\n};\n

    Warning

    The symbols from Sonic 4 Episode I for Windows Phone 7 mention the following types:

    Looking at various NN files, however, these appear to be incorrect?

    Sony NN texture lists that actually do use SVR textures seem to set the type to 0 anyway, for example.

    Don't rely on these type values!

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/anims/","title":"XNCP Animations","text":"

    Info

    This guide uses the following tools:

    XNCP animations for a specific scene are listed in AnimationDictionary, which behaves the same way as the CastDictionary:

    In AnimationFrameDataList, it\u2019s possible to control the amount of keyframes that a specific animation has:

    To control the speed of these animations, we have a single field in the scene that controls the frame rate:

    AnimationKeyFrameDataList contains the information for all the keyframes in the animation, as well as the casts that belong in that animation.

    In the screenshot above, we\u2019re seeing the data referring to Animation 0 (Intro_Anim when following the dictionary). XNCPs usually follow this naming scheme for animations:

    So, in Intro_Anim, we have several CastAnimationData. These control what happens to each cast in this animation. Let\u2019s see what happens to Cast 0 (position, which usually is the parent of all casts in a scene and controls their position)...

    Seems like we have flags! It\u2019s a bitfield, and it controls what actually animates in this cast. Here\u2019s the meaning of each bit:

    0000 0000(0) - Nothing\n0000 0001(1) - Hide Flag\n0000 0010(2) - X Position\n0000 0100(4) - Y Position\n0000 1000(8) - Rotation\n0001 0000(16) - X Scale\n0010 0000(32) - Y Scale\n0100 0000(64) - SubImage\n1000 0000(128) - Colour Mask\n

    So, with this info, we now know what animates in the position cast: It is its X Position. The CastAnimationDataSubData1List is what stores the actual animation data. The amount of entries in this list depends on the number of bits signaled in the Flags field. The first entry in the list is referring to the first bit signaled from right to left. So by that logic, the list only has one entry.

    And there we go. This entry is what stores the actual KeyFrames. Let\u2019s open one up to see how it is.

    Scary right? I don\u2019t understand much of what\u2019s going on here, but here we go.

    Frame defines which global frame this keyframe is in. Remember AnimationFrameDataList? Yeah, this animation has a total of 10 frames, and is played at 60 FPS. For each frame, you define the global frame that it refers to. So, since this cast controls the position of the entire scene, and this is the intro animation, maybe the other keyframe has the frame field set to 10? We\u2019ll see about that shortly.

    Data store the data of this keyframe. The meaning of data changes depending on the flags. Data can be:

    According to the flags of this specific cast, these keyframes are supposed to control the X Position, which means that \u201cData\u201d actually represents the X Position of the cast in this frame.

    The Offset and Offset2 fields control the casts' Offset position value, where \"Offset\" is X, while \"Offset2\" is Y. For example, the buttons in the title screen of Sonic Generations use these values to stay in place when they're clicked since they get scaled up and down. Let\u2019s look at the second keyframe:

    As we suspected, the Frame field is now set to 10, meaning this is referring to the last frame in the animation. The value in Data has increased, so this means that this cast slides from left to right in this animation!

    Looking at the remaining CastAnimationData entries, we can see that none of them animate, since their Flags field is set to 0. So we can conclude that Intro_Anim makes the position cast slide from left to right, and since \u201cposition\u201d controls the entire scene, every single cast from this scene slides from left to right in this animation!

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/anims/#additional-notes","title":"Additional Notes","text":"

    An animation can only be looped using code, so that can't be controlled via the XNCP. However, Field00 in CastAnimationDataSubData does seem to control how fast a loop occurs, where the value 1 seems to loop it with a delay, while 2 makes it loop smoother.

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/anims/#conclusion","title":"Conclusion","text":"

    Hope I explained XNCP animations well enough. Have fun!

    PS: there\u2019s also AnimationData2List but...

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/","title":"The Basics of XNCP Editing","text":"

    Info

    This guide uses the following tools:

    XNCP is the file format of Sonic Generations's UI. In this guide, I'll explain the general things you need to get started.

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#requirements","title":"Requirements","text":"

    First of all, you will need to download the 010 Editor. This program is used for hex editing, and in our case, to modify XNCP files. You'll also need to download the XNCP Template; essentially, this file will make it so that you can read and understand the XNCP file's contents, otherwise you'd only see hex numbers, and that's not exactly readable.

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#opening-an-xncp-file","title":"Opening an XNCP file","text":"

    After installing the 010 Editor, and downloaded the XNCP Template, it's time to open a file.

    Open the 010 Editor and click on File > Open File..., and open the file that you need to edit.

    After opening the file, you'll see a bunch of numbers. Don't get freaked out, this is normal. These are the contents of the XNCP file.

    Now, you need to go to Templates > Open Template..., and open the file that we downloaded before. It's called sonic_xncp_yncp.bt.

    After opening the file, a window should pop up with the template's code. You can just ignore this window and hide it wherever you'd like, you won't need to modify this.

    Now, go back to Templates and click on Run Template. This should now make the numbers have colorful backgrounds, and a new window will appear below the hex view.

    This new window that has appeared will be your workspace. This'll be the way in which you edit all aspects of a UI file. Click on the struct TFAPC File dropdown, then struct TFAPCEmbeddedRes Resources[0], then struct TNNNCPJChunk CsdmProject, and then on struct TCSDNode Root. Now you'll have a few variables here; I'll explain what some of them mean!

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#the-structure-of-an-xncp-file-resource-0","title":"The structure of an XNCP file (Resource 0)","text":"

    Scenes are essentially the containers for a specific group of UI elements, think of it like a folder inside a folder, and you'll need SceneIDTable to understand which Scene is what. This table contains the name and index of each Scene (e.g: Scene \"gauge\" in ui_gameplay.xncp is the \"folder\" that contains all elements of the boost bar in the HUD). Scenes also have a few variables that may be of interest, like:

    And the most important one of all:

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#the-structure-of-a-cast","title":"The structure of a Cast","text":"

    The Cast has several variables that you can change:

    Info

    If you're disabling a cast, make sure that it does not have children, or it might make the UI look weird!

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#the-structure-of-an-xncp-file-resource-1","title":"The structure of an XNCP file (Resource 1)","text":"

    Before, I wrote that you needed to go into Resource 0. This is because Resource 0 has most of the cool stuff that you can edit, while Resource 1 contains data about image file locations.

    This was a general introduction to XNCP files, and their structures. For more information, check out the other guides in the sidebar!

    "},{"location":"guides/hedgehog-engine/blueblur/levels/glvl/","title":"How to use Sonic GLvl with Sonic Generations","text":"

    Info

    This guide uses the following tools:

    Note

    These video guides are old and are for Sonic GLvl 0.5.7. It's recommended you use the latest 0.9 version instead. Even if 0.9 is a more recent version, the general way of working with it remains the same, hence why these videos are still relevant.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/glvl/#part-1-getting-levels-and-camera-controls","title":"Part 1 (Getting Levels and Camera Controls)","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/glvl/#part-2-basic-level-editing-and-testing-your-mod-in-game","title":"Part 2 (Basic Level Editing and Testing your mod in-game)","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/importing-collision/","title":"How To Import Custom Collision in Sonic Generations","text":"

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-collision/#part-1-creating-collision-in-blender","title":"Part 1 (Creating Collision in Blender)","text":"

    You'll need a separate model for the collision. While it is possible to use your stage's model files as a collision, we still recommend that you create a separate project/model for it, even if it's a copy of it.

    It is possible to specify tags for your collision, which control the type of collision it has. For this, you'll need a special ini file for HavokConverter with tags. You can download it here. To apply these tags to your collision model, you can simply rename the meshes and add the tag as a prefix to its name. Below is an example of how you can do this, in case you want a mesh to have the \"Stone\" collision tag:

    Example

    You can find all the available tags by opening HavokConverter after placing the mentioned INI file in the same folder as its executable.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-collision/#part-2-converting-your-model-into-a-collision-file","title":"Part 2 (Converting Your Model Into a Collision File)","text":"

    Open HavokConverter.exe and fill the following options:

    Now you can click the Convert button and wait.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-collision/#part-3-importing-your-collision-into-the-game","title":"Part 3 (Importing Your Collision into the Game)","text":"

    When the conversion process finishes, extract your custom stage's # file, and place the generated phy.hkx file there. Afterwards, open the Terrain.stg.xml file, and edit the collision file that is mentioned. This is mentioned in the RigidBodyContainer tag. Change its value to your phy.hkx filename, without the extension. Below is an example for a file name MyCollision.phy.hkx:

    Now re-pack this file and replace the original. After booting into the game, you should now notice that your level has working collision.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/","title":"How To Import Custom Terrain in Sonic Generations","text":"

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-1-creating-terrain-in-blender","title":"Part 1 (Creating Terrain in Blender)","text":"

    First of all, you need terrain for your level. You can do the terrain yourself, or take already created terrain. If your level contains transparent materials you need to add a proper layer tag to it. For transparency, you have two available layers, and you should pick the one that's best suited for your use case in order to avoid issues.

    Layers Usage punch Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass trans Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)

    In order to specify a layer for a material, use the @LYR prefix, with the layer name between parenthesis after it.

    Example

    You can then export your terrain from Blender into an Assimp compatible format (FBX, DAE or OBJ work).

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-2-importing-the-level-to-the-game","title":"Part 2 (Importing the Level to the Game)","text":"

    Download SonicGLvl, and run bin/HedgehogConverter.exe. Fill up the following entries:

    Make sure that the folder has a name that matches the target stage you want to replace. For example, for Green Hill Modern, use the folder name ghz200.

    Be sure to also turn on the following options under \"Materials\":

    In the end, you should have something similar to this:

    Next, click the Convert button and wait.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-3-getting-missing-files","title":"Part 3 (Getting missing files)","text":"

    Once the conversion is done, we need to get files that might be missing from your stage.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#stagear-file","title":"#stage.ar file","text":"

    Your stage needs a \\# file in order to store set-data, collision, and other stage information. We can use the file from the stage we're replacing. If you're replacing Green Hill Modern, go to disk/bb.cpk (extract using PackCpk), and copy the #ghz200.ar.00 and #ghz200.arl files into your stage mod files (disk/bb folder).

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-4-sonic-glvl-basic-setup","title":"Part 4 (Sonic GLvl Basic Setup)","text":"

    Next up, we need to do some very basic setup of your level's set data in SonicGlvl. Open the app, and open your stage's # archive from there. Once the level has been imported into SonicGlvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level's set data, which are the original objects from the stage we are replacing. Now, find \"SonicSpawn\" in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the \"Active\" property to \"true\" in the settings of the \"SonicSpawn\" object.

    After that, go to \"File\" and press \"Save Stage Data\" and \"Save Stage Terrain\".

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-4-creating-skybox-optional-but-recommended","title":"Part 4 (Creating Skybox - Optional but Recommended)","text":"

    Skyboxes in Sonic Generations are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#making-one-yourself","title":"Making one yourself","text":"

    Export your skybox model from Blender into an Assimp compatible file format. Then, using ModelConverter, drag and drop the model file into the Sonic Generations .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#grabbing-one-from-a-level","title":"Grabbing one from a level","text":"

    Go to the Packed folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the .ar archive, and look for the sky's .model file. The name should have something to do with \"sky\". If yo don't manage to find it, look at the stage's Terrain.stage.xml file, as it will mention the skybox's model name there. You will need the .model file, the textures (.dds files) and the materials of the sky model.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#using-the-skybox-files","title":"Using the Skybox files","text":"

    After getting the necessary skybox model files, place them inside your stage's Packed/stageName/stage.ar file. Then, open # file of your stage, and open the Terrain.stg.xml file. You'll need to create a Sky tag and write the name of the .model file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named MySkybox.model:

    This concludes this guide. If you boot your stage now, you'll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide here.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/","title":"Troubleshooting","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#common-issues","title":"Common Issues","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#black-textures","title":"Black Textures","text":"

    Textures must have power of two resolutions. For example, 512x512, 1024x1024, 2048x4096, etc. An arbitrary resolution like 600x600 is not supported by the game when using compressed textures.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#rainbow-flashing-textures","title":"Rainbow Flashing Textures","text":"

    The game shows a rainbow flashing texture if the texture assigned to a material is missing. Ensure you included the texture in the AR and didn't make a typo in the material.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#randomly-switching-textures","title":"Randomly Switching Textures","text":"

    The material might not have any textures assigned at all. You need to at least assign one diffuse texture, otherwise the game is going to use the texture of whatever was rendered last.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-terrain-models","title":"Missing Terrain Models","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#red-materials","title":"Red Materials","text":"

    The game fallbacks to displaying a red emissive material if the shader assigned to a material does not exist. If you want to see every available shader in the game, unpack shader_r_add.ar.00 located inside bb3.cpk, and look for files with .shader-list extension.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#low-quality-or-missing-gi-textures","title":"Low Quality or Missing GI Textures","text":"

    Terrain.prm.xml file might require higher memory sizes. Look for the g_GITextureLimitSizeDefault and g_GITextureLimitSizeWin32 parameters, and increase them.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-direct-light","title":"Missing Direct Light","text":"

    If you add a new direct light with a different name, you need to edit Terrain.stg.xml to make the stage use it. For example:

    <Light>\n  <DataName>MyDirectLight</DataName>\n</Light>\n
    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-sky-model","title":"Missing Sky Model","text":"

    If you add a new sky model with a different name, you need to edit Terrain.stg.xml to make the stage use it. For example:

    <Sky>\n  <Model>MySkyModel</Model>\n</Sky>\n

    Ensure that the materials of the sky model also use sky shaders such as Sky_d.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#enemies-from-other-stages-not-appearing","title":"Enemies From Other Stages Not Appearing","text":"

    Certain enemies are loaded manually in stages to save memory. If an enemy does not appear in your stage, you can fix it by editing EnemyArchiveTree.xml inside #Application.ar.00. In this example, ghz_cmn entry was modified to include data from EnemyEFighter, which allows egg fighters to be used in both ghz100 and ghz200:

    <DefAppend>\n  <Name>ghz_cmn</Name>\n  <Archive>EnemyCommon</Archive>\n  <Archive>EnemyBeeton</Archive>\n  <Archive>EnemyBatabata</Archive>\n  <Archive>EnemyGanigani</Archive>\n  <Archive>EnemyMotora</Archive>\n  <Archive>EnemyEFighter</Archive>\n</DefAppend>\n
    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#common-crash-reasons","title":"Common Crash Reasons","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-material-files","title":"Missing Material Files","text":"

    Unlike later games, missing materials can cause a crash in Sonic Generations and Sonic Unleashed.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#periods-in-file-names","title":"Periods in File Names","text":"

    Having periods in your file names can confuse the game and cause crashes. For example, having a material named Material.000.material would make the game think the file has a .000.material extension, and not recognize it as a material file.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#instance-names-starting-with-ins","title":"Instance Names Starting with \"ins\"","text":"

    Instances starting with ins are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-gi-texturegi-texture-group-info-file","title":"Missing \"gi-texture.gi-texture-group-info\" File","text":"

    Run GI Atlas Converter on Pre-Render mode to have this file created automatically.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-light-listlight-list-file","title":"Missing \"light-list.light-list\" File","text":"

    Copy paste .light and .light-list files from another stage, or add a direct light to your level in the 3D software you use. Latest Hedgehog Converter can import direct lights, so ensure your tools are up to date. Use HedgeGI for advanced light editing.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#mismatching-pfdpfi-files","title":"Mismatching PFD/PFI Files","text":"

    PFD files are loaded through PFI files. If the Stage.pfi/Stage-Add.pfi files don't match with the Stage.pfd/Stage-Add.pfd files in the stage, this causes a crash. Unpack the PFD files, and repack them back with HedgeArcPack using -T=pfd command-line option to generate matching PFI files.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#unloaded-sonic-animations","title":"Unloaded Sonic Animations","text":"

    The game doesn't load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in SonicDiving.ar.00 are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing ArchiveTree.xml inside #Application.ar.00. In this example, SonicDiving entry was edited to load in the ghz200 stage slot:

    <Node>\n  <Name>SonicDiving</Name>\n  <Archive>SonicDiving</Archive>\n  <Order>0</Order>\n  <DefAppend>SonicDiving</DefAppend>\n  <Node>\n    <Name>bne</Name>\n    <Archive>bne</Archive>\n    <Order>0</Order>\n  </Node>\n  <Node>\n    <Name>cpz200</Name>\n    <Archive>cpz200</Archive>\n    <Order>0</Order>\n  </Node>\n  <Node>\n    <Name>pla200</Name>\n    <Archive>pla200</Archive>\n    <Order>0</Order>\n  </Node>\n  <Node>\n    <Name>sph200</Name>\n    <Archive>sph200</Archive>\n    <Order>0</Order>\n  </Node>\n  <Node>\n    <Name>ghz200</Name>\n    <Archive>ghz200</Archive>\n    <Order>0</Order>\n  </Node>  \n</Node>\n
    "},{"location":"guides/hedgehog-engine/blueblur/locations/sound/","title":"Sounds","text":"

    Info

    These files require the following tools:

    "},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#sound-file-locations","title":"Sound File Locations","text":"

    This guide contains a list of file locations for the audio files in Sonic Generations, the name of the folder in which the files are present will be above the table. Music and sound effects use the \"CSB\" format, these can be opened with SonicAudioTools.

    "},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#sound","title":"Sound","text":"File Name Description SNG00_SYS Title Screen Audio SNG01_GHZ Green Hill Music SNG02_CPZ Chemical Plant Music SNG03_SSZ Sky Sanctuary Music SNG04_SPH Speed Highway Music SNG05_CTE City Escape Music SNG06_SSH Seaside Hill Music SNG07_CSC Crisis City Music SNG08_EUC Rooftop Run Music SNG09_PLA Planet Wisp Music SNG10_CNZ (DLC) Casino Night Music SNG11_BMS VS. Metal Sonic Audio SNG12_BSD VS. Shadow Audio SNG13_BSL VS. Silver Audio SNG14_BDE VS. Death Egg Audio SNG15_BPC VS. Perfect Chaos Audio SNG16_BNE VS. Egg Dragoon Audio SNG17_BLB VS. Time Eater Audio SNG19_JNG Skills, Game Over, Results SNG20_MSN Generic Mission Music SNG21_ETC 20th Anniversary Demo Jingle SNG22_ADD BGM Select Music for Stages SNG23_PAM Shop & Collection Room Audio 30VCE_BLB_NP_(locale) Time Eater NPC Voices 30VCE_BOS_EG_(locale) Time Eater Eggman Voices 30VCE_EVT_NP_(locale) NPC Unlock Events 30VCE_HNT_(locale)_WIN32 Omochao Hints 50BOS_EVT Sounds for Cutscenes 70NPC_EVT Sounds for NPC Unlocks"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb2pam000","title":"disk/bb2/pam000","text":"File Name Description 40OBJ_PAM White World Object Sounds 40AMB_PAM White World Ambiance Sounds 40OBJ_CMN_PAM White World Common Objects Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb2pla200","title":"disk/bb2/pla200","text":"File Name Description 42OBJ_PLA Planet Wisp ACT 2 Objects 42AMB_PLA Planet Wisp ACT 2 Ambiance"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb2enemycommon","title":"disk/bb2/EnemyCommon","text":"File Name Description 51ENM_CMN Enemy Sound Effects #1 52ENM_CMN Enemy Sound Effects #2"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb2bsd","title":"disk/bb2/bsd","text":"File Name Description 52BOS_BSD VS. Shadow Sounds 42OBJ_BSD VS. Shadow Object Sounds 42AMB_BSD VS. Shadow Ambiance Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbbactioncommon","title":"disk/bb/ActionCommon","text":"File Name Description 10SYS_ACT Results Screen Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb3application","title":"disk/bb3/Application","text":"File Name Description 10SYS_CMN HUD Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb3sonic","title":"disk/bb3/Sonic","text":"File Name Description 22PLY_SNC_PAM Sonic Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb3cmn100-or-cmn200","title":"disk/bb3/cmn100 (or cmn200)","text":"File Name Description 21PLY_SNC Gimmick Sounds #1 22PLY_SNC Gimmick Sounds #2 41AMB_CMN Common Ambiance Sounds #1 42AMB_CMN Common Ambiance Sounds #2 40OBJ_CMN_PAM Common Object Sounds (White World) 41OBJ_CMN Miscellaneous Object Sounds #1 42OBJ_CMN Miscellaneous Object Sounds #2 61CTS_CMN Skill Sounds #1 62CTS_CMN Skill Sounds #2"},{"location":"guides/hedgehog-engine/rangers/animation/import-export/","title":"Animation Importing & Exporting","text":"

    This guide will assume you have at least some understanding of animating in Blender.

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#setting-up","title":"Setting Up","text":"

    First, download the required tools and extract them. Open Blender and go to Edit > Preferences. Click on Add-ons, and then Install.... Browse to the FrontiersAnimDecompress folder, and install each of the 4 plugins in this directory, then minimise Blender.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#extracting-the-animation-files","title":"Extracting the Animation Files","text":"

    Locate the pac file that contains the animations you want to change. For sonic's animations, look for raw\\character\\sonic.pac. First, make sure you create a copy of the pac file of your choice in a folder somewhere so you don't accidentally replace your game files. Drag and drop the pac file onto HedgeArcPack.exe to extract the file into a folder.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#conversion","title":"Conversion","text":"

    Open the newly created folder and find the animation you want to change. These animation files have the extension .anm.pxd. Drag and drop the .anm.pxd file onto FrontiersAnimDecompress.exe. This will create a new file with the extension .anm.pxd.outanim.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#importing-the-animation","title":"Importing the Animation","text":"

    Open Blender again, and go to File > Import, then select Hedgehog Engine (.model) and browse for your model file.

    Info

    If you don't know how to get your model, first watch the Model Import Tutorial

    After importing, select the Armature and go to File > Import, and this time select Hedgehog Engine Compressed (.outanim), and browse for your .outanim file we created in the previous step. You should now see the animation within Blender!

    Info

    If you don't know how to edit the animation, please look for a Blender tutorial to learn the basics in order to continue. The animation process is not specific to Sonic Frontiers.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#exporting-the-animation","title":"Exporting the Animation","text":"

    When you have finished making your changes to the animation, go to File > Export and select Hedgehog Engine Compressed (.outanim), then browse for somewhere to save your file. You may overwrite the .outanim file you imported if you like. You may close Blender now.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#finishing-up","title":"Finishing Up","text":"

    Drag and drop the newly exported .outanim onto FrontiersAnimDecompress.exe to create a new .anm.pxd containing your animation. Rename this file to be exactly the same as the original file you decompressed. If you haven't already, place it back in it's pac folder, and replace the existing file.

    Now drag the pac folder onto HedgeArcPack.exe to repack the file, which you can then use in your mod!

    "},{"location":"guides/hedgehog-engine/rangers/audio/replacing/","title":"Replacing Audio","text":"

    Info

    This guide uses the following tools:

    Warning

    This currently does not work while replacing boss music! Also, backup any files that you modify unless you are sure of what you are doing!

    "},{"location":"guides/hedgehog-engine/rangers/audio/replacing/#what-to-do","title":"What to do","text":"

    Find the .ACB file containing the audio that you wish to edit and open it up in foobar2000. If there is an accompanying .AWB file, open this instead.

    Audio is stored in SonicFrontiers\\image\\x64\\raw\\sound

    Once foobar has opened you will be able to see the names of and listen back to the respective audio files. Make sure that you have the \"Item Index\" column enabled.

    Use ACBEditor.exe found in SonicAudioTools to extract all audio files by dragging and dropping the .ACB onto the exe.

    There will now be a folder named the same as the .ACB that will contain .HCA files. The name of the .HCA file will be a 5 digit number that is the Item Index number -1. If you are replacing music it will be a 5 digit number and the word \"streaming\"

    Example

    \"1\" in the sound effect Item Index would be \"00000.hca\" and \"220\" in the music Item Index would be \"00219_streaming.hca\" (Less .HCA files may be extracted than the number of cues shown in the Item Index. Make sure to double check that the .HCA is the sound you wish to change before replacing it)

    Create a .WAV file of whatever sound it is you wish to put in game and name it the same as the .HCA file you are going to replace.

    Open VGAudio.Wpf and load the created .WAV file. (If you wish to convert multiple files then go to the batch tab where you will be able to add more files.)

    Once the file(s) are loaded, select .HCA on the dropdown menu of file types. Save and replace the file(s) to the folder full of extracted HCA's.

    Drag and drop the folder back onto ACBEditor.exe and it will repack the .ACB file with the new audio files.

    "},{"location":"guides/hedgehog-engine/rangers/audio/replacing/#creating-looped-soundsmusic","title":"Creating looped sounds/music","text":"

    If you are working with BGM or SFX that loop, you will need to create loop points in the .HCA file. This can be done easily using VGAudio.Wpf.

    Follow the same instructions as listed above but when it come to creating the HCA file you will want to drop down the menu that says \"Loop File\". You will be presented with two boxes, one labelled \"Loop Start\" and the other labelled \"Loop End\". The format used in these boxes is Samples which can easily be found in most audio editing software. Find the point in your .WAV file where you would like the sound to start looping and input that number into the \"Loop Start\" box, then do likewise with \"Loop End\". From here the process is once again the same as detailed above.

    Now you can put Open Your Heart over every boss fight :)

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/","title":"Replacing Cyloop Color","text":"

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/#getting-the-file","title":"Getting the File","text":"

    First you're going to need to drag playercommon.pac onto HedgeArcPack.exe to get a playercommon folder. Then, find the player_common.rfl file in that folder, and open it in 010 editor.

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/#using-the-binary-template","title":"Using The Binary Template","text":"

    You're going to need to use the PlayerParameters.bt binary template on 010 editor. This can be done by going to \"Templates\" at the top and pressing \"Open Template\" and selecting the PlayerParameters.bt

    Afterwards, you can press \"Run Template\" and it should bring up a new window in 010 editor.

    Info

    If a new window doesn't appear, restart 010 editor or reload player_common.rfl into the editor

    Run the PlayerParameters.bt template and you should see new information in the Variables tab in 010 editor. Split your editor so that you can see your hex values, the inspector tab, and the variables tab all at once.

    Now you're ready to hex edit!

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/#editing-the-file","title":"Editing the file","text":"

    Open struct PlayerParameters data in variables, then go into struct CommonPackage common, and find struct PlayerParamCyloop cyloop

    Open the cyloop struct and find CyloopLocusParameter locus, this holds the colors for the cyloop across multiple variables. Each color will look like this (there are 3 of these):

    ...or these (there are 2 of these)

    When you open these variables, you will see 4 values, float r, g, b, and a. These values don't make sense so keep up with this:

    Choose a color with its rgb decimal code (ex: Lawn Green is (124,252,0)), then take each of your values and divide them by 255.

    Example

    Replace the float values with your new values (you don't need to touch float r), like the example below:

    Do this for all of the color struct variables from earlier. This will replace all of the different parts of the cyloop, but you can mix colors for different results, like making some of the cyloop variables red, and some white.

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/#saving-your-changes","title":"Saving Your Changes","text":"

    Once you're happy with your color choices, go to \"File\"\" and save your player_common.rfl file. Then, repack your playercommon folder into a .pac file, which you can then use in your mod!

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/","title":"Advanced Material Editing","text":"

    This guide will assume you have at least some understanding of how PBR texturing works.

    Info

    This guide uses the following tools:

    Note

    There is a Substance Painter Export Template if you use Substance to export the PRM map so you don't have to construct it.

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#preparation","title":"Preparation","text":"

    This guide expects you to have a model that loads ingame and 5 texture maps for your model:

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#making-a-prm-map","title":"Making a PRM map","text":"

    Hedgehog Engine 2 games use some variation of the PRM texture setup, Frontiers specifically uses the RGBA setup, Specular, Smoothness, Metallic, Ambient Occlusion. So we need to construct a map using our textures, as long as the textures go into the corresponding channels.

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#photoshop","title":"Photoshop","text":"

    Add your textures besides the Normal Map textures as layers in your photoshop document.

    Then open the effects panel and have the corresponding channel as stated above be the only channel checked

    Lastly select your Roughness layer and invert it (Ctrl+I). Smoothness in PBR is just inverted roughness.

    This will be your PRM map. Save it to your work directory.

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#converting-png-to-dds-correctly","title":"Converting PNG to DDS correctly","text":"

    Open Nvidia Texture Tools Exporter and load your texture you want to convert and make sure BC7 is selected for the Color maps, for your normal map make sure BC5u is selected (The normal map will show as yellow in the icon, ignore it). Then Save As... .dds

    Example

    Info

    When saving the PRM texture make sure Premultiplied Alpha Blending is unchecked

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#editing-the-hedgehog-engine-2-materials","title":"Editing the Hedgehog Engine 2 materials","text":"

    your model converter will have made .material files, you may even be using them. Remember their names and delete them. It is generally better to modify pre existing materials as it will look better because they include all the shader parameters.

    A good base to modify off of is Sonic's cloth, since it is a common prm shader.

    Duplicate and rename the material file you're building off of to the material name the model converter outputted.

    Open HedgeEdit, then navigate to Edit > Material Editor

    Once the pop up opened use File > Open to open one of the .material file you made. Then hit the ... next to Textures (Collection)

    Each of these members are textures the material feeds the shader. What's important is there's 3 and they should correlate to the textures we made earlier.

    Select each member and set TextureName to the filename of the .dds we made earlier without the file extension

    Note

    If you chose to edit a nondefault material (IE Sonics fur) you may need to go to the Parameters section to get the members for the parameters.

    Usually texture suffixes like fal go to falloffs, flw flow maps, fur noise layer overlayed on the diffuse for the fur.

    Save the material then you're done.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/","title":"Model Importing","text":"

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#extracting-models","title":"Extracting Models","text":""},{"location":"guides/hedgehog-engine/rangers/models/import/#creating-and-extracting-the-pac-file","title":"Creating and Extracting the PAC File","text":"

    Firstly, create a PAC file named after the character and proceed to extract the contents of the archive utilizing the HedgeArcPack tool.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#converting-to-fbx-and-importing-into-blender","title":"Converting to FBX and Importing into Blender","text":"

    Next, convert the chr_character.model file into the FBX format using the ModelFBX tool. Please note that certain models may not necessitate conversion into FBX format. If you don't need to use the FBX format, use the HedgeNeedle tool, extract the various levels of detail from the .model file, and rename chr_character.0.model to chr_character. Subsequently, utilize the model importer add-on to import the model into Blender.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#rigging-and-vertex-count","title":"Rigging and Vertex Count","text":"

    After the model is imported into Blender, introduce your own model that is intended to be utilized in-game, and proceed to rig it to the original model's skeleton. It is crucial to ensure that the vertex count of your model does not surpass the maximum requirements of the model converter, which is approximately 21,000 vertices per object.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#assigning-weights-and-resources","title":"Assigning Weights and Resources","text":"

    As weights primarily refer to Blender rather than the Hedgehog Engine itself, you should use the following resources as they may be useful in learning how to manage weights:

    Weight Transfer Guide Weight Painting Guide

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#rigging-and-exporting-the-model","title":"Rigging and Exporting the Model","text":"

    Once the character model has been rigged, select the model and the original skeleton, and proceed to export them as an FBX file. In case the original model is not deleted, choose 'selected objects only' in the export settings. Although the other export settings are generally insignificant, it may be necessary to modify the scale to 0.01.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#converting-to-model-and-creating-pac-file","title":"Converting to .model and Creating PAC File","text":"

    Utilizing the ModelConverter tool, drag the FBX file onto ModelConverter.exe to turn it into a .model file. Subsequently, place the new .model file into the previously extracted PAC folder. To generate a new PAC file, drop the folder onto HedgeArcPack. The PAC file may then be used in your mod to observe the changes made. Although the other export settings are generally insignificant, it may be necessary to modify the scale to 0.01.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#converting-to-model-and-creating-pac-file_1","title":"Converting to .model and Creating PAC File","text":"

    Utilizing the ModelConverter tool, drag the FBX file onto ModelConverter.exe to turn it into a .model file. Subsequently, place the new .model file into the previously extracted PAC folder. To generate a new PAC file, drop the folder onto HedgeArcPack. The PAC file may then be used in your mod to observe the changes made.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#materials-and-textures","title":"Materials and Textures","text":"

    For assistance with preparing materials and texture for Sonic Frontiers, refer to the Advanced Material Editing Tutorial.

    "},{"location":"guides/hedgehog-engine/swa/levels/glvl/","title":"How to use Sonic GLvl with Sonic Unleashed","text":"

    Note

    This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It's recommended that you also read the Sonic Generations GLvl guide.

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/swa/levels/glvl/#preparing-ar-files","title":"Preparing .ar Files","text":"

    This example will be editing Windmill Isle Act 1 Day. Open your extracted Unleashed game folder and locate your files. In my case, the files are

    #ActD_MykonosAct1.ar.00\n#ActD_MykonosAct1.arl\nActD_MykonosAct1.ar.00 \nActD_MykonosAct1.ar.01\nActD_MykonosAct1.arl\n

    Once located you will need to copy those files to the #files folder inside your Mod Toolbox directory. now open #SUModToolbox.bat and press 3 and enter to decompress the files, press 1 or 2 depending on the system and press enter.

    Now copy the files inside #output/DecompressedFiles to a seperate folder. In order for GLvl to read the model you need to make a folder called \"Packed\" and inside your Unleashed game folder go to \"Packed\" and copy the level folder to the new \"Packed\" folder next to your decompressed .ar files.

    "},{"location":"guides/hedgehog-engine/swa/levels/glvl/#preparing-glvl","title":"Preparing GLvl","text":"

    Locate your Xbox 360 SDK's bin/win32 folder and copy xbcompress.exe, xbdecompress.exe, xbdm.dll, msvcp71.dll and msvcr71.dll and paste them into your GLvls \"bin\" directory.

    Open your GLvl folder and go to /database/LevelDatabase.xml, you will need to add your entry for the level, in my case it would be:

    <Entry name=\"ActD_MykonosAct1\" geometry=\"ActD_MykonosAct1\" layout_merge=\"\" slot=\"WindmillIsle 1\" game=\"Unleashed/\">

    Afterwards the file should look something like this:

    <LevelDatabase>\n  <Entry name=\"ghz200\"     geometry=\"ghz200\"        layout_merge=\"\"     slot=\"GreenHillZone\"     game=\"Generations\" />\n  <Entry name=\"ghz201\"     geometry=\"ghz200\"        layout_merge=\"\"     slot=\"GreenHillZone\"     game=\"Generations\" />\n  <Entry name=\"cte200\"     geometry=\"cte200\"        layout_merge=\"\"     slot=\"CityEscapeZone\"    game=\"Generations\" />\n  <Entry name=\"ActD_Beach\" geometry=\"ActD_Beach\"    layout_merge=\"\"     slot=\"JungleJoyride\"     game=\"Unleashed\" />\n  <Entry name=\"ActD_Africa\" geometry=\"ActD_Africa\"    layout_merge=\"\"     slot=\"SavanaCitadel\"     game=\"Unleashed\" />\n  <Entry name=\"ActD_MykonosAct1\" geometry=\"ActD_MykonosAct1\"    layout_merge=\"\"     slot=\"WindmillIsle 1\"     game=\"Unleashed\"/>\n</LevelDatabase>\n

    Open \"Unleashed Object Template.zip\" and extract the contents here, Replace files if asked.

    Save the file, open GLvl, press Ctrl+O and find your decompressed .ar files. Click \"Ok\" on the first prompt and click \"Yes\" on the prompt asking about unpacking terrain.

    "},{"location":"guides/hedgehog-engine/swa/levels/glvl/#extracting-textures-and-adding-them-to-glvl","title":"Extracting Textures and adding them to GLvl","text":"

    Inside Unleashed Mod Toolbox delete the files inside #files and #output. From your Unleashed game folder copy the various Cmn.ar files for your level and paste them inside the #files of the Unleashed ToolBox.

    Open #SUModToolbox.bat and press 4 and enter to decompress the files, press 1 and enter and press 1 or 2 depending on the system and press enter. go to #files and delete the contents of the folder. Inside #output you might notice some files have not been extracted. This is because files other than ar.00 and arl don't extract, however you fix this by simply changing the file extension to ar.00, changing the file name and re-extracting them in the ToolBox.

    Copy the contents of each folder in #output/ExtractedFiles into GLvl/cache/your-level/resources, replacing files if asked.

    "},{"location":"guides/nn/marathon/levels/glvl/","title":"How to use Sonic GLvl with Sonic '06","text":"

    Info

    This guide uses the following tools:

    Note

    Due to a lack of an actual, dedicated level editor for Sonic '06, we (at the time of writing) use a hacked together solution that allows us to use Sonic GLvl as a stand in. This guide will explain how to set up GLvl for this purpose, with the assumption that the user understands basic usage of the program itself.

    "},{"location":"guides/nn/marathon/levels/glvl/#setting-up","title":"Setting Up","text":"

    Download your preferred version of Sonic GLvl 0.9 and extract the repository to any location. Then, open the database folder and delete the objects folder. Next, download the Sonic '06 Stage Editing Archive and extract the SonicGLvl/database folder to your SonicGLvl location, choosing to merge/replace existing files.

    "},{"location":"guides/nn/marathon/levels/glvl/#converting-stage-terrain","title":"Converting Stage Terrain","text":"

    Pre converted copies of the actual Sonic '06 stages are present on the Stage Editing Archive repository (under the SonicGLvl/import directory). When converting your own terrain (such as for a stage mod) the process is almost identical to the conversion process for Sonic Generations (it's recommended to use the two #base files as a template). The crucial step is to remember to set the stage scale in HedgehogConverter to 1% on all three axis, as the scale does not match between both games.

    "},{"location":"guides/nn/marathon/levels/glvl/#usage","title":"Usage","text":"

    The process of placing and editing objects at this point follows the workflow of using Sonic GLvl for a Generations stage mod, so will not be covered here.

    "},{"location":"guides/nn/marathon/levels/glvl/#groups","title":"Groups","text":"

    Objects in '06 make frequent usage of grouping, allowing objects to influence each other in some way (such as an Egg Chaser commanding a squad of Egg Liners or defeating an enemy unlocking a cage). To set these up, create an XML in your stage's cache directory called groupdata_[x].group.xml (where [x] is a name, such as base). Then lay them out as shown below.

    Each <Group> key is... Well... A Group that will be compiled into the converted SET.

    The <Name> key seems to just be for identification, so here (for Ocean Palace) I called it CageGroup01 as it was the first group I made that unlocked a cage.

    The <Type> key is the name of the lua event that this group will activate, this key can be left empty if the group doesn't need to activate anything. In this example, it's called Cage01, so it will fire the event called Cage01 in the stage's lua file; which, as you can probably guess, signalled a cage to open.

    The <ObjectCount> key simply lists how many objects this group has (and honestly shouldn't have even been a thing, but I wrote this thing incredibly badly).

    The subkeys within the <ObjectIDs> key simply give the ID of an object that should be in this group. These IDs are shown in the conversion log, and are also patched into the Generations SET if the Patch Generations SET option is used in the Converter (see below).

    "},{"location":"guides/nn/marathon/levels/glvl/#06-set-conversion","title":"'06 SET Conversion","text":"

    For converting between Generations and '06, we use the GLvl Converter. In the Source SET, select your Generations .set.xml file from your stage's cache directory in your GLvl location (will be named setdata_base.set.xml by default). If you've created any groups for your object layout (which need to be made manually, see above), then select the approriate groupdata_[x].group.xml file for the Groups XML option, otherwise, leave it blank.

    For the GLvl Templates, select the database\\objects folder.

    Target SET is simply where you want to save the converted object placement to.

    Filtered Object Names will prevent the Replace Object Names option from overwriting objects that have any of the inputted values as part of their names. This object is useful for group events where you're activating an object by its name.

    This converter can also convert from '06 to Generations by simply putting an '06 .set file as the source and a Generations .set.xml as the target. This can also convert '06 groups into an XML if a Groups XML path is specified.

    Due to how Sonic GLvl handles object IDs, they will often not match with the IDs that '06 uses. To correct this, choose the Patch Generations SET option, which will update the Generations .set.xml to show the correct IDs.

    "},{"location":"tools/general/audio/","title":"Audio Tools","text":""},{"location":"tools/general/audio/#sonicaudiotools","title":"SonicAudioTools","text":"

    A set of tools to modify CRIWARE file formats.

    Download Source Code

    "},{"location":"tools/general/audio/#vgaudiowpf","title":"VGAudio.Wpf","text":"

    An unofficial frontend for VGAudio on WPF.

    Download Source Code

    "},{"location":"tools/general/audio/#radx","title":"RADX","text":"

    Decoder and encoder for CRIWARE ADX file format.

    Download Source Code

    "},{"location":"tools/general/files/","title":"File Format Tools","text":""},{"location":"tools/general/files/#skythtools","title":"SkythTools","text":"

    Contains various tools for a bunch of Sonic the Hedgehog games. Read the README to have detailed information about each tool included in the repository.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/levels/","title":"Level Editing Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/levels/#sonicglvl","title":"SonicGLvl","text":"

    Level editor for Sonic Generations.

    Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/ar/","title":"AR/ARL Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/ar/#compressar","title":"CompressAR","text":"

    Tool to compress and decompress AR files for Sonic Generations, using 'makecab' and 'expand'.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/fco/","title":"FCO Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/fco/#fcoeditor","title":"fcoEditor","text":"

    FCO/Text editor for Sonic Generations

    Download Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/gte/","title":"GTE/GTM Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/gte/#glitterstudio","title":"GlitterStudio","text":"

    Editor application to open, modify, and resave GTE/GTM particle files for Sonic Generations.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/sav/","title":"SAV Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/sav/#generationsskilledit","title":"GenerationsSkillEdit","text":"

    Skill Set Editor for Sonic Generations save files.

    Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/xncp/","title":"XNCP Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/xncp/#010-editor","title":"010 Editor","text":"

    Allows editing various file formats, in particular the XNCP format through the use of a template.

    Download XNCP Template

    "},{"location":"tools/hedgehog-engine/blueblur/files/xncp/#shuriken","title":"Shuriken","text":"

    XNCP Editor with graphical user interface.

    Source Code

    "},{"location":"tools/hedgehog-engine/common/animation/","title":"Animation Tools","text":""},{"location":"tools/hedgehog-engine/common/animation/#havokanimationexporter","title":"HavokAnimationExporter","text":"

    A tool that allows you to generate Havok skeleton and animation data (.skl.hkx/.anm.hkx) from FBX files.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/common/files/","title":"File Format Tools","text":""},{"location":"tools/hedgehog-engine/common/files/#hedgearchiveeditor","title":"HedgeArchiveEditor","text":"

    A user interface for HedgeArcPack.

    Download

    "},{"location":"tools/hedgehog-engine/common/files/#hedgearcpack","title":"HedgeArcPack","text":"

    Command line tool that allows the extraction and creation of Hedgehog Engine package files (AR, PFD and PAC).

    Download Source Code

    "},{"location":"tools/hedgehog-engine/common/levels/","title":"Level Editing Tools","text":""},{"location":"tools/hedgehog-engine/common/levels/#hedgeedit","title":"HedgeEdit","text":"

    Level editor for Hedgehog Engine.

    Download

    "},{"location":"tools/hedgehog-engine/common/lighting/","title":"Lighting Tools","text":""},{"location":"tools/hedgehog-engine/common/lighting/#hedgegi","title":"HedgeGI","text":"

    Tool that allows you to bake global illumination and light field data for Hedgehog Engine games.

    Source Code

    "},{"location":"tools/hedgehog-engine/common/lighting/#soniclighttools","title":"SonicLightTools","text":"

    Small collection of tools to read, write, and edit .light files for Sonic Unleashed/Generations/Lost World/Forces.

    Source Code

    "},{"location":"tools/hedgehog-engine/common/models/","title":"Model Tools","text":""},{"location":"tools/hedgehog-engine/common/models/#modelfbx","title":"ModelFBX","text":"

    Converts Hedgehog Engine model files into the FBX format. Part of libgens.

    Source Code

    "},{"location":"tools/hedgehog-engine/common/models/#modelconverter","title":"ModelConverter","text":"

    Converts Assimp supported model formats into a Hedgehog Engine model file, with various batch scripts for the different games.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/common/text/","title":"Text tools","text":""},{"location":"tools/hedgehog-engine/common/text/#puyo-text-editor","title":"Puyo Text Editor","text":"

    Tool for editing CNVRS-TEXT files

    Download Source Code

    "},{"location":"tools/hedgehog-engine/rainbow/files/","title":"File Format Tools","text":""},{"location":"tools/hedgehog-engine/rainbow/files/#acorn-engine-godot-bse","title":"Acorn Engine (godot-bse)","text":"

    A modified version of Godot that works with Sonic Colors: Ultimate. Instructions are included in the repository.

    Source Code

    "},{"location":"tools/hedgehog-engine/rangers/models/","title":"Model Tools","text":""},{"location":"tools/hedgehog-engine/rangers/models/#hedgeneedle","title":"HedgeNeedle","text":"

    Command line tool for working with Sonic Frontiers model files.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/rangers/files/anmpxd/","title":"ANM.PXD Tools","text":""},{"location":"tools/hedgehog-engine/rangers/files/anmpxd/#frontiersanimdecompress","title":"FrontiersAnimDecompress","text":"

    Command line tool that allows the compression and decompression of Frontiers animation files (ANM.PXD).

    Download Source Code

    "},{"location":"tools/hedgehog-engine/rangers/files/btmesh/","title":"BTMesh Tools","text":""},{"location":"tools/hedgehog-engine/rangers/files/btmesh/#btmesh","title":"btmesh","text":"

    A command line tool that allows you to convert FBX files to .btmesh/.pccol.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/rangers/files/cemt/","title":"CEMT Tools","text":""},{"location":"tools/hedgehog-engine/rangers/files/cemt/#effect-color-tool","title":"Effect Color Tool","text":"

    Editor tool for working with Sonic Frontiers CEMT files.

    Download

    "},{"location":"tools/hedgehog-engine/rangers/files/rfl/","title":"RFL Tools","text":""},{"location":"tools/hedgehog-engine/rangers/files/rfl/#010-editor","title":"010 Editor","text":"

    Allows editing various file formats. Frontiers RFL files are supported through the use of specific templates.

    Download Binary Templates

    "},{"location":"tools/hedgehog-engine/sonic2010/levels/","title":"Level Editing Tools","text":""},{"location":"tools/hedgehog-engine/sonic2010/levels/#sonic-colors-set-editor","title":"Sonic Colors Set Editor","text":"

    Sonic Colors Set Data editor powered by HedgeLib.

    Source Code

    "},{"location":"tools/hedgehog-engine/sonic2010/files/arc/","title":"ARC Tools","text":""},{"location":"tools/hedgehog-engine/sonic2010/files/arc/#brawlcrate","title":"BrawlCrate","text":"

    Allows editing ARC file format, viewing the models, textures, etc...

    Download Source code

    "},{"location":"tools/hedgehog-engine/sonic2010/files/general/","title":"General Tools","text":""},{"location":"tools/hedgehog-engine/sonic2010/files/general/#soniccolorsexporter","title":"SonicColorsExporter","text":"

    Info

    Importing animations exported by this tool require the dkAnimErwin Maya plugin You also need to edit the dkAnimErwin.mel script of the plugin for it to work properly. Go to File > Windows > General Editor > Script Editor, then File > Open Script > dkAnimErwin.mel, and add dkAnimErwin; to the last line of the file.

    Allows exporting various assets from Sonic Colors file formats, such as animations, models, materials, etc.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/sonic2010/files/xncp/","title":"XNCP Tools","text":"

    Warning

    For Sonic Colors, the XNCP file format is only used in Sonic Colours: Ultimate

    "},{"location":"tools/hedgehog-engine/sonic2010/files/xncp/#010-editor","title":"010 Editor","text":"

    Allows editing various file formats, in particular the XNCP format through the use of a template.

    Download XNCP Template

    "},{"location":"tools/hedgehog-engine/sonic2010/files/xncp/#coloursxncpgen","title":"ColoursXNCPGen","text":"

    Basic tool to combine XNCP and DXL files, as well as split XNCP files to an XNCP-DXL pair.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/sonic2010/files/xtb/","title":"XTB Tools","text":""},{"location":"tools/hedgehog-engine/sonic2010/files/xtb/#soniccolorsxtbconv","title":"SonicColorsXTBConv","text":"

    Converts XTB files to XML and vice versa.

    Download Source code

    "},{"location":"tools/hedgehog-engine/sonic2013/levels/","title":"Level Editing Tools","text":""},{"location":"tools/hedgehog-engine/sonic2013/levels/#sonicglvl-lost-world","title":"SonicGLvl Lost World","text":"

    Fork of SonicGLvl for Sonic Lost World.

    Source Code

    "},{"location":"tools/hedgehog-engine/swa/files/","title":"File Formats","text":""},{"location":"tools/hedgehog-engine/swa/files/#unleashed-mod-toolbox","title":"Unleashed Mod Toolbox","text":"

    Command line tool that allows the extraction and decompression of Sonic Unleashed .ar.00 and .arl files.

    Download Source Code

    "},{"location":"tools/nn/marathon/files/","title":"File Format Tools","text":""},{"location":"tools/nn/marathon/files/#marathoncli","title":"Marathon.CLI","text":"

    All in one tool that allows extraction and repacking of Sonic '06 .arc archives, as well as conversion of multiple formats to and from human readable JSON files.

    Download Source Code

    "},{"location":"tools/nn/marathon/levels/","title":"Level Editing Tools","text":""},{"location":"tools/nn/marathon/levels/#sonic-06-stage-editing-archive","title":"Sonic '06 Stage Editing Archive","text":"

    A collection of various small tools and a set of custom SonicGLvl object templates designed to make it more feasible to work on stage edits and custom stages for Sonic '06.

    Source Code

    "},{"location":"tools/others/adventure/files/","title":"File Format Tools","text":""},{"location":"tools/others/adventure/files/#sa_tools","title":"sa_tools","text":"

    A toolkit for modifying and extracting data from the Sonic Adventure series of games.

    Download Source Code

    "},{"location":"tools/renderware/common/levels/","title":"Level Editing Tools","text":""},{"location":"tools/renderware/common/levels/#heroes-power-plant","title":"Heroes Power Plant","text":"

    Level editor for Sonic Heroes and Shadow the Hedgehog.

    Download Source Code

    "},{"location":"tools/renderware/common/files/one/","title":"ONE Tools","text":""},{"location":"tools/renderware/common/files/one/#heroesone-reloaded","title":"HeroesONE Reloaded","text":"

    Tool/library for reading and writing Sonic Heroes and Shadow The Hedgehog's .ONE archives.

    Download Source Code

    "},{"location":"tools/renderware/common/files/pac/","title":"PAC Tools","text":""},{"location":"tools/renderware/common/files/pac/#pactool","title":"PACTool","text":"

    Archive editor for .PAC files from the PC and XBOX versions of Sonic Heroes and Shadow the Hedgehog.

    Source Code

    "},{"location":"tools/renderware/common/files/txd/","title":"TXD Tools","text":""},{"location":"tools/renderware/common/files/txd/#magictxd","title":"Magic.TXD","text":"

    Universal RenderWare TXD tool that supports creating, viewing and editing texture files.

    Download

    "},{"location":"tools/retro-engine/common/animation/","title":"Animation Tools","text":""},{"location":"tools/retro-engine/common/animation/#rsdk-animation-editor","title":"RSDK Animation Editor","text":"

    Animation editor for RSDK.

    Download Source Code

    "},{"location":"tools/retro-engine/common/files/","title":"File Format Tools","text":""},{"location":"tools/retro-engine/common/files/#retroed","title":"RetroED","text":"

    A general purpose editor for all RSDK versions below RSDKv5.

    Source Code

    "},{"location":"tools/retro-engine/common/models/","title":"Model Tools","text":""},{"location":"tools/retro-engine/common/models/#modelmaniac","title":"ModelManiac","text":"

    Importer and exporter for RSDK model formats.

    Source Code

    "}]} \ No newline at end of file +{"config":{"lang":["en"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"discoveries/blueblur/hud/blb_gauge/","title":"Unused Time Eater Gauge","text":"

    There's an unused gauge that was supposed to be used in the Time Eater boss battle. The gauge is present in bb.cpk/SonicActionCommonHud/ui_gameplay.xncp, in the blb_gauge XNCP scene. Unfortunately, this gauge isn't functional in-game, and its usage also remains unknown.

    Visually, this element appears to be finished, and it even features animations. Below you can see the available animations for this element. Some were recorded in-game, but others were recorded using a WIP build of Shuriken, which may not be 100% accurate.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#intro_anim","title":"Intro_Anim","text":"

    Following the naming scheme of almost every XNCP animation made for Generations, this was supposed to be played whenever the HUD element showed up on screen. Simple slide-in animation.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#change_c2g-change_g2c","title":"change_c2g / change_g2c","text":"

    These animations are played whenever you switch between Classic Sonic to Modern Sonic and vice versa. The video below shows a recording of the animation in-game.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#change_c2w-change_g2w","title":"change_c2w / change_g2w","text":"

    Seems like these were supposed to be animations for changing to an intermediate state between Classic and Modern Sonic, like in the final part of the boss battle. The \"w\" means \"double\" in japanese.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#cl_gauge_size_1","title":"cl_gauge_size_1","text":"

    Animation for Classic Sonic's gauge.

    "},{"location":"discoveries/blueblur/hud/blb_gauge/#gn_gauge_size_1","title":"gn_gauge_size_1","text":"

    Animation for Modern Sonic's gauge.

    "},{"location":"discoveries/sonic2013/cutscenes/levels/","title":"Real-Time Cutscene Levels","text":"

    Empty folders can be found for the real-time cutscene levels in the raw folder found within the Wii U release of the game. These folders are listed below.

    raw\n\u251c\u2500\u2500 event\n|   |\u2500\u2500 scene\n\u2502   |   \u251c\u2500\u2500 ev000\n\u2502   \u2502   \u251c\u2500\u2500 ev120\n\u2502   \u2502   \u251c\u2500\u2500 ev125\n\u2502   \u2502   \u251c\u2500\u2500 ev130\n\u2502   \u2502   \u251c\u2500\u2500 ev140\n\u2502   \u2502   \u251c\u2500\u2500 ev150\n\u2502   \u2502   \u251c\u2500\u2500 ev210\n\u2502   \u2502   \u251c\u2500\u2500 ev220\n\u2502   \u2502   \u251c\u2500\u2500 ev230\n\u2502   \u2502   \u251c\u2500\u2500 ev240\n\u2502   \u2502   \u251c\u2500\u2500 ev250\n\u2502   \u2502   \u251c\u2500\u2500 ev310\n\u2502   \u2502   \u251c\u2500\u2500 ev320\n\u2502   \u2502   \u251c\u2500\u2500 ev330\n\u2502   \u2502   \u251c\u2500\u2500 ev345\n\u2502   \u2502   \u251c\u2500\u2500 ev350\n\u2502   \u2502   \u251c\u2500\u2500 ev360\n\u2502   \u2502   \u251c\u2500\u2500 ev410\n\u2502   \u2502   \u251c\u2500\u2500 ev420\n\u2502   \u2502   \u251c\u2500\u2500 ev430\n\u2502   \u2502   \u251c\u2500\u2500 ev435\n\u2502   \u2502   \u251c\u2500\u2500 ev440\n\u2502   \u2502   \u251c\u2500\u2500 ev450\n\u2502   \u2502   \u251c\u2500\u2500 ev510\n\u2502   \u2502   \u251c\u2500\u2500 ev520\n\u2502   \u2502   \u251c\u2500\u2500 ev530\n\u2502   \u2502   \u251c\u2500\u2500 ev540\n\u2502   \u2502   \u251c\u2500\u2500 ev550\n\u2502   \u2502   \u251c\u2500\u2500 ev610\n\u2502   \u2502   \u251c\u2500\u2500 ev620\n\u2502   \u2502   \u251c\u2500\u2500 ev630\n\u2502   \u2502   \u251c\u2500\u2500 ev642\n\u2502   \u2502   \u251c\u2500\u2500 ev645\n\u2502   \u2502   \u251c\u2500\u2500 ev650\n\u2502   \u2502   \u251c\u2500\u2500 ev720\n\u2502   \u2502   \u251c\u2500\u2500 ev730\n\u2502   \u2502   \u251c\u2500\u2500 ev740\n\u2502   \u2502   \u251c\u2500\u2500 ev750\n\u2502   \u2502   \u251c\u2500\u2500 ev755\n\u2502   \u2502   \u251c\u2500\u2500 ev757\n\u2502   \u2502   \u251c\u2500\u2500 ev760\n\u2502   \u2502   \u251c\u2500\u2500 ev764\n\u2502   \u2502   \u251c\u2500\u2500 ev770\n|   |\u2500\u2500 stage\n\u2502   |   \u251c\u2500\u2500 ev000\n\u2502   \u2502   \u251c\u2500\u2500 ev120\n\u2502   \u2502   \u251c\u2500\u2500 ev130\n\u2502   \u2502   \u251c\u2500\u2500 ev140\n\u2502   \u2502   \u251c\u2500\u2500 ev150\n\u2502   \u2502   \u251c\u2500\u2500 ev210\n\u2502   \u2502   \u251c\u2500\u2500 ev220\n\u2502   \u2502   \u251c\u2500\u2500 ev250\n\u2502   \u2502   \u251c\u2500\u2500 ev342\n\u2502   \u2502   \u251c\u2500\u2500 ev350\n\u2502   \u2502   \u251c\u2500\u2500 ev430\n\u2502   \u2502   \u251c\u2500\u2500 ev440\n\u2502   \u2502   \u251c\u2500\u2500 ev520\n\u2502   \u2502   \u251c\u2500\u2500 ev530\n\u2502   \u2502   \u251c\u2500\u2500 ev620\n\u2502   \u2502   \u251c\u2500\u2500 ev642\n\u2502   \u2502   \u251c\u2500\u2500 ev645\n\u2502   \u2502   \u251c\u2500\u2500 ev710\n\u2502   \u2502   \u251c\u2500\u2500 ev720\n\u2502   \u2502   \u251c\u2500\u2500 ev750\n

    "},{"location":"discoveries/sonic2013/levels/colors/","title":"Colors Leftovers","text":""},{"location":"discoveries/sonic2013/levels/colors/#tropical-resort-act-1","title":"Tropical Resort Act 1","text":"

    There\u2019s an unused Tropical Resort Act 1 entry in Sonic Lost World\u2019s actstgmission.lua file.

    actstgmission.lua
    mission_all = {\n    -- RSO(\u30ea\u30be\u30fc\u30c8\u9762)\n    {\n        missions = {\n            -- \uff21\uff23\uff34\uff11\uff08\u65e7\uff21\uff23\uff34\uff11\u306e\u524d\u534a\u90e8\u5206\uff09\n            {\n                name        = \"stg110\",\n                data        = \"stg110\",\n                player_pos  = { -11942.84, 1575.931, 16972.49 },\n                player_dir  = { 0.0, -159.2, 0.0 },\n                start_event = 1,\n                bgm         = \"bgm_stg110_rso\",\n                phantoms    = { \"laser\", \"drill\" },\n                result_bg   = \"result_01_rso_act1\",\n\n                --\u3010\u30b9\u30b3\u30a2\u8a2d\u5b9a\u9818\u57df\u3011\n                score = {\n                    rank = {\n                        60,   -- S rank (\u30b4\u30fc\u30eb\u79d2\u6570)\n                        120,  -- A rank\n                        180,  -- B rank\n                        240,  -- C rank\n                        320,  -- D rank\n                    },\n                    time_basis = 320000,\n                    time_down = 1100,\n\n                    no_miss = {\n                        280000,\n                        210000,\n                        182000,\n                        56000,\n                        28000,\n                    },\n\n                },\n            },\n        },\n    },\n}\n

    Only thing changed in this entry from the Sonic Colors version is that player_dir takes in a 3D value, just like every other Sonic Lost World entry.

    The entire score block, start_event and result_bg are leftovers from Colors as well, as those values are not read by Sonic Lost World's lua parser function.

    "},{"location":"discoveries/sonic2013/levels/colors/#actstgmissionlua","title":"actstgmission.lua","text":"

    This file is responsible for serving information to the game regarding stages, such as where the player should start at or what folder to read the assets for the stage from.

    "},{"location":"discoveries/sonic2013/levels/colors/#test-levels","title":"Test Levels","text":"

    Due to the release of Sonic Colors Ultimate we can identify a few test levels from Sonic Colors that were reused in Sonic Lost World.

    actstgmission.lua
    test_mission_all = {\n   -- \u30d7\u30ed\u30b0\u30e9\u30de\u30c6\u30b9\u30c8.\n   {\n      missions = {\n         -- mission test(stg901)\n         {\n            name        = \"stg901\",\n            dir         = \"test/stg901\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n           --\u3010\u30b9\u30b3\u30a2\u8a2d\u5b9a\u9818\u57df\u3011\n            score = {\n               rank = {\n                   800000,  -- S rank\n                   700000,  -- A rank\n                   450000,  -- B rank\n                   200000,  -- C rank\n               },\n               time_basis = 10000,\n               time_down = 500,\n\n               no_miss = {\n                  100000,\n                  50000,\n                  25000,\n                  10000,\n                  0,\n               },\n            },\n         },\n         -- mission test(stg902)\n         {\n            name        = \"stg902\",\n            dir         = \"test/stg902\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n      },\n   },\n}\n

    The only difference here when compared to the Colors version is that the entries used take a 3D value for the player_dir tag and the inclusion of the asteroid wisp in the phantoms tag.

    actstgdata.lua
    stage_all = {\n   -- \u30c6\u30b9\u30c8\u30b9\u30c6\u30fc\u30b8\n   {\n      title = \"\u30c6\u30b9\u30c8\u30b9\u30c6\u30fc\u30b8\",\n\n      stages = {\n         -- \u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c6\u30b9\u30c8\u7528\n         {\n            name = \"stg901\",\n            title = \"\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\",\n         },\n         -- \u897f\u6751\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\n         {\n            name = \"stg902\",\n            title = \"\u897f\u6751\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\",\n         },\n         -- Multi\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c6\u30b9\u30c8\u7528\n         {\n            name = \"stg905\",\n            title = \"Multi\u30aa\u30d6\u30b8\u30a7\u30af\u30c8\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\",\n         },\n      },\n   },\n}\n

    The Japanese titles translate to the same values in Sonic Colors Ultimate's files.

    "},{"location":"discoveries/sonic2013/levels/colors/#actstgdatalua","title":"actstgdata.lua","text":"

    This file was only meant to be used by the game's debug menu, which does not exist in the final release, thus making the file a leftover.

    "},{"location":"discoveries/sonic2013/levels/deleted/","title":"Deleted Levels","text":"

    There are several levels that have been removed from the game, but their entries can still be found in actstgmission.lua.

    actstgmission.lua
    mission_all = {\n    {\n        missions = {\n            --old stage\n            -- w2-a03 \u53e4\u4ee3\u90fd\u5e02\n            {\n                name        = \"w2a03\",\n                data        = \"w2a03\",\n                player_pos  = { 0.00, 0.00, 51.00 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n            -- w2-a04 \u30bf\u30ab\u30a2\u30b7\u30ac\u30cb\n            {\n                name        = \"w2a04\",\n                data        = \"w2a04\",\n                player_pos  = { 2.19, 0.47, 0.49 },\n                player_dir  = { 0.0, 90.0, 0.0 },\n                player_mode = \"2D\",\n            },\n            -- w2-a05 \u30b5\u30f3\u30c9\u30ef\u30fc\u30e0\u4f53\u5185\n            {\n                name        = \"w2a05\",\n                data        = \"w2a05\",\n                player_pos  = { -1000.29, 540.33, -7.00 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n                player_mode = \"2D\",\n            },\n            -- w3-a07 \u5357\u56fd\u30d3\u30fc\u30c12\n            {\n                name        = \"w3a07\",\n                data        = \"w3a07\",\n                player_pos  = { -0.54, 0.44, 105.00 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n\n            -- w1-a02 \u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f\n            {\n                name        = \"w1a02\",\n                data        = \"w1a02\",\n                player_pos  = { 50.1, -10.55, -188.27 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n            -- w1-a05 \u30e2\u30a2\u30a4\n            {\n                name        = \"w1a05\",\n                data        = \"w1a05\",\n                player_pos  = { 80, 10067.96, 0 },\n                player_dir  = { 0.0, 90.0, 0.0 },\n                player_mode = \"2D\",\n            },\n            -- w1-c01 \u30ad\u30f3\u6597\u96f2\n            {\n                name        = \"w1c01\",\n                data        = \"w1c01\",\n                player_pos  = { 0.00, -95.00, 30.00 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n            -- w2-a02 \u30b9\u30ab\u30a4\u30c1\u30a7\u30a4\u30b9\n            {\n                name        = \"w2a02\",\n                data        = \"w2a02\",\n                player_pos  = { 2401.1, 63.06, 3125.81 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n                player_mode = \"SKYCHASE\"\n            },\n            -- w4-a02 \u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f2\n            {\n                name        = \"w4a02\",\n                data        = \"w4a02\",\n                player_pos  = { -0.18, -52.03, -73.52 },\n                player_dir  = { 0.0, 180.0, 0.0 },\n            },\n            -- w4-a03 ilomilo\u304a\u83d3\u5b50\n            {\n                name        = \"w4a03\",\n                data        = \"w4a03\",\n                player_pos  = { -1.08, 3.02, -3.30 },\n                player_dir  = { 0.0, 90.0, 0.0 },\n                player_mode = \"2D\",\n            },\n        },\n    },\n}\n
    "},{"location":"discoveries/sonic2013/levels/original-order/","title":"Original Level Order","text":""},{"location":"discoveries/sonic2013/levels/original-order/#partial-original-order","title":"Partial Original Order","text":"

    Up to a point the game's original level order can be revealed to us by investigating the game's leftover actstgdata.lua file.

    actstgdata.lua
    old_stage_all = {\n   -- w1\n   {\n      title = \"w1\u8349\u539f\",\n\n      stages = {\n         {\n            name = \"w1a01\",\n            title = \"w1-1:\u30b0\u30e9\u30b9\u30d2\u30eb\",\n         },\n         {\n            name = \"w1a02\",\n            title = \"w1-2:\u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f\",\n         },\n         {\n            name = \"w1a03\",\n            title = \"w1-3:\u6708\u5149\",\n         },\n         {\n            name = \"w1a04\",\n            title = \"w1-4:\u5927\u30ca\u30fc\u30eb\u8ecd\",\n         },\n         {\n            name = \"w1a05\",\n            title = \"w1-5:\u30e2\u30a2\u30a4\",\n         },\n         {\n            name = \"w1c01\",\n            title = \"w1-A:\u30ad\u30f3\u6597\u96f2\",\n         },\n      },\n   },\n   -- w2\n   {\n      title = \"w2\u7802\u6f20\",\n\n      stages = {\n         {\n            name = \"w2a01\",\n            title = \"w2-1:\u30b5\u30f3\u30c9\u30ef\u30fc\u30e0\u8ecd\",\n         },\n         {\n            name = \"w2a02\",\n            title = \"w2-2:\u30b9\u30ab\u30a4\u30c1\u30a7\u30a4\u30b9\",\n         },\n         {\n            name = \"w2a03\",\n            title = \"w2-3:\u53e4\u4ee3\u90fd\u5e02\",\n         },\n         {\n            name = \"w2a04\",\n            title = \"w2-4:\u30bf\u30ab\u30a2\u30b7\u30ac\u30cb\",\n         },\n         {\n            name = \"w2a05\",\n            title = \"w2-5:\u30b5\u30f3\u30c9\u30ef\u30fc\u30e0\u4f53\u5185\",\n         },\n         {\n            name = \"w2a06\",\n            title = \"w2-6:\u7adc\u5dfb\",\n         },\n         {\n            name = \"w2c01\",\n            title = \"w2-A:\u9ec4\u8272\u4e09\u9023\u30d0\u30cd\",\n         },\n      },\n   },\n   -- w3\n   {\n      title = \"w3\u5357\u56fd\",\n\n      stages = {\n         {\n            name = \"w3a01\",\n            title = \"w3-1:\u5357\u56fd\u30d3\u30fc\u30c1\",\n         },\n         {\n            name = \"w3a03\",\n            title = \"w3-3:\u30d5\u30eb\u30fc\u30c4\u8fb2\u5712\",\n         },\n         {\n            name = \"w3a07\",\n            title = \"w3-7:\u5357\u56fd\u30d3\u30fc\u30c12\",\n         },\n      },\n   },\n   -- w4\n   {\n      title = \"w4\u96ea\",\n\n      stages = {\n         {\n            name = \"w4a01\",\n            title = \"w4-1:\u8ecd\u4e8b\u5de5\u5834\",\n         },\n         {\n            name = \"w4a02\",\n            title = \"w4-2:\u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f2\",\n         },\n         {\n            name = \"w4a03\",\n            title = \"w4-3:ilomilo\u304a\u83d3\u5b50\",\n         },\n      },\n   },\n   -- w5\n   {\n      title = \"w5\u30b8\u30e3\u30f3\u30b0\u30eb\",\n\n      stages = {\n         {\n            name = \"w5a01\",\n            title = \"w5-1:\u30b8\u30e3\u30f3\u30b0\u30eb\u8ecc\u9053\u65bd\u8a2d\",\n         },\n      },\n   },\n}\n

    Many of these levels have been deleted. However, there's plenty of changes we can dissect in this list.

    "},{"location":"discoveries/sonic2013/levels/original-order/#windy-hill","title":"Windy Hill","text":"Final Original w1a01 w1a01 w1a03 w1a02 xind01 w1a03 w1a06 w1a04 w1a05 w1c01"},{"location":"discoveries/sonic2013/levels/original-order/#w1a02","title":"w1a02","text":"

    Starting off just like the final, it swiftly changes gears by heading into w1a02 instead of w1a03. However, checking the description of the level (\u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f), it matches up with the final game's xind01 suggesting the two stages are one and the same, however the starting positions don't line up.

    xind01 w1a02 { -25.0, -43.3, 1328.6 } { 50.1, -10.55, -188.27 }"},{"location":"discoveries/sonic2013/levels/original-order/#w1a03","title":"w1a03","text":"

    The following level is w1a03, meaning Act 3 and Act 2 were likely swapped around early into development.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w1a04","title":"w1a04","text":"

    The order then continues with w1a04, which is originally used as Sky Road Act 1. This suggests that this level was meant to be used in Windy Hill, which is supported by the fact that the level shares a very similar look with that area of the game.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w1a05","title":"w1a05","text":"

    w1a05 shares its description (\u30e2\u30a2\u30a4) with the level xmoa01 (Silent Forest Act 4) suggesting, just like the previous stage, it was to come much sooner into the game, however once again the starting positions don't line up.

    xmoa01 w1a05 { -720, 7070, 0 } { 80, 10067.96, 0 }

    Looking at xmoa01's set data reveals a few leftover objects in the sky around w1a05's spawn position. This list includes: 4x - ObjPointSoundSource 1x - ObjGiantMoaiOut 1x - ObjGFieldConstant 1x - EventVolumeCameraChange 1x - GPathCamera 1x - GoalRing 1x - SetRigidBody

    The spawn position being so close to the GoalRing means the level was more than likely supposed to start close to its end, though not meaning it was a short level as the Moai objects function as warp objects.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w1c01","title":"w1c01","text":"

    Finally for Windy Hill there's w1c01. Taking note of the change from a to a c, it seems this level wasn't meant to be a normal act but a challenge level. Looking at the description (\u30ad\u30f3\u6597\u96f2) once again, it reveals to us that this level is non-other than xnim01 (Hidden World Act 1) from the final game, however once again there's a small difference in starting locations.

    xnim01 w1c01 { 0.00, -100.00,-10.00 } { 0.00, -95.00, 30.00 }

    Interestingly enough this leaves the final game's second encounter with Zazz in w1a06 nowhere to be seen.

    "},{"location":"discoveries/sonic2013/levels/original-order/#desert-ruins","title":"Desert Ruins","text":"Final Original w2a01 w2a01 xbee01 w2a02 xswe01 w2a03 w2a06 w2a04 w2a05 w2a06 w2c01"},{"location":"discoveries/sonic2013/levels/original-order/#w2a02","title":"w2a02","text":"

    Starting off just like the final, it swiftly changes gears by heading into w2a02 instead of xbee01. However, checking the description of the level (\u30b9\u30ab\u30a4\u30c1\u30a7\u30a4\u30b9), it matches up with the final game's xsky01, suggesting the two stages are one and the same, however the starting positions don't line up. Interestingly enough this level also has the SKYCHASE tag, meaning it was a level where you controlled the Tornado just like the final iteration of the stage.

    xsky01 w2a02 { 0.0, 270.0, 17950.0 } { 2401.1, 63.06, 3125.81 }

    Test level stg823 has the following comment, which is about this level: w2-2\uff1a\u76f4\u5f8420\uff4d\u30c6\u30b9\u30c8. This comment roughly translates to World 2-2: 20m Diameter Test.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w2a03","title":"w2a03","text":"

    This level sadly does not have a final counterpart in the release of the game. Its description roughly translates to Ancient City.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w2a04","title":"w2a04","text":"

    This level sadly does not have a final counterpart in the release of the game. Its description roughly translates to Japanese Spider Crab.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w2a05","title":"w2a05","text":"

    This level sadly does not have a final counterpart in the release of the game. Its description roughly translates to Sandworm Body.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w2c01","title":"w2c01","text":"

    w2c01 is the final level of the original order for Desert Ruins, but it's actually used as Sky Road Act 4 in the final game. The aesthetics of the area does match up with the look of Desert Ruins, so it's quite likely that this level was supposed to be there originally. The description for this level roughly translates to \"Yellow Triple Spring\", meaning it was very likely going to function like the Yellow Spring levels from Sonic Colors. This is supported by the fact that the Moving Springs in the level behave very similarly to the Yellow Springs in Sonic Colors.

    "},{"location":"discoveries/sonic2013/levels/original-order/#tropical-coast","title":"Tropical Coast","text":"

    From here on out the original level order becomes very segmented with barely any trace left of it.

    Final Original w3a01 w3a01 w3a03 xsea01 w3a03 w3a06 w6a03 w3a07"},{"location":"discoveries/sonic2013/levels/original-order/#w3a07","title":"w3a07","text":"

    This level sadly does not have a final counterpart in the release of the game. Its description is the same as w3a01's with but it has a 2 at the end.

    "},{"location":"discoveries/sonic2013/levels/original-order/#frozen-factory","title":"Frozen Factory","text":"Final Original w4a01 w4a01 w4a04 w4a02 xcas01 w4a03 w4a06"},{"location":"discoveries/sonic2013/levels/original-order/#w4a02","title":"w4a02","text":"

    The second level instead of being w4a04 is w4a02. However, checking the description of the level (\u30a4\u30f3\u30c7\u30a3\u6d1e\u7a9f2), it matches up with the final game's xind02 (Silent Forest Act 3) suggesting the two stages are one and the same, however the starting positions don't line up.

    xind02 w4a02 { 0.00, -49.99, 14663.00 } { -0.18, -52.03, -73.52 }"},{"location":"discoveries/sonic2013/levels/original-order/#w4a03","title":"w4a03","text":"

    The third level instead of being xcas01 is w4a03. However, checking the description of the level (ilomilo\u304a\u83d3\u5b50), it matches up with the final game's xswe01 (Desert Ruins Act 3) suggesting the two stages are one and the same, however the starting positions don't line up.

    xswe01 w4a03 { -590.76, 403.30, 1040.85 } { -1.08, 3.02, -3.30 }

    Inside the configuration file for the level xswe01, the file is still called w4a03_config.lua, however the brief section states it's a configuration file for w2a05.

    xswe01_config.lua
    ---------------------------------------------------------------\n-- @file    w4a03_config.lua\n-- @author  Jibiki_Hisae\n-- @brief   w2-5 \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\n-- @data    2012/7/20\n---------------------------------------------------------------\n
    "},{"location":"discoveries/sonic2013/levels/original-order/#silent-forest","title":"Silent Forest","text":"Final Original w5a01 w5a01 w5a02 xind02 xmoa01"},{"location":"discoveries/sonic2013/levels/original-order/#sky-road","title":"Sky Road","text":""},{"location":"discoveries/sonic2013/levels/original-order/#w6a03","title":"w6a03","text":"

    The secret level of Tropical Coast in the final game. As most of Sky Roads levels seem to come from elsewhere, it's hard to make a proper judgement on whether the stage would aesthetically belong in Sky Road or not, it does however play very similarly to w6a05, Sky Road's Act 3. The configuration file for the level does state that it belongs to Sky Road as well.

    w6a03_config.lua
    ---------------------------------------------------------------\n-- @file    w6a03_config.lua\n-- @author  Yoshitaka Miura\n-- @brief   w6-3 \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\n-- @data    2012/10/30\n---------------------------------------------------------------\n
    "},{"location":"discoveries/sonic2013/levels/original-order/#w6a05","title":"w6a05","text":"

    Inside the configuration file for the level xnim02 the brief section states it's a configuration file for w6a05. xnim02_config.lua

    ---------------------------------------------------------------\n-- @file     xnim02_config.lua\n-- @author  Yoshitaka_Miura\n-- @brief   w6-5 \u306e\u8a2d\u5b9a\u30d5\u30a1\u30a4\u30eb\n-- @data    2013/5/4\n---------------------------------------------------------------\n

    "},{"location":"discoveries/sonic2013/levels/original-order/#speculative-additions","title":"Speculative Additions","text":"

    This section includes educated guesses due to lack of leftover data from the game.

    "},{"location":"discoveries/sonic2013/levels/original-order/#tropical-coast_1","title":"Tropical Coast","text":"

    w3a02, w3a04, and w3c01 are nowhere to be seen. It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with. As the stage originally had a 7th act it's possible that is what would have been the equivalent of w3c01 in this zone.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w3a05","title":"w3a05","text":"

    Test level w0a04 has the following comment, which is about this level: w3-5\uff1aSV\u30ab\u30b8\u30ce\u30c6\u30b9\u30c8\uff08w0a04\uff09. This comment roughly translates to World 3-5: Sideview Casino Test (w0a04). This could mean that w3a05 turned into xcas01 later on into development, which is housed in Frozen Factory in the final game.

    "},{"location":"discoveries/sonic2013/levels/original-order/#frozen-factory_1","title":"Frozen Factory","text":"

    w4a05 and w4c01 are nowhere to be seen. It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with.

    "},{"location":"discoveries/sonic2013/levels/original-order/#silent-forest_1","title":"Silent Forest","text":"

    w5a04, w5a05, w5a06 and w5c01 are nowhere to be seen.It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with.

    "},{"location":"discoveries/sonic2013/levels/original-order/#w5a03","title":"w5a03","text":"

    The second level of Sky Road in the original game. The overall aesthetic of the level does match up with Silent Forest, which suggests it really did belong to Silent Forest at some point.

    "},{"location":"discoveries/sonic2013/levels/original-order/#sky-road_1","title":"Sky Road","text":"

    w6a01, w6a02, w6a06 and w6c01 are nowhere to be seen. It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with.

    "},{"location":"discoveries/sonic2013/levels/original-order/#lava-mountain","title":"Lava Mountain","text":"

    w7a04, w7a05 and w7c01 are nowhere to be seen. It's possible that these levels turned into one of the levels that don't start with the world number, or that they didn't exist to begin with.

    "},{"location":"discoveries/sonic2013/levels/test/","title":"Test Levels","text":"

    There are several entries for test levels leftover in Sonic Lost World's testmission.lua file.

    Some of these entries are using the naming scheme from Sonic Colors for stage names, that being stgXYY. Another chunk of the entries are named according to the scheme standardized in Sonic Lost World, w0xYY.

    testmission.lua
    ---------------------------------------------------------------\n-- @file    testmission.lua\n-- @author  Kawabata Yoshitaka\n-- @brief   \u30c6\u30b9\u30c8\u7528\u30df\u30c3\u30b7\u30e7\u30f3\u3092\u5b9a\u7fa9\u3059\u308b\u30d5\u30a1\u30a4\u30eb\u3067\u3059\n---------------------------------------------------------------\n\ntest_mission_all = {\n\n   -- \u30d7\u30ed\u30b0\u30e9\u30de\u30c6\u30b9\u30c8.\n   {\n      missions = {\n         -- mission test(w0a01)\n         {\n            name        = \"w0a01\",\n            dir         = \"test/w0a01\",\n            player_pos  = { -1111.71, 49.99, -594.29 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 270.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n         -- mission test(w0c99)\u30c7\u30b6\u30a4\u30f3\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\n         {\n            name        = \"w0c99\",\n            dir         = \"test/w0c99\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0c99)\u64ae\u5f71\u6240\n         {\n            name        = \"w0c99_2\",\n            dir         = \"test/w0c99\",\n            player_pos  = { -1200, 0, -1200 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0c98)\u30b7\u30a7\u30fc\u30c0\u30fc\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\n         {\n            name        = \"w0c98\",\n            dir         = \"test/w0c98\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0c97)\u30c7\u30b6\u30a4\u30f3\u30c6\u30b9\u30c8\u30de\u30c3\u30d72(\u6697\u3044\u9762)\n         {\n            name        = \"w0c97\",\n            dir         = \"test/w0c97\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0c96)\u30b3\u30ea\u30b8\u30e7\u30f3\u30c6\u30b9\u30c8\u30de\u30c3\u30d7\n         {\n            name        = \"w0c96\",\n            dir         = \"test/w0c96\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            dead_line       = -500,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(stg901)\n         {\n            name        = \"stg901\",\n            dir         = \"test/stg901\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n           --\u3010\u30b9\u30b3\u30a2\u8a2d\u5b9a\u9818\u57df\u3011\n            score = {\n               rank = {\n                   800000,  -- S rank\n                   700000,  -- A rank\n                   450000,  -- B rank\n                   200000,  -- C rank\n               },\n               time_basis = 10000,\n               time_down = 500,\n\n               no_miss = {\n                  100000,\n                  50000,\n                  25000,\n                  10000,\n                  0,\n               },\n            },\n         },\n         -- mission test(stg811)\n         {\n            name        = \"stg811\",\n            dir         = \"test/stg811\",\n            player_pos  = { -0.65, 0.09, 50.8 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n         -- mission test(stg812)\n         {\n            name        = \"stg812\",\n            dir         = \"test/stg812\",\n            player_pos  = { 0, -50, -60 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n         -- mission test(stg813)\n         {\n            name        = \"stg813\",\n            dir         = \"test/stg813\",\n            player_pos  = { 4000.0, -2500.0, 7050.0 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n         -- mission test(stg814)\n         {\n            name        = \"stg814\",\n            dir         = \"test/stg814\",\n            player_pos  = { 0,0.5, 55 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n         -- mission test(stg815)\n         {\n            name        = \"stg815\",\n            dir         = \"test/stg815\",\n            player_pos  = { -7677.16, 841.78, 50.83 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n         },\n          -- mission test(stg816)\n         {\n            name        = \"stg816\",\n            dir         = \"test/stg816\",\n            player_pos  = { 1.92, -32.61, 237.17 },\n            player_mode = \"2D\",\n            player_dir  = { 0.0, 90.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n          -- mission test(stg817)\n         {\n            name        = \"stg817\",\n            dir         = \"test/stg817\",\n            player_pos  = { 0.04, 466.24, -6.63 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n          -- mission test(stg818)\n         {\n            name        = \"stg818\",\n            dir         = \"test/stg818\",\n            player_pos  = { 3.47, 320.30, -1.62 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n          -- mission test(stg819)\n         {\n            name        = \"stg819\",\n            dir         = \"test/stg819\",\n            player_pos  = { 1240.18, 1923.53, -15.45 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n          -- mission test(stg820)\n         {\n            name        = \"stg820\",\n            dir         = \"test/stg820\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(stg821)\n         {\n            name        = \"stg821\",\n            dir         = \"test/stg821\",\n            player_pos  = { 80, 72, 0 },\n            player_dir  = { 0.0, 90.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(stg822)\n         {\n            name        = \"stg822\",\n            dir         = \"test/stg822\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(stg823)\n         {\n            name        = \"stg823\",\n            dir         = \"test/stg823\",\n            player_pos  = { 1393.38, 42.29, 774.04 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"SKYCHASE\",\n         },\n          -- mission test(w0a03)\n         {\n            name        = \"w0a03\",\n            dir         = \"test/w0a03\",\n            player_pos  = { -267.95, 905.79, -2215.56 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a04)\n         {\n            name        = \"w0a04\",\n            dir         = \"test/w0a04\",\n            player_pos  = { 0.0, 0.0, 0.0 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a05)\n         {\n            name        = \"w0a05\",\n            dir         = \"test/w0a05\",\n            player_pos  = { -1.21, -87.9, 24.48 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a06)\n         {\n            name        = \"w0a06\",\n            dir         = \"test/w0a06\",\n            player_pos  = { 721.07, 994.32, -6.55 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a07)\n         {\n            name        = \"w0a07\",\n            dir         = \"test/w0a07\",\n            player_pos  = { 51.82, 40.93, -74.29 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a08)\n         {\n            name        = \"w0a08\",\n            dir         = \"test/w0a08\",\n            player_pos  = { 514.80, 648.50, 4219.32 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a09)\n         {\n            name        = \"w0a09\",\n            dir         = \"test/w0a09\",\n            player_pos  = { -5694.29, 672.14, -295.32 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a10)\n         {\n            name        = \"w0a10\",\n            dir         = \"test/w0a10\",\n            player_pos  = { -0.0, 50.0, 450.00 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a11)\n         {\n            name        = \"w0a11\",\n            dir         = \"test/w0a11\",\n            player_pos  = { 0.0, -32.86, 41.54 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a12)\n         {\n            name        = \"w0a12\",\n            dir         = \"test/w0a12\",\n            player_pos  = { 0.0, 510.0, 151.0 },\n            player_mode = \"TOP\",\n            player_dir  = { 0.0, 0.0, 0.0 },\n         },\n          -- mission test(w0a13)\n         {\n            name        = \"w0a13\",\n            dir         = \"test/w0a13\",\n            player_pos  = { -331.97, 600.15, -260.02 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"2D\",\n         },\n          -- mission test(w0a14)\n         {\n            name        = \"w0a14\",\n            dir         = \"test/w0a14\",\n            player_pos  = { -2624.82, -1925.34, 7370.24 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a15)\n         {\n            name        = \"w0a15\",\n            dir         = \"test/w0a15\",\n            player_pos  = { 500, -47, -15 },\n            player_dir  = { 0.0, 180.0, 0.0 },\n            player_mode = \"3D\",\n         },\n          -- mission test(w0a16)\n         {\n            name        = \"w0a16\",\n            dir         = \"test/w0a16\",\n            player_pos  = { 218.12, -501.53, -613.49 },\n            player_dir  = { 0.0, 0.0, 0.0 },\n            player_mode = \"2D\",\n         },\n         -- mission test(stg902)\n         {\n            name        = \"stg902\",\n            dir         = \"test/stg902\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, -180.0, 0.0 },\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(w0a90)\n         {\n            name        = \"w0a90\",\n            dir         = \"test/w0a90\",\n            player_pos  = { 0, 0, 0 },\n            player_dir  = { 0.0, 90.0, 0.0 },\n            player_mode = \"2D\",\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(stg978)\n         {\n            name        = \"stg978\",\n            dir         = \"test/stg978\",\n            player_pos  = { 8147, -360, -18974 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\" },\n         },\n         -- mission test(stg981)\n         {\n            name        = \"stg981\",\n            dir         = \"test/stg981\",\n            player_pos  = { 0, 5.00, -37.43 },\n            player_mode = \"2D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n            phantoms    = { \"laser\", \"drill\", \"spike\", \"rocket\", \"rodeo\", \"astro\", \"puzzle\", \"asteroid\" },\n         },\n         -- mission test(stg985)\n         {\n            name        = \"stg985\",\n            dir         = \"test/stg985\",\n            player_pos  = { 1065.00, 49.91, -594.88 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 270.0, 0.0 },\n            dead_line       = -50000,\n         },\n         -- mission test(stg988)\n         {\n            name        = \"stg988\",\n            dir         = \"test/stg988\",\n            player_pos  = { -1111.71, 49.99, -594.29 },\n            player_mode = \"3D\",\n            player_dir  = { 0.0, 270.0, 0.0 },\n            dead_line       = -50000,\n         },\n         -- mission test(stg989)\n         {\n            name        = \"stg989\",\n            dir         = \"test/stg989\",\n            player_pos  = { 0, -138.52, -301.15 },\n            player_mode = \"2D\",\n            player_dir  = { 0.0, 180.0, 0.0 },\n            dead_line       = -50000,\n         },\n      },\n   },\n}\n

    Empty folders can be found for some of the test levels in the raw folder found within the Wii U release of the game. These folders are listed below.

    raw\n\u251c\u2500\u2500 test\n\u2502   \u251c\u2500\u2500 stg811\n\u2502   \u251c\u2500\u2500 stg812\n\u2502   \u251c\u2500\u2500 stg813\n\u2502   \u251c\u2500\u2500 stg814\n\u2502   \u251c\u2500\u2500 stg815\n\u2502   \u251c\u2500\u2500 stg817\n\u2502   \u251c\u2500\u2500 stg818\n\u2502   \u251c\u2500\u2500 stg819\n\u2502   \u251c\u2500\u2500 stg820\n\u2502   \u251c\u2500\u2500 stg821\n\u2502   \u251c\u2500\u2500 stg822\n\u2502   \u251c\u2500\u2500 stg823\n\u2502   \u251c\u2500\u2500 stg901\n\u2502   \u251c\u2500\u2500 stg902\n\u2502   \u251c\u2500\u2500 stg978\n\u2502   \u251c\u2500\u2500 stg981\n\u2502   \u251c\u2500\u2500 stg985\n\u2502   \u251c\u2500\u2500 stg988\n\u2502   \u251c\u2500\u2500 stg989\n\u2502   \u251c\u2500\u2500 w0a01\n\u2502   \u251c\u2500\u2500 w0a02\n\u2502   \u251c\u2500\u2500 w0a03\n\u2502   \u251c\u2500\u2500 w0a04\n\u2502   \u251c\u2500\u2500 w0a05\n\u2502   \u251c\u2500\u2500 w0a06\n\u2502   \u251c\u2500\u2500 w0a07\n\u2502   \u251c\u2500\u2500 w0a08\n\u2502   \u251c\u2500\u2500 w0a09\n\u2502   \u251c\u2500\u2500 w0a10\n\u2502   \u251c\u2500\u2500 w0a11\n\u2502   \u251c\u2500\u2500 w0a12\n\u2502   \u251c\u2500\u2500 w0a13\n\u2502   \u251c\u2500\u2500 w0a14\n\u2502   \u251c\u2500\u2500 w0a15\n\u2502   \u251c\u2500\u2500 w0a16\n\u2502   \u251c\u2500\u2500 w0a90\n\u2502   \u251c\u2500\u2500 w0a96\n\u2502   \u251c\u2500\u2500 w0a97\n\u2502   \u251c\u2500\u2500 w0a98\n\u2502   \u251c\u2500\u2500 w0a99\n

    "},{"location":"discoveries/swa/ps3/install/","title":"Leftover Install Assets","text":"

    There are assets leftover from an installation process. The files and folder related to it are listed below.

    USRDIR\n\u251c\u2500\u2500 Install\n\u2502   \u251c\u2500\u2500 install_001.dds\n\u2502   \u251c\u2500\u2500 install_002.dds\n\u2502   \u251c\u2500\u2500 install_003.dds\n\u2502   \u251c\u2500\u2500 install_004.dds\n\u2502   \u251c\u2500\u2500 install_005.dds\n\u2502   \u251c\u2500\u2500 install_006.dds\n\u2502   \u251c\u2500\u2500 install_007.dds\n\u2502   \u2514\u2500\u2500 install_008.dds\n\u251c\u2500\u2500 Install.ar.00\n\u251c\u2500\u2500 Install.arl\n\u251c\u2500\u2500 install.files.xml\n\u2514\u2500\u2500 install.mounts.xml\n
    "},{"location":"discoveries/swa/ps3/install/#install-folder","title":"Install Folder","text":"

    Within the disk contains a folder named Install, which contains 8 images of several characters in Sonic Unleashed. This folder is also present in the PC port of Sonic Generations, inside bb2.cpk.

    "},{"location":"discoveries/swa/ps3/install/#install-archive","title":"Install Archive","text":"

    There is also UI (ui_install.yncp) that would have shown during the install process. Despite only being in the PlayStation 3 version of the game, it uses the controller prompts texture from the Xbox 360 version of the game.

    Please note that this was recorded using a WIP build of Shuriken, so the preview may not be 100% accurate to how it would look in-game.

    "},{"location":"discoveries/swa/ps3/install/#playstation-3s-icon0-and-pic1","title":"PlayStation 3's ICON0 and PIC1","text":"

    In install.files.xml there's information for the game to take icons/hdd_icon0.png and icons/hdd_pic1.png, and rename them to ICON0.png and PIC1.png respectively.

    install.files.xml
    <System Name=\"icons/hdd_icon0.png\" To=\"ICON0.PNG\"/><System Name=\"icons/hdd_pic1.png\" To=\"PIC1.PNG\"/>\n

    "},{"location":"docs/general/hson/","title":"HSON Format","text":"

    The Hedgehog Set Object Notation Format (\"HSON\") is a custom JSON-based file format designed collaboratively by Dar\u00edo, Radfordhound, \u0110e\u00e4Th, Skyth, and Sajid to represent object placement in a \"universal\" (non-game/editor-specific) way.

    It was designed with the following principles in-mind:

    "},{"location":"docs/general/hson/#json-schema","title":"JSON Schema","text":"

    The official JSON Schema for the HSON Format can be found at the hson-schema GitHub repository.

    It's useful (but not necessary) to validate .hson files against this schema in editors which support this feature, as doing so allows you to have autocompletion, descriptions of each property, and data validation.

    To validate all .hson files against the schema in your editor of choice, refer to the instructions in the README from the above repository.

    To manually validate against the schema on a per-file basis, include the following line at the top-level of your HSON file(s), before the HSON file format version parameter.

    \"$schema\": \"https://raw.githubusercontent.com/hedge-dev/hson-schema/main/hson.schema.json\",\n

    If writing tooling that generates HSON, consider having your tooling write this line to generated files.

    "},{"location":"docs/general/hson/#implementations","title":"Implementations","text":"

    As of the time of writing, the following known implementations exist:

    "},{"location":"docs/general/hson/#csharp","title":"C#","text":""},{"location":"docs/general/hson/#cpp","title":"C++","text":""},{"location":"docs/general/hson/#example","title":"Example","text":"

    The following is an example file in the HSON Format, which represents a \"project\" called \"Sample Project\" that contains 5 objects.

    This example file will be referenced periodically throughout the format specification.

    {\n  \"$schema\": \"https://raw.githubusercontent.com/hedge-dev/hson-schema/main/hson.schema.json\",\n  \"version\": 1,\n  \"metadata\": {\n    \"name\": \"Sample Project\",\n    \"author\": \"Takashi Iizuka, Morio Kishimoto\",\n    \"date\": \"2023-02-09T22:38:42Z\",\n    \"version\": \"1.0.0\",\n    \"description\": \"green hill is looking a lot more like sand hill rn\",\n    \"myCustomEditor\": {\n      \"viewportTabIndex\": 0\n    }\n  },\n  \"objects\": [\n    {\n      \"id\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n      \"name\": \"Spring #1\",\n      \"type\": \"Spring\",\n      \"position\": [ 100.0, 0.0, 0.0 ],\n      \"rotation\": [ 0.0, 0.0, 0.0, 1.0 ],\n      \"scale\": [ 1.0, 1.0, 1.0 ],\n      \"isEditorVisible\": true,\n      \"isExcluded\": false,\n      \"parameters\": {\n        \"tags\": {\n          \"RangeSpawning\": {\n            \"rangeIn\": 100.0,\n            \"rangeOut\": 20.0\n          }\n        },\n        \"visual\": \"Normal\",\n        \"firstSpeed\": 420,\n        \"outOfControl\": 2.5,\n        \"isHorming\": true,\n        \"actions\": [\n          {\n            \"action\": \"On\",\n            \"objectIds\": [\n                \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n                \"{38285a58-9969-4c5f-a649-b91440962a71}\"\n            ],\n            \"delayTime\": 0.5\n          },\n          {\n            \"action\": \"Off\",\n            \"objectIds\": [],\n            \"delayTime\": 0.0\n          },\n          {\n            \"action\": \"Off\",\n            \"objectIds\": [],\n            \"delayTime\": 0.0\n          }\n        ],\n      }\n    },\n    {\n      \"type\": \"Ring\"\n    },\n    {\n      \"id\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n      \"parentId\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n      \"type\": \"Ring\",\n      \"position\": [ 0.0, 1.0, 0.0 ],\n      \"parameters\": {\n        \"visibility\": \"Visible\",\n        \"respawnTime\": 0.0\n      },\n      \"myCustomValue\": 893.5,\n      \"myCustomEditor\": {\n        \"presetPlacementType\": \"LINE\",\n        \"presetPlacementDistance\": 1.0\n      }\n    },\n    {\n      \"id\": \"{38285a58-9969-4c5f-a649-b91440962a71}\",\n      \"instanceOf\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n      \"position\": [ 0.0, 2.0, 0.0 ],\n      \"parameters\": {\n        \"respawnTime\": 0.5\n      }\n    },\n    {\n      \"id\": \"{81fdcaff-aa37-4c47-a665-5b6265a6b780}\",\n      \"parentId\": \"{00000000-0000-0000-0000-000000000000}\",\n      \"type\": \"DashPanel\"\n    }\n  ]\n}\n
    "},{"location":"docs/general/hson/#format-specification","title":"Format Specification","text":"

    What follows is a specification of all standard properties supported by the HSON Format.

    Important

    All of the following properties are OPTIONAL, unless otherwise specified.

    "},{"location":"docs/general/hson/#1-version","title":"1. version","text":"

    Info

    This value is REQUIRED to be present in all HSON files.

    The version of the HSON format being used by this file. It is represented as a number that is restricted in the following ways:

    Because of these restrictions, it is valid for tooling to parse this value into an unsigned int.

    Currently, version 1 is the latest version.

    "},{"location":"docs/general/hson/#2-metadata","title":"2. metadata","text":"

    Info

    Metadata for the project represented by this file.

    It is intended to be used purely for tooling display purposes.

    metadata is represented as a JSON object consisting of the following properties:

    "},{"location":"docs/general/hson/#21-name","title":"2.1. name","text":"

    Info

    The name of the project represented by this file.

    "},{"location":"docs/general/hson/#22-author","title":"2.2. author","text":"

    Info

    The author(s) of the project represented by this file.

    If the project has multiple authors, we recommend writing each author's name with a comma and space separating them, like so:

    Example

    \"author\": \"Me, Myself, I\"\n

    With that said, this is a recommendation and by no means a requirement.

    Tooling should treat this as an arbitrary string in no particular format.

    "},{"location":"docs/general/hson/#23-date","title":"2.3. date","text":"

    Info

    The date/time the project was created at, represented as a string in the RFC 3339 format (a similar standard to ISO 8601).

    It is invalid to represent the date using any other format.

    This limitation makes parsing dates in tooling a lot easier.

    Getting the current DateTime in RFC 3339 format programmatically

    Feel free to copy-paste any of these code snippets and do what you want with them.

    C#:

    public static string GetRFC3339Time()\n{\n    return DateTime.UtcNow.ToString(\"yyyy-MM-ddTHH:mm:ssK\",\n        CultureInfo.InvariantCulture);\n}\n

    C++11:

    #include <string>\n#include <stdexcept>\n#include <ctime>\n\nstd::string getRFC3339Time()\n{\n    char buf[32]; // This is a few extra characters than should be necessary, just to be safe.\n    const auto time = std::time(nullptr);\n    const auto len = std::strftime(buf, sizeof(buf), \"%FT%TZ\", std::gmtime(&time));\n\n    if (!len)\n    {\n        throw std::runtime_error(\"Failed to get RFC 3339 format time\");\n    }\n\n    return std::string(buf, len);\n}\n

    C:

    #include <time.h>\n\n/*\n  Returns 0 on failure, or the number of bytes written\n  into buf (not including the null terminator) on success.\n*/\nint getRFC3339Time(size_t bufSize, char* buf)\n{\n    const time_t time = time(NULL);\n    return strftime(buf, bufSize, \"%FT%TZ\", gmtime(&time));\n}\n
    "},{"location":"docs/general/hson/#24-version","title":"2.4. version","text":"

    Info

    The version number of the project, represented as a string.

    How you want to version your project is up to you; these are all valid:

    Examples

    \"version\": \"1.0.0\"\n
    \"version\": \"1\"\n
    \"version\": \"beta release\"\n

    Tooling should treat this as an arbitrary string in no particular format.

    "},{"location":"docs/general/hson/#25-description","title":"2.5. description","text":"

    Info

    The description of the project represented by this file.

    "},{"location":"docs/general/hson/#3-objects","title":"3. objects","text":"

    Info

    An array containing all of the objects contained within the project.

    Each object is represented as a JSON object consisting of the following properties:

    "},{"location":"docs/general/hson/#31-id","title":"3.1. id","text":"

    Info

    The UUID (aka GUID) of the object, represented as a case-insensitive string formatted like this: {11111111-2222-3333-4444-555555555555}.

    Note that it is enclosed in curly brackets; this is to make it clear that it is supposed to be parsed as a UUID, and NOT as a number.

    The object's UUID is used to reference the object throughout the project.

    It must be unique throughout the project; that is, no two objects within the same project are allowed to have the same UUID. That's what makes them UUIDs.

    It also cannot be set to the following value: {00000000-0000-0000-0000-000000000000}, as this value is reserved for \"null\" object references.

    This property can be omitted (leaving the object without a specified UUID) if the object never needs to be referenced. This helps to save some space.

    Tools are free to generate their own UUIDs for objects without a specified UUID, or to just think of the object as not having a UUID. Whichever is more convenient.

    Examples

    Valid UUID (lowercase):

    \"id\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\"\n

    Valid UUID (uppercase):

    \"id\": \"{FD3E6BC9-5D2D-4DA8-A22D-F88E709B3E48}\"\n

    Invalid UUID (no enclosing curly brackets):

    \"id\": \"fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48\"\n

    Invalid UUID (not a UUID):

    \"id\": \"{2}\"\n

    Invalid UUID (the special \"null\" UUID value is not valid to use as the object's id):

    \"id\": \"{00000000-0000-0000-0000-000000000000}\"\n

    Valid object references (the special \"null\" UUID value is valid to use in object references):

    \"parentId\": \"{00000000-0000-0000-0000-000000000000}\",\n\"instanceOf\": \"{00000000-0000-0000-0000-000000000000}\"\n
    "},{"location":"docs/general/hson/#32-name","title":"3.2. name","text":"

    Info

    The name of the object. This is an arbitrary string that can be anything you want.

    It is intended to be used purely for tooling display purposes.

    "},{"location":"docs/general/hson/#33-parentid","title":"3.3. parentId","text":"

    Info

    The id of this object's parent object, or a null UUID.

    If specified as a valid, non-null UUID, this object is a child of the object with the given UUID, meaning that the object's transform (represented via position, rotation, and scale) is relative to the parent's transform (which is relative to its parent's transform, and so on).

    Otherwise, if it is not specified, or is specified as a null UUID, this object has no parent object, and the transform is global.

    Parenting Example

    {\n  \"id\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n  \"parentId\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n  \"type\": \"Ring\",\n  \"position\": [ 0.0, 1.0, 0.0 ],\n  \"parameters\": {\n    \"visibility\": \"Visible\",\n    \"respawnTime\": 0.0\n  },\n  \"myCustomValue\": 893.5,\n  \"myCustomEditor\": {\n    \"presetPlacementType\": \"LINE\",\n    \"presetPlacementDistance\": 1.0\n  }\n}\n

    In this snippet from the example file, the object has specified a position of [ 0.0, 1.0, 0.0 ], and a parentId of {fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}, which means that its transform is local to the transform of the object which uses that UUID (not included in this snippet).

    This parent object has a position of [ 100.0, 0.0, 0.0 ].

    So, the above object's global position is [ 100.0, 1.0, 0.0 ].

    Null Reference Example

    {\n  \"id\": \"{81fdcaff-aa37-4c47-a665-5b6265a6b780}\",\n  \"parentId\": \"{00000000-0000-0000-0000-000000000000}\",\n  \"type\": \"DashPanel\"\n}\n

    In this snippet from the example file, the object has specified a parentId of {00000000-0000-0000-0000-000000000000} (the special UUID null value), which is equivalent to not specifying a parentId. This means that this object has no parent.

    "},{"location":"docs/general/hson/#34-instanceof","title":"3.4. instanceOf","text":"

    Info

    The id of the object to be instanced, or a null UUID.

    If specified as a valid, non-null UUID, this object is an instance of the object with the given UUID, meaning that it will inherit ALL unspecified properties from the instanced object, with the notable exception of the id property, instead of falling back to the usual defaults.

    Note that it will NOT affect the object's specified properties; these will effectively \"override\" any properties taken from the instanced object.

    Otherwise, if it is not specified, or is specified as a null UUID, this object is not an instance.

    Example

    {\n  \"id\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n  \"parentId\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n  \"type\": \"Ring\",\n  \"position\": [ 0.0, 1.0, 0.0 ],\n  \"parameters\": {\n    \"visibility\": \"Visible\",\n    \"respawnTime\": 0.0\n  },\n  \"myCustomValue\": 893.5,\n  \"myCustomEditor\": {\n    \"presetPlacementType\": \"LINE\",\n    \"presetPlacementDistance\": 1.0\n  }\n},\n{\n  \"id\": \"{38285a58-9969-4c5f-a649-b91440962a71}\",\n  \"instanceOf\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n  \"position\": [ 0.0, 2.0, 0.0 ],\n  \"parameters\": {\n    \"respawnTime\": 0.5\n  }\n}\n

    In this snippet from the example file, the second listed object (UUID: 38285a58-9969-4c5f-a649-b91440962a71) is an instance of the first listed object (UUID: 2737e92f-4842-46cb-a590-e074f7b882f0).

    As such, it will inherit all of the unspecified properties from the first object, including the parentId, type, myCustomValue, and myCustomEditor properties, as well as the visibility parameter.

    It will NOT, however, inherit the specified properties, including the id, instanceOf, and position properties, as well as the respawnTime parameter.

    This means that the second object in the above snippet will be equivalent to the following object:

    {\n  \"id\": \"{38285a58-9969-4c5f-a649-b91440962a71}\",\n  \"parentId\": \"{fd3e6bc9-5d2d-4da8-a22d-f88e709b3e48}\",\n  \"type\": \"Ring\",\n  \"instanceOf\": \"{2737e92f-4842-46cb-a590-e074f7b882f0}\",\n  \"position\": [ 0.0, 2.0, 0.0 ],\n  \"parameters\": {\n    \"visibility\": \"Visible\",\n    \"respawnTime\": 0.5\n  },\n  \"myCustomValue\": 893.5,\n  \"myCustomEditor\": {\n    \"presetPlacementType\": \"LINE\",\n    \"presetPlacementDistance\": 1.0\n  }\n}\n

    As you can see, this is a simple, yet powerful system that allows for many possibilities.

    Note

    UUIDs have a special exception; they never get inherited from the instanced object.

    For example:

    {\n  \"id\": \"{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}\",\n  \"type\": \"Ring\"\n},\n{\n  \"instanceOf\": \"{AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA}\"\n}\n

    The second object listed in the above example will inherit all properties from the first object, except for the id.

    This is due to the fact that every valid object must have its own unique UUID.

    "},{"location":"docs/general/hson/#35-type","title":"3.5. type","text":"

    Info

    This value is REQUIRED to be present, unless this object is an instance of another object, in which case, it is optional, as the type will just be taken from the instanced object.

    The type of the object (e.g. \"Spring\", \"Ring\", etc.).

    Note that this value is not game-specific and can be set to anything, with one exception: it is not valid for type to be an empty string.

    "},{"location":"docs/general/hson/#36-position","title":"3.6. position","text":"

    Info

    The position of the object within 3D space. Represented as a three-dimensional array of numbers, representing a vector3 using Y-Up right-handed coordinates (X-right, Y-up, and Z-backwards), and meters as its units.

    If this object is a child of another object, this position value is local to the transform of the parent object (which is local to the transform of its parent, and so on).

    Otherwise, this position value is global.

    If this property is not specified, the value [ 0.0, 0.0, 0.0 ] will be used as a fallback.

    "},{"location":"docs/general/hson/#37-rotation","title":"3.7. rotation","text":"

    Info

    The rotation of the object within 3D space. Represented as a four-dimensional array of numbers, representing a quaternion using Y-up right-handed coordinates.

    If this object is a child of another object, this rotation value is local to the transform of the parent object (which is local to the transform of its parent, and so on).

    Otherwise, this rotation value is global.

    If this property is not specified, the value [ 0.0, 0.0, 0.0, 1.0 ] will be used as a fallback.

    Note

    Rotation values must be represented as a four-dimensional array representing a quaternion.

    It is not valid to represent rotation values using other methods, such as by using three-dimensional arrays representing euler angles or binary angle measurement (BAMS).

    When dealing with formats that utilize these (or other) methods, tooling must convert to/from quaternions as necessary.

    "},{"location":"docs/general/hson/#38-scale","title":"3.8. scale","text":"

    Info

    The scale of the object within 3D space. Represented as a three-dimensional array of numbers, representing a vector3 using Y-up right-handed coordinates (X-right, Y-up, and Z-backwards), and meters as its units.

    If this object is a child of another object, this scale value is local to the transform of the parent object (which is local to the transform of its parent, and so on).

    Otherwise, this scale value is global.

    If this property is not specified, the value [ 1.0, 1.0, 1.0 ] will be used as a fallback.

    "},{"location":"docs/general/hson/#39-iseditorvisible","title":"3.9. isEditorVisible","text":"

    Info

    Whether the object should be visible in the editor's 3D display (as applicable). Note that this is purely for editors, and has no effect on whether the object is visible in-game.

    When converting from HSON to game-specific file(s), tooling should ignore this value.

    If this property is not specified, the value true will be used as a fallback.

    "},{"location":"docs/general/hson/#310-isexcluded","title":"3.10. isExcluded","text":"

    Info

    Whether the object should be excluded from game data.

    If specified as true, editors should (as applicable) hide the object from 3D display, but still show it in the object hierarchy as a disabled object, and provide a mechanism for users to un-exclude it.

    When converting from HSON to a game format, tooling should treat excluded objects as if they do not exist, by simply not writing them to the resulting game-specific file(s).

    If this property is not specified, the value false will be used as a fallback.

    "},{"location":"docs/general/hson/#311-parameters","title":"3.11. parameters","text":"

    Info

    All named parameters specific to this object type and/or game. For example, the firstSpeed parameter for objects of the Spring type in Sonic Frontiers, which specifies the speed the object will launch the player off with.

    This is the place to put all parameters that are specific to objects of the specified type. It's also a great place to put game-specific parameters, such as object visibility ranges.

    Any number of properties of any JSON type are allowed here, all of which are always entirely optional.

    Tooling should treat this as an arbitrary list of key-value pairs, and provide some mechanism that allows the user to modify ALL of them as they please. It does not, however, have to provide a mechanism to add, remove, or edit the type of these parameters, as this may be undesirable depending on your use-case.

    Tooling should not require any of these parameters to be present. When converting, tooling should, instead, lookup each parameter by its name as needed, and either error-out or fallback to a default value if a required parameter is not present.

    Important

    Note that the following are not allowed to be used as parameter names:

    Info

    The \"no forward slash\" rule allows tooling to access parameters by \"path\", like so:

    \"parameters\": {\n  \"tags\": {\n    \"RangeSpawning\": {\n      \"rangeIn\": 100.0,\n      \"rangeOut\": 20.0\n    }\n  }\n}\n

    "},{"location":"docs/general/hson/#custom-properties","title":"Custom Properties","text":"

    In addition to all of the standard properties listed in the above specification, it is also completely valid to have your own custom properties which are not part of the specification, as demonstrated with the myCustomEditor and myCustomValue properties shown in the example file.

    If you use custom properties, it's highly recommended to place them in a property named after your tooling, as demonstrated with the myCustomEditor properties in the example.

    \"myCustomEditor\": {\n  \"presetPlacementType\": \"LINE\",\n  \"presetPlacementDistance\": 1.0\n}\n

    Doing this helps to reduce potential name collisions with custom properties from other tools, which might end up sharing the same name(s).

    If your custom property is intended to be used across multiple tools (e.g. an unofficial \"extension\" to the HSON format), then it's recommended to ignore the above advice and just use the custom property directly instead, as demonstrated with the myCustomValue property in the example.

    \"myCustomValue\": 893.5,\n

    Important

    Note that the following are not allowed to be used as custom property names:

    Info

    The \"no forward slash\" rule allows tooling to access custom properties by \"path\", like so:

    \"myCustomEditor\": {\n  \"presetPlacementType\": \"LINE\",\n  \"presetPlacementDistance\": 1.0\n}\n

    "},{"location":"docs/hedgehog-engine/gamelist/","title":"Game List","text":""},{"location":"docs/hedgehog-engine/gamelist/#hedgehog-engine","title":"Hedgehog Engine","text":"Game Name Internal Name Sonic Unleashed (Sonic World Adventure) SWA Sonic Colors sonic2010 Sonic Generations BlueBlur Sonic Lost World sonic2013 Sonic Colors: Ultimate* Rainbow

    * Sonic Colors: Ultimate also makes use of a forked version of Godot 3.

    "},{"location":"docs/hedgehog-engine/gamelist/#hedgehog-engine-2","title":"Hedgehog Engine 2","text":"Game Name Internal Name Mario & Sonic at the Rio 2016 Olympic Games unison Sonic Forces wars Olympic Games Tokyo 2020 - The Official Video Game musashi Mario & Sonic at the Tokyo 2020 Olympic Games rings (New) Sakura Wars arukas Puyo Puyo Tetris 2 tenpex Sonic Origins* hite Sonic Frontiers rangers Sonic Frontiers: Digital Art Book with Mini Digital Soundtrack rangers_artbook Sonic Origins Plus* hiteplus Sonic Superstars - Digital Artbook and mini-OST orion_artbook SONIC X SHADOW GENERATIONS** miller

    * Sonic Origins (Plus) also makes use of Retro Engine v5U.

    ** SONIC X SHADOW GENERATIONS also makes use of the Hedgehog Engine.

    "},{"location":"docs/hedgehog-engine/blueblur/cameras/","title":"Camera Type List","text":""},{"location":"docs/hedgehog-engine/blueblur/cameras/#objcamera","title":"ObjCamera","text":"Camera Type Description ObjCameraFix Stays in its place while pointing at the coordinates defined in TargetPosition ObjCameraNormal The regular camera ObjCameraPan Has a different behaviour depending on CameraPositionMode: 0 - Stays in its place while pointing at Sonic; 1 - ??? ObjCameraPoint Follows Sonic, while pointing at the camera object's location"},{"location":"docs/hedgehog-engine/blueblur/cameras/#camera-collisions","title":"Camera Collisions","text":"Collision Type Description ChangeVolumeCamera Changes the camera used to the one defined in Target"},{"location":"docs/hedgehog-engine/blueblur/events/","title":"Event List","text":"Event ID Description 1 Used for EventSetter 2 Used for EventSetter 3 Used for EventSetter 4 Used for EventSetter 5 Used for EventSetter 6 Enable 7 Disable 12 Destroy / Break (ObjectPhysics)"},{"location":"docs/hedgehog-engine/blueblur/levels/ids/","title":"Level ID Map","text":""},{"location":"docs/hedgehog-engine/blueblur/levels/ids/#mapping","title":"Mapping","text":"

    Stage IDs are defined like this:

    {stage_short_name}{stage_type}\n

    Example

    cte200 -> City Escape Modern

    cte100 -> City Escape Classic

    cte101 -> City Escape Classic Mission 1

    "},{"location":"docs/hedgehog-engine/blueblur/levels/ids/#levels","title":"Levels","text":"Level Short Name Level Name Location ghz Green Hill disk/bb cpz Chemical Plant disk/bb ssz Sky Sanctuary disk/bb sph Speed Highway disk/bb cte City Escape disk/bb ssh Seaside Hill disk/bb2 csc Crisis City disk/bb2 euc Rooftop Run disk/bb2 pla Planet Wisp disk/bb2 cnz Casino Night Zone disk/bb2 Level Type ID Level Type 100 Classic Sonic Stage 200 Modern Sonic Stage 10x Classic Sonic Mission 20x Modern Sonic Mission

    Note

    There's some missions which have their own terrain, and missions which are using original level's terrain.

    So, for first type of missions, you have mission's own terrain and # file in the root of the CPK. For the second type of missions, you have original level's terrain and # file in the root of the CPK.

    Example: mission ghz103 has its own terrain, ghz101 and ghz102 doesn't have it, so they're using terrain from ghz100.

    "},{"location":"docs/hedgehog-engine/blueblur/levels/ids/#bosses","title":"Bosses","text":"Boss ID Boss Name Location bms Metal Sonic disk/bb2 bde Death Egg Robot disk/bb bsd Shadow disk/bb2 bpc Perfect Chaos disk/bb bsl Silver disk/bb2 bne Egg Dragoon disk/bb blb Time Eater disk/bb"},{"location":"docs/hedgehog-engine/blueblur/levels/ids/#hub-worlds","title":"HUB Worlds","text":"HUB ID HUB Name Location fig000 Statue Room disk/bb2 pam000 Full White World disk/bb2 pam001 White World before completing Green Hill disk/bb2"},{"location":"docs/hedgehog-engine/rangers/dlc/ids/","title":"DLC ID Map","text":"DLC Name Internal Name ID Steam App ID Adventurer's Treasure Box dlcrsv 0 2079300 Explorer's Treasure Box dlcddx 1 2079301 Monster Hunter Collaboration Pack dlcmhr 2 2089730 Sonic Emote (Koco) dlcslr 3 N/A Inugami Korone Collaboration DLC \"Gloves & Shoes\" dlcholoA 4 N/A Inugami Korone Collaboration DLC \"SE: Inugami Korone\" dlcholoB 5 N/A Inugami Korone Collaboration DLC \"Koronesuki\" dlcholoC 6 N/A Sonic Adventure 2 Shoes dlccrm 7 2089840 Holiday Cheer Suit dlcxmas 8 2089733"},{"location":"docs/hedgehog-engine/rangers/enemies/guardians/names/","title":"Guardian Internal Names","text":"

    This list identifies what each of the guardians are referred to within the game executable and its filesystem.

    Name Internal Name Asura Ashura Caterpillar Charger Fortress Warship Ghost Tracker Ninja Blade Shark Skier Spider Spider Squid Flyer Strider Strider Sumo Sumo Tank Tyrant Tower Daruma"},{"location":"docs/hedgehog-engine/rangers/events/ids/","title":"Event ID Map","text":"

    Warning

    This mapping is still a work in progress! Any additions and updates are greatly appreciated!

    Event ID Event Description bo1120 sonic turns super against giganto bo1140 giganto second phase start bo1160 sonic murders giganto bo1180 sonic dies in giganto fight (run out of rings) chl1060 open zone timer mission chl1090 open zone timer mission chl1090 open zone timer mission chl1130 open zone timer mission chl1170 open zone timer mission chl1200 open zone timer mission ev0020 Prerecorded opening scene (Sonic and friends arrive to the Starfall Islands). Needs the level \"ui_gamemodeopening\" to be loaded to not crash. ga1010 sonic entering cyberspace for the first time ga1011 sonic returns from cyberspace ga1012 different version of ga1010 ga1013 different version of ga1011 ga1014 sonic re-enters cyberspace ga1016 sonic activates a fishing portal ga1017 sonic returns from a fishing portal ga1020 blue emerald vault now unlocked ga1021 cyan emerald vault now unlocked ga1022 green emerald vault now unlocked ga1023 purple emerald vault now unlocked ga1024 red emerald vault now unlocked ga1025 white emerald vault now unlocked ga1026 yellow emerald vault now unlocked ga1030 different version of ga1020 ga1031 different version of ga1021 ga1032 different version of ga1022 ga1033 different version of ga1023 ga1034 different version of ga1024 ga1035 different version of ga1025 ga1036 different version of ga1026 ga1040 vault key get ga1050 sonic opens blue emerald vault ga1051 sonic opens cyan emerald vault ga1052 sonic opens green emerald vault ga1053 sonic opens purple emerald vault ga1054 sonic opens red emerald vault ga1055 sonic opens white emerald vault ga1056 sonic opens yellow emerald vault ga1111 different version of ga1011 ga1113 different version of ga1011 ga1120 sonic takes the blue emerald ga1121 sonic takes the cyan emerald ga1122 sonic takes the green emerald ga1123 sonic takes the purple emerald ga1124 sonic takes the red emerald ga1125 sonic takes the white emerald ga1126 sonic takes the yellow emerald ga1130 faster version of ga1120 ga1131 faster version of ga1121 ga1132 faster version of ga1122 ga1133 faster version of ga1123 ga1134 faster version of ga1124 ga1135 faster version of ga1125 ga1136 faster version of ga1126 ga1205 tutorial bridge ga1210 bridge opens in ouranos (part of old kronos) ga1220 open the waterfall ga1225 pre-giganto ga1410 tutorial island enemies spawn in house ga1620 starfall event but on ouranos/rhea?"},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/","title":"RFL Binary Template Map","text":"

    Warning

    This list is still a work in progress! Any additions and updates are greatly appreciated!

    This list defines which binary templates to use specific RFL files, as well as what that file contains.

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#ambsoundparameter","title":"AmbSoundParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#arcadedata","title":"ArcadeData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_1","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_1","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bakeboxparameter","title":"BakeBoxParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_2","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_2","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bakecameraparameter","title":"BakeCameraParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_3","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_3","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bakecameraparameterdata","title":"BakeCameraParameterData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_4","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_4","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bgminfoparameter","title":"BGMInfoParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_5","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_5","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossbitconfig","title":"BossBitConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_6","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_6","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bosscommonparameters","title":"BossCommonParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_7","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_7","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossdragonconfig","title":"BossDragonConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_8","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_8","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossgiantconfig","title":"BossGiantConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_9","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_9","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossknightconfig","title":"BossKnightConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_10","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_10","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossrifleconfig","title":"BossRifleConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_11","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_11","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossriflethresholdringsupplyparam","title":"BossRifleThresholdRingSupplyParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_12","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_12","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bossstatusparameterbase","title":"BossStatusParameterBase","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_13","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_13","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bosstheendconfig","title":"BossTheEndConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_14","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_14","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#bulletpatternsetparameters","title":"BulletPatternSetParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_15","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_15","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#camerashaketable","title":"CameraShakeTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_16","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_16","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#captionparameter","title":"CaptionParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_17","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_17","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#contentparameter","title":"ContentParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_18","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_18","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#decoconfigparam","title":"DecoConfigParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_19","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_19","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#decotechparams","title":"DecoTechParams","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_20","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_20","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#devconfigparameters","title":"DevConfigParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_21","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_21","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#dlcmhrbarbecueparameter","title":"DLCMhrBarbecueParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_22","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_22","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#dlcparameter","title":"DLCParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_23","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_23","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#effectrecordbasetable","title":"EffectRecordBaseTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_24","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_24","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#effectrecordtable","title":"EffectRecordTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_25","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_25","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#electriclineparameter","title":"ElectricLineParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_26","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_26","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyaquaballconfig","title":"EnemyAquaballConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_27","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_27","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyattackrecordbasetable","title":"EnemyAttackRecordBaseTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_28","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_28","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyattackrecordtable","title":"EnemyAttackRecordTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_29","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_29","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemybirdconfig","title":"EnemyBirdConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_30","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_30","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemybommerconfig","title":"EnemyBommerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_31","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_31","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemybubbleconfig","title":"EnemyBubbleConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_32","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_32","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemydefencerecordbasetable","title":"EnemyDefenceRecordBaseTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_33","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_33","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemydefencerecordtable","title":"EnemyDefenceRecordTable","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_34","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_34","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemydefenderconfig","title":"EnemyDefenderConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_35","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_35","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyeggroboconfig","title":"EnemyEggRoboConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_36","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_36","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyhelicopterconfig","title":"EnemyHelicopterConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_37","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_37","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyjellymanconfig","title":"EnemyJellymanConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_38","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_38","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyjumperconfig","title":"EnemyJumperConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_39","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_39","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyjumpersubconfig","title":"EnemyJumperSubConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_40","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_40","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemylaserconfig","title":"EnemyLaserConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_41","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_41","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyrobberconfig","title":"EnemyRobberConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_42","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_42","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemysniperconfig","title":"EnemySniperConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_43","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_43","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemytwisterconfig","title":"EnemyTwisterConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_44","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_44","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemyumbrellaconfig","title":"EnemyUmbrellaConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_45","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_45","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#enemywolfconfig","title":"EnemyWolfConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_46","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_46","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#extremeconfig","title":"ExtremeConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_47","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_47","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fishingparameter","title":"FishingParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_48","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_48","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxcloudshadowparameter","title":"FxCloudShadowParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_49","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_49","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxdensitywindparameter","title":"FxDensityWindParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_50","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_50","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxdirectionalradialblurparameter","title":"FxDirectionalRadialBlurParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_51","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_51","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxfogparameter","title":"FxFogParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_52","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_52","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxfxaaparameter","title":"FxFXAAParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_53","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_53","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxheightmapparameter","title":"FxHeightMapParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_54","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_54","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxplanarprojectionshadowparameter","title":"FxPlanarProjectionShadowParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_55","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_55","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#fxsmaaparameter","title":"FxSMAAParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_56","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_56","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gamedata","title":"GameData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_57","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_57","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gameexpparameter","title":"GameExpParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_58","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_58","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gamegrassinteractionparameter","title":"GameGrassInteractionParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_59","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_59","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gamegrindlodparameter","title":"GameGrindLodParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_60","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_60","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gamehitstopparameter","title":"GameHitStopParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_61","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_61","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gameskillparameter","title":"GameSkillParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_62","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_62","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gimmickcamerasimpleparam","title":"GimmickCameraSimpleParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_63","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_63","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gismoconfigdesigndata","title":"GismoConfigDesignData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_64","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_64","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#gismoconfigplandata","title":"GismoConfigPlanData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_65","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_65","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#graphicsparameters","title":"GraphicsParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_66","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_66","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#hackingenemyparameters","title":"HackingEnemyParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_67","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_67","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#heightfieldconfig","title":"HeightFieldConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_68","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_68","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#islandparameter","title":"IslandParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_69","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_69","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#meteorshowerparameter","title":"MeteorShowerParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_70","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_70","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossashuraconfig","title":"MiniBossAshuraConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_71","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_71","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossbladeconfig","title":"MiniBossBladeConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_72","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_72","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosschargerattackparam","title":"MiniBossChargerAttackParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_73","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_73","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosschargercamerashake","title":"MiniBossChargerCameraShake","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_74","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_74","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosschargerconfig","title":"MiniBossChargerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_75","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_75","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossdarumaconfig","title":"MiniBossDarumaConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_76","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_76","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossflyerconfig","title":"MiniBossFlyerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_77","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_77","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossskierconfig","title":"MiniBossSkierConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_78","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_78","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossspiderconfig","title":"MiniBossSpiderConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_79","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_79","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibossstriderconfig","title":"MiniBossStriderConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_80","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_80","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosssumoconfig","title":"MiniBossSumoConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_81","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_81","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosstrackerconfig","title":"MiniBossTrackerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_82","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_82","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosstyrantconfig","title":"MiniBossTyrantConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_83","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_83","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#minibosswarshipconfig","title":"MiniBossWarshipConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_84","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_84","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#monologueparameters","title":"MonologueParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_85","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_85","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#navmeshparameter","title":"NavMeshParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_86","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_86","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#needlefxscenedata","title":"NeedleFxSceneData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_87","title":"Filename Format","text":"

    {stagename}.rfl

    Example

    w1r03.rfl

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_87","title":"Usage","text":"

    Controls the stage's scene data

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#noisepresetparameters","title":"NoisePresetParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_88","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_88","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#obj3dpuzzleblockconfig","title":"Obj3DPuzzleBlockConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_89","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_89","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objbattingmachineconfig","title":"ObjBattingMachineConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_90","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_90","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objbirdlaserconfig","title":"ObjBirdLaserConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_91","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_91","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objbossringsupplyconfig","title":"ObjBossRingSupplyConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_92","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_92","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objcggconfig","title":"ObjCGGConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_93","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_93","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objeffectdebrisparameters","title":"ObjEffectDebrisParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_94","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_94","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objhackingplayermachineconfig","title":"ObjHackingPlayerMachineConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_95","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_95","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objhoverstoneconfig","title":"ObjHoverStoneConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_96","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_96","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objkodamaescortparameter","title":"ObjKodamaEscortParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_97","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_97","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objkodamaquestparameter","title":"ObjKodamaQuestParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_98","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_98","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objlasermirrorconfig","title":"ObjLaserMirrorConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_99","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_99","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objmowingparameter","title":"ObjMowingParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_100","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_100","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objnormalfloorconfig","title":"ObjNormalFloorConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_101","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_101","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objquestboxparameter","title":"ObjQuestBoxParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_102","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_102","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objrotatablestatueconfig","title":"ObjRotatableStatueConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_103","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_103","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objrotatabletombstoneconfig","title":"ObjRotatableTombStoneConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_104","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_104","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objshotguntouchparam","title":"ObjShotGunTouchParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_105","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_105","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objskiermissileconfig","title":"ObjSkierMissileConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_106","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_106","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objstriderbulletconfig","title":"ObjStriderBulletConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_107","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_107","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objstridergrindrailconfig","title":"ObjStriderGrindRailConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_108","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_108","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objstriderlaserconfig","title":"ObjStriderLaserConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_109","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_109","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objsumopoleconfig","title":"ObjSumoPoleConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_110","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_110","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objsumopuckconfig","title":"ObjSumoPuckConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_111","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_111","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objtheendplayermachineconfig","title":"ObjTheEndPlayerMachineConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_112","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_112","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objtimeballconfig","title":"ObjTimeBallConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_113","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_113","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objwarshipdashringconfig","title":"ObjWarshipDashRingConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_114","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_114","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#objwolfmanagerconfig","title":"ObjWolfManagerConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_115","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_115","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#occlusioncapsulelist","title":"OcclusionCapsuleList","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_116","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_116","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#offmeshlinkparameter","title":"OffMeshLinkParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_117","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_117","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#optiondata","title":"OptionData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_118","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_118","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playercamerasetparameters","title":"PlayerCameraSetParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_119","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_119","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparamaerialfinish","title":"PlayerParamAerialFinish","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_120","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_120","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparambehindfinish","title":"PlayerParamBehindFinish","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_121","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_121","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparameters","title":"PlayerParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_122","title":"Filename Format","text":"

    player_common.rfl

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_122","title":"Usage","text":"

    Controls Sonic's physics and other player parameters, including the cyloop colour for example.

    "},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparamlowaltitudejump","title":"PlayerParamLowAltitudeJump","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_123","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_123","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparampursuitfinish","title":"PlayerParamPursuitFinish","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_124","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_124","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playerparamstompingfinish","title":"PlayerParamStompingFinish","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_125","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_125","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#playstats","title":"PlayStats","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_126","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_126","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#practiceparameters","title":"PracticeParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_127","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_127","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#questcollectitemparameter","title":"QuestCollectItemParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_128","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_128","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#questdarumabattleparameter","title":"QuestDarumaBattleParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_129","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_129","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#questdrawbridgeparameter","title":"QuestDrawBridgeParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_130","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_130","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#questmowingparameter","title":"QuestMowingParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_131","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_131","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#recorddata","title":"RecordData","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_132","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_132","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#reflexespanelparam","title":"ReflexesPanelParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_133","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_133","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#scriptparameter","title":"ScriptParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_134","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_134","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#seedparameter","title":"SeedParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_135","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_135","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#sequenceparameter","title":"SequenceParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_136","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_136","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#soundcommonparameter","title":"SoundCommonParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_137","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_137","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#standardcameraconfig","title":"StandardCameraConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_138","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_138","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#statsdatacontainer","title":"StatsDataContainer","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_139","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_139","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#swayparamindivisual","title":"SwayParamIndivisual","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_140","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_140","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#talkeventcamerapresetparameters","title":"TalkEventCameraPresetParameters","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_141","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_141","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#timeserviceparam","title":"TimeServiceParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_142","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_142","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#tornadoringparameter","title":"TornadoRingParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_143","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_143","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#uicreditparameter","title":"UICreditParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_144","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_144","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#uifishiguideconfig","title":"UIFishiGuideConfig","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_145","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_145","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#uimapparameter","title":"UIMapParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_146","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_146","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#uiwireframeparameter","title":"UIWireframeParameter","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_147","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_147","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#viewspaceoffsetrflparam","title":"ViewSpaceOffsetRflParam","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_148","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_148","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#volumesize","title":"VolumeSize","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_149","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_149","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#wolfvolumesize","title":"WolfVolumeSize","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#filename-format_150","title":"Filename Format","text":""},{"location":"docs/hedgehog-engine/rangers/files/rfl/mapping/#usage_150","title":"Usage","text":""},{"location":"docs/hedgehog-engine/rangers/levels/ids/","title":"Level ID Map","text":""},{"location":"docs/hedgehog-engine/rangers/levels/ids/#mapping","title":"Mapping","text":"

    Stage IDs are defined like this:

    {world_id}{stage_type}{stage_number}\n

    Example

    w2r01 -> Ares Open Zone 1

    "},{"location":"docs/hedgehog-engine/rangers/levels/ids/#worlds-zones","title":"Worlds (Zones)","text":"World ID World Name w1 Kronos w2 Ares w3 Chaos w5 The End w6 Green Hill w7 Chemical Plant w8 Sky Sanctuary w9 Highway"},{"location":"docs/hedgehog-engine/rangers/levels/ids/#stage-type","title":"Stage Type","text":"Stage Type ID Stage Type r Open Zone d Cyber Space f Fishing (always w1) h Hacking (always w1)"},{"location":"docs/hedgehog-engine/rangers/levels/ids/#stages-cyberspace","title":"Stages (Cyberspace)","text":"Stage Name Level ID 1-1 w6d01 1-2 w8d01 1-3 w9d04 1-4 w6d02 1-5 w7d04 1-6 w6d06 1-7 w9d06 2-1 w6d05 2-2 w8d03 2-3 w7d02 2-4 w7d06 2-5 w8d04 2-6 w6d03 2-7 w8d05 3-1 w6d04 3-2 w6d08 3-3 w8d02 3-4 w6d09 3-5 w6d07 3-6 w8d06 3-7 w7d03 4-1 w7d08 4-2 w9d02 4-3 w7d01 4-4 w9d03 4-5 w6d10 4-6 w7d07 4-7 w9d05 4-8 w7d05 4-9 w9d07"},{"location":"docs/hedgehog-engine/rangers/levels/ids/#oddities","title":"Oddities","text":"

    Due to Ouranos and Rhea actually being part of Kronos, their map files are stored in w1:

    There are also various versions of Kronos in the game files (not present in the PC release), those being:

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/","title":"Functions","text":"

    Warning

    This list is still a work in progress! Any additions and updates are greatly appreciated!

    Functions are listed below in the following format:

    Function(arguments, ...) : returnType\n

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#achivementunlockstring-number","title":"\ud83d\uddd2\ufe0f AchivementUnlock(string, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description","title":"Description","text":"

    Unlocks an achievement.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitycompletenumber-unknown","title":"\ud83d\uddd2\ufe0f ActivityComplete(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_1","title":"Description","text":"

    This function has no callback function.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_1","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitystartnumber-unknown","title":"\ud83d\uddd2\ufe0f ActivityStart(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_2","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_2","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_1","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitytaskcompletenumber-number-unknown","title":"\ud83d\uddd2\ufe0f ActivityTaskComplete(number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_3","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_3","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_2","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitytaskend-unknown","title":"\ud83d\uddd2\ufe0f ActivityTaskEnd() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_4","title":"Description","text":"

    This function is unused and has no callback function.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_4","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_3","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#activitytaskstartnumber-number-unknown","title":"\ud83d\uddd2\ufe0f ActivityTaskStart(number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_5","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_5","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_4","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#addpracticenotifierpermissiondenystring-unknown","title":"\ud83d\uddd2\ufe0f AddPracticeNotifierPermissionDeny(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_6","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_6","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_5","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#autosavestring","title":"\ud83d\uddd2\ufe0f AutoSave(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_7","title":"Description","text":"

    Saves the current game data into the autosave slot.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_7","title":"Parameters","text":" Mode Description forceimmediate The most common and seemingly default save mode. immediate Unknown..."},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#begintalkmodestring-unknown","title":"\ud83d\uddd2\ufe0f BeginTalkMode(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_8","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_8","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_6","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changeeventcamerastring","title":"\ud83d\uddd2\ufe0f ChangeEventCamera(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_9","title":"Description","text":"

    Change to an event camera.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_9","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changemotionstring","title":"\ud83d\uddd2\ufe0f ChangeMotion(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_10","title":"Description","text":"

    Changes animations for dialogue events.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_10","title":"Parameters","text":" Name happy no rod take talk talk_start think yes"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changeplayeraniminholdstring-number-yield","title":"\ud83d\uddd2\ufe0f ChangePlayerAnimInHold(string, number) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_11","title":"Description","text":"

    Plays an animation from an *.asm file using the friendly (upper-case) name when the player is frozen using HoldPlayer().

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_11","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changeplayermotionstring-number-yield","title":"\ud83d\uddd2\ufe0f ChangePlayerMotion(string, number) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_12","title":"Description","text":"

    Plays an animation from an *.asm file using the friendly (upper-case) name where available.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_12","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changesavepermissionstring","title":"\ud83d\uddd2\ufe0f ChangeSavePermission(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_13","title":"Description","text":"

    Toggles whether the player has permission to save.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_13","title":"Parameters","text":" State allow deny"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#changeweathernumber-string","title":"\ud83d\uddd2\ufe0f ChangeWeather(number, string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_14","title":"Description","text":"

    Changes the current weather.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_14","title":"Parameters","text":" Name Cloudy Rainy SandStorm Sunny"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearisland","title":"\ud83d\uddd2\ufe0f ClearIsland()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_15","title":"Description","text":"

    Sets the cleared state of the current island and proceeds to the next.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearobjecttarget-unknown","title":"\ud83d\uddd2\ufe0f ClearObjectTarget() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_16","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_15","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_7","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearpracticenotifier-yield","title":"\ud83d\uddd2\ufe0f ClearPracticeNotifier() : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_17","title":"Description","text":"

    Clears the Training Simulator notification on the top-right of the heads-up display.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearquesttarget-unknown","title":"\ud83d\uddd2\ufe0f ClearQuestTarget() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_18","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_16","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_8","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#cleartutorialuiboolean-unknown","title":"\ud83d\uddd2\ufe0f ClearTutorialUI(boolean) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_19","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_17","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_9","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#clearuserguidui-yield","title":"\ud83d\uddd2\ufe0f ClearUserGuidUI() : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_20","title":"Description","text":"

    Clears an input guide.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#debugprint-number","title":"\ud83d\uddd2\ufe0f DebugPrint() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_21","title":"Description","text":"

    This function is unused and has a stripped callback function.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_18","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_10","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#deletepracticenotifierpermissiondenystring-unknown","title":"\ud83d\uddd2\ufe0f DeletePracticeNotifierPermissionDeny(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_22","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_19","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_11","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#endletterboxui-unknown","title":"\ud83d\uddd2\ufe0f EndLetterBoxUI() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_23","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_20","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_12","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#endtalkmode-unknown","title":"\ud83d\uddd2\ufe0f EndTalkMode() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_24","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_21","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_13","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#endtimegimmick-unknown","title":"\ud83d\uddd2\ufe0f EndTimeGimmick() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_25","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_22","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_14","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#exit","title":"\ud83d\uddd2\ufe0f Exit()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_26","title":"Description","text":"

    Ends the current script sequence.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#fadeinnumber","title":"\ud83d\uddd2\ufe0f FadeIn(number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_27","title":"Description","text":"

    Fades the screen into gameplay from black within the specified duration.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_23","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#fadeoutnumber-string-yield","title":"\ud83d\uddd2\ufe0f FadeOut(number, string) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_28","title":"Description","text":"

    Fades the screen out within the specified duration.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_24","title":"Parameters","text":" Colours black (default) white"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getblock-number","title":"\ud83d\uddd2\ufe0f GetBlock() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_29","title":"Description","text":"

    Gets the current internal block ID for Lua conditions within update functions.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_15","title":"Return Value","text":"

    The current block ID.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getchaosemeraldstring-unknown","title":"\ud83d\uddd2\ufe0f GetChaosEmerald(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_30","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_25","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_16","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getchaosemeraldnum-number","title":"\ud83d\uddd2\ufe0f GetChaosEmeraldNum() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_31","title":"Description","text":"

    Gets the total number of Chaos Emeralds.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_17","title":"Return Value","text":"

    The total number of Chaos Emeralds.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getcleartowernum-unknown","title":"\ud83d\uddd2\ufe0f GetClearTowerNum() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_32","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_26","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_18","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getdebugflagstring-number","title":"\ud83d\uddd2\ufe0f GetDebugFlag(string) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_33","title":"Description","text":"

    Gets the value of any flag Sonic Team wants to check within Lua scripts.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_27","title":"Parameters","text":" Name isTutorialEnable"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_19","title":"Return Value","text":"

    The value of the requested flag.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getguardlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetGuardLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_34","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_28","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_20","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#gethackingaliveenemynum-unknown","title":"\ud83d\uddd2\ufe0f GetHackingAliveEnemyNum() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_35","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_29","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_21","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#gethackingcurrentwaveid-unknown","title":"\ud83d\uddd2\ufe0f GetHackingCurrentWaveId() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_36","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_30","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_22","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#gethaschaosemeraldnum-number","title":"\ud83d\uddd2\ufe0f GetHasChaosEmeraldNum() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_37","title":"Description","text":"

    Gets the total number of currently obtained Chaos Emeralds.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_23","title":"Return Value","text":"

    The total number of currently obtained Chaos Emeralds.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getmaxguardlevel-number","title":"\ud83d\uddd2\ufe0f GetMaxGuardLevel() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_38","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_31","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_24","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getmaxpowerlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetMaxPowerLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_39","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_32","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_25","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getmaxringlevel-number","title":"\ud83d\uddd2\ufe0f GetMaxRingLevel() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_40","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_33","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_26","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getmaxspeedlevel-number","title":"\ud83d\uddd2\ufe0f GetMaxSpeedLevel() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_41","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_34","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_27","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getminigamequestprogressstring-unknown","title":"\ud83d\uddd2\ufe0f GetMinigameQuestProgress(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_42","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_35","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_28","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getobjstatusstring-number-number-boolean","title":"\ud83d\uddd2\ufe0f GetObjStatus(string, number, number) : boolean","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_43","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_36","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_29","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getpinballstatusstring-unknown","title":"\ud83d\uddd2\ufe0f GetPinballStatus(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_44","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_37","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_30","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getplayeriteminfostring-number","title":"\ud83d\uddd2\ufe0f GetPlayerItemInfo(string) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_45","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_38","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_31","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getplayerstatusstring-number","title":"\ud83d\uddd2\ufe0f GetPlayerStatus(string) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_46","title":"Description","text":"

    Returns the value of status flags for the player.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_39","title":"Parameters","text":" Name Description Hold Checks if the player is frozen via HoldPlayer() OnGround Checks if the player is grounded"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_32","title":"Return Value","text":"

    A 0/1 number representing the requested state.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getpowerlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetPowerLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_47","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_40","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_33","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getpoweruprequiredkodamanum-unknown","title":"\ud83d\uddd2\ufe0f GetPowerupRequiredKodamaNum() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_48","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_41","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_34","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getringlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetRingLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_49","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_42","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_35","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getselectresultnumber-number","title":"\ud83d\uddd2\ufe0f GetSelectResult(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_50","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_43","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_36","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getspeedlevelnumber-number","title":"\ud83d\uddd2\ufe0f GetSpeedLevel(number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_51","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_44","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_37","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#getvaluestring-number-number","title":"\ud83d\uddd2\ufe0f GetValue(string, number) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_52","title":"Description","text":"

    Get the value of a flag based on the flag name and flag number.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_45","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_38","title":"Return Value","text":"

    The value of the requested flag.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#giantorbreleasetemporarilyreset-unknown","title":"\ud83d\uddd2\ufe0f GiantOrbReleaseTemporarilyReset() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_53","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_46","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_39","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#giantorbtemporarilyreset-unknown","title":"\ud83d\uddd2\ufe0f GiantOrbTemporarilyReset() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_54","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_47","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_40","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#gotocyberstagestring-yield","title":"\ud83d\uddd2\ufe0f GoToCyberStage(string) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_55","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_48","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#hideobjectineventstring","title":"\ud83d\uddd2\ufe0f HideObjectInEvent(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_56","title":"Description","text":"

    Hides the specified object during an event.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_49","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#holdplayer","title":"\ud83d\uddd2\ufe0f HoldPlayer()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_57","title":"Description","text":"

    Disables player movement.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isavailablekodamaelderlvup-boolean","title":"\ud83d\uddd2\ufe0f IsAvailableKodamaElderLvUp() : boolean","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_58","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_50","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_41","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#ishackingcurrentwaveidinrangenumber-number-unknown","title":"\ud83d\uddd2\ufe0f IsHackingCurrentWaveIdInRange(number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_59","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_51","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_42","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isinscreenviewstring-number-number-boolean","title":"\ud83d\uddd2\ufe0f IsInScreenView(string, number, number) : boolean","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_60","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_52","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_43","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isloadinglevel-number","title":"\ud83d\uddd2\ufe0f IsLoadingLevel() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_61","title":"Description","text":"

    Returns whether a level is actively being loaded via the LoadLevel() function for pausing the script until it's finished.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_44","title":"Return Value","text":"

    A 0/1 number representing if a level is being loaded.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isplayingdieventstring-number","title":"\ud83d\uddd2\ufe0f IsPlayingDiEvent(string) : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_62","title":"Description","text":"

    Returns whether the specified event is currently playing.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_53","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_45","title":"Return Value","text":"

    A 0/1 number representing if the specified event is currently playing.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isplayingdieventall-number","title":"\ud83d\uddd2\ufe0f IsPlayingDiEventAll() : number","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_63","title":"Description","text":"

    Returns whether any event is playing.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_46","title":"Return Value","text":"

    A 0/1 number representing if any event is playing.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#isplayingquest-unknown","title":"\ud83d\uddd2\ufe0f IsPlayingQuest() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_64","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_54","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_47","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#killpinballobjects-unknown","title":"\ud83d\uddd2\ufe0f KillPinballObjects() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_65","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_55","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_48","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#loaddieventstring-unknown","title":"\ud83d\uddd2\ufe0f LoadDiEvent(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_66","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_56","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_49","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#loaddieventfrozenstring-unknown","title":"\ud83d\uddd2\ufe0f LoadDiEventFrozen(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_67","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_57","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_50","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#loadlevelstring-unknown","title":"\ud83d\uddd2\ufe0f LoadLevel(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_68","title":"Description","text":"

    Loads an archive (*.pac) using its respective *.level file.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_58","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#makeelectriclinestring-unknown","title":"\ud83d\uddd2\ufe0f MakeElectricLine(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_69","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_59","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_51","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#movedplayerstring-unknown","title":"\ud83d\uddd2\ufe0f MovedPlayer(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_70","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_60","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_52","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#nextblocknumber-unknown","title":"\ud83d\uddd2\ufe0f NextBlock(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_71","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_61","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_53","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#nextsequencenumber","title":"\ud83d\uddd2\ufe0f NextSequence(number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_72","title":"Description","text":"

    Exits the current script sequence and loads the next one via the input ID.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_62","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#notifyactionstring-string","title":"\ud83d\uddd2\ufe0f NotifyAction(string, string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_73","title":"Description","text":"

    Sends a message to the specified object in the *.gedit files. Typically used to turn camera volumes on or off.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_63","title":"Parameters","text":" Name Description on Activates the object. off Deactivates the object. start Unknown..."},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playdieventstring-unknown","title":"\ud83d\uddd2\ufe0f PlayDiEvent(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_74","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_64","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_54","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playdieventfrozenstring-unknown","title":"\ud83d\uddd2\ufe0f PlayDiEventFrozen(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_75","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_65","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_55","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playergetitemstring-number","title":"\ud83d\uddd2\ufe0f PlayerGetItem(string, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_76","title":"Description","text":"

    Gives the player a specific number of specific items.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_66","title":"Parameters","text":" Name Ring ExpPoint"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playernonoperation-yield","title":"\ud83d\uddd2\ufe0f PlayerNonOperation() : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_77","title":"Description","text":"

    Disables player movement.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#playvoicestring-unknown","title":"\ud83d\uddd2\ufe0f PlayVoice(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_78","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_67","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_56","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#quitminigamequest-unknown","title":"\ud83d\uddd2\ufe0f QuitMinigameQuest() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_79","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_68","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_57","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#releaseholdplayer","title":"\ud83d\uddd2\ufe0f ReleaseHoldPlayer()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_80","title":"Description","text":"

    Enables player movement.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#releasepresentskillstring-unknown","title":"\ud83d\uddd2\ufe0f ReleasePresentSkill(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_81","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_69","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_58","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#resetcamera","title":"\ud83d\uddd2\ufe0f ResetCamera()","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_82","title":"Description","text":"

    Restores the player-operated camera.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#resetmenudisabledminigamequest-unknown","title":"\ud83d\uddd2\ufe0f ResetMenuDisabledMinigameQuest() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_83","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_70","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_59","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#resetpinball-unknown","title":"\ud83d\uddd2\ufe0f ResetPinball() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_84","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_71","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_60","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#resetweathernumber-unknown","title":"\ud83d\uddd2\ufe0f ResetWeather(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_85","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_72","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_61","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#save-yield","title":"\ud83d\uddd2\ufe0f Save() : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_86","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_73","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setbossknightlayerenabledboolean-unknown","title":"\ud83d\uddd2\ufe0f SetBossKnightLayerEnabled(boolean) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_87","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_74","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_62","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#sethackingbulletpatternglobalveltimesnumber-unknown","title":"\ud83d\uddd2\ufe0f SetHackingBulletPatternGlobalVelTimes(number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_88","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_75","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_63","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#sethackingbulletpatternvelrangenumber-number-unknown","title":"\ud83d\uddd2\ufe0f SetHackingBulletPatternVelRange(number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_89","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_76","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_64","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#sethudenabledstring-boolean","title":"\ud83d\uddd2\ufe0f SetHUDEnabled(string, boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_90","title":"Description","text":"

    Toggles whether certain menus are available to the player.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_77","title":"Parameters","text":" Name Description MainMenu Toggles access to the pause menu. MapMenu Toggles access to the map screen. "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setlayerenabledstring-boolean","title":"\ud83d\uddd2\ufe0f SetLayerEnabled(string, boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_91","title":"Description","text":"

    Toggles whether an object layout layer is visible.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_78","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setlayerenabledineventstring-boolean","title":"\ud83d\uddd2\ufe0f SetLayerEnabledInEvent(string, boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_92","title":"Description","text":"

    Toggles whether an object layout layer is visible during an event.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_79","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setlookatnumber-number-number","title":"\ud83d\uddd2\ufe0f SetLookAt(number, number, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_93","title":"Description","text":"

    Forces the camera to always look towards the specified position.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_80","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setmenudisabledminigamequeststring-unknown","title":"\ud83d\uddd2\ufe0f SetMenuDisabledMinigameQuest(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_94","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_81","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_65","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setobjstatusstring-number-number-unknown","title":"\ud83d\uddd2\ufe0f SetObjStatus(string, number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_95","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_82","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_66","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setplayerabilityenabledstring-boolean","title":"\ud83d\uddd2\ufe0f SetPlayerAbilityEnabled(string, boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_96","title":"Description","text":"

    Toggles whether the specified ability can be used by the player.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_83","title":"Parameters","text":" Name Description Boost Toggles the ability to boost. ComboAttack Toggles the ability to perform combo attacks. ControlCamera Toggles the ability to move the camera. Cyloop Toggles the ability to perform Cyloop. HomingAttack Toggles the ability to homing attack. Jump Toggles the ability to jump. Lockon Toggles the ability to lock onto enemies. Parry Toggles the ability to parry. WallAction Toggles the ability to climb walls. "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#settimenumber-number","title":"\ud83d\uddd2\ufe0f SetTime(number, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_97","title":"Description","text":"

    Sets the current time.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_84","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#settimepauseboolean","title":"\ud83d\uddd2\ufe0f SetTimePause(boolean)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_98","title":"Description","text":"

    Toggles the passage of time.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_85","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setvaluestring-number-number","title":"\ud83d\uddd2\ufe0f SetValue(string, number, number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_99","title":"Description","text":"

    Sets a value for the specified flag.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_86","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#setvisiblekodamastring","title":"\ud83d\uddd2\ufe0f SetVisibleKodama(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_100","title":"Description","text":"

    This function does not work.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_87","title":"Parameters","text":" States hide show"},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#shootbulletpatternstring","title":"\ud83d\uddd2\ufe0f ShootBulletPattern(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_101","title":"Description","text":"

    Shoots a pre-defined pattern of bullets for the Hacking minigame.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_88","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showheaderwindowuistring-string","title":"\ud83d\uddd2\ufe0f ShowHeaderWindowUI(string, string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_102","title":"Description","text":"

    Displays a dialog using a caption and body entry from a *.cnvrs-text file.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_89","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showobjecttargetstring-unknown","title":"\ud83d\uddd2\ufe0f ShowObjectTarget(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_103","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_90","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_67","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showpracticenotifiernumber-number-number-unknown","title":"\ud83d\uddd2\ufe0f ShowPracticeNotifier(number, number, number) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_104","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_91","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_68","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showquesttargetstring-unknown","title":"\ud83d\uddd2\ufe0f ShowQuestTarget(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_105","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_92","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_69","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showrobbertargetui-unknown","title":"\ud83d\uddd2\ufe0f ShowRobberTargetUI() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_106","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_93","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_70","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showselectboxstring-string-string-string-unknown","title":"\ud83d\uddd2\ufe0f ShowSelectBox(string, string, string, string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_107","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_94","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_71","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showselectboxnowaitvoicestring-string-string-string-string-unknown","title":"\ud83d\uddd2\ufe0f ShowSelectBoxNoWaitVoice(string, string, string, string, string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_108","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_95","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_72","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showsequenceuistring","title":"\ud83d\uddd2\ufe0f ShowSequenceUI(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_109","title":"Description","text":"

    Displays a menu depending on the current sequence.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_96","title":"Parameters","text":" Name Description MainMenu Unknown... MainMenu_ForTutorial Displays the pause menu for highlighting the Cyloop skill. MapMenu Unknown... PauseMenu Unknown..."},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showtalkcaptionstring","title":"\ud83d\uddd2\ufe0f ShowTalkCaption(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_110","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_97","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showtalkcaptionoverfadestring-yield","title":"\ud83d\uddd2\ufe0f ShowTalkCaptionOverFade(string) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_111","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_98","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_73","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showtoastuistring-unknown","title":"\ud83d\uddd2\ufe0f ShowToastUI(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_112","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_99","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_74","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showtutorialuistring-string-unknown","title":"\ud83d\uddd2\ufe0f ShowTutorialUI(string, string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_113","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_100","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_75","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showuserguiduistring","title":"\ud83d\uddd2\ufe0f ShowUserGuidUI(string)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_114","title":"Description","text":"

    Displays an input guide for the specified control method.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_101","title":"Parameters","text":"

    Notice

    Only three of these are actually used, as Sonic Team moved to using internal methods for displaying these guides, rather than using Lua.

    Some names are unknown as they use string hashes that have no source yet.

    Name Internal ID Description CameraControl 0 Displays a graphic for the right stick with the text \"Camera\". Unknown... 1 Displays a quad direction graphic with no text. Jump (unused) 2 Displays a graphic for the A button with no text. Boost (unused) 3 Displays a graphic for the right trigger with no text. HomingAttack 4 Displays a graphic for the X button with the text \"Homing Attack\". Lockon (unused) 5 Displays a graphic for the right stick button with the text \"Lock On\". Cyloop (unused) 6 Displays a graphic for the Y button with the text \"Cyloop (while moving)\". CyloopBattle 7 Displays a graphic for the Y button with the text \"Cyloop (while moving)\". Unknown... 8 Displays a graphic for the left bumper with no text. WallRun (unused) 9 Displays two graphics, one with a quad direction graphic with the text \"Climb\", and another with a graphic for the right trigger with the text \"Wall Run (while climbing)\". Boarding (unused) 10 Displays two graphics, one with a quad direction graphic with the text \"Climb\", and another with a graphic for the A button with no text. Unknown... 11 Displays two graphics, one with a left/right direction graphic with no text, and another with a graphic for the left trigger with no text. Diving (unused) 12 Displays a graphic for the right trigger with no text. Unknown... 13 Displays two graphics, one with a quad direction graphic with the text \"Move the target\", and another with a graphic for the A button with the text \"Cast the line\". Unknown... 14 Displays a graphic for the B button with the text \"Quit\". Unknown... 15 Displays a graphic for the A button with the text \"Reel it in\". Unknown... 16 Displays a graphic for the A button with the text \"Hook the fish\". Unknown... 17 Displays a graphic for the A button with no text. Unknown... 18 Displays a graphic for the A button with no text. Unknown... 19 Displays a graphic for the X button with the text \"Place cannonball\". Unknown... 20 Displays a graphic for the X button with the text \"Load cannon\"."},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#showyesnowindowuistring-string-yield","title":"\ud83d\uddd2\ufe0f ShowYesNoWindowUI(string, string) : yield","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_115","title":"Description","text":"

    Displays a Yes/No dialog using a caption and body entry from a *.cnvrs-text file.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_102","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#spawnhackingenemystring-unknown","title":"\ud83d\uddd2\ufe0f SpawnHackingEnemy(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_116","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_103","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_76","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#spawnpinballobjects-unknown","title":"\ud83d\uddd2\ufe0f SpawnPinballObjects() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_117","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_104","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_77","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#spawnpinballobjectsafterclearing-unknown","title":"\ud83d\uddd2\ufe0f SpawnPinballObjectsAfterClearing() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_118","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_105","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_78","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startclearcheck-unknown","title":"\ud83d\uddd2\ufe0f StartClearCheck() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_119","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_106","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_79","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startletterboxui-unknown","title":"\ud83d\uddd2\ufe0f StartLetterBoxUI() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_120","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_107","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_80","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startminigamequeststring-unknown","title":"\ud83d\uddd2\ufe0f StartMinigameQuest(string) : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_121","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_108","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_81","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startpinball-unknown","title":"\ud83d\uddd2\ufe0f StartPinball() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_122","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_109","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_82","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#starttimegimmick-unknown","title":"\ud83d\uddd2\ufe0f StartTimeGimmick() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_123","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_110","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_83","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startupgimmickinfo-unknown","title":"\ud83d\uddd2\ufe0f StartupGimmickInfo() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_124","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_111","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_84","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#startwaitminigamequest-unknown","title":"\ud83d\uddd2\ufe0f StartWaitMinigameQuest() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_125","title":"Description","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_112","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_85","title":"Return Value","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#unloaddievent-unknown","title":"\ud83d\uddd2\ufe0f UnloadDiEvent() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_126","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_113","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_86","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#unloadlevel-unknown","title":"\ud83d\uddd2\ufe0f UnloadLevel() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_127","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_114","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_87","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#waitfromchaosemeraldnum-unknown","title":"\ud83d\uddd2\ufe0f WaitFromChaosEmeraldNum() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_128","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_115","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_88","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#waitfromflag-unknown","title":"\ud83d\uddd2\ufe0f WaitFromFlag() : unknown","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_129","title":"Description","text":"

    This function is unused.

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_116","title":"Parameters","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#return-value_89","title":"Return Value","text":"

    Unknown...

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#waittimenumber","title":"\ud83d\uddd2\ufe0f WaitTime(number)","text":""},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#description_130","title":"Description","text":"

    Waits for a specified amount of time (in seconds).

    "},{"location":"docs/hedgehog-engine/rangers/scripts/funcs/#parameters_117","title":"Parameters","text":""},{"location":"docs/hedgehog-engine/sonic2010/files/lightfield/","title":"Light Field","text":"

    Light fields are invisible pieces of geometry utilized by Sonic Colors to tint the color of Sonic, and the world around him, as he runs through the stage. Sadly this mechanic is mostly broken in Sonic Colors: Ultimate, but the files still remain.

    "},{"location":"docs/hedgehog-engine/sonic2010/files/lightfield/#light-field-format","title":"Light Field Format","text":"

    Light field data is stored in \"stgxxx_lfield.orc\" BINA containers, which can be found in \"stgxxx_obj.arc\" archives for a given stage. In the original Wii release, the data is stored in big-endian format.

    The format for these files is as follows:

    class LightFieldData {\n    uint signature = 1380730451; // \"RLFS\" ASCII in big-endian.\n    uint version = 1; // Always \"1\".\n    uint lfArrayHierarchyDepth; // The depth count of the Light Field object array hierarchy.\n    uint lfArrayCount; // The number of entries in the Light Field object array.\n    uint lfArrayOffset; // The non-absolute offset to the Light Field object array.\n    uint lfAabbTreeCount; // The number of entries in the Light Field AABB (Axis Aligned Bounding Box) tree.\n    uint lfAabbTreeOffset; // The non-absolute offset to the Light Field AABB tree.\n    LightFieldObject[lfArrayCount] lfObjectArray;\n    LightFieldAABBTreeNode[lfAabbTreeCount] lfAabbTree;\n}\n\nenum LightFieldObjectType : uint8 {\n    SPHERE = 0,\n    CAPSULE = 1,\n    BOX = 2,\n    OMNIBOX = 3\n}\n\nclass LightFieldObject {\n    uint nameOffset; // The non-absolute offset to the object name in the BINA string table.\n    int index; // The index of the Light Field object, to be referenced in \"stgxxx_config.lua\" files.\n    LightFieldObjectType type; // The type of the Light Field object.\n    uint8 padding1; // Padding to pad out the type field to 2 bytes.\n    uint16 childrenAABBTreeEntryIndex; // The index to the bounding box of this node's children in the Light Field AABB tree. 0 if the object node has no children.\n    float[5] scale; // The scale of the Light Field object. Data format varies depending on the LightFieldObjectType (see below for more information).\n    float[3] position; // The position of the Light Field object in 3D space.\n    float[4] rotation; // The rotation of the Light Field object in 3D space.\n}\n\nclass LightFieldAABBTreeNode {\n    int leftNodeIndex; // Index to the left node in the Light Field AABB tree.\n    int rightNodeIndex; // Index to the right node in the Light Field AABB tree. If leftNodeIndex is 0, this field serves as an index back into the Light Field object array.\n    float[3] bBoxMin; // The minimum bounding box vertex position in 3D space.\n    float[3] bBoxMax; // The maximum bounding box vertex position in 3D space.\n}\n
    "},{"location":"docs/hedgehog-engine/sonic2010/files/lightfield/#light-field-object-scale","title":"Light Field Object Scale","text":"

    The contents of the \"scale\" float array in a LightFieldObject varies depending on the type specified in the LightFieldObjectType field.

    Type Layout Sphere radius, margin, 0.0, 0.0, 0.0 Capsule radius, height, margin, 0.0, 0.0 Box length, width, height, margin1, margin2 Omnibox length, width, height, margin, 0.0"},{"location":"docs/hedgehog-engine/sonic2010/files/lightfield/#lightfieldconv-xml-layout","title":"LightFieldConv XML Layout","text":"

    LightFieldConv was a tool used by Sonic Team to convert light field XML data into \"binarc\" .src files, in preparation for packing the data into a BINA container. The following example XML data can be used to generate an .src file, similar to that which would have been used to create \"stg901_lfield.orc\" for the test level discovered in Sonic Colors: Ultimate:

    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<Sonic2010LField version=\"1.0.0\">\n    <scene>\n        <lfield_array>        \n            <node id=\"LFieldBox_01\">\n                <lfield type=\"box\">\n                    <index>2</index>\n                    <box>\n                        <length>80.0</length>\n                        <width>80.0</width>\n                        <height>80.0</height>\n                        <margin1>10.0</margin1>\n                        <margin2>10.0</margin2>\n                    </box>\n                    <bbox>\n                        <min>-40.0 -20.0 -40.0</min>\n                        <max>40.0 60.0 40.0</max>\n                    </bbox>\n                </lfield>\n                <translate>0.0 20.0 -40.0</translate>\n                <rotate>0.707107 0.0 0.0 0.707107</rotate>\n            </node>\n\n            <node id=\"LFieldCapsule_01\">\n                <lfield type=\"capsule\">\n                    <index>3</index>\n                    <capsule>\n                        <radius>30.0</radius>\n                        <height>100.0</height>\n                        <margin>5.0</margin>\n                    </capsule>\n                    <bbox>\n                        <min>25.550200 -30.0 -139.162003</min>\n                        <max>156.261002 30.0 -8.451360</max>\n                    </bbox>\n                </lfield>\n                <translate>90.905502 79.9999 -73.806702</translate>\n                <rotate>0.923880 0.0 -0.382683 -0.000001</rotate>\n            </node>\n\n            <node id=\"LFieldSphere_01\">\n                <lfield type=\"sphere\">\n                    <index>4</index>\n                    <sphere>\n                        <radius>40.0</radius>\n                        <margin>10.0</margin>\n                    </sphere>\n                    <bbox>\n                        <min>-126.564003 -40.0 42.505001</min>\n                        <max>-46.564201 40.0 122.504997</max>\n                    </bbox>\n                </lfield>\n                <translate>-86.564201 0.0 82.504997</translate>\n                <rotate>0.0 0.0 0.0 1.0</rotate>\n            </node>\n\n            <node id=\"LFieldOmniBox_01\">\n                <lfield type=\"omnibox\">\n                    <index>5</index>\n                    <omnibox>\n                        <length>40.0</length>\n                        <width>40.0</width>\n                        <height>40.0</height>\n                        <margin1>10.0</margin1>\n                        <margin2>0.0</margin2>\n                    </omnibox>\n                    <bbox>\n                        <min>60.0 -40.0 40.0</min>\n                        <max>140.0 40.0 120.0</max>\n                    </bbox>\n                </lfield>\n                <translate>100.0 0.0 80.0</translate>\n                <rotate>0.0 0.0 0.0 1.0</rotate>\n            </node>\n        </lfield_array>\n    </scene>\n</Sonic2010LField>\n
    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/","title":"Set Object","text":"

    The Set Object file format is used in Sonic Colors in order to define stage object layout, serving the same purpose as \"Set\" and \"setdata\" XML files in Sonic Unleashed and Sonic Generations respectively. However, unlike in those games, this data is actually stored in binary format for greater efficiency, with the same practice being carried forward in all future titles by Sonic Team.

    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/#set-object-format","title":"Set Object Format","text":"

    Set object data is stored in \"stgxxx_obj_xx.orc\" BINA containers, which can be found in \"set\" folder in \"sonic2010_0.cpk\". The objects themselves are arranged into 8 \"layers\" for each stage, separated into files with suffixes from 00 to 07 in the \"set\" folder. In the original Wii release, the data is stored in big-endian format.

    class SetObjectData {\n    uint signature = 1397703242; // \"SOBJ\" ASCII in big-endian.\n    uint version = 1; // Always \"1\".\n    uint objectDictCount; // The number of unique object types.\n    uint objectDictOffset; // The non-absolute offset to the object dictionary array.\n    uint bvhTreeOffset; // The non-absolute offset to the bounding volume hierarchy tree. This is unused in Colors.\n    uint objectOffsetArrayOffset; // The non-absolute offset to the array of offsets to all the objects stored in the file.\n    uint objectCount; // The number of objects stored in the file.\n    uint bvhTreeNodeCount; // The number of nodes in the bounding volume hierarchy tree.\n    uint objectInstanceCount; // The total number of object instances in the object instance array.\n\n    SetObjectDictNode[objectDictCount] objectDictArray; // The dictionary of object types;\n    SetObjectIndicesArrayNode[objectDictCount] objectIndicesArray; // An array of nodes, that each store indices to objects in the object array, grouped by object type.\n    uint[objectCount] objectOffsetArray; // An array of offsets to all of the objects stored in the file, indexed into by SetObjectIndicesArrayNode entries.\n    SetObject[objectCount] objectArray; // The \"array\" of objects. The term \"array\" is used loosely here as the objects are not fixed size, due to the custom parameters that can be defined for them.\n    SetObjectInstance[objectInstanceCount] objectInstanceArray; // The array of object instances.\n}\n\n// One node for every object type in the SOBJ file.\nclass SetObjectDictNode {\n    uint objectTypeNameOffset; // The non-absolute offset to the object type name in the BINA string table.\n    uint objectIndicesCount; // The number of indices in the object indices array that are of the corresponding type.\n    uint objectIndicesOffset; // The non-absolute offset to the array of object indices for the corresponding type.\n}\n\n// One node for every object type in the SOBJ file.\nclass SetObjectIndicesArrayNode {\n    uint[objectIndicesCount] objectIndices; // An array of indices of all the objects of the corresponding type in the object indices array.\n}\n\nenum ReplicationAlignment : uint8 {\n    NONE = 0,\n    GROUND = 1,\n    GUIDE = 2,\n    GRIND = 3,\n    SV = 4, // Side View\n    CIRCLE = 5\n}\n\n// setcvtr actually treats these enum values as 4 bit uints, with each padded out with a second 4 bit uint to the length of a uint8. For clarity this is documented as a uint8.\nenum ReplicationLayout : uint8 {\n    FRONT = 0x00,\n    SIDE = 0x10,\n    UP = 0x20\n}\n\n// Set objects can be thought of as templates for object instances. Here common parameters can be defined for later use by multiple instances of the same object.\n\nclass SetObject {\n    uint replicationObjectIDComposite; // Composite field of object replication parameters (ReplicationAlignment + ReplicationLayout) and the object ID (uint16), stored as a single uint.\n    uint classId; // The unique ID assigned to the object class in the SetEdClass XML file.\n    uint unknownOffset1 = 0; // Unknown offset, hardcoded to null in setcvtr. Likely intended to be an offset to a node in the unused bvh tree.\n    float interval; // The interval between replicated objects.\n    float rangeIn; // The distance from Sonic where the object should become visible.\n    float rangeOut; // The distance from Sonic where the object should disappear.\n    uint objectInstanceArrayOffset; // The non-absolute offset to the object instance array.\n    uint objectInstanceArrayCount; // The number of instances in the instance array.\n    uint unknownInt = 0; // Unknown uint, hardcoded to 0 in setcvtr.\n\n    // ... Object-specific parameters, defined in SetEdClass XML \"<class>\" entries.\n\n}\n\n// Object instances, or \"units\" as they are referred to in Sonic Team's \"setcvtr\" development tool, are instances of SetObject templates that are described above. By using this system of separating object units from objects themselves, clusters of objects can be defined in a level with the same parameters, with minimal repitition.\n\nclass SetObjectInstance {\n    float[3] position; // The position of the object instance in 3D space.\n    float[3] rotation; // The rotation of the object instance in 3D space.\n}\n
    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/#setcvtr-xml-layouts","title":"setcvtr XML Layouts","text":"

    \"setcvtr\" was a tool used by Sonic Team with the purpose of converting set data XML files into binarc \".src\" files, in preparation for packing data into BINA containers. This allowed the team to define objects in XML format to make development and testing easier. The tool takes two XML files as input, which are explained below.

    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/#setedclass-xml-layout","title":"SetEdClass XML Layout","text":"

    The \"SetEdClass\" XML layout is used to define the various types of objects, and their respective parameters, that can be utilized within stages. The following XML demonstrates how a SetEdClass XML can be defined, alongside object classes and parameters:

    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SetEdClass>\n    <class name=\"DummyObjectClass1\" crc=\"1\">\n        <param_desc_array>\n            <param_desc name=\"boolParam\" type=\"bool\" />\n\n            <param_desc name=\"sint8Param\" type=\"sint8\" default=\"1\" />\n            <param_desc name=\"sint16Param\" type=\"sint16\" />\n            <param_desc name=\"sint32Param\" type=\"sint32\" />\n\n            <param_desc name=\"uint8Param\" type=\"uint8\" />\n            <param_desc name=\"uint16Param\" type=\"uint16\" />\n            <param_desc name=\"uint32Param\" type=\"uint32\" />\n\n            <!--\n                Accepts normal integers, but doesn't appear to take hex input correctly.\n            -->\n            <param_desc name=\"uint32HexParam\" type=\"uint32_hex\" />\n\n            <param_desc name=\"floatParam\" type=\"float\" />\n\n            <!--\n                Arrays are not fixed size at the class level, count is declared when the parameter is used in the SetObject XML.\n            -->\n            <param_desc name=\"sint32ArrayParam\" type=\"array_sint32\" />\n            <param_desc name=\"floatArrayParam\" type=\"array_float\" />\n        </param_desc_array>\n    </class>\n\n    <class name=\"DummyObjectClass2\" crc=\"2\">\n        <param_desc_array>\n            <param_desc name=\"enumParam\" type=\"enum\" default=\"test2\">\n                <!--\n                    When used in the SetObject XML, numbers can be also used in place of item names.\n                -->\n                <item name=\"enum1\" caption=\"Enum 1 Description\" />\n                <item name=\"enum2\" caption=\"Enum 2 Description\" />\n                <item name=\"enum3\" caption=\"Enum 3 Description\" />\n            </param_desc>\n\n            <param_desc name=\"bitsetParam\" type=\"bitset\">\n                <field name=\"bit1\" pos=\"0\" />\n                <field name=\"bit2\" pos=\"1\" />\n                <field name=\"bit3\" pos=\"2\" />\n                <field name=\"bit4\" pos=\"3\" />\n            </param_desc>\n\n            <!--\n                Valid parameter type, but doesn't appear to function correctly - causes setcvtr to fail on declaration.\n            -->\n            <!-- <param_desc name=\"stringParam\" type=\"string\" /> -->\n\n            <param_desc name=\"positionParam\" type=\"position\" />\n\n            <param_desc name=\"targetParam\" type=\"target\" />\n\n        </param_desc_array>\n    </class>\n</SetEdClass>\n
    "},{"location":"docs/hedgehog-engine/sonic2010/files/setobject/#setobject-xml-layout","title":"SetObject XML Layout","text":"

    The \"SetObject\" XML layout is used to define objects, and their respective \"units\", that should be placed within a stage. The following XML demonstrates how a SetObject XML can be defined, utilizing objects from the SetEdClass in the previous example and defining the parameters:

    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<SetObject>\n    <object id=\"1\" class=\"DummyObjectClass1\" range_in=\"100\" range_out=\"120\">\n        <param_array>\n            <param name=\"boolParam\">true</param>\n\n            <param name=\"sint8Param\">5</param>\n            <param name=\"sint16Param\">10</param>\n            <param name=\"sint32Param\">15</param>\n\n            <param name=\"uint8Param\">20</param>\n            <param name=\"uint16Param\">25</param>\n            <param name=\"uint32Param\">30</param>\n\n            <param name=\"uint32HexParam\">100</param>\n\n            <param name=\"floatParam\">1.5</param>\n\n            <param name=\"sint32ArrayParam\" count=\"5\">1 2 3 4 5</param>\n            <param name=\"floatArrayParam\" count=\"3\">1 2 3</param>\n        </param_array>\n\n        <unit_array interval=\"0\" alignment=\"none\" layout=\"front\">\n            <unit position=\"10 10 10\" rotation=\"0.0 0.0 0.0\"/>\n            <unit position=\"30 30 30\" rotation=\"0.0 0.0 0.0\"/>\n            <unit position=\"50 50 50\" rotation=\"0.0 0.0 0.0\"/>\n        </unit_array>\n    </object>\n\n    <object id=\"2\" class=\"DummyObjectClass2\" range_in=\"110\" range_out=\"130\">\n        <param_array>\n            <!--\n                Bits are set to true by defining them in the parameter. If a bit is omitted, it's set to false.\n            -->\n            <param name=\"bitsetParam\">\n                <bit name=\"bit1\" />\n                <bit name=\"bit2\" />\n                <bit name=\"bit4\" />\n            </param>\n\n            <param name=\"enumParam\">enum2</param>\n\n            <!-- <param name=\"stringParam\">demostring</param> -->\n\n            <param name=\"positionParam\">10 20 30</param>\n\n            <param name=\"targetParam\">1</param>\n        </param_array>\n        <unit_array interval=\"1\" alignment=\"circle\" layout=\"side\">\n            <unit position=\"5 5 5\" rotation=\"0.707107 0.0 0.0\"/>\n            <unit position=\"25 25 25\" rotation=\"0.923880 0.0 -0.382683\"/>\n        </unit_array>\n    </object>\n</SetObject>\n
    "},{"location":"docs/hedgehog-engine/swa/cutscenes/ids/","title":"Cutscene IDs for Sonic Unleashed","text":"

    Info

    Thanks to Archxe and Hedgeturdd for writing these documents!

    Here's a list with all the cutscenes and their respective archive names in Sonic Unleashed.

    Cutscene Name Cutscene ID Opening M0_01_05 A New Journey M0_06 Special Sundae M1_01 The First Night M1_02 Tails in Trouble! M1_03_1 To Spagonia! M1_03_2 Kidnapped M2_01 Same As Ever M2_02 Gaia Manuscripts M2_03 Eggman Again M3_01 The Egg Beetle M3_02 Temple Activated! M3_03 Planet Pieces M3_04 Tails' Report M3_05 Eggman's Idea M4_01 Guiding Pulse M5_01 The Dark Gaia Project M5_02 Chip's Change M6_01 Chip's Memories M6_02 No Reason M6_03 Eggmanland M7_01 The Final Temple M7_02 The 7th Continent M7_03 Congratulations M7_04 Pickle's Message M8_01 The Egg Dragoon M8_02 Planet's End M8_03 Dark Gaia Appears M8_04 Shrines in Flight M8_05 Hour of Awakening M8_06_1 Let's Finish This! M8_06_2 Speading Darkness M8_07 Dark World M8_08 Hope and Despair M8_09 The Final Form M8_10 Darkness and Light M8_11_1 Annihilation M8_11_2 A Score Settled M8_11_3 Rekindled Light M8_12 Begin Anew M8_13 Save the Speech M8_14 To the Surface M8_15 Always M8_16 The Divine Beast S1_03 The Key S1_04 Chun-Nan Temple S1_05 Back to Normal S1_06 Amy's Mistake S2_01 Midnight Dance S2_03 Rescuing Amy S2_04 A Monster on Ice S3_03 Holoskan Temple S3_04 Spagonian Temple T0_01 Shamaran Temple T0_02 Charge! T0_03 Temple Entrance T0_04 Sonic and Chip (in Chun-nan) CHN Sonic and Chip (in Adabat) SEA Sonic and Chip (in Holoska) SNW_gooON"},{"location":"docs/hedgehog-engine/swa/levels/ids/","title":"Level IDs for Sonic Unleashed","text":"

    Info

    Thanks to Archxe and Hedgeturdd for writing these documents!

    "},{"location":"docs/hedgehog-engine/swa/levels/ids/#mapping","title":"Mapping","text":"

    Level IDs are defined like this:

    Act{Day/Night}_{region}Act{stage_number}\nor\nAct{Day/Night}_{sub}{region}_{substage_number}\n

    Note

    Not all stages follow this format, exceptions include:

    ActD_EU -> Rooftop Run Day 1

    ActD_SubMykonos_01 -> Windmill Isle Day Act 3

    Here's a list with all the levels and their respective archive names in Sonic Unleashed.

    "},{"location":"docs/hedgehog-engine/swa/levels/ids/#region-names","title":"Region Names","text":"Region Internal Name Apotos/Windmill Isle Mykonos Mazuri/Savannah Citadel Africa Spagonia/Rooftop Run EU Chun-Nan/Dragon Road China Holoska/Cool Edge Snow Shamar/Arid Sands Petra Empire City/Skyscraper Scamper NY Adabat/Jungle Joyride Beach EggmanLand EggManLand"},{"location":"docs/hedgehog-engine/swa/levels/ids/#stages-day","title":"Stages (Day)","text":"Stage Name Level ID Windmill Isle Day Act 1 ActD_MykonosAct1 Windmill Isle Day Act 1-2 ActD_SubMykonos_04 Windmill Isle Day Act 2 ActD_MykonosAct2 Windmill Isle Day Act 2-2 ActD_SubMykonos_05 Windmill Isle Day Act 3 ActD_SubMykonos_01 Windmill Isle Day Act 4 ActD_SubMykonos_02 Savannah Citadel Day Act 1 ActD_Africa Savannah Citadel Day Act 1-2 ActD_SubAfrica_05 Savannah Citadel Day Act 2 ActD_SubAfrica_01 Savannah Citadel Day Act 3 ActD_SubAfrica_03 Savannah Citadel Day Act 3-2 ActD_SubAfrica_06 Savannah Citadel Day Act 4 ActD_SubAfrica_02 Savannah Citadel Day Act 5 ActD_SubAfrica_04 Rooftop Run Day 1 ActD_EU Rooftop Run Day Act 1-2 ActD_SubEU_05 Rooftop Run Day Act 2 ActD_SubEU_01 Rooftop Run Day Act 2-2 ActD_SubEU_06 Rooftop Run Day Act 3 ActD_SubEU_02 Rooftop Run Day Act 4 ActD_SubEU_03 Rooftop Run Day Act 5 ActD_SubEU_04 Tornado Defence Act 1 ExStageTails1 Dragon Road Day Act 1 ActD_China Dragon Road Day Act 1-2 ActD_SubChina_05 Dragon Road Day Act 2 ActD_SubChina_03 Dragon Road Day Act 2-2 ActD_SubChina_06 Dragon Road Day Act 3 ActD_SubChina_04 Dragon Road Day Act 4 ActD_SubChina_01 Dragon Road Day Act 5 ActD_SubChina_02 Cool Edge Day Act 1 ActD_Snow Cool Edge Day Act 1-2 ActD_SubSnow_04 Cool Edge Day Act 2 ActD_SubSnow_01 Cool Edge Day Act 2-2 ActD_SubSnow_05 Cool Edge Day Act 3 ActD_SubSnow_02 Cool Edge Day Act 4 ActD_SubSnow_03 Arid Sands Day Act 1 ActD_Petra Arid Sands Day Act 1-2 ActD_SubPetra_04 Arid Sands Day Act 2 ActD_SubPetra_03 Skyscraper Scamper Day Act 1 ActD_NY Skyscraper Scamper Day Act 1-2 ActD_SubNY_03 Skyscraper Scamper Day Act 2 ActD_SubNY_01 Skyscraper Scamper Day Act 3 ActD_SubNY_02 Jungle Joyride Day Act 1 ActD_Beach Jungle Joyride Day Act 1-2 ActD_SubBeach_05 Jungle Joyride Day Act 2 ActD_SubBeach_02 Jungle Joyride Day Act 3 ActD_SubBeach_04 Jungle Joyride Day Act 4 ActD_SubBeach_01 Jungle Joyride Day Act 5 ActD_SubBeach_03 EggmanLand Act_EggmanLand Tornado Defense Act 2 ExStageTails2"},{"location":"docs/hedgehog-engine/swa/levels/ids/#stages-night","title":"Stages (Night)","text":"Stage Name Level ID Windmill Isle Night Act 1 ActN_MykonosEvil Windmill Isle Night Act 1-2 ActN_SubMykonos_03 Windmill Isle Night Act 1-3 ActN_SubMykonos_04 Windmill Isle Night Act 2 ActN_SubMykonos_01 Savannah Citadel Night Act 1 ActN_AfricaEvil Savannah Citadel Night Act 2 ActN_SubAfrica_01 Savannah Citadel Night Act 3 ActN_SubAfrica_02 Savannah Citadel Night Act 4 ActN_SubAfrica_03 Rooftop Run Night Act 1 ActN_EUEvil Rooftop Run Night Act 1-2 ActN_SubEU_02 Rooftop Run Night Act 2 ActN_SubEU_01 Dragon Road Night Act 1 ActN_ChinaEvil Dragon Road Night Act 1-2 ActN_SubChina_03 Dragon Road Night Act 2 ActN_SubChina_01 Dragon Road Night Act 3 ActN_SubChina_02 Arid Sands Night Act 1 ActN_PetraEvil Arid Sands Night Act 2 ActD_SubPetra_04 Arid Sands Night Act 3 ActD_SubPetra_04 Cool Edge Night Act 1 ActN_SnowEvil Cool Edge Night Act 2 ActN_SubSnow_01 Cool Edge Night Act 3 ActN_SubSnow_02 Skyscraper Scamper Night Act 1 ActN_NYEvil Skyscraper Scamper Night Act 2 ActN_SubNY_02 Skyscraper Scamper Night Act 3 ActN_SubNY_01 Jungle Joyride Night Act 1 ActN_BeachEvil Jungle Joyride Night Act 1-2 ActN_SubBeach_03 Jungle Joyride Night Act 2 ActN_SubBeach_01 Jungle Joyride Night Act 3 ActN_SubBeach_02"},{"location":"docs/hedgehog-engine/swa/levels/ids/#bosses","title":"Bosses","text":"Boss Name Level ID Egg Beetle BossEggBeetle Egg Devil Ray BossEggRayBird Dark Gaia Phoenix BossPhoenix Dark Gaia Moray BossDarkGaiaMoray Dark Guardian BossPetra Egg Lancer BossEggLancer Egg Dragoon BossEggDragoon Dark Gaia - Gaia Colossus Sections BossDarkGaia1_1Air Dark Gaia - Sonic Section 1 BossDarkGaia1_1Run Dark Gaia - Sonic Section 2 BossDarkGaia1_2Run Dark Gaia - Sonic Section 3 BossDarkGaia1_3Run Perfect Dark Gaia BossFinalDarkGaia"},{"location":"docs/hedgehog-engine/swa/towns/ids/","title":"Town IDs for Sonic Unleashed","text":"

    Info

    Thanks to Archxe and Hedgeturdd for writing these documents!

    Here's a list with all the towns and their respective archive names in Sonic Unleashed.

    "},{"location":"docs/hedgehog-engine/swa/towns/ids/#towns-day","title":"Towns (Day)","text":"Town Name Level ID Apotos Day Town Town_Mykonos Apotos Day Entrance Field Town_MykonosETF Mazuri Day Town Town_Africa Mazuri Day Entrance Field Town_AfricaETF Spagonia Day Town Town_EuropeanCity Spagonia Day Entrance Field Town_EuropeanCityETF Spagonia Day Lab Town_EULabo Chun-Nan Day Town Town_China Chun-Nan Day Entrance Field Town_ChinaETF Holoska Day Town Town_Snow Holoska Day Entrance Field Town_SnowETF Shamar Day Town Town_PetraCapital Shamar Day Entrance Field Town_PetraCapitalETF Shamar Day Lab Town_PetraLabo Empire City Day Town Town_NYCity Empire City Day Entrance Field Town_NYCityETF Adabat Day Town Town_SouthEastAsia Adabat Day Entrance Field Town_SouthEastAsiaETF EggmanLand Town Town_EggManBase"},{"location":"docs/hedgehog-engine/swa/towns/ids/#towns-night","title":"Towns (Night)","text":"Town Name Level ID Apotos Night Town Town_Mykonos_Night Apotos Night Entrance Field Town_MykonosETF_Night Mazuri Night Town Town_Africa_Night Mazuri Night Entrance Field Town_AfricaETF_Night Spagonia Night Town Town_EuropeanCity_Night Spagonia Night Entrance Field Town_EuropeanCityETF_Night Spagonia Night Lab Town_EULabo_Night Chun-Nan Night Town Town_China_Night Chun-Nan Night Entrance Field Town_ChinaETF_Night Holoska Night Town Town_Snow_Night Holoska Night Entrance Field Town_SnowETF_Night Shamar Night Town Town_PetraCapital_Night Shamar Night Entrance Field Town_PetraCapitalETF_Night Shamar Night Lab Town_PetraLabo_Night Empire City Night Town Town_NYCity_Night Empire City Night Entrance Field Town_NYCityETF_Night Adabat Night Town Town_SouthEastAsia_Night Adabat Night Entrance Field Town_SouthEastAsiaETF_Night"},{"location":"docs/hedgehog-engine/wars/levels/ids/","title":"Level ID Map","text":""},{"location":"docs/hedgehog-engine/wars/levels/ids/#mapping","title":"Mapping","text":"

    Stage IDs are defined like this:

    {world_id}{stage_type}{character_index}\n

    Example

    w5a01 -> Lost Valley

    "},{"location":"docs/hedgehog-engine/wars/levels/ids/#worlds-zones","title":"Worlds (Zones)","text":"World ID World Name w1 Death Egg w2 Chemical Plant w3 City w4 Mystic Jungle w5 Green Hill w6 Metropolis w7 Eggman Empire Fortress"},{"location":"docs/hedgehog-engine/wars/levels/ids/#stage-type","title":"Stage Type","text":"Stage Type ID Stage Type a Act b Boss d DLC s Credits t Title x Extra"},{"location":"docs/hedgehog-engine/wars/levels/ids/#character-index","title":"Character Index","text":"Character Index Character 01 Modern Sonic 02 Avatar 03 Tag Team 04 Classic Sonic

    Note

    Bosses don't use this value to indicate character, rather as a boss index for the current world (which only comes up in World 7).

    Note

    The Secret and Extra stages don't use this value to indicate character.

    "},{"location":"docs/hedgehog-engine/wars/levels/ids/#main-stages","title":"Main Stages","text":"Stage Name Level ID Lost Valley w5a01 Space Port w2a02 Ghost Town w3a04 Prison Hall w1a02 VS. Zavok w1b01 Egg Gate w1a01 Arsenal Pyramid w5a03 Luminous Forest w4a01 VS. Infinite w4b01 Green Hill w5a04 VS. Eggman w5b01 Park Avenue w3a02 Casino Forest w4a04 Aqua Road w4a02 Sunset Heights w3a01 Capital City w6a02 VS. Infinite w6b01 Chemical Plant w2a04 Red Gate Bridge w3a03 Guardian Rock w5a02 Network Terminal w2a01 Death Egg w1a04 Metropolitan Highway w6a01 Null Space w6a03 Imperial Tower w7a02 Mortar Canyon w7a01 VS. Infinite w7b01 Iron Fortress w7a04 Final Judgement w7a03 VS. Death Egg Robot w7b02"},{"location":"docs/hedgehog-engine/wars/levels/ids/#secret-stages","title":"Secret Stages","text":"Stage Name Level ID Fire Cannon 1 w4x02 Vanish Panel 1 w3x02 Bomb Block 1 w5x03 Plasma Cannon 1 w2x02 Laser Cannon 1 w1x02 Reverse Block 1 w6x02"},{"location":"docs/hedgehog-engine/wars/levels/ids/#extra-stages","title":"Extra Stages","text":"Stage Name Level ID Flying Pod w5x02 Bomb Block 2 w2x01 Laser Cannon 2 w6x01 Reverse Block 2 w5x01 Vanish Panel 2 w4x01 Fire Cannon 2 w3x01 Plasma Cannon 2 w1x01"},{"location":"docs/hedgehog-engine/wars/levels/ids/#episode-shadow-stages","title":"Episode Shadow Stages","text":"Stage Name Level ID Enemy Territory w3d01 Eggman's Facility w4d01 Virtual Reality w5d01"},{"location":"docs/nn/common/chunk-format/","title":"NN Chunk Format","text":"

    Warning

    This page is still a work in progress! Any additions and updates are greatly appreciated!

    Info

    HedgeDocs' initial Sega NN documentation was written by: Radfordhound.

    Thanks to:

    The Sega NN Chunk Format is a generic \"container\" format developed by Sega somewhere around 2002-2004. It originally appeared in 2004's \"Sega Superstars\" (to our knowledge), and has been heavily utilized in many Sega games released since.

    The format is heavily based on the older \"Sega Ninja Chunk Model\" format, which was originally developed for the Sega Dreamcast and was utilized in many Dreamcast games (it was even included as part of the Dreamcast's \"Katana\" SDK).

    While the exact meaning of the \"NN\" in \"Sega NN\" is still currently unknown, given that it is so heavily based off of the older Ninja format, it's almost certainly an acronym for something like \"New Ninja\" or \"Ninja Next\".

    "},{"location":"docs/nn/common/chunk-format/#platforms","title":"Platforms","text":"

    The NN Chunk Format, much like the older Ninja format it's based on, is designed heavily around the specific hardware/software requirements of whatever platform it is intended to be used on.

    Unlike the older Ninja format, however (which only supports one platform: the Sega Dreamcast), the NN Chunk Format is \"multi-platform\", and therefore comes in many different platform-specific variants.

    All known supported platforms are listed in the following chart:

    ID Meaning CC NN Library Version Endianness Alignment Description NX Ninja Xbox x DirectX G1.1 Little 16 Xbox/Xbox 360 NS Ninja Sony s PlayStation 2 Little 16 ? PlayStation 2 NG Ninja Gamecube g GAMECUBE Big 32 Gamecube/Wii NC Ninja Cell c ? PS3 Little ? 16 ? PlayStation 3 NU Ninja Umd ? u/s PSP Little 16 ? PlayStation Portable DS DS ? ? Little 16 ? Nintendo DS/3DS NI Ninja Ios i ? OpenGL ES 1.1 Little 16 ? iOS/Android/Windows Phone NE ? ? DirectX G2.0 on XBOX360 Little ? 16 ? Xbox 360 NY ? ? ? Big 16 ? Xbox 360/PlayStation 3 NZ Ninja [Other] z DirectX G2.0 Little 16 Other platforms, such as PC"},{"location":"docs/nn/common/chunk-format/#data-chunks","title":"Data Chunks","text":"

    As the name implies, files in the NN Chunk Format are comprised of a series of one or more \"data chunks\", one after another.

    A \"data chunk\" is simply a block of data (structs, arrays, strings, etc.) that represents a single resource of a specific type.

    All known data chunk types are listed in the following chart:

    ID CC Type Description TL t TEXLIST A list of textures. EF ? EFFECTLIST A list of effects (shaders). NN a NODENAMELIST A list of names for the nodes (bones) within an object (a model). OB o OBJECT A model. CA ? CAMERA Camera parameters. MO m MOTION (node) A node (bone) animation. MC d MOTION (camera) A camera animation. ML ? MOTION (light) A light animation. MM f MOTION (morph) A morph animation. MA v MOTION (material) A material animation. LI l LIGHT A light.

    Todo

    Add the rest of the data chunk types.

    For more specific information on the format of these data chunk types, please refer to the linked pages in the above chart.

    "},{"location":"docs/nn/common/chunk-format/#file-types","title":"File Types","text":"

    Just like with the older Ninja format, NN chunk files come in two forms:

    Info

    The vast majority of NN chunk files in released games are in binary-form.

    To our knowledge, all released games using NN don't support loading text-form files, meaning that all NN text-form files found in the games are unused developer leftovers!

    File extensions for NN chunk files typically consist of three characters:

    1. The \"CC\" (character-code) of the platform.
    2. n for Binary-Form files, or t for Text-Form files.
    3. The \"CC\" (character-code) of the last data chunk contained within the file.

    Examples

    Extension Meaning .xno Xbox | Binary-Form | OBJECT .gno Gamecube | Binary-Form | OBJECT .xtv Xbox | Text-Form | MOTION (material) .snt Sony | Binary-Form | TEXLIST"},{"location":"docs/nn/common/chunk-format/#binary-form-file-format","title":"Binary-Form File Format","text":"

    Binary-Form NN chunk files are just a series of consecutive \"binary chunks\", each of which begins with the following struct:

    Important

    All instances of this struct (and ONLY this struct) are represented in little-endian, regardless of the endianness specified by the platform. Everything else in Binary-Form NN chunk files is represented in the endianness specified by the platform.

    /*\n    NOTE: A struct type with this name does not actually exist\n    (to my knowledge) in real Sega NN implementations; instead,\n    these fields are just embedded directly within every binary\n    chunk's header struct. This is just an easier way to think\n    about it for our purposes.\n*/\nstruct NNS_BINCNK_HEADER\n{\n  /*\n    The four-character identifier for this binary chunk;\n    specifies what type of binary chunk this is.\n  */\n  uint32_t Id;\n\n  /*\n    The offset to the next four-character identifier in the\n    file, relative to the end of this struct (such that after\n    doing fread(&OfsNextId, sizeof(OfsNextId), 1, file);\n    you can just do fseek(file, OfsNextId, SEEK_CUR)).\n  */\n  uint32_t OfsNextId;\n};\n

    Immediately following this struct comes all of the data (structs, strings, etc.) required to represent the binary chunk. The format of this data depends on the platform and type of binary chunk being represented. Check the Id field to determine this.

    After each binary chunk (including all of its data) has been written, the file is padded (with 0s) to a position that is divisible by the \"alignment\" specified by the platform (usually it's 16, but notably, it's 32 on Gamecube/Wii).

    What follows is documentation for all known binary chunk types, in the order they appear within binary-form NN chunk files.

    "},{"location":"docs/nn/common/chunk-format/#info-chunk","title":"Info Chunk","text":"

    Important

    This chunk is required to be present at the beginning of all binary-form NN chunk files! The Sega NN games I checked actually rely on this behavior, so you can too.

    This binary chunk serves as the header for a binary-form NN chunk file, and contains info needed to parse the file. It is represented as the following struct:

    struct NNS_BINCNK_FILEHEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to \"**IF\", where \"**\" is the \"ID\" of\n    the platform (e.g. \"NGIF\" for \"Ninja Gamecube InFo\").\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /* The number of data chunks in the file. */\n  uint32_t nChunk;\n\n  /* Absolute offset to the first data chunk in the file. */\n  uint32_t OfsData;\n\n  /* The combined size of all of the data chunks in the file, including padding. */\n  uint32_t SizeData;\n\n  /* Absolute offset to the (required) NOF0 binary chunk. */\n  uint32_t OfsNOF0;\n\n  /*\n    Size of the (required) NOF0 binary chunk, including its header.\n    Depending on the variant of the format, this size either includes\n    the padding that comes after the NOF0 binary chunk, or it doesn't.\n\n    (I haven't figured out exactly which versions include padding yet).\n\n    (It seems PSP files and .[x]ncp files don't count the padding,\n    but everything else does?)\n  */\n  uint32_t SizeNOF0;\n\n  /*\n    1 in most files, 0 in some newer variants.\n    (Maybe they just stopped using this value?)\n  */\n  uint32_t Version;\n};\n

    Todo

    Further research NIFL header chunks and add info on those.

    "},{"location":"docs/nn/common/chunk-format/#data-chunk-header","title":"Data Chunk Header","text":"

    After the Info Chunk, comes a sequence of one or more data chunks.

    In binary-form NN chunk files, each data chunk begins with the following struct:

    struct NNS_BINCNK_DATAHEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to the \"ID\" of the platform, followed\n    by the \"ID\" of the data chunk type being written (e.g.\n    \"NXTL\" for \"Ninja Xbox Texture List\").\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /*\n    Offset to the \"main\" (root) struct that makes up this chunk's data\n    (e.g. offset to a NNS_NODENAMELIST if the chunk type indicates\n    that this is a NODENAMELIST data chunk), relative to the\n    position specified by the [OfsData] field from the info chunk.\n  */\n  uint32_t OfsMainData;\n\n  /* Always 0 in every file I've seen thus far. */\n  uint32_t Version;\n};\n

    Immediately following this struct comes all of the data (structs, strings, etc.) required to represent the data chunk. The format of this data depends on the platform and type of data chunk being represented. Check the chunk ID from the ChunkHeader field in the above struct to determine this.

    See the linked pages in the data chunks chart.

    "},{"location":"docs/nn/common/chunk-format/#offsets-list-chunk","title":"Offsets List Chunk","text":"

    Important

    This chunk is required to be present in all binary-form NN chunk files!

    After all of the data chunks, comes the offsets list chunk.

    This binary chunk represents a list of positions for all of the pointers (\"offsets\") in all of the data chunks in the file, relative to the value of the [OfsData] field from the file's info chunk.

    struct NNS_BINCNK_NOF0HEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to \"NOF0\".\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /* The number of pointer positions listed within this chunk. */\n  uint32_t nData;\n\n  /*\n    Padding; always 0 in files.\n\n    Some games use this value as a marker that states whether or not\n    the offsets have been \"fixed\". In those games, after they're done\n    \"fixing\" all of the pointers listed within this chunk, they will set\n    this value to 1 in memory.\n  */\n  uint32_t Pad;\n};\n

    Immediately following this struct comes an array of uint32_t values of size [nData]. These values represent the positions of every pointer in all of the data chunks in the file, relative to the [OfsData] field from the file's info chunk.

    Most Sega NN games use this chunk to quickly \"fix\" all of the pointers within the data chunks (that is, to convert all of the offsets into absolute memory addresses that can then just be used as normal pointers).

    Some games, however, (namely: Sonic 4 Episode I for Windows Phone) ignore the values in this chunk, and instead, just manually add [OfsData] to each offset to get an absolute file position whenever they need to jump there.

    Regardless of whether the data is used or not, it is still required to be present.

    Todo

    Add pseudo-code for \"fixing\" the offsets listed in this chunk.

    "},{"location":"docs/nn/common/chunk-format/#file-name-chunk","title":"File Name Chunk","text":"

    Info

    This chunk is completely optional and seems to only be used for debugging/internal-tooling purposes.

    This chunk simply states the name and extension (without the path) of the file it's contained in.

    struct NNS_BINCNK_NFN0HEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to \"NFN0\".\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /* Padding; always 0 in files. */\n  uint32_t Pad[2];\n};\n

    Immediately following this header comes a null-terminated string which represents the file's name and extension (without its path).

    "},{"location":"docs/nn/common/chunk-format/#end-chunk","title":"End Chunk","text":"

    Important

    This chunk is required to be present as the last chunk in all binary-form NN chunk files!

    This is the last chunk in all binary-form NN chunk files. It exists purely to indicate that there are no more chunks left in the file, so that you know when to stop reading if you're reading the file one chunk at a time.

    struct NNS_BINCNK_NENDHEADER\n{\n  /*\n    Binary chunk header; must be present at the beginning of all binary chunks.\n\n    The chunk ID is set to \"NEND\".\n  */\n  NNS_BINCNK_HEADER ChunkHeader;\n\n  /* Padding; always 0 in files. */\n  uint32_t Pad[2];\n};\n
    "},{"location":"docs/nn/common/chunk-format/#text-form-file-format","title":"Text-Form File Format","text":"

    Just like text-form Ninja chunk model files, text-form NN chunk files are actually C header files designed to be directly #include-able from C or C++ code, allowing developers to literally embed NN data directly into the game's code itself!

    They also, however, are designed to serve as a human-readable variant of binary-form NN chunk files that can be more easily parsed and/or generated by the official Sega NN tooling.

    They accomplish all of this by using only a very strict subset of C in a precise layout, and by heavily utilizing preprocessor defines from other NN library header files that the developer is supposed to #include in their code before #include-ing the text-form NN chunk file.

    The general layout is as follows:

    Important

    Replace these special phrases in all of the following \"text snippets\" as follows:

    1. A required (?) \"header\" comment that is comprised of the following, in order:
      1. The name and version number of the tool used to create this file.
      2. \"Create\\t:\" followed by the date this file was created in the \"ddd MMM dd HH:mm:ss yyyy\" .NET DateTime format.
      3. References to each of the \"main\" (root) structs that makes up the data of every data chunk used in the file, in this format: \"TYPE\\t: NAME\", where TYPE refers to the type of the struct being referenced (e.g. NNS_TEXFILELIST). See the linked pages in the data chunks chart.
    2. One or more data chunks, each of which is comprised of the following, in order:
      1. A comment with the text: \"TYPE START\", where TYPE refers to the data chunk's type (e.g. TEXLIST).
      2. All of the data used by this data chunk, represented as C code comprised heavily of special NN preprocessor macros. See the linked pages in the data chunks chart.
      3. A comment with the text: \"TYPE END\", where TYPE refers to the data chunk's type (e.g. TEXLIST).
    3. A required (?) comment with the text: \"End of File\".

    SampleFile.xtt

    /*\n    Sample NN Exporter Version 1.00.00\n    Create  : Wed Feb 08 21:06:46 2023\n    NNS_TEXFILELIST : nntexfilelist_SampleFile\n*/\n\n/* TEXLIST START */\n\nNNS_TEXFILE nntexfile_SampleFile[] =\n{\n    TEXFILE(\n        TF_FILENAME( \"SampleTex_dif.dds\" ),\n        TF_FILTER( NND_MIN_LINEAR_MIPMAP_NEAREST, NND_MAG_LINEAR )\n    ),\n    TEXFILE(\n        TF_FILENAME( \"SampleTex_spec.dds\" ),\n        TF_FILTER( NND_MIN_LINEAR_MIPMAP_NEAREST, NND_MAG_LINEAR )\n    ),\n    TEXFILE(\n        TF_FILENAME( \"SampleTex_norm.dds\" ),\n        TF_FILTER( NND_MIN_LINEAR_MIPMAP_NEAREST, NND_MAG_LINEAR )\n    ),\n};\n\nNNS_TEXFILELIST nntexfilelist_SampleFile[] =\n{\n    TEXFILELIST(\n        TFL_N_TEXFILE( 3 ),\n        TFL_TEXFILE( nntexfile_SampleFile )\n    )\n};\n\n/* TEXLIST END */\n\n/* End of File */\n

    Info

    All of the following in the above example are struct/enum/preprocessor defines from the NN library:

    For a complete list of all of these defines, please refer to the individual pages linked in the data chunks chart (for this example, refer to the TEXLIST documentation).

    The ordering of the data within each data chunk is generally in \"reverse\" order, such that any reference to a value will not be written until after the value it is referencing, as is required by C.

    In some cases, the \"reverse\" order is still not enough to satisfy this requirement, so the Sega NN exporters will write an extern declaration for the value being referenced.

    Example snippet from en_Kyozoress.xto in Sonic '06

    Here, the nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye value is declared so that it can be referenced by the VTX_LISTPTR field in nnvertexdesc_plb_op_en_Kyozoress_head_l__2_w2_Eye:

    extern NNS_VTXTYPE_XB_PW4INCT nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye[];\n\nNNS_VTXLIST_DX_DESC nnvertexdesc_plb_op_en_Kyozoress_head_l__2_w2_Eye[] =\n{\n    VTXDESC(\n        /* ... */\n        VTX_LISTPTR( nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye ),\n        /* ... */\n    ),\n};\n

    Then, later on in the file, the referenced nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye value is defined as usual (contents redacted due to extreme length):

    NNS_VTXTYPE_XB_PW4INCT nnvertex_plb_op_en_Kyozoress_head_l__2_w2_Eye[] =\n{\n    /* ... */\n};\n
    "},{"location":"docs/nn/common/chunk-format/texlist/","title":"TEXLIST","text":""},{"location":"docs/nn/common/chunk-format/texlist/#nns_texfilelist","title":"NNS_TEXFILELIST","text":"

    Important

    This is the \"main\" (root) struct for all NN texture list chunks.

    struct NNS_TEXFILELIST\n{\n  /* The size of the [pTexFileList] array. */\n  uint32_t nTex;\n\n  /* An array of NNS_TEXFILE structs. */\n  NNS_TEXFILE* pTexFileList;\n};\n\n/*\n  Binary-form files can additionally contain embedded\n  texture data via setting the [Filename] field\n  within one or more NNS_TEXFILE structs to NULL.\n\n  In binary-form files which utilize this feature,\n  there is an extra field in NNS_TEXFILELIST after\n  [pTexFileList], which is a pointer to an array of\n  size [nTex] of NNS_TEXFILEDATA structs, which go like this:\n*/\n\n/* NOTE: This name was guessed. */\nstruct NNS_TEXFILEDATA\n{\n  /* Seems to be flags? */\n  uint32_t Unknown1;\n\n  /* Pointer to the embedded texture data. */\n  void* pData;\n};\n\n/* Macros used by Text-Form files: */\n#define TEXFILELIST(nTex, pTexFileList) { nTex, pTexFileList }\n#define TFL_N_TEXFILE(nTex) (nTex)\n#define TFL_TEXFILE(pTexFileList) (pTexFileList)\n

    Todo

    See if there exists any data using the NNS_TEXLIST struct type from Sonic 4 Episode 1 Windows Phone symbols.

    "},{"location":"docs/nn/common/chunk-format/texlist/#nns_texfile","title":"NNS_TEXFILE","text":"
    struct NNS_TEXFILE\n{\n  /* Types and flags, as specified by NNE_TEXFTYPE. */\n  uint32_t fType;\n\n  /*\n    The name of the file this texture is stored in, or NULL if\n    this texture's data is embedded within this file. This value\n    should be ignored if NND_TEXFTYPE_NO_FILENAME is set in [type].\n  */\n  char* Filename;\n\n  /*\n    The minification filter to use on the texture, as specified by NNE_MIN.\n    This value should be ignored if NND_TEXFTYPE_NO_FILTER is set\n    in [type];\n  */\n  uint16_t MinFilter;\n\n  /*\n    The magnification filter to use on the texture, as specified by NNE_MAG.\n    This value should be ignored if NND_TEXFTYPE_NO_FILTER is set\n    in [type];\n  */\n  uint16_t MagFilter;\n\n  /*\n    Unknown. Maybe some games have a global texture array, and\n    this is the index into that array to place this texture into?\n    This value should always be ignored *unless* NND_TEXFTYPE_LISTGLBIDX\n    is set in [type].\n  */\n  uint32_t GlobalIndex;\n\n  /*\n    Unknown. Maybe some games group textures into banks?\n    This value should always be ignored *unless* NND_TEXFTYPE_LISTBANK\n    is set in [type].\n  */\n  uint32_t Bank;\n};\n\n/* Macros used by Text-Form files: */\n#define TEXFILE(filename, filter) { 0, filename, filter, 0, 0 }\n#define TF_FILENAME(filename) (filename)\n#define TF_FILTER(minFilter, magFilter) (minFilter), (magFilter)\n
    "},{"location":"docs/nn/common/chunk-format/texlist/#nne_mag","title":"NNE_MAG","text":"

    All possible texture magnification filters.

    enum NNE_MAG\n{\n  /* Nearest magnification filtering. */\n  NND_MAG_NEAREST = 0,\n\n  /* Linear magnification filtering. */\n  NND_MAG_LINEAR = 1,\n\n  /* Anisotropic magnification filtering. */\n  NND_MAG_ANISOTROPIC = 2\n};\n
    "},{"location":"docs/nn/common/chunk-format/texlist/#nne_min","title":"NNE_MIN","text":"

    All possible texture minification filters.

    enum NNE_MIN\n{\n  /* Nearest minification filtering. */\n  NND_MIN_NEAREST = 0,\n\n  /* Linear minification filtering. */\n  NND_MIN_LINEAR = 1,\n\n  /* TODO */\n  NND_MIN_NEAREST_MIPMAP_NEAREST = 2,\n\n  /* TODO */\n  NND_MIN_NEAREST_MIPMAP_LINEAR = 3,\n\n  /* TODO */\n  NND_MIN_LINEAR_MIPMAP_NEAREST = 4,\n\n  /* TODO */\n  NND_MIN_LINEAR_MIPMAP_LINEAR = 5,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC = 6,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC2 = 6,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC_MIPMAP_NEAREST = 7,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC2_MIPMAP_NEAREST = 7,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC_MIPMAP_LINEAR = 8,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC2_MIPMAP_LINEAR = 8,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC4 = 9,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC4_MIPMAP_NEAREST = 10,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC4_MIPMAP_LINEAR = 11,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC8 = 12,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC8_MIPMAP_NEAREST = 13,\n\n  /* TODO */\n  NND_MIN_ANISOTROPIC8_MIPMAP_LINEAR = 14\n};\n
    "},{"location":"docs/nn/common/chunk-format/texlist/#nne_texftype","title":"NNE_TEXFTYPE","text":"

    Types and flags for a NNS_TEXFILE struct.

    enum NNE_TEXFTYPE\n{\n  /*\n    =======================================================\n    == Masks\n    =======================================================\n  */\n\n\n  /* Apply this mask to get just the texture's type, without any flags. */\n  NND_TEXFTYPE_TEXTYPE_MASK = 255,\n\n\n\n  /*\n    =======================================================\n    == Types (required; only one must be used at a time)\n    =======================================================\n  */\n\n\n  /* The platform's default format (used most of the time). */\n  NND_TEXFTYPE_DEFAULT = 0,\n\n  /* The .gim format (used on PSP). */\n  NND_TEXFTYPE_GIMTEX = 1,\n\n\n\n  /*\n    =======================================================\n    == Flags (optional; one or more can be used at a time)\n    =======================================================\n  */\n\n\n  /* The [FileName] field should be ignored. */\n  NND_TEXFTYPE_NO_FILENAME = 256,\n\n  /* The [MinFilter] and [MagFilter] fields should be ignored. */\n  NND_TEXFTYPE_NO_FILTER = 512,\n\n  /* The [GlobalIndex] field is used (default is to ignore it). */\n  NND_TEXFTYPE_LISTGLBIDX = 1024,\n\n  /* The [Bank] field is used (default is to ignore it). */\n  NND_TEXFTYPE_LISTBANK = 2048\n};\n

    Warning

    The symbols from Sonic 4 Episode I for Windows Phone 7 mention the following types:

    Looking at various NN files, however, these appear to be incorrect?

    Sony NN texture lists that actually do use SVR textures seem to set the type to 0 anyway, for example.

    Don't rely on these type values!

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/anims/","title":"XNCP Animations","text":"

    Info

    This guide uses the following tools:

    XNCP animations for a specific scene are listed in AnimationDictionary, which behaves the same way as the CastDictionary:

    In AnimationFrameDataList, it\u2019s possible to control the amount of keyframes that a specific animation has:

    To control the speed of these animations, we have a single field in the scene that controls the frame rate:

    AnimationKeyFrameDataList contains the information for all the keyframes in the animation, as well as the casts that belong in that animation.

    In the screenshot above, we\u2019re seeing the data referring to Animation 0 (Intro_Anim when following the dictionary). XNCPs usually follow this naming scheme for animations:

    So, in Intro_Anim, we have several CastAnimationData. These control what happens to each cast in this animation. Let\u2019s see what happens to Cast 0 (position, which usually is the parent of all casts in a scene and controls their position)...

    Seems like we have flags! It\u2019s a bitfield, and it controls what actually animates in this cast. Here\u2019s the meaning of each bit:

    0000 0000(0) - Nothing\n0000 0001(1) - Hide Flag\n0000 0010(2) - X Position\n0000 0100(4) - Y Position\n0000 1000(8) - Rotation\n0001 0000(16) - X Scale\n0010 0000(32) - Y Scale\n0100 0000(64) - SubImage\n1000 0000(128) - Colour Mask\n

    So, with this info, we now know what animates in the position cast: It is its X Position. The CastAnimationDataSubData1List is what stores the actual animation data. The amount of entries in this list depends on the number of bits signaled in the Flags field. The first entry in the list is referring to the first bit signaled from right to left. So by that logic, the list only has one entry.

    And there we go. This entry is what stores the actual KeyFrames. Let\u2019s open one up to see how it is.

    Scary right? I don\u2019t understand much of what\u2019s going on here, but here we go.

    Frame defines which global frame this keyframe is in. Remember AnimationFrameDataList? Yeah, this animation has a total of 10 frames, and is played at 60 FPS. For each frame, you define the global frame that it refers to. So, since this cast controls the position of the entire scene, and this is the intro animation, maybe the other keyframe has the frame field set to 10? We\u2019ll see about that shortly.

    Data store the data of this keyframe. The meaning of data changes depending on the flags. Data can be:

    According to the flags of this specific cast, these keyframes are supposed to control the X Position, which means that \u201cData\u201d actually represents the X Position of the cast in this frame.

    The Offset and Offset2 fields control the casts' Offset position value, where \"Offset\" is X, while \"Offset2\" is Y. For example, the buttons in the title screen of Sonic Generations use these values to stay in place when they're clicked since they get scaled up and down. Let\u2019s look at the second keyframe:

    As we suspected, the Frame field is now set to 10, meaning this is referring to the last frame in the animation. The value in Data has increased, so this means that this cast slides from left to right in this animation!

    Looking at the remaining CastAnimationData entries, we can see that none of them animate, since their Flags field is set to 0. So we can conclude that Intro_Anim makes the position cast slide from left to right, and since \u201cposition\u201d controls the entire scene, every single cast from this scene slides from left to right in this animation!

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/anims/#additional-notes","title":"Additional Notes","text":"

    An animation can only be looped using code, so that can't be controlled via the XNCP. However, Field00 in CastAnimationDataSubData does seem to control how fast a loop occurs, where the value 1 seems to loop it with a delay, while 2 makes it loop smoother.

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/anims/#conclusion","title":"Conclusion","text":"

    Hope I explained XNCP animations well enough. Have fun!

    PS: there\u2019s also AnimationData2List but...

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/","title":"The Basics of XNCP Editing","text":"

    Info

    This guide uses the following tools:

    XNCP is the file format of Sonic Generations's UI. In this guide, I'll explain the general things you need to get started.

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#requirements","title":"Requirements","text":"

    First of all, you will need to download the 010 Editor. This program is used for hex editing, and in our case, to modify XNCP files. You'll also need to download the XNCP Template; essentially, this file will make it so that you can read and understand the XNCP file's contents, otherwise you'd only see hex numbers, and that's not exactly readable.

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#opening-an-xncp-file","title":"Opening an XNCP file","text":"

    After installing the 010 Editor, and downloaded the XNCP Template, it's time to open a file.

    Open the 010 Editor and click on File > Open File..., and open the file that you need to edit.

    After opening the file, you'll see a bunch of numbers. Don't get freaked out, this is normal. These are the contents of the XNCP file.

    Now, you need to go to Templates > Open Template..., and open the file that we downloaded before. It's called sonic_xncp_yncp.bt.

    After opening the file, a window should pop up with the template's code. You can just ignore this window and hide it wherever you'd like, you won't need to modify this.

    Now, go back to Templates and click on Run Template. This should now make the numbers have colorful backgrounds, and a new window will appear below the hex view.

    This new window that has appeared will be your workspace. This'll be the way in which you edit all aspects of a UI file. Click on the struct TFAPC File dropdown, then struct TFAPCEmbeddedRes Resources[0], then struct TNNNCPJChunk CsdmProject, and then on struct TCSDNode Root. Now you'll have a few variables here; I'll explain what some of them mean!

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#the-structure-of-an-xncp-file-resource-0","title":"The structure of an XNCP file (Resource 0)","text":"

    Scenes are essentially the containers for a specific group of UI elements, think of it like a folder inside a folder, and you'll need SceneIDTable to understand which Scene is what. This table contains the name and index of each Scene (e.g: Scene \"gauge\" in ui_gameplay.xncp is the \"folder\" that contains all elements of the boost bar in the HUD). Scenes also have a few variables that may be of interest, like:

    And the most important one of all:

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#the-structure-of-a-cast","title":"The structure of a Cast","text":"

    The Cast has several variables that you can change:

    Info

    If you're disabling a cast, make sure that it does not have children, or it might make the UI look weird!

    "},{"location":"guides/hedgehog-engine/blueblur/files/xncp/basics/#the-structure-of-an-xncp-file-resource-1","title":"The structure of an XNCP file (Resource 1)","text":"

    Before, I wrote that you needed to go into Resource 0. This is because Resource 0 has most of the cool stuff that you can edit, while Resource 1 contains data about image file locations.

    This was a general introduction to XNCP files, and their structures. For more information, check out the other guides in the sidebar!

    "},{"location":"guides/hedgehog-engine/blueblur/levels/glvl/","title":"How to use Sonic GLvl with Sonic Generations","text":"

    Info

    This guide uses the following tools:

    Note

    These video guides are old and are for Sonic GLvl 0.5.7. It's recommended you use the latest 0.9 version instead. Even if 0.9 is a more recent version, the general way of working with it remains the same, hence why these videos are still relevant.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/glvl/#part-1-getting-levels-and-camera-controls","title":"Part 1 (Getting Levels and Camera Controls)","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/glvl/#part-2-basic-level-editing-and-testing-your-mod-in-game","title":"Part 2 (Basic Level Editing and Testing your mod in-game)","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/importing-collision/","title":"How To Import Custom Collision in Sonic Generations","text":"

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-collision/#part-1-creating-collision-in-blender","title":"Part 1 (Creating Collision in Blender)","text":"

    You'll need a separate model for the collision. While it is possible to use your stage's model files as a collision, we still recommend that you create a separate project/model for it, even if it's a copy of it.

    It is possible to specify tags for your collision, which control the type of collision it has. For this, you'll need a special ini file for HavokConverter with tags. You can download it here. To apply these tags to your collision model, you can simply rename the meshes and add the tag as a prefix to its name. Below is an example of how you can do this, in case you want a mesh to have the \"Stone\" collision tag:

    Example

    You can find all the available tags by opening HavokConverter after placing the mentioned INI file in the same folder as its executable.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-collision/#part-2-converting-your-model-into-a-collision-file","title":"Part 2 (Converting Your Model Into a Collision File)","text":"

    Open HavokConverter.exe and fill the following options:

    Now you can click the Convert button and wait.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-collision/#part-3-importing-your-collision-into-the-game","title":"Part 3 (Importing Your Collision into the Game)","text":"

    When the conversion process finishes, extract your custom stage's # file, and place the generated phy.hkx file there. Afterwards, open the Terrain.stg.xml file, and edit the collision file that is mentioned. This is mentioned in the RigidBodyContainer tag. Change its value to your phy.hkx filename, without the extension. Below is an example for a file name MyCollision.phy.hkx:

    Now re-pack this file and replace the original. After booting into the game, you should now notice that your level has working collision.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/","title":"How To Import Custom Terrain in Sonic Generations","text":"

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-1-creating-terrain-in-blender","title":"Part 1 (Creating Terrain in Blender)","text":"

    First of all, you need terrain for your level. You can do the terrain yourself, or take already created terrain. If your level contains transparent materials you need to add a proper layer tag to it. For transparency, you have two available layers, and you should pick the one that's best suited for your use case in order to avoid issues.

    Layers Usage punch Used for materials which have binary transparency (one part is 100% opaque, another is 100% transparent). Useful for most kinds of textures, like leaves or grass trans Used for translucent materials, as in, materials which are not 100% opaque but also not 100% transparent (ex. windows)

    In order to specify a layer for a material, use the @LYR prefix, with the layer name between parenthesis after it.

    Example

    You can then export your terrain from Blender into an Assimp compatible format (FBX, DAE or OBJ work).

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-2-importing-the-level-to-the-game","title":"Part 2 (Importing the Level to the Game)","text":"

    Download SonicGLvl, and run bin/HedgehogConverter.exe. Fill up the following entries:

    Make sure that the folder has a name that matches the target stage you want to replace. For example, for Green Hill Modern, use the folder name ghz200.

    Be sure to also turn on the following options under \"Materials\":

    In the end, you should have something similar to this:

    Next, click the Convert button and wait.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-3-getting-missing-files","title":"Part 3 (Getting missing files)","text":"

    Once the conversion is done, we need to get files that might be missing from your stage.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#stagear-file","title":"#stage.ar file","text":"

    Your stage needs a \\# file in order to store set-data, collision, and other stage information. We can use the file from the stage we're replacing. If you're replacing Green Hill Modern, go to disk/bb.cpk (extract using PackCpk), and copy the #ghz200.ar.00 and #ghz200.arl files into your stage mod files (disk/bb folder).

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-4-sonic-glvl-basic-setup","title":"Part 4 (Sonic GLvl Basic Setup)","text":"

    Next up, we need to do some very basic setup of your level's set data in SonicGlvl. Open the app, and open your stage's # archive from there. Once the level has been imported into SonicGlvl, press Ctrl+A and then Delete. This will delete all the objects that are present in your level's set data, which are the original objects from the stage we are replacing. Now, find \"SonicSpawn\" in the objects menu on the left, and place it anywhere you want. This will be where Sonic will spawn in your level. Also, be sure to set the \"Active\" property to \"true\" in the settings of the \"SonicSpawn\" object.

    After that, go to \"File\" and press \"Save Stage Data\" and \"Save Stage Terrain\".

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#part-4-creating-skybox-optional-but-recommended","title":"Part 4 (Creating Skybox - Optional but Recommended)","text":"

    Skyboxes in Sonic Generations are just regular .model files. Though not mandatory for the game to boot, they are recommended so that your level at least has a sky for you to look at. You can take these from the original levels or create one yourself.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#making-one-yourself","title":"Making one yourself","text":"

    Export your skybox model from Blender into an Assimp compatible file format. Then, using ModelConverter, drag and drop the model file into the Sonic Generations .bat file. This will generate the .model file, as well as material files. You will need to convert the textures of your skybox manually into the DDS format.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#grabbing-one-from-a-level","title":"Grabbing one from a level","text":"

    Go to the Packed folder in bb/bb2, and open the folder corresponding to the level you want the skybox from. Then, extract the .ar archive, and look for the sky's .model file. The name should have something to do with \"sky\". If yo don't manage to find it, look at the stage's Terrain.stage.xml file, as it will mention the skybox's model name there. You will need the .model file, the textures (.dds files) and the materials of the sky model.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/importing-terrain/#using-the-skybox-files","title":"Using the Skybox files","text":"

    After getting the necessary skybox model files, place them inside your stage's Packed/stageName/stage.ar file. Then, open # file of your stage, and open the Terrain.stg.xml file. You'll need to create a Sky tag and write the name of the .model file of your skybox, without the extension. Below is an example of how you should write this. In this example, the skybox has a model file named MySkybox.model:

    This concludes this guide. If you boot your stage now, you'll notice that you will fall through the ground. This is because you only ported the terrain, and not the collision. To do this, follow the guide here.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/","title":"Troubleshooting","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#common-issues","title":"Common Issues","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#black-textures","title":"Black Textures","text":"

    Textures must have power of two resolutions. For example, 512x512, 1024x1024, 2048x4096, etc. An arbitrary resolution like 600x600 is not supported by the game when using compressed textures.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#rainbow-flashing-textures","title":"Rainbow Flashing Textures","text":"

    The game shows a rainbow flashing texture if the texture assigned to a material is missing. Ensure you included the texture in the AR and didn't make a typo in the material.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#randomly-switching-textures","title":"Randomly Switching Textures","text":"

    The material might not have any textures assigned at all. You need to at least assign one diffuse texture, otherwise the game is going to use the texture of whatever was rendered last.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-terrain-models","title":"Missing Terrain Models","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#red-materials","title":"Red Materials","text":"

    The game fallbacks to displaying a red emissive material if the shader assigned to a material does not exist. If you want to see every available shader in the game, unpack shader_r_add.ar.00 located inside bb3.cpk, and look for files with .shader-list extension.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#low-quality-or-missing-gi-textures","title":"Low Quality or Missing GI Textures","text":"

    Terrain.prm.xml file might require higher memory sizes. Look for the g_GITextureLimitSizeDefault and g_GITextureLimitSizeWin32 parameters, and increase them.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-direct-light","title":"Missing Direct Light","text":"

    If you add a new direct light with a different name, you need to edit Terrain.stg.xml to make the stage use it. For example:

    <Light>\n  <DataName>MyDirectLight</DataName>\n</Light>\n
    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-sky-model","title":"Missing Sky Model","text":"

    If you add a new sky model with a different name, you need to edit Terrain.stg.xml to make the stage use it. For example:

    <Sky>\n  <Model>MySkyModel</Model>\n</Sky>\n

    Ensure that the materials of the sky model also use sky shaders such as Sky_d.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#enemies-from-other-stages-not-appearing","title":"Enemies From Other Stages Not Appearing","text":"

    Certain enemies are loaded manually in stages to save memory. If an enemy does not appear in your stage, you can fix it by editing EnemyArchiveTree.xml inside #Application.ar.00. In this example, ghz_cmn entry was modified to include data from EnemyEFighter, which allows egg fighters to be used in both ghz100 and ghz200:

    <DefAppend>\n  <Name>ghz_cmn</Name>\n  <Archive>EnemyCommon</Archive>\n  <Archive>EnemyBeeton</Archive>\n  <Archive>EnemyBatabata</Archive>\n  <Archive>EnemyGanigani</Archive>\n  <Archive>EnemyMotora</Archive>\n  <Archive>EnemyEFighter</Archive>\n</DefAppend>\n
    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#common-crash-reasons","title":"Common Crash Reasons","text":""},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-material-files","title":"Missing Material Files","text":"

    Unlike later games, missing materials can cause a crash in Sonic Generations and Sonic Unleashed.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#periods-in-file-names","title":"Periods in File Names","text":"

    Having periods in your file names can confuse the game and cause crashes. For example, having a material named Material.000.material would make the game think the file has a .000.material extension, and not recognize it as a material file.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#instance-names-starting-with-ins","title":"Instance Names Starting with \"ins\"","text":"

    Instances starting with ins are treated differently, and require specialized material shaders. Using any other shader causes a crash. Ensure that none of the instances in your stage start with this word.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-gi-texturegi-texture-group-info-file","title":"Missing \"gi-texture.gi-texture-group-info\" File","text":"

    Run GI Atlas Converter on Pre-Render mode to have this file created automatically.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#missing-light-listlight-list-file","title":"Missing \"light-list.light-list\" File","text":"

    Copy paste .light and .light-list files from another stage, or add a direct light to your level in the 3D software you use. Latest Hedgehog Converter can import direct lights, so ensure your tools are up to date. Use HedgeGI for advanced light editing.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#mismatching-pfdpfi-files","title":"Mismatching PFD/PFI Files","text":"

    PFD files are loaded through PFI files. If the Stage.pfi/Stage-Add.pfi files don't match with the Stage.pfd/Stage-Add.pfd files in the stage, this causes a crash. Unpack the PFD files, and repack them back with HedgeArcPack using -T=pfd command-line option to generate matching PFI files.

    "},{"location":"guides/hedgehog-engine/blueblur/levels/troubleshooting/#unloaded-sonic-animations","title":"Unloaded Sonic Animations","text":"

    The game doesn't load certain Sonic animations to save memory if the gimmick in question is never used. For example, diving animations stored in SonicDiving.ar.00 are only loaded in Chemical Plant, Speed Highway and Planet Wisp. If diving is used in any other stage, the game is going to crash due to unloaded animations. This behavior can be configured by editing ArchiveTree.xml inside #Application.ar.00. In this example, SonicDiving entry was edited to load in the ghz200 stage slot:

    <Node>\n  <Name>SonicDiving</Name>\n  <Archive>SonicDiving</Archive>\n  <Order>0</Order>\n  <DefAppend>SonicDiving</DefAppend>\n  <Node>\n    <Name>bne</Name>\n    <Archive>bne</Archive>\n    <Order>0</Order>\n  </Node>\n  <Node>\n    <Name>cpz200</Name>\n    <Archive>cpz200</Archive>\n    <Order>0</Order>\n  </Node>\n  <Node>\n    <Name>pla200</Name>\n    <Archive>pla200</Archive>\n    <Order>0</Order>\n  </Node>\n  <Node>\n    <Name>sph200</Name>\n    <Archive>sph200</Archive>\n    <Order>0</Order>\n  </Node>\n  <Node>\n    <Name>ghz200</Name>\n    <Archive>ghz200</Archive>\n    <Order>0</Order>\n  </Node>  \n</Node>\n
    "},{"location":"guides/hedgehog-engine/blueblur/locations/sound/","title":"Sounds","text":"

    Info

    These files require the following tools:

    "},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#sound-file-locations","title":"Sound File Locations","text":"

    This guide contains a list of file locations for the audio files in Sonic Generations, the name of the folder in which the files are present will be above the table. Music and sound effects use the \"CSB\" format, these can be opened with SonicAudioTools.

    "},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#sound","title":"Sound","text":"File Name Description SNG00_SYS Title Screen Audio SNG01_GHZ Green Hill Music SNG02_CPZ Chemical Plant Music SNG03_SSZ Sky Sanctuary Music SNG04_SPH Speed Highway Music SNG05_CTE City Escape Music SNG06_SSH Seaside Hill Music SNG07_CSC Crisis City Music SNG08_EUC Rooftop Run Music SNG09_PLA Planet Wisp Music SNG10_CNZ (DLC) Casino Night Music SNG11_BMS VS. Metal Sonic Audio SNG12_BSD VS. Shadow Audio SNG13_BSL VS. Silver Audio SNG14_BDE VS. Death Egg Audio SNG15_BPC VS. Perfect Chaos Audio SNG16_BNE VS. Egg Dragoon Audio SNG17_BLB VS. Time Eater Audio SNG19_JNG Skills, Game Over, Results SNG20_MSN Generic Mission Music SNG21_ETC 20th Anniversary Demo Jingle SNG22_ADD BGM Select Music for Stages SNG23_PAM Shop & Collection Room Audio 30VCE_BLB_NP_(locale) Time Eater NPC Voices 30VCE_BOS_EG_(locale) Time Eater Eggman Voices 30VCE_EVT_NP_(locale) NPC Unlock Events 30VCE_HNT_(locale)_WIN32 Omochao Hints 50BOS_EVT Sounds for Cutscenes 70NPC_EVT Sounds for NPC Unlocks"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb2pam000","title":"disk/bb2/pam000","text":"File Name Description 40OBJ_PAM White World Object Sounds 40AMB_PAM White World Ambiance Sounds 40OBJ_CMN_PAM White World Common Objects Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb2pla200","title":"disk/bb2/pla200","text":"File Name Description 42OBJ_PLA Planet Wisp ACT 2 Objects 42AMB_PLA Planet Wisp ACT 2 Ambiance"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb2enemycommon","title":"disk/bb2/EnemyCommon","text":"File Name Description 51ENM_CMN Enemy Sound Effects #1 52ENM_CMN Enemy Sound Effects #2"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb2bsd","title":"disk/bb2/bsd","text":"File Name Description 52BOS_BSD VS. Shadow Sounds 42OBJ_BSD VS. Shadow Object Sounds 42AMB_BSD VS. Shadow Ambiance Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbbactioncommon","title":"disk/bb/ActionCommon","text":"File Name Description 10SYS_ACT Results Screen Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb3application","title":"disk/bb3/Application","text":"File Name Description 10SYS_CMN HUD Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb3sonic","title":"disk/bb3/Sonic","text":"File Name Description 22PLY_SNC_PAM Sonic Sounds"},{"location":"guides/hedgehog-engine/blueblur/locations/sound/#diskbb3cmn100-or-cmn200","title":"disk/bb3/cmn100 (or cmn200)","text":"File Name Description 21PLY_SNC Gimmick Sounds #1 22PLY_SNC Gimmick Sounds #2 41AMB_CMN Common Ambiance Sounds #1 42AMB_CMN Common Ambiance Sounds #2 40OBJ_CMN_PAM Common Object Sounds (White World) 41OBJ_CMN Miscellaneous Object Sounds #1 42OBJ_CMN Miscellaneous Object Sounds #2 61CTS_CMN Skill Sounds #1 62CTS_CMN Skill Sounds #2"},{"location":"guides/hedgehog-engine/rangers/animation/import-export/","title":"Animation Importing & Exporting","text":"

    This guide will assume you have at least some understanding of animating in Blender.

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#setting-up","title":"Setting Up","text":"

    First, download the required tools and extract them. Open Blender and go to Edit > Preferences. Click on Add-ons, and then Install.... Browse to the FrontiersAnimDecompress folder, and install each of the 4 plugins in this directory, then minimise Blender.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#extracting-the-animation-files","title":"Extracting the Animation Files","text":"

    Locate the pac file that contains the animations you want to change. For sonic's animations, look for raw\\character\\sonic.pac. First, make sure you create a copy of the pac file of your choice in a folder somewhere so you don't accidentally replace your game files. Drag and drop the pac file onto HedgeArcPack.exe to extract the file into a folder.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#conversion","title":"Conversion","text":"

    Open the newly created folder and find the animation you want to change. These animation files have the extension .anm.pxd. Drag and drop the .anm.pxd file onto FrontiersAnimDecompress.exe. This will create a new file with the extension .anm.pxd.outanim.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#importing-the-animation","title":"Importing the Animation","text":"

    Open Blender again, and go to File > Import, then select Hedgehog Engine (.model) and browse for your model file.

    Info

    If you don't know how to get your model, first watch the Model Import Tutorial

    After importing, select the Armature and go to File > Import, and this time select Hedgehog Engine Compressed (.outanim), and browse for your .outanim file we created in the previous step. You should now see the animation within Blender!

    Info

    If you don't know how to edit the animation, please look for a Blender tutorial to learn the basics in order to continue. The animation process is not specific to Sonic Frontiers.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#exporting-the-animation","title":"Exporting the Animation","text":"

    When you have finished making your changes to the animation, go to File > Export and select Hedgehog Engine Compressed (.outanim), then browse for somewhere to save your file. You may overwrite the .outanim file you imported if you like. You may close Blender now.

    "},{"location":"guides/hedgehog-engine/rangers/animation/import-export/#finishing-up","title":"Finishing Up","text":"

    Drag and drop the newly exported .outanim onto FrontiersAnimDecompress.exe to create a new .anm.pxd containing your animation. Rename this file to be exactly the same as the original file you decompressed. If you haven't already, place it back in it's pac folder, and replace the existing file.

    Now drag the pac folder onto HedgeArcPack.exe to repack the file, which you can then use in your mod!

    "},{"location":"guides/hedgehog-engine/rangers/audio/replacing/","title":"Replacing Audio","text":"

    Info

    This guide uses the following tools:

    Warning

    This currently does not work while replacing boss music! Also, backup any files that you modify unless you are sure of what you are doing!

    "},{"location":"guides/hedgehog-engine/rangers/audio/replacing/#what-to-do","title":"What to do","text":"

    Find the .ACB file containing the audio that you wish to edit and open it up in foobar2000. If there is an accompanying .AWB file, open this instead.

    Audio is stored in SonicFrontiers\\image\\x64\\raw\\sound

    Once foobar has opened you will be able to see the names of and listen back to the respective audio files. Make sure that you have the \"Item Index\" column enabled.

    Use ACBEditor.exe found in SonicAudioTools to extract all audio files by dragging and dropping the .ACB onto the exe.

    There will now be a folder named the same as the .ACB that will contain .HCA files. The name of the .HCA file will be a 5 digit number that is the Item Index number -1. If you are replacing music it will be a 5 digit number and the word \"streaming\"

    Example

    \"1\" in the sound effect Item Index would be \"00000.hca\" and \"220\" in the music Item Index would be \"00219_streaming.hca\" (Less .HCA files may be extracted than the number of cues shown in the Item Index. Make sure to double check that the .HCA is the sound you wish to change before replacing it)

    Create a .WAV file of whatever sound it is you wish to put in game and name it the same as the .HCA file you are going to replace.

    Open VGAudio.Wpf and load the created .WAV file. (If you wish to convert multiple files then go to the batch tab where you will be able to add more files.)

    Once the file(s) are loaded, select .HCA on the dropdown menu of file types. Save and replace the file(s) to the folder full of extracted HCA's.

    Drag and drop the folder back onto ACBEditor.exe and it will repack the .ACB file with the new audio files.

    "},{"location":"guides/hedgehog-engine/rangers/audio/replacing/#creating-looped-soundsmusic","title":"Creating looped sounds/music","text":"

    If you are working with BGM or SFX that loop, you will need to create loop points in the .HCA file. This can be done easily using VGAudio.Wpf.

    Follow the same instructions as listed above but when it come to creating the HCA file you will want to drop down the menu that says \"Loop File\". You will be presented with two boxes, one labelled \"Loop Start\" and the other labelled \"Loop End\". The format used in these boxes is Samples which can easily be found in most audio editing software. Find the point in your .WAV file where you would like the sound to start looping and input that number into the \"Loop Start\" box, then do likewise with \"Loop End\". From here the process is once again the same as detailed above.

    Now you can put Open Your Heart over every boss fight :)

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/","title":"Replacing Cyloop Color","text":"

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/#getting-the-file","title":"Getting the File","text":"

    First you're going to need to drag playercommon.pac onto HedgeArcPack.exe to get a playercommon folder. Then, find the player_common.rfl file in that folder, and open it in 010 editor.

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/#using-the-binary-template","title":"Using The Binary Template","text":"

    You're going to need to use the PlayerParameters.bt binary template on 010 editor. This can be done by going to \"Templates\" at the top and pressing \"Open Template\" and selecting the PlayerParameters.bt

    Afterwards, you can press \"Run Template\" and it should bring up a new window in 010 editor.

    Info

    If a new window doesn't appear, restart 010 editor or reload player_common.rfl into the editor

    Run the PlayerParameters.bt template and you should see new information in the Variables tab in 010 editor. Split your editor so that you can see your hex values, the inspector tab, and the variables tab all at once.

    Now you're ready to hex edit!

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/#editing-the-file","title":"Editing the file","text":"

    Open struct PlayerParameters data in variables, then go into struct CommonPackage common, and find struct PlayerParamCyloop cyloop

    Open the cyloop struct and find CyloopLocusParameter locus, this holds the colors for the cyloop across multiple variables. Each color will look like this (there are 3 of these):

    ...or these (there are 2 of these)

    When you open these variables, you will see 4 values, float r, g, b, and a. These values don't make sense so keep up with this:

    Choose a color with its rgb decimal code (ex: Lawn Green is (124,252,0)), then take each of your values and divide them by 255.

    Example

    Replace the float values with your new values (you don't need to touch float r), like the example below:

    Do this for all of the color struct variables from earlier. This will replace all of the different parts of the cyloop, but you can mix colors for different results, like making some of the cyloop variables red, and some white.

    "},{"location":"guides/hedgehog-engine/rangers/cyloop/color/#saving-your-changes","title":"Saving Your Changes","text":"

    Once you're happy with your color choices, go to \"File\"\" and save your player_common.rfl file. Then, repack your playercommon folder into a .pac file, which you can then use in your mod!

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/","title":"Advanced Material Editing","text":"

    This guide will assume you have at least some understanding of how PBR texturing works.

    Info

    This guide uses the following tools:

    Note

    There is a Substance Painter Export Template if you use Substance to export the PRM map so you don't have to construct it.

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#preparation","title":"Preparation","text":"

    This guide expects you to have a model that loads ingame and 5 texture maps for your model:

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#making-a-prm-map","title":"Making a PRM map","text":"

    Hedgehog Engine 2 games use some variation of the PRM texture setup, Frontiers specifically uses the RGBA setup, Specular, Smoothness, Metallic, Ambient Occlusion. So we need to construct a map using our textures, as long as the textures go into the corresponding channels.

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#photoshop","title":"Photoshop","text":"

    Add your textures besides the Normal Map textures as layers in your photoshop document.

    Then open the effects panel and have the corresponding channel as stated above be the only channel checked

    Lastly select your Roughness layer and invert it (Ctrl+I). Smoothness in PBR is just inverted roughness.

    This will be your PRM map. Save it to your work directory.

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#converting-png-to-dds-correctly","title":"Converting PNG to DDS correctly","text":"

    Open Nvidia Texture Tools Exporter and load your texture you want to convert and make sure BC7 is selected for the Color maps, for your normal map make sure BC5u is selected (The normal map will show as yellow in the icon, ignore it). Then Save As... .dds

    Example

    Info

    When saving the PRM texture make sure Premultiplied Alpha Blending is unchecked

    "},{"location":"guides/hedgehog-engine/rangers/materials/advanced-mats/#editing-the-hedgehog-engine-2-materials","title":"Editing the Hedgehog Engine 2 materials","text":"

    your model converter will have made .material files, you may even be using them. Remember their names and delete them. It is generally better to modify pre existing materials as it will look better because they include all the shader parameters.

    A good base to modify off of is Sonic's cloth, since it is a common prm shader.

    Duplicate and rename the material file you're building off of to the material name the model converter outputted.

    Open HedgeEdit, then navigate to Edit > Material Editor

    Once the pop up opened use File > Open to open one of the .material file you made. Then hit the ... next to Textures (Collection)

    Each of these members are textures the material feeds the shader. What's important is there's 3 and they should correlate to the textures we made earlier.

    Select each member and set TextureName to the filename of the .dds we made earlier without the file extension

    Note

    If you chose to edit a nondefault material (IE Sonics fur) you may need to go to the Parameters section to get the members for the parameters.

    Usually texture suffixes like fal go to falloffs, flw flow maps, fur noise layer overlayed on the diffuse for the fur.

    Save the material then you're done.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/","title":"Model Importing","text":"

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#extracting-models","title":"Extracting Models","text":""},{"location":"guides/hedgehog-engine/rangers/models/import/#creating-and-extracting-the-pac-file","title":"Creating and Extracting the PAC File","text":"

    Firstly, create a PAC file named after the character and proceed to extract the contents of the archive utilizing the HedgeArcPack tool.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#converting-to-fbx-and-importing-into-blender","title":"Converting to FBX and Importing into Blender","text":"

    Next, convert the chr_character.model file into the FBX format using the ModelFBX tool. Please note that certain models may not necessitate conversion into FBX format. If you don't need to use the FBX format, use the HedgeNeedle tool, extract the various levels of detail from the .model file, and rename chr_character.0.model to chr_character. Subsequently, utilize the model importer add-on to import the model into Blender.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#rigging-and-vertex-count","title":"Rigging and Vertex Count","text":"

    After the model is imported into Blender, introduce your own model that is intended to be utilized in-game, and proceed to rig it to the original model's skeleton. It is crucial to ensure that the vertex count of your model does not surpass the maximum requirements of the model converter, which is approximately 21,000 vertices per object.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#assigning-weights-and-resources","title":"Assigning Weights and Resources","text":"

    As weights primarily refer to Blender rather than the Hedgehog Engine itself, you should use the following resources as they may be useful in learning how to manage weights:

    Weight Transfer Guide Weight Painting Guide

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#rigging-and-exporting-the-model","title":"Rigging and Exporting the Model","text":"

    Once the character model has been rigged, select the model and the original skeleton, and proceed to export them as an FBX file. In case the original model is not deleted, choose 'selected objects only' in the export settings. Although the other export settings are generally insignificant, it may be necessary to modify the scale to 0.01.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#converting-to-model-and-creating-pac-file","title":"Converting to .model and Creating PAC File","text":"

    Utilizing the ModelConverter tool, drag the FBX file onto ModelConverter.exe to turn it into a .model file. Subsequently, place the new .model file into the previously extracted PAC folder. To generate a new PAC file, drop the folder onto HedgeArcPack. The PAC file may then be used in your mod to observe the changes made. Although the other export settings are generally insignificant, it may be necessary to modify the scale to 0.01.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#converting-to-model-and-creating-pac-file_1","title":"Converting to .model and Creating PAC File","text":"

    Utilizing the ModelConverter tool, drag the FBX file onto ModelConverter.exe to turn it into a .model file. Subsequently, place the new .model file into the previously extracted PAC folder. To generate a new PAC file, drop the folder onto HedgeArcPack. The PAC file may then be used in your mod to observe the changes made.

    "},{"location":"guides/hedgehog-engine/rangers/models/import/#materials-and-textures","title":"Materials and Textures","text":"

    For assistance with preparing materials and texture for Sonic Frontiers, refer to the Advanced Material Editing Tutorial.

    "},{"location":"guides/hedgehog-engine/swa/levels/glvl/","title":"How to use Sonic GLvl with Sonic Unleashed","text":"

    Note

    This guide covers how to setup Sonic Unleashed Xbox 360 levels in GLvl, but does not cover how to use this tool or how to set it up for PS3 levels. It's recommended that you also read the Sonic Generations GLvl guide.

    Info

    This guide uses the following tools:

    "},{"location":"guides/hedgehog-engine/swa/levels/glvl/#preparing-ar-files","title":"Preparing .ar Files","text":"

    This example will be editing Windmill Isle Act 1 Day. Open your extracted Unleashed game folder and locate your files. In my case, the files are

    #ActD_MykonosAct1.ar.00\n#ActD_MykonosAct1.arl\nActD_MykonosAct1.ar.00 \nActD_MykonosAct1.ar.01\nActD_MykonosAct1.arl\n

    Once located you will need to copy those files to the #files folder inside your Mod Toolbox directory. now open #SUModToolbox.bat and press 3 and enter to decompress the files, press 1 or 2 depending on the system and press enter.

    Now copy the files inside #output/DecompressedFiles to a seperate folder. In order for GLvl to read the model you need to make a folder called \"Packed\" and inside your Unleashed game folder go to \"Packed\" and copy the level folder to the new \"Packed\" folder next to your decompressed .ar files.

    "},{"location":"guides/hedgehog-engine/swa/levels/glvl/#preparing-glvl","title":"Preparing GLvl","text":"

    Locate your Xbox 360 SDK's bin/win32 folder and copy xbcompress.exe, xbdecompress.exe, xbdm.dll, msvcp71.dll and msvcr71.dll and paste them into your GLvls \"bin\" directory.

    Open your GLvl folder and go to /database/LevelDatabase.xml, you will need to add your entry for the level, in my case it would be:

    <Entry name=\"ActD_MykonosAct1\" geometry=\"ActD_MykonosAct1\" layout_merge=\"\" slot=\"WindmillIsle 1\" game=\"Unleashed/\">

    Afterwards the file should look something like this:

    <LevelDatabase>\n  <Entry name=\"ghz200\"     geometry=\"ghz200\"        layout_merge=\"\"     slot=\"GreenHillZone\"     game=\"Generations\" />\n  <Entry name=\"ghz201\"     geometry=\"ghz200\"        layout_merge=\"\"     slot=\"GreenHillZone\"     game=\"Generations\" />\n  <Entry name=\"cte200\"     geometry=\"cte200\"        layout_merge=\"\"     slot=\"CityEscapeZone\"    game=\"Generations\" />\n  <Entry name=\"ActD_Beach\" geometry=\"ActD_Beach\"    layout_merge=\"\"     slot=\"JungleJoyride\"     game=\"Unleashed\" />\n  <Entry name=\"ActD_Africa\" geometry=\"ActD_Africa\"    layout_merge=\"\"     slot=\"SavanaCitadel\"     game=\"Unleashed\" />\n  <Entry name=\"ActD_MykonosAct1\" geometry=\"ActD_MykonosAct1\"    layout_merge=\"\"     slot=\"WindmillIsle 1\"     game=\"Unleashed\"/>\n</LevelDatabase>\n

    Open \"Unleashed Object Template.zip\" and extract the contents here, Replace files if asked.

    Save the file, open GLvl, press Ctrl+O and find your decompressed .ar files. Click \"Ok\" on the first prompt and click \"Yes\" on the prompt asking about unpacking terrain.

    "},{"location":"guides/hedgehog-engine/swa/levels/glvl/#extracting-textures-and-adding-them-to-glvl","title":"Extracting Textures and adding them to GLvl","text":"

    Inside Unleashed Mod Toolbox delete the files inside #files and #output. From your Unleashed game folder copy the various Cmn.ar files for your level and paste them inside the #files of the Unleashed ToolBox.

    Open #SUModToolbox.bat and press 4 and enter to decompress the files, press 1 and enter and press 1 or 2 depending on the system and press enter. go to #files and delete the contents of the folder. Inside #output you might notice some files have not been extracted. This is because files other than ar.00 and arl don't extract, however you fix this by simply changing the file extension to ar.00, changing the file name and re-extracting them in the ToolBox.

    Copy the contents of each folder in #output/ExtractedFiles into GLvl/cache/your-level/resources, replacing files if asked.

    "},{"location":"guides/nn/marathon/levels/glvl/","title":"How to use Sonic GLvl with Sonic '06","text":"

    Info

    This guide uses the following tools:

    Note

    Due to a lack of an actual, dedicated level editor for Sonic '06, we (at the time of writing) use a hacked together solution that allows us to use Sonic GLvl as a stand in. This guide will explain how to set up GLvl for this purpose, with the assumption that the user understands basic usage of the program itself.

    "},{"location":"guides/nn/marathon/levels/glvl/#setting-up","title":"Setting Up","text":"

    Download your preferred version of Sonic GLvl 0.9 and extract the repository to any location. Then, open the database folder and delete the objects folder. Next, download the Sonic '06 Stage Editing Archive and extract the SonicGLvl/database folder to your SonicGLvl location, choosing to merge/replace existing files.

    "},{"location":"guides/nn/marathon/levels/glvl/#converting-stage-terrain","title":"Converting Stage Terrain","text":"

    Pre converted copies of the actual Sonic '06 stages are present on the Stage Editing Archive repository (under the SonicGLvl/import directory). When converting your own terrain (such as for a stage mod) the process is almost identical to the conversion process for Sonic Generations (it's recommended to use the two #base files as a template). The crucial step is to remember to set the stage scale in HedgehogConverter to 1% on all three axis, as the scale does not match between both games.

    "},{"location":"guides/nn/marathon/levels/glvl/#usage","title":"Usage","text":"

    The process of placing and editing objects at this point follows the workflow of using Sonic GLvl for a Generations stage mod, so will not be covered here.

    "},{"location":"guides/nn/marathon/levels/glvl/#groups","title":"Groups","text":"

    Objects in '06 make frequent usage of grouping, allowing objects to influence each other in some way (such as an Egg Chaser commanding a squad of Egg Liners or defeating an enemy unlocking a cage). To set these up, create an XML in your stage's cache directory called groupdata_[x].group.xml (where [x] is a name, such as base). Then lay them out as shown below.

    Each <Group> key is... Well... A Group that will be compiled into the converted SET.

    The <Name> key seems to just be for identification, so here (for Ocean Palace) I called it CageGroup01 as it was the first group I made that unlocked a cage.

    The <Type> key is the name of the lua event that this group will activate, this key can be left empty if the group doesn't need to activate anything. In this example, it's called Cage01, so it will fire the event called Cage01 in the stage's lua file; which, as you can probably guess, signalled a cage to open.

    The <ObjectCount> key simply lists how many objects this group has (and honestly shouldn't have even been a thing, but I wrote this thing incredibly badly).

    The subkeys within the <ObjectIDs> key simply give the ID of an object that should be in this group. These IDs are shown in the conversion log, and are also patched into the Generations SET if the Patch Generations SET option is used in the Converter (see below).

    "},{"location":"guides/nn/marathon/levels/glvl/#06-set-conversion","title":"'06 SET Conversion","text":"

    For converting between Generations and '06, we use the GLvl Converter. In the Source SET, select your Generations .set.xml file from your stage's cache directory in your GLvl location (will be named setdata_base.set.xml by default). If you've created any groups for your object layout (which need to be made manually, see above), then select the approriate groupdata_[x].group.xml file for the Groups XML option, otherwise, leave it blank.

    For the GLvl Templates, select the database\\objects folder.

    Target SET is simply where you want to save the converted object placement to.

    Filtered Object Names will prevent the Replace Object Names option from overwriting objects that have any of the inputted values as part of their names. This object is useful for group events where you're activating an object by its name.

    This converter can also convert from '06 to Generations by simply putting an '06 .set file as the source and a Generations .set.xml as the target. This can also convert '06 groups into an XML if a Groups XML path is specified.

    Due to how Sonic GLvl handles object IDs, they will often not match with the IDs that '06 uses. To correct this, choose the Patch Generations SET option, which will update the Generations .set.xml to show the correct IDs.

    "},{"location":"tools/general/audio/","title":"Audio Tools","text":""},{"location":"tools/general/audio/#sonicaudiotools","title":"SonicAudioTools","text":"

    A set of tools to modify CRIWARE file formats.

    Download Source Code

    "},{"location":"tools/general/audio/#vgaudiowpf","title":"VGAudio.Wpf","text":"

    An unofficial frontend for VGAudio on WPF.

    Download Source Code

    "},{"location":"tools/general/audio/#radx","title":"RADX","text":"

    Decoder and encoder for CRIWARE ADX file format.

    Download Source Code

    "},{"location":"tools/general/files/","title":"File Format Tools","text":""},{"location":"tools/general/files/#skythtools","title":"SkythTools","text":"

    Contains various tools for a bunch of Sonic the Hedgehog games. Read the README to have detailed information about each tool included in the repository.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/levels/","title":"Level Editing Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/levels/#sonicglvl","title":"SonicGLvl","text":"

    Level editor for Sonic Generations.

    Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/ar/","title":"AR/ARL Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/ar/#compressar","title":"CompressAR","text":"

    Tool to compress and decompress AR files for Sonic Generations, using 'makecab' and 'expand'.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/fco/","title":"FCO Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/fco/#fcoeditor","title":"fcoEditor","text":"

    FCO/Text editor for Sonic Generations

    Download Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/gte/","title":"GTE/GTM Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/gte/#glitterstudio","title":"GlitterStudio","text":"

    Editor application to open, modify, and resave GTE/GTM particle files for Sonic Generations.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/sav/","title":"SAV Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/sav/#generationsskilledit","title":"GenerationsSkillEdit","text":"

    Skill Set Editor for Sonic Generations save files.

    Source Code

    "},{"location":"tools/hedgehog-engine/blueblur/files/xncp/","title":"XNCP Tools","text":""},{"location":"tools/hedgehog-engine/blueblur/files/xncp/#010-editor","title":"010 Editor","text":"

    Allows editing various file formats, in particular the XNCP format through the use of a template.

    Download XNCP Template

    "},{"location":"tools/hedgehog-engine/blueblur/files/xncp/#shuriken","title":"Shuriken","text":"

    XNCP Editor with graphical user interface.

    Source Code

    "},{"location":"tools/hedgehog-engine/common/animation/","title":"Animation Tools","text":""},{"location":"tools/hedgehog-engine/common/animation/#havokanimationexporter","title":"HavokAnimationExporter","text":"

    A tool that allows you to generate Havok skeleton and animation data (.skl.hkx/.anm.hkx) from FBX files.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/common/files/","title":"File Format Tools","text":""},{"location":"tools/hedgehog-engine/common/files/#hedgearchiveeditor","title":"HedgeArchiveEditor","text":"

    A user interface for HedgeArcPack.

    Download

    "},{"location":"tools/hedgehog-engine/common/files/#hedgearcpack","title":"HedgeArcPack","text":"

    Command line tool that allows the extraction and creation of Hedgehog Engine package files (AR, PFD and PAC).

    Download Source Code

    "},{"location":"tools/hedgehog-engine/common/levels/","title":"Level Editing Tools","text":""},{"location":"tools/hedgehog-engine/common/levels/#hedgeedit","title":"HedgeEdit","text":"

    Level editor for Hedgehog Engine.

    Download

    "},{"location":"tools/hedgehog-engine/common/lighting/","title":"Lighting Tools","text":""},{"location":"tools/hedgehog-engine/common/lighting/#hedgegi","title":"HedgeGI","text":"

    Tool that allows you to bake global illumination and light field data for Hedgehog Engine games.

    Source Code

    "},{"location":"tools/hedgehog-engine/common/lighting/#soniclighttools","title":"SonicLightTools","text":"

    Small collection of tools to read, write, and edit .light files for Sonic Unleashed/Generations/Lost World/Forces.

    Source Code

    "},{"location":"tools/hedgehog-engine/common/models/","title":"Model Tools","text":""},{"location":"tools/hedgehog-engine/common/models/#modelfbx","title":"ModelFBX","text":"

    Converts Hedgehog Engine model files into the FBX format. Part of libgens.

    Source Code

    "},{"location":"tools/hedgehog-engine/common/models/#modelconverter","title":"ModelConverter","text":"

    Converts Assimp supported model formats into a Hedgehog Engine model file, with various batch scripts for the different games.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/common/text/","title":"Text tools","text":""},{"location":"tools/hedgehog-engine/common/text/#puyo-text-editor","title":"Puyo Text Editor","text":"

    Tool for editing CNVRS-TEXT files

    Download Source Code

    "},{"location":"tools/hedgehog-engine/rainbow/files/","title":"File Format Tools","text":""},{"location":"tools/hedgehog-engine/rainbow/files/#acorn-engine-godot-bse","title":"Acorn Engine (godot-bse)","text":"

    A modified version of Godot that works with Sonic Colors: Ultimate. Instructions are included in the repository.

    Source Code

    "},{"location":"tools/hedgehog-engine/rangers/models/","title":"Model Tools","text":""},{"location":"tools/hedgehog-engine/rangers/models/#hedgeneedle","title":"HedgeNeedle","text":"

    Command line tool for working with Sonic Frontiers model files.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/rangers/files/anmpxd/","title":"ANM.PXD Tools","text":""},{"location":"tools/hedgehog-engine/rangers/files/anmpxd/#frontiersanimdecompress","title":"FrontiersAnimDecompress","text":"

    Command line tool that allows the compression and decompression of Frontiers animation files (ANM.PXD).

    Download Source Code

    "},{"location":"tools/hedgehog-engine/rangers/files/btmesh/","title":"BTMesh Tools","text":""},{"location":"tools/hedgehog-engine/rangers/files/btmesh/#btmesh","title":"btmesh","text":"

    A command line tool that allows you to convert FBX files to .btmesh/.pccol.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/rangers/files/cemt/","title":"CEMT Tools","text":""},{"location":"tools/hedgehog-engine/rangers/files/cemt/#effect-color-tool","title":"Effect Color Tool","text":"

    Editor tool for working with Sonic Frontiers CEMT files.

    Download

    "},{"location":"tools/hedgehog-engine/rangers/files/rfl/","title":"RFL Tools","text":""},{"location":"tools/hedgehog-engine/rangers/files/rfl/#010-editor","title":"010 Editor","text":"

    Allows editing various file formats. Frontiers RFL files are supported through the use of specific templates.

    Download Binary Templates

    "},{"location":"tools/hedgehog-engine/sonic2010/levels/","title":"Level Editing Tools","text":""},{"location":"tools/hedgehog-engine/sonic2010/levels/#sonic-colors-set-editor","title":"Sonic Colors Set Editor","text":"

    Sonic Colors Set Data editor powered by HedgeLib.

    Source Code

    "},{"location":"tools/hedgehog-engine/sonic2010/files/arc/","title":"ARC Tools","text":""},{"location":"tools/hedgehog-engine/sonic2010/files/arc/#brawlcrate","title":"BrawlCrate","text":"

    Allows editing ARC file format, viewing the models, textures, etc...

    Download Source code

    "},{"location":"tools/hedgehog-engine/sonic2010/files/general/","title":"General Tools","text":""},{"location":"tools/hedgehog-engine/sonic2010/files/general/#soniccolorsexporter","title":"SonicColorsExporter","text":"

    Info

    Importing animations exported by this tool require the dkAnimErwin Maya plugin You also need to edit the dkAnimErwin.mel script of the plugin for it to work properly. Go to File > Windows > General Editor > Script Editor, then File > Open Script > dkAnimErwin.mel, and add dkAnimErwin; to the last line of the file.

    Allows exporting various assets from Sonic Colors file formats, such as animations, models, materials, etc.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/sonic2010/files/xncp/","title":"XNCP Tools","text":"

    Warning

    For Sonic Colors, the XNCP file format is only used in Sonic Colours: Ultimate

    "},{"location":"tools/hedgehog-engine/sonic2010/files/xncp/#010-editor","title":"010 Editor","text":"

    Allows editing various file formats, in particular the XNCP format through the use of a template.

    Download XNCP Template

    "},{"location":"tools/hedgehog-engine/sonic2010/files/xncp/#coloursxncpgen","title":"ColoursXNCPGen","text":"

    Basic tool to combine XNCP and DXL files, as well as split XNCP files to an XNCP-DXL pair.

    Download Source Code

    "},{"location":"tools/hedgehog-engine/sonic2010/files/xtb/","title":"XTB Tools","text":""},{"location":"tools/hedgehog-engine/sonic2010/files/xtb/#soniccolorsxtbconv","title":"SonicColorsXTBConv","text":"

    Converts XTB files to XML and vice versa.

    Download Source code

    "},{"location":"tools/hedgehog-engine/sonic2013/levels/","title":"Level Editing Tools","text":""},{"location":"tools/hedgehog-engine/sonic2013/levels/#sonicglvl-lost-world","title":"SonicGLvl Lost World","text":"

    Fork of SonicGLvl for Sonic Lost World.

    Source Code

    "},{"location":"tools/hedgehog-engine/swa/files/","title":"File Formats","text":""},{"location":"tools/hedgehog-engine/swa/files/#unleashed-mod-toolbox","title":"Unleashed Mod Toolbox","text":"

    Command line tool that allows the extraction and decompression of Sonic Unleashed .ar.00 and .arl files.

    Download Source Code

    "},{"location":"tools/nn/marathon/files/","title":"File Format Tools","text":""},{"location":"tools/nn/marathon/files/#marathoncli","title":"Marathon.CLI","text":"

    All in one tool that allows extraction and repacking of Sonic '06 .arc archives, as well as conversion of multiple formats to and from human readable JSON files.

    Download Source Code

    "},{"location":"tools/nn/marathon/levels/","title":"Level Editing Tools","text":""},{"location":"tools/nn/marathon/levels/#sonic-06-stage-editing-archive","title":"Sonic '06 Stage Editing Archive","text":"

    A collection of various small tools and a set of custom SonicGLvl object templates designed to make it more feasible to work on stage edits and custom stages for Sonic '06.

    Source Code

    "},{"location":"tools/others/adventure/files/","title":"File Format Tools","text":""},{"location":"tools/others/adventure/files/#sa_tools","title":"sa_tools","text":"

    A toolkit for modifying and extracting data from the Sonic Adventure series of games.

    Download Source Code

    "},{"location":"tools/renderware/common/levels/","title":"Level Editing Tools","text":""},{"location":"tools/renderware/common/levels/#heroes-power-plant","title":"Heroes Power Plant","text":"

    Level editor for Sonic Heroes and Shadow the Hedgehog.

    Download Source Code

    "},{"location":"tools/renderware/common/files/one/","title":"ONE Tools","text":""},{"location":"tools/renderware/common/files/one/#heroesone-reloaded","title":"HeroesONE Reloaded","text":"

    Tool/library for reading and writing Sonic Heroes and Shadow The Hedgehog's .ONE archives.

    Download Source Code

    "},{"location":"tools/renderware/common/files/pac/","title":"PAC Tools","text":""},{"location":"tools/renderware/common/files/pac/#pactool","title":"PACTool","text":"

    Archive editor for .PAC files from the PC and XBOX versions of Sonic Heroes and Shadow the Hedgehog.

    Source Code

    "},{"location":"tools/renderware/common/files/txd/","title":"TXD Tools","text":""},{"location":"tools/renderware/common/files/txd/#magictxd","title":"Magic.TXD","text":"

    Universal RenderWare TXD tool that supports creating, viewing and editing texture files.

    Download

    "},{"location":"tools/retro-engine/common/animation/","title":"Animation Tools","text":""},{"location":"tools/retro-engine/common/animation/#rsdk-animation-editor","title":"RSDK Animation Editor","text":"

    Animation editor for RSDK.

    Download Source Code

    "},{"location":"tools/retro-engine/common/files/","title":"File Format Tools","text":""},{"location":"tools/retro-engine/common/files/#retroed","title":"RetroED","text":"

    A general purpose editor for all RSDK versions below RSDKv5.

    Source Code

    "},{"location":"tools/retro-engine/common/models/","title":"Model Tools","text":""},{"location":"tools/retro-engine/common/models/#modelmaniac","title":"ModelManiac","text":"

    Importer and exporter for RSDK model formats.

    Source Code

    "}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 5ff776d1..7563013d 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,402 +2,412 @@ https://hedgedocs.com/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/discoveries/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/discoveries/blueblur/hud/blb_gauge/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/discoveries/sonic2013/cutscenes/levels/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/discoveries/sonic2013/levels/colors/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/discoveries/sonic2013/levels/deleted/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/discoveries/sonic2013/levels/original-order/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/discoveries/sonic2013/levels/test/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/discoveries/swa/ps3/install/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/general/hson/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/gamelist/ - 2024-02-14 + 2024-02-19 + daily + + + https://hedgedocs.com/docs/hedgehog-engine/blueblur/cameras/ + 2024-02-19 + daily + + + https://hedgedocs.com/docs/hedgehog-engine/blueblur/events/ + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/blueblur/levels/ids/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/rangers/dlc/ids/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/rangers/enemies/guardians/names/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/rangers/events/ids/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/rangers/files/rfl/mapping/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/rangers/levels/ids/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/rangers/scripts/funcs/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/sonic2010/files/lightfield/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/sonic2010/files/setobject/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/swa/cutscenes/ids/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/swa/levels/ids/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/swa/towns/ids/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/hedgehog-engine/wars/levels/ids/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/nn/common/chunk-format/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/docs/nn/common/chunk-format/texlist/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/blueblur/files/xncp/anims/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/blueblur/files/xncp/basics/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/blueblur/levels/glvl/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/blueblur/levels/importing-collision/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/blueblur/levels/importing-terrain/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/blueblur/levels/troubleshooting/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/blueblur/locations/sound/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/rangers/animation/import-export/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/rangers/audio/replacing/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/rangers/cyloop/color/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/rangers/materials/advanced-mats/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/rangers/models/import/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/hedgehog-engine/swa/levels/glvl/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/guides/nn/marathon/levels/glvl/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/general/audio/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/general/files/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/blueblur/levels/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/blueblur/files/ar/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/blueblur/files/fco/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/blueblur/files/gte/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/blueblur/files/sav/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/blueblur/files/xncp/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/common/animation/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/common/files/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/common/levels/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/common/lighting/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/common/models/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/common/text/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/rainbow/files/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/rangers/models/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/rangers/files/anmpxd/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/rangers/files/btmesh/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/rangers/files/cemt/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/rangers/files/rfl/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/sonic2010/levels/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/sonic2010/files/arc/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/sonic2010/files/general/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/sonic2010/files/xncp/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/sonic2010/files/xtb/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/sonic2013/levels/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/hedgehog-engine/swa/files/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/nn/marathon/files/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/nn/marathon/levels/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/others/adventure/files/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/renderware/common/levels/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/renderware/common/files/one/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/renderware/common/files/pac/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/renderware/common/files/txd/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/retro-engine/common/animation/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/retro-engine/common/files/ - 2024-02-14 + 2024-02-19 daily https://hedgedocs.com/tools/retro-engine/common/models/ - 2024-02-14 + 2024-02-19 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 87b64a02946697130ca0c47e7458041620401d57..25ffbf768e9439b696889e59229625c021c12094 100644 GIT binary patch literal 858 zcmV-g1Eu^QiwFpuq|#*q|8r?{Wo=<_E_iKh0M(koa@!yfhVOX_kMA;$(?ip7oLiru zJ$DeSC0fL)u(F)D?_$ZZCrO+3(qT2@5yA}ffp(YuLEFb;=NAWv$zga{-mccm1q6fE zh2~-T^~>k#OUzpj^iphf=>5og|Sh|wEU3NT&dQp`{nLt z!B_5JDxI#aN3+YlB<`jK+ki!rRt7t@Rr$Z`raDoFcDGq?K2+;Xb$icE=DMq9rq!W= zeT1JotDS$^s;iobK|MqKJ&twBAkUA3R5Dua2jE{+?O^$#{?_QBfs%<624^tX*+A8Xgdj%kq>h6k4mJBli%12Eh<8VUMiX06-mV;i6@q`36FH2Y z@Mm+X;FxdHMlo22DnjqIkz+zY7&_YyM5oz{wLR!yz*bz9q>TdYC7=pn zzmiA=ug07dcRFfnIlvT5ONiy2l}=FSqme1Z6^%G$w?!hpmxIWHo+esHk=T2KBDos^ zk=#iiL~@^0vIy{b+vk!>OQIGOv}a;TA^VJ+k30$#CVzyUvtmie1V@qqocC*L93{Em z3$-MQdCr(Z*B`A!@|rqGtweGI9ZBTQpEZcUzMM}>S{PrRs_STEf}h2&NO(Cp_A7F# zWr5$xa?eqhoSIy3D+<9Z`RyaMr&AQ0ze5}%lsu;qf`vHhC_)durk$o11IPmIwUGr( kr6&3jD59*bqqmTY4iT?$|CeYz-4f957cZlR+YUMa03n>A_5c6? literal 848 zcmV-W1F!raiwFq5rOagl|8r?{Wo=<_E_iKh0M(koZrd;nhVOlfAa_S;+QT-a>1|K2 zod;QBWNotONpzgP{pi?fg0@??%ODyEY%7BCNhYbEl(&z^HY^U1vd8$ayj`uA3y21- zkM3dl^~>k#!}4)=v+YyJKnw01^TVOLto48tmWf>w8Vg~_RG8otSDZdB{l$K~#3 z!N>T3>FRWB1Df6Vl+2H5z&fyK^2%VVwrc$Ex~tCAqTOxQoBL|Lsc!GN%iMO=%``eX z*eCe8v)YHJt-5NN7}PVw-{V-H4f6bW$R(rIp$GmY)%2Ec>Tgc>4oW7@7`@r7Z|{`p zDI18~7T^FO%b=cF4F*iIkSzotu%ehTdFP`J6($Qw6goksqJamkx_qa6%%npo4wWy8 zWO5v`k`AijH(n&*si{F%L1f zaJ^2}>zGw!lMyzC14NQ%E_)w%qSHPo*3BJ@Z&CC@eKecoJ2sYmAB_z1v$$B#1{1t% zXzw9dk@%caV*MSAj3sFlN|#(kim{K>!u)eYCLE$1;z5@m1!Lr7wQX6fnx>CGsy(Jw zlO$AvV~P6J_1>1Jl4h#k>gp*1AEW7%j=q)5U+e6RxB<-J!i7T+itgJE6R}vW3qd=pHt!S*G_0bB!Kc^F87(L<7=2XFPJV_fx zZ#}96UC>6337zT9Q$Xyds=P3CwjD@bvlnZ7(9wXcxG75;1=>qM6~ca%A{D$EvnXzL z($sK(DVUZJ%iF@6pw1QhDZ~|xIH}tr5#Q4wvY@Al)=4Dx-k?ZsM<9|r>w`${Q$0K{%#z + + + + + Event List + + + + + + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/general/files/index.html b/tools/general/files/index.html index f595a206..c0cd5faf 100644 --- a/tools/general/files/index.html +++ b/tools/general/files/index.html @@ -4055,6 +4055,10 @@ + + + + @@ -4161,6 +4165,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/blueblur/files/ar/index.html b/tools/hedgehog-engine/blueblur/files/ar/index.html index acffc240..89250945 100644 --- a/tools/hedgehog-engine/blueblur/files/ar/index.html +++ b/tools/hedgehog-engine/blueblur/files/ar/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/blueblur/files/fco/index.html b/tools/hedgehog-engine/blueblur/files/fco/index.html index 6e1dd2db..1562c72f 100644 --- a/tools/hedgehog-engine/blueblur/files/fco/index.html +++ b/tools/hedgehog-engine/blueblur/files/fco/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/blueblur/files/gte/index.html b/tools/hedgehog-engine/blueblur/files/gte/index.html index 461006d7..f0560f59 100644 --- a/tools/hedgehog-engine/blueblur/files/gte/index.html +++ b/tools/hedgehog-engine/blueblur/files/gte/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/blueblur/files/sav/index.html b/tools/hedgehog-engine/blueblur/files/sav/index.html index f50a67c4..8f8fe175 100644 --- a/tools/hedgehog-engine/blueblur/files/sav/index.html +++ b/tools/hedgehog-engine/blueblur/files/sav/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/blueblur/files/xncp/index.html b/tools/hedgehog-engine/blueblur/files/xncp/index.html index edad2316..80b57a93 100644 --- a/tools/hedgehog-engine/blueblur/files/xncp/index.html +++ b/tools/hedgehog-engine/blueblur/files/xncp/index.html @@ -4068,6 +4068,10 @@ + + + + @@ -4174,6 +4178,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/blueblur/levels/index.html b/tools/hedgehog-engine/blueblur/levels/index.html index f4ba5410..51248f2c 100644 --- a/tools/hedgehog-engine/blueblur/levels/index.html +++ b/tools/hedgehog-engine/blueblur/levels/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/common/animation/index.html b/tools/hedgehog-engine/common/animation/index.html index 48c6e71e..ba803c4f 100644 --- a/tools/hedgehog-engine/common/animation/index.html +++ b/tools/hedgehog-engine/common/animation/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/common/files/index.html b/tools/hedgehog-engine/common/files/index.html index 5994ded7..2c974c84 100644 --- a/tools/hedgehog-engine/common/files/index.html +++ b/tools/hedgehog-engine/common/files/index.html @@ -4066,6 +4066,10 @@ + + + + @@ -4172,6 +4176,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/common/levels/index.html b/tools/hedgehog-engine/common/levels/index.html index fd8f8f44..9e2e6b05 100644 --- a/tools/hedgehog-engine/common/levels/index.html +++ b/tools/hedgehog-engine/common/levels/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/common/lighting/index.html b/tools/hedgehog-engine/common/lighting/index.html index cebcaa38..c9f76fb8 100644 --- a/tools/hedgehog-engine/common/lighting/index.html +++ b/tools/hedgehog-engine/common/lighting/index.html @@ -4066,6 +4066,10 @@ + + + + @@ -4172,6 +4176,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/common/models/index.html b/tools/hedgehog-engine/common/models/index.html index efd2e6bf..e4eb0bd2 100644 --- a/tools/hedgehog-engine/common/models/index.html +++ b/tools/hedgehog-engine/common/models/index.html @@ -4066,6 +4066,10 @@ + + + + @@ -4172,6 +4176,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/common/text/index.html b/tools/hedgehog-engine/common/text/index.html index 3eb357d5..48fc4b5d 100644 --- a/tools/hedgehog-engine/common/text/index.html +++ b/tools/hedgehog-engine/common/text/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/rainbow/files/index.html b/tools/hedgehog-engine/rainbow/files/index.html index 8b25f943..eb51347b 100644 --- a/tools/hedgehog-engine/rainbow/files/index.html +++ b/tools/hedgehog-engine/rainbow/files/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/rangers/files/anmpxd/index.html b/tools/hedgehog-engine/rangers/files/anmpxd/index.html index 9a71633c..da0bd86b 100644 --- a/tools/hedgehog-engine/rangers/files/anmpxd/index.html +++ b/tools/hedgehog-engine/rangers/files/anmpxd/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/rangers/files/btmesh/index.html b/tools/hedgehog-engine/rangers/files/btmesh/index.html index bbd172d2..307155bc 100644 --- a/tools/hedgehog-engine/rangers/files/btmesh/index.html +++ b/tools/hedgehog-engine/rangers/files/btmesh/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/rangers/files/cemt/index.html b/tools/hedgehog-engine/rangers/files/cemt/index.html index 2b9ef3d2..ff9c3200 100644 --- a/tools/hedgehog-engine/rangers/files/cemt/index.html +++ b/tools/hedgehog-engine/rangers/files/cemt/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/rangers/files/rfl/index.html b/tools/hedgehog-engine/rangers/files/rfl/index.html index aa4a80da..7616669d 100644 --- a/tools/hedgehog-engine/rangers/files/rfl/index.html +++ b/tools/hedgehog-engine/rangers/files/rfl/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/rangers/models/index.html b/tools/hedgehog-engine/rangers/models/index.html index 9ec04163..4a96f639 100644 --- a/tools/hedgehog-engine/rangers/models/index.html +++ b/tools/hedgehog-engine/rangers/models/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/sonic2010/files/arc/index.html b/tools/hedgehog-engine/sonic2010/files/arc/index.html index 628de463..c2cd4c72 100644 --- a/tools/hedgehog-engine/sonic2010/files/arc/index.html +++ b/tools/hedgehog-engine/sonic2010/files/arc/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/sonic2010/files/general/index.html b/tools/hedgehog-engine/sonic2010/files/general/index.html index 119c2670..fa941668 100644 --- a/tools/hedgehog-engine/sonic2010/files/general/index.html +++ b/tools/hedgehog-engine/sonic2010/files/general/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/sonic2010/files/xncp/index.html b/tools/hedgehog-engine/sonic2010/files/xncp/index.html index c259ae3f..e8f25bd4 100644 --- a/tools/hedgehog-engine/sonic2010/files/xncp/index.html +++ b/tools/hedgehog-engine/sonic2010/files/xncp/index.html @@ -4068,6 +4068,10 @@ + + + + @@ -4174,6 +4178,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/sonic2010/files/xtb/index.html b/tools/hedgehog-engine/sonic2010/files/xtb/index.html index b9c25ed1..afdc9501 100644 --- a/tools/hedgehog-engine/sonic2010/files/xtb/index.html +++ b/tools/hedgehog-engine/sonic2010/files/xtb/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/sonic2010/levels/index.html b/tools/hedgehog-engine/sonic2010/levels/index.html index 218d929d..cbfbb2cc 100644 --- a/tools/hedgehog-engine/sonic2010/levels/index.html +++ b/tools/hedgehog-engine/sonic2010/levels/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/sonic2013/levels/index.html b/tools/hedgehog-engine/sonic2013/levels/index.html index e8710ed6..ffc079d6 100644 --- a/tools/hedgehog-engine/sonic2013/levels/index.html +++ b/tools/hedgehog-engine/sonic2013/levels/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/hedgehog-engine/swa/files/index.html b/tools/hedgehog-engine/swa/files/index.html index 31555169..3b86378f 100644 --- a/tools/hedgehog-engine/swa/files/index.html +++ b/tools/hedgehog-engine/swa/files/index.html @@ -4053,6 +4053,10 @@ + + + + @@ -4159,6 +4163,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/index.html b/tools/index.html index c7915e99..4fc6a906 100644 --- a/tools/index.html +++ b/tools/index.html @@ -4004,6 +4004,10 @@ + + + + @@ -4110,6 +4114,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/nn/marathon/files/index.html b/tools/nn/marathon/files/index.html index 9d9500b4..5dc354c6 100644 --- a/tools/nn/marathon/files/index.html +++ b/tools/nn/marathon/files/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/nn/marathon/levels/index.html b/tools/nn/marathon/levels/index.html index d52e02d2..e5c050f3 100644 --- a/tools/nn/marathon/levels/index.html +++ b/tools/nn/marathon/levels/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/others/adventure/files/index.html b/tools/others/adventure/files/index.html index e7d60515..3f952c78 100644 --- a/tools/others/adventure/files/index.html +++ b/tools/others/adventure/files/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/renderware/common/files/one/index.html b/tools/renderware/common/files/one/index.html index d5c44113..1dc9a32b 100644 --- a/tools/renderware/common/files/one/index.html +++ b/tools/renderware/common/files/one/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/renderware/common/files/pac/index.html b/tools/renderware/common/files/pac/index.html index 74f8c2c0..a7654ef3 100644 --- a/tools/renderware/common/files/pac/index.html +++ b/tools/renderware/common/files/pac/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/renderware/common/files/txd/index.html b/tools/renderware/common/files/txd/index.html index 0f10dda9..03dc4400 100644 --- a/tools/renderware/common/files/txd/index.html +++ b/tools/renderware/common/files/txd/index.html @@ -4059,6 +4059,10 @@ + + + + @@ -4165,6 +4169,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/renderware/common/levels/index.html b/tools/renderware/common/levels/index.html index 1f9a9a4a..185fdf61 100644 --- a/tools/renderware/common/levels/index.html +++ b/tools/renderware/common/levels/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/retro-engine/common/animation/index.html b/tools/retro-engine/common/animation/index.html index 8aedb39f..c1b139cb 100644 --- a/tools/retro-engine/common/animation/index.html +++ b/tools/retro-engine/common/animation/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/retro-engine/common/files/index.html b/tools/retro-engine/common/files/index.html index 8dec103d..7afc23df 100644 --- a/tools/retro-engine/common/files/index.html +++ b/tools/retro-engine/common/files/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + + diff --git a/tools/retro-engine/common/models/index.html b/tools/retro-engine/common/models/index.html index 64c45dfd..7ad11b91 100644 --- a/tools/retro-engine/common/models/index.html +++ b/tools/retro-engine/common/models/index.html @@ -4057,6 +4057,10 @@ + + + + @@ -4163,6 +4167,48 @@ + + + + + + +
  • + + + + + Event List + + + + +
  • + + + + + + + + + + +
  • + + + + + Camera Types + + + + +
  • + + + +