diff --git a/.github/workflows/doxygen-gh-pages.yml b/.github/workflows/doxygen-gh-pages.yml index c988868e8d..73c6f669b3 100644 --- a/.github/workflows/doxygen-gh-pages.yml +++ b/.github/workflows/doxygen-gh-pages.yml @@ -10,9 +10,27 @@ jobs: deploy: runs-on: ubuntu-latest steps: - - uses: DenverCoder1/doxygen-github-pages-action@v1.3.0 + - name: Checkout repository + uses: actions/checkout@v3 with: - github_token: ${{ secrets.GITHUB_TOKEN }} + submodules: "true" + + - name: Install Doxygen + run: | + sudo apt-get install graphviz doxygen -y + wget https://www.doxygen.nl/files/doxygen-1.10.0.linux.bin.tar.gz + tar -xzf doxygen-*.linux.bin.tar.gz + + - name: Generate Doxygen documentation + run: | + ./doxygen-*/bin/doxygen Doxyfile + + - name: Create .nojekyll (ensures pages with underscores work on gh pages) + run: touch docs/html/.nojekyll + + - name: Deploy to GitHub Pages + uses: JamesIves/github-pages-deploy-action@v4 + with: + token: ${{ secrets.GITHUB_TOKEN }} branch: gh-pages - folder: docs/html - config_file: Doxyfile \ No newline at end of file + folder: docs/html \ No newline at end of file diff --git a/Doxyfile b/Doxyfile index 1218d02b16..111c098ef8 100644 --- a/Doxyfile +++ b/Doxyfile @@ -483,7 +483,7 @@ TYPEDEF_HIDES_STRUCT = NO # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. -LOOKUP_CACHE_SIZE = 0 +LOOKUP_CACHE_SIZE = 1 # The NUM_PROC_THREADS specifies the number of threads doxygen is allowed to use # during processing. When set to 0 doxygen will based this on the number of @@ -496,7 +496,7 @@ LOOKUP_CACHE_SIZE = 0 # DOT_NUM_THREADS setting. # Minimum value: 0, maximum value: 32, default value: 1. -NUM_PROC_THREADS = 1 +NUM_PROC_THREADS = 0 # If the TIMESTAMP tag is set different from NO then each generated page will # contain the date or date and time when the page was generated. Setting this to @@ -946,6 +946,7 @@ WARN_LOGFILE = INPUT = docs/ \ src/ \ include/ \ + courses/ \ tools/doxygen_syms.md # This tag can be used to specify the character encoding of the source files @@ -1095,7 +1096,7 @@ EXAMPLE_RECURSIVE = NO # that contain images that are to be included in the documentation (see the # \image command). -IMAGE_PATH = +IMAGE_PATH = docs/images # The INPUT_FILTER tag can be used to specify a program that doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program @@ -1355,7 +1356,7 @@ HTML_FILE_EXTENSION = .html # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_HEADER = +HTML_HEADER = docs/header.html # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each # generated HTML page. If the tag is left blank doxygen will generate a standard @@ -1396,7 +1397,9 @@ HTML_STYLESHEET = # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = doxygen-awesome-css/doxygen-awesome.css \ - doxygen-awesome-css/doxygen-awesome-sidebar-only.css + doxygen-awesome-css/doxygen-awesome-sidebar-only.css \ + doxygen-awesome-css/doxygen-awesome-sidebar-only-darkmode-toggle.css \ + docs/docs.css # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or # other source files which should be copied to the HTML output directory. Note @@ -1406,7 +1409,7 @@ HTML_EXTRA_STYLESHEET = doxygen-awesome-css/doxygen-awesome.css \ # files will be copied as-is; there are no commands or markers available. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_EXTRA_FILES = +HTML_EXTRA_FILES = doxygen-awesome-css/doxygen-awesome-darkmode-toggle.js # The HTML_COLORSTYLE tag can be used to specify if the generated HTML output # should be rendered with a dark or light theme. @@ -1430,7 +1433,7 @@ HTML_COLORSTYLE = LIGHT # Minimum value: 0, maximum value: 359, default value: 220. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_HUE = 220 +HTML_COLORSTYLE_HUE = 209 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors # in the HTML output. For a value of 0 the output will use gray-scales only. A @@ -1438,7 +1441,7 @@ HTML_COLORSTYLE_HUE = 220 # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_SAT = 100 +HTML_COLORSTYLE_SAT = 255 # The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the # luminance component of the colors in the HTML output. Values below 100 @@ -1449,7 +1452,7 @@ HTML_COLORSTYLE_SAT = 100 # Minimum value: 40, maximum value: 240, default value: 80. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_COLORSTYLE_GAMMA = 80 +HTML_COLORSTYLE_GAMMA = 113 # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that diff --git a/Makefile b/Makefile index 98b7045afc..b5806c451a 100644 --- a/Makefile +++ b/Makefile @@ -395,7 +395,9 @@ endif doc: $(PYTHON) tools/doxygen_symbol_gen.py - doxygen + doxygen + @$(PRINT) "$(GREEN)Documentation generated in docs/html$(NO_COL)\n" + @$(PRINT) "$(GREEN)Results can be viewed by opening docs/html/index.html in a web browser$(NO_COL)\n" clean: $(RM) -r $(BUILD_DIR) diff --git a/README.md b/README.md index 1f0f6a4f92..92b643d250 100644 --- a/README.md +++ b/README.md @@ -85,7 +85,7 @@ Some menu textures are compressed using a format called tkmk00. A byte-matching Documentation available online at [https://n64decomp.github.io/mk64/](https://n64decomp.github.io/mk64/). -Documentation generated using [Doxygen](https://www.doxygen.nl/index.html). Run `make doc -j` to test locally. Documentation resides in `docs/html`. Open index.html to view the site. +Documentation generated using [Doxygen](https://www.doxygen.nl/index.html). Run `make doc` to test locally. Documentation resides in `docs/html`. Open index.html to view the site. ## Contributing diff --git a/docs/basics/actors.md b/docs/actors/actors.md similarity index 98% rename from docs/basics/actors.md rename to docs/actors/actors.md index e29c397148..31dbd9c71f 100644 --- a/docs/basics/actors.md +++ b/docs/actors/actors.md @@ -1,4 +1,4 @@ -\page actors How Actors Work +@page actors How Actors Work # Actors If you are familiar with oot or sm64 prepare to be very disappointed. Both games split actors into separate files. In an unorderly fashion, mk64 appears to place all actors in the same file save for the odd exception. diff --git a/docs/actors/items.md b/docs/actors/items.md new file mode 100644 index 0000000000..c81b7f90e9 --- /dev/null +++ b/docs/actors/items.md @@ -0,0 +1 @@ +@page items Items diff --git a/docs/actors/objects.md b/docs/actors/objects.md new file mode 100644 index 0000000000..cdd2565961 --- /dev/null +++ b/docs/actors/objects.md @@ -0,0 +1,2 @@ +@page objects Objects +# Objects diff --git a/docs/basics/vehicles.md b/docs/actors/vehicles.md similarity index 94% rename from docs/basics/vehicles.md rename to docs/actors/vehicles.md index 2f876c7826..679dd81989 100644 --- a/docs/basics/vehicles.md +++ b/docs/actors/vehicles.md @@ -1,4 +1,4 @@ -\page vehicles Vehicles +@page vehicles Vehicles [TOC] diff --git a/docs/basics/actorsmenu.md b/docs/actorsmenu.md similarity index 66% rename from docs/basics/actorsmenu.md rename to docs/actorsmenu.md index 6213121b9c..f19c514ffa 100644 --- a/docs/basics/actorsmenu.md +++ b/docs/actorsmenu.md @@ -1,4 +1,4 @@ -\page actorsmenu Actors +@page actorsmenu Actors Actors are dynamic game objects usually subject to game physics such as gravity, force, and collision. They might move around the map, spin, or interactive in some manner. Alternatively, static game objects cannot move and cannot be interacted with. They can use collision but not physics. A course model and Mario Raceway's Pipe are examples of static objects. Any of the items or player karts are examples of dynamic game objects; actors. @@ -6,100 +6,19 @@ mk64 contains two systems for implementing actors. They have been deemed as acto The two main variables to concern yourself with are `gActorList` and `gObjectList`; the core containers of the two systems. -`gActorList` contains: +@ref gActorList contains: ``` trees, bushes, falling rocks, kiwano-fruit, banana, shells, piranha-plant, train wheels, rail-road crossing, cows, yoshi-valley's egg, spinning signs, palm trees, paddle for the paddle-wheeled boat, wheels for cars/trucks, etc. ``` The actor code has two main parts; the update code and the render code. The update code alters the position/rotation of the object whereas the render code displays the object on the screen. -`gObjectList` contains: +@ref gObjectList contains: ``` thwomps, bowser fire-breath, moles, hedgehogs, snowmen, crabs, particles, leaves, etc (also, probably penguins and birds). ``` The object system is much more complex than actors and is not well documented. - -\htmlonly +@htmlonly
- -
-\endhtmlonly +@endhtmlonly -\subpage actors -\subpage objects -\subpage vehicles -\subpage items +@subpage actors +@subpage objects +@subpage vehicles +@subpage items diff --git a/docs/basics/BUILD_WINDOWS.md b/docs/basics/BUILD_WINDOWS.md index 88236bcad1..cb7fdafe88 100644 --- a/docs/basics/BUILD_WINDOWS.md +++ b/docs/basics/BUILD_WINDOWS.md @@ -1,4 +1,4 @@ -\page buildwindows Compiling for Windows +@page buildwindows Compiling for Windows ## Compiling mk64 Decomp In Windows ***This method is not recommended nor supported. However, it is the only solution to build in W7/W8. WSL is the path of least resistance, use that not this*** diff --git a/docs/basics/basicconcepts.md b/docs/basics/basicconcepts.md index 0b9254fa3e..f5b2d555b7 100644 --- a/docs/basics/basicconcepts.md +++ b/docs/basics/basicconcepts.md @@ -14,7 +14,7 @@ Computers use addresses to jump through code. This works similar to a house numb A typical N64 address: `0x80160158` In an N64 program, addresses begin at `0x80000000`. As you create code, data, and the like, the compiler will add onto this base number and assign variables to an address. -``` +```c s32 a = 2; // 0x80000004 s32 b = 7; // 0x80000008 s32 c = 5; // 0x8000000C @@ -22,7 +22,7 @@ s32 d = 1; // 0x80000010 s32 e = 3; // 0x80000014 ``` Replacing a variable with a hard-coded address grabs the value at that address. -``` +```c print(0x80000004); // or print(a); ``` @@ -40,7 +40,7 @@ Texture a_texture[] = { }; ``` The address of this could extend from `0x80000100` to `0x800000534`. However, you would not see data begin at `0x80000533`. The compiler generally aligns objects to 4, 8, 0xC, or 0x10. With the exception being when you're working with s16 and s8. If you have: -``` +```c s16 a = 3; // Value compiled to 0x0003 s32 b = 5; // Value compiled to 0x00000005 ``` @@ -52,7 +52,7 @@ The compiler aligned `b` to the nearest 0x4. If there were two s16's then the bl # How Errors Happen The maximum value of an s8 (0x00) is 0xFF or 255. `0xFF + 1 = 0x100` imagine this scenario: -``` +```c s8 a = 1; s8 b = 2; s8 c = 3; diff --git a/docs/basics/compiling.md b/docs/basics/compiling.md index c6fa24a7a0..59ade96da7 100644 --- a/docs/basics/compiling.md +++ b/docs/basics/compiling.md @@ -11,13 +11,13 @@ The build system has the following package requirements: To add submodules run `git submodule update --init --recursive` after cloning. # Linux -``` +```bash sudo apt install build-essential pkg-config git binutils-mips-linux-gnu python3 zlib1g-dev libaudiofile-dev libcapstone-dev ``` ### Arch -``` +```bash sudo pacman -S base-devel capstone python ``` Install the following AUR package: @@ -34,7 +34,7 @@ Not recommended. Use WSL unless this is your only option. # macOS Install [Homebrew](https://brew.sh), then install the following dependencies: -``` +```bash brew update brew install python3 capstone coreutils make pkg-config tehzz/n64-dev/mips64-elf-binutils ``` @@ -44,19 +44,19 @@ Build using `gmake` ensuring homebrew `make` is used instead of the old macOS sy # Docker Build the Docker image: -``` +```bash docker build -t mk64 . ``` When building and using other tools, append the following in front of every command you run: ```bash -docker run --rm -v ${PWD}:/mk64 mk64 +docker run --rm -v .:/mk64 mk64 ``` For example: ```bash -docker run --rm -v ${PWD}:/mk64 mk64 make -C tools -docker run --rm -v ${PWD}:/mk64 mk64 make +docker run --rm -v .:/mk64 mk64 make -C tools +docker run --rm -v .:/mk64 mk64 make ``` # Building US @@ -78,16 +78,16 @@ mk64 decomp supports two EU versions * EU 1.1 `eu-final` Build using -``` +```bash make -j VERSION=eu-1.0 ``` or -``` +```bash make -j VERSION=eu-final ``` First-diff/diff commands for EU -``` +```bash python3 first-diff.py --eu ./diff -eu ``` \ No newline at end of file diff --git a/docs/basics/controlflow.md b/docs/basics/controlflow.md index 0d15c7cc84..4fb5247bfc 100644 --- a/docs/basics/controlflow.md +++ b/docs/basics/controlflow.md @@ -1,4 +1,4 @@ -\page controlflow Codebase Overview +@page controlflow Codebase Overview [TOC] @@ -6,10 +6,11 @@ The developers wrote mk64 using a state-driven paradigm. Gamestate, gamemode, course, actors, structs, and more decide which branches code should follow. As an example, a condition can check the current course to load that courses resources or run logic based on that. # Threading -After boot, the game begins by setting up its four threads; idle, video, audio, and the game loop. -The idle thread allows the cpu to sleep. Without it, if at any time execution of all threads were paused, the cpu would never be able to continue. The idle thread is active if all the other threads are paused. +After boot, the game begins by setting up its four threads; [idle](@ref thread1_idle), [video](@ref thread3_video), [audio](@ref thread4_audio), and the [game loop](@ref thread5_game_loop). -As such, the idle thread runs the following loop: `while(TRUE);` (it runs in a perpetual loop of nothing; sleep). In mips assembly it looks like this: +The [idle thread](@ref thread1_idle) allows the cpu to sleep. Without it, if at any time execution of all threads were paused, the cpu would never be able to continue. The idle thread is active if all the other threads are paused. + +As such, the [idle thread](@ref thread1_idle) runs the following loop: `while(TRUE);` (it runs in a perpetual loop of nothing; sleep). In mips assembly it looks like this: ``` .L800005B8: b .L800005B8 @@ -20,40 +21,42 @@ b stands for branch which acts akin to a goto. In this case, branch to the label N64 threads are ran based on priority running whichever thread holds the most of it. Threads can also pause and wait for events. Note that the N64 is not multi-threaded by modern standards as the other threads contain specific purposes which slightly differs from the concept of splitting a single program into multiple processes for efficiency. # Overall Control Flow -``` -init_threads: - idle, video, audio, gameloop -gameloop: - audio - jumpTo a specific menu or race based on a gameState flag. - profiler - config_gfx_pool - read_controllers - game_state_controller - endDL/vsync -game_state_controller: - switch(loc) - menus -> switch(menu) { // do menu stuff } - race_logic_loop -> spaghetti - podium_ceremony - credits -video: +order of initialisation of thread: +boot: +* init_threads:
+ * [idle](@ref thread1_idle), [video](@ref thread3_video), [audio](@ref thread4_audio), [game loop](@ref thread5_game_loop)
+* [game loop](@ref thread5_game_loop):
+ * [audio](@ref thread4_audio)
+ * [jumpTo a specific menu or race based on a gameState flag.](@ref update_gamestate)
+ * [profiler](@ref profiler_log_thread5_time)
+ * [config_gfx_pool](@ref config_gfx_pool)
+ * [read_controllers](@ref read_controllers)
+ * [game_state_handler](@ref game_state_handler)
+ * [endDL/vsync](@ref display_and_vsync)
+ * [game_state_handler](@ref game_state_handler):
+ * switch([gGamestate](@ref gGamestate))
+ * [menus](@ref update_menus) -> switch([menu](@ref gMenuSelection)) { // do menu stuff }
+ * [race_logic_loop](@ref race_logic_loop) -> spaghetti
+ * [podium_ceremony](@ref podium_ceremony_loop)
+ * [credits](@ref credits_loop)
+* [video](@ref thread3_video):
handles interaction between video/audio threads. handles vblanking and some elements pertaining to framebuffer most of all, handles which step of rendering a frame the cpu is in. Checks when new to start new sp tasks -``` + + If mk64 is in a menu state it will branch off to the menu code, running relevant bits of code based on more flags such as which particular menu the user is in. This will loop until the state changes to a different one such as race mode. If mk64 is in a race state, then race related code is ran and it spaghetti's off into a wide series of branches. This may include concepts such as `isLinedUp, isRacing, isRaceFinished, gotoNextCourse, isHuman, and isAI`. This relatively primitive design could be defined as a state machine from an abstract point of view. This would differ from an OOP design that uses objects and hierarchy. You will become very familiar with this design principle as you explore the code-base. During any step of the game loop, a switch can be setup to check a flag then run code relevant to the situation. For instance, a flag can check whether a race is in-progress or complete. If in-progress set the player to human controlled. If complete, set player to AI controlled. # Segments -mk64 code is split into three sections +mk64 code is split into three sections for now. |Segment|desc| |---|---| -|Main|Menus, audio, libultra, rsp| -|Racing|Memory management, courses, players, actors, skybox, collision, math | -|Ending|Podium ceremony, credits| +|Main|[Menus](@ref menus.c), [audio](@ref audio), [libultra](@ref PR), rsp (include in libultra)| +|Racing|[Memory management](@ref memory.c), [courses](@ref render_courses.c), [players](player_controller.c), [actors](@ref actors.c), [skybox](@ref skybox_and_splitscreen.c), [collision](@ref collision.c), [math](@ref math_util.c) | +|Ending|[Podium ceremony](@ref ending), [credits](@ref credits.c)| Racing segment loads after selecting a grand prix. Note that it is always reloaded preventing randomization of cpu's at the start of the first race due to no time for the random seed to actually become random. @@ -62,32 +65,32 @@ Racing segment loads after selecting a grand prix. Note that it is always reload ## Menus |file|desc| |---|---| -|menus.c | Menu related code | -|save.c| Save related | -|data/startup_logo.inc.c|Startup logo| +|[menus](@ref menus.c)| Menu related code | +|[save](@ref save.c)| Save related | +|[startup_logo](@ref data/startup_logo.inc.c)|Startup logo| ## Players Player related code resides in |file|desc| |---|---| -|player_controller.c| Applies physics to players | -|camera.c| Player cameras | +|[player_controller](@ref player_controller.c)| Applies physics to players | +|[camera](@ref camera.c)| Player cameras | ## Actors Actor related code resides in |file|desc| |---|---| -|actors.c|Variety of [actors](actorsmenu.html), see link for specifics.| -|actors_extended.c|Shells and bananas| -|code_80005FD0.c| Vehicles; trains, cars, trucks, boats | +|[actors](@ref actors.c)|Variety of [actors](actorsmenu.html), see link for specifics.| +|[actors_extended](@ref actors_extended.c)|Shells and bananas| +|[code_80005FD0](@ref code_80005FD0.c)| Vehicles; trains, cars, trucks, boats | ## Objects Object related code resides in |file|desc| |---|---| -|code_80057C60.c|Objects| -|code_80071F00.c|Objects| -|code_80086E70.c|Objects| +|[code_80057C60](@ref code_80057C60.c)|Objects| +|[code_80071F00](@ref code_80071F00.c)|Objects| +|[code_80086E70](@ref code_80086E70.c)|Objects| Documentation of the specifics still in-progress. See [actors](actorsmenu.html) for more information. @@ -95,11 +98,12 @@ Documentation of the specifics still in-progress. See [actors](actorsmenu.html) Course related code resides in |file|desc| |---|---| -|memory.c| Loads and extracts course data| -|render_courses.c|Renders course content| -|common_textures.inc.c|Content accessible to every course such as items and portraits| +|[memory](@ref memory.c)| Loads and extracts course data| +|[render_courses](@ref render_courses.c)|Renders course content| +|[common_textures](@ref common_textures.inc.c)|Content accessible to every course such as items and portraits| ### Course Folder +[course folder link][@ref courses] |file|desc| |---|---| |courses/course_name/course_data.inc.c|Course data| @@ -110,25 +114,25 @@ Course related code resides in ## UI & Other 2D Screen data |file|desc| |---|---| -|hud_renderer.c|ItemWindows| +|[hud_renderer](@ref hud_renderer.c)|ItemWindows| ## Engine |file|desc| |---|---| -|collision.c| | -|code_80005FD0| Pathing code | +|[collision](@ref collision.c)| | +|[code_80005FD0](@ref code_80005FD0.c)| Pathing code | ## Math Math related code resides in |file|desc| |---|---| -|math_util.c| | -|math_util_2.c| | +|[math_util](@ref math_util.c)| | +|[math_util_2](@ref math_util_2.c)| | ## Ending |file|desc| |---|---| -|ceremony_and_credits.c|Camera rails for podium ceremony and credits| -|podium_ceremony_actors.c|Fireworks and balloons for podium ceremony| -|ceremony_data.inc.c|Trophies and podium models. Paths.| -|credits.c|Credits text and UI positions| +|[ceremony_and_credits](@ref ceremony_and_credits.c)|Camera rails for podium ceremony and credits| +|[podium_ceremony_actors](@ref podium_ceremony_actors.c)|Fireworks and balloons for podium ceremony| +|[ceremony_data](@ref ceremony_data.inc.c)|Trophies and podium models. Paths.| +|[credits](@ref credits.c)|Credits text and UI positions| diff --git a/docs/basics/items.md b/docs/basics/items.md deleted file mode 100644 index 3467925630..0000000000 --- a/docs/basics/items.md +++ /dev/null @@ -1 +0,0 @@ -\page items Items diff --git a/docs/basics/objects.md b/docs/basics/objects.md deleted file mode 100644 index 58e62b9ab9..0000000000 --- a/docs/basics/objects.md +++ /dev/null @@ -1,2 +0,0 @@ -\page objects -# Objects diff --git a/docs/basics/terminology.md b/docs/basics/terminology.md index 5dab7295b8..a4f8e15d22 100644 --- a/docs/basics/terminology.md +++ b/docs/basics/terminology.md @@ -1,4 +1,4 @@ -\page terminology Terminology +@page terminology Terminology # Technical Definitions * `Jump/Branch/Function` - Tells the cpu to execute instructions somewhere else and come back here when done. * `Hexadecimal` - A [numbering system](https://en.wikipedia.org/wiki/Hexadecimal). Similar numbering sytems include decimal (also called base-ten) and roman numerals. diff --git a/docs/basics/basicsmenu.md b/docs/basicsmenu.md similarity index 54% rename from docs/basics/basicsmenu.md rename to docs/basicsmenu.md index 8de0916b56..af397d70be 100644 --- a/docs/basics/basicsmenu.md +++ b/docs/basicsmenu.md @@ -1,86 +1,9 @@ -\page basics Understanding the Basics +@page basics Understanding the Basics -\htmlonly +@htmlonly Essential skills and concepts to help you get started with mk64 decomp.

-
-\endhtmlonly +@endhtmlonly -\subpage compiling -\subpage concepts -\subpage controlflow -\subpage terminology -\subpage buildwindows +@subpage compiling +@subpage concepts +@subpage controlflow +@subpage terminology +@subpage buildwindows diff --git a/docs/basics/courses.md b/docs/courses/courses.md similarity index 100% rename from docs/basics/courses.md rename to docs/courses/courses.md diff --git a/docs/basics/surfacetypes.md b/docs/courses/surfacetypes.md similarity index 92% rename from docs/basics/surfacetypes.md rename to docs/courses/surfacetypes.md index 8cfef23aa4..67203e16c5 100644 --- a/docs/basics/surfacetypes.md +++ b/docs/courses/surfacetypes.md @@ -1,6 +1,8 @@ -\page surfacetypes Surface Types +@page surfacetypes Surface Types -Surfaces produce effects, driven on sounds, and other behaviour. Note that surface type is not generally used for out of bounds behaviour. As such, out of bounds areas may use any combination of surface types or flags. +Surfaces produce effects, driven on sounds, and other behaviour. Note that surface type is not generally used for out of bounds behaviour. As such, out of bounds areas may use any combination of surface types or flags. + +extract from [SURFACE_TYPE](@ref SURFACE_TYPE) | id | Name | Desc | Courses | |---|---|---|---| diff --git a/docs/coursesmenu.md b/docs/coursesmenu.md new file mode 100644 index 0000000000..7fc654e9c1 --- /dev/null +++ b/docs/coursesmenu.md @@ -0,0 +1,41 @@ +@page coursesmenu Courses + +@htmlonly + +How courses work in mk64 +

+ + + + + + +@endhtmlonly + +@subpage courses +@subpage surfacetypes + diff --git a/docs/basics/coursesmenu.md b/docs/docs.css similarity index 58% rename from docs/basics/coursesmenu.md rename to docs/docs.css index f6aceca715..f09179e9ce 100644 --- a/docs/basics/coursesmenu.md +++ b/docs/docs.css @@ -1,53 +1,54 @@ -\page coursesmenu Courses - -\htmlonly - -How courses work in mk64 -

- - - - - - - -\endhtmlonly - -\subpage courses -\subpage surfacetypes +html.dark-mode .clipboard { + fill: white; +} diff --git a/docs/header.html b/docs/header.html new file mode 100644 index 0000000000..1daffbae60 --- /dev/null +++ b/docs/header.html @@ -0,0 +1,84 @@ + + + + + + + + +$projectname: $title +$title + + + + + + + + + + + + + + +$treeview +$search +$mathjax +$darkmode + +$extrastylesheet + + + + + + +
+ + + +
+ + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
$projectname $projectnumber +
+
$projectbrief
+
+
$projectbrief
+
$searchbox
$searchbox
+
+ + diff --git a/docs/images/buttonimage.png b/docs/images/buttonimage.png new file mode 100644 index 0000000000..b93606e1d3 Binary files /dev/null and b/docs/images/buttonimage.png differ diff --git a/docs/mainpage.md b/docs/mainpage.md index 0428aa869c..40e6043593 100644 --- a/docs/mainpage.md +++ b/docs/mainpage.md @@ -1,86 +1,6 @@ Complete resources for learning about mk64 decomp - -\htmlonly +@htmlonly
-
-\endhtmlonly +@endhtmlonly diff --git a/docs/tutorials.md b/docs/tutorials.md new file mode 100644 index 0000000000..69d113d286 --- /dev/null +++ b/docs/tutorials.md @@ -0,0 +1,50 @@ +@page tutorials Tutorials +Topics discussing how to work with certain features. + +@htmlonly +
+ + + + +@endhtmlonly + +@subpage boostramps +@subpage paths +@subpage tutorialaudio diff --git a/docs/tutorials/audio.md b/docs/tutorials/audio.md index 0d62da0f47..0c36e56f83 100644 --- a/docs/tutorials/audio.md +++ b/docs/tutorials/audio.md @@ -1 +1 @@ -\page tutorialaudio Audio +@page tutorialaudio Audio diff --git a/docs/tutorials/paths.md b/docs/tutorials/paths.md index b9594bb7e3..d3200a6dd3 100644 --- a/docs/tutorials/paths.md +++ b/docs/tutorials/paths.md @@ -1,4 +1,4 @@ -\page paths Paths +@page paths Paths The game uses multiple types of course paths # Course Paths diff --git a/docs/tutorials/tutorials.md b/docs/tutorials/tutorials.md deleted file mode 100644 index 3636bf1f5d..0000000000 --- a/docs/tutorials/tutorials.md +++ /dev/null @@ -1,131 +0,0 @@ -\page tutorials Tutorials -Topics discussing how to work with certain features. - -\htmlonly -
- - - - - - - -\endhtmlonly - -\subpage boostramps -\subpage paths -\subpage tutorialaudio diff --git a/tools/doxygen_symbol_gen.py b/tools/doxygen_symbol_gen.py index 1754b5f540..c798dd787b 100644 --- a/tools/doxygen_symbol_gen.py +++ b/tools/doxygen_symbol_gen.py @@ -31,6 +31,12 @@ def process_map_file(map_file_path): continue if function_name.startswith("jpt_"): continue + if function_name.startswith("0x"): + continue + if function_name.startswith("("): + continue + if function_name.startswith("__"): + continue # Format the information into the Doxygen style result += f"[{function_name}](@ref {function_name}) | {address}\n" diff --git a/tools/doxygen_syms.md b/tools/doxygen_syms.md index 812fa25e4a..23039f3ce8 100644 --- a/tools/doxygen_syms.md +++ b/tools/doxygen_syms.md @@ -5,95 +5,8 @@ This page displays the memory addresses of variables in the project. The following table shows the memory addresses of important variables: Variable Name | Memory Address --------------|--------------- -[0x80000000](@ref 0x80000000) | 0x80000000 -[0xa4000000](@ref 0xa4000000) | 0xA4000000 -[0xa40004c0](@ref 0xa40004c0) | 0xA40004C0 -[0xa4000774](@ref 0xa4000774) | 0xA4000774 -[0xa4001000](@ref 0xa4001000) | 0xA4001000 -[0xa4040010](@ref 0xa4040010) | 0xA4040010 -[0xa4080000](@ref 0xa4080000) | 0xA4080000 -[0xa4300000](@ref 0xa4300000) | 0xA4300000 -[0xa4300004](@ref 0xa4300004) | 0xA4300004 -[0xa4300008](@ref 0xa4300008) | 0xA4300008 -[0xa430000c](@ref 0xa430000c) | 0xA430000C -[0xa4400010](@ref 0xa4400010) | 0xA4400010 -[0xa450000c](@ref 0xa450000c) | 0xA450000C -[0xa4600000](@ref 0xa4600000) | 0xA4600000 -[0xa4600004](@ref 0xa4600004) | 0xA4600004 -[0xa460000c](@ref 0xa460000c) | 0xA460000C -[0xa4600010](@ref 0xa4600010) | 0xA4600010 -[0xa4700000](@ref 0xa4700000) | 0xA4700000 -[0xa4700010](@ref 0xa4700010) | 0xA4700010 -[0xa4800018](@ref 0xa4800018) | 0xA4800018 -[0xb0000008](@ref 0xb0000008) | 0xB0000008 -[0xb0000010](@ref 0xb0000010) | 0xB0000010 -[0xb0000014](@ref 0xb0000014) | 0xB0000014 -[0xc0000000](@ref 0xc0000000) | 0xC0000000 -[0xc0000008](@ref 0xc0000008) | 0xC0000008 -[0xc000000c](@ref 0xc000000c) | 0xC000000C -[0xfff00](@ref 0xfff00) | 0x000FFF00 -[0x3004000](@ref 0x3004000) | 0x03004000 -[0x3004800](@ref 0x3004800) | 0x03004800 -[0x3005000](@ref 0x3005000) | 0x03005000 -[0x3005800](@ref 0x3005800) | 0x03005800 -[0x3006000](@ref 0x3006000) | 0x03006000 -[0x3006800](@ref 0x3006800) | 0x03006800 -[0x3007000](@ref 0x3007000) | 0x03007000 -[0x3007800](@ref 0x3007800) | 0x03007800 -[0x3008000](@ref 0x3008000) | 0x03008000 -[0x3008800](@ref 0x3008800) | 0x03008800 -[0x5ff8db8](@ref 0x5ff8db8) | 0x05FF8DB8 -[0xb002a00](@ref 0xb002a00) | 0x0B002A00 -[0xa4040004](@ref 0xa4040004) | 0xA4040004 -[0xa4040008](@ref 0xa4040008) | 0xA4040008 -[0xa404000c](@ref 0xa404000c) | 0xA404000C -[0xa4040010](@ref 0xa4040010) | 0xA4040010 -[0xa4300008](@ref 0xa4300008) | 0xA4300008 -[0xa430000c](@ref 0xa430000c) | 0xA430000C -[0xa4400004](@ref 0xa4400004) | 0xA4400004 -[0xa4400008](@ref 0xa4400008) | 0xA4400008 -[0xa440000c](@ref 0xa440000c) | 0xA440000C -[0xa4400010](@ref 0xa4400010) | 0xA4400010 -[0xa4400014](@ref 0xa4400014) | 0xA4400014 -[0xa4400018](@ref 0xa4400018) | 0xA4400018 -[0xa440001c](@ref 0xa440001c) | 0xA440001C -[0xa4400020](@ref 0xa4400020) | 0xA4400020 -[0xa4400024](@ref 0xa4400024) | 0xA4400024 -[0xa4400028](@ref 0xa4400028) | 0xA4400028 -[0xa440002c](@ref 0xa440002c) | 0xA440002C -[0xa4400030](@ref 0xa4400030) | 0xA4400030 -[0xa4400034](@ref 0xa4400034) | 0xA4400034 -[0xa4500004](@ref 0xa4500004) | 0xA4500004 -[0xa4500008](@ref 0xa4500008) | 0xA4500008 -[0xa450000c](@ref 0xa450000c) | 0xA450000C -[0xa4500010](@ref 0xa4500010) | 0xA4500010 -[0xa4500014](@ref 0xa4500014) | 0xA4500014 -[0xa4600004](@ref 0xa4600004) | 0xA4600004 -[0xa4600008](@ref 0xa4600008) | 0xA4600008 -[0xa460000c](@ref 0xa460000c) | 0xA460000C -[0xa4600010](@ref 0xa4600010) | 0xA4600010 -[0xa4600024](@ref 0xa4600024) | 0xA4600024 -[0xa4600028](@ref 0xa4600028) | 0xA4600028 -[0xa460002c](@ref 0xa460002c) | 0xA460002C -[0xa4600030](@ref 0xa4600030) | 0xA4600030 -[0xa4800004](@ref 0xa4800004) | 0xA4800004 -[0xa4800010](@ref 0xa4800010) | 0xA4800010 -[0xa4800018](@ref 0xa4800018) | 0xA4800018 -[0xa5000508](@ref 0xa5000508) | 0xA5000508 -[0xa5000510](@ref 0xa5000510) | 0xA5000510 -[0xe6fffffc](@ref 0xe6fffffc) | 0xE6FFFFFC -[0xfa00000c](@ref 0xfa00000c) | 0xFA00000C -[0xfa000010](@ref 0xfa000010) | 0xFA000010 -[0xfa000018](@ref 0xfa000018) | 0xFA000018 -[0x0](@ref 0x0) | 0x00BE9160 -[(.boot)](@ref (.boot)) | 0xA4000000 [ipl3_entry](@ref ipl3_entry) | 0xA4000040 [ipl3_font](@ref ipl3_font) | 0xA4000B70 -[(.boot))](@ref (.boot))) | 0xA4001000 -[(.boot))](@ref (.boot))) | 0x00001000 -[(.boot))](@ref (.boot))) | 0x00BE9160 -[(.main)](@ref (.main)) | 0x80000400 -[__romPos](@ref __romPos) | 0x00001000 [entry_point](@ref entry_point) | 0x80000400 [create_thread](@ref create_thread) | 0x80000450 [main_func](@ref main_func) | 0x80000484 @@ -2579,11 +2492,8 @@ Variable Name | Memory Address [osSpTaskLoad](@ref osSpTaskLoad) | 0x800CCF8C [osSpTaskStartGo](@ref osSpTaskStartGo) | 0x800CD0EC [osContInit](@ref osContInit) | 0x800CD130 -[__osContGetInitData](@ref __osContGetInitData) | 0x800CD328 -[__osPackRequestData](@ref __osPackRequestData) | 0x800CD3F8 [osContStartReadData](@ref osContStartReadData) | 0x800CD4F0 [osContGetReadData](@ref osContGetReadData) | 0x800CD5B4 -[__osPackReadData](@ref __osPackReadData) | 0x800CD65C [osRecvMesg](@ref osRecvMesg) | 0x800CD750 [osWritebackDCacheAll](@ref osWritebackDCacheAll) | 0x800CD890 [osSendMesg](@ref osSendMesg) | 0x800CD8C0 @@ -2595,27 +2505,13 @@ Variable Name | Memory Address [osSpTaskYield](@ref osSpTaskYield) | 0x800CDD40 [osSpTaskYielded](@ref osSpTaskYielded) | 0x800CDD60 [osGetTime](@ref osGetTime) | 0x800CDDE0 -[__ull_rshift](@ref __ull_rshift) | 0x800CDE70 -[__ull_rem](@ref __ull_rem) | 0x800CDE9C -[__ull_div](@ref __ull_div) | 0x800CDED8 -[__ll_lshift](@ref __ll_lshift) | 0x800CDF14 -[__ll_rem](@ref __ll_rem) | 0x800CDF40 -[__ll_div](@ref __ll_div) | 0x800CDF7C -[__ll_mul](@ref __ll_mul) | 0x800CDFD8 -[__ull_divremi](@ref __ull_divremi) | 0x800CE008 -[__ll_mod](@ref __ll_mod) | 0x800CE068 -[__ll_rshift](@ref __ll_rshift) | 0x800CE104 -[__osGetCurrFaultedThread](@ref __osGetCurrFaultedThread) | 0x800CE130 [sqrtf](@ref sqrtf) | 0x800CE140 [guOrthoF](@ref guOrthoF) | 0x800CE150 [guOrtho](@ref guOrtho) | 0x800CE2A4 [osSetTime](@ref osSetTime) | 0x800CE310 [osEepromProbe](@ref osEepromProbe) | 0x800CE340 [osPfsIsPlug](@ref osPfsIsPlug) | 0x800CE3B0 -[__osPfsRequestData](@ref __osPfsRequestData) | 0x800CE550 -[__osPfsGetInitData](@ref __osPfsGetInitData) | 0x800CE64C [osPfsInit](@ref osPfsInit) | 0x800CE720 -[__osPfsGetStatus](@ref __osPfsGetStatus) | 0x800CE7D4 [osPfsNumFiles](@ref osPfsNumFiles) | 0x800CE8E0 [osPfsFileState](@ref osPfsFileState) | 0x800CEA30 [osPfsFreeBlocks](@ref osPfsFreeBlocks) | 0x800CED20 @@ -2635,108 +2531,45 @@ Variable Name | Memory Address [guMtxCatL](@ref guMtxCatL) | 0x800CF820 [osPfsFindFile](@ref osPfsFindFile) | 0x800CF880 [osPfsDeleteFile](@ref osPfsDeleteFile) | 0x800CFA40 -[__osPfsReleasePages](@ref __osPfsReleasePages) | 0x800CFD20 -[__osBlockSum](@ref __osBlockSum) | 0x800CFF58 [osEepromLongWrite](@ref osEepromLongWrite) | 0x800D0050 [osEepromLongRead](@ref osEepromLongRead) | 0x800D0190 [osPfsReadWriteFile](@ref osPfsReadWriteFile) | 0x800D03CC [osPfsAllocateFile](@ref osPfsAllocateFile) | 0x800D07D0 -[__osPfsDeclearPage](@ref __osPfsDeclearPage) | 0x800D0C54 [osAiSetFrequency](@ref osAiSetFrequency) | 0x800D0F80 [osAiGetLength](@ref osAiGetLength) | 0x800D10E0 [osAiSetNextBuffer](@ref osAiSetNextBuffer) | 0x800D10F0 [osGetCount](@ref osGetCount) | 0x800D11A0 -[__osExceptionPreamble](@ref __osExceptionPreamble) | 0x800D11B0 -[__osException](@ref __osException) | 0x800D11C0 [func_800D16E4](@ref func_800D16E4) | 0x800D16E4 -[__osEnqueueAndYield](@ref __osEnqueueAndYield) | 0x800D17CC -[__osEnqueueThread](@ref __osEnqueueThread) | 0x800D18CC -[__osPopThread](@ref __osPopThread) | 0x800D1914 -[__osDispatchThread](@ref __osDispatchThread) | 0x800D1924 -[__osCleanupThread](@ref __osCleanupThread) | 0x800D1AA0 -[__osDisableInt](@ref __osDisableInt) | 0x800D1AB0 -[__osRestoreInt](@ref __osRestoreInt) | 0x800D1AD0 -[__osDequeueThread](@ref __osDequeueThread) | 0x800D1AF0 -[__osSetSR](@ref __osSetSR) | 0x800D1B30 -[__osGetSR](@ref __osGetSR) | 0x800D1B40 -[__osSetFpcCsr](@ref __osSetFpcCsr) | 0x800D1B50 -[__osSiRawReadIo](@ref __osSiRawReadIo) | 0x800D1B60 -[__osSiRawWriteIo](@ref __osSiRawWriteIo) | 0x800D1BB0 [osWritebackDCache](@ref osWritebackDCache) | 0x800D1C00 [osMapTLBRdb](@ref osMapTLBRdb) | 0x800D1C80 [osPiRawReadIo](@ref osPiRawReadIo) | 0x800D1CE0 -[__osSetHWIntrRoutine](@ref __osSetHWIntrRoutine) | 0x800D1D40 -[__osLeoInterrupt](@ref __osLeoInterrupt) | 0x800D1D90 -[__osTimerServicesInit](@ref __osTimerServicesInit) | 0x800D2610 -[__osTimerInterrupt](@ref __osTimerInterrupt) | 0x800D269C -[__osSetTimerIntr](@ref __osSetTimerIntr) | 0x800D2814 -[__osInsertTimer](@ref __osInsertTimer) | 0x800D2888 [osGetThreadPri](@ref osGetThreadPri) | 0x800D2A10 -[__osViInit](@ref __osViInit) | 0x800D2A30 -[__osViGetCurrentContext](@ref __osViGetCurrentContext) | 0x800D2B80 -[__osViSwapContext](@ref __osViSwapContext) | 0x800D2B90 -[__osPiCreateAccessQueue](@ref __osPiCreateAccessQueue) | 0x800D2EF0 -[__osPiGetAccess](@ref __osPiGetAccess) | 0x800D2F40 -[__osPiRelAccess](@ref __osPiRelAccess) | 0x800D2F84 [osPiRawStartDma](@ref osPiRawStartDma) | 0x800D2FB0 [osEPiRawStartDma](@ref osEPiRawStartDma) | 0x800D3090 -[__osDevMgrMain](@ref __osDevMgrMain) | 0x800D3170 [bcopy](@ref bcopy) | 0x800D3520 [osVirtualToPhysical](@ref osVirtualToPhysical) | 0x800D3830 -[__osSpSetStatus](@ref __osSpSetStatus) | 0x800D38B0 -[__osSpSetPc](@ref __osSpSetPc) | 0x800D38C0 -[__osSpRawStartDma](@ref __osSpRawStartDma) | 0x800D3900 -[__osSpDeviceBusy](@ref __osSpDeviceBusy) | 0x800D3990 [osSetTimer](@ref osSetTimer) | 0x800D39C0 -[__osSiRawStartDma](@ref __osSiRawStartDma) | 0x800D3AA0 -[__osSiCreateAccessQueue](@ref __osSiCreateAccessQueue) | 0x800D3B50 -[__osSiGetAccess](@ref __osSiGetAccess) | 0x800D3BA0 -[__osSiRelAccess](@ref __osSiRelAccess) | 0x800D3BE4 [osJamMesg](@ref osJamMesg) | 0x800D3C10 [osPiGetCmdQueue](@ref osPiGetCmdQueue) | 0x800D3D60 -[__osSpGetStatus](@ref __osSpGetStatus) | 0x800D3D90 [guMtxF2L](@ref guMtxF2L) | 0x800D3DA0 [guMtxIdentF](@ref guMtxIdentF) | 0x800D3EA0 [guMtxIdent](@ref guMtxIdent) | 0x800D3F28 [guMtxL2F](@ref guMtxL2F) | 0x800D3F58 [osEepromWrite](@ref osEepromWrite) | 0x800D4010 -[__osPackEepWriteData](@ref __osPackEepWriteData) | 0x800D41C0 -[__osEepStatus](@ref __osEepStatus) | 0x800D42CC -[__osSumcalc](@ref __osSumcalc) | 0x800D44F0 -[__osIdCheckSum](@ref __osIdCheckSum) | 0x800D454C -[__osRepairPackId](@ref __osRepairPackId) | 0x800D45B4 -[__osCheckPackId](@ref __osCheckPackId) | 0x800D49CC -[__osGetId](@ref __osGetId) | 0x800D4B64 -[__osCheckId](@ref __osCheckId) | 0x800D4DC0 -[__osPfsRWInode](@ref __osPfsRWInode) | 0x800D4EBC -[__osPfsSelectBank](@ref __osPfsSelectBank) | 0x800D51DC [osPfsChecker](@ref osPfsChecker) | 0x800D5250 [corrupted_init](@ref corrupted_init) | 0x800D5914 [corrupted](@ref corrupted) | 0x800D5AC8 -[__osContRamRead](@ref __osContRamRead) | 0x800D5CB0 -[__osPackRamReadData](@ref __osPackRamReadData) | 0x800D5EF4 [guNormalize](@ref guNormalize) | 0x800D6060 [sinf](@ref sinf) | 0x800D60F0 [cosf](@ref cosf) | 0x800D62B0 [_Printf](@ref _Printf) | 0x800D6A90 [guMtxXFMF](@ref guMtxXFMF) | 0x800D70E0 [guMtxCatF](@ref guMtxCatF) | 0x800D7180 -[__osContRamWrite](@ref __osContRamWrite) | 0x800D72F0 -[__osPackRamWriteData](@ref __osPackRamWriteData) | 0x800D7520 [osEepromRead](@ref osEepromRead) | 0x800D76A0 -[__osPackEepReadData](@ref __osPackEepReadData) | 0x800D7890 -[__osAiDeviceBusy](@ref __osAiDeviceBusy) | 0x800D79A0 [osSetIntMask](@ref osSetIntMask) | 0x800D79D0 [osDestroyThread](@ref osDestroyThread) | 0x800D7A70 -[__osSiDeviceBusy](@ref __osSiDeviceBusy) | 0x800D7B70 [osLeoDiskInit](@ref osLeoDiskInit) | 0x800D7BA0 -[__osSetCompare](@ref __osSetCompare) | 0x800D7C90 -[__osResetGlobalIntMask](@ref __osResetGlobalIntMask) | 0x800D7CA0 -[__osEPiRawWriteIo](@ref __osEPiRawWriteIo) | 0x800D7D00 [osYieldThread](@ref osYieldThread) | 0x800D7D50 -[__osProbeTLB](@ref __osProbeTLB) | 0x800D7DA0 -[__osContAddressCrc](@ref __osContAddressCrc) | 0x800D7E60 -[__osContDataCrc](@ref __osContDataCrc) | 0x800D7F10 [memcpy](@ref memcpy) | 0x800D7FE0 [strlen](@ref strlen) | 0x800D800C [strchr](@ref strchr) | 0x800D8034 @@ -3766,24 +3599,12 @@ Variable Name | Memory Address [gAudioLoadLock](@ref gAudioLoadLock) | 0x800EA5DC [osClockRate](@ref osClockRate) | 0x800EA5E0 [D_800EA5E8](@ref D_800EA5E8) | 0x800EA5E8 -[__OSGlobalIntMask](@ref __OSGlobalIntMask) | 0x800EA5EC [D_800EA5F0](@ref D_800EA5F0) | 0x800EA5F0 [viMgrMainArgs](@ref viMgrMainArgs) | 0x800EA600 [osViModeTable](@ref osViModeTable) | 0x800EA620 -[__osPiDevMgr](@ref __osPiDevMgr) | 0x800EB340 -[__osPiTable](@ref __osPiTable) | 0x800EB35C [_osContInitialized](@ref _osContInitialized) | 0x800EB360 [hdwrBugFlag](@ref hdwrBugFlag) | 0x800EB370 -[__osHwIntTable](@ref __osHwIntTable) | 0x800EB380 -[__osThreadTail](@ref __osThreadTail) | 0x800EB3A0 -[__osRunQueue](@ref __osRunQueue) | 0x800EB3A8 -[__osActiveQueue](@ref __osActiveQueue) | 0x800EB3AC -[__osRunningThread](@ref __osRunningThread) | 0x800EB3B0 -[__osFaultedThread](@ref __osFaultedThread) | 0x800EB3B4 -[__osTimerList](@ref __osTimerList) | 0x800EB3C0 [sViContexts](@ref sViContexts) | 0x800EB3D0 -[__osViCurr](@ref __osViCurr) | 0x800EB430 -[__osViNext](@ref __osViNext) | 0x800EB434 [osViClock](@ref osViClock) | 0x800EB438 [gOsPiAccessQueueCreated](@ref gOsPiAccessQueueCreated) | 0x800EB440 [gOsSiAccessQueueCreated](@ref gOsSiAccessQueueCreated) | 0x800EB450 @@ -3959,10 +3780,6 @@ Variable Name | Memory Address [gHeadsetPanVolume](@ref gHeadsetPanVolume) | 0x800F6310 [gStereoPanVolume](@ref gStereoPanVolume) | 0x800F6510 [gDefaultPanVolume](@ref gDefaultPanVolume) | 0x800F6710 -[(.main))](@ref (.main))) | 0x800F6910 -[(.main))](@ref (.main))) | 0x000F7510 -[(.main))](@ref (.main))) | 0x00BE9160 -[(.main.noload)](@ref (.main.noload)) | 0x800F6910 [gControllers](@ref gControllers) | 0x800F6910 [gPlayers](@ref gPlayers) | 0x800F6990 [D_800FD850](@ref D_800FD850) | 0x800FD850 @@ -5007,9 +4824,7 @@ Variable Name | Memory Address [D_80194040](@ref D_80194040) | 0x80194040 [piMgrThread](@ref piMgrThread) | 0x80195270 [piMgrStack](@ref piMgrStack) | 0x80195420 -[__osPiMesgQueue](@ref __osPiMesgQueue) | 0x80196420 [piMgrMesgBuff](@ref piMgrMesgBuff) | 0x80196438 -[__osEventStateTab](@ref __osEventStateTab) | 0x80196440 [D_801964C0](@ref D_801964C0) | 0x801964C0 [_osContCmdBuf](@ref _osContCmdBuf) | 0x80196500 [_osContPifCtrl](@ref _osContPifCtrl) | 0x8019653C @@ -5018,25 +4833,14 @@ Variable Name | Memory Address [D_80196548](@ref D_80196548) | 0x80196548 [_osContMesgQueue](@ref _osContMesgQueue) | 0x80196568 [_osContMesgBuff](@ref _osContMesgBuff) | 0x80196580 -[__osPfsPifRam](@ref __osPfsPifRam) | 0x80196590 [leoDiskStack](@ref leoDiskStack) | 0x801965E0 -[__osBaseTimer](@ref __osBaseTimer) | 0x801975E0 -[__osCurrentTime](@ref __osCurrentTime) | 0x80197600 -[__osBaseCounter](@ref __osBaseCounter) | 0x80197608 -[__osViIntrCount](@ref __osViIntrCount) | 0x8019760C -[__osTimerCounter](@ref __osTimerCounter) | 0x80197610 [osPiMesgBuff](@ref osPiMesgBuff) | 0x80197620 [gOsPiMessageQueue](@ref gOsPiMessageQueue) | 0x80197628 [osSiMesgBuff](@ref osSiMesgBuff) | 0x80197640 [gOsSiMessageQueue](@ref gOsSiMessageQueue) | 0x80197648 -[__osEepPifRam](@ref __osEepPifRam) | 0x80197660 [D_8019769C](@ref D_8019769C) | 0x8019769C [D_801976A0](@ref D_801976A0) | 0x801976A0 [LeoDiskHandle](@ref LeoDiskHandle) | 0x80197850 -[__osDiskHandle](@ref __osDiskHandle) | 0x801978C0 -[(.main.noload))](@ref (.main.noload))) | 0x801978D0 -[(.racing)](@ref (.racing)) | 0x8028DF00 -[__romPos](@ref __romPos) | 0x000F7510 [func_8028DF00](@ref func_8028DF00) | 0x8028DF00 [func_8028DF38](@ref func_8028DF38) | 0x8028DF38 [func_8028E028](@ref func_8028E028) | 0x8028E028 @@ -5479,10 +5283,6 @@ Variable Name | Memory Address [gCourseTable](@ref gCourseTable) | 0x802B8D80 [D_802B91C0](@ref D_802B91C0) | 0x802B91C0 [D_802B91C8](@ref D_802B91C8) | 0x802B91C8 -[(.racing))](@ref (.racing))) | 0x802BA030 -[(.racing))](@ref (.racing))) | 0x00123640 -[(.racing))](@ref (.racing))) | 0x00BE9160 -[(.racing.noload)](@ref (.racing.noload)) | 0x802BA030 [D_802BA030](@ref D_802BA030) | 0x802BA030 [D_802BA032](@ref D_802BA032) | 0x802BA032 [D_802BA034](@ref D_802BA034) | 0x802BA034 @@ -5594,14 +5394,6 @@ Variable Name | Memory Address [gAudioErrorFlags](@ref gAudioErrorFlags) | 0x803B7198 [D_803B71A0](@ref D_803B71A0) | 0x803B71A0 [D_803B71B0](@ref D_803B71B0) | 0x803B71B0 -[(0x8)](@ref (0x8)) | 0x803B71C0 -[(.racing.noload))](@ref (.racing.noload))) | 0x803B71C0 -[0x10)](@ref 0x10)) | 0x000FD1A0 -[0x10)](@ref 0x10)) | 0x0000000F -[0xffff)](@ref 0xffff)) | 0x0000D1A0 -[(.endingSequences)](@ref (.endingSequences)) | 0x80280000 -[__romPos](@ref __romPos) | 0x00123640 -[0x0000000000123640](@ref 0x0000000000123640) | 0x80280000 [func_80280000](@ref func_80280000) | 0x80280000 [func_80280038](@ref func_80280038) | 0x80280038 [func_80280268](@ref func_80280268) | 0x80280268 @@ -5790,11 +5582,6 @@ Variable Name | Memory Address [D_80286A04](@ref D_80286A04) | 0x80286A04 [D_80286B34](@ref D_80286B34) | 0x80286B34 [D_80286B5C](@ref D_80286B5C) | 0x80286B5C -[(.endingSequences))](@ref (.endingSequences))) | 0x802874A0 -[(.endingSequences))](@ref (.endingSequences))) | 0x0012AAE0 -[(.endingSequences))](@ref (.endingSequences))) | 0x00BE9160 -[(.endingSequences.noload)](@ref (.endingSequences.noload)) | 0x802874A0 -[0x000000000012aae0](@ref 0x000000000012aae0) | 0x802874A0 [D_802874A0](@ref D_802874A0) | 0x802874A0 [D_802874B0](@ref D_802874B0) | 0x802874B0 [D_802874D4](@ref D_802874D4) | 0x802874D4 @@ -5819,11 +5606,6 @@ Variable Name | Memory Address [sCutsceneSplineSegment](@ref sCutsceneSplineSegment) | 0x80287B1C [D_80287B1E](@ref D_80287B1E) | 0x80287B1E [D_80287B20](@ref D_80287B20) | 0x80287B20 -[(.endingSequences.noload))](@ref (.endingSequences.noload))) | 0x80287B30 -[0x10)](@ref 0x10)) | 0x000006A0 -[0xffff)](@ref 0xffff)) | 0x000006A0 -[(.data_segment2)](@ref (.data_segment2)) | 0x02000000 -[__romPos](@ref __romPos) | 0x0012AAE0 [D_02000000](@ref D_02000000) | 0x02000000 [D_02000028](@ref D_02000028) | 0x02000028 [D_02000050](@ref D_02000050) | 0x02000050 @@ -6611,18 +6393,6 @@ Variable Name | Memory Address [D_02008008](@ref D_02008008) | 0x02008008 [D_02008030](@ref D_02008030) | 0x02008030 [D_02008058](@ref D_02008058) | 0x02008058 -[(.data_segment2))](@ref (.data_segment2))) | 0x02008070 -[(.data_segment2))](@ref (.data_segment2))) | 0x00132B50 -[(.data_segment2))](@ref (.data_segment2))) | 0x00BE9160 -[(.common_textures)](@ref (.common_textures)) | 0x0D000000 -[__romPos](@ref __romPos) | 0x00132B50 -[0x0000000000132b50](@ref 0x0000000000132b50) | 0x0D000000 -[(0x10)](@ref (0x10)) | 0x0D012920 -[(.common_textures))](@ref (.common_textures))) | 0x0D012920 -[(.common_textures))](@ref (.common_textures))) | 0x00145470 -[(.common_textures))](@ref (.common_textures))) | 0x00BE9160 -[(.kart_textures)](@ref (.kart_textures)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00145470 [gKartLuigi000](@ref gKartLuigi000) | 0x0F000000 [gKartLuigi001](@ref gKartLuigi001) | 0x0F0004F4 [gKartLuigi002](@ref gKartLuigi002) | 0x0F0009F4 @@ -18451,12 +18221,6 @@ Variable Name | Memory Address [d_luigi_raceway_staff_ghost](@ref d_luigi_raceway_staff_ghost) | 0x0F4F9CAC [d_royal_raceway_staff_ghost](@ref d_royal_raceway_staff_ghost) | 0x0F4FAD04 [D_0F4FCAD0](@ref D_0F4FCAD0) | 0x0F4FCAD0 -[(.kart_textures))](@ref (.kart_textures))) | 0x0F4FCB00 -[(.kart_textures))](@ref (.kart_textures))) | 0x00641F70 -[(.kart_textures))](@ref (.kart_textures))) | 0x00BE9160 -[(.other_textures)](@ref (.other_textures)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00641F70 -[0x0000000000641f70](@ref 0x0000000000641f70) | 0x0F000000 [gTextureSignShellShot0](@ref gTextureSignShellShot0) | 0x0F000000 [gTextureSignShellShot1](@ref gTextureSignShellShot1) | 0x0F00038C [gTextureGrayCheckerboard](@ref gTextureGrayCheckerboard) | 0x0F0005D4 @@ -18991,21 +18755,9 @@ Variable Name | Memory Address [gTextureCourseOutlineDoubleDeck](@ref gTextureCourseOutlineDoubleDeck) | 0x0F0E1BA8 [gTextureCourseOutlineDksJungleParkway](@ref gTextureCourseOutlineDksJungleParkway) | 0x0F0E1D2C [gTextureCourseOutlineBigDonut](@ref gTextureCourseOutlineBigDonut) | 0x0F0E2014 -[(0x10)](@ref (0x10)) | 0x0F0E22B0 -[(.other_textures))](@ref (.other_textures))) | 0x0F0E22B0 -[(.other_textures))](@ref (.other_textures))) | 0x00724220 -[(.other_textures))](@ref (.other_textures))) | 0x00BE9160 -[(.data_802BA370)](@ref (.data_802BA370)) | 0x802BA370 -[__romPos](@ref __romPos) | 0x00724220 [gSineTable](@ref gSineTable) | 0x802BA370 [gCosineTable](@ref gCosineTable) | 0x802BB370 [gArctanTable](@ref gArctanTable) | 0x802BF370 -[(0x10)](@ref (0x10)) | 0x802BFB80 -[(.data_802BA370))](@ref (.data_802BA370))) | 0x802BFB80 -[(.data_802BA370))](@ref (.data_802BA370))) | 0x00729A30 -[(.data_802BA370))](@ref (.data_802BA370))) | 0x00BE9160 -[(.textures_0a)](@ref (.textures_0a)) | 0x0A000000 -[__romPos](@ref __romPos) | 0x00729A30 [gTextureMarioFace00](@ref gTextureMarioFace00) | 0x0A000000 [gTextureMarioFace00_end](@ref gTextureMarioFace00_end) | 0x0A000CD4 [gTextureMarioFace01](@ref gTextureMarioFace01) | 0x0A000CD4 @@ -19878,12 +19630,6 @@ Variable Name | Memory Address [gTexture7FA194](@ref gTexture7FA194) | 0x0A0D0764 [gTexture7FA264](@ref gTexture7FA264) | 0x0A0D0834 [gTexture7FA334](@ref gTexture7FA334) | 0x0A0D0904 -[(0x10)](@ref (0x10)) | 0x0A0D0990 -[(.textures_0a))](@ref (.textures_0a))) | 0x0A0D0990 -[(.textures_0a))](@ref (.textures_0a))) | 0x007FA3C0 -[(.textures_0a))](@ref (.textures_0a))) | 0x00BE9160 -[(.textures_0b)](@ref (.textures_0b)) | 0x0B000000 -[__romPos](@ref __romPos) | 0x007FA3C0 [gTexturePlayerSelect](@ref gTexturePlayerSelect) | 0x0B000000 [gTexturePlayerSelect_end](@ref gTexturePlayerSelect_end) | 0x0B000C00 [gTextureOption](@ref gTextureOption) | 0x0B000C00 @@ -20010,256 +19756,27 @@ Variable Name | Memory Address [gTexturePinkBar_end](@ref gTexturePinkBar_end) | 0x0B026C00 [gTextureGoldBar](@ref gTextureGoldBar) | 0x0B026C00 [gTextureGoldBar_end](@ref gTextureGoldBar_end) | 0x0B027950 -[(0x10)](@ref (0x10)) | 0x0B027950 -[(.textures_0b))](@ref (.textures_0b))) | 0x0B027950 -[(.textures_0b))](@ref (.textures_0b))) | 0x00821D10 -[(.textures_0b))](@ref (.textures_0b))) | 0x00BE9160 -[(.data_821D10)](@ref (.data_821D10)) | 0x0B000000 -[__romPos](@ref __romPos) | 0x00821D10 [ceremony_data](@ref ceremony_data) | 0x0B000000 [data_821D10_end](@ref data_821D10_end) | 0x0B003AF0 -[(0x10)](@ref (0x10)) | 0x0B003AF0 -[(.data_821D10))](@ref (.data_821D10))) | 0x0B003AF0 -[(.data_821D10))](@ref (.data_821D10))) | 0x00825800 -[(.data_821D10))](@ref (.data_821D10))) | 0x00BE9160 -[(.data_825800)](@ref (.data_825800)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00825800 [startup_logo](@ref startup_logo) | 0x06000000 [data_825800_end](@ref data_825800_end) | 0x06002CD0 -[(0x10)](@ref (0x10)) | 0x06002CD0 -[(.data_825800))](@ref (.data_825800))) | 0x06002CD0 -[(.data_825800))](@ref (.data_825800))) | 0x008284D0 -[(.data_825800))](@ref (.data_825800))) | 0x00BE9160 -[(.course_mario_raceway_dl_mio0)](@ref (.course_mario_raceway_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x008284D0 -[0x00000000008284d0](@ref 0x00000000008284d0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06003150 -[(.course_mario_raceway_dl_mio0))](@ref (.course_mario_raceway_dl_mio0))) | 0x06003150 -[(.course_mario_raceway_dl_mio0))](@ref (.course_mario_raceway_dl_mio0))) | 0x0082B620 -[(.course_mario_raceway_dl_mio0))](@ref (.course_mario_raceway_dl_mio0))) | 0x00BE9160 -[(.course_choco_mountain_dl_mio0)](@ref (.course_choco_mountain_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x0082B620 -[0x000000000082b620](@ref 0x000000000082b620) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06002920 -[(.course_choco_mountain_dl_mio0))](@ref (.course_choco_mountain_dl_mio0))) | 0x06002920 -[(.course_choco_mountain_dl_mio0))](@ref (.course_choco_mountain_dl_mio0))) | 0x0082DF40 -[(.course_choco_mountain_dl_mio0))](@ref (.course_choco_mountain_dl_mio0))) | 0x00BE9160 -[(.course_bowsers_castle_dl_mio0)](@ref (.course_bowsers_castle_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x0082DF40 -[0x000000000082df40](@ref 0x000000000082df40) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06003E80 -[(.course_bowsers_castle_dl_mio0))](@ref (.course_bowsers_castle_dl_mio0))) | 0x06003E80 -[(.course_bowsers_castle_dl_mio0))](@ref (.course_bowsers_castle_dl_mio0))) | 0x00831DC0 -[(.course_bowsers_castle_dl_mio0))](@ref (.course_bowsers_castle_dl_mio0))) | 0x00BE9160 -[(.course_banshee_boardwalk_dl_mio0)](@ref (.course_banshee_boardwalk_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00831DC0 -[0x0000000000831dc0](@ref 0x0000000000831dc0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06003DE0 -[(.course_banshee_boardwalk_dl_mio0))](@ref (.course_banshee_boardwalk_dl_mio0))) | 0x06003DE0 -[(.course_banshee_boardwalk_dl_mio0))](@ref (.course_banshee_boardwalk_dl_mio0))) | 0x00835BA0 -[(.course_banshee_boardwalk_dl_mio0))](@ref (.course_banshee_boardwalk_dl_mio0))) | 0x00BE9160 -[(.course_yoshi_valley_dl_mio0)](@ref (.course_yoshi_valley_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00835BA0 -[0x0000000000835ba0](@ref 0x0000000000835ba0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06009BA0 -[(.course_yoshi_valley_dl_mio0))](@ref (.course_yoshi_valley_dl_mio0))) | 0x06009BA0 -[(.course_yoshi_valley_dl_mio0))](@ref (.course_yoshi_valley_dl_mio0))) | 0x0083F740 -[(.course_yoshi_valley_dl_mio0))](@ref (.course_yoshi_valley_dl_mio0))) | 0x00BE9160 -[(.course_frappe_snowland_dl_mio0)](@ref (.course_frappe_snowland_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x0083F740 -[0x000000000083f740](@ref 0x000000000083f740) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06003700 -[(.course_frappe_snowland_dl_mio0))](@ref (.course_frappe_snowland_dl_mio0))) | 0x06003700 -[(.course_frappe_snowland_dl_mio0))](@ref (.course_frappe_snowland_dl_mio0))) | 0x00842E40 -[(.course_frappe_snowland_dl_mio0))](@ref (.course_frappe_snowland_dl_mio0))) | 0x00BE9160 -[(.course_koopa_troopa_beach_dl_mio0)](@ref (.course_koopa_troopa_beach_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00842E40 -[0x0000000000842e40](@ref 0x0000000000842e40) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06007D90 -[(.course_koopa_troopa_beach_dl_mio0))](@ref (.course_koopa_troopa_beach_dl_mio0))) | 0x06007D90 -[(.course_koopa_troopa_beach_dl_mio0))](@ref (.course_koopa_troopa_beach_dl_mio0))) | 0x0084ABD0 -[(.course_koopa_troopa_beach_dl_mio0))](@ref (.course_koopa_troopa_beach_dl_mio0))) | 0x00BE9160 -[(.course_royal_raceway_dl_mio0)](@ref (.course_royal_raceway_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x0084ABD0 -[0x000000000084abd0](@ref 0x000000000084abd0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06003D10 -[(.course_royal_raceway_dl_mio0))](@ref (.course_royal_raceway_dl_mio0))) | 0x06003D10 -[(.course_royal_raceway_dl_mio0))](@ref (.course_royal_raceway_dl_mio0))) | 0x0084E8E0 -[(.course_royal_raceway_dl_mio0))](@ref (.course_royal_raceway_dl_mio0))) | 0x00BE9160 -[(.course_luigi_raceway_dl_mio0)](@ref (.course_luigi_raceway_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x0084E8E0 -[0x000000000084e8e0](@ref 0x000000000084e8e0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06004540 -[(.course_luigi_raceway_dl_mio0))](@ref (.course_luigi_raceway_dl_mio0))) | 0x06004540 -[(.course_luigi_raceway_dl_mio0))](@ref (.course_luigi_raceway_dl_mio0))) | 0x00852E20 -[(.course_luigi_raceway_dl_mio0))](@ref (.course_luigi_raceway_dl_mio0))) | 0x00BE9160 -[(.course_moo_moo_farm_dl_mio0)](@ref (.course_moo_moo_farm_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00852E20 -[0x0000000000852e20](@ref 0x0000000000852e20) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06005060 -[(.course_moo_moo_farm_dl_mio0))](@ref (.course_moo_moo_farm_dl_mio0))) | 0x06005060 -[(.course_moo_moo_farm_dl_mio0))](@ref (.course_moo_moo_farm_dl_mio0))) | 0x00857E80 -[(.course_moo_moo_farm_dl_mio0))](@ref (.course_moo_moo_farm_dl_mio0))) | 0x00BE9160 -[(.course_toads_turnpike_dl_mio0)](@ref (.course_toads_turnpike_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00857E80 -[0x0000000000857e80](@ref 0x0000000000857e80) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x0600E820 -[(.course_toads_turnpike_dl_mio0))](@ref (.course_toads_turnpike_dl_mio0))) | 0x0600E820 -[(.course_toads_turnpike_dl_mio0))](@ref (.course_toads_turnpike_dl_mio0))) | 0x008666A0 -[(.course_toads_turnpike_dl_mio0))](@ref (.course_toads_turnpike_dl_mio0))) | 0x00BE9160 -[(.course_kalimari_desert_dl_mio0)](@ref (.course_kalimari_desert_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x008666A0 -[0x00000000008666a0](@ref 0x00000000008666a0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06008650 -[(.course_kalimari_desert_dl_mio0))](@ref (.course_kalimari_desert_dl_mio0))) | 0x06008650 -[(.course_kalimari_desert_dl_mio0))](@ref (.course_kalimari_desert_dl_mio0))) | 0x0086ECF0 -[(.course_kalimari_desert_dl_mio0))](@ref (.course_kalimari_desert_dl_mio0))) | 0x00BE9160 -[(.course_sherbet_land_dl_mio0)](@ref (.course_sherbet_land_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x0086ECF0 -[0x000000000086ecf0](@ref 0x000000000086ecf0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06003D10 -[(.course_sherbet_land_dl_mio0))](@ref (.course_sherbet_land_dl_mio0))) | 0x06003D10 -[(.course_sherbet_land_dl_mio0))](@ref (.course_sherbet_land_dl_mio0))) | 0x00872A00 -[(.course_sherbet_land_dl_mio0))](@ref (.course_sherbet_land_dl_mio0))) | 0x00BE9160 -[(.course_rainbow_road_dl_mio0)](@ref (.course_rainbow_road_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00872A00 -[0x0000000000872a00](@ref 0x0000000000872a00) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x0600DAA0 -[(.course_rainbow_road_dl_mio0))](@ref (.course_rainbow_road_dl_mio0))) | 0x0600DAA0 -[(.course_rainbow_road_dl_mio0))](@ref (.course_rainbow_road_dl_mio0))) | 0x008804A0 -[(.course_rainbow_road_dl_mio0))](@ref (.course_rainbow_road_dl_mio0))) | 0x00BE9160 -[(.course_wario_stadium_dl_mio0)](@ref (.course_wario_stadium_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x008804A0 -[0x00000000008804a0](@ref 0x00000000008804a0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06005190 -[(.course_wario_stadium_dl_mio0))](@ref (.course_wario_stadium_dl_mio0))) | 0x06005190 -[(.course_wario_stadium_dl_mio0))](@ref (.course_wario_stadium_dl_mio0))) | 0x00885630 -[(.course_wario_stadium_dl_mio0))](@ref (.course_wario_stadium_dl_mio0))) | 0x00BE9160 -[(.course_block_fort_dl_mio0)](@ref (.course_block_fort_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00885630 -[0x0000000000885630](@ref 0x0000000000885630) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06000150 -[(.course_block_fort_dl_mio0))](@ref (.course_block_fort_dl_mio0))) | 0x06000150 -[(.course_block_fort_dl_mio0))](@ref (.course_block_fort_dl_mio0))) | 0x00885780 -[(.course_block_fort_dl_mio0))](@ref (.course_block_fort_dl_mio0))) | 0x00BE9160 -[(.course_skyscraper_dl_mio0)](@ref (.course_skyscraper_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00885780 -[0x0000000000885780](@ref 0x0000000000885780) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06000120 -[(.course_skyscraper_dl_mio0))](@ref (.course_skyscraper_dl_mio0))) | 0x06000120 -[(.course_skyscraper_dl_mio0))](@ref (.course_skyscraper_dl_mio0))) | 0x008858A0 -[(.course_skyscraper_dl_mio0))](@ref (.course_skyscraper_dl_mio0))) | 0x00BE9160 -[(.course_double_deck_dl_mio0)](@ref (.course_double_deck_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x008858A0 -[0x00000000008858a0](@ref 0x00000000008858a0) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06000170 -[(.course_double_deck_dl_mio0))](@ref (.course_double_deck_dl_mio0))) | 0x06000170 -[(.course_double_deck_dl_mio0))](@ref (.course_double_deck_dl_mio0))) | 0x00885A10 -[(.course_double_deck_dl_mio0))](@ref (.course_double_deck_dl_mio0))) | 0x00BE9160 -[(.course_dks_jungle_parkway_dl_mio0)](@ref (.course_dks_jungle_parkway_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x00885A10 -[0x0000000000885a10](@ref 0x0000000000885a10) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06007240 -[(.course_dks_jungle_parkway_dl_mio0))](@ref (.course_dks_jungle_parkway_dl_mio0))) | 0x06007240 -[(.course_dks_jungle_parkway_dl_mio0))](@ref (.course_dks_jungle_parkway_dl_mio0))) | 0x0088CC50 -[(.course_dks_jungle_parkway_dl_mio0))](@ref (.course_dks_jungle_parkway_dl_mio0))) | 0x00BE9160 -[(.course_big_donut_dl_mio0)](@ref (.course_big_donut_dl_mio0)) | 0x06000000 -[__romPos](@ref __romPos) | 0x0088CC50 -[0x000000000088cc50](@ref 0x000000000088cc50) | 0x06000000 -[(0x10)](@ref (0x10)) | 0x06000120 -[(.course_big_donut_dl_mio0))](@ref (.course_big_donut_dl_mio0))) | 0x06000120 -[(.course_big_donut_dl_mio0))](@ref (.course_big_donut_dl_mio0))) | 0x0088CD70 -[(.course_big_donut_dl_mio0))](@ref (.course_big_donut_dl_mio0))) | 0x00BE9160 -[(.course_mario_raceway_offsets)](@ref (.course_mario_raceway_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088CD70 -[0x000000000088cd70](@ref 0x000000000088cd70) | 0x09000000 [mario_raceway_textures](@ref mario_raceway_textures) | 0x09000000 [mario_raceway_dls](@ref mario_raceway_dls) | 0x090001F0 -[(0x10)](@ref (0x10)) | 0x09000300 -[(.course_mario_raceway_offsets))](@ref (.course_mario_raceway_offsets))) | 0x09000300 -[(.course_mario_raceway_offsets))](@ref (.course_mario_raceway_offsets))) | 0x0088D070 -[(.course_mario_raceway_offsets))](@ref (.course_mario_raceway_offsets))) | 0x00BE9160 -[(.course_choco_mountain_offsets)](@ref (.course_choco_mountain_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088D070 -[0x000000000088d070](@ref 0x000000000088d070) | 0x09000000 [choco_mountain_textures](@ref choco_mountain_textures) | 0x09000000 [choco_mountain_dls](@ref choco_mountain_dls) | 0x09000150 -[(0x10)](@ref (0x10)) | 0x090002D0 -[(.course_choco_mountain_offsets))](@ref (.course_choco_mountain_offsets))) | 0x090002D0 -[(.course_choco_mountain_offsets))](@ref (.course_choco_mountain_offsets))) | 0x0088D340 -[(.course_choco_mountain_offsets))](@ref (.course_choco_mountain_offsets))) | 0x00BE9160 -[(.course_bowsers_castle_offsets)](@ref (.course_bowsers_castle_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088D340 -[0x000000000088d340](@ref 0x000000000088d340) | 0x09000000 [bowsers_castle_textures](@ref bowsers_castle_textures) | 0x09000000 [bowsers_castle_dls](@ref bowsers_castle_dls) | 0x090001D0 -[(0x10)](@ref (0x10)) | 0x09000380 -[(.course_bowsers_castle_offsets))](@ref (.course_bowsers_castle_offsets))) | 0x09000380 -[(.course_bowsers_castle_offsets))](@ref (.course_bowsers_castle_offsets))) | 0x0088D6C0 -[(.course_bowsers_castle_offsets))](@ref (.course_bowsers_castle_offsets))) | 0x00BE9160 -[(.course_banshee_boardwalk_offsets)](@ref (.course_banshee_boardwalk_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088D6C0 -[0x000000000088d6c0](@ref 0x000000000088d6c0) | 0x09000000 [banshee_boardwalk_textures](@ref banshee_boardwalk_textures) | 0x09000000 [banshee_boardwalk_dls](@ref banshee_boardwalk_dls) | 0x09000170 -[(0x10)](@ref (0x10)) | 0x09000300 -[(.course_banshee_boardwalk_offsets))](@ref (.course_banshee_boardwalk_offsets))) | 0x09000300 -[(.course_banshee_boardwalk_offsets))](@ref (.course_banshee_boardwalk_offsets))) | 0x0088D9C0 -[(.course_banshee_boardwalk_offsets))](@ref (.course_banshee_boardwalk_offsets))) | 0x00BE9160 -[(.course_yoshi_valley_offsets)](@ref (.course_yoshi_valley_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088D9C0 -[0x000000000088d9c0](@ref 0x000000000088d9c0) | 0x09000000 [yoshi_valley_textures](@ref yoshi_valley_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x090000F0 -[(.course_yoshi_valley_offsets))](@ref (.course_yoshi_valley_offsets))) | 0x090000F0 -[(.course_yoshi_valley_offsets))](@ref (.course_yoshi_valley_offsets))) | 0x0088DAB0 -[(.course_yoshi_valley_offsets))](@ref (.course_yoshi_valley_offsets))) | 0x00BE9160 -[(.course_frappe_snowland_offsets)](@ref (.course_frappe_snowland_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088DAB0 -[0x000000000088dab0](@ref 0x000000000088dab0) | 0x09000000 [frappe_snowland_textures](@ref frappe_snowland_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x09000090 -[(.course_frappe_snowland_offsets))](@ref (.course_frappe_snowland_offsets))) | 0x09000090 -[(.course_frappe_snowland_offsets))](@ref (.course_frappe_snowland_offsets))) | 0x0088DB40 -[(.course_frappe_snowland_offsets))](@ref (.course_frappe_snowland_offsets))) | 0x00BE9160 -[(.course_koopa_troopa_beach_offsets)](@ref (.course_koopa_troopa_beach_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088DB40 -[0x000000000088db40](@ref 0x000000000088db40) | 0x09000000 [koopa_troopa_beach_textures](@ref koopa_troopa_beach_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x09000110 -[(.course_koopa_troopa_beach_offsets))](@ref (.course_koopa_troopa_beach_offsets))) | 0x09000110 -[(.course_koopa_troopa_beach_offsets))](@ref (.course_koopa_troopa_beach_offsets))) | 0x0088DC50 -[(.course_koopa_troopa_beach_offsets))](@ref (.course_koopa_troopa_beach_offsets))) | 0x00BE9160 -[(.course_royal_raceway_offsets)](@ref (.course_royal_raceway_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088DC50 -[0x000000000088dc50](@ref 0x000000000088dc50) | 0x09000000 [royal_raceway_textures](@ref royal_raceway_textures) | 0x09000000 [royal_raceway_dls](@ref royal_raceway_dls) | 0x090002C0 -[(0x10)](@ref (0x10)) | 0x090004D0 -[(.course_royal_raceway_offsets))](@ref (.course_royal_raceway_offsets))) | 0x090004D0 -[(.course_royal_raceway_offsets))](@ref (.course_royal_raceway_offsets))) | 0x0088E120 -[(.course_royal_raceway_offsets))](@ref (.course_royal_raceway_offsets))) | 0x00BE9160 -[(.course_luigi_raceway_offsets)](@ref (.course_luigi_raceway_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088E120 -[0x000000000088e120](@ref 0x000000000088e120) | 0x09000000 [luigi_raceway_textures](@ref luigi_raceway_textures) | 0x09000000 [luigi_raceway_dls](@ref luigi_raceway_dls) | 0x09000290 -[(0x10)](@ref (0x10)) | 0x09000470 -[(.course_luigi_raceway_offsets))](@ref (.course_luigi_raceway_offsets))) | 0x09000470 -[(.course_luigi_raceway_offsets))](@ref (.course_luigi_raceway_offsets))) | 0x0088E590 -[(.course_luigi_raceway_offsets))](@ref (.course_luigi_raceway_offsets))) | 0x00BE9160 -[(.course_moo_moo_farm_offsets)](@ref (.course_moo_moo_farm_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088E590 -[0x000000000088e590](@ref 0x000000000088e590) | 0x09000000 [moo_moo_farm_textures](@ref moo_moo_farm_textures) | 0x09000000 [moo_moo_farm_dls](@ref moo_moo_farm_dls) | 0x090001D0 -[(0x10)](@ref (0x10)) | 0x09000340 -[(.course_moo_moo_farm_offsets))](@ref (.course_moo_moo_farm_offsets))) | 0x09000340 -[(.course_moo_moo_farm_offsets))](@ref (.course_moo_moo_farm_offsets))) | 0x0088E8D0 -[(.course_moo_moo_farm_offsets))](@ref (.course_moo_moo_farm_offsets))) | 0x00BE9160 -[(.course_toads_turnpike_offsets)](@ref (.course_toads_turnpike_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088E8D0 -[0x000000000088e8d0](@ref 0x000000000088e8d0) | 0x09000000 [toads_turnpike_textures](@ref toads_turnpike_textures) | 0x09000000 [toads_turnpike_dl_0](@ref toads_turnpike_dl_0) | 0x09000140 [toads_turnpike_dl_1](@ref toads_turnpike_dl_1) | 0x09000178 @@ -20273,277 +19790,59 @@ Variable Name | Memory Address [toads_turnpike_dl_9](@ref toads_turnpike_dl_9) | 0x09000350 [toads_turnpike_dl_10](@ref toads_turnpike_dl_10) | 0x09000388 [toads_turnpike_dl_11](@ref toads_turnpike_dl_11) | 0x090003C0 -[(0x10)](@ref (0x10)) | 0x09000400 -[(.course_toads_turnpike_offsets))](@ref (.course_toads_turnpike_offsets))) | 0x09000400 -[(.course_toads_turnpike_offsets))](@ref (.course_toads_turnpike_offsets))) | 0x0088ECD0 -[(.course_toads_turnpike_offsets))](@ref (.course_toads_turnpike_offsets))) | 0x00BE9160 -[(.course_kalimari_desert_offsets)](@ref (.course_kalimari_desert_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088ECD0 -[0x000000000088ecd0](@ref 0x000000000088ecd0) | 0x09000000 [kalimari_desert_textures](@ref kalimari_desert_textures) | 0x09000000 [kalimari_desert_dls](@ref kalimari_desert_dls) | 0x090001A0 -[(0x10)](@ref (0x10)) | 0x090002E0 -[(.course_kalimari_desert_offsets))](@ref (.course_kalimari_desert_offsets))) | 0x090002E0 -[(.course_kalimari_desert_offsets))](@ref (.course_kalimari_desert_offsets))) | 0x0088EFB0 -[(.course_kalimari_desert_offsets))](@ref (.course_kalimari_desert_offsets))) | 0x00BE9160 -[(.course_sherbet_land_offsets)](@ref (.course_sherbet_land_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088EFB0 -[0x000000000088efb0](@ref 0x000000000088efb0) | 0x09000000 [sherbet_land_textures](@ref sherbet_land_textures) | 0x09000000 [sherbet_land_dls](@ref sherbet_land_dls) | 0x090000B0 [sherbet_land_dls_2](@ref sherbet_land_dls_2) | 0x090001D0 -[(0x10)](@ref (0x10)) | 0x090002F0 -[(.course_sherbet_land_offsets))](@ref (.course_sherbet_land_offsets))) | 0x090002F0 -[(.course_sherbet_land_offsets))](@ref (.course_sherbet_land_offsets))) | 0x0088F2A0 -[(.course_sherbet_land_offsets))](@ref (.course_sherbet_land_offsets))) | 0x00BE9160 -[(.course_rainbow_road_offsets)](@ref (.course_rainbow_road_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088F2A0 -[0x000000000088f2a0](@ref 0x000000000088f2a0) | 0x09000000 [rainbow_road_textures](@ref rainbow_road_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x09000060 -[(.course_rainbow_road_offsets))](@ref (.course_rainbow_road_offsets))) | 0x09000060 -[(.course_rainbow_road_offsets))](@ref (.course_rainbow_road_offsets))) | 0x0088F300 -[(.course_rainbow_road_offsets))](@ref (.course_rainbow_road_offsets))) | 0x00BE9160 -[(.course_wario_stadium_offsets)](@ref (.course_wario_stadium_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088F300 -[0x000000000088f300](@ref 0x000000000088f300) | 0x09000000 [wario_stadium_textures](@ref wario_stadium_textures) | 0x09000000 [wario_stadium_dls](@ref wario_stadium_dls) | 0x09000150 -[(0x10)](@ref (0x10)) | 0x09000300 -[(.course_wario_stadium_offsets))](@ref (.course_wario_stadium_offsets))) | 0x09000300 -[(.course_wario_stadium_offsets))](@ref (.course_wario_stadium_offsets))) | 0x0088F600 -[(.course_wario_stadium_offsets))](@ref (.course_wario_stadium_offsets))) | 0x00BE9160 -[(.course_block_fort_offsets)](@ref (.course_block_fort_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088F600 -[0x000000000088f600](@ref 0x000000000088f600) | 0x09000000 [block_fort_textures](@ref block_fort_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x09000080 -[(.course_block_fort_offsets))](@ref (.course_block_fort_offsets))) | 0x09000080 -[(.course_block_fort_offsets))](@ref (.course_block_fort_offsets))) | 0x0088F680 -[(.course_block_fort_offsets))](@ref (.course_block_fort_offsets))) | 0x00BE9160 -[(.course_skyscraper_offsets)](@ref (.course_skyscraper_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088F680 -[0x000000000088f680](@ref 0x000000000088f680) | 0x09000000 [skyscraper_textures](@ref skyscraper_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x09000180 -[(.course_skyscraper_offsets))](@ref (.course_skyscraper_offsets))) | 0x09000180 -[(.course_skyscraper_offsets))](@ref (.course_skyscraper_offsets))) | 0x0088F800 -[(.course_skyscraper_offsets))](@ref (.course_skyscraper_offsets))) | 0x00BE9160 -[(.course_double_deck_offsets)](@ref (.course_double_deck_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088F800 -[0x000000000088f800](@ref 0x000000000088f800) | 0x09000000 [double_deck_textures](@ref double_deck_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x09000030 -[(.course_double_deck_offsets))](@ref (.course_double_deck_offsets))) | 0x09000030 -[(.course_double_deck_offsets))](@ref (.course_double_deck_offsets))) | 0x0088F830 -[(.course_double_deck_offsets))](@ref (.course_double_deck_offsets))) | 0x00BE9160 -[(.course_dks_jungle_parkway_offsets)](@ref (.course_dks_jungle_parkway_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088F830 -[0x000000000088f830](@ref 0x000000000088f830) | 0x09000000 [dks_jungle_parkway_textures](@ref dks_jungle_parkway_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x09000190 -[(.course_dks_jungle_parkway_offsets))](@ref (.course_dks_jungle_parkway_offsets))) | 0x09000190 -[(.course_dks_jungle_parkway_offsets))](@ref (.course_dks_jungle_parkway_offsets))) | 0x0088F9C0 -[(.course_dks_jungle_parkway_offsets))](@ref (.course_dks_jungle_parkway_offsets))) | 0x00BE9160 -[(.course_big_donut_offsets)](@ref (.course_big_donut_offsets)) | 0x09000000 -[__romPos](@ref __romPos) | 0x0088F9C0 -[0x000000000088f9c0](@ref 0x000000000088f9c0) | 0x09000000 [big_donut_textures](@ref big_donut_textures) | 0x09000000 -[(0x10)](@ref (0x10)) | 0x09000050 -[(.course_big_donut_offsets))](@ref (.course_big_donut_offsets))) | 0x09000050 -[(.course_big_donut_offsets))](@ref (.course_big_donut_offsets))) | 0x0088FA10 -[(.course_big_donut_offsets))](@ref (.course_big_donut_offsets))) | 0x00BE9160 -[(.mario_raceway_vertex)](@ref (.mario_raceway_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x0088FA10 -[0x000000000088fa10](@ref 0x000000000088fa10) | 0x0F000000 [d_course_mario_raceway_vertex](@ref d_course_mario_raceway_vertex) | 0x0F000000 [d_course_mario_raceway_packed](@ref d_course_mario_raceway_packed) | 0x0F0096F4 -[(0x10)](@ref (0x10)) | 0x0F00BB00 -[(.mario_raceway_vertex))](@ref (.mario_raceway_vertex))) | 0x0F00BB00 -[(.mario_raceway_vertex))](@ref (.mario_raceway_vertex))) | 0x0089B510 -[(.mario_raceway_vertex))](@ref (.mario_raceway_vertex))) | 0x00BE9160 -[(.choco_mountain_vertex)](@ref (.choco_mountain_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x0089B510 -[0x000000000089b510](@ref 0x000000000089b510) | 0x0F000000 [d_course_choco_mountain_vertex](@ref d_course_choco_mountain_vertex) | 0x0F000000 [d_course_choco_mountain_packed](@ref d_course_choco_mountain_packed) | 0x0F00A0B4 -[(0x10)](@ref (0x10)) | 0x0F00C130 -[(.choco_mountain_vertex))](@ref (.choco_mountain_vertex))) | 0x0F00C130 -[(.choco_mountain_vertex))](@ref (.choco_mountain_vertex))) | 0x008A7640 -[(.choco_mountain_vertex))](@ref (.choco_mountain_vertex))) | 0x00BE9160 -[(.bowsers_castle_vertex)](@ref (.bowsers_castle_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x008A7640 -[0x00000000008a7640](@ref 0x00000000008a7640) | 0x0F000000 [d_course_bowsers_castle_vertex](@ref d_course_bowsers_castle_vertex) | 0x0F000000 [d_course_bowsers_castle_packed](@ref d_course_bowsers_castle_packed) | 0x0F00E368 -[(0x10)](@ref (0x10)) | 0x0F011FF0 -[(.bowsers_castle_vertex))](@ref (.bowsers_castle_vertex))) | 0x0F011FF0 -[(.bowsers_castle_vertex))](@ref (.bowsers_castle_vertex))) | 0x008B9630 -[(.bowsers_castle_vertex))](@ref (.bowsers_castle_vertex))) | 0x00BE9160 -[(.banshee_boardwalk_vertex)](@ref (.banshee_boardwalk_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x008B9630 -[0x00000000008b9630](@ref 0x00000000008b9630) | 0x0F000000 [d_course_banshee_boardwalk_vertex](@ref d_course_banshee_boardwalk_vertex) | 0x0F000000 [d_course_banshee_boardwalk_packed](@ref d_course_banshee_boardwalk_packed) | 0x0F0068E8 -[(0x10)](@ref (0x10)) | 0x0F008EE0 -[(.banshee_boardwalk_vertex))](@ref (.banshee_boardwalk_vertex))) | 0x0F008EE0 -[(.banshee_boardwalk_vertex))](@ref (.banshee_boardwalk_vertex))) | 0x008C2510 -[(.banshee_boardwalk_vertex))](@ref (.banshee_boardwalk_vertex))) | 0x00BE9160 -[(.yoshi_valley_vertex)](@ref (.yoshi_valley_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x008C2510 -[0x00000000008c2510](@ref 0x00000000008c2510) | 0x0F000000 [d_course_yoshi_valley_vertex](@ref d_course_yoshi_valley_vertex) | 0x0F000000 [d_course_yoshi_valley_packed](@ref d_course_yoshi_valley_packed) | 0x0F007D90 -[(0x10)](@ref (0x10)) | 0x0F00A3F0 -[(.yoshi_valley_vertex))](@ref (.yoshi_valley_vertex))) | 0x0F00A3F0 -[(.yoshi_valley_vertex))](@ref (.yoshi_valley_vertex))) | 0x008CC900 -[(.yoshi_valley_vertex))](@ref (.yoshi_valley_vertex))) | 0x00BE9160 -[(.frappe_snowland_vertex)](@ref (.frappe_snowland_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x008CC900 -[0x00000000008cc900](@ref 0x00000000008cc900) | 0x0F000000 [d_course_frappe_snowland_vertex](@ref d_course_frappe_snowland_vertex) | 0x0F000000 [d_course_frappe_snowland_packed](@ref d_course_frappe_snowland_packed) | 0x0F009D24 -[(0x10)](@ref (0x10)) | 0x0F00C550 -[(.frappe_snowland_vertex))](@ref (.frappe_snowland_vertex))) | 0x0F00C550 -[(.frappe_snowland_vertex))](@ref (.frappe_snowland_vertex))) | 0x008D8E50 -[(.frappe_snowland_vertex))](@ref (.frappe_snowland_vertex))) | 0x00BE9160 -[(.koopa_troopa_beach_vertex)](@ref (.koopa_troopa_beach_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x008D8E50 -[0x00000000008d8e50](@ref 0x00000000008d8e50) | 0x0F000000 [d_course_koopa_troopa_beach_vertex](@ref d_course_koopa_troopa_beach_vertex) | 0x0F000000 [d_course_koopa_troopa_beach_packed](@ref d_course_koopa_troopa_beach_packed) | 0x0F00FD78 -[(0x10)](@ref (0x10)) | 0x0F013540 -[(.koopa_troopa_beach_vertex))](@ref (.koopa_troopa_beach_vertex))) | 0x0F013540 -[(.koopa_troopa_beach_vertex))](@ref (.koopa_troopa_beach_vertex))) | 0x008EC390 -[(.koopa_troopa_beach_vertex))](@ref (.koopa_troopa_beach_vertex))) | 0x00BE9160 -[(.royal_raceway_vertex)](@ref (.royal_raceway_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x008EC390 -[0x00000000008ec390](@ref 0x00000000008ec390) | 0x0F000000 [d_course_royal_raceway_vertex](@ref d_course_royal_raceway_vertex) | 0x0F000000 [d_course_royal_raceway_packed](@ref d_course_royal_raceway_packed) | 0x0F00EC60 -[(0x10)](@ref (0x10)) | 0x0F0122B0 -[(.royal_raceway_vertex))](@ref (.royal_raceway_vertex))) | 0x0F0122B0 -[(.royal_raceway_vertex))](@ref (.royal_raceway_vertex))) | 0x008FE640 -[(.royal_raceway_vertex))](@ref (.royal_raceway_vertex))) | 0x00BE9160 -[(.luigi_raceway_vertex)](@ref (.luigi_raceway_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x008FE640 -[0x00000000008fe640](@ref 0x00000000008fe640) | 0x0F000000 [d_course_luigi_raceway_vertex](@ref d_course_luigi_raceway_vertex) | 0x0F000000 [d_course_luigi_raceway_packed](@ref d_course_luigi_raceway_packed) | 0x0F009800 -[(0x10)](@ref (0x10)) | 0x0F00CDA0 -[(.luigi_raceway_vertex))](@ref (.luigi_raceway_vertex))) | 0x0F00CDA0 -[(.luigi_raceway_vertex))](@ref (.luigi_raceway_vertex))) | 0x0090B3E0 -[(.luigi_raceway_vertex))](@ref (.luigi_raceway_vertex))) | 0x00BE9160 -[(.moo_moo_farm_vertex)](@ref (.moo_moo_farm_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x0090B3E0 -[0x000000000090b3e0](@ref 0x000000000090b3e0) | 0x0F000000 [d_course_moo_moo_farm_vertex](@ref d_course_moo_moo_farm_vertex) | 0x0F000000 [d_course_moo_moo_farm_packed](@ref d_course_moo_moo_farm_packed) | 0x0F00DAEC -[(0x10)](@ref (0x10)) | 0x0F0105A0 -[(.moo_moo_farm_vertex))](@ref (.moo_moo_farm_vertex))) | 0x0F0105A0 -[(.moo_moo_farm_vertex))](@ref (.moo_moo_farm_vertex))) | 0x0091B980 -[(.moo_moo_farm_vertex))](@ref (.moo_moo_farm_vertex))) | 0x00BE9160 -[(.toads_turnpike_vertex)](@ref (.toads_turnpike_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x0091B980 -[0x000000000091b980](@ref 0x000000000091b980) | 0x0F000000 [d_course_toads_turnpike_vertex](@ref d_course_toads_turnpike_vertex) | 0x0F000000 [d_course_toads_turnpike_packed](@ref d_course_toads_turnpike_packed) | 0x0F00A5D0 -[(0x10)](@ref (0x10)) | 0x0F00D2F0 -[(.toads_turnpike_vertex))](@ref (.toads_turnpike_vertex))) | 0x0F00D2F0 -[(.toads_turnpike_vertex))](@ref (.toads_turnpike_vertex))) | 0x00928C70 -[(.toads_turnpike_vertex))](@ref (.toads_turnpike_vertex))) | 0x00BE9160 -[(.kalimari_desert_vertex)](@ref (.kalimari_desert_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00928C70 -[0x0000000000928c70](@ref 0x0000000000928c70) | 0x0F000000 [d_course_kalimari_desert_vertex](@ref d_course_kalimari_desert_vertex) | 0x0F000000 [d_course_kalimari_desert_packed](@ref d_course_kalimari_desert_packed) | 0x0F00B394 -[(0x10)](@ref (0x10)) | 0x0F00E360 -[(.kalimari_desert_vertex))](@ref (.kalimari_desert_vertex))) | 0x0F00E360 -[(.kalimari_desert_vertex))](@ref (.kalimari_desert_vertex))) | 0x00936FD0 -[(.kalimari_desert_vertex))](@ref (.kalimari_desert_vertex))) | 0x00BE9160 -[(.sherbet_land_vertex)](@ref (.sherbet_land_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00936FD0 -[0x0000000000936fd0](@ref 0x0000000000936fd0) | 0x0F000000 [d_course_sherbet_land_vertex](@ref d_course_sherbet_land_vertex) | 0x0F000000 [d_course_sherbet_land_packed](@ref d_course_sherbet_land_packed) | 0x0F0049F8 -[(0x10)](@ref (0x10)) | 0x0F005C90 -[(.sherbet_land_vertex))](@ref (.sherbet_land_vertex))) | 0x0F005C90 -[(.sherbet_land_vertex))](@ref (.sherbet_land_vertex))) | 0x0093CC60 -[(.sherbet_land_vertex))](@ref (.sherbet_land_vertex))) | 0x00BE9160 -[(.rainbow_road_vertex)](@ref (.rainbow_road_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x0093CC60 -[0x000000000093cc60](@ref 0x000000000093cc60) | 0x0F000000 [d_course_rainbow_road_vertex](@ref d_course_rainbow_road_vertex) | 0x0F000000 [d_course_rainbow_road_packed](@ref d_course_rainbow_road_packed) | 0x0F005A5C -[(0x10)](@ref (0x10)) | 0x0F006C60 -[(.rainbow_road_vertex))](@ref (.rainbow_road_vertex))) | 0x0F006C60 -[(.rainbow_road_vertex))](@ref (.rainbow_road_vertex))) | 0x009438C0 -[(.rainbow_road_vertex))](@ref (.rainbow_road_vertex))) | 0x00BE9160 -[(.wario_stadium_vertex)](@ref (.wario_stadium_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x009438C0 -[0x00000000009438c0](@ref 0x00000000009438c0) | 0x0F000000 [d_course_wario_stadium_vertex](@ref d_course_wario_stadium_vertex) | 0x0F000000 [d_course_wario_stadium_packed](@ref d_course_wario_stadium_packed) | 0x0F00A9CC -[(0x10)](@ref (0x10)) | 0x0F00DEC0 -[(.wario_stadium_vertex))](@ref (.wario_stadium_vertex))) | 0x0F00DEC0 -[(.wario_stadium_vertex))](@ref (.wario_stadium_vertex))) | 0x00951780 -[(.wario_stadium_vertex))](@ref (.wario_stadium_vertex))) | 0x00BE9160 -[(.block_fort_vertex)](@ref (.block_fort_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00951780 -[0x0000000000951780](@ref 0x0000000000951780) | 0x0F000000 [d_course_block_fort_vertex](@ref d_course_block_fort_vertex) | 0x0F000000 [d_course_block_fort_packed](@ref d_course_block_fort_packed) | 0x0F0018D8 -[(0x10)](@ref (0x10)) | 0x0F002110 -[(.block_fort_vertex))](@ref (.block_fort_vertex))) | 0x0F002110 -[(.block_fort_vertex))](@ref (.block_fort_vertex))) | 0x00953890 -[(.block_fort_vertex))](@ref (.block_fort_vertex))) | 0x00BE9160 -[(.skyscraper_vertex)](@ref (.skyscraper_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00953890 -[0x0000000000953890](@ref 0x0000000000953890) | 0x0F000000 [d_course_skyscraper_vertex](@ref d_course_skyscraper_vertex) | 0x0F000000 [d_course_skyscraper_packed](@ref d_course_skyscraper_packed) | 0x0F001678 -[(0x10)](@ref (0x10)) | 0x0F001D90 -[(.skyscraper_vertex))](@ref (.skyscraper_vertex))) | 0x0F001D90 -[(.skyscraper_vertex))](@ref (.skyscraper_vertex))) | 0x00955620 -[(.skyscraper_vertex))](@ref (.skyscraper_vertex))) | 0x00BE9160 -[(.double_deck_vertex)](@ref (.double_deck_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00955620 -[0x0000000000955620](@ref 0x0000000000955620) | 0x0F000000 [d_course_double_deck_vertex](@ref d_course_double_deck_vertex) | 0x0F000000 [d_course_double_deck_packed](@ref d_course_double_deck_packed) | 0x0F000CD4 -[(0x10)](@ref (0x10)) | 0x0F001050 -[(.double_deck_vertex))](@ref (.double_deck_vertex))) | 0x0F001050 -[(.double_deck_vertex))](@ref (.double_deck_vertex))) | 0x00956670 -[(.double_deck_vertex))](@ref (.double_deck_vertex))) | 0x00BE9160 -[(.dks_jungle_parkway_vertex)](@ref (.dks_jungle_parkway_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00956670 -[0x0000000000956670](@ref 0x0000000000956670) | 0x0F000000 [d_course_dks_jungle_parkway_vertex](@ref d_course_dks_jungle_parkway_vertex) | 0x0F000000 [d_course_dks_jungle_parkway_packed](@ref d_course_dks_jungle_parkway_packed) | 0x0F00A45C -[(0x10)](@ref (0x10)) | 0x0F00D880 -[(.dks_jungle_parkway_vertex))](@ref (.dks_jungle_parkway_vertex))) | 0x0F00D880 -[(.dks_jungle_parkway_vertex))](@ref (.dks_jungle_parkway_vertex))) | 0x00963EF0 -[(.dks_jungle_parkway_vertex))](@ref (.dks_jungle_parkway_vertex))) | 0x00BE9160 -[(.big_donut_vertex)](@ref (.big_donut_vertex)) | 0x0F000000 -[__romPos](@ref __romPos) | 0x00963EF0 -[0x0000000000963ef0](@ref 0x0000000000963ef0) | 0x0F000000 [d_course_big_donut_vertex](@ref d_course_big_donut_vertex) | 0x0F000000 [d_course_big_donut_packed](@ref d_course_big_donut_packed) | 0x0F001B84 -[(0x10)](@ref (0x10)) | 0x0F002370 -[(.big_donut_vertex))](@ref (.big_donut_vertex))) | 0x0F002370 -[(.big_donut_vertex))](@ref (.big_donut_vertex))) | 0x00966260 -[(.big_donut_vertex))](@ref (.big_donut_vertex))) | 0x00BE9160 -[__romPos](@ref __romPos) | 0x00966260 -[(.audio_banks))](@ref (.audio_banks))) | 0x00013840 -[(.audio_banks))](@ref (.audio_banks))) | 0x00979AA0 -[(.audio_banks))](@ref (.audio_banks))) | 0x00BE9160 -[(.audio_tables)](@ref (.audio_tables)) | 0x00013840 -[__romPos](@ref __romPos) | 0x00979AA0 -[(.audio_tables))](@ref (.audio_tables))) | 0x0025FD00 -[(.audio_tables))](@ref (.audio_tables))) | 0x00BC5F60 -[(.audio_tables))](@ref (.audio_tables))) | 0x00BE9160 -[(.sequences)](@ref (.sequences)) | 0x0025FD00 -[__romPos](@ref __romPos) | 0x00BC5F60 [music_sequence_table_header](@ref music_sequence_table_header) | 0x0025FD00 [music_sequence_table](@ref music_sequence_table) | 0x0025FD04 [music_sequence_table_end](@ref music_sequence_table_end) | 0x0025FE00 @@ -20607,16 +19906,7 @@ Variable Name | Memory Address [seq_1D](@ref seq_1D) | 0x002821F0 [seq_1C_end](@ref seq_1C_end) | 0x002821F0 [seq_1D_end](@ref seq_1D_end) | 0x00282E70 -[(.sequences))](@ref (.sequences))) | 0x00282E80 -[(.sequences))](@ref (.sequences))) | 0x00BE90E0 -[(.sequences))](@ref (.sequences))) | 0x00BE9160 -[(.instrument_sets)](@ref (.instrument_sets)) | 0x00282E80 -[__romPos](@ref __romPos) | 0x00BE90E0 -[0x0000000000be90e0](@ref 0x0000000000be90e0) | 0x00282E80 [instrument_sets](@ref instrument_sets) | 0x00282E80 -[(.instrument_sets))](@ref (.instrument_sets))) | 0x00282F00 -[(.instrument_sets))](@ref (.instrument_sets))) | 0x00BE9160 -[(.instrument_sets))](@ref (.instrument_sets))) | 0x00BE9160 Note: This information is generated during the compilation process.