Update decomp clang (#67)
* Update menus.c (#634) * Update common_data.yml (#635) * Renames for screenId and other changes (#636) * screenId renames * Rename surface map to collision mesh (#637) * Rename some stack vars (#638) * Fix syntax error (#639) * Rename some stack vars * Update collision.c * Collision Documentation (#640) * Collision related renames * update doxygen (#649) * change bool (#644) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * Update (#642) * Delete trig_tables_bss.c (#650) * fix typo audio (#656) * fix typo src actor (#657) Co-authored-by: MegaMech <MegaMech@users.noreply.github.com> * fix typo include (#658) * fix course (#659) * fix typo debug (#660) * fix typo data (#661) * replace number with const (#665) * fix typo buffers (#655) * fix typo buffers * tweak ld file * rename to sMemoryPool * add a warning --------- * fix typo src (#654) * fix typo src * fix non matcing * Update code_80091750.c --------- * fix typo racing (#653) * fix typo racing * get it match * replace G_LINE3D to G_QUAD --------- * fix typo src (#652) * fix ending typo (#651) * Action more info when it doesn't match and fix first diff (#662) * Update linux-compile.yml * fix first-diff * Update first-diff.py --------- * document texture of kart (#663) * document texture of kart * change screenPlayerId to screenId * some documentation around object * Revert "some documentation around object" This reverts commit cbb39078e036bf2a417bed67359e910213acab28. * more rename --------- * Make evaluate_collision_players_palm_tree better (#667) This matches just the same as before, but using those two casts instead of shifts seems more likely to be accurate to the original source code Signed-off-by: Gabriel Ravier <gabravier@gmail.com> * add fedora instruciton (#666) * start documenting animation (#668) * start documenting animation * Update course_data.c * change comment * update libultra asm (#648) * update libultra asm * fix gcc __osThreadTail --------- * Document Vehicles (#641) * start doc collision * fix merge * finish rename fonction related to vehicle * document around waypoint of vehicle * make some modification * make some change and rename one * copy_ to oldPos * doc smoke ferry and train * some rename * fix some renaming * precise index * rename a funciton * simplify waypoint_vehicles * change some name * change some name * rename move_to_point_direction * fix some conflict * Update code_80005FD0.c * Update code_80005FD0.h --------- * Label a save info loop (#645) * save info * more gcc progress * fix a value and do a rename (#669) * update clang and add action (#664) * update clang and add action * try clang on course folder only * forget two file * Update course_displaylists.inc.c * forget few other file * Update course_vertices.inc.c * format all code while get it match * second pass * format other dir * disable clang format on bad ido code * fix some tabulation * revert format on tool dir * Update clang-format.yml * ignore gbi.h * add some read me instruction * fix error * format and fixing error * Update README.md --------- * Update linkonly_generator.py (#670) * format more file * update * fix compilation issue * remove course_metadata folder * re add course metadata folder * fix banshee bordwalk crash * fix windows eurk * Update CMakeLists.txt ---------
This commit is contained in:
parent
bb3cbe0500
commit
a1f0d32d66
|
|
@ -1,18 +1,23 @@
|
|||
IndentWidth: 4
|
||||
Language: Cpp
|
||||
AlignAfterOpenBracket: Align
|
||||
SortIncludes: false
|
||||
ColumnLimit: 104
|
||||
PointerAlignment: Right
|
||||
AllowShortFunctionsOnASingleLine: false
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
SpaceAfterCStyleCast: true
|
||||
UseTab: Never
|
||||
ColumnLimit: 120
|
||||
PointerAlignment: Left
|
||||
BreakBeforeBraces: Attach
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakBeforeBinaryOperators: NonAssignment
|
||||
SpaceAfterCStyleCast: true
|
||||
Cpp11BracedListStyle: false
|
||||
IndentCaseLabels: true
|
||||
BinPackArguments: true
|
||||
BinPackParameters: true
|
||||
AlignAfterOpenBracket: Align
|
||||
AlignOperands: true
|
||||
BreakBeforeTernaryOperators: true
|
||||
BreakBeforeBinaryOperators: None
|
||||
AllowShortBlocksOnASingleLine: true
|
||||
AllowShortIfStatementsOnASingleLine: false
|
||||
AllowShortLoopsOnASingleLine: false
|
||||
AllowShortCaseLabelsOnASingleLine: false
|
||||
AllowShortFunctionsOnASingleLine: false
|
||||
AlignEscapedNewlines: Left
|
||||
AlignTrailingComments: true
|
||||
UseTab: Never
|
||||
SortIncludes: false
|
||||
|
|
|
|||
|
|
@ -1,6 +1,9 @@
|
|||
---
|
||||
Checks: '-*,readability-braces-around-statements'
|
||||
Checks: '-*,readability-braces-around-statements,readability-inconsistent-declaration-parameter-name'
|
||||
WarningsAsErrors: ''
|
||||
HeaderFilterRegex: '(src|include|enhancements)\/.*\.h$'
|
||||
HeaderFilterRegex: '(src|include)\/.*\.h$'
|
||||
FormatStyle: 'file'
|
||||
CheckOptions:
|
||||
# Require argument names to match exactly (instead of allowing a name to be a prefix/suffix of another)
|
||||
# Note: 'true' is expected by clang-tidy 12+ but '1' is used for compatibility with older versions
|
||||
- key: readability-inconsistent-declaration-parameter-name.Strict
|
||||
value: 1
|
||||
|
|
|
|||
|
|
@ -0,0 +1,21 @@
|
|||
name: clang-format Check
|
||||
on: [push, pull_request]
|
||||
jobs:
|
||||
formatting-check:
|
||||
name: Formatting Check
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
matrix:
|
||||
path:
|
||||
- include
|
||||
- data
|
||||
- courses
|
||||
- src
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Run clang-format style check for C/C++/Protobuf programs.
|
||||
uses: jidicula/clang-format-action@v4.13.0
|
||||
with:
|
||||
clang-format-version: "18"
|
||||
check-path: ${{ matrix.path }}
|
||||
exclude-regex: "gbi.h"
|
||||
3
Makefile
3
Makefile
|
|
@ -434,6 +434,9 @@ doc:
|
|||
@$(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"
|
||||
|
||||
format:
|
||||
@$(PYTHON) $(TOOLS_DIR)/format.py -j $(N_THREADS)
|
||||
|
||||
clean:
|
||||
$(RM) -r $(BUILD_DIR)
|
||||
|
||||
|
|
|
|||
|
|
@ -95,6 +95,7 @@ Documentation generated using [Doxygen](https://www.doxygen.nl/index.html). Run
|
|||
|
||||
Pull requests are welcome. For major changes, please discuss in the Discord.
|
||||
|
||||
Run `clang-format` on your code to ensure it meets the project's coding standards.
|
||||
Run `make format` to ensure it meets the project's coding standards.
|
||||
If code needs to avoid formatting place `// clang-format off` before the code and `// clang-format on` after.
|
||||
|
||||
Official Discord: [discord.gg/DuYH3Fh](https://discord.gg/DuYH3Fh)
|
||||
|
|
|
|||
|
|
@ -25,5 +25,4 @@
|
|||
#include <assets/block_fort_data.h>
|
||||
#include <assets/double_deck_data.h>
|
||||
|
||||
|
||||
#endif // ALL_COURSE_DATA_H
|
||||
|
|
|
|||
|
|
@ -32,24 +32,25 @@
|
|||
#include <assets/sherbet_land_vertices.h>
|
||||
#include <assets/rainbow_road_vertices.h>
|
||||
|
||||
#define d_course_big_donut_vertex_count ARRAY_COUNT(d_course_big_donut_vertex)
|
||||
#define d_course_block_fort_vertex_count ARRAY_COUNT(d_course_block_fort_vertex)
|
||||
#define d_course_double_deck_vertex_count ARRAY_COUNT(d_course_double_deck_vertex)
|
||||
#define d_course_skyscraper_vertex_count ARRAY_COUNT(d_course_skyscraper_vertex)
|
||||
#define d_course_choco_mountain_vertex_count ARRAY_COUNT(d_course_choco_mountain_vertex)
|
||||
#define d_course_frappe_snowland_vertex_count ARRAY_COUNT(d_course_frappe_snowland_vertex)
|
||||
#define d_course_toads_turnpike_vertex_count ARRAY_COUNT(d_course_toads_turnpike_vertex)
|
||||
#define d_course_kalimari_desert_vertex_count ARRAY_COUNT(d_course_kalimari_desert_vertex)
|
||||
#define d_course_big_donut_vertex_count ARRAY_COUNT(d_course_big_donut_vertex)
|
||||
#define d_course_block_fort_vertex_count ARRAY_COUNT(d_course_block_fort_vertex)
|
||||
#define d_course_double_deck_vertex_count ARRAY_COUNT(d_course_double_deck_vertex)
|
||||
#define d_course_skyscraper_vertex_count ARRAY_COUNT(d_course_skyscraper_vertex)
|
||||
#define d_course_choco_mountain_vertex_count ARRAY_COUNT(d_course_choco_mountain_vertex)
|
||||
#define d_course_frappe_snowland_vertex_count ARRAY_COUNT(d_course_frappe_snowland_vertex)
|
||||
#define d_course_mario_raceway_vertex_count ARRAY_COUNT(d_course_mario_raceway_vertex)
|
||||
#define d_course_toads_turnpike_vertex_count ARRAY_COUNT(d_course_toads_turnpike_vertex)
|
||||
#define d_course_kalimari_desert_vertex_count ARRAY_COUNT(d_course_kalimari_desert_vertex)
|
||||
#define d_course_koopa_troopa_beach_vertex_count ARRAY_COUNT(d_course_koopa_troopa_beach_vertex)
|
||||
#define d_course_luigi_raceway_vertex_count ARRAY_COUNT(d_course_luigi_raceway_vertex)
|
||||
#define d_course_moo_moo_farm_vertex_count ARRAY_COUNT(d_course_moo_moo_farm_vertex)
|
||||
#define d_course_banshee_boardwalk_vertex_count ARRAY_COUNT(d_course_banshee_boardwalk_vertex)
|
||||
#define d_course_luigi_raceway_vertex_count ARRAY_COUNT(d_course_luigi_raceway_vertex)
|
||||
#define d_course_moo_moo_farm_vertex_count ARRAY_COUNT(d_course_moo_moo_farm_vertex)
|
||||
#define d_course_banshee_boardwalk_vertex_count ARRAY_COUNT(d_course_banshee_boardwalk_vertex)
|
||||
#define d_course_dks_jungle_parkway_vertex_count ARRAY_COUNT(d_course_dks_jungle_parkway_vertex)
|
||||
#define d_course_rainbow_road_vertex_count ARRAY_COUNT(d_course_rainbow_road_vertex)
|
||||
#define d_course_yoshi_valley_vertex_count ARRAY_COUNT(d_course_yoshi_valley_vertex)
|
||||
#define d_course_bowsers_castle_vertex_count ARRAY_COUNT(d_course_bowsers_castle_vertex)
|
||||
#define d_course_royal_raceway_vertex_count ARRAY_COUNT(d_course_royal_raceway_vertex)
|
||||
#define d_course_sherbet_land_vertex_count ARRAY_COUNT(d_course_sherbet_land_vertex)
|
||||
#define d_course_wario_stadium_vertex_count ARRAY_COUNT(d_course_wario_stadium_vertex)
|
||||
#define d_course_rainbow_road_vertex_count ARRAY_COUNT(d_course_rainbow_road_vertex)
|
||||
#define d_course_yoshi_valley_vertex_count ARRAY_COUNT(d_course_yoshi_valley_vertex)
|
||||
#define d_course_bowsers_castle_vertex_count ARRAY_COUNT(d_course_bowsers_castle_vertex)
|
||||
#define d_course_royal_raceway_vertex_count ARRAY_COUNT(d_course_royal_raceway_vertex)
|
||||
#define d_course_sherbet_land_vertex_count ARRAY_COUNT(d_course_sherbet_land_vertex)
|
||||
#define d_course_wario_stadium_vertex_count ARRAY_COUNT(d_course_wario_stadium_vertex)
|
||||
|
||||
#endif // ALL_COURSE_MODEL_H
|
||||
|
|
|
|||
|
|
@ -3,22 +3,22 @@
|
|||
|
||||
#include "course_offsets.h"
|
||||
|
||||
extern Gfx *rainbow_road_dls[];
|
||||
extern Gfx *yoshi_valley_dls[];
|
||||
extern Gfx *toads_turnpike_dls[];
|
||||
extern Gfx *banshee_boardwalk_dls[];
|
||||
extern Gfx *frappe_snowland_dls[];
|
||||
extern Gfx *bowsers_castle_dls[];
|
||||
extern Gfx *choco_mountain_dls[];
|
||||
extern const char *kalimari_desert_dls[];
|
||||
extern const char *luigi_raceway_dls[];
|
||||
extern const char *mario_raceway_dls[];
|
||||
extern Gfx *moo_moo_farm_dls[];
|
||||
extern const char *royal_raceway_dls[];
|
||||
extern Gfx *sherbet_land_dls[];
|
||||
extern Gfx *sherbet_land_dls_2[];
|
||||
extern Gfx *wario_stadium_dls[];
|
||||
extern const char *dks_jungle_parkway_dls[];
|
||||
extern const char* rainbow_road_dls[];
|
||||
extern const char* yoshi_valley_dls[];
|
||||
extern const char* toads_turnpike_dls[];
|
||||
extern const char* banshee_boardwalk_dls[];
|
||||
extern const char* frappe_snowland_dls[];
|
||||
extern const char* bowsers_castle_dls[];
|
||||
extern const char* choco_mountain_dls[];
|
||||
extern const char* kalimari_desert_dls[];
|
||||
extern const char* luigi_raceway_dls[];
|
||||
extern const char* mario_raceway_dls[];
|
||||
extern const char* moo_moo_farm_dls[];
|
||||
extern const char* royal_raceway_dls[];
|
||||
extern const char* sherbet_land_dls[];
|
||||
extern const char* sherbet_land_dls_2[];
|
||||
extern const char* wario_stadium_dls[];
|
||||
extern const char* dks_jungle_parkway_dls[];
|
||||
|
||||
extern const course_texture banshee_boardwalk_textures[];
|
||||
extern const course_texture big_donut_textures[];
|
||||
|
|
|
|||
|
|
@ -5,130 +5,64 @@
|
|||
#include <libultra/gbi.h>
|
||||
|
||||
const course_texture banshee_boardwalk_textures[] = {
|
||||
{gTexture6447C4, 0x0106, 0x0800, 0x0},
|
||||
{gTexture676FB0, 0x0525, 0x0800, 0x0},
|
||||
{gTexture643B3C, 0x0798, 0x0800, 0x0},
|
||||
{gTexture64BB60, 0x0169, 0x0800, 0x0},
|
||||
{gTexture64BCCC, 0x0450, 0x0800, 0x0},
|
||||
{gTexture64FBF4, 0x0274, 0x0800, 0x0},
|
||||
{gTexture651B20, 0x041D, 0x0800, 0x0},
|
||||
{gTexture66262C, 0x02F7, 0x0800, 0x0},
|
||||
{gTexture668728, 0x01F5, 0x0800, 0x0},
|
||||
{gTexture66A3DC, 0x07C5, 0x0800, 0x0},
|
||||
{gTexture66CA98, 0x02C9, 0x0800, 0x0},
|
||||
{gTexture66CD64, 0x02C0, 0x0800, 0x0},
|
||||
{gTexture66D698, 0x0370, 0x0800, 0x0},
|
||||
{gTexture66E608, 0x05E8, 0x0800, 0x0},
|
||||
{gTexture67B388, 0x03D2, 0x0800, 0x0},
|
||||
{gTextureSignWelcome0, 0x0A2E, 0x1000, 0x0},
|
||||
{gTextureSignWelcome1, 0x0A0A, 0x1000, 0x0},
|
||||
{gTextureSignWoodenBack0, 0x06EF, 0x1000, 0x0},
|
||||
{gTextureSignWoodenBack1, 0x06D1, 0x1000, 0x0},
|
||||
{gTextureSignWoodRedArrow, 0x04E1, 0x1000, 0x0},
|
||||
{gTexture68D940, 0x057D, 0x0800, 0x0},
|
||||
{gTexture685AC0, 0x07CC, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture6447C4, 0x0106, 0x0800, 0x0 },
|
||||
{ gTexture676FB0, 0x0525, 0x0800, 0x0 },
|
||||
{ gTexture643B3C, 0x0798, 0x0800, 0x0 },
|
||||
{ gTexture64BB60, 0x0169, 0x0800, 0x0 },
|
||||
{ gTexture64BCCC, 0x0450, 0x0800, 0x0 },
|
||||
{ gTexture64FBF4, 0x0274, 0x0800, 0x0 },
|
||||
{ gTexture651B20, 0x041D, 0x0800, 0x0 },
|
||||
{ gTexture66262C, 0x02F7, 0x0800, 0x0 },
|
||||
{ gTexture668728, 0x01F5, 0x0800, 0x0 },
|
||||
{ gTexture66A3DC, 0x07C5, 0x0800, 0x0 },
|
||||
{ gTexture66CA98, 0x02C9, 0x0800, 0x0 },
|
||||
{ gTexture66CD64, 0x02C0, 0x0800, 0x0 },
|
||||
{ gTexture66D698, 0x0370, 0x0800, 0x0 },
|
||||
{ gTexture66E608, 0x05E8, 0x0800, 0x0 },
|
||||
{ gTexture67B388, 0x03D2, 0x0800, 0x0 },
|
||||
{ gTextureSignWelcome0, 0x0A2E, 0x1000, 0x0 },
|
||||
{ gTextureSignWelcome1, 0x0A0A, 0x1000, 0x0 },
|
||||
{ gTextureSignWoodenBack0, 0x06EF, 0x1000, 0x0 },
|
||||
{ gTextureSignWoodenBack1, 0x06D1, 0x1000, 0x0 },
|
||||
{ gTextureSignWoodRedArrow, 0x04E1, 0x1000, 0x0 },
|
||||
{ gTexture68D940, 0x057D, 0x0800, 0x0 },
|
||||
{ gTexture685AC0, 0x07CC, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *banshee_boardwalk_dls[] = {
|
||||
d_course_banshee_boardwalk_dl_A0,
|
||||
d_course_banshee_boardwalk_dl_210,
|
||||
d_course_banshee_boardwalk_dl_160,
|
||||
d_course_banshee_boardwalk_dl_270,
|
||||
d_course_banshee_boardwalk_dl_358,
|
||||
d_course_banshee_boardwalk_dl_4F0,
|
||||
d_course_banshee_boardwalk_dl_408,
|
||||
d_course_banshee_boardwalk_dl_540,
|
||||
d_course_banshee_boardwalk_dl_620,
|
||||
d_course_banshee_boardwalk_dl_7C0,
|
||||
d_course_banshee_boardwalk_dl_6D0,
|
||||
d_course_banshee_boardwalk_dl_870,
|
||||
d_course_banshee_boardwalk_dl_940,
|
||||
d_course_banshee_boardwalk_dl_AD0,
|
||||
d_course_banshee_boardwalk_dl_9E0,
|
||||
d_course_banshee_boardwalk_dl_B80,
|
||||
d_course_banshee_boardwalk_dl_C30,
|
||||
d_course_banshee_boardwalk_dl_D80,
|
||||
d_course_banshee_boardwalk_dl_CD0,
|
||||
d_course_banshee_boardwalk_dl_E10,
|
||||
d_course_banshee_boardwalk_dl_EE0,
|
||||
d_course_banshee_boardwalk_dl_1000,
|
||||
d_course_banshee_boardwalk_dl_F50,
|
||||
d_course_banshee_boardwalk_dl_1070,
|
||||
d_course_banshee_boardwalk_dl_1160,
|
||||
d_course_banshee_boardwalk_dl_12A8,
|
||||
d_course_banshee_boardwalk_dl_11C8,
|
||||
d_course_banshee_boardwalk_dl_12E8,
|
||||
d_course_banshee_boardwalk_dl_13F0,
|
||||
d_course_banshee_boardwalk_dl_1520,
|
||||
d_course_banshee_boardwalk_dl_1448,
|
||||
d_course_banshee_boardwalk_dl_1580,
|
||||
d_course_banshee_boardwalk_dl_1678,
|
||||
d_course_banshee_boardwalk_dl_17A0,
|
||||
d_course_banshee_boardwalk_dl_16B8,
|
||||
d_course_banshee_boardwalk_dl_1820,
|
||||
d_course_banshee_boardwalk_dl_18D8,
|
||||
d_course_banshee_boardwalk_dl_1A30,
|
||||
d_course_banshee_boardwalk_dl_1940,
|
||||
d_course_banshee_boardwalk_dl_1B00,
|
||||
d_course_banshee_boardwalk_dl_1BA0,
|
||||
d_course_banshee_boardwalk_dl_1CC8,
|
||||
d_course_banshee_boardwalk_dl_1C20,
|
||||
d_course_banshee_boardwalk_dl_1D90,
|
||||
d_course_banshee_boardwalk_dl_1E28,
|
||||
d_course_banshee_boardwalk_dl_1F40,
|
||||
d_course_banshee_boardwalk_dl_1EA0,
|
||||
d_course_banshee_boardwalk_dl_2028,
|
||||
d_course_banshee_boardwalk_dl_20A0,
|
||||
d_course_banshee_boardwalk_dl_21C8,
|
||||
d_course_banshee_boardwalk_dl_2138,
|
||||
d_course_banshee_boardwalk_dl_22D8,
|
||||
d_course_banshee_boardwalk_dl_2340,
|
||||
d_course_banshee_boardwalk_dl_24E8,
|
||||
d_course_banshee_boardwalk_dl_2448,
|
||||
d_course_banshee_boardwalk_dl_2610,
|
||||
d_course_banshee_boardwalk_dl_2650,
|
||||
d_course_banshee_boardwalk_dl_2790,
|
||||
d_course_banshee_boardwalk_dl_2718,
|
||||
d_course_banshee_boardwalk_dl_2868,
|
||||
d_course_banshee_boardwalk_dl_28A8,
|
||||
d_course_banshee_boardwalk_dl_2A18,
|
||||
d_course_banshee_boardwalk_dl_2980,
|
||||
d_course_banshee_boardwalk_dl_2AE0,
|
||||
d_course_banshee_boardwalk_dl_2B88,
|
||||
d_course_banshee_boardwalk_dl_2CE0,
|
||||
d_course_banshee_boardwalk_dl_2C30,
|
||||
d_course_banshee_boardwalk_dl_2DB0,
|
||||
d_course_banshee_boardwalk_dl_2E20,
|
||||
d_course_banshee_boardwalk_dl_2FA0,
|
||||
d_course_banshee_boardwalk_dl_2EE0,
|
||||
d_course_banshee_boardwalk_dl_3050,
|
||||
d_course_banshee_boardwalk_dl_3100,
|
||||
d_course_banshee_boardwalk_dl_32B0,
|
||||
d_course_banshee_boardwalk_dl_3200,
|
||||
d_course_banshee_boardwalk_dl_3390,
|
||||
d_course_banshee_boardwalk_dl_3468,
|
||||
d_course_banshee_boardwalk_dl_3660,
|
||||
d_course_banshee_boardwalk_dl_35A0,
|
||||
d_course_banshee_boardwalk_dl_3710,
|
||||
d_course_banshee_boardwalk_dl_37F0,
|
||||
d_course_banshee_boardwalk_dl_3980,
|
||||
d_course_banshee_boardwalk_dl_3920,
|
||||
d_course_banshee_boardwalk_dl_3A20,
|
||||
d_course_banshee_boardwalk_dl_3AF8,
|
||||
d_course_banshee_boardwalk_dl_3C40,
|
||||
d_course_banshee_boardwalk_dl_3C00,
|
||||
d_course_banshee_boardwalk_dl_3CD0,
|
||||
d_course_banshee_boardwalk_dl_3D98,
|
||||
d_course_banshee_boardwalk_dl_3EF0,
|
||||
d_course_banshee_boardwalk_dl_3EB0,
|
||||
d_course_banshee_boardwalk_dl_3F60,
|
||||
d_course_banshee_boardwalk_dl_4038,
|
||||
d_course_banshee_boardwalk_dl_4188,
|
||||
d_course_banshee_boardwalk_dl_4118,
|
||||
d_course_banshee_boardwalk_dl_41F0,
|
||||
d_course_banshee_boardwalk_dl_42D0,
|
||||
d_course_banshee_boardwalk_dl_4428,
|
||||
d_course_banshee_boardwalk_dl_43A8,
|
||||
const Gfx* banshee_boardwalk_dls[] = {
|
||||
d_course_banshee_boardwalk_dl_A0, d_course_banshee_boardwalk_dl_210, d_course_banshee_boardwalk_dl_160,
|
||||
d_course_banshee_boardwalk_dl_270, d_course_banshee_boardwalk_dl_358, d_course_banshee_boardwalk_dl_4F0,
|
||||
d_course_banshee_boardwalk_dl_408, d_course_banshee_boardwalk_dl_540, d_course_banshee_boardwalk_dl_620,
|
||||
d_course_banshee_boardwalk_dl_7C0, d_course_banshee_boardwalk_dl_6D0, d_course_banshee_boardwalk_dl_870,
|
||||
d_course_banshee_boardwalk_dl_940, d_course_banshee_boardwalk_dl_AD0, d_course_banshee_boardwalk_dl_9E0,
|
||||
d_course_banshee_boardwalk_dl_B80, d_course_banshee_boardwalk_dl_C30, d_course_banshee_boardwalk_dl_D80,
|
||||
d_course_banshee_boardwalk_dl_CD0, d_course_banshee_boardwalk_dl_E10, d_course_banshee_boardwalk_dl_EE0,
|
||||
d_course_banshee_boardwalk_dl_1000, d_course_banshee_boardwalk_dl_F50, d_course_banshee_boardwalk_dl_1070,
|
||||
d_course_banshee_boardwalk_dl_1160, d_course_banshee_boardwalk_dl_12A8, d_course_banshee_boardwalk_dl_11C8,
|
||||
d_course_banshee_boardwalk_dl_12E8, d_course_banshee_boardwalk_dl_13F0, d_course_banshee_boardwalk_dl_1520,
|
||||
d_course_banshee_boardwalk_dl_1448, d_course_banshee_boardwalk_dl_1580, d_course_banshee_boardwalk_dl_1678,
|
||||
d_course_banshee_boardwalk_dl_17A0, d_course_banshee_boardwalk_dl_16B8, d_course_banshee_boardwalk_dl_1820,
|
||||
d_course_banshee_boardwalk_dl_18D8, d_course_banshee_boardwalk_dl_1A30, d_course_banshee_boardwalk_dl_1940,
|
||||
d_course_banshee_boardwalk_dl_1B00, d_course_banshee_boardwalk_dl_1BA0, d_course_banshee_boardwalk_dl_1CC8,
|
||||
d_course_banshee_boardwalk_dl_1C20, d_course_banshee_boardwalk_dl_1D90, d_course_banshee_boardwalk_dl_1E28,
|
||||
d_course_banshee_boardwalk_dl_1F40, d_course_banshee_boardwalk_dl_1EA0, d_course_banshee_boardwalk_dl_2028,
|
||||
d_course_banshee_boardwalk_dl_20A0, d_course_banshee_boardwalk_dl_21C8, d_course_banshee_boardwalk_dl_2138,
|
||||
d_course_banshee_boardwalk_dl_22D8, d_course_banshee_boardwalk_dl_2340, d_course_banshee_boardwalk_dl_24E8,
|
||||
d_course_banshee_boardwalk_dl_2448, d_course_banshee_boardwalk_dl_2610, d_course_banshee_boardwalk_dl_2650,
|
||||
d_course_banshee_boardwalk_dl_2790, d_course_banshee_boardwalk_dl_2718, d_course_banshee_boardwalk_dl_2868,
|
||||
d_course_banshee_boardwalk_dl_28A8, d_course_banshee_boardwalk_dl_2A18, d_course_banshee_boardwalk_dl_2980,
|
||||
d_course_banshee_boardwalk_dl_2AE0, d_course_banshee_boardwalk_dl_2B88, d_course_banshee_boardwalk_dl_2CE0,
|
||||
d_course_banshee_boardwalk_dl_2C30, d_course_banshee_boardwalk_dl_2DB0, d_course_banshee_boardwalk_dl_2E20,
|
||||
d_course_banshee_boardwalk_dl_2FA0, d_course_banshee_boardwalk_dl_2EE0, d_course_banshee_boardwalk_dl_3050,
|
||||
d_course_banshee_boardwalk_dl_3100, d_course_banshee_boardwalk_dl_32B0, d_course_banshee_boardwalk_dl_3200,
|
||||
d_course_banshee_boardwalk_dl_3390, d_course_banshee_boardwalk_dl_3468, d_course_banshee_boardwalk_dl_3660,
|
||||
d_course_banshee_boardwalk_dl_35A0, d_course_banshee_boardwalk_dl_3710, d_course_banshee_boardwalk_dl_37F0,
|
||||
d_course_banshee_boardwalk_dl_3980, d_course_banshee_boardwalk_dl_3920, d_course_banshee_boardwalk_dl_3A20,
|
||||
d_course_banshee_boardwalk_dl_3AF8, d_course_banshee_boardwalk_dl_3C40, d_course_banshee_boardwalk_dl_3C00,
|
||||
d_course_banshee_boardwalk_dl_3CD0, d_course_banshee_boardwalk_dl_3D98, d_course_banshee_boardwalk_dl_3EF0,
|
||||
d_course_banshee_boardwalk_dl_3EB0, d_course_banshee_boardwalk_dl_3F60, d_course_banshee_boardwalk_dl_4038,
|
||||
d_course_banshee_boardwalk_dl_4188, d_course_banshee_boardwalk_dl_4118, d_course_banshee_boardwalk_dl_41F0,
|
||||
d_course_banshee_boardwalk_dl_42D0, d_course_banshee_boardwalk_dl_4428, d_course_banshee_boardwalk_dl_43A8,
|
||||
d_course_banshee_boardwalk_dl_4480,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,9 +2,7 @@
|
|||
#include "course_offsets.h"
|
||||
|
||||
const course_texture big_donut_textures[] = {
|
||||
{gTexture66ABA4, 0x0312, 0x0800, 0x0},
|
||||
{gTexture6747C4, 0x0145, 0x0800, 0x0},
|
||||
{gTexture67490C, 0x021C, 0x0800, 0x0},
|
||||
{gTexture64BA50, 0x0110, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture66ABA4, 0x0312, 0x0800, 0x0 }, { gTexture6747C4, 0x0145, 0x0800, 0x0 },
|
||||
{ gTexture67490C, 0x021C, 0x0800, 0x0 }, { gTexture64BA50, 0x0110, 0x0800, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,12 +3,8 @@
|
|||
#include <assets/other_textures.h>
|
||||
|
||||
const course_texture block_fort_textures[] = {
|
||||
{gTexture64286C, 0x010A, 0x0800, 0x0},
|
||||
{gTextureGrayCheckerboard, 0x010C, 0x0800, 0x0},
|
||||
{gTextureGrayCobblestone, 0x010C, 0x0800, 0x0},
|
||||
{gTexture64275C, 0x0110, 0x0800, 0x0},
|
||||
{gTexture642978, 0x010D, 0x0800, 0x0},
|
||||
{gTexture6747C4, 0x0145, 0x0800, 0x0},
|
||||
{gTexture6442D4, 0x0138, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture64286C, 0x010A, 0x0800, 0x0 }, { gTextureGrayCheckerboard, 0x010C, 0x0800, 0x0 },
|
||||
{ gTextureGrayCobblestone, 0x010C, 0x0800, 0x0 }, { gTexture64275C, 0x0110, 0x0800, 0x0 },
|
||||
{ gTexture642978, 0x010D, 0x0800, 0x0 }, { gTexture6747C4, 0x0145, 0x0800, 0x0 },
|
||||
{ gTexture6442D4, 0x0138, 0x0800, 0x0 }, { 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,144 +3,72 @@
|
|||
#include <assets/bowsers_castle_data.h>
|
||||
|
||||
const course_texture bowsers_castle_textures[] = {
|
||||
{gTexture64313C, 0x01B8, 0x0800, 0x0},
|
||||
{gTexture6528DC, 0x0278, 0x0800, 0x0},
|
||||
{gTexture66ED38, 0x010E, 0x0800, 0x0},
|
||||
{gTexture676C6C, 0x0110, 0x0800, 0x0},
|
||||
{gTexture676EA8, 0x0108, 0x0800, 0x0},
|
||||
{gTexture679D34, 0x0106, 0x0800, 0x0},
|
||||
{gTextureGrass6, 0x023B, 0x0800, 0x0},
|
||||
{gTexture6522E0, 0x05FC, 0x0800, 0x0},
|
||||
{gTexture651F40, 0x039F, 0x0800, 0x0},
|
||||
{gTextureRoofTile, 0x0129, 0x0800, 0x0},
|
||||
{gTextureSignBowser0, 0x07D0, 0x1000, 0x0},
|
||||
{gTextureSignBowser1, 0x064D, 0x1000, 0x0},
|
||||
{gTexture66ABA4, 0x0312, 0x0800, 0x0},
|
||||
{gTexture66EBF0, 0x0146, 0x0800, 0x0},
|
||||
{gTexture6733CC, 0x020E, 0x0800, 0x0},
|
||||
{gTexture673118, 0x02B1, 0x0800, 0x0},
|
||||
{gTexture673FF8, 0x035B, 0x0800, 0x0},
|
||||
{gTexture674B28, 0x0230, 0x0800, 0x0},
|
||||
{gTextureSignGreenArrow, 0x025B, 0x1000, 0x0},
|
||||
{gTexture68D834, 0x010A, 0x0800, 0x0},
|
||||
{gTexture676D7C, 0x012C, 0x0800, 0x0},
|
||||
{gTexture67ADF0, 0x0595, 0x0800, 0x0},
|
||||
{gTexture67EFEC, 0x016F, 0x0800, 0x0},
|
||||
{gTexture653DB0, 0x06AE, 0x0800, 0x0},
|
||||
{gTexture66CA98, 0x02C9, 0x0800, 0x0},
|
||||
{gTexture673990, 0x02D8, 0x0800, 0x0},
|
||||
{gTexture67A370, 0x05AA, 0x0800, 0x0},
|
||||
{gTexture67A91C, 0x04D1, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture64313C, 0x01B8, 0x0800, 0x0 },
|
||||
{ gTexture6528DC, 0x0278, 0x0800, 0x0 },
|
||||
{ gTexture66ED38, 0x010E, 0x0800, 0x0 },
|
||||
{ gTexture676C6C, 0x0110, 0x0800, 0x0 },
|
||||
{ gTexture676EA8, 0x0108, 0x0800, 0x0 },
|
||||
{ gTexture679D34, 0x0106, 0x0800, 0x0 },
|
||||
{ gTextureGrass6, 0x023B, 0x0800, 0x0 },
|
||||
{ gTexture6522E0, 0x05FC, 0x0800, 0x0 },
|
||||
{ gTexture651F40, 0x039F, 0x0800, 0x0 },
|
||||
{ gTextureRoofTile, 0x0129, 0x0800, 0x0 },
|
||||
{ gTextureSignBowser0, 0x07D0, 0x1000, 0x0 },
|
||||
{ gTextureSignBowser1, 0x064D, 0x1000, 0x0 },
|
||||
{ gTexture66ABA4, 0x0312, 0x0800, 0x0 },
|
||||
{ gTexture66EBF0, 0x0146, 0x0800, 0x0 },
|
||||
{ gTexture6733CC, 0x020E, 0x0800, 0x0 },
|
||||
{ gTexture673118, 0x02B1, 0x0800, 0x0 },
|
||||
{ gTexture673FF8, 0x035B, 0x0800, 0x0 },
|
||||
{ gTexture674B28, 0x0230, 0x0800, 0x0 },
|
||||
{ gTextureSignGreenArrow, 0x025B, 0x1000, 0x0 },
|
||||
{ gTexture68D834, 0x010A, 0x0800, 0x0 },
|
||||
{ gTexture676D7C, 0x012C, 0x0800, 0x0 },
|
||||
{ gTexture67ADF0, 0x0595, 0x0800, 0x0 },
|
||||
{ gTexture67EFEC, 0x016F, 0x0800, 0x0 },
|
||||
{ gTexture653DB0, 0x06AE, 0x0800, 0x0 },
|
||||
{ gTexture66CA98, 0x02C9, 0x0800, 0x0 },
|
||||
{ gTexture673990, 0x02D8, 0x0800, 0x0 },
|
||||
{ gTexture67A370, 0x05AA, 0x0800, 0x0 },
|
||||
{ gTexture67A91C, 0x04D1, 0x0800, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *bowsers_castle_dls[] = {
|
||||
d_course_bowsers_castle_dl_0,
|
||||
d_course_bowsers_castle_dl_230,
|
||||
d_course_bowsers_castle_dl_110,
|
||||
d_course_bowsers_castle_dl_398,
|
||||
d_course_bowsers_castle_dl_428,
|
||||
d_course_bowsers_castle_dl_640,
|
||||
d_course_bowsers_castle_dl_4F0,
|
||||
d_course_bowsers_castle_dl_7A0,
|
||||
d_course_bowsers_castle_dl_860,
|
||||
d_course_bowsers_castle_dl_9F8,
|
||||
d_course_bowsers_castle_dl_8E8,
|
||||
d_course_bowsers_castle_dl_AE0,
|
||||
d_course_bowsers_castle_dl_B88,
|
||||
d_course_bowsers_castle_dl_D20,
|
||||
d_course_bowsers_castle_dl_C08,
|
||||
d_course_bowsers_castle_dl_E00,
|
||||
d_course_bowsers_castle_dl_EA8,
|
||||
d_course_bowsers_castle_dl_1040,
|
||||
d_course_bowsers_castle_dl_F08,
|
||||
d_course_bowsers_castle_dl_1138,
|
||||
d_course_bowsers_castle_dl_11F0,
|
||||
d_course_bowsers_castle_dl_1290,
|
||||
d_course_bowsers_castle_dl_1248,
|
||||
d_course_bowsers_castle_dl_12D0,
|
||||
d_course_bowsers_castle_dl_1330,
|
||||
d_course_bowsers_castle_dl_1370,
|
||||
d_course_bowsers_castle_dl_1350,
|
||||
d_course_bowsers_castle_dl_13A0,
|
||||
d_course_bowsers_castle_dl_13C0,
|
||||
d_course_bowsers_castle_dl_1448,
|
||||
d_course_bowsers_castle_dl_13E0,
|
||||
d_course_bowsers_castle_dl_1488,
|
||||
d_course_bowsers_castle_dl_14B0,
|
||||
d_course_bowsers_castle_dl_1590,
|
||||
d_course_bowsers_castle_dl_1520,
|
||||
d_course_bowsers_castle_dl_1608,
|
||||
d_course_bowsers_castle_dl_1690,
|
||||
d_course_bowsers_castle_dl_1788,
|
||||
d_course_bowsers_castle_dl_1710,
|
||||
d_course_bowsers_castle_dl_17D0,
|
||||
d_course_bowsers_castle_dl_1818,
|
||||
d_course_bowsers_castle_dl_18C0,
|
||||
d_course_bowsers_castle_dl_1860,
|
||||
d_course_bowsers_castle_dl_1928,
|
||||
d_course_bowsers_castle_dl_1960,
|
||||
d_course_bowsers_castle_dl_19F8,
|
||||
d_course_bowsers_castle_dl_19A8,
|
||||
d_course_bowsers_castle_dl_1A40,
|
||||
d_course_bowsers_castle_dl_1A90,
|
||||
d_course_bowsers_castle_dl_1B10,
|
||||
d_course_bowsers_castle_dl_1AD8,
|
||||
d_course_bowsers_castle_dl_1B58,
|
||||
d_course_bowsers_castle_dl_1BB0,
|
||||
d_course_bowsers_castle_dl_1C38,
|
||||
d_course_bowsers_castle_dl_1C10,
|
||||
d_course_bowsers_castle_dl_1C60,
|
||||
d_course_bowsers_castle_dl_1C98,
|
||||
d_course_bowsers_castle_dl_1DF8,
|
||||
d_course_bowsers_castle_dl_1CD0,
|
||||
d_course_bowsers_castle_dl_1EB0,
|
||||
d_course_bowsers_castle_dl_1FA0,
|
||||
d_course_bowsers_castle_dl_2130,
|
||||
d_course_bowsers_castle_dl_2008,
|
||||
d_course_bowsers_castle_dl_21F0,
|
||||
d_course_bowsers_castle_dl_22E8,
|
||||
d_course_bowsers_castle_dl_24B8,
|
||||
d_course_bowsers_castle_dl_2398,
|
||||
d_course_bowsers_castle_dl_2578,
|
||||
d_course_bowsers_castle_dl_2688,
|
||||
d_course_bowsers_castle_dl_2880,
|
||||
d_course_bowsers_castle_dl_2760,
|
||||
d_course_bowsers_castle_dl_2958,
|
||||
d_course_bowsers_castle_dl_2A60,
|
||||
d_course_bowsers_castle_dl_2C48,
|
||||
d_course_bowsers_castle_dl_2B80,
|
||||
d_course_bowsers_castle_dl_2D08,
|
||||
d_course_bowsers_castle_dl_2DF8,
|
||||
d_course_bowsers_castle_dl_2FB0,
|
||||
d_course_bowsers_castle_dl_2F30,
|
||||
d_course_bowsers_castle_dl_3050,
|
||||
d_course_bowsers_castle_dl_3158,
|
||||
d_course_bowsers_castle_dl_32C0,
|
||||
d_course_bowsers_castle_dl_3230,
|
||||
d_course_bowsers_castle_dl_3338,
|
||||
d_course_bowsers_castle_dl_3480,
|
||||
d_course_bowsers_castle_dl_35D0,
|
||||
d_course_bowsers_castle_dl_3508,
|
||||
d_course_bowsers_castle_dl_3678,
|
||||
d_course_bowsers_castle_dl_37D8,
|
||||
d_course_bowsers_castle_dl_39E0,
|
||||
d_course_bowsers_castle_dl_38F8,
|
||||
d_course_bowsers_castle_dl_3B00,
|
||||
d_course_bowsers_castle_dl_3C08,
|
||||
d_course_bowsers_castle_dl_3EA8,
|
||||
d_course_bowsers_castle_dl_3D78,
|
||||
d_course_bowsers_castle_dl_3FF0,
|
||||
d_course_bowsers_castle_dl_40F0,
|
||||
d_course_bowsers_castle_dl_4358,
|
||||
d_course_bowsers_castle_dl_4278,
|
||||
d_course_bowsers_castle_dl_4488,
|
||||
d_course_bowsers_castle_dl_45D8,
|
||||
d_course_bowsers_castle_dl_4820,
|
||||
d_course_bowsers_castle_dl_4748,
|
||||
d_course_bowsers_castle_dl_4998,
|
||||
d_course_bowsers_castle_dl_4A98,
|
||||
d_course_bowsers_castle_dl_4CE8,
|
||||
d_course_bowsers_castle_dl_4C00,
|
||||
d_course_bowsers_castle_dl_4EA8,
|
||||
const Gfx* bowsers_castle_dls[] = {
|
||||
d_course_bowsers_castle_dl_0, d_course_bowsers_castle_dl_230, d_course_bowsers_castle_dl_110,
|
||||
d_course_bowsers_castle_dl_398, d_course_bowsers_castle_dl_428, d_course_bowsers_castle_dl_640,
|
||||
d_course_bowsers_castle_dl_4F0, d_course_bowsers_castle_dl_7A0, d_course_bowsers_castle_dl_860,
|
||||
d_course_bowsers_castle_dl_9F8, d_course_bowsers_castle_dl_8E8, d_course_bowsers_castle_dl_AE0,
|
||||
d_course_bowsers_castle_dl_B88, d_course_bowsers_castle_dl_D20, d_course_bowsers_castle_dl_C08,
|
||||
d_course_bowsers_castle_dl_E00, d_course_bowsers_castle_dl_EA8, d_course_bowsers_castle_dl_1040,
|
||||
d_course_bowsers_castle_dl_F08, d_course_bowsers_castle_dl_1138, d_course_bowsers_castle_dl_11F0,
|
||||
d_course_bowsers_castle_dl_1290, d_course_bowsers_castle_dl_1248, d_course_bowsers_castle_dl_12D0,
|
||||
d_course_bowsers_castle_dl_1330, d_course_bowsers_castle_dl_1370, d_course_bowsers_castle_dl_1350,
|
||||
d_course_bowsers_castle_dl_13A0, d_course_bowsers_castle_dl_13C0, d_course_bowsers_castle_dl_1448,
|
||||
d_course_bowsers_castle_dl_13E0, d_course_bowsers_castle_dl_1488, d_course_bowsers_castle_dl_14B0,
|
||||
d_course_bowsers_castle_dl_1590, d_course_bowsers_castle_dl_1520, d_course_bowsers_castle_dl_1608,
|
||||
d_course_bowsers_castle_dl_1690, d_course_bowsers_castle_dl_1788, d_course_bowsers_castle_dl_1710,
|
||||
d_course_bowsers_castle_dl_17D0, d_course_bowsers_castle_dl_1818, d_course_bowsers_castle_dl_18C0,
|
||||
d_course_bowsers_castle_dl_1860, d_course_bowsers_castle_dl_1928, d_course_bowsers_castle_dl_1960,
|
||||
d_course_bowsers_castle_dl_19F8, d_course_bowsers_castle_dl_19A8, d_course_bowsers_castle_dl_1A40,
|
||||
d_course_bowsers_castle_dl_1A90, d_course_bowsers_castle_dl_1B10, d_course_bowsers_castle_dl_1AD8,
|
||||
d_course_bowsers_castle_dl_1B58, d_course_bowsers_castle_dl_1BB0, d_course_bowsers_castle_dl_1C38,
|
||||
d_course_bowsers_castle_dl_1C10, d_course_bowsers_castle_dl_1C60, d_course_bowsers_castle_dl_1C98,
|
||||
d_course_bowsers_castle_dl_1DF8, d_course_bowsers_castle_dl_1CD0, d_course_bowsers_castle_dl_1EB0,
|
||||
d_course_bowsers_castle_dl_1FA0, d_course_bowsers_castle_dl_2130, d_course_bowsers_castle_dl_2008,
|
||||
d_course_bowsers_castle_dl_21F0, d_course_bowsers_castle_dl_22E8, d_course_bowsers_castle_dl_24B8,
|
||||
d_course_bowsers_castle_dl_2398, d_course_bowsers_castle_dl_2578, d_course_bowsers_castle_dl_2688,
|
||||
d_course_bowsers_castle_dl_2880, d_course_bowsers_castle_dl_2760, d_course_bowsers_castle_dl_2958,
|
||||
d_course_bowsers_castle_dl_2A60, d_course_bowsers_castle_dl_2C48, d_course_bowsers_castle_dl_2B80,
|
||||
d_course_bowsers_castle_dl_2D08, d_course_bowsers_castle_dl_2DF8, d_course_bowsers_castle_dl_2FB0,
|
||||
d_course_bowsers_castle_dl_2F30, d_course_bowsers_castle_dl_3050, d_course_bowsers_castle_dl_3158,
|
||||
d_course_bowsers_castle_dl_32C0, d_course_bowsers_castle_dl_3230, d_course_bowsers_castle_dl_3338,
|
||||
d_course_bowsers_castle_dl_3480, d_course_bowsers_castle_dl_35D0, d_course_bowsers_castle_dl_3508,
|
||||
d_course_bowsers_castle_dl_3678, d_course_bowsers_castle_dl_37D8, d_course_bowsers_castle_dl_39E0,
|
||||
d_course_bowsers_castle_dl_38F8, d_course_bowsers_castle_dl_3B00, d_course_bowsers_castle_dl_3C08,
|
||||
d_course_bowsers_castle_dl_3EA8, d_course_bowsers_castle_dl_3D78, d_course_bowsers_castle_dl_3FF0,
|
||||
d_course_bowsers_castle_dl_40F0, d_course_bowsers_castle_dl_4358, d_course_bowsers_castle_dl_4278,
|
||||
d_course_bowsers_castle_dl_4488, d_course_bowsers_castle_dl_45D8, d_course_bowsers_castle_dl_4820,
|
||||
d_course_bowsers_castle_dl_4748, d_course_bowsers_castle_dl_4998, d_course_bowsers_castle_dl_4A98,
|
||||
d_course_bowsers_castle_dl_4CE8, d_course_bowsers_castle_dl_4C00, d_course_bowsers_castle_dl_4EA8,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,124 +3,60 @@
|
|||
#include <assets/choco_mountain_data.h>
|
||||
|
||||
const course_texture choco_mountain_textures[] = {
|
||||
{gTexture64619C, 0x0124, 0x0800, 0x0},
|
||||
{gTexture64647C, 0x0829, 0x1000, 0x0},
|
||||
{gTexture647F4C, 0x05BC, 0x1000, 0x0},
|
||||
{gTexture64FBF4, 0x0274, 0x0800, 0x0},
|
||||
{gTexture653DB0, 0x06AE, 0x0800, 0x0},
|
||||
{gTexture652B54, 0x0606, 0x0800, 0x0},
|
||||
{gTexture65315C, 0x04A9, 0x0800, 0x0},
|
||||
{gTexture6684F8, 0x010D, 0x0800, 0x0},
|
||||
{gTextureSignLuigis0, 0x0287, 0x1000, 0x0},
|
||||
{gTextureSignLuigis1, 0x02AF, 0x1000, 0x0},
|
||||
{gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0},
|
||||
{gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0},
|
||||
{gTexture6774D8, 0x0113, 0x0800, 0x0},
|
||||
{gTextureSignFallingRocks, 0x012C, 0x0800, 0x0},
|
||||
{gTextureSignBackside, 0x011E, 0x0800, 0x0},
|
||||
{gTexture679C04, 0x012F, 0x0800, 0x0},
|
||||
{gTexture67B864, 0x014C, 0x0800, 0x0},
|
||||
{gTexture67DC20, 0x03EF, 0x0800, 0x0},
|
||||
{gTextureSignYoshi, 0x04DF, 0x1000, 0x0},
|
||||
{gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture64619C, 0x0124, 0x0800, 0x0 },
|
||||
{ gTexture64647C, 0x0829, 0x1000, 0x0 },
|
||||
{ gTexture647F4C, 0x05BC, 0x1000, 0x0 },
|
||||
{ gTexture64FBF4, 0x0274, 0x0800, 0x0 },
|
||||
{ gTexture653DB0, 0x06AE, 0x0800, 0x0 },
|
||||
{ gTexture652B54, 0x0606, 0x0800, 0x0 },
|
||||
{ gTexture65315C, 0x04A9, 0x0800, 0x0 },
|
||||
{ gTexture6684F8, 0x010D, 0x0800, 0x0 },
|
||||
{ gTextureSignLuigis0, 0x0287, 0x1000, 0x0 },
|
||||
{ gTextureSignLuigis1, 0x02AF, 0x1000, 0x0 },
|
||||
{ gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0 },
|
||||
{ gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0 },
|
||||
{ gTexture6774D8, 0x0113, 0x0800, 0x0 },
|
||||
{ gTextureSignFallingRocks, 0x012C, 0x0800, 0x0 },
|
||||
{ gTextureSignBackside, 0x011E, 0x0800, 0x0 },
|
||||
{ gTexture679C04, 0x012F, 0x0800, 0x0 },
|
||||
{ gTexture67B864, 0x014C, 0x0800, 0x0 },
|
||||
{ gTexture67DC20, 0x03EF, 0x0800, 0x0 },
|
||||
{ gTextureSignYoshi, 0x04DF, 0x1000, 0x0 },
|
||||
{ gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *choco_mountain_dls[] = {
|
||||
d_course_choco_mountain_dl_0,
|
||||
d_course_choco_mountain_dl_150,
|
||||
d_course_choco_mountain_dl_B0,
|
||||
d_course_choco_mountain_dl_208,
|
||||
d_course_choco_mountain_dl_2A8,
|
||||
d_course_choco_mountain_dl_410,
|
||||
d_course_choco_mountain_dl_330,
|
||||
d_course_choco_mountain_dl_4D8,
|
||||
d_course_choco_mountain_dl_588,
|
||||
d_course_choco_mountain_dl_6C0,
|
||||
d_course_choco_mountain_dl_618,
|
||||
d_course_choco_mountain_dl_750,
|
||||
d_course_choco_mountain_dl_7E8,
|
||||
d_course_choco_mountain_dl_908,
|
||||
d_course_choco_mountain_dl_878,
|
||||
d_course_choco_mountain_dl_990,
|
||||
d_course_choco_mountain_dl_A28,
|
||||
d_course_choco_mountain_dl_BB8,
|
||||
d_course_choco_mountain_dl_B10,
|
||||
d_course_choco_mountain_dl_C40,
|
||||
d_course_choco_mountain_dl_D30,
|
||||
d_course_choco_mountain_dl_EA0,
|
||||
d_course_choco_mountain_dl_DF8,
|
||||
d_course_choco_mountain_dl_F38,
|
||||
d_course_choco_mountain_dl_1000,
|
||||
d_course_choco_mountain_dl_1150,
|
||||
d_course_choco_mountain_dl_10A8,
|
||||
d_course_choco_mountain_dl_11D8,
|
||||
d_course_choco_mountain_dl_1280,
|
||||
d_course_choco_mountain_dl_13E0,
|
||||
d_course_choco_mountain_dl_1330,
|
||||
d_course_choco_mountain_dl_1488,
|
||||
d_course_choco_mountain_dl_1528,
|
||||
d_course_choco_mountain_dl_16B8,
|
||||
d_course_choco_mountain_dl_15E8,
|
||||
d_course_choco_mountain_dl_1788,
|
||||
d_course_choco_mountain_dl_1810,
|
||||
d_course_choco_mountain_dl_1970,
|
||||
d_course_choco_mountain_dl_18B8,
|
||||
d_course_choco_mountain_dl_1A40,
|
||||
d_course_choco_mountain_dl_1AC8,
|
||||
d_course_choco_mountain_dl_1C18,
|
||||
d_course_choco_mountain_dl_1B70,
|
||||
d_course_choco_mountain_dl_1CC8,
|
||||
d_course_choco_mountain_dl_1D50,
|
||||
d_course_choco_mountain_dl_1E98,
|
||||
d_course_choco_mountain_dl_1E08,
|
||||
d_course_choco_mountain_dl_1F40,
|
||||
d_course_choco_mountain_dl_1FE0,
|
||||
d_course_choco_mountain_dl_2168,
|
||||
d_course_choco_mountain_dl_20C8,
|
||||
d_course_choco_mountain_dl_2228,
|
||||
d_course_choco_mountain_dl_22D8,
|
||||
d_course_choco_mountain_dl_2468,
|
||||
d_course_choco_mountain_dl_23C8,
|
||||
d_course_choco_mountain_dl_2538,
|
||||
d_course_choco_mountain_dl_2600,
|
||||
d_course_choco_mountain_dl_2780,
|
||||
d_course_choco_mountain_dl_26D8,
|
||||
d_course_choco_mountain_dl_2840,
|
||||
d_course_choco_mountain_dl_2908,
|
||||
d_course_choco_mountain_dl_2A88,
|
||||
d_course_choco_mountain_dl_29B8,
|
||||
d_course_choco_mountain_dl_2B38,
|
||||
d_course_choco_mountain_dl_2C08,
|
||||
d_course_choco_mountain_dl_2D50,
|
||||
d_course_choco_mountain_dl_2C98,
|
||||
d_course_choco_mountain_dl_2DE8,
|
||||
d_course_choco_mountain_dl_2EA0,
|
||||
d_course_choco_mountain_dl_2FD0,
|
||||
d_course_choco_mountain_dl_2F28,
|
||||
d_course_choco_mountain_dl_3070,
|
||||
d_course_choco_mountain_dl_3120,
|
||||
d_course_choco_mountain_dl_32B0,
|
||||
d_course_choco_mountain_dl_31D8,
|
||||
d_course_choco_mountain_dl_3368,
|
||||
d_course_choco_mountain_dl_3438,
|
||||
d_course_choco_mountain_dl_3618,
|
||||
d_course_choco_mountain_dl_3550,
|
||||
d_course_choco_mountain_dl_36F0,
|
||||
d_course_choco_mountain_dl_37D0,
|
||||
d_course_choco_mountain_dl_39A8,
|
||||
d_course_choco_mountain_dl_38E8,
|
||||
d_course_choco_mountain_dl_3A80,
|
||||
d_course_choco_mountain_dl_3B60,
|
||||
d_course_choco_mountain_dl_3CB8,
|
||||
d_course_choco_mountain_dl_3C18,
|
||||
d_course_choco_mountain_dl_3D70,
|
||||
d_course_choco_mountain_dl_3E18,
|
||||
d_course_choco_mountain_dl_3FA8,
|
||||
d_course_choco_mountain_dl_3EE0,
|
||||
d_course_choco_mountain_dl_4090,
|
||||
d_course_choco_mountain_dl_4138,
|
||||
d_course_choco_mountain_dl_42C8,
|
||||
d_course_choco_mountain_dl_41F8,
|
||||
d_course_choco_mountain_dl_43C8,
|
||||
const Gfx* choco_mountain_dls[] = {
|
||||
d_course_choco_mountain_dl_0, d_course_choco_mountain_dl_150, d_course_choco_mountain_dl_B0,
|
||||
d_course_choco_mountain_dl_208, d_course_choco_mountain_dl_2A8, d_course_choco_mountain_dl_410,
|
||||
d_course_choco_mountain_dl_330, d_course_choco_mountain_dl_4D8, d_course_choco_mountain_dl_588,
|
||||
d_course_choco_mountain_dl_6C0, d_course_choco_mountain_dl_618, d_course_choco_mountain_dl_750,
|
||||
d_course_choco_mountain_dl_7E8, d_course_choco_mountain_dl_908, d_course_choco_mountain_dl_878,
|
||||
d_course_choco_mountain_dl_990, d_course_choco_mountain_dl_A28, d_course_choco_mountain_dl_BB8,
|
||||
d_course_choco_mountain_dl_B10, d_course_choco_mountain_dl_C40, d_course_choco_mountain_dl_D30,
|
||||
d_course_choco_mountain_dl_EA0, d_course_choco_mountain_dl_DF8, d_course_choco_mountain_dl_F38,
|
||||
d_course_choco_mountain_dl_1000, d_course_choco_mountain_dl_1150, d_course_choco_mountain_dl_10A8,
|
||||
d_course_choco_mountain_dl_11D8, d_course_choco_mountain_dl_1280, d_course_choco_mountain_dl_13E0,
|
||||
d_course_choco_mountain_dl_1330, d_course_choco_mountain_dl_1488, d_course_choco_mountain_dl_1528,
|
||||
d_course_choco_mountain_dl_16B8, d_course_choco_mountain_dl_15E8, d_course_choco_mountain_dl_1788,
|
||||
d_course_choco_mountain_dl_1810, d_course_choco_mountain_dl_1970, d_course_choco_mountain_dl_18B8,
|
||||
d_course_choco_mountain_dl_1A40, d_course_choco_mountain_dl_1AC8, d_course_choco_mountain_dl_1C18,
|
||||
d_course_choco_mountain_dl_1B70, d_course_choco_mountain_dl_1CC8, d_course_choco_mountain_dl_1D50,
|
||||
d_course_choco_mountain_dl_1E98, d_course_choco_mountain_dl_1E08, d_course_choco_mountain_dl_1F40,
|
||||
d_course_choco_mountain_dl_1FE0, d_course_choco_mountain_dl_2168, d_course_choco_mountain_dl_20C8,
|
||||
d_course_choco_mountain_dl_2228, d_course_choco_mountain_dl_22D8, d_course_choco_mountain_dl_2468,
|
||||
d_course_choco_mountain_dl_23C8, d_course_choco_mountain_dl_2538, d_course_choco_mountain_dl_2600,
|
||||
d_course_choco_mountain_dl_2780, d_course_choco_mountain_dl_26D8, d_course_choco_mountain_dl_2840,
|
||||
d_course_choco_mountain_dl_2908, d_course_choco_mountain_dl_2A88, d_course_choco_mountain_dl_29B8,
|
||||
d_course_choco_mountain_dl_2B38, d_course_choco_mountain_dl_2C08, d_course_choco_mountain_dl_2D50,
|
||||
d_course_choco_mountain_dl_2C98, d_course_choco_mountain_dl_2DE8, d_course_choco_mountain_dl_2EA0,
|
||||
d_course_choco_mountain_dl_2FD0, d_course_choco_mountain_dl_2F28, d_course_choco_mountain_dl_3070,
|
||||
d_course_choco_mountain_dl_3120, d_course_choco_mountain_dl_32B0, d_course_choco_mountain_dl_31D8,
|
||||
d_course_choco_mountain_dl_3368, d_course_choco_mountain_dl_3438, d_course_choco_mountain_dl_3618,
|
||||
d_course_choco_mountain_dl_3550, d_course_choco_mountain_dl_36F0, d_course_choco_mountain_dl_37D0,
|
||||
d_course_choco_mountain_dl_39A8, d_course_choco_mountain_dl_38E8, d_course_choco_mountain_dl_3A80,
|
||||
d_course_choco_mountain_dl_3B60, d_course_choco_mountain_dl_3CB8, d_course_choco_mountain_dl_3C18,
|
||||
d_course_choco_mountain_dl_3D70, d_course_choco_mountain_dl_3E18, d_course_choco_mountain_dl_3FA8,
|
||||
d_course_choco_mountain_dl_3EE0, d_course_choco_mountain_dl_4090, d_course_choco_mountain_dl_4138,
|
||||
d_course_choco_mountain_dl_42C8, d_course_choco_mountain_dl_41F8, d_course_choco_mountain_dl_43C8,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,144 +4,305 @@
|
|||
#include "all_course_model.h"
|
||||
#include "all_course_packed.h"
|
||||
|
||||
// struct CourseTable gCourseTable[] = {{
|
||||
// _course_mario_raceway_dl_mio0SegmentRomStart, _course_mario_raceway_dl_mio0SegmentRomEnd,
|
||||
// _mario_raceway_vertexSegmentRomStart, _mario_raceway_vertexSegmentRomEnd,
|
||||
// _course_mario_raceway_offsetsSegmentRomStart, _course_mario_raceway_offsetsSegmentRomEnd,
|
||||
// d_course_mario_raceway_vertex, d_course_mario_raceway_vertex_count,
|
||||
// d_course_mario_raceway_packed, d_course_mario_raceway_packed_end,
|
||||
// mario_raceway_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_choco_mountain_dl_mio0SegmentRomStart, _course_choco_mountain_dl_mio0SegmentRomEnd,
|
||||
// _choco_mountain_vertexSegmentRomStart, _choco_mountain_vertexSegmentRomEnd,
|
||||
// _course_choco_mountain_offsetsSegmentRomStart, _course_choco_mountain_offsetsSegmentRomEnd,
|
||||
// d_course_choco_mountain_vertex, d_course_choco_mountain_vertex_count,
|
||||
// d_course_choco_mountain_packed, d_course_choco_mountain_packed_end,
|
||||
// choco_mountain_textures, 1, 0x0000,
|
||||
// }, {
|
||||
// _course_bowsers_castle_dl_mio0SegmentRomStart, _course_bowsers_castle_dl_mio0SegmentRomEnd,
|
||||
// _bowsers_castle_vertexSegmentRomStart, _bowsers_castle_vertexSegmentRomEnd,
|
||||
// _course_bowsers_castle_offsetsSegmentRomStart, _course_bowsers_castle_offsetsSegmentRomEnd,
|
||||
// d_course_bowsers_castle_vertex, d_course_bowsers_castle_vertex_count,
|
||||
// d_course_bowsers_castle_packed, d_course_bowsers_castle_packed_end,
|
||||
// bowsers_castle_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_banshee_boardwalk_dl_mio0SegmentRomStart, _course_banshee_boardwalk_dl_mio0SegmentRomEnd,
|
||||
// _banshee_boardwalk_vertexSegmentRomStart, _banshee_boardwalk_vertexSegmentRomEnd,
|
||||
// _course_banshee_boardwalk_offsetsSegmentRomStart, _course_banshee_boardwalk_offsetsSegmentRomEnd,
|
||||
// d_course_banshee_boardwalk_vertex, d_course_banshee_boardwalk_vertex_count,
|
||||
// d_course_banshee_boardwalk_packed, d_course_banshee_boardwalk_packed_end,
|
||||
// banshee_boardwalk_textures, 1, 0x0000,
|
||||
// }, {
|
||||
// _course_yoshi_valley_dl_mio0SegmentRomStart, _course_yoshi_valley_dl_mio0SegmentRomEnd,
|
||||
// _yoshi_valley_vertexSegmentRomStart, _yoshi_valley_vertexSegmentRomEnd,
|
||||
// _course_yoshi_valley_offsetsSegmentRomStart, _course_yoshi_valley_offsetsSegmentRomEnd,
|
||||
// d_course_yoshi_valley_vertex, d_course_yoshi_valley_vertex_count,
|
||||
// d_course_yoshi_valley_packed, d_course_yoshi_valley_packed_end,
|
||||
// yoshi_valley_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_frappe_snowland_dl_mio0SegmentRomStart, _course_frappe_snowland_dl_mio0SegmentRomEnd,
|
||||
// _frappe_snowland_vertexSegmentRomStart, _frappe_snowland_vertexSegmentRomEnd,
|
||||
// _course_frappe_snowland_offsetsSegmentRomStart, _course_frappe_snowland_offsetsSegmentRomEnd,
|
||||
// d_course_frappe_snowland_vertex, d_course_frappe_snowland_vertex_count,
|
||||
// d_course_frappe_snowland_packed, d_course_frappe_snowland_packed_end,
|
||||
// frappe_snowland_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_koopa_troopa_beach_dl_mio0SegmentRomStart, _course_koopa_troopa_beach_dl_mio0SegmentRomEnd,
|
||||
// _koopa_troopa_beach_vertexSegmentRomStart, _koopa_troopa_beach_vertexSegmentRomEnd,
|
||||
// _course_koopa_troopa_beach_offsetsSegmentRomStart, _course_koopa_troopa_beach_offsetsSegmentRomEnd,
|
||||
// d_course_koopa_troopa_beach_vertex, d_course_koopa_troopa_beach_vertex_count,
|
||||
// d_course_koopa_troopa_beach_packed, d_course_koopa_troopa_beach_packed_end,
|
||||
// koopa_troopa_beach_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_royal_raceway_dl_mio0SegmentRomStart, _course_royal_raceway_dl_mio0SegmentRomEnd,
|
||||
// _royal_raceway_vertexSegmentRomStart, _royal_raceway_vertexSegmentRomEnd,
|
||||
// _course_royal_raceway_offsetsSegmentRomStart, _course_royal_raceway_offsetsSegmentRomEnd,
|
||||
// d_course_royal_raceway_vertex, d_course_royal_raceway_vertex_count,
|
||||
// d_course_royal_raceway_packed, d_course_royal_raceway_packed_end,
|
||||
// royal_raceway_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_luigi_raceway_dl_mio0SegmentRomStart, _course_luigi_raceway_dl_mio0SegmentRomEnd,
|
||||
// _luigi_raceway_vertexSegmentRomStart, _luigi_raceway_vertexSegmentRomEnd,
|
||||
// _course_luigi_raceway_offsetsSegmentRomStart, _course_luigi_raceway_offsetsSegmentRomEnd,
|
||||
// d_course_luigi_raceway_vertex, d_course_luigi_raceway_vertex_count,
|
||||
// d_course_luigi_raceway_packed, d_course_luigi_raceway_packed_end,
|
||||
// luigi_raceway_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_moo_moo_farm_dl_mio0SegmentRomStart, _course_moo_moo_farm_dl_mio0SegmentRomEnd,
|
||||
// _moo_moo_farm_vertexSegmentRomStart, _moo_moo_farm_vertexSegmentRomEnd,
|
||||
// _course_moo_moo_farm_offsetsSegmentRomStart, _course_moo_moo_farm_offsetsSegmentRomEnd,
|
||||
// d_course_moo_moo_farm_vertex, d_course_moo_moo_farm_vertex_count,
|
||||
// d_course_moo_moo_farm_packed, d_course_moo_moo_farm_packed_end,
|
||||
// moo_moo_farm_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_toads_turnpike_dl_mio0SegmentRomStart, _course_toads_turnpike_dl_mio0SegmentRomEnd,
|
||||
// _toads_turnpike_vertexSegmentRomStart, _toads_turnpike_vertexSegmentRomEnd,
|
||||
// _course_toads_turnpike_offsetsSegmentRomStart, _course_toads_turnpike_offsetsSegmentRomEnd,
|
||||
// d_course_toads_turnpike_vertex, d_course_toads_turnpike_vertex_count,
|
||||
// d_course_toads_turnpike_packed, d_course_toads_turnpike_packed_end,
|
||||
// toads_turnpike_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_kalimari_desert_dl_mio0SegmentRomStart, _course_kalimari_desert_dl_mio0SegmentRomEnd,
|
||||
// _kalimari_desert_vertexSegmentRomStart, _kalimari_desert_vertexSegmentRomEnd,
|
||||
// _course_kalimari_desert_offsetsSegmentRomStart, _course_kalimari_desert_offsetsSegmentRomEnd,
|
||||
// d_course_kalimari_desert_vertex, d_course_kalimari_desert_vertex_count,
|
||||
// d_course_kalimari_desert_packed, d_course_kalimari_desert_packed_end,
|
||||
// kalimari_desert_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_sherbet_land_dl_mio0SegmentRomStart, _course_sherbet_land_dl_mio0SegmentRomEnd,
|
||||
// _sherbet_land_vertexSegmentRomStart, _sherbet_land_vertexSegmentRomEnd,
|
||||
// _course_sherbet_land_offsetsSegmentRomStart, _course_sherbet_land_offsetsSegmentRomEnd,
|
||||
// d_course_sherbet_land_vertex, d_course_sherbet_land_vertex_count,
|
||||
// d_course_sherbet_land_packed, d_course_sherbet_land_packed_end,
|
||||
// sherbet_land_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_rainbow_road_dl_mio0SegmentRomStart, _course_rainbow_road_dl_mio0SegmentRomEnd,
|
||||
// _rainbow_road_vertexSegmentRomStart, _rainbow_road_vertexSegmentRomEnd,
|
||||
// _course_rainbow_road_offsetsSegmentRomStart, _course_rainbow_road_offsetsSegmentRomEnd,
|
||||
// d_course_rainbow_road_vertex, d_course_rainbow_road_vertex_count,
|
||||
// d_course_rainbow_road_packed, d_course_rainbow_road_packed_end,
|
||||
// rainbow_road_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_wario_stadium_dl_mio0SegmentRomStart, _course_wario_stadium_dl_mio0SegmentRomEnd,
|
||||
// _wario_stadium_vertexSegmentRomStart, _wario_stadium_vertexSegmentRomEnd,
|
||||
// _course_wario_stadium_offsetsSegmentRomStart, _course_wario_stadium_offsetsSegmentRomEnd,
|
||||
// d_course_wario_stadium_vertex, d_course_wario_stadium_vertex_count,
|
||||
// d_course_wario_stadium_packed, d_course_wario_stadium_packed_end,
|
||||
// wario_stadium_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_block_fort_dl_mio0SegmentRomStart, _course_block_fort_dl_mio0SegmentRomEnd,
|
||||
// _block_fort_vertexSegmentRomStart, _block_fort_vertexSegmentRomEnd,
|
||||
// _course_block_fort_offsetsSegmentRomStart, _course_block_fort_offsetsSegmentRomEnd,
|
||||
// d_course_block_fort_vertex, d_course_block_fort_vertex_count,
|
||||
// d_course_block_fort_packed, d_course_block_fort_packed_end,
|
||||
// block_fort_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_skyscraper_dl_mio0SegmentRomStart, _course_skyscraper_dl_mio0SegmentRomEnd,
|
||||
// _skyscraper_vertexSegmentRomStart, _skyscraper_vertexSegmentRomEnd,
|
||||
// _course_skyscraper_offsetsSegmentRomStart, _course_skyscraper_offsetsSegmentRomEnd,
|
||||
// d_course_skyscraper_vertex, d_course_skyscraper_vertex_count,
|
||||
// d_course_skyscraper_packed, d_course_skyscraper_packed_end,
|
||||
// skyscraper_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_double_deck_dl_mio0SegmentRomStart, _course_double_deck_dl_mio0SegmentRomEnd,
|
||||
// _double_deck_vertexSegmentRomStart, _double_deck_vertexSegmentRomEnd,
|
||||
// _course_double_deck_offsetsSegmentRomStart, _course_double_deck_offsetsSegmentRomEnd,
|
||||
// d_course_double_deck_vertex, d_course_double_deck_vertex_count,
|
||||
// d_course_double_deck_packed, d_course_double_deck_packed_end,
|
||||
// double_deck_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_dks_jungle_parkway_dl_mio0SegmentRomStart, _course_dks_jungle_parkway_dl_mio0SegmentRomEnd,
|
||||
// _dks_jungle_parkway_vertexSegmentRomStart, _dks_jungle_parkway_vertexSegmentRomEnd,
|
||||
// _course_dks_jungle_parkway_offsetsSegmentRomStart, _course_dks_jungle_parkway_offsetsSegmentRomEnd,
|
||||
// d_course_dks_jungle_parkway_vertex, d_course_dks_jungle_parkway_vertex_count,
|
||||
// d_course_dks_jungle_parkway_packed, d_course_dks_jungle_parkway_packed_end,
|
||||
// dks_jungle_parkway_textures, 0, 0x0000,
|
||||
// }, {
|
||||
// _course_big_donut_dl_mio0SegmentRomStart, _course_big_donut_dl_mio0SegmentRomEnd,
|
||||
// _big_donut_vertexSegmentRomStart, _big_donut_vertexSegmentRomEnd,
|
||||
// _course_big_donut_offsetsSegmentRomStart, _course_big_donut_offsetsSegmentRomEnd,
|
||||
// d_course_big_donut_vertex, d_course_big_donut_vertex_count,
|
||||
// d_course_big_donut_packed, d_course_big_donut_packed_end,
|
||||
// big_donut_textures, 0, 0x0000,
|
||||
// }};
|
||||
/*
|
||||
struct CourseTable gCourseTable[] = { {
|
||||
_course_mario_raceway_dl_mio0SegmentRomStart,
|
||||
_course_mario_raceway_dl_mio0SegmentRomEnd,
|
||||
_mario_raceway_vertexSegmentRomStart,
|
||||
_mario_raceway_vertexSegmentRomEnd,
|
||||
_course_mario_raceway_offsetsSegmentRomStart,
|
||||
_course_mario_raceway_offsetsSegmentRomEnd,
|
||||
d_course_mario_raceway_vertex,
|
||||
d_course_mario_raceway_vertex_count,
|
||||
d_course_mario_raceway_packed,
|
||||
d_course_mario_raceway_packed_end,
|
||||
mario_raceway_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_choco_mountain_dl_mio0SegmentRomStart,
|
||||
_course_choco_mountain_dl_mio0SegmentRomEnd,
|
||||
_choco_mountain_vertexSegmentRomStart,
|
||||
_choco_mountain_vertexSegmentRomEnd,
|
||||
_course_choco_mountain_offsetsSegmentRomStart,
|
||||
_course_choco_mountain_offsetsSegmentRomEnd,
|
||||
d_course_choco_mountain_vertex,
|
||||
d_course_choco_mountain_vertex_count,
|
||||
d_course_choco_mountain_packed,
|
||||
d_course_choco_mountain_packed_end,
|
||||
choco_mountain_textures,
|
||||
1,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_bowsers_castle_dl_mio0SegmentRomStart,
|
||||
_course_bowsers_castle_dl_mio0SegmentRomEnd,
|
||||
_bowsers_castle_vertexSegmentRomStart,
|
||||
_bowsers_castle_vertexSegmentRomEnd,
|
||||
_course_bowsers_castle_offsetsSegmentRomStart,
|
||||
_course_bowsers_castle_offsetsSegmentRomEnd,
|
||||
d_course_bowsers_castle_vertex,
|
||||
d_course_bowsers_castle_vertex_count,
|
||||
d_course_bowsers_castle_packed,
|
||||
d_course_bowsers_castle_packed_end,
|
||||
bowsers_castle_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_banshee_boardwalk_dl_mio0SegmentRomStart,
|
||||
_course_banshee_boardwalk_dl_mio0SegmentRomEnd,
|
||||
_banshee_boardwalk_vertexSegmentRomStart,
|
||||
_banshee_boardwalk_vertexSegmentRomEnd,
|
||||
_course_banshee_boardwalk_offsetsSegmentRomStart,
|
||||
_course_banshee_boardwalk_offsetsSegmentRomEnd,
|
||||
d_course_banshee_boardwalk_vertex,
|
||||
d_course_banshee_boardwalk_vertex_count,
|
||||
d_course_banshee_boardwalk_packed,
|
||||
d_course_banshee_boardwalk_packed_end,
|
||||
banshee_boardwalk_textures,
|
||||
1,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_yoshi_valley_dl_mio0SegmentRomStart,
|
||||
_course_yoshi_valley_dl_mio0SegmentRomEnd,
|
||||
_yoshi_valley_vertexSegmentRomStart,
|
||||
_yoshi_valley_vertexSegmentRomEnd,
|
||||
_course_yoshi_valley_offsetsSegmentRomStart,
|
||||
_course_yoshi_valley_offsetsSegmentRomEnd,
|
||||
d_course_yoshi_valley_vertex,
|
||||
d_course_yoshi_valley_vertex_count,
|
||||
d_course_yoshi_valley_packed,
|
||||
d_course_yoshi_valley_packed_end,
|
||||
yoshi_valley_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_frappe_snowland_dl_mio0SegmentRomStart,
|
||||
_course_frappe_snowland_dl_mio0SegmentRomEnd,
|
||||
_frappe_snowland_vertexSegmentRomStart,
|
||||
_frappe_snowland_vertexSegmentRomEnd,
|
||||
_course_frappe_snowland_offsetsSegmentRomStart,
|
||||
_course_frappe_snowland_offsetsSegmentRomEnd,
|
||||
d_course_frappe_snowland_vertex,
|
||||
d_course_frappe_snowland_vertex_count,
|
||||
d_course_frappe_snowland_packed,
|
||||
d_course_frappe_snowland_packed_end,
|
||||
frappe_snowland_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_koopa_troopa_beach_dl_mio0SegmentRomStart,
|
||||
_course_koopa_troopa_beach_dl_mio0SegmentRomEnd,
|
||||
_koopa_troopa_beach_vertexSegmentRomStart,
|
||||
_koopa_troopa_beach_vertexSegmentRomEnd,
|
||||
_course_koopa_troopa_beach_offsetsSegmentRomStart,
|
||||
_course_koopa_troopa_beach_offsetsSegmentRomEnd,
|
||||
d_course_koopa_troopa_beach_vertex,
|
||||
d_course_koopa_troopa_beach_vertex_count,
|
||||
d_course_koopa_troopa_beach_packed,
|
||||
d_course_koopa_troopa_beach_packed_end,
|
||||
koopa_troopa_beach_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_royal_raceway_dl_mio0SegmentRomStart,
|
||||
_course_royal_raceway_dl_mio0SegmentRomEnd,
|
||||
_royal_raceway_vertexSegmentRomStart,
|
||||
_royal_raceway_vertexSegmentRomEnd,
|
||||
_course_royal_raceway_offsetsSegmentRomStart,
|
||||
_course_royal_raceway_offsetsSegmentRomEnd,
|
||||
d_course_royal_raceway_vertex,
|
||||
d_course_royal_raceway_vertex_count,
|
||||
d_course_royal_raceway_packed,
|
||||
d_course_royal_raceway_packed_end,
|
||||
royal_raceway_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_luigi_raceway_dl_mio0SegmentRomStart,
|
||||
_course_luigi_raceway_dl_mio0SegmentRomEnd,
|
||||
_luigi_raceway_vertexSegmentRomStart,
|
||||
_luigi_raceway_vertexSegmentRomEnd,
|
||||
_course_luigi_raceway_offsetsSegmentRomStart,
|
||||
_course_luigi_raceway_offsetsSegmentRomEnd,
|
||||
d_course_luigi_raceway_vertex,
|
||||
d_course_luigi_raceway_vertex_count,
|
||||
d_course_luigi_raceway_packed,
|
||||
d_course_luigi_raceway_packed_end,
|
||||
luigi_raceway_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_moo_moo_farm_dl_mio0SegmentRomStart,
|
||||
_course_moo_moo_farm_dl_mio0SegmentRomEnd,
|
||||
_moo_moo_farm_vertexSegmentRomStart,
|
||||
_moo_moo_farm_vertexSegmentRomEnd,
|
||||
_course_moo_moo_farm_offsetsSegmentRomStart,
|
||||
_course_moo_moo_farm_offsetsSegmentRomEnd,
|
||||
d_course_moo_moo_farm_vertex,
|
||||
d_course_moo_moo_farm_vertex_count,
|
||||
d_course_moo_moo_farm_packed,
|
||||
d_course_moo_moo_farm_packed_end,
|
||||
moo_moo_farm_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_toads_turnpike_dl_mio0SegmentRomStart,
|
||||
_course_toads_turnpike_dl_mio0SegmentRomEnd,
|
||||
_toads_turnpike_vertexSegmentRomStart,
|
||||
_toads_turnpike_vertexSegmentRomEnd,
|
||||
_course_toads_turnpike_offsetsSegmentRomStart,
|
||||
_course_toads_turnpike_offsetsSegmentRomEnd,
|
||||
d_course_toads_turnpike_vertex,
|
||||
d_course_toads_turnpike_vertex_count,
|
||||
d_course_toads_turnpike_packed,
|
||||
d_course_toads_turnpike_packed_end,
|
||||
toads_turnpike_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_kalimari_desert_dl_mio0SegmentRomStart,
|
||||
_course_kalimari_desert_dl_mio0SegmentRomEnd,
|
||||
_kalimari_desert_vertexSegmentRomStart,
|
||||
_kalimari_desert_vertexSegmentRomEnd,
|
||||
_course_kalimari_desert_offsetsSegmentRomStart,
|
||||
_course_kalimari_desert_offsetsSegmentRomEnd,
|
||||
d_course_kalimari_desert_vertex,
|
||||
d_course_kalimari_desert_vertex_count,
|
||||
d_course_kalimari_desert_packed,
|
||||
d_course_kalimari_desert_packed_end,
|
||||
kalimari_desert_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_sherbet_land_dl_mio0SegmentRomStart,
|
||||
_course_sherbet_land_dl_mio0SegmentRomEnd,
|
||||
_sherbet_land_vertexSegmentRomStart,
|
||||
_sherbet_land_vertexSegmentRomEnd,
|
||||
_course_sherbet_land_offsetsSegmentRomStart,
|
||||
_course_sherbet_land_offsetsSegmentRomEnd,
|
||||
d_course_sherbet_land_vertex,
|
||||
d_course_sherbet_land_vertex_count,
|
||||
d_course_sherbet_land_packed,
|
||||
d_course_sherbet_land_packed_end,
|
||||
sherbet_land_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_rainbow_road_dl_mio0SegmentRomStart,
|
||||
_course_rainbow_road_dl_mio0SegmentRomEnd,
|
||||
_rainbow_road_vertexSegmentRomStart,
|
||||
_rainbow_road_vertexSegmentRomEnd,
|
||||
_course_rainbow_road_offsetsSegmentRomStart,
|
||||
_course_rainbow_road_offsetsSegmentRomEnd,
|
||||
d_course_rainbow_road_vertex,
|
||||
d_course_rainbow_road_vertex_count,
|
||||
d_course_rainbow_road_packed,
|
||||
d_course_rainbow_road_packed_end,
|
||||
rainbow_road_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_wario_stadium_dl_mio0SegmentRomStart,
|
||||
_course_wario_stadium_dl_mio0SegmentRomEnd,
|
||||
_wario_stadium_vertexSegmentRomStart,
|
||||
_wario_stadium_vertexSegmentRomEnd,
|
||||
_course_wario_stadium_offsetsSegmentRomStart,
|
||||
_course_wario_stadium_offsetsSegmentRomEnd,
|
||||
d_course_wario_stadium_vertex,
|
||||
d_course_wario_stadium_vertex_count,
|
||||
d_course_wario_stadium_packed,
|
||||
d_course_wario_stadium_packed_end,
|
||||
wario_stadium_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_block_fort_dl_mio0SegmentRomStart,
|
||||
_course_block_fort_dl_mio0SegmentRomEnd,
|
||||
_block_fort_vertexSegmentRomStart,
|
||||
_block_fort_vertexSegmentRomEnd,
|
||||
_course_block_fort_offsetsSegmentRomStart,
|
||||
_course_block_fort_offsetsSegmentRomEnd,
|
||||
d_course_block_fort_vertex,
|
||||
d_course_block_fort_vertex_count,
|
||||
d_course_block_fort_packed,
|
||||
d_course_block_fort_packed_end,
|
||||
block_fort_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_skyscraper_dl_mio0SegmentRomStart,
|
||||
_course_skyscraper_dl_mio0SegmentRomEnd,
|
||||
_skyscraper_vertexSegmentRomStart,
|
||||
_skyscraper_vertexSegmentRomEnd,
|
||||
_course_skyscraper_offsetsSegmentRomStart,
|
||||
_course_skyscraper_offsetsSegmentRomEnd,
|
||||
d_course_skyscraper_vertex,
|
||||
d_course_skyscraper_vertex_count,
|
||||
d_course_skyscraper_packed,
|
||||
d_course_skyscraper_packed_end,
|
||||
skyscraper_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_double_deck_dl_mio0SegmentRomStart,
|
||||
_course_double_deck_dl_mio0SegmentRomEnd,
|
||||
_double_deck_vertexSegmentRomStart,
|
||||
_double_deck_vertexSegmentRomEnd,
|
||||
_course_double_deck_offsetsSegmentRomStart,
|
||||
_course_double_deck_offsetsSegmentRomEnd,
|
||||
d_course_double_deck_vertex,
|
||||
d_course_double_deck_vertex_count,
|
||||
d_course_double_deck_packed,
|
||||
d_course_double_deck_packed_end,
|
||||
double_deck_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_dks_jungle_parkway_dl_mio0SegmentRomStart,
|
||||
_course_dks_jungle_parkway_dl_mio0SegmentRomEnd,
|
||||
_dks_jungle_parkway_vertexSegmentRomStart,
|
||||
_dks_jungle_parkway_vertexSegmentRomEnd,
|
||||
_course_dks_jungle_parkway_offsetsSegmentRomStart,
|
||||
_course_dks_jungle_parkway_offsetsSegmentRomEnd,
|
||||
d_course_dks_jungle_parkway_vertex,
|
||||
d_course_dks_jungle_parkway_vertex_count,
|
||||
d_course_dks_jungle_parkway_packed,
|
||||
d_course_dks_jungle_parkway_packed_end,
|
||||
dks_jungle_parkway_textures,
|
||||
0,
|
||||
0x0000,
|
||||
},
|
||||
{
|
||||
_course_big_donut_dl_mio0SegmentRomStart,
|
||||
_course_big_donut_dl_mio0SegmentRomEnd,
|
||||
_big_donut_vertexSegmentRomStart,
|
||||
_big_donut_vertexSegmentRomEnd,
|
||||
_course_big_donut_offsetsSegmentRomStart,
|
||||
_course_big_donut_offsetsSegmentRomEnd,
|
||||
d_course_big_donut_vertex,
|
||||
d_course_big_donut_vertex_count,
|
||||
d_course_big_donut_packed,
|
||||
d_course_big_donut_packed_end,
|
||||
big_donut_textures,
|
||||
0,
|
||||
0x0000,
|
||||
} };
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -7,19 +7,19 @@
|
|||
|
||||
// dlRomStart, vertexRomStart, & vertexStart, are u8* because mio0 compressed.
|
||||
struct CourseTable {
|
||||
u8 *dlRomStart; // 0x00 ROM start for segment 6 DL data
|
||||
u8 *dlRomEnd; // 0x04 ROM end for segment 6 DL data
|
||||
u8 *vertexRomStart; // 0x08 ROM start for segment 4 vertex data
|
||||
u8 *vertexRomEnd; // 0x0C ROM end for segment 7?
|
||||
u8 *offsetRomStart; // 0x10 ROM start for uncompressed segment 9 texture and DL addresses
|
||||
u8 *offsetRomEnd; // 0x14 ROM end for uncompressed segment 9 texture and DL addresses
|
||||
CourseVtx *vertexStart; // 0x18 segmented address of vertex data
|
||||
u32 vertexCount; // 0x1C number of vertices in vertex data
|
||||
u8 *packedStart; // 0x20 packed display list start address
|
||||
u8 *finalDisplaylistOffset; // 0x24
|
||||
u32 *textures; // 0x20 segmented address of textures table
|
||||
u16 unknown1; // 0x2C
|
||||
u16 padding; // 0x2E
|
||||
u8* dlRomStart; // 0x00 ROM start for segment 6 DL data
|
||||
u8* dlRomEnd; // 0x04 ROM end for segment 6 DL data
|
||||
u8* vertexRomStart; // 0x08 ROM start for segment 4 vertex data
|
||||
u8* vertexRomEnd; // 0x0C ROM end for segment 7?
|
||||
u8* offsetRomStart; // 0x10 ROM start for uncompressed segment 9 texture and DL addresses
|
||||
u8* offsetRomEnd; // 0x14 ROM end for uncompressed segment 9 texture and DL addresses
|
||||
CourseVtx* vertexStart; // 0x18 segmented address of vertex data
|
||||
u32 vertexCount; // 0x1C number of vertices in vertex data
|
||||
u8* packedStart; // 0x20 packed display list start address
|
||||
u8* finalDisplaylistOffset; // 0x24
|
||||
u32* textures; // 0x20 segmented address of textures table
|
||||
u16 unknown1; // 0x2C
|
||||
u16 padding; // 0x2E
|
||||
};
|
||||
|
||||
extern struct CourseTable gCourseTable[];
|
||||
|
|
|
|||
|
|
@ -3,58 +3,67 @@
|
|||
#include <assets/dks_jungle_parkway_data.h>
|
||||
|
||||
const course_texture dks_jungle_parkway_textures[] = {
|
||||
{gTexture648508, 0x01FE, 0x1000, 0x0},
|
||||
{gTexture6684F8, 0x010D, 0x0800, 0x0},
|
||||
{gTextureWoodBridgeSlats, 0x0DAB, 0x1000, 0x0},
|
||||
{gTexture654460, 0x0B12, 0x1000, 0x0},
|
||||
{gTexture654F74, 0x0A24, 0x1000, 0x0},
|
||||
{gTexture655998, 0x059F, 0x0800, 0x0},
|
||||
{gTexture655F38, 0x0BB9, 0x1000, 0x0},
|
||||
{gTexture656AF4, 0x0AD3, 0x1000, 0x0},
|
||||
{gTexture6575C8, 0x0DA7, 0x1000, 0x0},
|
||||
{gTexture658370, 0x0DBA, 0x1000, 0x0},
|
||||
{gTexture65912C, 0x0DBC, 0x1000, 0x0},
|
||||
{gTexture659EE8, 0x0EF5, 0x1000, 0x0},
|
||||
{gTexture65ADE0, 0x0D5A, 0x1000, 0x0},
|
||||
{gTexture65BB3C, 0x0D9E, 0x1000, 0x0},
|
||||
{gTexture65C8DC, 0x0CF5, 0x1000, 0x0},
|
||||
{gTexture65D5D4, 0x0D18, 0x1000, 0x0},
|
||||
{gTexture65E2EC, 0x02B0, 0x0800, 0x0},
|
||||
{gTexture65EAEC, 0x034A, 0x0800, 0x0},
|
||||
{gTexture65E59C, 0x054F, 0x1000, 0x0},
|
||||
{gTexture65EE38, 0x0CDE, 0x1000, 0x0},
|
||||
{gTexture65FB18, 0x03EE, 0x0800, 0x0},
|
||||
{gTextureSignPinkArrow, 0x0198, 0x0800, 0x0},
|
||||
{gTextureWaves0, 0x04D0, 0x0800, 0x0},
|
||||
{gTexture683844, 0x0655, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture648508, 0x01FE, 0x1000, 0x0 },
|
||||
{ gTexture6684F8, 0x010D, 0x0800, 0x0 },
|
||||
{ gTextureWoodBridgeSlats, 0x0DAB, 0x1000, 0x0 },
|
||||
{ gTexture654460, 0x0B12, 0x1000, 0x0 },
|
||||
{ gTexture654F74, 0x0A24, 0x1000, 0x0 },
|
||||
{ gTexture655998, 0x059F, 0x0800, 0x0 },
|
||||
{ gTexture655F38, 0x0BB9, 0x1000, 0x0 },
|
||||
{ gTexture656AF4, 0x0AD3, 0x1000, 0x0 },
|
||||
{ gTexture6575C8, 0x0DA7, 0x1000, 0x0 },
|
||||
{ gTexture658370, 0x0DBA, 0x1000, 0x0 },
|
||||
{ gTexture65912C, 0x0DBC, 0x1000, 0x0 },
|
||||
{ gTexture659EE8, 0x0EF5, 0x1000, 0x0 },
|
||||
{ gTexture65ADE0, 0x0D5A, 0x1000, 0x0 },
|
||||
{ gTexture65BB3C, 0x0D9E, 0x1000, 0x0 },
|
||||
{ gTexture65C8DC, 0x0CF5, 0x1000, 0x0 },
|
||||
{ gTexture65D5D4, 0x0D18, 0x1000, 0x0 },
|
||||
{ gTexture65E2EC, 0x02B0, 0x0800, 0x0 },
|
||||
{ gTexture65EAEC, 0x034A, 0x0800, 0x0 },
|
||||
{ gTexture65E59C, 0x054F, 0x1000, 0x0 },
|
||||
{ gTexture65EE38, 0x0CDE, 0x1000, 0x0 },
|
||||
{ gTexture65FB18, 0x03EE, 0x0800, 0x0 },
|
||||
{ gTextureSignPinkArrow, 0x0198, 0x0800, 0x0 },
|
||||
{ gTextureWaves0, 0x04D0, 0x0800, 0x0 },
|
||||
{ gTexture683844, 0x0655, 0x0800, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *dks_jungle_parkway_dls[] = {
|
||||
d_course_dks_jungle_parkway_dl_20, d_course_dks_jungle_parkway_dl_210, d_course_dks_jungle_parkway_dl_180, d_course_dks_jungle_parkway_dl_310,
|
||||
d_course_dks_jungle_parkway_dl_400, d_course_dks_jungle_parkway_dl_628, d_course_dks_jungle_parkway_dl_560, d_course_dks_jungle_parkway_dl_750,
|
||||
d_course_dks_jungle_parkway_dl_888, d_course_dks_jungle_parkway_dl_B00, d_course_dks_jungle_parkway_dl_A10, d_course_dks_jungle_parkway_dl_C30,
|
||||
d_course_dks_jungle_parkway_dl_D98, d_course_dks_jungle_parkway_dl_1028, d_course_dks_jungle_parkway_dl_EF0, d_course_dks_jungle_parkway_dl_1160,
|
||||
d_course_dks_jungle_parkway_dl_12E8, d_course_dks_jungle_parkway_dl_15E0, d_course_dks_jungle_parkway_dl_1478, d_course_dks_jungle_parkway_dl_1718,
|
||||
d_course_dks_jungle_parkway_dl_1890, d_course_dks_jungle_parkway_dl_1B20, d_course_dks_jungle_parkway_dl_1A00, d_course_dks_jungle_parkway_dl_1C20,
|
||||
d_course_dks_jungle_parkway_dl_1DB8, d_course_dks_jungle_parkway_dl_1FD8, d_course_dks_jungle_parkway_dl_1F20, d_course_dks_jungle_parkway_dl_20A0,
|
||||
d_course_dks_jungle_parkway_dl_2200, d_course_dks_jungle_parkway_dl_2398, d_course_dks_jungle_parkway_dl_2328, d_course_dks_jungle_parkway_dl_2480,
|
||||
d_course_dks_jungle_parkway_dl_2558, d_course_dks_jungle_parkway_dl_2810, d_course_dks_jungle_parkway_dl_2728, d_course_dks_jungle_parkway_dl_2928,
|
||||
d_course_dks_jungle_parkway_dl_2AC0, d_course_dks_jungle_parkway_dl_2D70, d_course_dks_jungle_parkway_dl_2B88, d_course_dks_jungle_parkway_dl_2E30,
|
||||
d_course_dks_jungle_parkway_dl_3010, d_course_dks_jungle_parkway_dl_3338, d_course_dks_jungle_parkway_dl_3100, d_course_dks_jungle_parkway_dl_3498,
|
||||
d_course_dks_jungle_parkway_dl_36A0, d_course_dks_jungle_parkway_dl_3988, d_course_dks_jungle_parkway_dl_3790, d_course_dks_jungle_parkway_dl_3B28,
|
||||
d_course_dks_jungle_parkway_dl_3CC8, d_course_dks_jungle_parkway_dl_3F78, d_course_dks_jungle_parkway_dl_3D88, d_course_dks_jungle_parkway_dl_4100,
|
||||
d_course_dks_jungle_parkway_dl_4250, d_course_dks_jungle_parkway_dl_4470, d_course_dks_jungle_parkway_dl_42F8, d_course_dks_jungle_parkway_dl_45C0,
|
||||
d_course_dks_jungle_parkway_dl_4658, d_course_dks_jungle_parkway_dl_4848, d_course_dks_jungle_parkway_dl_4710, d_course_dks_jungle_parkway_dl_4980,
|
||||
d_course_dks_jungle_parkway_dl_4A38, d_course_dks_jungle_parkway_dl_4C18, d_course_dks_jungle_parkway_dl_4AE8, d_course_dks_jungle_parkway_dl_4D10,
|
||||
d_course_dks_jungle_parkway_dl_4E10, d_course_dks_jungle_parkway_dl_51B0, d_course_dks_jungle_parkway_dl_4FB0, d_course_dks_jungle_parkway_dl_53F8,
|
||||
d_course_dks_jungle_parkway_dl_5580, d_course_dks_jungle_parkway_dl_57A0, d_course_dks_jungle_parkway_dl_5650, d_course_dks_jungle_parkway_dl_5920,
|
||||
d_course_dks_jungle_parkway_dl_59B8, d_course_dks_jungle_parkway_dl_5B90, d_course_dks_jungle_parkway_dl_5A50, d_course_dks_jungle_parkway_dl_5CB0,
|
||||
d_course_dks_jungle_parkway_dl_5D70, d_course_dks_jungle_parkway_dl_5EC8, d_course_dks_jungle_parkway_dl_5DF8, d_course_dks_jungle_parkway_dl_5FA8,
|
||||
d_course_dks_jungle_parkway_dl_6048, d_course_dks_jungle_parkway_dl_62D0, d_course_dks_jungle_parkway_dl_6178, d_course_dks_jungle_parkway_dl_6468,
|
||||
d_course_dks_jungle_parkway_dl_6588, d_course_dks_jungle_parkway_dl_6740, d_course_dks_jungle_parkway_dl_6680, d_course_dks_jungle_parkway_dl_67C0,
|
||||
d_course_dks_jungle_parkway_dl_68D0, d_course_dks_jungle_parkway_dl_6A70, d_course_dks_jungle_parkway_dl_69C8, d_course_dks_jungle_parkway_dl_6AD8,
|
||||
d_course_dks_jungle_parkway_dl_6BE8, d_course_dks_jungle_parkway_dl_6CB8, d_course_dks_jungle_parkway_dl_6C70, d_course_dks_jungle_parkway_dl_6D10,
|
||||
d_course_dks_jungle_parkway_dl_6D88, d_course_dks_jungle_parkway_dl_6E48, d_course_dks_jungle_parkway_dl_6E00, d_course_dks_jungle_parkway_dl_6EB0,
|
||||
d_course_dks_jungle_parkway_dl_6F10, d_course_dks_jungle_parkway_dl_7080, d_course_dks_jungle_parkway_dl_7008, d_course_dks_jungle_parkway_dl_7108,
|
||||
const Gfx* dks_jungle_parkway_dls[] = {
|
||||
d_course_dks_jungle_parkway_dl_20, d_course_dks_jungle_parkway_dl_210, d_course_dks_jungle_parkway_dl_180,
|
||||
d_course_dks_jungle_parkway_dl_310, d_course_dks_jungle_parkway_dl_400, d_course_dks_jungle_parkway_dl_628,
|
||||
d_course_dks_jungle_parkway_dl_560, d_course_dks_jungle_parkway_dl_750, d_course_dks_jungle_parkway_dl_888,
|
||||
d_course_dks_jungle_parkway_dl_B00, d_course_dks_jungle_parkway_dl_A10, d_course_dks_jungle_parkway_dl_C30,
|
||||
d_course_dks_jungle_parkway_dl_D98, d_course_dks_jungle_parkway_dl_1028, d_course_dks_jungle_parkway_dl_EF0,
|
||||
d_course_dks_jungle_parkway_dl_1160, d_course_dks_jungle_parkway_dl_12E8, d_course_dks_jungle_parkway_dl_15E0,
|
||||
d_course_dks_jungle_parkway_dl_1478, d_course_dks_jungle_parkway_dl_1718, d_course_dks_jungle_parkway_dl_1890,
|
||||
d_course_dks_jungle_parkway_dl_1B20, d_course_dks_jungle_parkway_dl_1A00, d_course_dks_jungle_parkway_dl_1C20,
|
||||
d_course_dks_jungle_parkway_dl_1DB8, d_course_dks_jungle_parkway_dl_1FD8, d_course_dks_jungle_parkway_dl_1F20,
|
||||
d_course_dks_jungle_parkway_dl_20A0, d_course_dks_jungle_parkway_dl_2200, d_course_dks_jungle_parkway_dl_2398,
|
||||
d_course_dks_jungle_parkway_dl_2328, d_course_dks_jungle_parkway_dl_2480, d_course_dks_jungle_parkway_dl_2558,
|
||||
d_course_dks_jungle_parkway_dl_2810, d_course_dks_jungle_parkway_dl_2728, d_course_dks_jungle_parkway_dl_2928,
|
||||
d_course_dks_jungle_parkway_dl_2AC0, d_course_dks_jungle_parkway_dl_2D70, d_course_dks_jungle_parkway_dl_2B88,
|
||||
d_course_dks_jungle_parkway_dl_2E30, d_course_dks_jungle_parkway_dl_3010, d_course_dks_jungle_parkway_dl_3338,
|
||||
d_course_dks_jungle_parkway_dl_3100, d_course_dks_jungle_parkway_dl_3498, d_course_dks_jungle_parkway_dl_36A0,
|
||||
d_course_dks_jungle_parkway_dl_3988, d_course_dks_jungle_parkway_dl_3790, d_course_dks_jungle_parkway_dl_3B28,
|
||||
d_course_dks_jungle_parkway_dl_3CC8, d_course_dks_jungle_parkway_dl_3F78, d_course_dks_jungle_parkway_dl_3D88,
|
||||
d_course_dks_jungle_parkway_dl_4100, d_course_dks_jungle_parkway_dl_4250, d_course_dks_jungle_parkway_dl_4470,
|
||||
d_course_dks_jungle_parkway_dl_42F8, d_course_dks_jungle_parkway_dl_45C0, d_course_dks_jungle_parkway_dl_4658,
|
||||
d_course_dks_jungle_parkway_dl_4848, d_course_dks_jungle_parkway_dl_4710, d_course_dks_jungle_parkway_dl_4980,
|
||||
d_course_dks_jungle_parkway_dl_4A38, d_course_dks_jungle_parkway_dl_4C18, d_course_dks_jungle_parkway_dl_4AE8,
|
||||
d_course_dks_jungle_parkway_dl_4D10, d_course_dks_jungle_parkway_dl_4E10, d_course_dks_jungle_parkway_dl_51B0,
|
||||
d_course_dks_jungle_parkway_dl_4FB0, d_course_dks_jungle_parkway_dl_53F8, d_course_dks_jungle_parkway_dl_5580,
|
||||
d_course_dks_jungle_parkway_dl_57A0, d_course_dks_jungle_parkway_dl_5650, d_course_dks_jungle_parkway_dl_5920,
|
||||
d_course_dks_jungle_parkway_dl_59B8, d_course_dks_jungle_parkway_dl_5B90, d_course_dks_jungle_parkway_dl_5A50,
|
||||
d_course_dks_jungle_parkway_dl_5CB0, d_course_dks_jungle_parkway_dl_5D70, d_course_dks_jungle_parkway_dl_5EC8,
|
||||
d_course_dks_jungle_parkway_dl_5DF8, d_course_dks_jungle_parkway_dl_5FA8, d_course_dks_jungle_parkway_dl_6048,
|
||||
d_course_dks_jungle_parkway_dl_62D0, d_course_dks_jungle_parkway_dl_6178, d_course_dks_jungle_parkway_dl_6468,
|
||||
d_course_dks_jungle_parkway_dl_6588, d_course_dks_jungle_parkway_dl_6740, d_course_dks_jungle_parkway_dl_6680,
|
||||
d_course_dks_jungle_parkway_dl_67C0, d_course_dks_jungle_parkway_dl_68D0, d_course_dks_jungle_parkway_dl_6A70,
|
||||
d_course_dks_jungle_parkway_dl_69C8, d_course_dks_jungle_parkway_dl_6AD8, d_course_dks_jungle_parkway_dl_6BE8,
|
||||
d_course_dks_jungle_parkway_dl_6CB8, d_course_dks_jungle_parkway_dl_6C70, d_course_dks_jungle_parkway_dl_6D10,
|
||||
d_course_dks_jungle_parkway_dl_6D88, d_course_dks_jungle_parkway_dl_6E48, d_course_dks_jungle_parkway_dl_6E00,
|
||||
d_course_dks_jungle_parkway_dl_6EB0, d_course_dks_jungle_parkway_dl_6F10, d_course_dks_jungle_parkway_dl_7080,
|
||||
d_course_dks_jungle_parkway_dl_7008, d_course_dks_jungle_parkway_dl_7108,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
#include "course_offsets.h"
|
||||
|
||||
const course_texture double_deck_textures[] = {
|
||||
{gTextureGrayCobblestone, 0x010C, 0x0800, 0x0},
|
||||
{gTexture642978, 0x010D, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTextureGrayCobblestone, 0x010C, 0x0800, 0x0 },
|
||||
{ gTexture642978, 0x010D, 0x0800, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,50 +3,35 @@
|
|||
#include <assets/frappe_snowland_data.h>
|
||||
|
||||
const course_texture frappe_snowland_textures[] = {
|
||||
{gTexture6684F8, 0x010D, 0x0800, 0x0},
|
||||
{gTexture66CA98, 0x02C9, 0x0800, 0x0},
|
||||
{gTexture66EBF0, 0x0146, 0x0800, 0x0},
|
||||
{gTexture675434, 0x0245, 0x0800, 0x0},
|
||||
{gTexture677F04, 0x0213, 0x0800, 0x0},
|
||||
{gTexture678118, 0x0314, 0x0800, 0x0},
|
||||
{gTexture679258, 0x04E3, 0x1000, 0x0},
|
||||
{gTexture67973C, 0x04C6, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture6684F8, 0x010D, 0x0800, 0x0 }, { gTexture66CA98, 0x02C9, 0x0800, 0x0 },
|
||||
{ gTexture66EBF0, 0x0146, 0x0800, 0x0 }, { gTexture675434, 0x0245, 0x0800, 0x0 },
|
||||
{ gTexture677F04, 0x0213, 0x0800, 0x0 }, { gTexture678118, 0x0314, 0x0800, 0x0 },
|
||||
{ gTexture679258, 0x04E3, 0x1000, 0x0 }, { gTexture67973C, 0x04C6, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *frappe_snowland_dls[] = {
|
||||
d_course_frappe_snowland_dl_0, d_course_frappe_snowland_dl_1B8,
|
||||
d_course_frappe_snowland_dl_C8, d_course_frappe_snowland_dl_298,
|
||||
d_course_frappe_snowland_dl_398, d_course_frappe_snowland_dl_540,
|
||||
d_course_frappe_snowland_dl_458, d_course_frappe_snowland_dl_610,
|
||||
d_course_frappe_snowland_dl_728, d_course_frappe_snowland_dl_8C0,
|
||||
d_course_frappe_snowland_dl_7C8, d_course_frappe_snowland_dl_940,
|
||||
d_course_frappe_snowland_dl_A38, d_course_frappe_snowland_dl_BA8,
|
||||
d_course_frappe_snowland_dl_AA8, d_course_frappe_snowland_dl_C38,
|
||||
d_course_frappe_snowland_dl_D28, d_course_frappe_snowland_dl_EC8,
|
||||
d_course_frappe_snowland_dl_DA8, d_course_frappe_snowland_dl_F90,
|
||||
d_course_frappe_snowland_dl_1068, d_course_frappe_snowland_dl_1240,
|
||||
d_course_frappe_snowland_dl_1118, d_course_frappe_snowland_dl_1360,
|
||||
d_course_frappe_snowland_dl_1430, d_course_frappe_snowland_dl_1610,
|
||||
d_course_frappe_snowland_dl_14E0, d_course_frappe_snowland_dl_1768,
|
||||
d_course_frappe_snowland_dl_1818, d_course_frappe_snowland_dl_1A50,
|
||||
d_course_frappe_snowland_dl_1930, d_course_frappe_snowland_dl_1BC8,
|
||||
d_course_frappe_snowland_dl_1C80, d_course_frappe_snowland_dl_1E98,
|
||||
d_course_frappe_snowland_dl_1DE8, d_course_frappe_snowland_dl_2000,
|
||||
d_course_frappe_snowland_dl_20B0, d_course_frappe_snowland_dl_2308,
|
||||
d_course_frappe_snowland_dl_2240, d_course_frappe_snowland_dl_2448,
|
||||
d_course_frappe_snowland_dl_2588, d_course_frappe_snowland_dl_2698,
|
||||
d_course_frappe_snowland_dl_2618, d_course_frappe_snowland_dl_2700,
|
||||
d_course_frappe_snowland_dl_2780, d_course_frappe_snowland_dl_2860,
|
||||
d_course_frappe_snowland_dl_27F8, d_course_frappe_snowland_dl_28A8,
|
||||
d_course_frappe_snowland_dl_2930, d_course_frappe_snowland_dl_2A40,
|
||||
d_course_frappe_snowland_dl_29B0, d_course_frappe_snowland_dl_2AB0,
|
||||
d_course_frappe_snowland_dl_2B48, d_course_frappe_snowland_dl_2C00,
|
||||
d_course_frappe_snowland_dl_2BA0, d_course_frappe_snowland_dl_2C50,
|
||||
d_course_frappe_snowland_dl_2CB8, d_course_frappe_snowland_dl_2D78,
|
||||
d_course_frappe_snowland_dl_2D20, d_course_frappe_snowland_dl_2DD0,
|
||||
d_course_frappe_snowland_dl_2E40, d_course_frappe_snowland_dl_3000,
|
||||
d_course_frappe_snowland_dl_2F40, d_course_frappe_snowland_dl_30D0,
|
||||
d_course_frappe_snowland_dl_3198, d_course_frappe_snowland_dl_3328,
|
||||
const Gfx* frappe_snowland_dls[] = {
|
||||
d_course_frappe_snowland_dl_0, d_course_frappe_snowland_dl_1B8, d_course_frappe_snowland_dl_C8,
|
||||
d_course_frappe_snowland_dl_298, d_course_frappe_snowland_dl_398, d_course_frappe_snowland_dl_540,
|
||||
d_course_frappe_snowland_dl_458, d_course_frappe_snowland_dl_610, d_course_frappe_snowland_dl_728,
|
||||
d_course_frappe_snowland_dl_8C0, d_course_frappe_snowland_dl_7C8, d_course_frappe_snowland_dl_940,
|
||||
d_course_frappe_snowland_dl_A38, d_course_frappe_snowland_dl_BA8, d_course_frappe_snowland_dl_AA8,
|
||||
d_course_frappe_snowland_dl_C38, d_course_frappe_snowland_dl_D28, d_course_frappe_snowland_dl_EC8,
|
||||
d_course_frappe_snowland_dl_DA8, d_course_frappe_snowland_dl_F90, d_course_frappe_snowland_dl_1068,
|
||||
d_course_frappe_snowland_dl_1240, d_course_frappe_snowland_dl_1118, d_course_frappe_snowland_dl_1360,
|
||||
d_course_frappe_snowland_dl_1430, d_course_frappe_snowland_dl_1610, d_course_frappe_snowland_dl_14E0,
|
||||
d_course_frappe_snowland_dl_1768, d_course_frappe_snowland_dl_1818, d_course_frappe_snowland_dl_1A50,
|
||||
d_course_frappe_snowland_dl_1930, d_course_frappe_snowland_dl_1BC8, d_course_frappe_snowland_dl_1C80,
|
||||
d_course_frappe_snowland_dl_1E98, d_course_frappe_snowland_dl_1DE8, d_course_frappe_snowland_dl_2000,
|
||||
d_course_frappe_snowland_dl_20B0, d_course_frappe_snowland_dl_2308, d_course_frappe_snowland_dl_2240,
|
||||
d_course_frappe_snowland_dl_2448, d_course_frappe_snowland_dl_2588, d_course_frappe_snowland_dl_2698,
|
||||
d_course_frappe_snowland_dl_2618, d_course_frappe_snowland_dl_2700, d_course_frappe_snowland_dl_2780,
|
||||
d_course_frappe_snowland_dl_2860, d_course_frappe_snowland_dl_27F8, d_course_frappe_snowland_dl_28A8,
|
||||
d_course_frappe_snowland_dl_2930, d_course_frappe_snowland_dl_2A40, d_course_frappe_snowland_dl_29B0,
|
||||
d_course_frappe_snowland_dl_2AB0, d_course_frappe_snowland_dl_2B48, d_course_frappe_snowland_dl_2C00,
|
||||
d_course_frappe_snowland_dl_2BA0, d_course_frappe_snowland_dl_2C50, d_course_frappe_snowland_dl_2CB8,
|
||||
d_course_frappe_snowland_dl_2D78, d_course_frappe_snowland_dl_2D20, d_course_frappe_snowland_dl_2DD0,
|
||||
d_course_frappe_snowland_dl_2E40, d_course_frappe_snowland_dl_3000, d_course_frappe_snowland_dl_2F40,
|
||||
d_course_frappe_snowland_dl_30D0, d_course_frappe_snowland_dl_3198, d_course_frappe_snowland_dl_3328,
|
||||
d_course_frappe_snowland_dl_3270, d_course_frappe_snowland_dl_33E0,
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,113 +3,47 @@
|
|||
#include <assets/kalimari_desert_data.h>
|
||||
|
||||
const course_texture kalimari_desert_textures[] = {
|
||||
{gTexture6684F8, 0x010D, 0x0800, 0x0},
|
||||
{gTextureSignLuigis0, 0x0287, 0x1000, 0x0},
|
||||
{gTextureSignLuigis1, 0x02AF, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0},
|
||||
{gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0},
|
||||
{gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0},
|
||||
{gTexture67490C, 0x021C, 0x0800, 0x0},
|
||||
{gTextureSignYoshi, 0x04DF, 0x1000, 0x0},
|
||||
{gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0},
|
||||
{gTexture646CA8, 0x073A, 0x1000, 0x0},
|
||||
{gTexture6473E4, 0x05AD, 0x1000, 0x0},
|
||||
{gTexture647994, 0x05B5, 0x1000, 0x0},
|
||||
{gTexture668920, 0x03D9, 0x0800, 0x0},
|
||||
{gTextureRailroadTrack, 0x0B5B, 0x1000, 0x0},
|
||||
{gTextureRailroadCrossingTrack, 0x0208, 0x1000, 0x0},
|
||||
{gTexture67291C, 0x059C, 0x0800, 0x0},
|
||||
{gTextureFenceBarbedWire, 0x021E, 0x1000, 0x0},
|
||||
{gTexture67D304, 0x091C, 0x1000, 0x0},
|
||||
{gTexture67E010, 0x0415, 0x0800, 0x0},
|
||||
{gTexture67EEAC, 0x0140, 0x0800, 0x0},
|
||||
{gTextureSignShellShot0, 0x038C, 0x1000, 0x0},
|
||||
{gTextureSignShellShot1, 0x0247, 0x1000, 0x0},
|
||||
{gTextureSignKoopaAir0, 0x0360, 0x1000, 0x0},
|
||||
{gTextureSignKoopaAir1, 0x0304, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture6684F8, 0x010D, 0x0800, 0x0 }, { gTextureSignLuigis0, 0x0287, 0x1000, 0x0 },
|
||||
{ gTextureSignLuigis1, 0x02AF, 0x1000, 0x0 }, { gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0 }, { gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0 },
|
||||
{ gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0 }, { gTexture67490C, 0x021C, 0x0800, 0x0 },
|
||||
{ gTextureSignYoshi, 0x04DF, 0x1000, 0x0 }, { gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0 },
|
||||
{ gTexture646CA8, 0x073A, 0x1000, 0x0 }, { gTexture6473E4, 0x05AD, 0x1000, 0x0 },
|
||||
{ gTexture647994, 0x05B5, 0x1000, 0x0 }, { gTexture668920, 0x03D9, 0x0800, 0x0 },
|
||||
{ gTextureRailroadTrack, 0x0B5B, 0x1000, 0x0 }, { gTextureRailroadCrossingTrack, 0x0208, 0x1000, 0x0 },
|
||||
{ gTexture67291C, 0x059C, 0x0800, 0x0 }, { gTextureFenceBarbedWire, 0x021E, 0x1000, 0x0 },
|
||||
{ gTexture67D304, 0x091C, 0x1000, 0x0 }, { gTexture67E010, 0x0415, 0x0800, 0x0 },
|
||||
{ gTexture67EEAC, 0x0140, 0x0800, 0x0 }, { gTextureSignShellShot0, 0x038C, 0x1000, 0x0 },
|
||||
{ gTextureSignShellShot1, 0x0247, 0x1000, 0x0 }, { gTextureSignKoopaAir0, 0x0360, 0x1000, 0x0 },
|
||||
{ gTextureSignKoopaAir1, 0x0304, 0x1000, 0x0 }, { 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *kalimari_desert_dls[] = {
|
||||
d_course_kalimari_desert_dl_0,
|
||||
d_course_kalimari_desert_dl_258,
|
||||
d_course_kalimari_desert_dl_100,
|
||||
d_course_kalimari_desert_dl_310,
|
||||
d_course_kalimari_desert_dl_4A0,
|
||||
d_course_kalimari_desert_dl_778,
|
||||
d_course_kalimari_desert_dl_5C0,
|
||||
d_course_kalimari_desert_dl_858,
|
||||
d_course_kalimari_desert_dl_A58,
|
||||
d_course_kalimari_desert_dl_CD0,
|
||||
d_course_kalimari_desert_dl_B38,
|
||||
d_course_kalimari_desert_dl_DD0,
|
||||
d_course_kalimari_desert_dl_F68,
|
||||
d_course_kalimari_desert_dl_1258,
|
||||
d_course_kalimari_desert_dl_1030,
|
||||
d_course_kalimari_desert_dl_1350,
|
||||
d_course_kalimari_desert_dl_14C0,
|
||||
d_course_kalimari_desert_dl_17C8,
|
||||
d_course_kalimari_desert_dl_1588,
|
||||
d_course_kalimari_desert_dl_18C8,
|
||||
d_course_kalimari_desert_dl_1A58,
|
||||
d_course_kalimari_desert_dl_1D48,
|
||||
d_course_kalimari_desert_dl_1B38,
|
||||
d_course_kalimari_desert_dl_1E80,
|
||||
d_course_kalimari_desert_dl_2000,
|
||||
d_course_kalimari_desert_dl_22D8,
|
||||
d_course_kalimari_desert_dl_20E0,
|
||||
d_course_kalimari_desert_dl_2458,
|
||||
d_course_kalimari_desert_dl_25D0,
|
||||
d_course_kalimari_desert_dl_2868,
|
||||
d_course_kalimari_desert_dl_26E8,
|
||||
d_course_kalimari_desert_dl_29C0,
|
||||
d_course_kalimari_desert_dl_2B40,
|
||||
d_course_kalimari_desert_dl_2DE8,
|
||||
d_course_kalimari_desert_dl_2C88,
|
||||
d_course_kalimari_desert_dl_2F30,
|
||||
d_course_kalimari_desert_dl_3068,
|
||||
d_course_kalimari_desert_dl_32F8,
|
||||
d_course_kalimari_desert_dl_31C0,
|
||||
d_course_kalimari_desert_dl_3460,
|
||||
d_course_kalimari_desert_dl_3590,
|
||||
d_course_kalimari_desert_dl_3818,
|
||||
d_course_kalimari_desert_dl_3718,
|
||||
d_course_kalimari_desert_dl_3998,
|
||||
d_course_kalimari_desert_dl_3AC0,
|
||||
d_course_kalimari_desert_dl_3DB8,
|
||||
d_course_kalimari_desert_dl_3CA0,
|
||||
d_course_kalimari_desert_dl_3FB0,
|
||||
d_course_kalimari_desert_dl_40A8,
|
||||
d_course_kalimari_desert_dl_4358,
|
||||
d_course_kalimari_desert_dl_4280,
|
||||
d_course_kalimari_desert_dl_4538,
|
||||
d_course_kalimari_desert_dl_4630,
|
||||
d_course_kalimari_desert_dl_49E0,
|
||||
d_course_kalimari_desert_dl_4908,
|
||||
d_course_kalimari_desert_dl_4BA0,
|
||||
d_course_kalimari_desert_dl_4CF0,
|
||||
d_course_kalimari_desert_dl_4FB0,
|
||||
d_course_kalimari_desert_dl_4EF8,
|
||||
d_course_kalimari_desert_dl_5100,
|
||||
d_course_kalimari_desert_dl_5208,
|
||||
d_course_kalimari_desert_dl_5470,
|
||||
d_course_kalimari_desert_dl_53A0,
|
||||
d_course_kalimari_desert_dl_55C8,
|
||||
d_course_kalimari_desert_dl_5730,
|
||||
d_course_kalimari_desert_dl_5978,
|
||||
d_course_kalimari_desert_dl_5898,
|
||||
d_course_kalimari_desert_dl_5AD0,
|
||||
d_course_kalimari_desert_dl_5BE8,
|
||||
d_course_kalimari_desert_dl_5DF8,
|
||||
d_course_kalimari_desert_dl_5D20,
|
||||
d_course_kalimari_desert_dl_5F20,
|
||||
d_course_kalimari_desert_dl_6028,
|
||||
d_course_kalimari_desert_dl_62F8,
|
||||
d_course_kalimari_desert_dl_61B0,
|
||||
d_course_kalimari_desert_dl_63E0,
|
||||
d_course_kalimari_desert_dl_65B0,
|
||||
d_course_kalimari_desert_dl_6838,
|
||||
d_course_kalimari_desert_dl_66F0,
|
||||
d_course_kalimari_desert_dl_6940,
|
||||
const Gfx* kalimari_desert_dls[] = {
|
||||
d_course_kalimari_desert_dl_0, d_course_kalimari_desert_dl_258, d_course_kalimari_desert_dl_100,
|
||||
d_course_kalimari_desert_dl_310, d_course_kalimari_desert_dl_4A0, d_course_kalimari_desert_dl_778,
|
||||
d_course_kalimari_desert_dl_5C0, d_course_kalimari_desert_dl_858, d_course_kalimari_desert_dl_A58,
|
||||
d_course_kalimari_desert_dl_CD0, d_course_kalimari_desert_dl_B38, d_course_kalimari_desert_dl_DD0,
|
||||
d_course_kalimari_desert_dl_F68, d_course_kalimari_desert_dl_1258, d_course_kalimari_desert_dl_1030,
|
||||
d_course_kalimari_desert_dl_1350, d_course_kalimari_desert_dl_14C0, d_course_kalimari_desert_dl_17C8,
|
||||
d_course_kalimari_desert_dl_1588, d_course_kalimari_desert_dl_18C8, d_course_kalimari_desert_dl_1A58,
|
||||
d_course_kalimari_desert_dl_1D48, d_course_kalimari_desert_dl_1B38, d_course_kalimari_desert_dl_1E80,
|
||||
d_course_kalimari_desert_dl_2000, d_course_kalimari_desert_dl_22D8, d_course_kalimari_desert_dl_20E0,
|
||||
d_course_kalimari_desert_dl_2458, d_course_kalimari_desert_dl_25D0, d_course_kalimari_desert_dl_2868,
|
||||
d_course_kalimari_desert_dl_26E8, d_course_kalimari_desert_dl_29C0, d_course_kalimari_desert_dl_2B40,
|
||||
d_course_kalimari_desert_dl_2DE8, d_course_kalimari_desert_dl_2C88, d_course_kalimari_desert_dl_2F30,
|
||||
d_course_kalimari_desert_dl_3068, d_course_kalimari_desert_dl_32F8, d_course_kalimari_desert_dl_31C0,
|
||||
d_course_kalimari_desert_dl_3460, d_course_kalimari_desert_dl_3590, d_course_kalimari_desert_dl_3818,
|
||||
d_course_kalimari_desert_dl_3718, d_course_kalimari_desert_dl_3998, d_course_kalimari_desert_dl_3AC0,
|
||||
d_course_kalimari_desert_dl_3DB8, d_course_kalimari_desert_dl_3CA0, d_course_kalimari_desert_dl_3FB0,
|
||||
d_course_kalimari_desert_dl_40A8, d_course_kalimari_desert_dl_4358, d_course_kalimari_desert_dl_4280,
|
||||
d_course_kalimari_desert_dl_4538, d_course_kalimari_desert_dl_4630, d_course_kalimari_desert_dl_49E0,
|
||||
d_course_kalimari_desert_dl_4908, d_course_kalimari_desert_dl_4BA0, d_course_kalimari_desert_dl_4CF0,
|
||||
d_course_kalimari_desert_dl_4FB0, d_course_kalimari_desert_dl_4EF8, d_course_kalimari_desert_dl_5100,
|
||||
d_course_kalimari_desert_dl_5208, d_course_kalimari_desert_dl_5470, d_course_kalimari_desert_dl_53A0,
|
||||
d_course_kalimari_desert_dl_55C8, d_course_kalimari_desert_dl_5730, d_course_kalimari_desert_dl_5978,
|
||||
d_course_kalimari_desert_dl_5898, d_course_kalimari_desert_dl_5AD0, d_course_kalimari_desert_dl_5BE8,
|
||||
d_course_kalimari_desert_dl_5DF8, d_course_kalimari_desert_dl_5D20, d_course_kalimari_desert_dl_5F20,
|
||||
d_course_kalimari_desert_dl_6028, d_course_kalimari_desert_dl_62F8, d_course_kalimari_desert_dl_61B0,
|
||||
d_course_kalimari_desert_dl_63E0, d_course_kalimari_desert_dl_65B0, d_course_kalimari_desert_dl_6838,
|
||||
d_course_kalimari_desert_dl_66F0, d_course_kalimari_desert_dl_6940,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,177 +3,129 @@
|
|||
#include <assets/koopa_troopa_beach_data.h>
|
||||
|
||||
const course_texture koopa_troopa_beach_textures[] = {
|
||||
{gTexture643B3C, 0x0798, 0x0800, 0x0},
|
||||
{gTexture66A3DC, 0x07C5, 0x0800, 0x0},
|
||||
{gTextureSignWoodRedArrow, 0x04E1, 0x1000, 0x0},
|
||||
{gTexture66DD38, 0x0330, 0x1000, 0x0},
|
||||
{gTexture643430, 0x0604, 0x0800, 0x0},
|
||||
{gTexture660D8C, 0x0126, 0x0800, 0x0},
|
||||
{gTexture6609D0, 0x03BB, 0x1000, 0x0},
|
||||
{gTextureGrass12, 0x0874, 0x0800, 0x0},
|
||||
{gTexture66CA98, 0x02C9, 0x0800, 0x0},
|
||||
{gTexture66EBF0, 0x0146, 0x0800, 0x0},
|
||||
{gTexture67BEE8, 0x02D0, 0x0800, 0x0},
|
||||
{gTextureSandFinish, 0x022E, 0x0800, 0x0},
|
||||
{gTextureWheelSteamEngine, 0x020F, 0x0800, 0x0},
|
||||
{gTexture669570, 0x0E6B, 0x1000, 0x0},
|
||||
{gTextureWaves1, 0x05C4, 0x0800, 0x0},
|
||||
{gTextureWaves2, 0x0488, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture643B3C, 0x0798, 0x0800, 0x0 },
|
||||
{ gTexture66A3DC, 0x07C5, 0x0800, 0x0 },
|
||||
{ gTextureSignWoodRedArrow, 0x04E1, 0x1000, 0x0 },
|
||||
{ gTexture66DD38, 0x0330, 0x1000, 0x0 },
|
||||
{ gTexture643430, 0x0604, 0x0800, 0x0 },
|
||||
{ gTexture660D8C, 0x0126, 0x0800, 0x0 },
|
||||
{ gTexture6609D0, 0x03BB, 0x1000, 0x0 },
|
||||
{ gTextureGrass12, 0x0874, 0x0800, 0x0 },
|
||||
{ gTexture66CA98, 0x02C9, 0x0800, 0x0 },
|
||||
{ gTexture66EBF0, 0x0146, 0x0800, 0x0 },
|
||||
{ gTexture67BEE8, 0x02D0, 0x0800, 0x0 },
|
||||
{ gTextureSandFinish, 0x022E, 0x0800, 0x0 },
|
||||
{ gTextureWheelSteamEngine, 0x020F, 0x0800, 0x0 },
|
||||
{ gTexture669570, 0x0E6B, 0x1000, 0x0 },
|
||||
{ gTextureWaves1, 0x05C4, 0x0800, 0x0 },
|
||||
{ gTextureWaves2, 0x0488, 0x0800, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
Gfx *koopa_troopa_beach_dls1[] = {
|
||||
d_course_koopa_troopa_beach_dl_90, d_course_koopa_troopa_beach_dl_278,
|
||||
d_course_koopa_troopa_beach_dl_188, d_course_koopa_troopa_beach_dl_3C0,
|
||||
d_course_koopa_troopa_beach_dl_4B0, d_course_koopa_troopa_beach_dl_6E0,
|
||||
d_course_koopa_troopa_beach_dl_5A0, d_course_koopa_troopa_beach_dl_828,
|
||||
d_course_koopa_troopa_beach_dl_960, d_course_koopa_troopa_beach_dl_B98,
|
||||
d_course_koopa_troopa_beach_dl_A58, d_course_koopa_troopa_beach_dl_CF0,
|
||||
d_course_koopa_troopa_beach_dl_E48, d_course_koopa_troopa_beach_dl_10D0,
|
||||
d_course_koopa_troopa_beach_dl_F60, d_course_koopa_troopa_beach_dl_1218,
|
||||
d_course_koopa_troopa_beach_dl_13B8, d_course_koopa_troopa_beach_dl_15E0,
|
||||
d_course_koopa_troopa_beach_dl_1498, d_course_koopa_troopa_beach_dl_1708,
|
||||
d_course_koopa_troopa_beach_dl_1818, d_course_koopa_troopa_beach_dl_1988,
|
||||
d_course_koopa_troopa_beach_dl_18E0, d_course_koopa_troopa_beach_dl_1A50,
|
||||
d_course_koopa_troopa_beach_dl_1AD8, d_course_koopa_troopa_beach_dl_1C48,
|
||||
d_course_koopa_troopa_beach_dl_1BB8, d_course_koopa_troopa_beach_dl_1D20,
|
||||
d_course_koopa_troopa_beach_dl_1DE0, d_course_koopa_troopa_beach_dl_1FE8,
|
||||
d_course_koopa_troopa_beach_dl_1EB0, d_course_koopa_troopa_beach_dl_20C8,
|
||||
d_course_koopa_troopa_beach_dl_2200, d_course_koopa_troopa_beach_dl_2440,
|
||||
d_course_koopa_troopa_beach_dl_22C8, d_course_koopa_troopa_beach_dl_2540,
|
||||
d_course_koopa_troopa_beach_dl_2660, d_course_koopa_troopa_beach_dl_2898,
|
||||
d_course_koopa_troopa_beach_dl_2760, d_course_koopa_troopa_beach_dl_2988,
|
||||
d_course_koopa_troopa_beach_dl_2AA0, d_course_koopa_troopa_beach_dl_2CC0,
|
||||
d_course_koopa_troopa_beach_dl_2B78, d_course_koopa_troopa_beach_dl_2DC0,
|
||||
d_course_koopa_troopa_beach_dl_2EC0, d_course_koopa_troopa_beach_dl_30E0,
|
||||
d_course_koopa_troopa_beach_dl_2FB0, d_course_koopa_troopa_beach_dl_3218,
|
||||
d_course_koopa_troopa_beach_dl_3308, d_course_koopa_troopa_beach_dl_3550,
|
||||
d_course_koopa_troopa_beach_dl_33F8, d_course_koopa_troopa_beach_dl_36D8,
|
||||
d_course_koopa_troopa_beach_dl_37B8, d_course_koopa_troopa_beach_dl_3A10,
|
||||
d_course_koopa_troopa_beach_dl_38A8, d_course_koopa_troopa_beach_dl_3BB8,
|
||||
d_course_koopa_troopa_beach_dl_3CC0, d_course_koopa_troopa_beach_dl_3F20,
|
||||
d_course_koopa_troopa_beach_dl_3DC0, d_course_koopa_troopa_beach_dl_40C0,
|
||||
d_course_koopa_troopa_beach_dl_41D0, d_course_koopa_troopa_beach_dl_4450,
|
||||
d_course_koopa_troopa_beach_dl_42D8, d_course_koopa_troopa_beach_dl_45D0,
|
||||
d_course_koopa_troopa_beach_dl_4700, d_course_koopa_troopa_beach_dl_49F0,
|
||||
d_course_koopa_troopa_beach_dl_4840, d_course_koopa_troopa_beach_dl_4BC8,
|
||||
d_course_koopa_troopa_beach_dl_4D08, d_course_koopa_troopa_beach_dl_4FF8,
|
||||
d_course_koopa_troopa_beach_dl_4E70, d_course_koopa_troopa_beach_dl_51C8,
|
||||
d_course_koopa_troopa_beach_dl_52D8, d_course_koopa_troopa_beach_dl_5500,
|
||||
d_course_koopa_troopa_beach_dl_53B8, d_course_koopa_troopa_beach_dl_5628,
|
||||
d_course_koopa_troopa_beach_dl_5778, d_course_koopa_troopa_beach_dl_5A50,
|
||||
d_course_koopa_troopa_beach_dl_58E0, d_course_koopa_troopa_beach_dl_5BB8,
|
||||
d_course_koopa_troopa_beach_dl_5D28, d_course_koopa_troopa_beach_dl_5F58,
|
||||
d_course_koopa_troopa_beach_dl_5E28, d_course_koopa_troopa_beach_dl_6050,
|
||||
d_course_koopa_troopa_beach_dl_61D0, d_course_koopa_troopa_beach_dl_6410,
|
||||
d_course_koopa_troopa_beach_dl_62F8, d_course_koopa_troopa_beach_dl_64F0,
|
||||
d_course_koopa_troopa_beach_dl_6660, d_course_koopa_troopa_beach_dl_6898,
|
||||
d_course_koopa_troopa_beach_dl_67A0, d_course_koopa_troopa_beach_dl_6968,
|
||||
d_course_koopa_troopa_beach_dl_6AC0, d_course_koopa_troopa_beach_dl_6D10,
|
||||
d_course_koopa_troopa_beach_dl_6C18, d_course_koopa_troopa_beach_dl_6E18,
|
||||
d_course_koopa_troopa_beach_dl_6F70, d_course_koopa_troopa_beach_dl_71C8,
|
||||
d_course_koopa_troopa_beach_dl_7100, d_course_koopa_troopa_beach_dl_7338,
|
||||
d_course_koopa_troopa_beach_dl_7478, d_course_koopa_troopa_beach_dl_7718,
|
||||
d_course_koopa_troopa_beach_dl_7640, d_course_koopa_troopa_beach_dl_78E8,
|
||||
d_course_koopa_troopa_beach_dl_79E8, d_course_koopa_troopa_beach_dl_7C08,
|
||||
d_course_koopa_troopa_beach_dl_7B50, d_course_koopa_troopa_beach_dl_7D58,
|
||||
d_course_koopa_troopa_beach_dl_7E38, d_course_koopa_troopa_beach_dl_8048,
|
||||
d_course_koopa_troopa_beach_dl_7F68, d_course_koopa_troopa_beach_dl_8150,
|
||||
d_course_koopa_troopa_beach_dl_8228, d_course_koopa_troopa_beach_dl_8448,
|
||||
d_course_koopa_troopa_beach_dl_8368, d_course_koopa_troopa_beach_dl_8550,
|
||||
d_course_koopa_troopa_beach_dl_8650, d_course_koopa_troopa_beach_dl_8878,
|
||||
d_course_koopa_troopa_beach_dl_8790, d_course_koopa_troopa_beach_dl_8958,
|
||||
d_course_koopa_troopa_beach_dl_8A98, d_course_koopa_troopa_beach_dl_8D48,
|
||||
d_course_koopa_troopa_beach_dl_8C48, d_course_koopa_troopa_beach_dl_8E30,
|
||||
d_course_koopa_troopa_beach_dl_9008, d_course_koopa_troopa_beach_dl_9288,
|
||||
d_course_koopa_troopa_beach_dl_9188, d_course_koopa_troopa_beach_dl_9378,
|
||||
d_course_koopa_troopa_beach_dl_9548, d_course_koopa_troopa_beach_dl_9798,
|
||||
d_course_koopa_troopa_beach_dl_96A0, d_course_koopa_troopa_beach_dl_98A0,
|
||||
d_course_koopa_troopa_beach_dl_9A30, d_course_koopa_troopa_beach_dl_9C38,
|
||||
d_course_koopa_troopa_beach_dl_9B58, d_course_koopa_troopa_beach_dl_9D98,
|
||||
d_course_koopa_troopa_beach_dl_9ED8, d_course_koopa_troopa_beach_dl_A0D0,
|
||||
d_course_koopa_troopa_beach_dl_9FE8, d_course_koopa_troopa_beach_dl_A220,
|
||||
d_course_koopa_troopa_beach_dl_A340, d_course_koopa_troopa_beach_dl_A608,
|
||||
d_course_koopa_troopa_beach_dl_A4D8, d_course_koopa_troopa_beach_dl_A780,
|
||||
d_course_koopa_troopa_beach_dl_A8D0, d_course_koopa_troopa_beach_dl_AB88,
|
||||
d_course_koopa_troopa_beach_dl_AA38, d_course_koopa_troopa_beach_dl_AC68,
|
||||
Gfx* koopa_troopa_beach_dls1[] = {
|
||||
d_course_koopa_troopa_beach_dl_90, d_course_koopa_troopa_beach_dl_278, d_course_koopa_troopa_beach_dl_188,
|
||||
d_course_koopa_troopa_beach_dl_3C0, d_course_koopa_troopa_beach_dl_4B0, d_course_koopa_troopa_beach_dl_6E0,
|
||||
d_course_koopa_troopa_beach_dl_5A0, d_course_koopa_troopa_beach_dl_828, d_course_koopa_troopa_beach_dl_960,
|
||||
d_course_koopa_troopa_beach_dl_B98, d_course_koopa_troopa_beach_dl_A58, d_course_koopa_troopa_beach_dl_CF0,
|
||||
d_course_koopa_troopa_beach_dl_E48, d_course_koopa_troopa_beach_dl_10D0, d_course_koopa_troopa_beach_dl_F60,
|
||||
d_course_koopa_troopa_beach_dl_1218, d_course_koopa_troopa_beach_dl_13B8, d_course_koopa_troopa_beach_dl_15E0,
|
||||
d_course_koopa_troopa_beach_dl_1498, d_course_koopa_troopa_beach_dl_1708, d_course_koopa_troopa_beach_dl_1818,
|
||||
d_course_koopa_troopa_beach_dl_1988, d_course_koopa_troopa_beach_dl_18E0, d_course_koopa_troopa_beach_dl_1A50,
|
||||
d_course_koopa_troopa_beach_dl_1AD8, d_course_koopa_troopa_beach_dl_1C48, d_course_koopa_troopa_beach_dl_1BB8,
|
||||
d_course_koopa_troopa_beach_dl_1D20, d_course_koopa_troopa_beach_dl_1DE0, d_course_koopa_troopa_beach_dl_1FE8,
|
||||
d_course_koopa_troopa_beach_dl_1EB0, d_course_koopa_troopa_beach_dl_20C8, d_course_koopa_troopa_beach_dl_2200,
|
||||
d_course_koopa_troopa_beach_dl_2440, d_course_koopa_troopa_beach_dl_22C8, d_course_koopa_troopa_beach_dl_2540,
|
||||
d_course_koopa_troopa_beach_dl_2660, d_course_koopa_troopa_beach_dl_2898, d_course_koopa_troopa_beach_dl_2760,
|
||||
d_course_koopa_troopa_beach_dl_2988, d_course_koopa_troopa_beach_dl_2AA0, d_course_koopa_troopa_beach_dl_2CC0,
|
||||
d_course_koopa_troopa_beach_dl_2B78, d_course_koopa_troopa_beach_dl_2DC0, d_course_koopa_troopa_beach_dl_2EC0,
|
||||
d_course_koopa_troopa_beach_dl_30E0, d_course_koopa_troopa_beach_dl_2FB0, d_course_koopa_troopa_beach_dl_3218,
|
||||
d_course_koopa_troopa_beach_dl_3308, d_course_koopa_troopa_beach_dl_3550, d_course_koopa_troopa_beach_dl_33F8,
|
||||
d_course_koopa_troopa_beach_dl_36D8, d_course_koopa_troopa_beach_dl_37B8, d_course_koopa_troopa_beach_dl_3A10,
|
||||
d_course_koopa_troopa_beach_dl_38A8, d_course_koopa_troopa_beach_dl_3BB8, d_course_koopa_troopa_beach_dl_3CC0,
|
||||
d_course_koopa_troopa_beach_dl_3F20, d_course_koopa_troopa_beach_dl_3DC0, d_course_koopa_troopa_beach_dl_40C0,
|
||||
d_course_koopa_troopa_beach_dl_41D0, d_course_koopa_troopa_beach_dl_4450, d_course_koopa_troopa_beach_dl_42D8,
|
||||
d_course_koopa_troopa_beach_dl_45D0, d_course_koopa_troopa_beach_dl_4700, d_course_koopa_troopa_beach_dl_49F0,
|
||||
d_course_koopa_troopa_beach_dl_4840, d_course_koopa_troopa_beach_dl_4BC8, d_course_koopa_troopa_beach_dl_4D08,
|
||||
d_course_koopa_troopa_beach_dl_4FF8, d_course_koopa_troopa_beach_dl_4E70, d_course_koopa_troopa_beach_dl_51C8,
|
||||
d_course_koopa_troopa_beach_dl_52D8, d_course_koopa_troopa_beach_dl_5500, d_course_koopa_troopa_beach_dl_53B8,
|
||||
d_course_koopa_troopa_beach_dl_5628, d_course_koopa_troopa_beach_dl_5778, d_course_koopa_troopa_beach_dl_5A50,
|
||||
d_course_koopa_troopa_beach_dl_58E0, d_course_koopa_troopa_beach_dl_5BB8, d_course_koopa_troopa_beach_dl_5D28,
|
||||
d_course_koopa_troopa_beach_dl_5F58, d_course_koopa_troopa_beach_dl_5E28, d_course_koopa_troopa_beach_dl_6050,
|
||||
d_course_koopa_troopa_beach_dl_61D0, d_course_koopa_troopa_beach_dl_6410, d_course_koopa_troopa_beach_dl_62F8,
|
||||
d_course_koopa_troopa_beach_dl_64F0, d_course_koopa_troopa_beach_dl_6660, d_course_koopa_troopa_beach_dl_6898,
|
||||
d_course_koopa_troopa_beach_dl_67A0, d_course_koopa_troopa_beach_dl_6968, d_course_koopa_troopa_beach_dl_6AC0,
|
||||
d_course_koopa_troopa_beach_dl_6D10, d_course_koopa_troopa_beach_dl_6C18, d_course_koopa_troopa_beach_dl_6E18,
|
||||
d_course_koopa_troopa_beach_dl_6F70, d_course_koopa_troopa_beach_dl_71C8, d_course_koopa_troopa_beach_dl_7100,
|
||||
d_course_koopa_troopa_beach_dl_7338, d_course_koopa_troopa_beach_dl_7478, d_course_koopa_troopa_beach_dl_7718,
|
||||
d_course_koopa_troopa_beach_dl_7640, d_course_koopa_troopa_beach_dl_78E8, d_course_koopa_troopa_beach_dl_79E8,
|
||||
d_course_koopa_troopa_beach_dl_7C08, d_course_koopa_troopa_beach_dl_7B50, d_course_koopa_troopa_beach_dl_7D58,
|
||||
d_course_koopa_troopa_beach_dl_7E38, d_course_koopa_troopa_beach_dl_8048, d_course_koopa_troopa_beach_dl_7F68,
|
||||
d_course_koopa_troopa_beach_dl_8150, d_course_koopa_troopa_beach_dl_8228, d_course_koopa_troopa_beach_dl_8448,
|
||||
d_course_koopa_troopa_beach_dl_8368, d_course_koopa_troopa_beach_dl_8550, d_course_koopa_troopa_beach_dl_8650,
|
||||
d_course_koopa_troopa_beach_dl_8878, d_course_koopa_troopa_beach_dl_8790, d_course_koopa_troopa_beach_dl_8958,
|
||||
d_course_koopa_troopa_beach_dl_8A98, d_course_koopa_troopa_beach_dl_8D48, d_course_koopa_troopa_beach_dl_8C48,
|
||||
d_course_koopa_troopa_beach_dl_8E30, d_course_koopa_troopa_beach_dl_9008, d_course_koopa_troopa_beach_dl_9288,
|
||||
d_course_koopa_troopa_beach_dl_9188, d_course_koopa_troopa_beach_dl_9378, d_course_koopa_troopa_beach_dl_9548,
|
||||
d_course_koopa_troopa_beach_dl_9798, d_course_koopa_troopa_beach_dl_96A0, d_course_koopa_troopa_beach_dl_98A0,
|
||||
d_course_koopa_troopa_beach_dl_9A30, d_course_koopa_troopa_beach_dl_9C38, d_course_koopa_troopa_beach_dl_9B58,
|
||||
d_course_koopa_troopa_beach_dl_9D98, d_course_koopa_troopa_beach_dl_9ED8, d_course_koopa_troopa_beach_dl_A0D0,
|
||||
d_course_koopa_troopa_beach_dl_9FE8, d_course_koopa_troopa_beach_dl_A220, d_course_koopa_troopa_beach_dl_A340,
|
||||
d_course_koopa_troopa_beach_dl_A608, d_course_koopa_troopa_beach_dl_A4D8, d_course_koopa_troopa_beach_dl_A780,
|
||||
d_course_koopa_troopa_beach_dl_A8D0, d_course_koopa_troopa_beach_dl_AB88, d_course_koopa_troopa_beach_dl_AA38,
|
||||
d_course_koopa_troopa_beach_dl_AC68,
|
||||
};
|
||||
|
||||
Gfx *koopa_troopa_beach_dls2[] = {
|
||||
d_course_koopa_troopa_beach_dl_118, d_course_koopa_troopa_beach_dl_328,
|
||||
d_course_koopa_troopa_beach_dl_218, d_course_koopa_troopa_beach_dl_458,
|
||||
d_course_koopa_troopa_beach_dl_530, d_course_koopa_troopa_beach_dl_790,
|
||||
d_course_koopa_troopa_beach_dl_658, d_course_koopa_troopa_beach_dl_8F0,
|
||||
d_course_koopa_troopa_beach_dl_9E0, d_course_koopa_troopa_beach_dl_C50,
|
||||
d_course_koopa_troopa_beach_dl_B10, d_course_koopa_troopa_beach_dl_DB8,
|
||||
d_course_koopa_troopa_beach_dl_EE0, d_course_koopa_troopa_beach_dl_1178,
|
||||
d_course_koopa_troopa_beach_dl_1040, d_course_koopa_troopa_beach_dl_1310,
|
||||
d_course_koopa_troopa_beach_dl_1430, d_course_koopa_troopa_beach_dl_1680,
|
||||
d_course_koopa_troopa_beach_dl_1558, d_course_koopa_troopa_beach_dl_17B0,
|
||||
d_course_koopa_troopa_beach_dl_1878, d_course_koopa_troopa_beach_dl_19E8,
|
||||
d_course_koopa_troopa_beach_dl_1940, d_course_koopa_troopa_beach_dl_1AA8,
|
||||
d_course_koopa_troopa_beach_dl_1B50, d_course_koopa_troopa_beach_dl_1CB0,
|
||||
d_course_koopa_troopa_beach_dl_1C00, d_course_koopa_troopa_beach_dl_1D88,
|
||||
d_course_koopa_troopa_beach_dl_1E40, d_course_koopa_troopa_beach_dl_2058,
|
||||
d_course_koopa_troopa_beach_dl_1F68, d_course_koopa_troopa_beach_dl_2178,
|
||||
d_course_koopa_troopa_beach_dl_2258, d_course_koopa_troopa_beach_dl_24C0,
|
||||
d_course_koopa_troopa_beach_dl_2390, d_course_koopa_troopa_beach_dl_25D8,
|
||||
d_course_koopa_troopa_beach_dl_26E0, d_course_koopa_troopa_beach_dl_2910,
|
||||
d_course_koopa_troopa_beach_dl_2800, d_course_koopa_troopa_beach_dl_2A18,
|
||||
d_course_koopa_troopa_beach_dl_2B08, d_course_koopa_troopa_beach_dl_2D50,
|
||||
d_course_koopa_troopa_beach_dl_2C28, d_course_koopa_troopa_beach_dl_2E38,
|
||||
d_course_koopa_troopa_beach_dl_2F30, d_course_koopa_troopa_beach_dl_3198,
|
||||
d_course_koopa_troopa_beach_dl_3050, d_course_koopa_troopa_beach_dl_3278,
|
||||
d_course_koopa_troopa_beach_dl_3370, d_course_koopa_troopa_beach_dl_3628,
|
||||
d_course_koopa_troopa_beach_dl_34B8, d_course_koopa_troopa_beach_dl_3730,
|
||||
d_course_koopa_troopa_beach_dl_3830, d_course_koopa_troopa_beach_dl_3B10,
|
||||
d_course_koopa_troopa_beach_dl_3980, d_course_koopa_troopa_beach_dl_3C28,
|
||||
d_course_koopa_troopa_beach_dl_3D40, d_course_koopa_troopa_beach_dl_4028,
|
||||
d_course_koopa_troopa_beach_dl_3EA8, d_course_koopa_troopa_beach_dl_4138,
|
||||
d_course_koopa_troopa_beach_dl_4260, d_course_koopa_troopa_beach_dl_4548,
|
||||
d_course_koopa_troopa_beach_dl_43C0, d_course_koopa_troopa_beach_dl_4670,
|
||||
d_course_koopa_troopa_beach_dl_47C0, d_course_koopa_troopa_beach_dl_4B28,
|
||||
d_course_koopa_troopa_beach_dl_4948, d_course_koopa_troopa_beach_dl_4C70,
|
||||
d_course_koopa_troopa_beach_dl_4DC0, d_course_koopa_troopa_beach_dl_5120,
|
||||
d_course_koopa_troopa_beach_dl_4F58, d_course_koopa_troopa_beach_dl_5248,
|
||||
d_course_koopa_troopa_beach_dl_5358, d_course_koopa_troopa_beach_dl_55D0,
|
||||
d_course_koopa_troopa_beach_dl_5480, d_course_koopa_troopa_beach_dl_56D0,
|
||||
d_course_koopa_troopa_beach_dl_5840, d_course_koopa_troopa_beach_dl_5B48,
|
||||
d_course_koopa_troopa_beach_dl_59C8, d_course_koopa_troopa_beach_dl_5C88,
|
||||
d_course_koopa_troopa_beach_dl_5DB8, d_course_koopa_troopa_beach_dl_6000,
|
||||
d_course_koopa_troopa_beach_dl_5EE0, d_course_koopa_troopa_beach_dl_6128,
|
||||
d_course_koopa_troopa_beach_dl_6268, d_course_koopa_troopa_beach_dl_6498,
|
||||
d_course_koopa_troopa_beach_dl_6398, d_course_koopa_troopa_beach_dl_65B8,
|
||||
d_course_koopa_troopa_beach_dl_6718, d_course_koopa_troopa_beach_dl_6918,
|
||||
d_course_koopa_troopa_beach_dl_6830, d_course_koopa_troopa_beach_dl_6A28,
|
||||
d_course_koopa_troopa_beach_dl_6B88, d_course_koopa_troopa_beach_dl_6DB8,
|
||||
d_course_koopa_troopa_beach_dl_6CA0, d_course_koopa_troopa_beach_dl_6ED0,
|
||||
d_course_koopa_troopa_beach_dl_7060, d_course_koopa_troopa_beach_dl_72B0,
|
||||
d_course_koopa_troopa_beach_dl_7168, d_course_koopa_troopa_beach_dl_73F8,
|
||||
d_course_koopa_troopa_beach_dl_75A0, d_course_koopa_troopa_beach_dl_7840,
|
||||
d_course_koopa_troopa_beach_dl_76A8, d_course_koopa_troopa_beach_dl_7978,
|
||||
d_course_koopa_troopa_beach_dl_7AE0, d_course_koopa_troopa_beach_dl_7CE0,
|
||||
d_course_koopa_troopa_beach_dl_7BA0, d_course_koopa_troopa_beach_dl_7DD0,
|
||||
d_course_koopa_troopa_beach_dl_7EE0, d_course_koopa_troopa_beach_dl_80E0,
|
||||
d_course_koopa_troopa_beach_dl_7FC8, d_course_koopa_troopa_beach_dl_81B8,
|
||||
d_course_koopa_troopa_beach_dl_82D8, d_course_koopa_troopa_beach_dl_84D0,
|
||||
d_course_koopa_troopa_beach_dl_83D0, d_course_koopa_troopa_beach_dl_85E8,
|
||||
d_course_koopa_troopa_beach_dl_8710, d_course_koopa_troopa_beach_dl_88F0,
|
||||
d_course_koopa_troopa_beach_dl_8800, d_course_koopa_troopa_beach_dl_8A20,
|
||||
d_course_koopa_troopa_beach_dl_8BB0, d_course_koopa_troopa_beach_dl_8DC0,
|
||||
d_course_koopa_troopa_beach_dl_8CC8, d_course_koopa_troopa_beach_dl_8F50,
|
||||
d_course_koopa_troopa_beach_dl_90F0, d_course_koopa_troopa_beach_dl_92E8,
|
||||
d_course_koopa_troopa_beach_dl_9210, d_course_koopa_troopa_beach_dl_9498,
|
||||
d_course_koopa_troopa_beach_dl_9618, d_course_koopa_troopa_beach_dl_9818,
|
||||
d_course_koopa_troopa_beach_dl_9720, d_course_koopa_troopa_beach_dl_99A0,
|
||||
d_course_koopa_troopa_beach_dl_9AE0, d_course_koopa_troopa_beach_dl_9D00,
|
||||
d_course_koopa_troopa_beach_dl_9BC8, d_course_koopa_troopa_beach_dl_9E60,
|
||||
d_course_koopa_troopa_beach_dl_9F78, d_course_koopa_troopa_beach_dl_A190,
|
||||
d_course_koopa_troopa_beach_dl_A070, d_course_koopa_troopa_beach_dl_A2E8,
|
||||
d_course_koopa_troopa_beach_dl_A428, d_course_koopa_troopa_beach_dl_A6F0,
|
||||
d_course_koopa_troopa_beach_dl_A578, d_course_koopa_troopa_beach_dl_A828,
|
||||
d_course_koopa_troopa_beach_dl_A9A0, d_course_koopa_troopa_beach_dl_AC10,
|
||||
d_course_koopa_troopa_beach_dl_AAE8, d_course_koopa_troopa_beach_dl_AD40,
|
||||
Gfx* koopa_troopa_beach_dls2[] = {
|
||||
d_course_koopa_troopa_beach_dl_118, d_course_koopa_troopa_beach_dl_328, d_course_koopa_troopa_beach_dl_218,
|
||||
d_course_koopa_troopa_beach_dl_458, d_course_koopa_troopa_beach_dl_530, d_course_koopa_troopa_beach_dl_790,
|
||||
d_course_koopa_troopa_beach_dl_658, d_course_koopa_troopa_beach_dl_8F0, d_course_koopa_troopa_beach_dl_9E0,
|
||||
d_course_koopa_troopa_beach_dl_C50, d_course_koopa_troopa_beach_dl_B10, d_course_koopa_troopa_beach_dl_DB8,
|
||||
d_course_koopa_troopa_beach_dl_EE0, d_course_koopa_troopa_beach_dl_1178, d_course_koopa_troopa_beach_dl_1040,
|
||||
d_course_koopa_troopa_beach_dl_1310, d_course_koopa_troopa_beach_dl_1430, d_course_koopa_troopa_beach_dl_1680,
|
||||
d_course_koopa_troopa_beach_dl_1558, d_course_koopa_troopa_beach_dl_17B0, d_course_koopa_troopa_beach_dl_1878,
|
||||
d_course_koopa_troopa_beach_dl_19E8, d_course_koopa_troopa_beach_dl_1940, d_course_koopa_troopa_beach_dl_1AA8,
|
||||
d_course_koopa_troopa_beach_dl_1B50, d_course_koopa_troopa_beach_dl_1CB0, d_course_koopa_troopa_beach_dl_1C00,
|
||||
d_course_koopa_troopa_beach_dl_1D88, d_course_koopa_troopa_beach_dl_1E40, d_course_koopa_troopa_beach_dl_2058,
|
||||
d_course_koopa_troopa_beach_dl_1F68, d_course_koopa_troopa_beach_dl_2178, d_course_koopa_troopa_beach_dl_2258,
|
||||
d_course_koopa_troopa_beach_dl_24C0, d_course_koopa_troopa_beach_dl_2390, d_course_koopa_troopa_beach_dl_25D8,
|
||||
d_course_koopa_troopa_beach_dl_26E0, d_course_koopa_troopa_beach_dl_2910, d_course_koopa_troopa_beach_dl_2800,
|
||||
d_course_koopa_troopa_beach_dl_2A18, d_course_koopa_troopa_beach_dl_2B08, d_course_koopa_troopa_beach_dl_2D50,
|
||||
d_course_koopa_troopa_beach_dl_2C28, d_course_koopa_troopa_beach_dl_2E38, d_course_koopa_troopa_beach_dl_2F30,
|
||||
d_course_koopa_troopa_beach_dl_3198, d_course_koopa_troopa_beach_dl_3050, d_course_koopa_troopa_beach_dl_3278,
|
||||
d_course_koopa_troopa_beach_dl_3370, d_course_koopa_troopa_beach_dl_3628, d_course_koopa_troopa_beach_dl_34B8,
|
||||
d_course_koopa_troopa_beach_dl_3730, d_course_koopa_troopa_beach_dl_3830, d_course_koopa_troopa_beach_dl_3B10,
|
||||
d_course_koopa_troopa_beach_dl_3980, d_course_koopa_troopa_beach_dl_3C28, d_course_koopa_troopa_beach_dl_3D40,
|
||||
d_course_koopa_troopa_beach_dl_4028, d_course_koopa_troopa_beach_dl_3EA8, d_course_koopa_troopa_beach_dl_4138,
|
||||
d_course_koopa_troopa_beach_dl_4260, d_course_koopa_troopa_beach_dl_4548, d_course_koopa_troopa_beach_dl_43C0,
|
||||
d_course_koopa_troopa_beach_dl_4670, d_course_koopa_troopa_beach_dl_47C0, d_course_koopa_troopa_beach_dl_4B28,
|
||||
d_course_koopa_troopa_beach_dl_4948, d_course_koopa_troopa_beach_dl_4C70, d_course_koopa_troopa_beach_dl_4DC0,
|
||||
d_course_koopa_troopa_beach_dl_5120, d_course_koopa_troopa_beach_dl_4F58, d_course_koopa_troopa_beach_dl_5248,
|
||||
d_course_koopa_troopa_beach_dl_5358, d_course_koopa_troopa_beach_dl_55D0, d_course_koopa_troopa_beach_dl_5480,
|
||||
d_course_koopa_troopa_beach_dl_56D0, d_course_koopa_troopa_beach_dl_5840, d_course_koopa_troopa_beach_dl_5B48,
|
||||
d_course_koopa_troopa_beach_dl_59C8, d_course_koopa_troopa_beach_dl_5C88, d_course_koopa_troopa_beach_dl_5DB8,
|
||||
d_course_koopa_troopa_beach_dl_6000, d_course_koopa_troopa_beach_dl_5EE0, d_course_koopa_troopa_beach_dl_6128,
|
||||
d_course_koopa_troopa_beach_dl_6268, d_course_koopa_troopa_beach_dl_6498, d_course_koopa_troopa_beach_dl_6398,
|
||||
d_course_koopa_troopa_beach_dl_65B8, d_course_koopa_troopa_beach_dl_6718, d_course_koopa_troopa_beach_dl_6918,
|
||||
d_course_koopa_troopa_beach_dl_6830, d_course_koopa_troopa_beach_dl_6A28, d_course_koopa_troopa_beach_dl_6B88,
|
||||
d_course_koopa_troopa_beach_dl_6DB8, d_course_koopa_troopa_beach_dl_6CA0, d_course_koopa_troopa_beach_dl_6ED0,
|
||||
d_course_koopa_troopa_beach_dl_7060, d_course_koopa_troopa_beach_dl_72B0, d_course_koopa_troopa_beach_dl_7168,
|
||||
d_course_koopa_troopa_beach_dl_73F8, d_course_koopa_troopa_beach_dl_75A0, d_course_koopa_troopa_beach_dl_7840,
|
||||
d_course_koopa_troopa_beach_dl_76A8, d_course_koopa_troopa_beach_dl_7978, d_course_koopa_troopa_beach_dl_7AE0,
|
||||
d_course_koopa_troopa_beach_dl_7CE0, d_course_koopa_troopa_beach_dl_7BA0, d_course_koopa_troopa_beach_dl_7DD0,
|
||||
d_course_koopa_troopa_beach_dl_7EE0, d_course_koopa_troopa_beach_dl_80E0, d_course_koopa_troopa_beach_dl_7FC8,
|
||||
d_course_koopa_troopa_beach_dl_81B8, d_course_koopa_troopa_beach_dl_82D8, d_course_koopa_troopa_beach_dl_84D0,
|
||||
d_course_koopa_troopa_beach_dl_83D0, d_course_koopa_troopa_beach_dl_85E8, d_course_koopa_troopa_beach_dl_8710,
|
||||
d_course_koopa_troopa_beach_dl_88F0, d_course_koopa_troopa_beach_dl_8800, d_course_koopa_troopa_beach_dl_8A20,
|
||||
d_course_koopa_troopa_beach_dl_8BB0, d_course_koopa_troopa_beach_dl_8DC0, d_course_koopa_troopa_beach_dl_8CC8,
|
||||
d_course_koopa_troopa_beach_dl_8F50, d_course_koopa_troopa_beach_dl_90F0, d_course_koopa_troopa_beach_dl_92E8,
|
||||
d_course_koopa_troopa_beach_dl_9210, d_course_koopa_troopa_beach_dl_9498, d_course_koopa_troopa_beach_dl_9618,
|
||||
d_course_koopa_troopa_beach_dl_9818, d_course_koopa_troopa_beach_dl_9720, d_course_koopa_troopa_beach_dl_99A0,
|
||||
d_course_koopa_troopa_beach_dl_9AE0, d_course_koopa_troopa_beach_dl_9D00, d_course_koopa_troopa_beach_dl_9BC8,
|
||||
d_course_koopa_troopa_beach_dl_9E60, d_course_koopa_troopa_beach_dl_9F78, d_course_koopa_troopa_beach_dl_A190,
|
||||
d_course_koopa_troopa_beach_dl_A070, d_course_koopa_troopa_beach_dl_A2E8, d_course_koopa_troopa_beach_dl_A428,
|
||||
d_course_koopa_troopa_beach_dl_A6F0, d_course_koopa_troopa_beach_dl_A578, d_course_koopa_troopa_beach_dl_A828,
|
||||
d_course_koopa_troopa_beach_dl_A9A0, d_course_koopa_troopa_beach_dl_AC10, d_course_koopa_troopa_beach_dl_AAE8,
|
||||
d_course_koopa_troopa_beach_dl_AD40,
|
||||
};
|
||||
|
||||
// 0x06014828
|
||||
|
|
@ -187,204 +139,35 @@ u32 d_course_koopa_troopa_beach_unk_data1[] = {
|
|||
|
||||
// 0x06014838
|
||||
s16 d_course_koopa_troopa_beach_unk_data2[] = {
|
||||
0x0000, 0x0000,
|
||||
0x0000, 0x0001,
|
||||
0x0002, 0x0003,
|
||||
0x0005, 0x0006,
|
||||
0x0007, 0x0007,
|
||||
0x0007, 0x0006,
|
||||
0x0005, 0x0003,
|
||||
0x0002, 0x0001,
|
||||
0x0000, 0x0000,
|
||||
0x0000, 0xffff,
|
||||
0xffff, 0xffff,
|
||||
0xffff, 0xffff,
|
||||
0xffff, 0xffff,
|
||||
0xffff, 0xffff,
|
||||
0xffff, 0xffff,
|
||||
0x0000, 0x0000,
|
||||
0x0000, 0x0000,
|
||||
0x0000, 0x0000,
|
||||
0x0000, 0xffff,
|
||||
0x0000, 0x0000,
|
||||
0x0001, 0x0001,
|
||||
0x0000, 0x0000,
|
||||
0xffff, 0xffff,
|
||||
0xffff, 0xffff,
|
||||
0x0000, 0x0000,
|
||||
0x0001, 0x0001,
|
||||
0x0001, 0x0000,
|
||||
0x0000, 0x0000,
|
||||
0x3fff, 0x3fff,
|
||||
0x3fff, 0x18a7,
|
||||
0x0e34, 0x03c1,
|
||||
0xfaa6, 0xf434,
|
||||
0xf1c2, 0xf434,
|
||||
0xfaa7, 0x03c3,
|
||||
0x0e36, 0x18a8,
|
||||
0x21c6, 0x2838,
|
||||
0x2aaa, 0x2845,
|
||||
0x216b, 0x1728,
|
||||
0x0b90, 0x00b6,
|
||||
0xf8af, 0xf58c,
|
||||
0xf8e3, 0x003c,
|
||||
0x0795, 0x0aed,
|
||||
0x0aaa, 0x09ed,
|
||||
0x08cc, 0x0759,
|
||||
0x05ab, 0x03d3,
|
||||
0x01e8, 0xfffe,
|
||||
0xfe26, 0xfc78,
|
||||
0xfb05, 0xf9e4,
|
||||
0xf927, 0xf8e4,
|
||||
0x0000, 0x071c,
|
||||
0x0652, 0x044a,
|
||||
0x0183, 0xfe7d,
|
||||
0xfbb6, 0xf9ae,
|
||||
0xf8e4, 0xf9f5,
|
||||
0xfcea, 0x0163,
|
||||
0x0705, 0x0d71,
|
||||
0x1449, 0x1b2f,
|
||||
0xfac3, 0xf4e1,
|
||||
0xf2ba, 0xf570,
|
||||
0xfc94, 0x06ac,
|
||||
0x1240, 0x1dd3,
|
||||
0x27ec, 0x2f11,
|
||||
0x31c6, 0x2e8b,
|
||||
0x263e, 0x1afb,
|
||||
0x0edc, 0x03f9,
|
||||
0xfcee, 0xfa23,
|
||||
0xfa72, 0xfcb3,
|
||||
0xffbd, 0x0268,
|
||||
0x038e, 0x0387,
|
||||
0x0373, 0x0355,
|
||||
0x032f, 0x0305,
|
||||
0x02d8, 0x02ab,
|
||||
0x0280, 0x025b,
|
||||
0x023d, 0x0229,
|
||||
0x0222, 0x05b0,
|
||||
0x0143, 0xf90d,
|
||||
0xf4a0, 0x071c,
|
||||
0x0dfa, 0x1110,
|
||||
0x11c6, 0x0f68,
|
||||
0x097b, 0x01c7,
|
||||
0xfa14, 0xf427,
|
||||
0xf1c8, 0xfc72,
|
||||
0x071c, 0x0716,
|
||||
0x06e6, 0x065d,
|
||||
0x054b, 0xfdde,
|
||||
0xe698, 0xeea7,
|
||||
0xfa0b, 0x0719,
|
||||
0x1428, 0x1f8d,
|
||||
0x279b, 0x2aaa,
|
||||
0x2816, 0x2131,
|
||||
0x173d, 0x0b7b,
|
||||
0xff2d, 0xf394,
|
||||
0xe9f3, 0xe38a,
|
||||
0xe234, 0xe55c,
|
||||
0xea9a, 0xef85,
|
||||
0xf1b8, 0xf1ba,
|
||||
0xf1b7, 0xf1b7,
|
||||
0xf1c4, 0xf1d8,
|
||||
0xf1e7, 0xf1f3,
|
||||
0xf1f9, 0xf1fc,
|
||||
0xf1fa, 0xf1f4,
|
||||
0xf1e9, 0xf1db,
|
||||
0xf1c8, 0xee3a,
|
||||
0xf4b0, 0x02ae,
|
||||
0x103a, 0x1555,
|
||||
0x0b47, 0xfa83,
|
||||
0xf1c8, 0xf05c,
|
||||
0xee3a, 0xf330,
|
||||
0xfe33, 0x0939,
|
||||
0x0e38, 0x0bd6,
|
||||
0x05bb, 0xfd65,
|
||||
0xf451, 0xebfd,
|
||||
0xe5e6, 0xe741,
|
||||
0xf1ad, 0xfc24,
|
||||
0x054b, 0x0bc7,
|
||||
0x0e3e, 0x0bcc,
|
||||
0x0559, 0xfc3d,
|
||||
0xf1ca, 0xe758,
|
||||
0xde3a, 0xd7c8,
|
||||
0xd556, 0xd7c8,
|
||||
0xde95, 0xe8b9,
|
||||
0xf44d, 0xff32,
|
||||
0x0749, 0x0a74,
|
||||
0x071d, 0xffc4,
|
||||
0xf86b, 0xf513,
|
||||
0xf559, 0xf61d,
|
||||
0xf74a, 0xf8cb,
|
||||
0xfa8a, 0xfc74,
|
||||
0xfe73, 0x0071,
|
||||
0x025b, 0x041a,
|
||||
0x059b, 0x06c8,
|
||||
0x078c, 0x07d2,
|
||||
0x005b, 0xf8e4,
|
||||
0xf9ae, 0xfbb6,
|
||||
0xfe7d, 0x0183,
|
||||
0x044a, 0x0652,
|
||||
0x071c, 0x060a,
|
||||
0x0312, 0xfe95,
|
||||
0xf8ef, 0xf281,
|
||||
0xebaa, 0xe4c8,
|
||||
0x051e, 0x0b0f,
|
||||
0x0d46, 0x0a90,
|
||||
0x036c, 0xf954,
|
||||
0xedc0, 0xe22d,
|
||||
0xd814, 0xd0ef,
|
||||
0xce3a, 0xd176,
|
||||
0xd9c4, 0xe508,
|
||||
0xf128, 0xfc07,
|
||||
0x030e, 0x05d8,
|
||||
0x0589, 0x034a,
|
||||
0x0041, 0xfd97,
|
||||
0xfc72, 0xfc79,
|
||||
0xfc8d, 0xfcab,
|
||||
0xfcd1, 0xfcfb,
|
||||
0xfd28, 0xfd55,
|
||||
0xfd80, 0xfda5,
|
||||
0xfdc3, 0xfdd7,
|
||||
0xfdde, 0xfa50,
|
||||
0xfe8e, 0x066d,
|
||||
0x0aaa, 0xf8e4,
|
||||
0xf08a, 0xee33,
|
||||
0xee3a, 0xf098,
|
||||
0xf685, 0xfe39,
|
||||
0x05ec, 0x0bd9,
|
||||
0x0e38, 0x0333,
|
||||
0xf82e, 0xf848,
|
||||
0xf8a7, 0xf968,
|
||||
0xfaa7, 0x0222,
|
||||
0x1968, 0x1159,
|
||||
0x05f5, 0xf8e7,
|
||||
0xebd8, 0xe073,
|
||||
0xd865, 0xd556,
|
||||
0xd865, 0xe073,
|
||||
0xebd8, 0xf8e7,
|
||||
0x05f5, 0x1159,
|
||||
0x1968, 0x1c76,
|
||||
0x1afd, 0x1778,
|
||||
0x1346, 0x0fc2,
|
||||
0x0e48, 0x0e46,
|
||||
0x0e42, 0x0e3e,
|
||||
0x0e3c, 0x0e3c,
|
||||
0x0e3c, 0x0e3b,
|
||||
0x0e3b, 0x0e3a,
|
||||
0x0e3a, 0x0e39,
|
||||
0x0e39, 0x0e38,
|
||||
0x0e38, 0x11c6,
|
||||
0x0b51, 0xfd4c,
|
||||
0xefbd, 0xeaab,
|
||||
0xf4b6, 0x056a,
|
||||
0x0e38, 0x0fa4,
|
||||
0x11c6, 0x0cd6,
|
||||
0x01d4, 0xf6cd,
|
||||
0xf1c8, 0xf425,
|
||||
0xfa3e, 0x0294,
|
||||
0x0ba9, 0x1400,
|
||||
0x1a19, 0x3fff,
|
||||
0x3fff, 0xc001,
|
||||
0x3fff, 0x8001,
|
||||
0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0005, 0x0006, 0x0007, 0x0007, 0x0007, 0x0006, 0x0005, 0x0003,
|
||||
0x0002, 0x0001, 0x0000, 0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff, 0xffff,
|
||||
0xffff, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0xffff, 0x0000, 0x0000, 0x0001, 0x0001,
|
||||
0x0000, 0x0000, 0xffff, 0xffff, 0xffff, 0xffff, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000,
|
||||
0x3fff, 0x3fff, 0x3fff, 0x18a7, 0x0e34, 0x03c1, 0xfaa6, 0xf434, 0xf1c2, 0xf434, 0xfaa7, 0x03c3, 0x0e36, 0x18a8,
|
||||
0x21c6, 0x2838, 0x2aaa, 0x2845, 0x216b, 0x1728, 0x0b90, 0x00b6, 0xf8af, 0xf58c, 0xf8e3, 0x003c, 0x0795, 0x0aed,
|
||||
0x0aaa, 0x09ed, 0x08cc, 0x0759, 0x05ab, 0x03d3, 0x01e8, 0xfffe, 0xfe26, 0xfc78, 0xfb05, 0xf9e4, 0xf927, 0xf8e4,
|
||||
0x0000, 0x071c, 0x0652, 0x044a, 0x0183, 0xfe7d, 0xfbb6, 0xf9ae, 0xf8e4, 0xf9f5, 0xfcea, 0x0163, 0x0705, 0x0d71,
|
||||
0x1449, 0x1b2f, 0xfac3, 0xf4e1, 0xf2ba, 0xf570, 0xfc94, 0x06ac, 0x1240, 0x1dd3, 0x27ec, 0x2f11, 0x31c6, 0x2e8b,
|
||||
0x263e, 0x1afb, 0x0edc, 0x03f9, 0xfcee, 0xfa23, 0xfa72, 0xfcb3, 0xffbd, 0x0268, 0x038e, 0x0387, 0x0373, 0x0355,
|
||||
0x032f, 0x0305, 0x02d8, 0x02ab, 0x0280, 0x025b, 0x023d, 0x0229, 0x0222, 0x05b0, 0x0143, 0xf90d, 0xf4a0, 0x071c,
|
||||
0x0dfa, 0x1110, 0x11c6, 0x0f68, 0x097b, 0x01c7, 0xfa14, 0xf427, 0xf1c8, 0xfc72, 0x071c, 0x0716, 0x06e6, 0x065d,
|
||||
0x054b, 0xfdde, 0xe698, 0xeea7, 0xfa0b, 0x0719, 0x1428, 0x1f8d, 0x279b, 0x2aaa, 0x2816, 0x2131, 0x173d, 0x0b7b,
|
||||
0xff2d, 0xf394, 0xe9f3, 0xe38a, 0xe234, 0xe55c, 0xea9a, 0xef85, 0xf1b8, 0xf1ba, 0xf1b7, 0xf1b7, 0xf1c4, 0xf1d8,
|
||||
0xf1e7, 0xf1f3, 0xf1f9, 0xf1fc, 0xf1fa, 0xf1f4, 0xf1e9, 0xf1db, 0xf1c8, 0xee3a, 0xf4b0, 0x02ae, 0x103a, 0x1555,
|
||||
0x0b47, 0xfa83, 0xf1c8, 0xf05c, 0xee3a, 0xf330, 0xfe33, 0x0939, 0x0e38, 0x0bd6, 0x05bb, 0xfd65, 0xf451, 0xebfd,
|
||||
0xe5e6, 0xe741, 0xf1ad, 0xfc24, 0x054b, 0x0bc7, 0x0e3e, 0x0bcc, 0x0559, 0xfc3d, 0xf1ca, 0xe758, 0xde3a, 0xd7c8,
|
||||
0xd556, 0xd7c8, 0xde95, 0xe8b9, 0xf44d, 0xff32, 0x0749, 0x0a74, 0x071d, 0xffc4, 0xf86b, 0xf513, 0xf559, 0xf61d,
|
||||
0xf74a, 0xf8cb, 0xfa8a, 0xfc74, 0xfe73, 0x0071, 0x025b, 0x041a, 0x059b, 0x06c8, 0x078c, 0x07d2, 0x005b, 0xf8e4,
|
||||
0xf9ae, 0xfbb6, 0xfe7d, 0x0183, 0x044a, 0x0652, 0x071c, 0x060a, 0x0312, 0xfe95, 0xf8ef, 0xf281, 0xebaa, 0xe4c8,
|
||||
0x051e, 0x0b0f, 0x0d46, 0x0a90, 0x036c, 0xf954, 0xedc0, 0xe22d, 0xd814, 0xd0ef, 0xce3a, 0xd176, 0xd9c4, 0xe508,
|
||||
0xf128, 0xfc07, 0x030e, 0x05d8, 0x0589, 0x034a, 0x0041, 0xfd97, 0xfc72, 0xfc79, 0xfc8d, 0xfcab, 0xfcd1, 0xfcfb,
|
||||
0xfd28, 0xfd55, 0xfd80, 0xfda5, 0xfdc3, 0xfdd7, 0xfdde, 0xfa50, 0xfe8e, 0x066d, 0x0aaa, 0xf8e4, 0xf08a, 0xee33,
|
||||
0xee3a, 0xf098, 0xf685, 0xfe39, 0x05ec, 0x0bd9, 0x0e38, 0x0333, 0xf82e, 0xf848, 0xf8a7, 0xf968, 0xfaa7, 0x0222,
|
||||
0x1968, 0x1159, 0x05f5, 0xf8e7, 0xebd8, 0xe073, 0xd865, 0xd556, 0xd865, 0xe073, 0xebd8, 0xf8e7, 0x05f5, 0x1159,
|
||||
0x1968, 0x1c76, 0x1afd, 0x1778, 0x1346, 0x0fc2, 0x0e48, 0x0e46, 0x0e42, 0x0e3e, 0x0e3c, 0x0e3c, 0x0e3c, 0x0e3b,
|
||||
0x0e3b, 0x0e3a, 0x0e3a, 0x0e39, 0x0e39, 0x0e38, 0x0e38, 0x11c6, 0x0b51, 0xfd4c, 0xefbd, 0xeaab, 0xf4b6, 0x056a,
|
||||
0x0e38, 0x0fa4, 0x11c6, 0x0cd6, 0x01d4, 0xf6cd, 0xf1c8, 0xf425, 0xfa3e, 0x0294, 0x0ba9, 0x1400, 0x1a19, 0x3fff,
|
||||
0x3fff, 0xc001, 0x3fff, 0x8001,
|
||||
};
|
||||
|
||||
// 0x06014B50
|
||||
|
|
@ -456,158 +239,83 @@ Animation d_course_koopa_troopa_beach_unk_data4 = {
|
|||
d_course_koopa_troopa_beach_unk_data3,
|
||||
};
|
||||
|
||||
|
||||
|
||||
//! 0x60169b
|
||||
uintptr_t d_course_koopa_troopa_beach_unk4[] = {
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_koopa_troopa_beach_dl_16630,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_koopa_troopa_beach_dl_16630,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0xfffffffb,
|
||||
0x00000005,
|
||||
0x00000000, 0x00000007, 0x00000000, 0x00000000,
|
||||
0x00000000, 0xfffffffb, 0x00000005,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_koopa_troopa_beach_dl_16850,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_koopa_troopa_beach_dl_16850,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_koopa_troopa_beach_dl_168F0,
|
||||
0x00000024,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_koopa_troopa_beach_dl_168F0,
|
||||
0x00000024, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_koopa_troopa_beach_dl_16990,
|
||||
0x00000019,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_koopa_troopa_beach_dl_16990,
|
||||
0x00000019, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0xfffffffb,
|
||||
0xfffffffb,
|
||||
0x00000000, 0x00000007, 0x00000000, 0x00000000,
|
||||
0x00000000, 0xfffffffb, 0xfffffffb,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_koopa_troopa_beach_dl_16850,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_koopa_troopa_beach_dl_16850,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_koopa_troopa_beach_dl_168F0,
|
||||
0x00000024,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_koopa_troopa_beach_dl_168F0,
|
||||
0x00000024, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_koopa_troopa_beach_dl_16990,
|
||||
0x00000019,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_koopa_troopa_beach_dl_16990,
|
||||
0x00000019, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000003,
|
||||
0x00000002,
|
||||
0x00000003, 0x00000002,
|
||||
};
|
||||
|
||||
// 0x06016B60
|
||||
Animation *d_course_koopa_troopa_beach_unk_data5[] = {
|
||||
Animation* d_course_koopa_troopa_beach_unk_data5[] = {
|
||||
&d_course_koopa_troopa_beach_unk_data4,
|
||||
};
|
||||
|
||||
// No idea what this stuff is
|
||||
u32 d_course_koopa_troopa_beach_unk_data6[] = {
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000001,
|
||||
0x00000000,
|
||||
0x00000001,
|
||||
};
|
||||
0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000001,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,168 +3,88 @@
|
|||
#include <assets/luigi_raceway_data.h>
|
||||
|
||||
const course_texture luigi_raceway_textures[] = {
|
||||
{gTextureSignShellShot0, 0x038C, 0x1000, 0x0},
|
||||
{gTextureSignShellShot1, 0x0247, 0x1000, 0x0},
|
||||
{gTextureCheckerboardYellowBlue, 0x013A, 0x0800, 0x0},
|
||||
{gTexture64619C, 0x0124, 0x0800, 0x0},
|
||||
{gTextureCheckerboardBlueGreen, 0x0139, 0x0800, 0x0},
|
||||
{gTextureGrass3, 0x0372, 0x0800, 0x0},
|
||||
{gTextureFlagRed, 0x019E, 0x0800, 0x0},
|
||||
{gTexture65100C, 0x0120, 0x0800, 0x0},
|
||||
{gTexture65112C, 0x0150, 0x0800, 0x0},
|
||||
{gTexture653608, 0x07A7, 0x0800, 0x0},
|
||||
{gTextureGrass11, 0x01F8, 0x0800, 0x0},
|
||||
{gTextureSignLuigiFace0, 0x05C9, 0x1000, 0x0},
|
||||
{gTextureSignLuigiFace1, 0x065F, 0x1000, 0x0},
|
||||
{gTexture66C7A8, 0x0149, 0x0800, 0x0},
|
||||
{gTexture670AC8, 0x0FBF, 0x1000, 0x0},
|
||||
{gTexture671A88, 0x012D, 0x0800, 0x0},
|
||||
{gTexture6735DC, 0x03B1, 0x0800, 0x0},
|
||||
{gTexture673C68, 0x038D, 0x0800, 0x0},
|
||||
{gTexture6747C4, 0x0145, 0x0800, 0x0},
|
||||
{gTextureRoad1, 0x02D2, 0x1000, 0x0},
|
||||
{gTextureRoad2, 0x02AE, 0x1000, 0x0},
|
||||
{gTextureRoadFinish1, 0x026B, 0x1000, 0x0},
|
||||
{gTexture67BBD8, 0x0310, 0x0800, 0x0},
|
||||
{gTexture68272C, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture682928, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture682B24, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture682D20, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture682F1C, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture683118, 0x01F9, 0x1000, 0x0},
|
||||
{gTextureSignBlue64, 0x0567, 0x1000, 0x0},
|
||||
{gTextureSignKoopaAir0, 0x0360, 0x1000, 0x0},
|
||||
{gTextureSignKoopaAir1, 0x0304, 0x1000, 0x0},
|
||||
{gTextureSignLuigis0, 0x0287, 0x1000, 0x0},
|
||||
{gTextureSignLuigis1, 0x02AF, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0},
|
||||
{gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0},
|
||||
{gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0},
|
||||
{gTextureSignYoshi, 0x04DF, 0x1000, 0x0},
|
||||
{gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTextureSignShellShot0, 0x038C, 0x1000, 0x0 },
|
||||
{ gTextureSignShellShot1, 0x0247, 0x1000, 0x0 },
|
||||
{ gTextureCheckerboardYellowBlue, 0x013A, 0x0800, 0x0 },
|
||||
{ gTexture64619C, 0x0124, 0x0800, 0x0 },
|
||||
{ gTextureCheckerboardBlueGreen, 0x0139, 0x0800, 0x0 },
|
||||
{ gTextureGrass3, 0x0372, 0x0800, 0x0 },
|
||||
{ gTextureFlagRed, 0x019E, 0x0800, 0x0 },
|
||||
{ gTexture65100C, 0x0120, 0x0800, 0x0 },
|
||||
{ gTexture65112C, 0x0150, 0x0800, 0x0 },
|
||||
{ gTexture653608, 0x07A7, 0x0800, 0x0 },
|
||||
{ gTextureGrass11, 0x01F8, 0x0800, 0x0 },
|
||||
{ gTextureSignLuigiFace0, 0x05C9, 0x1000, 0x0 },
|
||||
{ gTextureSignLuigiFace1, 0x065F, 0x1000, 0x0 },
|
||||
{ gTexture66C7A8, 0x0149, 0x0800, 0x0 },
|
||||
{ gTexture670AC8, 0x0FBF, 0x1000, 0x0 },
|
||||
{ gTexture671A88, 0x012D, 0x0800, 0x0 },
|
||||
{ gTexture6735DC, 0x03B1, 0x0800, 0x0 },
|
||||
{ gTexture673C68, 0x038D, 0x0800, 0x0 },
|
||||
{ gTexture6747C4, 0x0145, 0x0800, 0x0 },
|
||||
{ gTextureRoad1, 0x02D2, 0x1000, 0x0 },
|
||||
{ gTextureRoad2, 0x02AE, 0x1000, 0x0 },
|
||||
{ gTextureRoadFinish1, 0x026B, 0x1000, 0x0 },
|
||||
{ gTexture67BBD8, 0x0310, 0x0800, 0x0 },
|
||||
{ gTexture68272C, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture682928, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture682B24, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture682D20, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture682F1C, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture683118, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTextureSignBlue64, 0x0567, 0x1000, 0x0 },
|
||||
{ gTextureSignKoopaAir0, 0x0360, 0x1000, 0x0 },
|
||||
{ gTextureSignKoopaAir1, 0x0304, 0x1000, 0x0 },
|
||||
{ gTextureSignLuigis0, 0x0287, 0x1000, 0x0 },
|
||||
{ gTextureSignLuigis1, 0x02AF, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0 },
|
||||
{ gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0 },
|
||||
{ gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0 },
|
||||
{ gTextureSignYoshi, 0x04DF, 0x1000, 0x0 },
|
||||
{ gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *luigi_raceway_dls[] = {
|
||||
d_course_luigi_raceway_dl_0,
|
||||
d_course_luigi_raceway_dl_328,
|
||||
d_course_luigi_raceway_dl_1A8,
|
||||
d_course_luigi_raceway_dl_480,
|
||||
d_course_luigi_raceway_dl_6E0,
|
||||
d_course_luigi_raceway_dl_9F8,
|
||||
d_course_luigi_raceway_dl_868,
|
||||
d_course_luigi_raceway_dl_B48,
|
||||
d_course_luigi_raceway_dl_D80,
|
||||
d_course_luigi_raceway_dl_1058,
|
||||
d_course_luigi_raceway_dl_EE8,
|
||||
d_course_luigi_raceway_dl_1198,
|
||||
d_course_luigi_raceway_dl_1398,
|
||||
d_course_luigi_raceway_dl_16D8,
|
||||
d_course_luigi_raceway_dl_1538,
|
||||
d_course_luigi_raceway_dl_1888,
|
||||
d_course_luigi_raceway_dl_1B00,
|
||||
d_course_luigi_raceway_dl_1E30,
|
||||
d_course_luigi_raceway_dl_1C78,
|
||||
d_course_luigi_raceway_dl_1FD0,
|
||||
d_course_luigi_raceway_dl_2240,
|
||||
d_course_luigi_raceway_dl_2518,
|
||||
d_course_luigi_raceway_dl_2348,
|
||||
d_course_luigi_raceway_dl_2658,
|
||||
d_course_luigi_raceway_dl_2860,
|
||||
d_course_luigi_raceway_dl_2BC0,
|
||||
d_course_luigi_raceway_dl_2978,
|
||||
d_course_luigi_raceway_dl_2D00,
|
||||
d_course_luigi_raceway_dl_2F08,
|
||||
d_course_luigi_raceway_dl_32C0,
|
||||
d_course_luigi_raceway_dl_2FF8,
|
||||
d_course_luigi_raceway_dl_3408,
|
||||
d_course_luigi_raceway_dl_3610,
|
||||
d_course_luigi_raceway_dl_3928,
|
||||
d_course_luigi_raceway_dl_36A8,
|
||||
d_course_luigi_raceway_dl_3AB0,
|
||||
d_course_luigi_raceway_dl_3C18,
|
||||
d_course_luigi_raceway_dl_3EB0,
|
||||
d_course_luigi_raceway_dl_3CA0,
|
||||
d_course_luigi_raceway_dl_4058,
|
||||
d_course_luigi_raceway_dl_4198,
|
||||
d_course_luigi_raceway_dl_4440,
|
||||
d_course_luigi_raceway_dl_4240,
|
||||
d_course_luigi_raceway_dl_4638,
|
||||
d_course_luigi_raceway_dl_4720,
|
||||
d_course_luigi_raceway_dl_4A18,
|
||||
d_course_luigi_raceway_dl_4828,
|
||||
d_course_luigi_raceway_dl_4C60,
|
||||
d_course_luigi_raceway_dl_4CF8,
|
||||
d_course_luigi_raceway_dl_4FD8,
|
||||
d_course_luigi_raceway_dl_4E38,
|
||||
d_course_luigi_raceway_dl_5220,
|
||||
d_course_luigi_raceway_dl_52D0,
|
||||
d_course_luigi_raceway_dl_5558,
|
||||
d_course_luigi_raceway_dl_5420,
|
||||
d_course_luigi_raceway_dl_5728,
|
||||
d_course_luigi_raceway_dl_57F8,
|
||||
d_course_luigi_raceway_dl_5A60,
|
||||
d_course_luigi_raceway_dl_5940,
|
||||
d_course_luigi_raceway_dl_5BA0,
|
||||
d_course_luigi_raceway_dl_5CB8,
|
||||
d_course_luigi_raceway_dl_5F08,
|
||||
d_course_luigi_raceway_dl_5E10,
|
||||
d_course_luigi_raceway_dl_6018,
|
||||
d_course_luigi_raceway_dl_6150,
|
||||
d_course_luigi_raceway_dl_6350,
|
||||
d_course_luigi_raceway_dl_6288,
|
||||
d_course_luigi_raceway_dl_6400,
|
||||
d_course_luigi_raceway_dl_6558,
|
||||
d_course_luigi_raceway_dl_6608,
|
||||
d_course_luigi_raceway_dl_65B0,
|
||||
d_course_luigi_raceway_dl_6658,
|
||||
d_course_luigi_raceway_dl_66B8,
|
||||
d_course_luigi_raceway_dl_67A0,
|
||||
d_course_luigi_raceway_dl_6708,
|
||||
d_course_luigi_raceway_dl_6810,
|
||||
d_course_luigi_raceway_dl_68C0,
|
||||
d_course_luigi_raceway_dl_6A00,
|
||||
d_course_luigi_raceway_dl_6930,
|
||||
d_course_luigi_raceway_dl_6A90,
|
||||
d_course_luigi_raceway_dl_6B58,
|
||||
d_course_luigi_raceway_dl_6DA0,
|
||||
d_course_luigi_raceway_dl_6C40,
|
||||
d_course_luigi_raceway_dl_6EB0,
|
||||
d_course_luigi_raceway_dl_6FF0,
|
||||
d_course_luigi_raceway_dl_7248,
|
||||
d_course_luigi_raceway_dl_7110,
|
||||
d_course_luigi_raceway_dl_7388,
|
||||
d_course_luigi_raceway_dl_74B0,
|
||||
d_course_luigi_raceway_dl_7750,
|
||||
d_course_luigi_raceway_dl_75F0,
|
||||
d_course_luigi_raceway_dl_7928,
|
||||
d_course_luigi_raceway_dl_7A18,
|
||||
d_course_luigi_raceway_dl_7CD0,
|
||||
d_course_luigi_raceway_dl_7BB0,
|
||||
d_course_luigi_raceway_dl_7EE8,
|
||||
d_course_luigi_raceway_dl_7FA0,
|
||||
d_course_luigi_raceway_dl_8260,
|
||||
d_course_luigi_raceway_dl_8158,
|
||||
d_course_luigi_raceway_dl_8450,
|
||||
d_course_luigi_raceway_dl_8508,
|
||||
d_course_luigi_raceway_dl_8790,
|
||||
d_course_luigi_raceway_dl_86F8,
|
||||
d_course_luigi_raceway_dl_8958,
|
||||
d_course_luigi_raceway_dl_8A70,
|
||||
d_course_luigi_raceway_dl_8D68,
|
||||
d_course_luigi_raceway_dl_8CC8,
|
||||
d_course_luigi_raceway_dl_8F00,
|
||||
d_course_luigi_raceway_dl_9058,
|
||||
d_course_luigi_raceway_dl_9408,
|
||||
d_course_luigi_raceway_dl_9310,
|
||||
d_course_luigi_raceway_dl_95A0,
|
||||
d_course_luigi_raceway_dl_97B0,
|
||||
d_course_luigi_raceway_dl_9AD0,
|
||||
d_course_luigi_raceway_dl_99C0,
|
||||
d_course_luigi_raceway_dl_9C50,
|
||||
d_course_luigi_raceway_dl_9E58,
|
||||
d_course_luigi_raceway_dl_A178,
|
||||
d_course_luigi_raceway_dl_A028,
|
||||
d_course_luigi_raceway_dl_A320,
|
||||
const Gfx* luigi_raceway_dls[] = {
|
||||
d_course_luigi_raceway_dl_0, d_course_luigi_raceway_dl_328, d_course_luigi_raceway_dl_1A8,
|
||||
d_course_luigi_raceway_dl_480, d_course_luigi_raceway_dl_6E0, d_course_luigi_raceway_dl_9F8,
|
||||
d_course_luigi_raceway_dl_868, d_course_luigi_raceway_dl_B48, d_course_luigi_raceway_dl_D80,
|
||||
d_course_luigi_raceway_dl_1058, d_course_luigi_raceway_dl_EE8, d_course_luigi_raceway_dl_1198,
|
||||
d_course_luigi_raceway_dl_1398, d_course_luigi_raceway_dl_16D8, d_course_luigi_raceway_dl_1538,
|
||||
d_course_luigi_raceway_dl_1888, d_course_luigi_raceway_dl_1B00, d_course_luigi_raceway_dl_1E30,
|
||||
d_course_luigi_raceway_dl_1C78, d_course_luigi_raceway_dl_1FD0, d_course_luigi_raceway_dl_2240,
|
||||
d_course_luigi_raceway_dl_2518, d_course_luigi_raceway_dl_2348, d_course_luigi_raceway_dl_2658,
|
||||
d_course_luigi_raceway_dl_2860, d_course_luigi_raceway_dl_2BC0, d_course_luigi_raceway_dl_2978,
|
||||
d_course_luigi_raceway_dl_2D00, d_course_luigi_raceway_dl_2F08, d_course_luigi_raceway_dl_32C0,
|
||||
d_course_luigi_raceway_dl_2FF8, d_course_luigi_raceway_dl_3408, d_course_luigi_raceway_dl_3610,
|
||||
d_course_luigi_raceway_dl_3928, d_course_luigi_raceway_dl_36A8, d_course_luigi_raceway_dl_3AB0,
|
||||
d_course_luigi_raceway_dl_3C18, d_course_luigi_raceway_dl_3EB0, d_course_luigi_raceway_dl_3CA0,
|
||||
d_course_luigi_raceway_dl_4058, d_course_luigi_raceway_dl_4198, d_course_luigi_raceway_dl_4440,
|
||||
d_course_luigi_raceway_dl_4240, d_course_luigi_raceway_dl_4638, d_course_luigi_raceway_dl_4720,
|
||||
d_course_luigi_raceway_dl_4A18, d_course_luigi_raceway_dl_4828, d_course_luigi_raceway_dl_4C60,
|
||||
d_course_luigi_raceway_dl_4CF8, d_course_luigi_raceway_dl_4FD8, d_course_luigi_raceway_dl_4E38,
|
||||
d_course_luigi_raceway_dl_5220, d_course_luigi_raceway_dl_52D0, d_course_luigi_raceway_dl_5558,
|
||||
d_course_luigi_raceway_dl_5420, d_course_luigi_raceway_dl_5728, d_course_luigi_raceway_dl_57F8,
|
||||
d_course_luigi_raceway_dl_5A60, d_course_luigi_raceway_dl_5940, d_course_luigi_raceway_dl_5BA0,
|
||||
d_course_luigi_raceway_dl_5CB8, d_course_luigi_raceway_dl_5F08, d_course_luigi_raceway_dl_5E10,
|
||||
d_course_luigi_raceway_dl_6018, d_course_luigi_raceway_dl_6150, d_course_luigi_raceway_dl_6350,
|
||||
d_course_luigi_raceway_dl_6288, d_course_luigi_raceway_dl_6400, d_course_luigi_raceway_dl_6558,
|
||||
d_course_luigi_raceway_dl_6608, d_course_luigi_raceway_dl_65B0, d_course_luigi_raceway_dl_6658,
|
||||
d_course_luigi_raceway_dl_66B8, d_course_luigi_raceway_dl_67A0, d_course_luigi_raceway_dl_6708,
|
||||
d_course_luigi_raceway_dl_6810, d_course_luigi_raceway_dl_68C0, d_course_luigi_raceway_dl_6A00,
|
||||
d_course_luigi_raceway_dl_6930, d_course_luigi_raceway_dl_6A90, d_course_luigi_raceway_dl_6B58,
|
||||
d_course_luigi_raceway_dl_6DA0, d_course_luigi_raceway_dl_6C40, d_course_luigi_raceway_dl_6EB0,
|
||||
d_course_luigi_raceway_dl_6FF0, d_course_luigi_raceway_dl_7248, d_course_luigi_raceway_dl_7110,
|
||||
d_course_luigi_raceway_dl_7388, d_course_luigi_raceway_dl_74B0, d_course_luigi_raceway_dl_7750,
|
||||
d_course_luigi_raceway_dl_75F0, d_course_luigi_raceway_dl_7928, d_course_luigi_raceway_dl_7A18,
|
||||
d_course_luigi_raceway_dl_7CD0, d_course_luigi_raceway_dl_7BB0, d_course_luigi_raceway_dl_7EE8,
|
||||
d_course_luigi_raceway_dl_7FA0, d_course_luigi_raceway_dl_8260, d_course_luigi_raceway_dl_8158,
|
||||
d_course_luigi_raceway_dl_8450, d_course_luigi_raceway_dl_8508, d_course_luigi_raceway_dl_8790,
|
||||
d_course_luigi_raceway_dl_86F8, d_course_luigi_raceway_dl_8958, d_course_luigi_raceway_dl_8A70,
|
||||
d_course_luigi_raceway_dl_8D68, d_course_luigi_raceway_dl_8CC8, d_course_luigi_raceway_dl_8F00,
|
||||
d_course_luigi_raceway_dl_9058, d_course_luigi_raceway_dl_9408, d_course_luigi_raceway_dl_9310,
|
||||
d_course_luigi_raceway_dl_95A0, d_course_luigi_raceway_dl_97B0, d_course_luigi_raceway_dl_9AD0,
|
||||
d_course_luigi_raceway_dl_99C0, d_course_luigi_raceway_dl_9C50, d_course_luigi_raceway_dl_9E58,
|
||||
d_course_luigi_raceway_dl_A178, d_course_luigi_raceway_dl_A028, d_course_luigi_raceway_dl_A320,
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -4,7 +4,6 @@
|
|||
#include <libultra/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
|
||||
#define d_course_mario_raceway_packed_end GET_PACKED_END(d_course_mario_raceway_packed_dl_6928)
|
||||
|
||||
#endif // MARIO_RACEWAY_DISPLAYLISTS_H
|
||||
#endif // MARIO_RACEWAY_DISPLAYLISTS_H
|
||||
|
|
|
|||
|
|
@ -3,106 +3,61 @@
|
|||
#include <assets/mario_raceway_data.h>
|
||||
|
||||
const course_texture mario_raceway_textures[] = {
|
||||
{gTextureCheckerboardYellowPink, 0x0149, 0x0800, 0x0},
|
||||
{gTexture64619C, 0x0124, 0x0800, 0x0},
|
||||
{gTextureGrass1, 0x0125, 0x0800, 0x0},
|
||||
{gTexture64BB60, 0x0169, 0x0800, 0x0},
|
||||
{gTextureGrass7, 0x05DE, 0x0800, 0x0},
|
||||
{gTextureGrass5, 0x023F, 0x0800, 0x0},
|
||||
{gTextureFlagRed, 0x019E, 0x0800, 0x0},
|
||||
{gTexture663F90, 0x0122, 0x0800, 0x0},
|
||||
{gTexture6642A4, 0x0162, 0x0800, 0x0},
|
||||
{gTexture6640B4, 0x01EF, 0x0800, 0x0},
|
||||
{gTextureGrass10, 0x01F8, 0x0800, 0x0},
|
||||
{gTexture6684F8, 0x010D, 0x0800, 0x0},
|
||||
{gTextureSignLuigis0, 0x0287, 0x1000, 0x0},
|
||||
{gTextureSignLuigis1, 0x02AF, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0},
|
||||
{gTexture66C8F4, 0x01A1, 0x0800, 0x0},
|
||||
{gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0},
|
||||
{gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0},
|
||||
{gTexture670AC8, 0x0FBF, 0x1000, 0x0},
|
||||
{gTexture674354, 0x046F, 0x0800, 0x0},
|
||||
{gTextureRoad0, 0x0300, 0x1000, 0x0},
|
||||
{gTextureRoadFinish0, 0x0338, 0x1000, 0x0},
|
||||
{gTexture67B9B0, 0x0225, 0x0800, 0x0},
|
||||
{gTextureSignYoshi, 0x04DF, 0x1000, 0x0},
|
||||
{gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0},
|
||||
{gTextureSignShellShot0, 0x038C, 0x1000, 0x0},
|
||||
{gTextureSignShellShot1, 0x0247, 0x1000, 0x0},
|
||||
{gTextureSignKoopaAir0, 0x0360, 0x1000, 0x0},
|
||||
{gTextureSignKoopaAir1, 0x0304, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTextureCheckerboardYellowPink, 0x0149, 0x0800, 0x0 },
|
||||
{ gTexture64619C, 0x0124, 0x0800, 0x0 },
|
||||
{ gTextureGrass1, 0x0125, 0x0800, 0x0 },
|
||||
{ gTexture64BB60, 0x0169, 0x0800, 0x0 },
|
||||
{ gTextureGrass7, 0x05DE, 0x0800, 0x0 },
|
||||
{ gTextureGrass5, 0x023F, 0x0800, 0x0 },
|
||||
{ gTextureFlagRed, 0x019E, 0x0800, 0x0 },
|
||||
{ gTexture663F90, 0x0122, 0x0800, 0x0 },
|
||||
{ gTexture6642A4, 0x0162, 0x0800, 0x0 },
|
||||
{ gTexture6640B4, 0x01EF, 0x0800, 0x0 },
|
||||
{ gTextureGrass10, 0x01F8, 0x0800, 0x0 },
|
||||
{ gTexture6684F8, 0x010D, 0x0800, 0x0 },
|
||||
{ gTextureSignLuigis0, 0x0287, 0x1000, 0x0 },
|
||||
{ gTextureSignLuigis1, 0x02AF, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0 },
|
||||
{ gTexture66C8F4, 0x01A1, 0x0800, 0x0 },
|
||||
{ gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0 },
|
||||
{ gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0 },
|
||||
{ gTexture670AC8, 0x0FBF, 0x1000, 0x0 },
|
||||
{ gTexture674354, 0x046F, 0x0800, 0x0 },
|
||||
{ gTextureRoad0, 0x0300, 0x1000, 0x0 },
|
||||
{ gTextureRoadFinish0, 0x0338, 0x1000, 0x0 },
|
||||
{ gTexture67B9B0, 0x0225, 0x0800, 0x0 },
|
||||
{ gTextureSignYoshi, 0x04DF, 0x1000, 0x0 },
|
||||
{ gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0 },
|
||||
{ gTextureSignShellShot0, 0x038C, 0x1000, 0x0 },
|
||||
{ gTextureSignShellShot1, 0x0247, 0x1000, 0x0 },
|
||||
{ gTextureSignKoopaAir0, 0x0360, 0x1000, 0x0 },
|
||||
{ gTextureSignKoopaAir1, 0x0304, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const char *mario_raceway_dls[] = {
|
||||
d_course_mario_raceway_dl_0,
|
||||
d_course_mario_raceway_dl_1D0,
|
||||
d_course_mario_raceway_dl_E8,
|
||||
d_course_mario_raceway_dl_2C8,
|
||||
d_course_mario_raceway_dl_3A8,
|
||||
d_course_mario_raceway_dl_568,
|
||||
d_course_mario_raceway_dl_478,
|
||||
d_course_mario_raceway_dl_668,
|
||||
d_course_mario_raceway_dl_750,
|
||||
d_course_mario_raceway_dl_928,
|
||||
d_course_mario_raceway_dl_828,
|
||||
d_course_mario_raceway_dl_A00,
|
||||
d_course_mario_raceway_dl_B08,
|
||||
d_course_mario_raceway_dl_DC8,
|
||||
d_course_mario_raceway_dl_C20,
|
||||
d_course_mario_raceway_dl_F60,
|
||||
d_course_mario_raceway_dl_10A8,
|
||||
d_course_mario_raceway_dl_1408,
|
||||
d_course_mario_raceway_dl_1210,
|
||||
d_course_mario_raceway_dl_15C8,
|
||||
d_course_mario_raceway_dl_1740,
|
||||
d_course_mario_raceway_dl_1A30,
|
||||
d_course_mario_raceway_dl_1850,
|
||||
d_course_mario_raceway_dl_1B70,
|
||||
d_course_mario_raceway_dl_1CF8,
|
||||
d_course_mario_raceway_dl_1F68,
|
||||
d_course_mario_raceway_dl_1DE0,
|
||||
d_course_mario_raceway_dl_20A0,
|
||||
d_course_mario_raceway_dl_21E8,
|
||||
d_course_mario_raceway_dl_2418,
|
||||
d_course_mario_raceway_dl_22E0,
|
||||
d_course_mario_raceway_dl_2558,
|
||||
d_course_mario_raceway_dl_2680,
|
||||
d_course_mario_raceway_dl_28B0,
|
||||
d_course_mario_raceway_dl_2790,
|
||||
d_course_mario_raceway_dl_2A10,
|
||||
d_course_mario_raceway_dl_2B40,
|
||||
d_course_mario_raceway_dl_2DC0,
|
||||
d_course_mario_raceway_dl_2C98,
|
||||
d_course_mario_raceway_dl_2EF8,
|
||||
d_course_mario_raceway_dl_3038,
|
||||
d_course_mario_raceway_dl_32D8,
|
||||
d_course_mario_raceway_dl_31F0,
|
||||
d_course_mario_raceway_dl_3458,
|
||||
d_course_mario_raceway_dl_35D0,
|
||||
d_course_mario_raceway_dl_3830,
|
||||
d_course_mario_raceway_dl_3748,
|
||||
d_course_mario_raceway_dl_3960,
|
||||
d_course_mario_raceway_dl_3AA0,
|
||||
d_course_mario_raceway_dl_3D68,
|
||||
d_course_mario_raceway_dl_3C08,
|
||||
d_course_mario_raceway_dl_3EB8,
|
||||
d_course_mario_raceway_dl_4038,
|
||||
d_course_mario_raceway_dl_42A0,
|
||||
d_course_mario_raceway_dl_4150,
|
||||
d_course_mario_raceway_dl_43D8,
|
||||
d_course_mario_raceway_dl_44F8,
|
||||
d_course_mario_raceway_dl_4738,
|
||||
d_course_mario_raceway_dl_4610,
|
||||
d_course_mario_raceway_dl_4840,
|
||||
d_course_mario_raceway_dl_4910,
|
||||
d_course_mario_raceway_dl_4B78,
|
||||
d_course_mario_raceway_dl_4A60,
|
||||
d_course_mario_raceway_dl_4CD8,
|
||||
d_course_mario_raceway_dl_4DC8,
|
||||
d_course_mario_raceway_dl_4FF0,
|
||||
d_course_mario_raceway_dl_4ED0,
|
||||
d_course_mario_raceway_dl_5150,
|
||||
const char* mario_raceway_dls[] = {
|
||||
d_course_mario_raceway_dl_0, d_course_mario_raceway_dl_1D0, d_course_mario_raceway_dl_E8,
|
||||
d_course_mario_raceway_dl_2C8, d_course_mario_raceway_dl_3A8, d_course_mario_raceway_dl_568,
|
||||
d_course_mario_raceway_dl_478, d_course_mario_raceway_dl_668, d_course_mario_raceway_dl_750,
|
||||
d_course_mario_raceway_dl_928, d_course_mario_raceway_dl_828, d_course_mario_raceway_dl_A00,
|
||||
d_course_mario_raceway_dl_B08, d_course_mario_raceway_dl_DC8, d_course_mario_raceway_dl_C20,
|
||||
d_course_mario_raceway_dl_F60, d_course_mario_raceway_dl_10A8, d_course_mario_raceway_dl_1408,
|
||||
d_course_mario_raceway_dl_1210, d_course_mario_raceway_dl_15C8, d_course_mario_raceway_dl_1740,
|
||||
d_course_mario_raceway_dl_1A30, d_course_mario_raceway_dl_1850, d_course_mario_raceway_dl_1B70,
|
||||
d_course_mario_raceway_dl_1CF8, d_course_mario_raceway_dl_1F68, d_course_mario_raceway_dl_1DE0,
|
||||
d_course_mario_raceway_dl_20A0, d_course_mario_raceway_dl_21E8, d_course_mario_raceway_dl_2418,
|
||||
d_course_mario_raceway_dl_22E0, d_course_mario_raceway_dl_2558, d_course_mario_raceway_dl_2680,
|
||||
d_course_mario_raceway_dl_28B0, d_course_mario_raceway_dl_2790, d_course_mario_raceway_dl_2A10,
|
||||
d_course_mario_raceway_dl_2B40, d_course_mario_raceway_dl_2DC0, d_course_mario_raceway_dl_2C98,
|
||||
d_course_mario_raceway_dl_2EF8, d_course_mario_raceway_dl_3038, d_course_mario_raceway_dl_32D8,
|
||||
d_course_mario_raceway_dl_31F0, d_course_mario_raceway_dl_3458, d_course_mario_raceway_dl_35D0,
|
||||
d_course_mario_raceway_dl_3830, d_course_mario_raceway_dl_3748, d_course_mario_raceway_dl_3960,
|
||||
d_course_mario_raceway_dl_3AA0, d_course_mario_raceway_dl_3D68, d_course_mario_raceway_dl_3C08,
|
||||
d_course_mario_raceway_dl_3EB8, d_course_mario_raceway_dl_4038, d_course_mario_raceway_dl_42A0,
|
||||
d_course_mario_raceway_dl_4150, d_course_mario_raceway_dl_43D8, d_course_mario_raceway_dl_44F8,
|
||||
d_course_mario_raceway_dl_4738, d_course_mario_raceway_dl_4610, d_course_mario_raceway_dl_4840,
|
||||
d_course_mario_raceway_dl_4910, d_course_mario_raceway_dl_4B78, d_course_mario_raceway_dl_4A60,
|
||||
d_course_mario_raceway_dl_4CD8, d_course_mario_raceway_dl_4DC8, d_course_mario_raceway_dl_4FF0,
|
||||
d_course_mario_raceway_dl_4ED0, d_course_mario_raceway_dl_5150,
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -3,128 +3,67 @@
|
|||
#include <assets/moo_moo_farm_data.h>
|
||||
|
||||
const course_texture moo_moo_farm_textures[] = {
|
||||
{gTextureWoodDoor0, 0x0294, 0x1000, 0x0},
|
||||
{gTextureGrass2, 0x0415, 0x0800, 0x0},
|
||||
{gTexture64AF50, 0x0140, 0x0800, 0x0},
|
||||
{gTexture64B090, 0x0365, 0x0800, 0x0},
|
||||
{gTexture64B54C, 0x038C, 0x0800, 0x0},
|
||||
{gTexture64B3F8, 0x0153, 0x0800, 0x0},
|
||||
{gTextureSignNintendo0, 0x0541, 0x1000, 0x0},
|
||||
{gTextureSignNintendo1, 0x0512, 0x1000, 0x0},
|
||||
{gTexture6684F8, 0x010D, 0x0800, 0x0},
|
||||
{gTextureSignLuigis0, 0x0287, 0x1000, 0x0},
|
||||
{gTextureSignLuigis1, 0x02AF, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0},
|
||||
{gTexture674D58, 0x030C, 0x1000, 0x0},
|
||||
{gTexture675064, 0x01BB, 0x0800, 0x0},
|
||||
{gTexture675220, 0x0212, 0x0800, 0x0},
|
||||
{gTexture6775EC, 0x0233, 0x1000, 0x0},
|
||||
{gTexture683314, 0x02DC, 0x1000, 0x0},
|
||||
{gTexture68CDA0, 0x0110, 0x0800, 0x0},
|
||||
{gTexture6442D4, 0x0138, 0x0800, 0x0},
|
||||
{gTexture64440C, 0x029D, 0x1000, 0x0},
|
||||
{gTexture6446AC, 0x0116, 0x0800, 0x0},
|
||||
{gTextureMooMooFarmSignLeft, 0x0A66, 0x1000, 0x0},
|
||||
{gTextureMooMooFarmSignRight, 0x0A64, 0x1000, 0x0},
|
||||
{gTexture64ACAC, 0x02A3, 0x0800, 0x0},
|
||||
{gTexture66D698, 0x0370, 0x0800, 0x0},
|
||||
{gTexture66EBF0, 0x0146, 0x0800, 0x0},
|
||||
{gTextureWheelSteamEngineReal, 0x022F, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTextureWoodDoor0, 0x0294, 0x1000, 0x0 },
|
||||
{ gTextureGrass2, 0x0415, 0x0800, 0x0 },
|
||||
{ gTexture64AF50, 0x0140, 0x0800, 0x0 },
|
||||
{ gTexture64B090, 0x0365, 0x0800, 0x0 },
|
||||
{ gTexture64B54C, 0x038C, 0x0800, 0x0 },
|
||||
{ gTexture64B3F8, 0x0153, 0x0800, 0x0 },
|
||||
{ gTextureSignNintendo0, 0x0541, 0x1000, 0x0 },
|
||||
{ gTextureSignNintendo1, 0x0512, 0x1000, 0x0 },
|
||||
{ gTexture6684F8, 0x010D, 0x0800, 0x0 },
|
||||
{ gTextureSignLuigis0, 0x0287, 0x1000, 0x0 },
|
||||
{ gTextureSignLuigis1, 0x02AF, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0 },
|
||||
{ gTexture674D58, 0x030C, 0x1000, 0x0 },
|
||||
{ gTexture675064, 0x01BB, 0x0800, 0x0 },
|
||||
{ gTexture675220, 0x0212, 0x0800, 0x0 },
|
||||
{ gTexture6775EC, 0x0233, 0x1000, 0x0 },
|
||||
{ gTexture683314, 0x02DC, 0x1000, 0x0 },
|
||||
{ gTexture68CDA0, 0x0110, 0x0800, 0x0 },
|
||||
{ gTexture6442D4, 0x0138, 0x0800, 0x0 },
|
||||
{ gTexture64440C, 0x029D, 0x1000, 0x0 },
|
||||
{ gTexture6446AC, 0x0116, 0x0800, 0x0 },
|
||||
{ gTextureMooMooFarmSignLeft, 0x0A66, 0x1000, 0x0 },
|
||||
{ gTextureMooMooFarmSignRight, 0x0A64, 0x1000, 0x0 },
|
||||
{ gTexture64ACAC, 0x02A3, 0x0800, 0x0 },
|
||||
{ gTexture66D698, 0x0370, 0x0800, 0x0 },
|
||||
{ gTexture66EBF0, 0x0146, 0x0800, 0x0 },
|
||||
{ gTextureWheelSteamEngineReal, 0x022F, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *moo_moo_farm_dls[] = {
|
||||
d_course_moo_moo_farm_dl_88,
|
||||
d_course_moo_moo_farm_dl_598,
|
||||
d_course_moo_moo_farm_dl_338,
|
||||
d_course_moo_moo_farm_dl_8A0,
|
||||
d_course_moo_moo_farm_dl_B00,
|
||||
d_course_moo_moo_farm_dl_FE0,
|
||||
d_course_moo_moo_farm_dl_D70,
|
||||
d_course_moo_moo_farm_dl_12B8,
|
||||
d_course_moo_moo_farm_dl_1530,
|
||||
d_course_moo_moo_farm_dl_1A20,
|
||||
d_course_moo_moo_farm_dl_1790,
|
||||
d_course_moo_moo_farm_dl_1D00,
|
||||
d_course_moo_moo_farm_dl_1F58,
|
||||
d_course_moo_moo_farm_dl_2470,
|
||||
d_course_moo_moo_farm_dl_2190,
|
||||
d_course_moo_moo_farm_dl_27A8,
|
||||
d_course_moo_moo_farm_dl_2A10,
|
||||
d_course_moo_moo_farm_dl_2F20,
|
||||
d_course_moo_moo_farm_dl_2C38,
|
||||
d_course_moo_moo_farm_dl_3238,
|
||||
d_course_moo_moo_farm_dl_34A0,
|
||||
d_course_moo_moo_farm_dl_39F8,
|
||||
d_course_moo_moo_farm_dl_36B8,
|
||||
d_course_moo_moo_farm_dl_3CB0,
|
||||
d_course_moo_moo_farm_dl_3EB8,
|
||||
d_course_moo_moo_farm_dl_4428,
|
||||
d_course_moo_moo_farm_dl_4098,
|
||||
d_course_moo_moo_farm_dl_46D8,
|
||||
d_course_moo_moo_farm_dl_4910,
|
||||
d_course_moo_moo_farm_dl_4E00,
|
||||
d_course_moo_moo_farm_dl_4AD0,
|
||||
d_course_moo_moo_farm_dl_5040,
|
||||
d_course_moo_moo_farm_dl_5290,
|
||||
d_course_moo_moo_farm_dl_5758,
|
||||
d_course_moo_moo_farm_dl_5458,
|
||||
d_course_moo_moo_farm_dl_5990,
|
||||
d_course_moo_moo_farm_dl_5BF8,
|
||||
d_course_moo_moo_farm_dl_60A8,
|
||||
d_course_moo_moo_farm_dl_5DF0,
|
||||
d_course_moo_moo_farm_dl_62D0,
|
||||
d_course_moo_moo_farm_dl_6548,
|
||||
d_course_moo_moo_farm_dl_6A70,
|
||||
d_course_moo_moo_farm_dl_6778,
|
||||
d_course_moo_moo_farm_dl_6CB8,
|
||||
d_course_moo_moo_farm_dl_6FF0,
|
||||
d_course_moo_moo_farm_dl_74C8,
|
||||
d_course_moo_moo_farm_dl_7218,
|
||||
d_course_moo_moo_farm_dl_7718,
|
||||
d_course_moo_moo_farm_dl_7A80,
|
||||
d_course_moo_moo_farm_dl_7F78,
|
||||
d_course_moo_moo_farm_dl_7CD8,
|
||||
d_course_moo_moo_farm_dl_81E8,
|
||||
d_course_moo_moo_farm_dl_84D0,
|
||||
d_course_moo_moo_farm_dl_89A0,
|
||||
d_course_moo_moo_farm_dl_8728,
|
||||
d_course_moo_moo_farm_dl_8C00,
|
||||
d_course_moo_moo_farm_dl_8F18,
|
||||
d_course_moo_moo_farm_dl_93D0,
|
||||
d_course_moo_moo_farm_dl_9178,
|
||||
d_course_moo_moo_farm_dl_9640,
|
||||
d_course_moo_moo_farm_dl_9938,
|
||||
d_course_moo_moo_farm_dl_9DF8,
|
||||
d_course_moo_moo_farm_dl_9BB0,
|
||||
d_course_moo_moo_farm_dl_A010,
|
||||
d_course_moo_moo_farm_dl_A2C0,
|
||||
d_course_moo_moo_farm_dl_A7B0,
|
||||
d_course_moo_moo_farm_dl_A568,
|
||||
d_course_moo_moo_farm_dl_A9C8,
|
||||
d_course_moo_moo_farm_dl_ACB0,
|
||||
d_course_moo_moo_farm_dl_B230,
|
||||
d_course_moo_moo_farm_dl_B020,
|
||||
d_course_moo_moo_farm_dl_B478,
|
||||
d_course_moo_moo_farm_dl_B798,
|
||||
d_course_moo_moo_farm_dl_BCE8,
|
||||
d_course_moo_moo_farm_dl_BB00,
|
||||
d_course_moo_moo_farm_dl_BF10,
|
||||
d_course_moo_moo_farm_dl_C180,
|
||||
d_course_moo_moo_farm_dl_C6D8,
|
||||
d_course_moo_moo_farm_dl_C4F8,
|
||||
d_course_moo_moo_farm_dl_C950,
|
||||
d_course_moo_moo_farm_dl_CBC8,
|
||||
d_course_moo_moo_farm_dl_D140,
|
||||
d_course_moo_moo_farm_dl_CF58,
|
||||
d_course_moo_moo_farm_dl_D408,
|
||||
d_course_moo_moo_farm_dl_D6B0,
|
||||
d_course_moo_moo_farm_dl_DC70,
|
||||
d_course_moo_moo_farm_dl_DA50,
|
||||
d_course_moo_moo_farm_dl_DF60,
|
||||
d_course_moo_moo_farm_dl_E1D8,
|
||||
d_course_moo_moo_farm_dl_E708,
|
||||
d_course_moo_moo_farm_dl_E4B0,
|
||||
d_course_moo_moo_farm_dl_EA18,
|
||||
const Gfx* moo_moo_farm_dls[] = {
|
||||
d_course_moo_moo_farm_dl_88, d_course_moo_moo_farm_dl_598, d_course_moo_moo_farm_dl_338,
|
||||
d_course_moo_moo_farm_dl_8A0, d_course_moo_moo_farm_dl_B00, d_course_moo_moo_farm_dl_FE0,
|
||||
d_course_moo_moo_farm_dl_D70, d_course_moo_moo_farm_dl_12B8, d_course_moo_moo_farm_dl_1530,
|
||||
d_course_moo_moo_farm_dl_1A20, d_course_moo_moo_farm_dl_1790, d_course_moo_moo_farm_dl_1D00,
|
||||
d_course_moo_moo_farm_dl_1F58, d_course_moo_moo_farm_dl_2470, d_course_moo_moo_farm_dl_2190,
|
||||
d_course_moo_moo_farm_dl_27A8, d_course_moo_moo_farm_dl_2A10, d_course_moo_moo_farm_dl_2F20,
|
||||
d_course_moo_moo_farm_dl_2C38, d_course_moo_moo_farm_dl_3238, d_course_moo_moo_farm_dl_34A0,
|
||||
d_course_moo_moo_farm_dl_39F8, d_course_moo_moo_farm_dl_36B8, d_course_moo_moo_farm_dl_3CB0,
|
||||
d_course_moo_moo_farm_dl_3EB8, d_course_moo_moo_farm_dl_4428, d_course_moo_moo_farm_dl_4098,
|
||||
d_course_moo_moo_farm_dl_46D8, d_course_moo_moo_farm_dl_4910, d_course_moo_moo_farm_dl_4E00,
|
||||
d_course_moo_moo_farm_dl_4AD0, d_course_moo_moo_farm_dl_5040, d_course_moo_moo_farm_dl_5290,
|
||||
d_course_moo_moo_farm_dl_5758, d_course_moo_moo_farm_dl_5458, d_course_moo_moo_farm_dl_5990,
|
||||
d_course_moo_moo_farm_dl_5BF8, d_course_moo_moo_farm_dl_60A8, d_course_moo_moo_farm_dl_5DF0,
|
||||
d_course_moo_moo_farm_dl_62D0, d_course_moo_moo_farm_dl_6548, d_course_moo_moo_farm_dl_6A70,
|
||||
d_course_moo_moo_farm_dl_6778, d_course_moo_moo_farm_dl_6CB8, d_course_moo_moo_farm_dl_6FF0,
|
||||
d_course_moo_moo_farm_dl_74C8, d_course_moo_moo_farm_dl_7218, d_course_moo_moo_farm_dl_7718,
|
||||
d_course_moo_moo_farm_dl_7A80, d_course_moo_moo_farm_dl_7F78, d_course_moo_moo_farm_dl_7CD8,
|
||||
d_course_moo_moo_farm_dl_81E8, d_course_moo_moo_farm_dl_84D0, d_course_moo_moo_farm_dl_89A0,
|
||||
d_course_moo_moo_farm_dl_8728, d_course_moo_moo_farm_dl_8C00, d_course_moo_moo_farm_dl_8F18,
|
||||
d_course_moo_moo_farm_dl_93D0, d_course_moo_moo_farm_dl_9178, d_course_moo_moo_farm_dl_9640,
|
||||
d_course_moo_moo_farm_dl_9938, d_course_moo_moo_farm_dl_9DF8, d_course_moo_moo_farm_dl_9BB0,
|
||||
d_course_moo_moo_farm_dl_A010, d_course_moo_moo_farm_dl_A2C0, d_course_moo_moo_farm_dl_A7B0,
|
||||
d_course_moo_moo_farm_dl_A568, d_course_moo_moo_farm_dl_A9C8, d_course_moo_moo_farm_dl_ACB0,
|
||||
d_course_moo_moo_farm_dl_B230, d_course_moo_moo_farm_dl_B020, d_course_moo_moo_farm_dl_B478,
|
||||
d_course_moo_moo_farm_dl_B798, d_course_moo_moo_farm_dl_BCE8, d_course_moo_moo_farm_dl_BB00,
|
||||
d_course_moo_moo_farm_dl_BF10, d_course_moo_moo_farm_dl_C180, d_course_moo_moo_farm_dl_C6D8,
|
||||
d_course_moo_moo_farm_dl_C4F8, d_course_moo_moo_farm_dl_C950, d_course_moo_moo_farm_dl_CBC8,
|
||||
d_course_moo_moo_farm_dl_D140, d_course_moo_moo_farm_dl_CF58, d_course_moo_moo_farm_dl_D408,
|
||||
d_course_moo_moo_farm_dl_D6B0, d_course_moo_moo_farm_dl_DC70, d_course_moo_moo_farm_dl_DA50,
|
||||
d_course_moo_moo_farm_dl_DF60, d_course_moo_moo_farm_dl_E1D8, d_course_moo_moo_farm_dl_E708,
|
||||
d_course_moo_moo_farm_dl_E4B0, d_course_moo_moo_farm_dl_EA18,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,97 +3,45 @@
|
|||
#include <assets/rainbow_road_data.h>
|
||||
|
||||
const course_texture rainbow_road_textures[] = {
|
||||
{gTextureStarOutline, 0x037A, 0x0800, 0x0},
|
||||
{gTexture67A1B8, 0x01B7, 0x0800, 0x0},
|
||||
{gTextureCheckerboardBlackWhite, 0x0107, 0x0800, 0x0},
|
||||
{gTexture662A34, 0x0106, 0x0800, 0x0},
|
||||
{gTextureRainbow, 0x025D, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTextureStarOutline, 0x037A, 0x0800, 0x0 },
|
||||
{ gTexture67A1B8, 0x01B7, 0x0800, 0x0 },
|
||||
{ gTextureCheckerboardBlackWhite, 0x0107, 0x0800, 0x0 },
|
||||
{ gTexture662A34, 0x0106, 0x0800, 0x0 },
|
||||
{ gTextureRainbow, 0x025D, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
Gfx *rainbow_road_dls[] = {
|
||||
d_course_rainbow_road_dl_D8, d_course_rainbow_road_dl_210,
|
||||
d_course_rainbow_road_dl_178, d_course_rainbow_road_dl_288,
|
||||
d_course_rainbow_road_dl_338, d_course_rainbow_road_dl_4A0,
|
||||
d_course_rainbow_road_dl_3D0, d_course_rainbow_road_dl_528,
|
||||
d_course_rainbow_road_dl_5F8, d_course_rainbow_road_dl_6E0,
|
||||
d_course_rainbow_road_dl_658, d_course_rainbow_road_dl_730,
|
||||
d_course_rainbow_road_dl_7A8, d_course_rainbow_road_dl_880,
|
||||
d_course_rainbow_road_dl_7F8, d_course_rainbow_road_dl_8E0,
|
||||
d_course_rainbow_road_dl_958, d_course_rainbow_road_dl_A70,
|
||||
d_course_rainbow_road_dl_9C8, d_course_rainbow_road_dl_B08,
|
||||
d_course_rainbow_road_dl_B70, d_course_rainbow_road_dl_C70,
|
||||
d_course_rainbow_road_dl_BF0, d_course_rainbow_road_dl_D10,
|
||||
d_course_rainbow_road_dl_D80, d_course_rainbow_road_dl_E98,
|
||||
d_course_rainbow_road_dl_E08, d_course_rainbow_road_dl_F50,
|
||||
d_course_rainbow_road_dl_FB0, d_course_rainbow_road_dl_10A8,
|
||||
d_course_rainbow_road_dl_1030, d_course_rainbow_road_dl_1150,
|
||||
d_course_rainbow_road_dl_1198, d_course_rainbow_road_dl_12A0,
|
||||
d_course_rainbow_road_dl_1228, d_course_rainbow_road_dl_1340,
|
||||
d_course_rainbow_road_dl_13F0, d_course_rainbow_road_dl_14E8,
|
||||
d_course_rainbow_road_dl_1488, d_course_rainbow_road_dl_1530,
|
||||
d_course_rainbow_road_dl_15D0, d_course_rainbow_road_dl_16C0,
|
||||
d_course_rainbow_road_dl_1678, d_course_rainbow_road_dl_1738,
|
||||
d_course_rainbow_road_dl_17D0, d_course_rainbow_road_dl_18D0,
|
||||
d_course_rainbow_road_dl_1878, d_course_rainbow_road_dl_1948,
|
||||
Gfx* rainbow_road_dls[] = {
|
||||
d_course_rainbow_road_dl_D8, d_course_rainbow_road_dl_210, d_course_rainbow_road_dl_178,
|
||||
d_course_rainbow_road_dl_288, d_course_rainbow_road_dl_338, d_course_rainbow_road_dl_4A0,
|
||||
d_course_rainbow_road_dl_3D0, d_course_rainbow_road_dl_528, d_course_rainbow_road_dl_5F8,
|
||||
d_course_rainbow_road_dl_6E0, d_course_rainbow_road_dl_658, d_course_rainbow_road_dl_730,
|
||||
d_course_rainbow_road_dl_7A8, d_course_rainbow_road_dl_880, d_course_rainbow_road_dl_7F8,
|
||||
d_course_rainbow_road_dl_8E0, d_course_rainbow_road_dl_958, d_course_rainbow_road_dl_A70,
|
||||
d_course_rainbow_road_dl_9C8, d_course_rainbow_road_dl_B08, d_course_rainbow_road_dl_B70,
|
||||
d_course_rainbow_road_dl_C70, d_course_rainbow_road_dl_BF0, d_course_rainbow_road_dl_D10,
|
||||
d_course_rainbow_road_dl_D80, d_course_rainbow_road_dl_E98, d_course_rainbow_road_dl_E08,
|
||||
d_course_rainbow_road_dl_F50, d_course_rainbow_road_dl_FB0, d_course_rainbow_road_dl_10A8,
|
||||
d_course_rainbow_road_dl_1030, d_course_rainbow_road_dl_1150, d_course_rainbow_road_dl_1198,
|
||||
d_course_rainbow_road_dl_12A0, d_course_rainbow_road_dl_1228, d_course_rainbow_road_dl_1340,
|
||||
d_course_rainbow_road_dl_13F0, d_course_rainbow_road_dl_14E8, d_course_rainbow_road_dl_1488,
|
||||
d_course_rainbow_road_dl_1530, d_course_rainbow_road_dl_15D0, d_course_rainbow_road_dl_16C0,
|
||||
d_course_rainbow_road_dl_1678, d_course_rainbow_road_dl_1738, d_course_rainbow_road_dl_17D0,
|
||||
d_course_rainbow_road_dl_18D0, d_course_rainbow_road_dl_1878, d_course_rainbow_road_dl_1948,
|
||||
};
|
||||
|
||||
u64 d_course_rainbow_road_unk_double = 1;
|
||||
u64 d_course_rainbow_road_unk_double2 = 1;
|
||||
|
||||
s16 d_rainbow_road_chomp_jaw_animation[] = {
|
||||
0x0000, 0x3fff,
|
||||
0x9602, 0x9483,
|
||||
0x90d2, 0x8c1b,
|
||||
0x878e, 0x845a,
|
||||
0x83ac, 0x88ae,
|
||||
0x9264, 0x9bc5,
|
||||
0x9fc9, 0x9c7c,
|
||||
0x950f, 0x8c27,
|
||||
0x846d, 0x808a,
|
||||
0x8348, 0x8abb,
|
||||
0x9273, 0x9602,
|
||||
0x6fb2, 0x70c6,
|
||||
0x7369, 0x76ba,
|
||||
0x79d6, 0x7bdd,
|
||||
0x7beb, 0x7752,
|
||||
0x6ed7, 0x66ca,
|
||||
0x6379, 0x6692,
|
||||
0x6d54, 0x756c,
|
||||
0x7c87, 0x8054,
|
||||
0x7e7c, 0x78b0,
|
||||
0x728d, 0x6fb2,
|
||||
0x9602, 0x9483,
|
||||
0x90d2, 0x8c1b,
|
||||
0x878e, 0x845a,
|
||||
0x83ac, 0x88ae,
|
||||
0x9264, 0x9bc5,
|
||||
0x9fc9, 0x9c7c,
|
||||
0x950f, 0x8c27,
|
||||
0x846d, 0x808a,
|
||||
0x8348, 0x8abb,
|
||||
0x9273, 0x9602,
|
||||
0x6fb2, 0x70c6,
|
||||
0x7369, 0x76ba,
|
||||
0x79d6, 0x7bdd,
|
||||
0x7beb, 0x7752,
|
||||
0x6ed7, 0x66ca,
|
||||
0x6379, 0x6692,
|
||||
0x6d54, 0x756c,
|
||||
0x7c87, 0x8054,
|
||||
0x7e7c, 0x78b0,
|
||||
0x728d, 0x6fb2,
|
||||
0x6fb2, 0x70c6,
|
||||
0x7369, 0x76ba,
|
||||
0x79d6, 0x7bdd,
|
||||
0x7beb, 0x7752,
|
||||
0x6ed7, 0x66ca,
|
||||
0x6379, 0x6692,
|
||||
0x6d54, 0x756c,
|
||||
0x7c87, 0x8054,
|
||||
0x7e7c, 0x78b0,
|
||||
0x728d, 0x6fb2,
|
||||
0x3fff, 0x0000,
|
||||
0x0000, 0x3fff, 0x9602, 0x9483, 0x90d2, 0x8c1b, 0x878e, 0x845a, 0x83ac, 0x88ae, 0x9264, 0x9bc5, 0x9fc9,
|
||||
0x9c7c, 0x950f, 0x8c27, 0x846d, 0x808a, 0x8348, 0x8abb, 0x9273, 0x9602, 0x6fb2, 0x70c6, 0x7369, 0x76ba,
|
||||
0x79d6, 0x7bdd, 0x7beb, 0x7752, 0x6ed7, 0x66ca, 0x6379, 0x6692, 0x6d54, 0x756c, 0x7c87, 0x8054, 0x7e7c,
|
||||
0x78b0, 0x728d, 0x6fb2, 0x9602, 0x9483, 0x90d2, 0x8c1b, 0x878e, 0x845a, 0x83ac, 0x88ae, 0x9264, 0x9bc5,
|
||||
0x9fc9, 0x9c7c, 0x950f, 0x8c27, 0x846d, 0x808a, 0x8348, 0x8abb, 0x9273, 0x9602, 0x6fb2, 0x70c6, 0x7369,
|
||||
0x76ba, 0x79d6, 0x7bdd, 0x7beb, 0x7752, 0x6ed7, 0x66ca, 0x6379, 0x6692, 0x6d54, 0x756c, 0x7c87, 0x8054,
|
||||
0x7e7c, 0x78b0, 0x728d, 0x6fb2, 0x6fb2, 0x70c6, 0x7369, 0x76ba, 0x79d6, 0x7bdd, 0x7beb, 0x7752, 0x6ed7,
|
||||
0x66ca, 0x6379, 0x6692, 0x6d54, 0x756c, 0x7c87, 0x8054, 0x7e7c, 0x78b0, 0x728d, 0x6fb2, 0x3fff, 0x0000,
|
||||
};
|
||||
|
||||
// 0x06016098
|
||||
|
|
@ -142,104 +90,53 @@ AnimationLimbVector d_rainbow_road_unk1[] = {
|
|||
|
||||
// 0x060160F8
|
||||
Animation d_rainbow_road_unk2 = {
|
||||
0x00010000,
|
||||
0x00000000,
|
||||
0x0014,
|
||||
0x0007,
|
||||
d_rainbow_road_chomp_jaw_animation,
|
||||
d_rainbow_road_unk1,
|
||||
0x00010000, 0x00000000, 0x0014, 0x0007, d_rainbow_road_chomp_jaw_animation, d_rainbow_road_unk1,
|
||||
};
|
||||
|
||||
// 0x0601610C
|
||||
Animation *d_rainbow_road_unk3[] = {
|
||||
Animation* d_rainbow_road_unk3[] = {
|
||||
&d_rainbow_road_unk2,
|
||||
};
|
||||
|
||||
// 0x06016110
|
||||
uintptr_t d_rainbow_road_unk4[] = {
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x0000023a,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x0000023a, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_rainbow_road_dl_15550,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_rainbow_road_dl_15550,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_rainbow_road_dl_151A8,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_rainbow_road_dl_151A8,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x0000023a,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x0000023a, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_rainbow_road_dl_15C68,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_rainbow_road_dl_15C68,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_rainbow_road_dl_158C0,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_rainbow_road_dl_158C0,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_rainbow_road_dl_15F18,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_rainbow_road_dl_15F18,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000003,
|
||||
0x00000002,
|
||||
0x00000003, 0x00000002,
|
||||
};
|
||||
|
||||
// No idea what this stuff is
|
||||
u32 d_rainbow_road_unk5[] = {
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000002,
|
||||
0x00000000,
|
||||
0x00000002,
|
||||
0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000002,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,183 +3,95 @@
|
|||
#include <assets/royal_raceway_data.h>
|
||||
|
||||
const course_texture royal_raceway_textures[] = {
|
||||
{gTexture64619C, 0x0124, 0x0800, 0x0},
|
||||
{gTexture645134, 0x052C, 0x0800, 0x0},
|
||||
{gTextureWoodDoor1, 0x0903, 0x1000, 0x0},
|
||||
{gTexture64BB60, 0x0169, 0x0800, 0x0},
|
||||
{gTextureGrass3, 0x0372, 0x0800, 0x0},
|
||||
{gTexture64F9E8, 0x020B, 0x1000, 0x0},
|
||||
{gTextureFlagRed, 0x019E, 0x0800, 0x0},
|
||||
{gTextureCrownJewelBlue, 0x0301, 0x0800, 0x0},
|
||||
{gTextureCrown, 0x0106, 0x0800, 0x0},
|
||||
{gTextureCrownJewelPink, 0x0313, 0x0800, 0x0},
|
||||
{gTextureSignKoopaAir0, 0x0360, 0x1000, 0x0},
|
||||
{gTextureSignKoopaAir1, 0x0304, 0x1000, 0x0},
|
||||
{gTexture6684F8, 0x010D, 0x0800, 0x0},
|
||||
{gTextureSignLuigis0, 0x0287, 0x1000, 0x0},
|
||||
{gTextureSignLuigis1, 0x02AF, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0},
|
||||
{gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0},
|
||||
{gTexture66CA98, 0x02C9, 0x0800, 0x0},
|
||||
{gTextureCheckerboardPink, 0x0157, 0x0800, 0x0},
|
||||
{gTexture670AC8, 0x0FBF, 0x1000, 0x0},
|
||||
{gTextureRoad0, 0x0300, 0x1000, 0x0},
|
||||
{gTextureRoadFinish0, 0x0338, 0x1000, 0x0},
|
||||
{gTextureSignYoshi, 0x04DF, 0x1000, 0x0},
|
||||
{gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0},
|
||||
{gTextureCastleBricks, 0x0B33, 0x1000, 0x0},
|
||||
{gTextureCastleBridge, 0x0428, 0x0800, 0x0},
|
||||
{gTextureGrass8, 0x02CB, 0x0800, 0x0},
|
||||
{gTextureGrass9, 0x0421, 0x0800, 0x0},
|
||||
{gTexture6646B8, 0x0298, 0x1000, 0x0},
|
||||
{gTexture664408, 0x02AE, 0x1000, 0x0},
|
||||
{gTextureBricksRed, 0x0C55, 0x1000, 0x0},
|
||||
{gTexture665C0C, 0x059D, 0x0800, 0x0},
|
||||
{gTexture6661AC, 0x01F7, 0x0800, 0x0},
|
||||
{gTexture6663A4, 0x05F6, 0x0800, 0x0},
|
||||
{gTexture667BAC, 0x067A, 0x0800, 0x0},
|
||||
{gTextureFlagRed2, 0x0186, 0x0800, 0x0},
|
||||
{gTexture66DB60, 0x01D6, 0x0800, 0x0},
|
||||
{gTextureStainglassPeach0, 0x0ED1, 0x1000, 0x0},
|
||||
{gTextureStainglassPeach1, 0x0DA9, 0x1000, 0x0},
|
||||
{gTextureFencePostWooden, 0x083D, 0x1000, 0x0},
|
||||
{gTexture648508, 0x01FE, 0x1000, 0x0},
|
||||
{gTexture6449D4, 0x075D, 0x0800, 0x0},
|
||||
{gTexture67FE0C, 0x02DE, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture64619C, 0x0124, 0x0800, 0x0 },
|
||||
{ gTexture645134, 0x052C, 0x0800, 0x0 },
|
||||
{ gTextureWoodDoor1, 0x0903, 0x1000, 0x0 },
|
||||
{ gTexture64BB60, 0x0169, 0x0800, 0x0 },
|
||||
{ gTextureGrass3, 0x0372, 0x0800, 0x0 },
|
||||
{ gTexture64F9E8, 0x020B, 0x1000, 0x0 },
|
||||
{ gTextureFlagRed, 0x019E, 0x0800, 0x0 },
|
||||
{ gTextureCrownJewelBlue, 0x0301, 0x0800, 0x0 },
|
||||
{ gTextureCrown, 0x0106, 0x0800, 0x0 },
|
||||
{ gTextureCrownJewelPink, 0x0313, 0x0800, 0x0 },
|
||||
{ gTextureSignKoopaAir0, 0x0360, 0x1000, 0x0 },
|
||||
{ gTextureSignKoopaAir1, 0x0304, 0x1000, 0x0 },
|
||||
{ gTexture6684F8, 0x010D, 0x0800, 0x0 },
|
||||
{ gTextureSignLuigis0, 0x0287, 0x1000, 0x0 },
|
||||
{ gTextureSignLuigis1, 0x02AF, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar0, 0x02D2, 0x1000, 0x0 },
|
||||
{ gTextureSignMarioStar1, 0x02B1, 0x1000, 0x0 },
|
||||
{ gTexture66CA98, 0x02C9, 0x0800, 0x0 },
|
||||
{ gTextureCheckerboardPink, 0x0157, 0x0800, 0x0 },
|
||||
{ gTexture670AC8, 0x0FBF, 0x1000, 0x0 },
|
||||
{ gTextureRoad0, 0x0300, 0x1000, 0x0 },
|
||||
{ gTextureRoadFinish0, 0x0338, 0x1000, 0x0 },
|
||||
{ gTextureSignYoshi, 0x04DF, 0x1000, 0x0 },
|
||||
{ gTextureCheckerboardBlueGray, 0x04A1, 0x1000, 0x0 },
|
||||
{ gTextureCastleBricks, 0x0B33, 0x1000, 0x0 },
|
||||
{ gTextureCastleBridge, 0x0428, 0x0800, 0x0 },
|
||||
{ gTextureGrass8, 0x02CB, 0x0800, 0x0 },
|
||||
{ gTextureGrass9, 0x0421, 0x0800, 0x0 },
|
||||
{ gTexture6646B8, 0x0298, 0x1000, 0x0 },
|
||||
{ gTexture664408, 0x02AE, 0x1000, 0x0 },
|
||||
{ gTextureBricksRed, 0x0C55, 0x1000, 0x0 },
|
||||
{ gTexture665C0C, 0x059D, 0x0800, 0x0 },
|
||||
{ gTexture6661AC, 0x01F7, 0x0800, 0x0 },
|
||||
{ gTexture6663A4, 0x05F6, 0x0800, 0x0 },
|
||||
{ gTexture667BAC, 0x067A, 0x0800, 0x0 },
|
||||
{ gTextureFlagRed2, 0x0186, 0x0800, 0x0 },
|
||||
{ gTexture66DB60, 0x01D6, 0x0800, 0x0 },
|
||||
{ gTextureStainglassPeach0, 0x0ED1, 0x1000, 0x0 },
|
||||
{ gTextureStainglassPeach1, 0x0DA9, 0x1000, 0x0 },
|
||||
{ gTextureFencePostWooden, 0x083D, 0x1000, 0x0 },
|
||||
{ gTexture648508, 0x01FE, 0x1000, 0x0 },
|
||||
{ gTexture6449D4, 0x075D, 0x0800, 0x0 },
|
||||
{ gTexture67FE0C, 0x02DE, 0x0800, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *royal_raceway_dls[] = {
|
||||
d_course_royal_raceway_dl_0,
|
||||
d_course_royal_raceway_dl_360,
|
||||
d_course_royal_raceway_dl_258,
|
||||
d_course_royal_raceway_dl_470,
|
||||
d_course_royal_raceway_dl_6D0,
|
||||
d_course_royal_raceway_dl_A48,
|
||||
d_course_royal_raceway_dl_8E0,
|
||||
d_course_royal_raceway_dl_B40,
|
||||
d_course_royal_raceway_dl_DA0,
|
||||
d_course_royal_raceway_dl_1180,
|
||||
d_course_royal_raceway_dl_F40,
|
||||
d_course_royal_raceway_dl_12C0,
|
||||
d_course_royal_raceway_dl_1538,
|
||||
d_course_royal_raceway_dl_1850,
|
||||
d_course_royal_raceway_dl_1610,
|
||||
d_course_royal_raceway_dl_19B0,
|
||||
d_course_royal_raceway_dl_1BB8,
|
||||
d_course_royal_raceway_dl_1E88,
|
||||
d_course_royal_raceway_dl_1C40,
|
||||
d_course_royal_raceway_dl_2018,
|
||||
d_course_royal_raceway_dl_21A8,
|
||||
d_course_royal_raceway_dl_2428,
|
||||
d_course_royal_raceway_dl_2210,
|
||||
d_course_royal_raceway_dl_25F0,
|
||||
d_course_royal_raceway_dl_26F0,
|
||||
d_course_royal_raceway_dl_29A0,
|
||||
d_course_royal_raceway_dl_27B8,
|
||||
d_course_royal_raceway_dl_2B78,
|
||||
d_course_royal_raceway_dl_2C20,
|
||||
d_course_royal_raceway_dl_2FE0,
|
||||
d_course_royal_raceway_dl_2DD0,
|
||||
d_course_royal_raceway_dl_31F8,
|
||||
d_course_royal_raceway_dl_33B0,
|
||||
d_course_royal_raceway_dl_3748,
|
||||
d_course_royal_raceway_dl_3580,
|
||||
d_course_royal_raceway_dl_3960,
|
||||
d_course_royal_raceway_dl_3AD8,
|
||||
d_course_royal_raceway_dl_3D38,
|
||||
d_course_royal_raceway_dl_3BA8,
|
||||
d_course_royal_raceway_dl_3ED8,
|
||||
d_course_royal_raceway_dl_3FA0,
|
||||
d_course_royal_raceway_dl_41D8,
|
||||
d_course_royal_raceway_dl_4048,
|
||||
d_course_royal_raceway_dl_4380,
|
||||
d_course_royal_raceway_dl_4438,
|
||||
d_course_royal_raceway_dl_45A0,
|
||||
d_course_royal_raceway_dl_44C0,
|
||||
d_course_royal_raceway_dl_46A0,
|
||||
d_course_royal_raceway_dl_4750,
|
||||
d_course_royal_raceway_dl_4930,
|
||||
d_course_royal_raceway_dl_4800,
|
||||
d_course_royal_raceway_dl_4A38,
|
||||
d_course_royal_raceway_dl_4AE0,
|
||||
d_course_royal_raceway_dl_4D00,
|
||||
d_course_royal_raceway_dl_4BA8,
|
||||
d_course_royal_raceway_dl_4DF8,
|
||||
d_course_royal_raceway_dl_4EC0,
|
||||
d_course_royal_raceway_dl_50F0,
|
||||
d_course_royal_raceway_dl_4F80,
|
||||
d_course_royal_raceway_dl_51D0,
|
||||
d_course_royal_raceway_dl_52F0,
|
||||
d_course_royal_raceway_dl_54F8,
|
||||
d_course_royal_raceway_dl_53B8,
|
||||
d_course_royal_raceway_dl_5598,
|
||||
d_course_royal_raceway_dl_56C0,
|
||||
d_course_royal_raceway_dl_5890,
|
||||
d_course_royal_raceway_dl_5758,
|
||||
d_course_royal_raceway_dl_5900,
|
||||
d_course_royal_raceway_dl_5A40,
|
||||
d_course_royal_raceway_dl_5CA0,
|
||||
d_course_royal_raceway_dl_5B28,
|
||||
d_course_royal_raceway_dl_5D08,
|
||||
d_course_royal_raceway_dl_5EB8,
|
||||
d_course_royal_raceway_dl_6118,
|
||||
d_course_royal_raceway_dl_5FD8,
|
||||
d_course_royal_raceway_dl_61B0,
|
||||
d_course_royal_raceway_dl_6378,
|
||||
d_course_royal_raceway_dl_6780,
|
||||
d_course_royal_raceway_dl_6538,
|
||||
d_course_royal_raceway_dl_68C8,
|
||||
d_course_royal_raceway_dl_6BC0,
|
||||
d_course_royal_raceway_dl_70C0,
|
||||
d_course_royal_raceway_dl_6E20,
|
||||
d_course_royal_raceway_dl_72B8,
|
||||
d_course_royal_raceway_dl_75C0,
|
||||
d_course_royal_raceway_dl_78E8,
|
||||
d_course_royal_raceway_dl_7778,
|
||||
d_course_royal_raceway_dl_7AD0,
|
||||
d_course_royal_raceway_dl_7BD8,
|
||||
d_course_royal_raceway_dl_7ED8,
|
||||
d_course_royal_raceway_dl_7DB0,
|
||||
d_course_royal_raceway_dl_8068,
|
||||
d_course_royal_raceway_dl_81C0,
|
||||
d_course_royal_raceway_dl_84A0,
|
||||
d_course_royal_raceway_dl_8398,
|
||||
d_course_royal_raceway_dl_8620,
|
||||
d_course_royal_raceway_dl_8770,
|
||||
d_course_royal_raceway_dl_88B0,
|
||||
d_course_royal_raceway_dl_8838,
|
||||
d_course_royal_raceway_dl_8930,
|
||||
d_course_royal_raceway_dl_89F0,
|
||||
d_course_royal_raceway_dl_8CD8,
|
||||
d_course_royal_raceway_dl_8C58,
|
||||
d_course_royal_raceway_dl_8EB8,
|
||||
d_course_royal_raceway_dl_8FA8,
|
||||
d_course_royal_raceway_dl_92D0,
|
||||
d_course_royal_raceway_dl_9218,
|
||||
d_course_royal_raceway_dl_94E8,
|
||||
d_course_royal_raceway_dl_9678,
|
||||
d_course_royal_raceway_dl_99A0,
|
||||
d_course_royal_raceway_dl_9900,
|
||||
d_course_royal_raceway_dl_9B30,
|
||||
d_course_royal_raceway_dl_9D58,
|
||||
d_course_royal_raceway_dl_A0A8,
|
||||
d_course_royal_raceway_dl_9FE8,
|
||||
d_course_royal_raceway_dl_A200,
|
||||
d_course_royal_raceway_dl_A478,
|
||||
d_course_royal_raceway_dl_A728,
|
||||
d_course_royal_raceway_dl_A600,
|
||||
d_course_royal_raceway_dl_A8A8,
|
||||
d_course_royal_raceway_dl_A9D0,
|
||||
d_course_royal_raceway_dl_AC28,
|
||||
d_course_royal_raceway_dl_AB28,
|
||||
d_course_royal_raceway_dl_AD90,
|
||||
d_course_royal_raceway_dl_AE70,
|
||||
d_course_royal_raceway_dl_B040,
|
||||
d_course_royal_raceway_dl_AFB0,
|
||||
d_course_royal_raceway_dl_B188,
|
||||
d_course_royal_raceway_dl_B230,
|
||||
d_course_royal_raceway_dl_B3E8,
|
||||
d_course_royal_raceway_dl_B2E0,
|
||||
d_course_royal_raceway_dl_B508,
|
||||
const Gfx* royal_raceway_dls[] = {
|
||||
d_course_royal_raceway_dl_0, d_course_royal_raceway_dl_360, d_course_royal_raceway_dl_258,
|
||||
d_course_royal_raceway_dl_470, d_course_royal_raceway_dl_6D0, d_course_royal_raceway_dl_A48,
|
||||
d_course_royal_raceway_dl_8E0, d_course_royal_raceway_dl_B40, d_course_royal_raceway_dl_DA0,
|
||||
d_course_royal_raceway_dl_1180, d_course_royal_raceway_dl_F40, d_course_royal_raceway_dl_12C0,
|
||||
d_course_royal_raceway_dl_1538, d_course_royal_raceway_dl_1850, d_course_royal_raceway_dl_1610,
|
||||
d_course_royal_raceway_dl_19B0, d_course_royal_raceway_dl_1BB8, d_course_royal_raceway_dl_1E88,
|
||||
d_course_royal_raceway_dl_1C40, d_course_royal_raceway_dl_2018, d_course_royal_raceway_dl_21A8,
|
||||
d_course_royal_raceway_dl_2428, d_course_royal_raceway_dl_2210, d_course_royal_raceway_dl_25F0,
|
||||
d_course_royal_raceway_dl_26F0, d_course_royal_raceway_dl_29A0, d_course_royal_raceway_dl_27B8,
|
||||
d_course_royal_raceway_dl_2B78, d_course_royal_raceway_dl_2C20, d_course_royal_raceway_dl_2FE0,
|
||||
d_course_royal_raceway_dl_2DD0, d_course_royal_raceway_dl_31F8, d_course_royal_raceway_dl_33B0,
|
||||
d_course_royal_raceway_dl_3748, d_course_royal_raceway_dl_3580, d_course_royal_raceway_dl_3960,
|
||||
d_course_royal_raceway_dl_3AD8, d_course_royal_raceway_dl_3D38, d_course_royal_raceway_dl_3BA8,
|
||||
d_course_royal_raceway_dl_3ED8, d_course_royal_raceway_dl_3FA0, d_course_royal_raceway_dl_41D8,
|
||||
d_course_royal_raceway_dl_4048, d_course_royal_raceway_dl_4380, d_course_royal_raceway_dl_4438,
|
||||
d_course_royal_raceway_dl_45A0, d_course_royal_raceway_dl_44C0, d_course_royal_raceway_dl_46A0,
|
||||
d_course_royal_raceway_dl_4750, d_course_royal_raceway_dl_4930, d_course_royal_raceway_dl_4800,
|
||||
d_course_royal_raceway_dl_4A38, d_course_royal_raceway_dl_4AE0, d_course_royal_raceway_dl_4D00,
|
||||
d_course_royal_raceway_dl_4BA8, d_course_royal_raceway_dl_4DF8, d_course_royal_raceway_dl_4EC0,
|
||||
d_course_royal_raceway_dl_50F0, d_course_royal_raceway_dl_4F80, d_course_royal_raceway_dl_51D0,
|
||||
d_course_royal_raceway_dl_52F0, d_course_royal_raceway_dl_54F8, d_course_royal_raceway_dl_53B8,
|
||||
d_course_royal_raceway_dl_5598, d_course_royal_raceway_dl_56C0, d_course_royal_raceway_dl_5890,
|
||||
d_course_royal_raceway_dl_5758, d_course_royal_raceway_dl_5900, d_course_royal_raceway_dl_5A40,
|
||||
d_course_royal_raceway_dl_5CA0, d_course_royal_raceway_dl_5B28, d_course_royal_raceway_dl_5D08,
|
||||
d_course_royal_raceway_dl_5EB8, d_course_royal_raceway_dl_6118, d_course_royal_raceway_dl_5FD8,
|
||||
d_course_royal_raceway_dl_61B0, d_course_royal_raceway_dl_6378, d_course_royal_raceway_dl_6780,
|
||||
d_course_royal_raceway_dl_6538, d_course_royal_raceway_dl_68C8, d_course_royal_raceway_dl_6BC0,
|
||||
d_course_royal_raceway_dl_70C0, d_course_royal_raceway_dl_6E20, d_course_royal_raceway_dl_72B8,
|
||||
d_course_royal_raceway_dl_75C0, d_course_royal_raceway_dl_78E8, d_course_royal_raceway_dl_7778,
|
||||
d_course_royal_raceway_dl_7AD0, d_course_royal_raceway_dl_7BD8, d_course_royal_raceway_dl_7ED8,
|
||||
d_course_royal_raceway_dl_7DB0, d_course_royal_raceway_dl_8068, d_course_royal_raceway_dl_81C0,
|
||||
d_course_royal_raceway_dl_84A0, d_course_royal_raceway_dl_8398, d_course_royal_raceway_dl_8620,
|
||||
d_course_royal_raceway_dl_8770, d_course_royal_raceway_dl_88B0, d_course_royal_raceway_dl_8838,
|
||||
d_course_royal_raceway_dl_8930, d_course_royal_raceway_dl_89F0, d_course_royal_raceway_dl_8CD8,
|
||||
d_course_royal_raceway_dl_8C58, d_course_royal_raceway_dl_8EB8, d_course_royal_raceway_dl_8FA8,
|
||||
d_course_royal_raceway_dl_92D0, d_course_royal_raceway_dl_9218, d_course_royal_raceway_dl_94E8,
|
||||
d_course_royal_raceway_dl_9678, d_course_royal_raceway_dl_99A0, d_course_royal_raceway_dl_9900,
|
||||
d_course_royal_raceway_dl_9B30, d_course_royal_raceway_dl_9D58, d_course_royal_raceway_dl_A0A8,
|
||||
d_course_royal_raceway_dl_9FE8, d_course_royal_raceway_dl_A200, d_course_royal_raceway_dl_A478,
|
||||
d_course_royal_raceway_dl_A728, d_course_royal_raceway_dl_A600, d_course_royal_raceway_dl_A8A8,
|
||||
d_course_royal_raceway_dl_A9D0, d_course_royal_raceway_dl_AC28, d_course_royal_raceway_dl_AB28,
|
||||
d_course_royal_raceway_dl_AD90, d_course_royal_raceway_dl_AE70, d_course_royal_raceway_dl_B040,
|
||||
d_course_royal_raceway_dl_AFB0, d_course_royal_raceway_dl_B188, d_course_royal_raceway_dl_B230,
|
||||
d_course_royal_raceway_dl_B3E8, d_course_royal_raceway_dl_B2E0, d_course_royal_raceway_dl_B508,
|
||||
};
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
|
@ -2,28 +2,28 @@
|
|||
#include "course_offsets.h"
|
||||
|
||||
const course_texture skyscraper_textures[] = {
|
||||
{gTexture6457D8, 0x0160, 0x0800, 0x0},
|
||||
{gTexture6462C0, 0x01B9, 0x0800, 0x0},
|
||||
{gTexture6864E8, 0x0807, 0x1000, 0x0},
|
||||
{gTexture686CF0, 0x08B7, 0x1000, 0x0},
|
||||
{gTexture6875A8, 0x093F, 0x1000, 0x0},
|
||||
{gTexture687EE8, 0x0883, 0x1000, 0x0},
|
||||
{gTexture68876C, 0x0AC2, 0x1000, 0x0},
|
||||
{gTexture689230, 0x09CE, 0x1000, 0x0},
|
||||
{gTexture689C00, 0x0884, 0x1000, 0x0},
|
||||
{gTexture68A484, 0x07D6, 0x1000, 0x0},
|
||||
{gTexture68AC5C, 0x0A47, 0x1000, 0x0},
|
||||
{gTexture68B6A4, 0x07C5, 0x1000, 0x0},
|
||||
{gTexture68BE6C, 0x04A1, 0x1000, 0x0},
|
||||
{gTexture68C310, 0x030D, 0x1000, 0x0},
|
||||
{gTexture64B8D8, 0x0177, 0x0800, 0x0},
|
||||
{gTexture645660, 0x0176, 0x0800, 0x0},
|
||||
{gTextureNumberYellowBlue1, 0x01AE, 0x0800, 0x0},
|
||||
{gTextureNumberYellowBlue2, 0x01C6, 0x0800, 0x0},
|
||||
{gTextureNumberYellowBlue3, 0x01CC, 0x0800, 0x0},
|
||||
{gTextureNumberYellowBlue4, 0x01E4, 0x0800, 0x0},
|
||||
{gTexture668608, 0x0120, 0x0800, 0x0},
|
||||
{gTexture67B75C, 0x0108, 0x0800, 0x0},
|
||||
{gTexture6835F0, 0x0252, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture6457D8, 0x0160, 0x0800, 0x0 },
|
||||
{ gTexture6462C0, 0x01B9, 0x0800, 0x0 },
|
||||
{ gTexture6864E8, 0x0807, 0x1000, 0x0 },
|
||||
{ gTexture686CF0, 0x08B7, 0x1000, 0x0 },
|
||||
{ gTexture6875A8, 0x093F, 0x1000, 0x0 },
|
||||
{ gTexture687EE8, 0x0883, 0x1000, 0x0 },
|
||||
{ gTexture68876C, 0x0AC2, 0x1000, 0x0 },
|
||||
{ gTexture689230, 0x09CE, 0x1000, 0x0 },
|
||||
{ gTexture689C00, 0x0884, 0x1000, 0x0 },
|
||||
{ gTexture68A484, 0x07D6, 0x1000, 0x0 },
|
||||
{ gTexture68AC5C, 0x0A47, 0x1000, 0x0 },
|
||||
{ gTexture68B6A4, 0x07C5, 0x1000, 0x0 },
|
||||
{ gTexture68BE6C, 0x04A1, 0x1000, 0x0 },
|
||||
{ gTexture68C310, 0x030D, 0x1000, 0x0 },
|
||||
{ gTexture64B8D8, 0x0177, 0x0800, 0x0 },
|
||||
{ gTexture645660, 0x0176, 0x0800, 0x0 },
|
||||
{ gTextureNumberYellowBlue1, 0x01AE, 0x0800, 0x0 },
|
||||
{ gTextureNumberYellowBlue2, 0x01C6, 0x0800, 0x0 },
|
||||
{ gTextureNumberYellowBlue3, 0x01CC, 0x0800, 0x0 },
|
||||
{ gTextureNumberYellowBlue4, 0x01E4, 0x0800, 0x0 },
|
||||
{ gTexture668608, 0x0120, 0x0800, 0x0 },
|
||||
{ gTexture67B75C, 0x0108, 0x0800, 0x0 },
|
||||
{ gTexture6835F0, 0x0252, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
|
|
|||
|
|
@ -5,23 +5,20 @@
|
|||
/*
|
||||
* This file is required for data alignment
|
||||
*
|
||||
*/
|
||||
*/
|
||||
|
||||
StaffGhost d_mario_raceway_staff_ghost[] = {
|
||||
#include "courses/mario_raceway/staff_ghost.inc.c"
|
||||
#include "courses/mario_raceway/staff_ghost.inc.c"
|
||||
};
|
||||
|
||||
StaffGhost d_luigi_raceway_staff_ghost[1046] = {
|
||||
#include "courses/luigi_raceway/staff_ghost.inc.c"
|
||||
#include "courses/luigi_raceway/staff_ghost.inc.c"
|
||||
};
|
||||
|
||||
StaffGhost d_royal_raceway_staff_ghost[] = {
|
||||
#include "courses/royal_raceway/staff_ghost.inc.c"
|
||||
#include "courses/royal_raceway/staff_ghost.inc.c"
|
||||
};
|
||||
|
||||
// Unknown data. Perhaps colour or lights
|
||||
s32 D_0F4FCAD0[] = {
|
||||
0x00000000, 0xc8c8c8c8,
|
||||
0xc8c80000, 0x00007b39, 0x6f6f6f6f, 0x6f6f6f6f,
|
||||
0x3f7b0000, 0x0000c8c8, 0xc8c8c8c8, 0xc8000000
|
||||
};
|
||||
s32 D_0F4FCAD0[] = { 0x00000000, 0xc8c8c8c8, 0xc8c80000, 0x00007b39, 0x6f6f6f6f,
|
||||
0x6f6f6f6f, 0x3f7b0000, 0x0000c8c8, 0xc8c8c8c8, 0xc8000000 };
|
||||
|
|
|
|||
|
|
@ -4,67 +4,54 @@
|
|||
#include <assets/toads_turnpike_data.h>
|
||||
|
||||
const course_texture toads_turnpike_textures[] = {
|
||||
{gTexture645134, 0x052C, 0x0800, 0x0},
|
||||
{gTexture64FE68, 0x0258, 0x1000, 0x0},
|
||||
{gTexture6607C0, 0x0105, 0x0800, 0x0},
|
||||
{gTexture6608C8, 0x0106, 0x0800, 0x0},
|
||||
{gTextureGrass11, 0x01F8, 0x0800, 0x0},
|
||||
{gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0},
|
||||
{gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0},
|
||||
{gTexture671A88, 0x012D, 0x0800, 0x0},
|
||||
{gTextureRoad2, 0x02AE, 0x1000, 0x0},
|
||||
{gTextureRoad3, 0x0286, 0x1000, 0x0},
|
||||
{gTextureRoad4, 0x0282, 0x1000, 0x0},
|
||||
{gTextureRoadFinish0, 0x0338, 0x1000, 0x0},
|
||||
{gTextureSignToadYellow, 0x0723, 0x1000, 0x0},
|
||||
{gTextureSignToadGreen, 0x071F, 0x1000, 0x0},
|
||||
{gTextureSignMergingLanes, 0x0118, 0x0800, 0x0},
|
||||
{gTexture65127C, 0x01AB, 0x0800, 0x0},
|
||||
{gTextureRoad5, 0x02B9, 0x1000, 0x0},
|
||||
{gTextureSignToadRed, 0x0610, 0x1000, 0x0},
|
||||
{gTexture668228, 0x0130, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture645134, 0x052C, 0x0800, 0x0 },
|
||||
{ gTexture64FE68, 0x0258, 0x1000, 0x0 },
|
||||
{ gTexture6607C0, 0x0105, 0x0800, 0x0 },
|
||||
{ gTexture6608C8, 0x0106, 0x0800, 0x0 },
|
||||
{ gTextureGrass11, 0x01F8, 0x0800, 0x0 },
|
||||
{ gTextureSignNintendoRed0, 0x02A6, 0x1000, 0x0 },
|
||||
{ gTextureSignNintendoRed1, 0x02F7, 0x1000, 0x0 },
|
||||
{ gTexture671A88, 0x012D, 0x0800, 0x0 },
|
||||
{ gTextureRoad2, 0x02AE, 0x1000, 0x0 },
|
||||
{ gTextureRoad3, 0x0286, 0x1000, 0x0 },
|
||||
{ gTextureRoad4, 0x0282, 0x1000, 0x0 },
|
||||
{ gTextureRoadFinish0, 0x0338, 0x1000, 0x0 },
|
||||
{ gTextureSignToadYellow, 0x0723, 0x1000, 0x0 },
|
||||
{ gTextureSignToadGreen, 0x071F, 0x1000, 0x0 },
|
||||
{ gTextureSignMergingLanes, 0x0118, 0x0800, 0x0 },
|
||||
{ gTexture65127C, 0x01AB, 0x0800, 0x0 },
|
||||
{ gTextureRoad5, 0x02B9, 0x1000, 0x0 },
|
||||
{ gTextureSignToadRed, 0x0610, 0x1000, 0x0 },
|
||||
{ gTexture668228, 0x0130, 0x0800, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
Gfx *toads_turnpike_dls[] = {
|
||||
d_course_toads_turnpike_dl_80, d_course_toads_turnpike_dl_1F8,
|
||||
d_course_toads_turnpike_dl_158, d_course_toads_turnpike_dl_2D0,
|
||||
d_course_toads_turnpike_dl_380, d_course_toads_turnpike_dl_4E8,
|
||||
d_course_toads_turnpike_dl_438, d_course_toads_turnpike_dl_5B8,
|
||||
d_course_toads_turnpike_dl_668, d_course_toads_turnpike_dl_7D8,
|
||||
d_course_toads_turnpike_dl_718, d_course_toads_turnpike_dl_878,
|
||||
d_course_toads_turnpike_dl_948, d_course_toads_turnpike_dl_AC8,
|
||||
d_course_toads_turnpike_dl_9F0, d_course_toads_turnpike_dl_B88,
|
||||
d_course_toads_turnpike_dl_C70, d_course_toads_turnpike_dl_DD0,
|
||||
d_course_toads_turnpike_dl_D00, d_course_toads_turnpike_dl_E70,
|
||||
d_course_toads_turnpike_dl_F18, d_course_toads_turnpike_dl_1070,
|
||||
d_course_toads_turnpike_dl_FA8, d_course_toads_turnpike_dl_1118,
|
||||
d_course_toads_turnpike_dl_11C0, d_course_toads_turnpike_dl_1310,
|
||||
d_course_toads_turnpike_dl_1250, d_course_toads_turnpike_dl_13E0,
|
||||
d_course_toads_turnpike_dl_1468, d_course_toads_turnpike_dl_15A8,
|
||||
d_course_toads_turnpike_dl_1510, d_course_toads_turnpike_dl_1678,
|
||||
d_course_toads_turnpike_dl_1708, d_course_toads_turnpike_dl_18C0,
|
||||
d_course_toads_turnpike_dl_17F8, d_course_toads_turnpike_dl_19C0,
|
||||
d_course_toads_turnpike_dl_1A60, d_course_toads_turnpike_dl_1C10,
|
||||
d_course_toads_turnpike_dl_1B50, d_course_toads_turnpike_dl_1D18,
|
||||
d_course_toads_turnpike_dl_1DC0, d_course_toads_turnpike_dl_1F40,
|
||||
d_course_toads_turnpike_dl_1E80, d_course_toads_turnpike_dl_2030,
|
||||
d_course_toads_turnpike_dl_20F8, d_course_toads_turnpike_dl_22A8,
|
||||
d_course_toads_turnpike_dl_21C8, d_course_toads_turnpike_dl_2358,
|
||||
d_course_toads_turnpike_dl_2440, d_course_toads_turnpike_dl_2628,
|
||||
d_course_toads_turnpike_dl_2530, d_course_toads_turnpike_dl_26D8,
|
||||
d_course_toads_turnpike_dl_27D0, d_course_toads_turnpike_dl_2960,
|
||||
d_course_toads_turnpike_dl_2898, d_course_toads_turnpike_dl_2A00,
|
||||
d_course_toads_turnpike_dl_2AF0, d_course_toads_turnpike_dl_2C38,
|
||||
d_course_toads_turnpike_dl_2B88, d_course_toads_turnpike_dl_2CC0,
|
||||
d_course_toads_turnpike_dl_2DB8, d_course_toads_turnpike_dl_2EF0,
|
||||
d_course_toads_turnpike_dl_2E50, d_course_toads_turnpike_dl_2F78,
|
||||
d_course_toads_turnpike_dl_3030, d_course_toads_turnpike_dl_3190,
|
||||
d_course_toads_turnpike_dl_30F8, d_course_toads_turnpike_dl_3228,
|
||||
d_course_toads_turnpike_dl_32F0, d_course_toads_turnpike_dl_3438,
|
||||
d_course_toads_turnpike_dl_33A0, d_course_toads_turnpike_dl_34D0,
|
||||
d_course_toads_turnpike_dl_3570, d_course_toads_turnpike_dl_36A8,
|
||||
d_course_toads_turnpike_dl_3618, d_course_toads_turnpike_dl_3758,
|
||||
d_course_toads_turnpike_dl_37F0, d_course_toads_turnpike_dl_39C8,
|
||||
Gfx* toads_turnpike_dls[] = {
|
||||
d_course_toads_turnpike_dl_80, d_course_toads_turnpike_dl_1F8, d_course_toads_turnpike_dl_158,
|
||||
d_course_toads_turnpike_dl_2D0, d_course_toads_turnpike_dl_380, d_course_toads_turnpike_dl_4E8,
|
||||
d_course_toads_turnpike_dl_438, d_course_toads_turnpike_dl_5B8, d_course_toads_turnpike_dl_668,
|
||||
d_course_toads_turnpike_dl_7D8, d_course_toads_turnpike_dl_718, d_course_toads_turnpike_dl_878,
|
||||
d_course_toads_turnpike_dl_948, d_course_toads_turnpike_dl_AC8, d_course_toads_turnpike_dl_9F0,
|
||||
d_course_toads_turnpike_dl_B88, d_course_toads_turnpike_dl_C70, d_course_toads_turnpike_dl_DD0,
|
||||
d_course_toads_turnpike_dl_D00, d_course_toads_turnpike_dl_E70, d_course_toads_turnpike_dl_F18,
|
||||
d_course_toads_turnpike_dl_1070, d_course_toads_turnpike_dl_FA8, d_course_toads_turnpike_dl_1118,
|
||||
d_course_toads_turnpike_dl_11C0, d_course_toads_turnpike_dl_1310, d_course_toads_turnpike_dl_1250,
|
||||
d_course_toads_turnpike_dl_13E0, d_course_toads_turnpike_dl_1468, d_course_toads_turnpike_dl_15A8,
|
||||
d_course_toads_turnpike_dl_1510, d_course_toads_turnpike_dl_1678, d_course_toads_turnpike_dl_1708,
|
||||
d_course_toads_turnpike_dl_18C0, d_course_toads_turnpike_dl_17F8, d_course_toads_turnpike_dl_19C0,
|
||||
d_course_toads_turnpike_dl_1A60, d_course_toads_turnpike_dl_1C10, d_course_toads_turnpike_dl_1B50,
|
||||
d_course_toads_turnpike_dl_1D18, d_course_toads_turnpike_dl_1DC0, d_course_toads_turnpike_dl_1F40,
|
||||
d_course_toads_turnpike_dl_1E80, d_course_toads_turnpike_dl_2030, d_course_toads_turnpike_dl_20F8,
|
||||
d_course_toads_turnpike_dl_22A8, d_course_toads_turnpike_dl_21C8, d_course_toads_turnpike_dl_2358,
|
||||
d_course_toads_turnpike_dl_2440, d_course_toads_turnpike_dl_2628, d_course_toads_turnpike_dl_2530,
|
||||
d_course_toads_turnpike_dl_26D8, d_course_toads_turnpike_dl_27D0, d_course_toads_turnpike_dl_2960,
|
||||
d_course_toads_turnpike_dl_2898, d_course_toads_turnpike_dl_2A00, d_course_toads_turnpike_dl_2AF0,
|
||||
d_course_toads_turnpike_dl_2C38, d_course_toads_turnpike_dl_2B88, d_course_toads_turnpike_dl_2CC0,
|
||||
d_course_toads_turnpike_dl_2DB8, d_course_toads_turnpike_dl_2EF0, d_course_toads_turnpike_dl_2E50,
|
||||
d_course_toads_turnpike_dl_2F78, d_course_toads_turnpike_dl_3030, d_course_toads_turnpike_dl_3190,
|
||||
d_course_toads_turnpike_dl_30F8, d_course_toads_turnpike_dl_3228, d_course_toads_turnpike_dl_32F0,
|
||||
d_course_toads_turnpike_dl_3438, d_course_toads_turnpike_dl_33A0, d_course_toads_turnpike_dl_34D0,
|
||||
d_course_toads_turnpike_dl_3570, d_course_toads_turnpike_dl_36A8, d_course_toads_turnpike_dl_3618,
|
||||
d_course_toads_turnpike_dl_3758, d_course_toads_turnpike_dl_37F0, d_course_toads_turnpike_dl_39C8,
|
||||
d_course_toads_turnpike_dl_3910, d_course_toads_turnpike_dl_3AD8,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,136 +3,64 @@
|
|||
#include <assets/wario_stadium_data.h>
|
||||
|
||||
const course_texture wario_stadium_textures[] = {
|
||||
{gTexture67F15C, 0x02F1, 0x0800, 0x0},
|
||||
{gTexture67F450, 0x0194, 0x0800, 0x0},
|
||||
{gTextureSignWarioFace, 0x0825, 0x1000, 0x0},
|
||||
{gTexture670AC8, 0x0FBF, 0x1000, 0x0},
|
||||
{gTextureCheckerboardBlackWhite, 0x0107, 0x0800, 0x0},
|
||||
{gTexture64C11C, 0x0695, 0x0800, 0x0},
|
||||
{gTexture64C7B4, 0x046C, 0x0800, 0x0},
|
||||
{gTexture668228, 0x0130, 0x0800, 0x0},
|
||||
{gTexture668358, 0x01A0, 0x0800, 0x0},
|
||||
{gTexture66AEB8, 0x0201, 0x0800, 0x0},
|
||||
{gTexture677A40, 0x0275, 0x0800, 0x0},
|
||||
{gTexture67E428, 0x0A81, 0x1000, 0x0},
|
||||
{gTexture643A34, 0x0106, 0x0800, 0x0},
|
||||
{gTexture66EBF0, 0x0146, 0x0800, 0x0},
|
||||
{gTexture68272C, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture682928, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture682B24, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture682D20, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture682F1C, 0x01F9, 0x1000, 0x0},
|
||||
{gTexture683118, 0x01F9, 0x1000, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture67F15C, 0x02F1, 0x0800, 0x0 },
|
||||
{ gTexture67F450, 0x0194, 0x0800, 0x0 },
|
||||
{ gTextureSignWarioFace, 0x0825, 0x1000, 0x0 },
|
||||
{ gTexture670AC8, 0x0FBF, 0x1000, 0x0 },
|
||||
{ gTextureCheckerboardBlackWhite, 0x0107, 0x0800, 0x0 },
|
||||
{ gTexture64C11C, 0x0695, 0x0800, 0x0 },
|
||||
{ gTexture64C7B4, 0x046C, 0x0800, 0x0 },
|
||||
{ gTexture668228, 0x0130, 0x0800, 0x0 },
|
||||
{ gTexture668358, 0x01A0, 0x0800, 0x0 },
|
||||
{ gTexture66AEB8, 0x0201, 0x0800, 0x0 },
|
||||
{ gTexture677A40, 0x0275, 0x0800, 0x0 },
|
||||
{ gTexture67E428, 0x0A81, 0x1000, 0x0 },
|
||||
{ gTexture643A34, 0x0106, 0x0800, 0x0 },
|
||||
{ gTexture66EBF0, 0x0146, 0x0800, 0x0 },
|
||||
{ gTexture68272C, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture682928, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture682B24, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture682D20, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture682F1C, 0x01F9, 0x1000, 0x0 },
|
||||
{ gTexture683118, 0x01F9, 0x1000, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
const Gfx *wario_stadium_dls[] = {
|
||||
d_course_wario_stadium_dl_0,
|
||||
d_course_wario_stadium_dl_158,
|
||||
d_course_wario_stadium_dl_B8,
|
||||
d_course_wario_stadium_dl_1B8,
|
||||
d_course_wario_stadium_dl_2A0,
|
||||
d_course_wario_stadium_dl_440,
|
||||
d_course_wario_stadium_dl_350,
|
||||
d_course_wario_stadium_dl_4C0,
|
||||
d_course_wario_stadium_dl_5E8,
|
||||
d_course_wario_stadium_dl_798,
|
||||
d_course_wario_stadium_dl_668,
|
||||
d_course_wario_stadium_dl_830,
|
||||
d_course_wario_stadium_dl_940,
|
||||
d_course_wario_stadium_dl_AB0,
|
||||
d_course_wario_stadium_dl_990,
|
||||
d_course_wario_stadium_dl_B60,
|
||||
d_course_wario_stadium_dl_C08,
|
||||
d_course_wario_stadium_dl_D60,
|
||||
d_course_wario_stadium_dl_C70,
|
||||
d_course_wario_stadium_dl_E30,
|
||||
d_course_wario_stadium_dl_ED0,
|
||||
d_course_wario_stadium_dl_1068,
|
||||
d_course_wario_stadium_dl_F70,
|
||||
d_course_wario_stadium_dl_1158,
|
||||
d_course_wario_stadium_dl_11F8,
|
||||
d_course_wario_stadium_dl_13C0,
|
||||
d_course_wario_stadium_dl_12E0,
|
||||
d_course_wario_stadium_dl_14A0,
|
||||
d_course_wario_stadium_dl_1590,
|
||||
d_course_wario_stadium_dl_1708,
|
||||
d_course_wario_stadium_dl_1630,
|
||||
d_course_wario_stadium_dl_17A8,
|
||||
d_course_wario_stadium_dl_1868,
|
||||
d_course_wario_stadium_dl_19E0,
|
||||
d_course_wario_stadium_dl_1908,
|
||||
d_course_wario_stadium_dl_1AB8,
|
||||
d_course_wario_stadium_dl_1B48,
|
||||
d_course_wario_stadium_dl_1CA8,
|
||||
d_course_wario_stadium_dl_1BB0,
|
||||
d_course_wario_stadium_dl_1D68,
|
||||
d_course_wario_stadium_dl_1DF8,
|
||||
d_course_wario_stadium_dl_1FD8,
|
||||
d_course_wario_stadium_dl_1E70,
|
||||
d_course_wario_stadium_dl_20A8,
|
||||
d_course_wario_stadium_dl_21A8,
|
||||
d_course_wario_stadium_dl_2308,
|
||||
d_course_wario_stadium_dl_2218,
|
||||
d_course_wario_stadium_dl_23B0,
|
||||
d_course_wario_stadium_dl_2490,
|
||||
d_course_wario_stadium_dl_2610,
|
||||
d_course_wario_stadium_dl_2530,
|
||||
d_course_wario_stadium_dl_2698,
|
||||
d_course_wario_stadium_dl_2798,
|
||||
d_course_wario_stadium_dl_2928,
|
||||
d_course_wario_stadium_dl_2870,
|
||||
d_course_wario_stadium_dl_29D0,
|
||||
d_course_wario_stadium_dl_2AB0,
|
||||
d_course_wario_stadium_dl_2C30,
|
||||
d_course_wario_stadium_dl_2B60,
|
||||
d_course_wario_stadium_dl_2CE0,
|
||||
d_course_wario_stadium_dl_2DC0,
|
||||
d_course_wario_stadium_dl_2FB8,
|
||||
d_course_wario_stadium_dl_2E70,
|
||||
d_course_wario_stadium_dl_3098,
|
||||
d_course_wario_stadium_dl_31B0,
|
||||
d_course_wario_stadium_dl_3368,
|
||||
d_course_wario_stadium_dl_3260,
|
||||
d_course_wario_stadium_dl_3450,
|
||||
d_course_wario_stadium_dl_3550,
|
||||
d_course_wario_stadium_dl_36D8,
|
||||
d_course_wario_stadium_dl_3600,
|
||||
d_course_wario_stadium_dl_37A8,
|
||||
d_course_wario_stadium_dl_3890,
|
||||
d_course_wario_stadium_dl_3A10,
|
||||
d_course_wario_stadium_dl_3980,
|
||||
d_course_wario_stadium_dl_3AD0,
|
||||
d_course_wario_stadium_dl_3BB0,
|
||||
d_course_wario_stadium_dl_3D90,
|
||||
d_course_wario_stadium_dl_3CF8,
|
||||
d_course_wario_stadium_dl_3E80,
|
||||
d_course_wario_stadium_dl_3F78,
|
||||
d_course_wario_stadium_dl_40F0,
|
||||
d_course_wario_stadium_dl_4060,
|
||||
d_course_wario_stadium_dl_41D0,
|
||||
d_course_wario_stadium_dl_4270,
|
||||
d_course_wario_stadium_dl_43E0,
|
||||
d_course_wario_stadium_dl_4340,
|
||||
d_course_wario_stadium_dl_44B0,
|
||||
d_course_wario_stadium_dl_4550,
|
||||
d_course_wario_stadium_dl_47F0,
|
||||
d_course_wario_stadium_dl_46E0,
|
||||
d_course_wario_stadium_dl_4948,
|
||||
d_course_wario_stadium_dl_4A78,
|
||||
d_course_wario_stadium_dl_4BE8,
|
||||
d_course_wario_stadium_dl_4B30,
|
||||
d_course_wario_stadium_dl_4C60,
|
||||
d_course_wario_stadium_dl_4D40,
|
||||
d_course_wario_stadium_dl_4EF0,
|
||||
d_course_wario_stadium_dl_4E30,
|
||||
d_course_wario_stadium_dl_4F80,
|
||||
d_course_wario_stadium_dl_5090,
|
||||
d_course_wario_stadium_dl_51E8,
|
||||
d_course_wario_stadium_dl_5168,
|
||||
d_course_wario_stadium_dl_5270,
|
||||
d_course_wario_stadium_dl_5338,
|
||||
d_course_wario_stadium_dl_54E8,
|
||||
d_course_wario_stadium_dl_5460,
|
||||
d_course_wario_stadium_dl_5588,
|
||||
const Gfx* wario_stadium_dls[] = {
|
||||
d_course_wario_stadium_dl_0, d_course_wario_stadium_dl_158, d_course_wario_stadium_dl_B8,
|
||||
d_course_wario_stadium_dl_1B8, d_course_wario_stadium_dl_2A0, d_course_wario_stadium_dl_440,
|
||||
d_course_wario_stadium_dl_350, d_course_wario_stadium_dl_4C0, d_course_wario_stadium_dl_5E8,
|
||||
d_course_wario_stadium_dl_798, d_course_wario_stadium_dl_668, d_course_wario_stadium_dl_830,
|
||||
d_course_wario_stadium_dl_940, d_course_wario_stadium_dl_AB0, d_course_wario_stadium_dl_990,
|
||||
d_course_wario_stadium_dl_B60, d_course_wario_stadium_dl_C08, d_course_wario_stadium_dl_D60,
|
||||
d_course_wario_stadium_dl_C70, d_course_wario_stadium_dl_E30, d_course_wario_stadium_dl_ED0,
|
||||
d_course_wario_stadium_dl_1068, d_course_wario_stadium_dl_F70, d_course_wario_stadium_dl_1158,
|
||||
d_course_wario_stadium_dl_11F8, d_course_wario_stadium_dl_13C0, d_course_wario_stadium_dl_12E0,
|
||||
d_course_wario_stadium_dl_14A0, d_course_wario_stadium_dl_1590, d_course_wario_stadium_dl_1708,
|
||||
d_course_wario_stadium_dl_1630, d_course_wario_stadium_dl_17A8, d_course_wario_stadium_dl_1868,
|
||||
d_course_wario_stadium_dl_19E0, d_course_wario_stadium_dl_1908, d_course_wario_stadium_dl_1AB8,
|
||||
d_course_wario_stadium_dl_1B48, d_course_wario_stadium_dl_1CA8, d_course_wario_stadium_dl_1BB0,
|
||||
d_course_wario_stadium_dl_1D68, d_course_wario_stadium_dl_1DF8, d_course_wario_stadium_dl_1FD8,
|
||||
d_course_wario_stadium_dl_1E70, d_course_wario_stadium_dl_20A8, d_course_wario_stadium_dl_21A8,
|
||||
d_course_wario_stadium_dl_2308, d_course_wario_stadium_dl_2218, d_course_wario_stadium_dl_23B0,
|
||||
d_course_wario_stadium_dl_2490, d_course_wario_stadium_dl_2610, d_course_wario_stadium_dl_2530,
|
||||
d_course_wario_stadium_dl_2698, d_course_wario_stadium_dl_2798, d_course_wario_stadium_dl_2928,
|
||||
d_course_wario_stadium_dl_2870, d_course_wario_stadium_dl_29D0, d_course_wario_stadium_dl_2AB0,
|
||||
d_course_wario_stadium_dl_2C30, d_course_wario_stadium_dl_2B60, d_course_wario_stadium_dl_2CE0,
|
||||
d_course_wario_stadium_dl_2DC0, d_course_wario_stadium_dl_2FB8, d_course_wario_stadium_dl_2E70,
|
||||
d_course_wario_stadium_dl_3098, d_course_wario_stadium_dl_31B0, d_course_wario_stadium_dl_3368,
|
||||
d_course_wario_stadium_dl_3260, d_course_wario_stadium_dl_3450, d_course_wario_stadium_dl_3550,
|
||||
d_course_wario_stadium_dl_36D8, d_course_wario_stadium_dl_3600, d_course_wario_stadium_dl_37A8,
|
||||
d_course_wario_stadium_dl_3890, d_course_wario_stadium_dl_3A10, d_course_wario_stadium_dl_3980,
|
||||
d_course_wario_stadium_dl_3AD0, d_course_wario_stadium_dl_3BB0, d_course_wario_stadium_dl_3D90,
|
||||
d_course_wario_stadium_dl_3CF8, d_course_wario_stadium_dl_3E80, d_course_wario_stadium_dl_3F78,
|
||||
d_course_wario_stadium_dl_40F0, d_course_wario_stadium_dl_4060, d_course_wario_stadium_dl_41D0,
|
||||
d_course_wario_stadium_dl_4270, d_course_wario_stadium_dl_43E0, d_course_wario_stadium_dl_4340,
|
||||
d_course_wario_stadium_dl_44B0, d_course_wario_stadium_dl_4550, d_course_wario_stadium_dl_47F0,
|
||||
d_course_wario_stadium_dl_46E0, d_course_wario_stadium_dl_4948, d_course_wario_stadium_dl_4A78,
|
||||
d_course_wario_stadium_dl_4BE8, d_course_wario_stadium_dl_4B30, d_course_wario_stadium_dl_4C60,
|
||||
d_course_wario_stadium_dl_4D40, d_course_wario_stadium_dl_4EF0, d_course_wario_stadium_dl_4E30,
|
||||
d_course_wario_stadium_dl_4F80, d_course_wario_stadium_dl_5090, d_course_wario_stadium_dl_51E8,
|
||||
d_course_wario_stadium_dl_5168, d_course_wario_stadium_dl_5270, d_course_wario_stadium_dl_5338,
|
||||
d_course_wario_stadium_dl_54E8, d_course_wario_stadium_dl_5460, d_course_wario_stadium_dl_5588,
|
||||
};
|
||||
|
|
|
|||
|
|
@ -4,165 +4,81 @@
|
|||
#include <assets/yoshi_valley_data.h>
|
||||
|
||||
course_texture yoshi_valley_textures[] = {
|
||||
{gTexture66EBF0, 0x0146, 0x0800, 0x0},
|
||||
{gTextureWoodBridgeSlats, 0x0DAB, 0x1000, 0x0},
|
||||
{gTexture65E2EC, 0x02B0, 0x0800, 0x0},
|
||||
{gTexture6846DC, 0x04EA, 0x0800, 0x0},
|
||||
{gTextureFenceRope, 0x0540, 0x0800, 0x0},
|
||||
{gTexture685108, 0x04D4, 0x0800, 0x0},
|
||||
{gTexture64CC20, 0x0EC3, 0x1000, 0x0},
|
||||
{gTextureGrass4, 0x05C3, 0x0800, 0x0},
|
||||
{gTexture6775EC, 0x0233, 0x1000, 0x0},
|
||||
{gTexture68E2D0, 0x087F, 0x0800, 0x0},
|
||||
{gTextureCheckerboardBlackWhite, 0x0107, 0x0800, 0x0},
|
||||
{gTexture643B3C, 0x0798, 0x0800, 0x0},
|
||||
{gTextureSignWoodRedArrow, 0x04E1, 0x1000, 0x0},
|
||||
{gTexture68DEC0, 0x0410, 0x0800, 0x0},
|
||||
{0x00000000, 0x0000, 0x0000, 0x0},
|
||||
{ gTexture66EBF0, 0x0146, 0x0800, 0x0 },
|
||||
{ gTextureWoodBridgeSlats, 0x0DAB, 0x1000, 0x0 },
|
||||
{ gTexture65E2EC, 0x02B0, 0x0800, 0x0 },
|
||||
{ gTexture6846DC, 0x04EA, 0x0800, 0x0 },
|
||||
{ gTextureFenceRope, 0x0540, 0x0800, 0x0 },
|
||||
{ gTexture685108, 0x04D4, 0x0800, 0x0 },
|
||||
{ gTexture64CC20, 0x0EC3, 0x1000, 0x0 },
|
||||
{ gTextureGrass4, 0x05C3, 0x0800, 0x0 },
|
||||
{ gTexture6775EC, 0x0233, 0x1000, 0x0 },
|
||||
{ gTexture68E2D0, 0x087F, 0x0800, 0x0 },
|
||||
{ gTextureCheckerboardBlackWhite, 0x0107, 0x0800, 0x0 },
|
||||
{ gTexture643B3C, 0x0798, 0x0800, 0x0 },
|
||||
{ gTextureSignWoodRedArrow, 0x04E1, 0x1000, 0x0 },
|
||||
{ gTexture68DEC0, 0x0410, 0x0800, 0x0 },
|
||||
{ 0x00000000, 0x0000, 0x0000, 0x0 },
|
||||
};
|
||||
|
||||
Gfx *yoshi_valley_dls[] = {
|
||||
d_course_yoshi_valley_dl_40, d_course_yoshi_valley_dl_3F0,
|
||||
d_course_yoshi_valley_dl_290, d_course_yoshi_valley_dl_4E8,
|
||||
d_course_yoshi_valley_dl_7A0, d_course_yoshi_valley_dl_BC0,
|
||||
d_course_yoshi_valley_dl_9C8, d_course_yoshi_valley_dl_CC0, // <- No idea what this is supposed to be a pointer to
|
||||
d_course_yoshi_valley_dl_FA0, d_course_yoshi_valley_dl_13F8,
|
||||
d_course_yoshi_valley_dl_1178, d_course_yoshi_valley_dl_14D0,
|
||||
d_course_yoshi_valley_dl_17A8, d_course_yoshi_valley_dl_1C38,
|
||||
d_course_yoshi_valley_dl_1968, d_course_yoshi_valley_dl_1D48,
|
||||
d_course_yoshi_valley_dl_2000, d_course_yoshi_valley_dl_2408,
|
||||
d_course_yoshi_valley_dl_21B0, d_course_yoshi_valley_dl_25E8,
|
||||
d_course_yoshi_valley_dl_2840, d_course_yoshi_valley_dl_2BC0,
|
||||
d_course_yoshi_valley_dl_2978, d_course_yoshi_valley_dl_2D70,
|
||||
d_course_yoshi_valley_dl_2F48, d_course_yoshi_valley_dl_3258,
|
||||
d_course_yoshi_valley_dl_3078, d_course_yoshi_valley_dl_3420,
|
||||
d_course_yoshi_valley_dl_3560, d_course_yoshi_valley_dl_3880,
|
||||
d_course_yoshi_valley_dl_36D0, d_course_yoshi_valley_dl_3A38,
|
||||
d_course_yoshi_valley_dl_3BA0, d_course_yoshi_valley_dl_3E30,
|
||||
d_course_yoshi_valley_dl_3D20, d_course_yoshi_valley_dl_3F88,
|
||||
d_course_yoshi_valley_dl_40B8, d_course_yoshi_valley_dl_44C8,
|
||||
d_course_yoshi_valley_dl_4320, d_course_yoshi_valley_dl_4718,
|
||||
d_course_yoshi_valley_dl_48C0, d_course_yoshi_valley_dl_4C28,
|
||||
d_course_yoshi_valley_dl_4A98, d_course_yoshi_valley_dl_4E60,
|
||||
d_course_yoshi_valley_dl_5018, d_course_yoshi_valley_dl_53E0,
|
||||
d_course_yoshi_valley_dl_51D0, d_course_yoshi_valley_dl_5638,
|
||||
d_course_yoshi_valley_dl_5778, d_course_yoshi_valley_dl_5A80,
|
||||
d_course_yoshi_valley_dl_5890, d_course_yoshi_valley_dl_5C70,
|
||||
d_course_yoshi_valley_dl_5D60, d_course_yoshi_valley_dl_6070,
|
||||
d_course_yoshi_valley_dl_5ED8, d_course_yoshi_valley_dl_6268,
|
||||
d_course_yoshi_valley_dl_6358, d_course_yoshi_valley_dl_66B0,
|
||||
d_course_yoshi_valley_dl_6530, d_course_yoshi_valley_dl_68C8,
|
||||
d_course_yoshi_valley_dl_69C0, d_course_yoshi_valley_dl_6D78,
|
||||
d_course_yoshi_valley_dl_6BF0, d_course_yoshi_valley_dl_6FB8,
|
||||
d_course_yoshi_valley_dl_7100, d_course_yoshi_valley_dl_7400,
|
||||
d_course_yoshi_valley_dl_7310, d_course_yoshi_valley_dl_75C8,
|
||||
d_course_yoshi_valley_dl_7770, d_course_yoshi_valley_dl_7A08,
|
||||
d_course_yoshi_valley_dl_7938, d_course_yoshi_valley_dl_7BB8,
|
||||
d_course_yoshi_valley_dl_7CE8, d_course_yoshi_valley_dl_8030,
|
||||
d_course_yoshi_valley_dl_7F80, d_course_yoshi_valley_dl_8218,
|
||||
d_course_yoshi_valley_dl_8420, d_course_yoshi_valley_dl_8830,
|
||||
d_course_yoshi_valley_dl_8710, d_course_yoshi_valley_dl_8958,
|
||||
d_course_yoshi_valley_dl_8C30, d_course_yoshi_valley_dl_8FD8,
|
||||
d_course_yoshi_valley_dl_8D58, d_course_yoshi_valley_dl_91D8,
|
||||
d_course_yoshi_valley_dl_9340, d_course_yoshi_valley_dl_9780,
|
||||
d_course_yoshi_valley_dl_9548, d_course_yoshi_valley_dl_9A00,
|
||||
d_course_yoshi_valley_dl_9BB0, d_course_yoshi_valley_dl_9F70,
|
||||
d_course_yoshi_valley_dl_9DB8, d_course_yoshi_valley_dl_A188,
|
||||
d_course_yoshi_valley_dl_A328, d_course_yoshi_valley_dl_A6B8,
|
||||
d_course_yoshi_valley_dl_A518, d_course_yoshi_valley_dl_A8A0,
|
||||
d_course_yoshi_valley_dl_AAC0, d_course_yoshi_valley_dl_AE78,
|
||||
d_course_yoshi_valley_dl_ACF0, d_course_yoshi_valley_dl_AFF8,
|
||||
d_course_yoshi_valley_dl_B220, d_course_yoshi_valley_dl_B578,
|
||||
d_course_yoshi_valley_dl_B428, d_course_yoshi_valley_dl_B778,
|
||||
d_course_yoshi_valley_dl_B970, d_course_yoshi_valley_dl_BC98,
|
||||
d_course_yoshi_valley_dl_BAF8, d_course_yoshi_valley_dl_BE18,
|
||||
d_course_yoshi_valley_dl_BFC8, d_course_yoshi_valley_dl_C2D8,
|
||||
d_course_yoshi_valley_dl_C140, d_course_yoshi_valley_dl_C470,
|
||||
d_course_yoshi_valley_dl_C580, d_course_yoshi_valley_dl_C728,
|
||||
d_course_yoshi_valley_dl_C668, d_course_yoshi_valley_dl_C838,
|
||||
d_course_yoshi_valley_dl_C8F8, d_course_yoshi_valley_dl_CC80,
|
||||
d_course_yoshi_valley_dl_CAD8, d_course_yoshi_valley_dl_CEC8,
|
||||
d_course_yoshi_valley_dl_D018, d_course_yoshi_valley_dl_D3D0,
|
||||
Gfx* yoshi_valley_dls[] = {
|
||||
d_course_yoshi_valley_dl_40, d_course_yoshi_valley_dl_3F0, d_course_yoshi_valley_dl_290,
|
||||
d_course_yoshi_valley_dl_4E8, d_course_yoshi_valley_dl_7A0, d_course_yoshi_valley_dl_BC0,
|
||||
d_course_yoshi_valley_dl_9C8, d_course_yoshi_valley_dl_CC0, // <- No idea what this is supposed to be a pointer to
|
||||
d_course_yoshi_valley_dl_FA0, d_course_yoshi_valley_dl_13F8, d_course_yoshi_valley_dl_1178,
|
||||
d_course_yoshi_valley_dl_14D0, d_course_yoshi_valley_dl_17A8, d_course_yoshi_valley_dl_1C38,
|
||||
d_course_yoshi_valley_dl_1968, d_course_yoshi_valley_dl_1D48, d_course_yoshi_valley_dl_2000,
|
||||
d_course_yoshi_valley_dl_2408, d_course_yoshi_valley_dl_21B0, d_course_yoshi_valley_dl_25E8,
|
||||
d_course_yoshi_valley_dl_2840, d_course_yoshi_valley_dl_2BC0, d_course_yoshi_valley_dl_2978,
|
||||
d_course_yoshi_valley_dl_2D70, d_course_yoshi_valley_dl_2F48, d_course_yoshi_valley_dl_3258,
|
||||
d_course_yoshi_valley_dl_3078, d_course_yoshi_valley_dl_3420, d_course_yoshi_valley_dl_3560,
|
||||
d_course_yoshi_valley_dl_3880, d_course_yoshi_valley_dl_36D0, d_course_yoshi_valley_dl_3A38,
|
||||
d_course_yoshi_valley_dl_3BA0, d_course_yoshi_valley_dl_3E30, d_course_yoshi_valley_dl_3D20,
|
||||
d_course_yoshi_valley_dl_3F88, d_course_yoshi_valley_dl_40B8, d_course_yoshi_valley_dl_44C8,
|
||||
d_course_yoshi_valley_dl_4320, d_course_yoshi_valley_dl_4718, d_course_yoshi_valley_dl_48C0,
|
||||
d_course_yoshi_valley_dl_4C28, d_course_yoshi_valley_dl_4A98, d_course_yoshi_valley_dl_4E60,
|
||||
d_course_yoshi_valley_dl_5018, d_course_yoshi_valley_dl_53E0, d_course_yoshi_valley_dl_51D0,
|
||||
d_course_yoshi_valley_dl_5638, d_course_yoshi_valley_dl_5778, d_course_yoshi_valley_dl_5A80,
|
||||
d_course_yoshi_valley_dl_5890, d_course_yoshi_valley_dl_5C70, d_course_yoshi_valley_dl_5D60,
|
||||
d_course_yoshi_valley_dl_6070, d_course_yoshi_valley_dl_5ED8, d_course_yoshi_valley_dl_6268,
|
||||
d_course_yoshi_valley_dl_6358, d_course_yoshi_valley_dl_66B0, d_course_yoshi_valley_dl_6530,
|
||||
d_course_yoshi_valley_dl_68C8, d_course_yoshi_valley_dl_69C0, d_course_yoshi_valley_dl_6D78,
|
||||
d_course_yoshi_valley_dl_6BF0, d_course_yoshi_valley_dl_6FB8, d_course_yoshi_valley_dl_7100,
|
||||
d_course_yoshi_valley_dl_7400, d_course_yoshi_valley_dl_7310, d_course_yoshi_valley_dl_75C8,
|
||||
d_course_yoshi_valley_dl_7770, d_course_yoshi_valley_dl_7A08, d_course_yoshi_valley_dl_7938,
|
||||
d_course_yoshi_valley_dl_7BB8, d_course_yoshi_valley_dl_7CE8, d_course_yoshi_valley_dl_8030,
|
||||
d_course_yoshi_valley_dl_7F80, d_course_yoshi_valley_dl_8218, d_course_yoshi_valley_dl_8420,
|
||||
d_course_yoshi_valley_dl_8830, d_course_yoshi_valley_dl_8710, d_course_yoshi_valley_dl_8958,
|
||||
d_course_yoshi_valley_dl_8C30, d_course_yoshi_valley_dl_8FD8, d_course_yoshi_valley_dl_8D58,
|
||||
d_course_yoshi_valley_dl_91D8, d_course_yoshi_valley_dl_9340, d_course_yoshi_valley_dl_9780,
|
||||
d_course_yoshi_valley_dl_9548, d_course_yoshi_valley_dl_9A00, d_course_yoshi_valley_dl_9BB0,
|
||||
d_course_yoshi_valley_dl_9F70, d_course_yoshi_valley_dl_9DB8, d_course_yoshi_valley_dl_A188,
|
||||
d_course_yoshi_valley_dl_A328, d_course_yoshi_valley_dl_A6B8, d_course_yoshi_valley_dl_A518,
|
||||
d_course_yoshi_valley_dl_A8A0, d_course_yoshi_valley_dl_AAC0, d_course_yoshi_valley_dl_AE78,
|
||||
d_course_yoshi_valley_dl_ACF0, d_course_yoshi_valley_dl_AFF8, d_course_yoshi_valley_dl_B220,
|
||||
d_course_yoshi_valley_dl_B578, d_course_yoshi_valley_dl_B428, d_course_yoshi_valley_dl_B778,
|
||||
d_course_yoshi_valley_dl_B970, d_course_yoshi_valley_dl_BC98, d_course_yoshi_valley_dl_BAF8,
|
||||
d_course_yoshi_valley_dl_BE18, d_course_yoshi_valley_dl_BFC8, d_course_yoshi_valley_dl_C2D8,
|
||||
d_course_yoshi_valley_dl_C140, d_course_yoshi_valley_dl_C470, d_course_yoshi_valley_dl_C580,
|
||||
d_course_yoshi_valley_dl_C728, d_course_yoshi_valley_dl_C668, d_course_yoshi_valley_dl_C838,
|
||||
d_course_yoshi_valley_dl_C8F8, d_course_yoshi_valley_dl_CC80, d_course_yoshi_valley_dl_CAD8,
|
||||
d_course_yoshi_valley_dl_CEC8, d_course_yoshi_valley_dl_D018, d_course_yoshi_valley_dl_D3D0,
|
||||
d_course_yoshi_valley_dl_D1E8, d_course_yoshi_valley_dl_D540,
|
||||
};
|
||||
|
||||
// 0x060145E8 Flag animation?
|
||||
s16 d_course_yoshi_valley_unk1[] = {
|
||||
0x0000, 0x12e3,
|
||||
0x0f43, 0x099f,
|
||||
0x02d1, 0xfbb3,
|
||||
0xf51b, 0xefe3,
|
||||
0xecc0, 0xea97,
|
||||
0xe905, 0xe817,
|
||||
0xe7da, 0xe85a,
|
||||
0xe9a5, 0xebc7,
|
||||
0xef2b, 0xf51f,
|
||||
0xfcd4, 0x053b,
|
||||
0x0d49, 0x13ee,
|
||||
0x181e, 0x1a24,
|
||||
0x1b1b, 0x1b28,
|
||||
0x1a71, 0x191c,
|
||||
0x174f, 0x152f,
|
||||
0x0dfd, 0x0b37,
|
||||
0x064a, 0x006d,
|
||||
0xfada, 0xf6c7,
|
||||
0xf4d9, 0xf371,
|
||||
0xf25d, 0xf1a3,
|
||||
0xf148, 0xf152,
|
||||
0xf1c6, 0xf2aa,
|
||||
0xf404, 0xf622,
|
||||
0xfa11, 0xff44,
|
||||
0x04fd, 0x0a7d,
|
||||
0x0f08, 0x11dd,
|
||||
0x132a, 0x13b1,
|
||||
0x1393, 0x12f3,
|
||||
0x11f2, 0x10b2,
|
||||
0x0f55, 0xf43f,
|
||||
0xf376, 0xf2f2,
|
||||
0xf2b7, 0xf2c3,
|
||||
0xf319, 0xf3b9,
|
||||
0xf4a5, 0xf64b,
|
||||
0xf8e8, 0xfc2a,
|
||||
0xffc5, 0x0367,
|
||||
0x06c3, 0x098b,
|
||||
0x0b73, 0x0c85,
|
||||
0x0ce4, 0x0ca5,
|
||||
0x0bdd, 0x0aa2,
|
||||
0x08f8, 0x06a5,
|
||||
0x03d3, 0x00b6,
|
||||
0xfd87, 0xfa7a,
|
||||
0xf7c5, 0xf59f,
|
||||
0xf5bc, 0xf61a,
|
||||
0xf722, 0xf8ba,
|
||||
0xfac7, 0xfd30,
|
||||
0xffd8, 0x02a6,
|
||||
0x0580, 0x0829,
|
||||
0x0a3a, 0x0bbc,
|
||||
0x0cb9, 0x0d3f,
|
||||
0x0d4c, 0x0c44,
|
||||
0x0a3b, 0x0785,
|
||||
0x0478, 0x0169,
|
||||
0xfead, 0xfc97,
|
||||
0xfb3e, 0xfa01,
|
||||
0xf8db, 0xf7d5,
|
||||
0xf6f8, 0xf64f,
|
||||
0xf5e2, 0x04ea,
|
||||
0x04b3, 0x0421,
|
||||
0x034c, 0x0250,
|
||||
0x0147, 0x004b,
|
||||
0xff77, 0xfeaa,
|
||||
0xfdc3, 0xfcd9,
|
||||
0xfc02, 0xfb55,
|
||||
0xfae7, 0xfad0,
|
||||
0xfb25, 0xfbdc,
|
||||
0xfcd6, 0xfdf4,
|
||||
0xff17, 0x0020,
|
||||
0x00f2, 0x01a2,
|
||||
0x0253, 0x02fe,
|
||||
0x039a, 0x0422,
|
||||
0x048c, 0x04d1,
|
||||
0x3fff, 0xc001,
|
||||
0x3fff, 0x0000,
|
||||
0x0000, 0x12e3, 0x0f43, 0x099f, 0x02d1, 0xfbb3, 0xf51b, 0xefe3, 0xecc0, 0xea97, 0xe905, 0xe817, 0xe7da, 0xe85a,
|
||||
0xe9a5, 0xebc7, 0xef2b, 0xf51f, 0xfcd4, 0x053b, 0x0d49, 0x13ee, 0x181e, 0x1a24, 0x1b1b, 0x1b28, 0x1a71, 0x191c,
|
||||
0x174f, 0x152f, 0x0dfd, 0x0b37, 0x064a, 0x006d, 0xfada, 0xf6c7, 0xf4d9, 0xf371, 0xf25d, 0xf1a3, 0xf148, 0xf152,
|
||||
0xf1c6, 0xf2aa, 0xf404, 0xf622, 0xfa11, 0xff44, 0x04fd, 0x0a7d, 0x0f08, 0x11dd, 0x132a, 0x13b1, 0x1393, 0x12f3,
|
||||
0x11f2, 0x10b2, 0x0f55, 0xf43f, 0xf376, 0xf2f2, 0xf2b7, 0xf2c3, 0xf319, 0xf3b9, 0xf4a5, 0xf64b, 0xf8e8, 0xfc2a,
|
||||
0xffc5, 0x0367, 0x06c3, 0x098b, 0x0b73, 0x0c85, 0x0ce4, 0x0ca5, 0x0bdd, 0x0aa2, 0x08f8, 0x06a5, 0x03d3, 0x00b6,
|
||||
0xfd87, 0xfa7a, 0xf7c5, 0xf59f, 0xf5bc, 0xf61a, 0xf722, 0xf8ba, 0xfac7, 0xfd30, 0xffd8, 0x02a6, 0x0580, 0x0829,
|
||||
0x0a3a, 0x0bbc, 0x0cb9, 0x0d3f, 0x0d4c, 0x0c44, 0x0a3b, 0x0785, 0x0478, 0x0169, 0xfead, 0xfc97, 0xfb3e, 0xfa01,
|
||||
0xf8db, 0xf7d5, 0xf6f8, 0xf64f, 0xf5e2, 0x04ea, 0x04b3, 0x0421, 0x034c, 0x0250, 0x0147, 0x004b, 0xff77, 0xfeaa,
|
||||
0xfdc3, 0xfcd9, 0xfc02, 0xfb55, 0xfae7, 0xfad0, 0xfb25, 0xfbdc, 0xfcd6, 0xfdf4, 0xff17, 0x0020, 0x00f2, 0x01a2,
|
||||
0x0253, 0x02fe, 0x039a, 0x0422, 0x048c, 0x04d1, 0x3fff, 0xc001, 0x3fff, 0x0000,
|
||||
};
|
||||
|
||||
// 0x06014714
|
||||
|
|
@ -216,139 +132,77 @@ AnimationLimbVector d_course_yoshi_valley_unk2[] = {
|
|||
|
||||
// 0x06014780
|
||||
Animation d_course_yoshi_valley_unk3 = {
|
||||
0x00010000,
|
||||
0x00000000,
|
||||
0x001d,
|
||||
0x0008,
|
||||
d_course_yoshi_valley_unk1,
|
||||
d_course_yoshi_valley_unk2,
|
||||
0x00010000, 0x00000000, 0x001d, 0x0008, d_course_yoshi_valley_unk1, d_course_yoshi_valley_unk2,
|
||||
};
|
||||
|
||||
// 0x06014794
|
||||
Animation *d_course_yoshi_valley_unk4[] = {
|
||||
Animation* d_course_yoshi_valley_unk4[] = {
|
||||
&d_course_yoshi_valley_unk3,
|
||||
};
|
||||
|
||||
//! 0x06014798
|
||||
uintptr_t d_course_yoshi_valley_unk5[] = {
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, 0x00000000,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_yoshi_valley_dl_142C0,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_yoshi_valley_dl_142C0,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x000007f8,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, 0x00000000,
|
||||
0x000007f8, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_yoshi_valley_dl_143C8,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_yoshi_valley_dl_143C8,
|
||||
0x00000000, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_yoshi_valley_dl_144A8,
|
||||
0x000001cc,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_yoshi_valley_dl_144A8,
|
||||
0x000001cc, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_yoshi_valley_dl_14500,
|
||||
0x000001cc,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_yoshi_valley_dl_14500,
|
||||
0x000001cc, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_yoshi_valley_dl_14558,
|
||||
0x00000158,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_yoshi_valley_dl_14558,
|
||||
0x00000158, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000001,
|
||||
0x00000002,
|
||||
0x00000001, 0x00000002,
|
||||
|
||||
0x00000000,
|
||||
0x00000007,
|
||||
0x00000000,
|
||||
d_course_yoshi_valley_dl_145D0,
|
||||
0x00000120,
|
||||
0x00000000,
|
||||
0x00000000,
|
||||
0x00000000, 0x00000007, 0x00000000, d_course_yoshi_valley_dl_145D0,
|
||||
0x00000120, 0x00000000, 0x00000000,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000002,
|
||||
0x00000002,
|
||||
0x00000002, 0x00000002,
|
||||
|
||||
0x00000003,
|
||||
0x00000002,
|
||||
0x00000003, 0x00000002,
|
||||
};
|
||||
|
||||
// No idea what this stuff is
|
||||
u32 d_course_yoshi_valley_unk6[] = {
|
||||
0x00000000,
|
||||
0x00000001,
|
||||
};
|
||||
};
|
||||
|
|
|
|||
|
|
@ -3,19 +3,17 @@
|
|||
|
||||
#include <libultra/abi.h>
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 *offset;
|
||||
typedef struct {
|
||||
u8* offset;
|
||||
s32 len;
|
||||
} ALSeqData;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
s16 revision;
|
||||
s16 seqCount;
|
||||
ALSeqData seqArray[1];
|
||||
} ALSeqFile;
|
||||
|
||||
void alSeqFileNew(ALSeqFile *f, u8 *base);
|
||||
void alSeqFileNew(ALSeqFile* f, u8* base);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -5,9 +5,9 @@
|
|||
#include <macros.h>
|
||||
#include <common_structs.h>
|
||||
|
||||
//#pragma GCC diagnostic push
|
||||
//#pragma GCC diagnostic ignored "-Wmicrosoft-extension"
|
||||
//#pragma GCC diagnostic ignored "-Wmissing-member-name-in-structure-/-union"
|
||||
// #pragma GCC diagnostic push
|
||||
// #pragma GCC diagnostic ignored "-Wmicrosoft-extension"
|
||||
// #pragma GCC diagnostic ignored "-Wmissing-member-name-in-structure-/-union"
|
||||
|
||||
/**
|
||||
* gActorList should be understood to be populated by generic Actor structs.
|
||||
|
|
@ -90,16 +90,16 @@ enum ActorType {
|
|||
|
||||
// Actor shell->state (green, red and blue)
|
||||
enum ShellState {
|
||||
HELD_SHELL, // Single shell that has not been dropped. (probably holding Z).
|
||||
RELEASED_SHELL, // This is the short window where single shells aren't being held or launched.
|
||||
MOVING_SHELL, // Moving towards its target after being shot.
|
||||
RED_SHELL_LOCK_ON, // Red shell is targeting.
|
||||
TRIPLE_GREEN_SHELL, // Loses triple shell state when shot.
|
||||
GREEN_SHELL_HIT_A_RACER, // A racer has been hit by a green shell.
|
||||
TRIPLE_RED_SHELL, // Loses triple shell state when shot.
|
||||
DESTROYED_SHELL, // Collision with the shell.
|
||||
BLUE_SHELL_LOCK_ON, // A blue shell has found a target and is hastily approaching it.
|
||||
BLUE_SHELL_TARGET_ELIMINATED // Mission completed, well done boss.
|
||||
HELD_SHELL, // Single shell that has not been dropped. (probably holding Z).
|
||||
RELEASED_SHELL, // This is the short window where single shells aren't being held or launched.
|
||||
MOVING_SHELL, // Moving towards its target after being shot.
|
||||
RED_SHELL_LOCK_ON, // Red shell is targeting.
|
||||
TRIPLE_GREEN_SHELL, // Loses triple shell state when shot.
|
||||
GREEN_SHELL_HIT_A_RACER, // A racer has been hit by a green shell.
|
||||
TRIPLE_RED_SHELL, // Loses triple shell state when shot.
|
||||
DESTROYED_SHELL, // Collision with the shell.
|
||||
BLUE_SHELL_LOCK_ON, // A blue shell has found a target and is hastily approaching it.
|
||||
BLUE_SHELL_TARGET_ELIMINATED // Mission completed, well done boss.
|
||||
};
|
||||
|
||||
// Actor banana->state
|
||||
|
|
@ -113,7 +113,7 @@ enum BananaState {
|
|||
};
|
||||
|
||||
// Actor fakeItemBox->state
|
||||
#define HELD_FAKE_ITEM_BOX 0 // Item box is being held be Z.
|
||||
#define HELD_FAKE_ITEM_BOX 0 // Item box is being held be Z.
|
||||
#define FAKE_ITEM_BOX_ON_GROUND 1 // Item box is on the ground.
|
||||
#define DESTROYED_FAKE_ITEM_BOX 2 // Collision with fake item box.
|
||||
|
||||
|
|
@ -200,7 +200,7 @@ struct ActorSpawnData {
|
|||
* So, this struct type acts as both spawn data AND a stripped down Actor for those trees.
|
||||
* Give the tree a position, a byte for flags stuffed into an s16 used to indicate tree sub-type,
|
||||
* and an s16 containing as the tree's original Y position.
|
||||
**/
|
||||
**/
|
||||
struct UnkActorSpawnData {
|
||||
/* 0x00 */ Vec3s pos;
|
||||
// Techinically only the bottom byte of someId is the "id". The top byte is used for flags.
|
||||
|
|
@ -230,9 +230,11 @@ struct YoshiValleyEgg {
|
|||
struct KiwanoFruit {
|
||||
/* 0x00 */ s16 type;
|
||||
/* 0x02 */ s16 flags;
|
||||
/* 0x04 */ s16 targetPlayer; // Id of the player this actor tracks. Each player has their own kiwano actor just for them
|
||||
/* 0x04 */ s16
|
||||
targetPlayer; // Id of the player this actor tracks. Each player has their own kiwano actor just for them
|
||||
/* 0x06 */ s16 state;
|
||||
/* 0x08 */ f32 bonkTimer; // bonkState? Not sure what this is tracking, but its some form of count down that starts after the fruit hits you
|
||||
/* 0x08 */ f32 bonkTimer; // bonkState? Not sure what this is tracking, but its some form of count down that starts
|
||||
// after the fruit hits you
|
||||
/* 0x0C */ f32 boundingBoxSize;
|
||||
/* 0x10 */ s16 animState;
|
||||
/* 0x12 */ s16 animTimer;
|
||||
|
|
@ -315,8 +317,9 @@ struct ShellActor {
|
|||
/* 0x0C */ f32 boundingBoxSize;
|
||||
/* 0x10 */ s16 rotVelocity; // Change in rotAngle on a per-update basis
|
||||
union {
|
||||
/* 0x12 */ s16 rotAngle; // Angle of rotation around player (or parent?), not the rotation of the shell itself
|
||||
/* 0x12 */ u16 pathIndex; // Index in the set of points that make up the "path" the red/blue shell follows (may be GP mode exclusive)
|
||||
/* 0x12 */ s16 rotAngle; // Angle of rotation around player (or parent?), not the rotation of the shell itself
|
||||
/* 0x12 */ u16 pathIndex; // Index in the set of points that make up the "path" the red/blue shell follows (may
|
||||
// be GP mode exclusive)
|
||||
};
|
||||
/* 0x14 */ s16 playerId; // Id of the player that "owns" the shell
|
||||
/* 0x16 */ s16 unk_16;
|
||||
|
|
@ -331,8 +334,8 @@ struct ItemBox {
|
|||
/* 0x04 */ s16 someTimer;
|
||||
/* 0x06 */ s16 state;
|
||||
/* 0x08 */ f32 resetDistance; // Value added to the Y position when box is touched. Expected to be negative
|
||||
// Distance at which a player can activate the item box
|
||||
// Named "bounding box" to match the name used for the "size" of a kart
|
||||
// Distance at which a player can activate the item box
|
||||
// Named "bounding box" to match the name used for the "size" of a kart
|
||||
/* 0x0C */ f32 boundingBoxSize;
|
||||
/* 0x10 */ Vec3s rot;
|
||||
/* 0x16 */ s16 unk_16;
|
||||
|
|
@ -366,7 +369,7 @@ struct BananaBunchParent {
|
|||
/* 0x06 */ s16 state;
|
||||
/* 0x08 */ f32 unk_08;
|
||||
/* 0x0C */ f32 unk_0C;
|
||||
/* 0x10 */ s16 playerId; // Player that own the bananas
|
||||
/* 0x10 */ s16 playerId; // Player that own the bananas
|
||||
/* 0x12 */ s16 bananaIndices[5]; // Indices in gActorList for the bananas owned by this parent
|
||||
/* 0x1C */ s16 bananasAvailable;
|
||||
/* 0x1E */ s16 unk_1E;
|
||||
|
|
@ -385,9 +388,9 @@ struct BananaActor {
|
|||
union {
|
||||
/* 0x10 */ Vec3s rot;
|
||||
struct {
|
||||
/* 0x10 */ s16 playerId; // Id of the player that owns this banana
|
||||
/* 0x12 */ s16 elderIndex; // Index in gActorList of the next-oldest banana in the bunch
|
||||
/* 0x14 */ s16 youngerIndex; // Index in gActorList of the next-youngest banana in the bunch
|
||||
/* 0x10 */ s16 playerId; // Id of the player that owns this banana
|
||||
/* 0x12 */ s16 elderIndex; // Index in gActorList of the next-oldest banana in the bunch
|
||||
/* 0x14 */ s16 youngerIndex; // Index in gActorList of the next-youngest banana in the bunch
|
||||
};
|
||||
};
|
||||
/* 0x16 */ s16 unk_16;
|
||||
|
|
@ -396,6 +399,6 @@ struct BananaActor {
|
|||
/* 0x30 */ Collision unk30;
|
||||
}; // size = 0x70
|
||||
|
||||
//#pragma GCC diagnostic pop
|
||||
// #pragma GCC diagnostic pop
|
||||
|
||||
#endif // ACTOR_TYPES_H
|
||||
|
|
|
|||
|
|
@ -3,10 +3,12 @@
|
|||
uint8_t GameEngine_OTRSigCheck(char* imgData);
|
||||
|
||||
#if defined(_WIN32)
|
||||
#define ALIGN_ASSET(x) __declspec(align(x))
|
||||
#define ALIGN_ASSET(x) __declspec(align(x))
|
||||
#else
|
||||
#define ALIGN_ASSET(x) __attribute__((aligned (x)))
|
||||
#define ALIGN_ASSET(x) __attribute__((aligned(x)))
|
||||
#endif
|
||||
|
||||
#define LOAD_ASSET(path) (path == NULL ? NULL : (GameEngine_OTRSigCheck((const char*) path) ? ResourceGetDataByName((const char*) path) : path))
|
||||
#define LOAD_ASSET(path) \
|
||||
(path == NULL ? NULL \
|
||||
: (GameEngine_OTRSigCheck((const char*) path) ? ResourceGetDataByName((const char*) path) : path))
|
||||
#define LOAD_ASSET_RAW(path) ResourceGetDataByName((const char*) path)
|
||||
|
|
|
|||
|
|
@ -4,53 +4,53 @@
|
|||
#include <common_structs.h>
|
||||
#include <mk64.h>
|
||||
|
||||
#define NUM_BOMB_KARTS_MAX 7
|
||||
#define NUM_BOMB_KARTS_MAX 7
|
||||
#define NUM_BOMB_KARTS_VERSUS 7
|
||||
#define NUM_BOMB_KARTS_BATTLE 4
|
||||
|
||||
#define BOMB_STATE_INACTIVE 0
|
||||
#define BOMB_STATE_CCW 1
|
||||
#define BOMB_STATE_CW 2
|
||||
#define BOMB_STATE_INACTIVE 0
|
||||
#define BOMB_STATE_CCW 1
|
||||
#define BOMB_STATE_CW 2
|
||||
#define BOMB_STATE_STATIONARY 3 // Paused?
|
||||
#define BOMB_STATE_EXPLODED 4 // Or maybe exploding?
|
||||
#define BOMB_STATE_UNKNOWN 5
|
||||
#define BOMB_STATE_EXPLODED 4 // Or maybe exploding?
|
||||
#define BOMB_STATE_UNKNOWN 5
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 waypointIndex;
|
||||
/* 0x02 */ u16 startingState;
|
||||
/* 0x04 */ f32 unk_04; // Used to set the value of unk_3C in BombKart
|
||||
/* 0x08 */ f32 startingXPos;
|
||||
/* 0x0C */ f32 startingZPos;
|
||||
/**
|
||||
* These 2 never seem to get referenced. They also only have non-zero
|
||||
* data for the Yoshi Valley set of spawns
|
||||
**/
|
||||
/* 0x10 */ f32 unk_10;
|
||||
/* 0x14 */ f32 unk_14;
|
||||
/* 0x00 */ u16 waypointIndex;
|
||||
/* 0x02 */ u16 startingState;
|
||||
/* 0x04 */ f32 unk_04; // Used to set the value of unk_3C in BombKart
|
||||
/* 0x08 */ f32 startingXPos;
|
||||
/* 0x0C */ f32 startingZPos;
|
||||
/**
|
||||
* These 2 never seem to get referenced. They also only have non-zero
|
||||
* data for the Yoshi Valley set of spawns
|
||||
**/
|
||||
/* 0x10 */ f32 unk_10;
|
||||
/* 0x14 */ f32 unk_14;
|
||||
} BombKartSpawn; // size = 0x18
|
||||
|
||||
typedef struct {
|
||||
/**
|
||||
* This struct is in part representative of the
|
||||
* bomb kart hazards in VS mode.
|
||||
* There may be objects associated with them too
|
||||
**/
|
||||
/* 0x00 */ Vec3f bombPos;
|
||||
/* 0x0C */ Vec3f wheel1Pos;
|
||||
/* 0x18 */ Vec3f wheel2Pos;
|
||||
/* 0x24 */ Vec3f wheel3Pos;
|
||||
/* 0x30 */ Vec3f wheel4Pos;
|
||||
/* 0x3C */ f32 unk_3C;
|
||||
/* 0x40 */ u16 someRot; // seems like an angle of some variety, can't figure out its purpose
|
||||
/* 0x42 */ u16 waypointIndex; // probably the waypoint that the bomb circles
|
||||
/* 0x44 */ u16 state;
|
||||
/* 0x46 */ u16 bounceTimer; // timer? state? height?
|
||||
/* 0x48 */ u16 circleTimer; // timer? state? Somehow controls how it circles around
|
||||
/* 0x4A */ u16 unk_4A;
|
||||
/* 0x4C */ s16 unk_4C;
|
||||
/* 0x4E */ // s16 compilerPadding;
|
||||
/* 0x50 */ f32 yPos; // Y position of the center of the circle
|
||||
} BombKart; // size = 0x54
|
||||
/**
|
||||
* This struct is in part representative of the
|
||||
* bomb kart hazards in VS mode.
|
||||
* There may be objects associated with them too
|
||||
**/
|
||||
/* 0x00 */ Vec3f bombPos;
|
||||
/* 0x0C */ Vec3f wheel1Pos;
|
||||
/* 0x18 */ Vec3f wheel2Pos;
|
||||
/* 0x24 */ Vec3f wheel3Pos;
|
||||
/* 0x30 */ Vec3f wheel4Pos;
|
||||
/* 0x3C */ f32 unk_3C;
|
||||
/* 0x40 */ u16 someRot; // seems like an angle of some variety, can't figure out its purpose
|
||||
/* 0x42 */ u16 waypointIndex; // probably the waypoint that the bomb circles
|
||||
/* 0x44 */ u16 state;
|
||||
/* 0x46 */ u16 bounceTimer; // timer? state? height?
|
||||
/* 0x48 */ u16 circleTimer; // timer? state? Somehow controls how it circles around
|
||||
/* 0x4A */ u16 unk_4A;
|
||||
/* 0x4C */ s16 unk_4C;
|
||||
/* 0x4E */ // s16 compilerPadding;
|
||||
/* 0x50 */ f32 yPos; // Y position of the center of the circle
|
||||
} BombKart; // size = 0x54
|
||||
|
||||
//! Indexes for the objects associated with the Bomb Karts
|
||||
extern s32 gIndexObjectBombKart[NUM_BOMB_KARTS_MAX];
|
||||
|
|
|
|||
|
|
@ -16,20 +16,13 @@ typedef f32 Mat3[3][3];
|
|||
typedef f32 Mat4[4][4];
|
||||
|
||||
// might not be real, used by func_8002C954
|
||||
typedef struct
|
||||
{
|
||||
f32 x, y, z;
|
||||
typedef struct {
|
||||
f32 x, y, z;
|
||||
} Vec3fs;
|
||||
|
||||
// This was added as a silly idea:
|
||||
// In the data to use "A, B, Z, R" instead of hex numbers.
|
||||
typedef enum {
|
||||
A = 0x80,
|
||||
B = 0x40,
|
||||
Z = 0x20,
|
||||
R = 0x10
|
||||
} GhostController;
|
||||
|
||||
typedef enum { A = 0x80, B = 0x40, Z = 0x20, R = 0x10 } GhostController;
|
||||
|
||||
/*** types.h ***/
|
||||
|
||||
|
|
@ -47,17 +40,15 @@ enum SpTaskState {
|
|||
SPTASK_STATE_FINISHED_DP
|
||||
};
|
||||
|
||||
struct SPTask
|
||||
{
|
||||
struct SPTask {
|
||||
/*0x00*/ OSTask task;
|
||||
/*0x40*/ OSMesgQueue *msgqueue;
|
||||
/*0x40*/ OSMesgQueue* msgqueue;
|
||||
/*0x44*/ OSMesg msg;
|
||||
/*0x48*/ enum SpTaskState state;
|
||||
}; // size = 0x4C, align = 0x8
|
||||
|
||||
struct VblankHandler
|
||||
{
|
||||
OSMesgQueue *queue;
|
||||
struct VblankHandler {
|
||||
OSMesgQueue* queue;
|
||||
OSMesg msg;
|
||||
};
|
||||
|
||||
|
|
@ -75,8 +66,8 @@ struct Controller {
|
|||
u16 buttonPressed; // OnTriggered
|
||||
u16 buttonDepressed; // OffTriggered
|
||||
u16 stickDirection;
|
||||
u16 stickPressed; // OffTriggered
|
||||
u16 stickDepressed; // OnTriggered
|
||||
u16 stickPressed; // OffTriggered
|
||||
u16 stickDepressed; // OnTriggered
|
||||
};
|
||||
|
||||
// Camera path struct? Or something like that. For GP race won scene?
|
||||
|
|
@ -119,14 +110,17 @@ struct UnkStruct_802B53C8 {
|
|||
// end math util structs
|
||||
|
||||
struct UnkStruct_800DDB68 {
|
||||
s32 *D_800ED600; s32 *D_800ED608; s32 *D_800ED610; s32 *D_800ED618;
|
||||
s32 *D_800ED620; s32 *D_800ED628; s32 *D_800ED630; s32 *D_800ED638;
|
||||
s32* D_800ED600;
|
||||
s32* D_800ED608;
|
||||
s32* D_800ED610;
|
||||
s32* D_800ED618;
|
||||
s32* D_800ED620;
|
||||
s32* D_800ED628;
|
||||
s32* D_800ED630;
|
||||
s32* D_800ED638;
|
||||
};
|
||||
/*** Types.h end ***/
|
||||
|
||||
|
||||
|
||||
|
||||
typedef struct {
|
||||
u8 button;
|
||||
s8 frameDuration;
|
||||
|
|
@ -182,9 +176,9 @@ typedef struct {
|
|||
// This struct is almost identical to the GBI Vtx_t type,
|
||||
// except that its missing the "flag" member.
|
||||
typedef struct {
|
||||
s16 ob[3]; /* x, y, z */
|
||||
s16 tc[2]; /* texture coord */
|
||||
s8 ca[4]; /* color & alpha */
|
||||
s16 ob[3]; /* x, y, z */
|
||||
s16 tc[2]; /* texture coord */
|
||||
s8 ca[4]; /* color & alpha */
|
||||
} CourseVtx;
|
||||
|
||||
/*
|
||||
|
|
@ -195,26 +189,25 @@ The original author is assumed to be RenaKunisaki
|
|||
*/
|
||||
typedef struct {
|
||||
/* 0x00 */ u16 flags;
|
||||
// Top bytes is a collections of flags, bottom byte is of unknown purpose
|
||||
//bit 7: 1 = only tangible if landed on, not if driven onto?
|
||||
// very weird. game crashes sometimes when playing with this.
|
||||
//bit 6: 1 = Lakitu can drop you here (XXX verify)
|
||||
//bit 4: 1 = out of bounds
|
||||
//bit 3: 1 = player tumbles upon contact (may fall right through)
|
||||
// Top bytes is a collections of flags, bottom byte is of unknown purpose
|
||||
// bit 7: 1 = only tangible if landed on, not if driven onto?
|
||||
// very weird. game crashes sometimes when playing with this.
|
||||
// bit 6: 1 = Lakitu can drop you here (XXX verify)
|
||||
// bit 4: 1 = out of bounds
|
||||
// bit 3: 1 = player tumbles upon contact (may fall right through)
|
||||
/* 0x02 */ u16 surfaceType;
|
||||
|
||||
// For AABB bounding-box style collision. Box style collision is cheaper than checking each vtx.
|
||||
/* 0x04 */ s16 minX; // Minimum x coordinate
|
||||
s16 minY; // Minimum y coordinate
|
||||
s16 minZ; // Minimum z coordinate
|
||||
s16 maxX; // Maximum x coordinate
|
||||
s16 maxY; // Maximum y coordinate
|
||||
/* 0x0A */ s16 maxZ; // Maximum z coordinate
|
||||
// Three vertices to make a triangle
|
||||
/* 0x10 */ Vtx *vtx1;
|
||||
Vtx *vtx2;
|
||||
Vtx *vtx3;
|
||||
// Face normal. Should really be Vec3f normal
|
||||
// For AABB bounding-box style collision. Box style collision is cheaper than checking each vtx.
|
||||
/* 0x04 */ s16 minX; // Minimum x coordinate
|
||||
s16 minY; // Minimum y coordinate
|
||||
s16 minZ; // Minimum z coordinate
|
||||
s16 maxX; // Maximum x coordinate
|
||||
s16 maxY; // Maximum y coordinate
|
||||
/* 0x0A */ s16 maxZ; // Maximum z coordinate
|
||||
/* 0x10 */ Vtx* vtx1; // pointer to the 3 vertices of this poly
|
||||
Vtx* vtx2;
|
||||
Vtx* vtx3;
|
||||
// Face normal. Should really be Vec3f normal
|
||||
/* 0x1C */ f32 normalX;
|
||||
/* 0x20 */ f32 normalY;
|
||||
/* 0x24 */ f32 normalZ;
|
||||
|
|
@ -223,20 +216,20 @@ typedef struct {
|
|||
|
||||
typedef struct {
|
||||
/* 0x00 */ Vec3f pos;
|
||||
/* 0x0C */ u8 surfaceType; // Surface type that the tyre is touching.
|
||||
/* 0x0D */ u8 surfaceFlags;
|
||||
/* 0x0C */ u8 surfaceType; // Surface type that the tyre is touching.
|
||||
/* 0x0D */ u8 surfaceFlags;
|
||||
/* 0x0E */ u16 collisionMeshIndex; // Index into gCollisionMesh
|
||||
// Height of tyre attached to ground. When flying it floats with the kart.
|
||||
// Height of tyre attached to ground. When flying it floats with the kart.
|
||||
/* 0x10 */ f32 baseHeight;
|
||||
// Something lighting related. 1 when in a shaded region, 2 when in a tree's shadow
|
||||
// 3 when getting crushed by a whomp, but curiously only the front left tyre will ever have this value
|
||||
/* 0x14 */ s32 unk_14;
|
||||
} KartTyre; // size = 0x18
|
||||
|
||||
#define FRONT_LEFT 0
|
||||
#define FRONT_LEFT 0
|
||||
#define FRONT_RIGHT 1
|
||||
#define BACK_LEFT 2
|
||||
#define BACK_RIGHT 3
|
||||
#define BACK_LEFT 2
|
||||
#define BACK_RIGHT 3
|
||||
|
||||
struct UnkPlayerInner {
|
||||
/* 0xDB4 */ s16 unk0;
|
||||
|
|
@ -260,7 +253,7 @@ typedef struct {
|
|||
/* 0x0006 */ u16 unk_006;
|
||||
/* 0x0008 */ s16 lapCount;
|
||||
/* 0x000A */ char unk_00A[0x2];
|
||||
/* 0x000C */ s32 soundEffects; // Bitflag.
|
||||
/* 0x000C */ s32 soundEffects; // Bitflag.
|
||||
/* 0x0010 */ s16 currentItemCopy; // Has no effect on what item the players has, It is just a synced copy
|
||||
/* 0x0012 */ s16 unk_012;
|
||||
/* 0x0014 */ Vec3f pos;
|
||||
|
|
@ -371,22 +364,32 @@ typedef struct {
|
|||
/* 0x0DAC */ f32 unk_DAC;
|
||||
/* 0x0DB0 */ f32 unk_DB0;
|
||||
/* 0x0DB4 */ struct UnkPlayerInner unk_DB4;
|
||||
u32 nControlFlags; // Is racer human, ai, or networked controlled?
|
||||
s32 nCharacter; // Networked character choice
|
||||
s32 nStartingRank;
|
||||
u32 nHasAuthority;
|
||||
/* 0x0DB6 */ // s16 unk_DB6;
|
||||
/* 0x0DB8 */ // f32 unk_DB8;
|
||||
/* 0x0DBC */ // f32 unk_DBC;
|
||||
/* 0x0DC0 */ // f32 unk_DC0;
|
||||
/* 0x0DC4 */ // f32 unk_DC4;
|
||||
/* 0x0DC8 */ // f32 unk_DC8;
|
||||
/* 0x0DCC */ // s16 unk_DCC;
|
||||
/* 0x0DCE */ // s16 unk_DCE;
|
||||
/* 0x0DD0 */ // s16 unk_DD0;
|
||||
/* 0x0DD2 */ // s16 unk_DD2;
|
||||
/* 0x0DD4 */ // s16 unk_DD4;
|
||||
u32 nControlFlags; // Is racer human, ai, or networked controlled?
|
||||
s32 nCharacter; // Networked character choice
|
||||
s32 nStartingRank;
|
||||
u32 nHasAuthority;
|
||||
} Player; // size = 0xDD8
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
// Something related to time trial ghost data?
|
||||
/* 0x00 */ s32 unk_00;
|
||||
/* 0x04 */ u8 ghostDataSaved;
|
||||
/* 0x05 */ s8 courseIndex;
|
||||
/* 0x06 */ u8 characterId;
|
||||
/* 0x07 */ u8 unk_07[0x3C];
|
||||
/* 0x43 */ u8 pad_43[0x7F-0x43];
|
||||
/* 0x7F */ u8 checksum;
|
||||
/* 0x04 */ u8 ghostDataSaved;
|
||||
/* 0x05 */ s8 courseIndex;
|
||||
/* 0x06 */ u8 characterId;
|
||||
/* 0x07 */ u8 unk_07[0x3C];
|
||||
/* 0x43 */ u8 pad_43[0x7F - 0x43];
|
||||
/* 0x7F */ u8 checksum;
|
||||
} struct_8018EE10_entry; // size = 0x80
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -400,9 +403,9 @@ typedef struct {
|
|||
// Also might be used for the camera during the post race screens
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 unknownScaling; // Looks to be some type of scaling, unknown use
|
||||
/* 0x04 */ f32 rankScaling; // Scaling done on the rank text in the bottom left corner of the screen
|
||||
// All time measurements are in centiseconds
|
||||
/* 0x08 */ u32 someTimer; // The someTimers seem to always have the same value, the total time since race start
|
||||
/* 0x04 */ f32 rankScaling; // Scaling done on the rank text in the bottom left corner of the screen
|
||||
// All time measurements are in centiseconds
|
||||
/* 0x08 */ u32 someTimer; // The someTimers seem to always have the same value, the total time since race start
|
||||
/* 0x0C */ u32 someTimer1;
|
||||
/* 0x10 */ u32 timeLastTouchedFinishLine; // Sum of time of all completed laps
|
||||
// Times at which each lap was completed
|
||||
|
|
@ -445,30 +448,33 @@ typedef struct {
|
|||
// These 4 X coordinates are "slide" values
|
||||
union {
|
||||
struct {
|
||||
/* 0x50 */ s16 lap1CompletionTimeX; // Pulls double-duty as timerAfterImage1X
|
||||
/* 0x52 */ s16 lap2CompletionTimeX; // Pulls double-duty as timerAfterImage2X
|
||||
/* 0x54 */ s16 lap3CompletionTimeX;
|
||||
/* 0x50 */ s16 lap1CompletionTimeX; // Pulls double-duty as timerAfterImage1X
|
||||
/* 0x52 */ s16 lap2CompletionTimeX; // Pulls double-duty as timerAfterImage2X
|
||||
/* 0x54 */ s16 lap3CompletionTimeX;
|
||||
};
|
||||
/* 0x50 */ s16 lapCompletionTimeXs[3];
|
||||
};
|
||||
/* 0x56 */ s16 totalTimeX;
|
||||
/* 0x58 */ s16 timerY; // Y coordinate of the on screen timer (used as Y coordinate for lap completion times in post-race screen)
|
||||
/* 0x5A */ s16 lapX; // X coordinate of the on screen lap counter
|
||||
// 0x5C and 0x5E seem to be relative to lapX
|
||||
/* 0x58 */ s16 timerY; // Y coordinate of the on screen timer (used as Y coordinate for lap completion times in
|
||||
// post-race screen)
|
||||
/* 0x5A */ s16 lapX; // X coordinate of the on screen lap counter
|
||||
// 0x5C and 0x5E seem to be relative to lapX
|
||||
/* 0x5C */ s16 lapAfterImage1X;
|
||||
/* 0x5E */ s16 lapAfterImage2X;
|
||||
/* 0x60 */ s16 lapY; // Y coordinate of the on screen lap counter
|
||||
/* 0x60 */ s16 lapY; // Y coordinate of the on screen lap counter
|
||||
/* 0x62 */ s16 rankX; // X coordinate of the on screen rank indicator
|
||||
/* 0x64 */ s16 rankY; // Y coordinate of the on screen rank indicator
|
||||
/* 0x66 */ s16 slideRankX; // Adds with the other rankX, used during post race screen to make the rank "slide" into place
|
||||
/* 0x68 */ s16 slideRankY; // Adds with the other rankY, used during post race screen to make the rank "slide" into place
|
||||
/* 0x66 */ s16
|
||||
slideRankX; // Adds with the other rankX, used during post race screen to make the rank "slide" into place
|
||||
/* 0x68 */ s16
|
||||
slideRankY; // Adds with the other rankY, used during post race screen to make the rank "slide" into place
|
||||
/* 0x6A */ s16 stagingPosition; // Position to take during race staging
|
||||
// These s16's occasionally have values, but I have yet to identify any places that read them
|
||||
// They appear to have values when in 3/4 player split screen mode, otherwise they're 0
|
||||
/* 0x6C */ s16 unk_6C;
|
||||
/* 0x6E */ s16 unk_6E;
|
||||
/* 0x70 */ s8 raceCompleteBool; // Indicates if race is over?
|
||||
/* 0x71 */ s8 lapCount; // This increases to 3 when a race is over, while alsoLapCount stays at 2
|
||||
/* 0x71 */ s8 lapCount; // This increases to 3 when a race is over, while alsoLapCount stays at 2
|
||||
/* 0x72 */ s8 alsoLapCount;
|
||||
// Related to the timer blinking on lap completion
|
||||
// If blinkTimer is counting down:
|
||||
|
|
@ -481,7 +487,8 @@ typedef struct {
|
|||
/* 0x76 */ u8 itemOverride; // Something related to item generation. If non-zero, it determines the item you get
|
||||
/* 0x77 */ s8 unk_77;
|
||||
// 0x78 to 0x7F appear to be some type of "state" trackers for the lap and timer text during a race start
|
||||
// When a race starts those texts (and their afterimages) slide in and "bounce" a bit. These states control the bouncing (somehow)
|
||||
// When a race starts those texts (and their afterimages) slide in and "bounce" a bit. These states control the
|
||||
// bouncing (somehow)
|
||||
/* 0x78 */ u8 unk_78;
|
||||
/* 0x79 */ u8 unk_79;
|
||||
/* 0x7A */ u8 unk_7A;
|
||||
|
|
|
|||
|
|
@ -7,7 +7,7 @@
|
|||
|
||||
/**
|
||||
* @file Include for course gfx.inc.c.
|
||||
*/
|
||||
*/
|
||||
|
||||
typedef struct {
|
||||
uintptr_t addr;
|
||||
|
|
|
|||
|
|
@ -7,9 +7,8 @@
|
|||
#include <assets/other_textures.h>
|
||||
#include "animation.h"
|
||||
|
||||
typedef struct
|
||||
{
|
||||
u8 *addr; // segmented address texture file
|
||||
typedef struct {
|
||||
u8* addr; // segmented address texture file
|
||||
u32 file_size; // compressed file size
|
||||
u32 data_size; // uncompressed texture size
|
||||
u32 padding; // always zero
|
||||
|
|
@ -25,30 +24,30 @@ extern Animation d_course_sherbet_land_unk_data7;
|
|||
extern s16 d_course_sherbet_land_unk_data8[];
|
||||
extern AnimationLimbVector d_course_sherbet_land_unk_data9[];
|
||||
extern Animation d_course_sherbet_land_unk_data10;
|
||||
extern Animation *d_course_sherbet_land_unk_data11[];
|
||||
extern Animation* d_course_sherbet_land_unk_data11[];
|
||||
extern u32 d_course_sherbet_land_unk_data12[];
|
||||
|
||||
extern s16 d_rainbow_road_chomp_jaw_animation[];
|
||||
extern AnimationLimbVector d_rainbow_road_unk1[];
|
||||
extern Animation d_rainbow_road_unk2;
|
||||
extern Animation *d_rainbow_road_unk3[];
|
||||
extern Animation* d_rainbow_road_unk3[];
|
||||
extern uintptr_t d_rainbow_road_unk4[];
|
||||
extern u32 d_rainbow_road_unk5[];
|
||||
|
||||
extern Gfx *koopa_troopa_beach_dls1[];
|
||||
extern Gfx *koopa_troopa_beach_dls2[];
|
||||
extern Gfx* koopa_troopa_beach_dls1[];
|
||||
extern Gfx* koopa_troopa_beach_dls2[];
|
||||
extern u32 d_course_koopa_troopa_beach_unk_data1[];
|
||||
extern s16 d_course_koopa_troopa_beach_unk_data2[];
|
||||
extern AnimationLimbVector d_course_koopa_troopa_beach_unk_data3[];
|
||||
extern Animation d_course_koopa_troopa_beach_unk_data4;
|
||||
extern uintptr_t d_course_koopa_troopa_beach_unk4[];
|
||||
extern Animation *d_course_koopa_troopa_beach_unk_data5[];
|
||||
extern Animation* d_course_koopa_troopa_beach_unk_data5[];
|
||||
extern u32 d_course_koopa_troopa_beach_unk_data6[];
|
||||
|
||||
extern s16 d_course_yoshi_valley_unk1[];
|
||||
extern AnimationLimbVector d_course_yoshi_valley_unk2[];
|
||||
extern Animation d_course_yoshi_valley_unk3;
|
||||
extern Animation *d_course_yoshi_valley_unk4[];
|
||||
extern Animation* d_course_yoshi_valley_unk4[];
|
||||
extern uintptr_t d_course_yoshi_valley_unk5[];
|
||||
extern u32 d_course_yoshi_valley_unk6[];
|
||||
|
||||
|
|
@ -62,28 +61,28 @@ extern Animation d_course_sherbet_land_unk_data7;
|
|||
extern s16 d_course_sherbet_land_unk_data8[];
|
||||
extern AnimationLimbVector d_course_sherbet_land_unk_data9[];
|
||||
extern Animation d_course_sherbet_land_unk_data10;
|
||||
extern Animation *d_course_sherbet_land_unk_data11[];
|
||||
extern Animation* d_course_sherbet_land_unk_data11[];
|
||||
extern u32 d_course_sherbet_land_unk_data12[];
|
||||
|
||||
extern s16 d_rainbow_road_chomp_jaw_animation[];
|
||||
extern AnimationLimbVector d_rainbow_road_unk1[];
|
||||
extern Animation d_rainbow_road_unk2;
|
||||
extern Animation *d_rainbow_road_unk3[];
|
||||
extern Animation* d_rainbow_road_unk3[];
|
||||
extern u32 d_rainbow_road_unk5[];
|
||||
|
||||
extern Gfx *koopa_troopa_beach_dls1[];
|
||||
extern Gfx *koopa_troopa_beach_dls2[];
|
||||
extern Gfx* koopa_troopa_beach_dls1[];
|
||||
extern Gfx* koopa_troopa_beach_dls2[];
|
||||
extern u32 d_course_koopa_troopa_beach_unk_data1[];
|
||||
extern s16 d_course_koopa_troopa_beach_unk_data2[];
|
||||
extern AnimationLimbVector d_course_koopa_troopa_beach_unk_data3[];
|
||||
extern Animation d_course_koopa_troopa_beach_unk_data4;
|
||||
extern Animation *d_course_koopa_troopa_beach_unk_data5[];
|
||||
extern Animation* d_course_koopa_troopa_beach_unk_data5[];
|
||||
extern u32 d_course_koopa_troopa_beach_unk_data6[];
|
||||
|
||||
extern s16 d_course_yoshi_valley_unk1[];
|
||||
extern AnimationLimbVector d_course_yoshi_valley_unk2[];
|
||||
extern Animation d_course_yoshi_valley_unk3;
|
||||
extern Animation *d_course_yoshi_valley_unk4[];
|
||||
extern Animation* d_course_yoshi_valley_unk4[];
|
||||
extern u32 d_course_yoshi_valley_unk6[];
|
||||
|
||||
#endif // COURSE_OFFSETS_H
|
||||
|
|
|
|||
|
|
@ -27,14 +27,14 @@
|
|||
#define TEXT_X_POSSITION -0x5
|
||||
|
||||
// flags
|
||||
#define DISPLAY_DECIMAL_NUMBER 0x1
|
||||
#define DISPLAY_HEXIDECIMAL_NUMBER 0x2
|
||||
#define DISPLAY_OCTAL_NUMBER 0x4
|
||||
#define DISPLAY_BINARY_NUMBER 0x8
|
||||
#define DISPLAY_SIGNED_NUMBER 0x10
|
||||
#define DISPLAY_FLOAT_AS_TYPE 0x20
|
||||
#define DISPLAY_FLOAT_WITH_ROUNDING 0x40
|
||||
#define DISPLAY_FLOAT_NUMBER 0x80
|
||||
#define DISPLAY_DECIMAL_NUMBER 0x1
|
||||
#define DISPLAY_HEXIDECIMAL_NUMBER 0x2
|
||||
#define DISPLAY_OCTAL_NUMBER 0x4
|
||||
#define DISPLAY_BINARY_NUMBER 0x8
|
||||
#define DISPLAY_SIGNED_NUMBER 0x10
|
||||
#define DISPLAY_FLOAT_AS_TYPE 0x20
|
||||
#define DISPLAY_FLOAT_WITH_ROUNDING 0x40
|
||||
#define DISPLAY_FLOAT_NUMBER 0x80
|
||||
|
||||
#define HEXIDECIMAL 16
|
||||
#define DECIMAL 10
|
||||
|
|
@ -45,14 +45,13 @@
|
|||
* This structure is the heart of the DVDL.
|
||||
* only the first 4 attributes should be set by the user, the other 2 are used by the program.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
char *variableName; // name of the variable to be displayed
|
||||
void *variablePointer; // pointer to the variable so it can display it
|
||||
u8 variableSize; // size of the variable to make up for templates from C++
|
||||
u8 variableFlag; // flag to change how the variable is displayed
|
||||
char buffer[CHARACTER_BUFFER_SIZE]; // when converting a variable to string this will be filled
|
||||
char *characterBuffer; // silly pointer so i don't need to do stuff
|
||||
typedef struct {
|
||||
char* variableName; // name of the variable to be displayed
|
||||
void* variablePointer; // pointer to the variable so it can display it
|
||||
u8 variableSize; // size of the variable to make up for templates from C++
|
||||
u8 variableFlag; // flag to change how the variable is displayed
|
||||
char buffer[CHARACTER_BUFFER_SIZE]; // when converting a variable to string this will be filled
|
||||
char* characterBuffer; // silly pointer so i don't need to do stuff
|
||||
} variableWatchAttributes;
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
#ifndef DEFINES_H
|
||||
#define DEFINES_H
|
||||
|
||||
|
||||
/**
|
||||
* @brief Options for Controller Pak state
|
||||
*/
|
||||
|
|
@ -10,23 +9,23 @@
|
|||
|
||||
/**
|
||||
* @brief Enable debug mode
|
||||
*
|
||||
*
|
||||
* Press start to skip through menus
|
||||
*
|
||||
*
|
||||
* Toggle resource meters by holding R and tapping B. L must not be held.
|
||||
*
|
||||
*
|
||||
* Reset to start screen by holding A, B, R, and L.
|
||||
*
|
||||
*
|
||||
* View player direction and currentPathPoint in a single player race during staging tap L while holding A and B.
|
||||
* Turn off this UI by tapping R while holding A and B.
|
||||
* @bug This looks like it should work at any point in the race.
|
||||
*
|
||||
*
|
||||
* Set player 1 to the final lap by tapping D-pad up.
|
||||
* Set player 1 and player 2 to the final lap by tapping D-pad right.
|
||||
* Set player all players to the final lap by tapping D-pad down.
|
||||
*
|
||||
*
|
||||
* Immediately start the race if any controller presses Z.
|
||||
*
|
||||
*
|
||||
* As the ceremony cutscene starts hold a C or D-pad to switch characters.
|
||||
* C UP = LUIGI
|
||||
* C LEFT = YOSHI
|
||||
|
|
@ -36,17 +35,18 @@
|
|||
* D-pad LEFT = PEACH
|
||||
* D-pad RIGHT = BOWSER
|
||||
* D-pad DOWN = MARIO
|
||||
*
|
||||
*
|
||||
*/
|
||||
#if defined(GCC) || defined(DEBUG)
|
||||
#define DEBUG_MODE 1
|
||||
#define DEBUG_MENU 2
|
||||
#define DEBUG_MODE 1
|
||||
#define DEBUG_MENU 2
|
||||
#else
|
||||
#define DEBUG_MODE 1
|
||||
#define DEBUG_MENU 2
|
||||
#define DEBUG_MODE 1
|
||||
#define DEBUG_MENU 2
|
||||
#endif
|
||||
|
||||
#define HOLD_ALL_DPAD_AND_C_BUTTONS (U_JPAD | L_JPAD | R_JPAD | D_JPAD | U_CBUTTONS | L_CBUTTONS | R_CBUTTONS | D_CBUTTONS)
|
||||
#define HOLD_ALL_DPAD_AND_C_BUTTONS \
|
||||
(U_JPAD | L_JPAD | R_JPAD | D_JPAD | U_CBUTTONS | L_CBUTTONS | R_CBUTTONS | D_CBUTTONS)
|
||||
|
||||
/**
|
||||
* @brief Options for gDebugMenuSelection
|
||||
|
|
@ -75,11 +75,11 @@
|
|||
#define DEMO_MODE_INACTIVE 0
|
||||
|
||||
#ifdef VERSION_EU
|
||||
#define COURSE_TIMER_ITER 0.020041665999999999 // 1 / 50
|
||||
#define COURSE_TIMER_ITER_f 0.020041665999999999f // 1 / 50
|
||||
#define COURSE_TIMER_ITER 0.020041665999999999 // 1 / 50
|
||||
#define COURSE_TIMER_ITER_f 0.020041665999999999f // 1 / 50
|
||||
#else
|
||||
#define COURSE_TIMER_ITER 0.01666666 // 1 / 60
|
||||
#define COURSE_TIMER_ITER_f 0.01666666f // 1 / 60
|
||||
#define COURSE_TIMER_ITER 0.01666666 // 1 / 60
|
||||
#define COURSE_TIMER_ITER_f 0.01666666f // 1 / 60
|
||||
#endif
|
||||
|
||||
#define V_BlANK_TIMER_ITER 0.01666666
|
||||
|
|
@ -90,16 +90,16 @@
|
|||
* Start sequence means waiting for the light to turn green.
|
||||
* Used in the Player struct's 'type' member: player->type
|
||||
*/
|
||||
#define PLAYER_INACTIVE 0 // 0x0000
|
||||
#define PLAYER_UNKNOWN_0x40 (1 << 6) // 0x0040
|
||||
#define PLAYER_INVISIBLE_OR_BOMB (1 << 8) // 0x0100
|
||||
#define PLAYER_STAGING (1 << 9) // 0x0200
|
||||
#define PLAYER_UNKNOWN (1 << 10) // 0x0400 // unused ?
|
||||
#define PLAYER_CINEMATIC_MODE (1 << 11) // 0x0800 // Also used to track eliminations in Battle mode.
|
||||
#define PLAYER_KART_AI (1 << 12) // 0x1000
|
||||
#define PLAYER_START_SEQUENCE (1 << 13) // 0x2000
|
||||
#define PLAYER_HUMAN (1 << 14) // 0x4000
|
||||
#define PLAYER_EXISTS (1 << 15) // 0x8000
|
||||
#define PLAYER_INACTIVE 0 // 0x0000
|
||||
#define PLAYER_UNKNOWN_0x40 (1 << 6) // 0x0040
|
||||
#define PLAYER_INVISIBLE_OR_BOMB (1 << 8) // 0x0100
|
||||
#define PLAYER_STAGING (1 << 9) // 0x0200
|
||||
#define PLAYER_UNKNOWN (1 << 10) // 0x0400 // unused ?
|
||||
#define PLAYER_CINEMATIC_MODE (1 << 11) // 0x0800 // Also used to track eliminations in Battle mode.
|
||||
#define PLAYER_KART_AI (1 << 12) // 0x1000
|
||||
#define PLAYER_START_SEQUENCE (1 << 13) // 0x2000
|
||||
#define PLAYER_HUMAN (1 << 14) // 0x4000
|
||||
#define PLAYER_EXISTS (1 << 15) // 0x8000
|
||||
|
||||
// Compiles to -0x1000 in diff.py
|
||||
#define PLAYER_HUMAN_AND_KART_AI PLAYER_EXISTS | PLAYER_HUMAN | PLAYER_KART_AI | PLAYER_START_SEQUENCE
|
||||
|
|
@ -125,13 +125,13 @@ enum PlayerId {
|
|||
|
||||
#define NUM_PLAYERS 8
|
||||
|
||||
#define MARIO_SIZE 0.75f
|
||||
#define LUIGI_SIZE 0.75f
|
||||
#define YOSHI_SIZE 0.75f
|
||||
#define TOAD_SIZE 0.75f
|
||||
#define DK_SIZE 0.75f
|
||||
#define WARIO_SIZE 0.75f
|
||||
#define PEACH_SIZE 0.75f
|
||||
#define MARIO_SIZE 0.75f
|
||||
#define LUIGI_SIZE 0.75f
|
||||
#define YOSHI_SIZE 0.75f
|
||||
#define TOAD_SIZE 0.75f
|
||||
#define DK_SIZE 0.75f
|
||||
#define WARIO_SIZE 0.75f
|
||||
#define PEACH_SIZE 0.75f
|
||||
#define BOWSER_SIZE 0.75f
|
||||
|
||||
// 2P Game has Grand Prix, VS, and Battle as available game types
|
||||
|
|
@ -140,10 +140,10 @@ enum PlayerId {
|
|||
/**
|
||||
* @brief Options for gModeSelection
|
||||
*/
|
||||
#define GRAND_PRIX 0
|
||||
#define GRAND_PRIX 0
|
||||
#define TIME_TRIALS 1
|
||||
#define VERSUS 2
|
||||
#define BATTLE 3
|
||||
#define VERSUS 2
|
||||
#define BATTLE 3
|
||||
|
||||
/**
|
||||
* @brief Options for gCCSelection
|
||||
|
|
@ -153,11 +153,11 @@ enum PlayerId {
|
|||
* Generally, the main determiner of horsepower output.
|
||||
*/
|
||||
|
||||
#define CC_50 0
|
||||
#define CC_100 1
|
||||
#define CC_150 2
|
||||
#define CC_EXTRA 3
|
||||
#define CC_BATTLE 4
|
||||
#define CC_50 0
|
||||
#define CC_100 1
|
||||
#define CC_150 2
|
||||
#define CC_EXTRA 3
|
||||
#define CC_BATTLE 4
|
||||
|
||||
/**
|
||||
* @brief Options for gCupSelection
|
||||
|
|
@ -166,11 +166,11 @@ enum PlayerId {
|
|||
* way race courses are.
|
||||
*/
|
||||
#define MUSHROOM_CUP 0
|
||||
#define FLOWER_CUP 1
|
||||
#define STAR_CUP 2
|
||||
#define SPECIAL_CUP 3
|
||||
#define BATTLE_CUP 4
|
||||
#define NUM_CUPS 5
|
||||
#define FLOWER_CUP 1
|
||||
#define STAR_CUP 2
|
||||
#define SPECIAL_CUP 3
|
||||
#define BATTLE_CUP 4
|
||||
#define NUM_CUPS 5
|
||||
|
||||
/**
|
||||
* @brief Character IDs
|
||||
|
|
@ -178,13 +178,13 @@ enum PlayerId {
|
|||
* found in gCharacterGridSelections as those are
|
||||
* ordered by table
|
||||
*/
|
||||
#define MARIO 0
|
||||
#define LUIGI 1
|
||||
#define YOSHI 2
|
||||
#define TOAD 3
|
||||
#define DK 4
|
||||
#define WARIO 5
|
||||
#define PEACH 6
|
||||
#define MARIO 0
|
||||
#define LUIGI 1
|
||||
#define YOSHI 2
|
||||
#define TOAD 3
|
||||
#define DK 4
|
||||
#define WARIO 5
|
||||
#define PEACH 6
|
||||
#define BOWSER 7
|
||||
|
||||
/**
|
||||
|
|
@ -220,7 +220,8 @@ enum PlayerId {
|
|||
#define DATA_SELECTION 2
|
||||
#define PLAYER_NUM_SELECTION 3
|
||||
#define GAME_MODE_SELECTION 4
|
||||
#define GAME_MODE_CC_OR_TIME_TRIALS_OPTIONS_SELECTION 5 // Selecting CC for GP and Versus. Selecting "Begin" or "Data" for Time Trials. Unused for Battle
|
||||
#define GAME_MODE_CC_OR_TIME_TRIALS_OPTIONS_SELECTION \
|
||||
5 // Selecting CC for GP and Versus. Selecting "Begin" or "Data" for Time Trials. Unused for Battle
|
||||
#define CONFIRM_OK_SELECTION 6
|
||||
#define CONFIRM_OK_SELECTION_FROM_BACK_OUT 7
|
||||
#define TIME_TRIALS_DATA_SELECTION_FROM_BACK_OUT 8
|
||||
|
|
@ -256,7 +257,7 @@ enum PlayerId {
|
|||
#define TIME_TRIAL_3LAP_RECORD_3 2
|
||||
#define TIME_TRIAL_3LAP_RECORD_4 3
|
||||
#define TIME_TRIAL_3LAP_RECORD_5 4
|
||||
#define TIME_TRIAL_1LAP_RECORD 5
|
||||
#define TIME_TRIAL_1LAP_RECORD 5
|
||||
|
||||
/**
|
||||
* @brief Text color options
|
||||
|
|
@ -266,10 +267,10 @@ enum PlayerId {
|
|||
* flashing between 2 colors, but also cause individual characters
|
||||
* to be cutoff on their right side
|
||||
*/
|
||||
#define TEXT_BLUE 0
|
||||
#define TEXT_GREEN 1
|
||||
#define TEXT_RED 2
|
||||
#define TEXT_YELLOW 3
|
||||
#define TEXT_BLUE 0
|
||||
#define TEXT_GREEN 1
|
||||
#define TEXT_RED 2
|
||||
#define TEXT_YELLOW 3
|
||||
#define TEXT_BLUE_GREEN_RED_CYCLE_1 4
|
||||
#define TEXT_BLUE_GREEN_RED_CYCLE_2 5
|
||||
|
||||
|
|
@ -278,28 +279,28 @@ enum PlayerId {
|
|||
* Option 2 appears to be unused, as such its probably not
|
||||
* a valid option
|
||||
*/
|
||||
#define SOUND_STEREO 0
|
||||
#define SOUND_HEADPHONES 1
|
||||
#define SOUND_UNUSED 2
|
||||
#define SOUND_MONO 3
|
||||
#define NUM_SOUND_MODES 4
|
||||
#define SOUND_STEREO 0
|
||||
#define SOUND_HEADPHONES 1
|
||||
#define SOUND_UNUSED 2
|
||||
#define SOUND_MONO 3
|
||||
#define NUM_SOUND_MODES 4
|
||||
|
||||
/**
|
||||
* @brief Title screen demo options
|
||||
* All demos use 100 CC
|
||||
*/
|
||||
#define DEMO_ONE 0 // Mario, Mario Raceway, Grand Prix
|
||||
#define DEMO_TWO 1 // Yoshi DK, Choco Mountain, Versus
|
||||
#define DEMO_ONE 0 // Mario, Mario Raceway, Grand Prix
|
||||
#define DEMO_TWO 1 // Yoshi DK, Choco Mountain, Versus
|
||||
#define DEMO_THREE 2 // Luigi, Kalamari Desert, Grand Prix
|
||||
#define DEMO_FOUR 3 // Wario Yoshi Bowser, Wario Stadium, Versus
|
||||
#define DEMO_FIVE 4 // Bowser, Bowser Castle, Grand Prix
|
||||
#define DEMO_SIX 5 // Mario Luigi Peach Toad, Sherbert Land, Versus
|
||||
#define NUM_DEMOS 6
|
||||
#define DEMO_FOUR 3 // Wario Yoshi Bowser, Wario Stadium, Versus
|
||||
#define DEMO_FIVE 4 // Bowser, Bowser Castle, Grand Prix
|
||||
#define DEMO_SIX 5 // Mario Luigi Peach Toad, Sherbert Land, Versus
|
||||
#define NUM_DEMOS 6
|
||||
|
||||
#define CUP_COURSE_ONE 0
|
||||
#define CUP_COURSE_TWO 1
|
||||
#define CUP_COURSE_THREE 2
|
||||
#define CUP_COURSE_FOUR 3
|
||||
#define CUP_COURSE_ONE 0
|
||||
#define CUP_COURSE_TWO 1
|
||||
#define CUP_COURSE_THREE 2
|
||||
#define CUP_COURSE_FOUR 3
|
||||
#define NUM_COURSES_PER_CUP 4
|
||||
|
||||
/**
|
||||
|
|
@ -343,9 +344,9 @@ enum KART_AI_BEHAVIOURS {
|
|||
/**
|
||||
* @brief Balloon status
|
||||
*/
|
||||
#define BALLOON_STATUS_GONE 0
|
||||
#define BALLOON_STATUS_PRESENT 1
|
||||
#define BALLOON_STATUS_DEPARTING 2
|
||||
#define BALLOON_STATUS_GONE 0
|
||||
#define BALLOON_STATUS_PRESENT 1
|
||||
#define BALLOON_STATUS_DEPARTING 2
|
||||
|
||||
/**
|
||||
* @brief Max representable time, 100 minutes measured in centiseconds
|
||||
|
|
@ -356,33 +357,33 @@ enum KART_AI_BEHAVIOURS {
|
|||
* @brief sound effect of player's
|
||||
* for soundEffect
|
||||
*/
|
||||
#define HIT_SOUND_EFFECT 0x100 // hitting an object
|
||||
#define BOOST_SOUND_EFFECT 0x200 // being boosted by trigger a mushroom
|
||||
#define BOO_SOUND_EFFECT 0x800 // being a boo
|
||||
#define STAR_SOUND_EFFECT 0x2000 // being a star
|
||||
#define HIT_ROTATING_SOUND_EFFECT 0x4000 // hitting a rotating object
|
||||
#define BOOST_RAMP_WOOD_SOUND_EFFECT 0x8000 // being boosted by a ramp
|
||||
#define HOLD_BANANA_SOUND_EFFECT 0x40000 // holding a banana
|
||||
#define REVERSE_SOUND_EFFECT 0x400000 // being in the wrong direction
|
||||
#define BOOST_RAMP_ASPHALT_SOUND_EFFECT 0x800000 // being boosted by a boost pad
|
||||
#define HIT_BY_ITEM_SOUND_EFFECT 0x1000000 // being hit by an item
|
||||
#define HIT_SOUND_EFFECT 0x100 // hitting an object
|
||||
#define BOOST_SOUND_EFFECT 0x200 // being boosted by trigger a mushroom
|
||||
#define BOO_SOUND_EFFECT 0x800 // being a boo
|
||||
#define STAR_SOUND_EFFECT 0x2000 // being a star
|
||||
#define HIT_ROTATING_SOUND_EFFECT 0x4000 // hitting a rotating object
|
||||
#define BOOST_RAMP_WOOD_SOUND_EFFECT 0x8000 // being boosted by a ramp
|
||||
#define HOLD_BANANA_SOUND_EFFECT 0x40000 // holding a banana
|
||||
#define REVERSE_SOUND_EFFECT 0x400000 // being in the wrong direction
|
||||
#define BOOST_RAMP_ASPHALT_SOUND_EFFECT 0x800000 // being boosted by a boost pad
|
||||
#define HIT_BY_ITEM_SOUND_EFFECT 0x1000000 // being hit by an item
|
||||
|
||||
/**
|
||||
* @brief effect of player's
|
||||
* for effects
|
||||
*/
|
||||
#define BOOST_RAMP_WOOD_EFFECT 0x4 // being boosted by a ramp
|
||||
#define STAR_EFFECT 0x200 // being a star
|
||||
#define BOOST_EFFECT 0x2000 // being boosted by trigger a mushroom
|
||||
#define BOOST_RAMP_ASPHALT_EFFECT 0x100000 // being boosted by a boost pad
|
||||
#define HIT_BY_ITEM_EFFECT 0x2000000 // being hit by an item
|
||||
#define HIT_EFFECT 0x4000000 // hitting an object
|
||||
#define LIGHTNING_EFFECT 0x40000000 // being hit by lightning
|
||||
#define BOO_EFFECT 0x80000000 // being a boo
|
||||
#define BOOST_RAMP_WOOD_EFFECT 0x4 // being boosted by a ramp
|
||||
#define STAR_EFFECT 0x200 // being a star
|
||||
#define BOOST_EFFECT 0x2000 // being boosted by trigger a mushroom
|
||||
#define BOOST_RAMP_ASPHALT_EFFECT 0x100000 // being boosted by a boost pad
|
||||
#define HIT_BY_ITEM_EFFECT 0x2000000 // being hit by an item
|
||||
#define HIT_EFFECT 0x4000000 // hitting an object
|
||||
#define LIGHTNING_EFFECT 0x40000000 // being hit by lightning
|
||||
#define BOO_EFFECT 0x80000000 // being a boo
|
||||
|
||||
/**
|
||||
* @brief shell state
|
||||
*
|
||||
*
|
||||
*/
|
||||
#define SPAWN_FIRST_SHELL 0
|
||||
#define SPAWN_SECOND_SHELL 1
|
||||
|
|
@ -390,17 +391,16 @@ enum KART_AI_BEHAVIOURS {
|
|||
|
||||
#define GPACK_RGB888(r, g, b) (((r) << 16) | ((g) << 8) | (b))
|
||||
#define COLOR_LIGHT GPACK_RGB888(0x1C, 0x00, 0x00)
|
||||
#define COLOR_LAVA GPACK_RGB888(0x34, 0x00, 0x00)
|
||||
#define COLOR_BLACK GPACK_RGB888(0, 0, 0)
|
||||
#define COLOR_LAVA GPACK_RGB888(0x34, 0x00, 0x00)
|
||||
#define COLOR_BLACK GPACK_RGB888(0, 0, 0)
|
||||
|
||||
#endif // DEFINES_H
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* Collision mesh flags
|
||||
*
|
||||
*/
|
||||
*
|
||||
*/
|
||||
|
||||
#define GRID_SIZE 32
|
||||
|
||||
|
|
|
|||
|
|
@ -8,28 +8,28 @@ extern f32 D_800E2380[8];
|
|||
extern f32 D_800E23A0[8];
|
||||
extern f32 D_800E23C0[8];
|
||||
extern f32 D_800E23E0[8];
|
||||
extern f32 *D_800E2400[5];
|
||||
extern f32* D_800E2400[5];
|
||||
|
||||
extern f32 D_800E2414[8];
|
||||
extern f32 D_800E2434[8];
|
||||
extern f32 D_800E2454[8];
|
||||
extern f32 D_800E2474[8];
|
||||
extern f32 D_800E2494[8];
|
||||
extern f32 *D_800E24B4[5];
|
||||
extern f32* D_800E24B4[5];
|
||||
|
||||
extern f32 D_800E24C8[8];
|
||||
extern f32 D_800E24E8[8];
|
||||
extern f32 D_800E2508[8];
|
||||
extern f32 D_800E2528[8];
|
||||
extern f32 D_800E2548[8];
|
||||
extern f32 *D_800E2568[5];
|
||||
extern f32* D_800E2568[5];
|
||||
|
||||
extern f32 gTopSpeed50cc[8];
|
||||
extern f32 gTopSpeed100cc[8];
|
||||
extern f32 gTopSpeed150cc[8];
|
||||
extern f32 gTopSpeedExtra[8];
|
||||
extern f32 gTopSpeedBattle[8];
|
||||
extern f32 *gTopSpeedTable[5];
|
||||
extern f32* gTopSpeedTable[5];
|
||||
|
||||
extern f32 gKartFrictionTable[8];
|
||||
extern f32 gKartGravityTable[8];
|
||||
|
|
@ -53,8 +53,8 @@ extern f32 D_800E29A0[15];
|
|||
extern f32 D_800E29DC[15];
|
||||
extern f32 D_800E2A18[15];
|
||||
extern f32 D_800E2A54[15];
|
||||
extern f32 *D_800E2A90[8];
|
||||
extern f32 *D_800E2AB0[8];
|
||||
extern f32* D_800E2A90[8];
|
||||
extern f32* D_800E2AB0[8];
|
||||
|
||||
extern f32 D_800E2AD0[15];
|
||||
extern f32 D_800E2B0C[15];
|
||||
|
|
@ -72,8 +72,8 @@ extern f32 D_800E2DA0[15];
|
|||
extern f32 D_800E2DDC[15];
|
||||
extern f32 D_800E2E18[15];
|
||||
extern f32 D_800E2E54[15];
|
||||
extern f32 *D_800E2E90[8];
|
||||
extern f32 *D_800E2EB0[8];
|
||||
extern f32* D_800E2E90[8];
|
||||
extern f32* D_800E2EB0[8];
|
||||
|
||||
extern f32 gKartAccelerationMario[10];
|
||||
extern f32 gKartAccelerationLuigi[10];
|
||||
|
|
@ -83,7 +83,7 @@ extern f32 gKartAccelerationDK[10];
|
|||
extern f32 gKartAccelerationWario[10];
|
||||
extern f32 gKartAccelerationPeach[10];
|
||||
extern f32 gKartAccelerationBowser[10];
|
||||
extern f32 *gKartAccelerationTables[8];
|
||||
extern f32* gKartAccelerationTables[8];
|
||||
|
||||
extern f32 D_800E3030[15];
|
||||
extern f32 D_800E306C[15];
|
||||
|
|
@ -93,7 +93,7 @@ extern f32 D_800E3120[15];
|
|||
extern f32 D_800E315C[15];
|
||||
extern f32 D_800E3198[15];
|
||||
extern f32 D_800E31D4[15];
|
||||
extern f32 *D_800E3210[8];
|
||||
extern f32* D_800E3210[8];
|
||||
|
||||
extern f32 D_800E3230[15];
|
||||
extern f32 D_800E326C[15];
|
||||
|
|
@ -103,7 +103,7 @@ extern f32 D_800E3320[15];
|
|||
extern f32 D_800E335C[15];
|
||||
extern f32 D_800E3398[15];
|
||||
extern f32 D_800E33D4[15];
|
||||
extern f32 *D_800E3410[8];
|
||||
extern f32* D_800E3410[8];
|
||||
|
||||
extern f32 D_800E3430[15];
|
||||
extern f32 D_800E346C[15];
|
||||
|
|
@ -113,7 +113,7 @@ extern f32 D_800E3520[15];
|
|||
extern f32 D_800E355C[15];
|
||||
extern f32 D_800E3598[15];
|
||||
extern f32 D_800E35D4[15];
|
||||
extern f32 *D_800E3610[8];
|
||||
extern f32* D_800E3610[8];
|
||||
|
||||
extern f32 gKartHandlingTable[8];
|
||||
extern f32 gKartTable800E3650[8];
|
||||
|
|
|
|||
|
|
@ -9,33 +9,30 @@
|
|||
#define va_end __builtin_va_end
|
||||
#else
|
||||
|
||||
typedef char *va_list;
|
||||
typedef char* va_list;
|
||||
#define _FP 1
|
||||
#define _INT 0
|
||||
#define _STRUCT 2
|
||||
|
||||
#define _VA_FP_SAVE_AREA 0x10
|
||||
#define _VA_ALIGN(p, a) (((unsigned int)(((char *)p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))
|
||||
#define va_start(vp, parmN) (vp = ((va_list)&parmN + sizeof(parmN)))
|
||||
#define _VA_ALIGN(p, a) (((unsigned int) (((char*) p) + ((a) > 4 ? (a) : 4) - 1)) & -((a) > 4 ? (a) : 4))
|
||||
#define va_start(vp, parmN) (vp = ((va_list) & parmN + sizeof(parmN)))
|
||||
|
||||
#define __va_stack_arg(list, mode) \
|
||||
( \
|
||||
((list) = (char *)_VA_ALIGN(list, __builtin_alignof(mode)) + \
|
||||
_VA_ALIGN(sizeof(mode), 4)), \
|
||||
(((char *)list) - (_VA_ALIGN(sizeof(mode), 4) - sizeof(mode))))
|
||||
#define __va_stack_arg(list, mode) \
|
||||
(((list) = (char*) _VA_ALIGN(list, __builtin_alignof(mode)) + _VA_ALIGN(sizeof(mode), 4)), \
|
||||
(((char*) list) - (_VA_ALIGN(sizeof(mode), 4) - sizeof(mode))))
|
||||
|
||||
#define __va_double_arg(list, mode) \
|
||||
( \
|
||||
(((long)list & 0x1) /* 1 byte aligned? */ \
|
||||
? (list = (char *)((long)list + 7), (char *)((long)list - 6 - _VA_FP_SAVE_AREA)) \
|
||||
: (((long)list & 0x2) /* 2 byte aligned? */ \
|
||||
? (list = (char *)((long)list + 10), (char *)((long)list - 24 - _VA_FP_SAVE_AREA)) \
|
||||
: __va_stack_arg(list, mode))))
|
||||
#define __va_double_arg(list, mode) \
|
||||
((((long) list & 0x1) /* 1 byte aligned? */ \
|
||||
? (list = (char*) ((long) list + 7), (char*) ((long) list - 6 - _VA_FP_SAVE_AREA)) \
|
||||
: (((long) list & 0x2) /* 2 byte aligned? */ \
|
||||
? (list = (char*) ((long) list + 10), (char*) ((long) list - 24 - _VA_FP_SAVE_AREA)) \
|
||||
: __va_stack_arg(list, mode))))
|
||||
|
||||
#define va_arg(list, mode) ((mode *)(((__builtin_classof(mode) == _FP && \
|
||||
__builtin_alignof(mode) == sizeof(double)) \
|
||||
? __va_double_arg(list, mode) \
|
||||
: __va_stack_arg(list, mode))))[-1]
|
||||
#define va_arg(list, mode) \
|
||||
((mode*) (((__builtin_classof(mode) == _FP && __builtin_alignof(mode) == sizeof(double)) \
|
||||
? __va_double_arg(list, mode) \
|
||||
: __va_stack_arg(list, mode))))[-1]
|
||||
#define va_end(__list)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
#include <libultra/types.h>
|
||||
|
||||
#ifndef offsetof
|
||||
#define offsetof(st, m) ((size_t)&(((st *)0)->m))
|
||||
#define offsetof(st, m) ((size_t) & (((st*) 0)->m))
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef STDIO_H
|
||||
#define STDIO_H
|
||||
|
||||
extern int sprintf(char *s, const char *fmt, ...);
|
||||
extern int sprintf(char* s, const char* fmt, ...);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -1,14 +1,12 @@
|
|||
#ifndef STDLIB_H
|
||||
#define STDLIB_H
|
||||
|
||||
typedef struct lldiv_t
|
||||
{
|
||||
typedef struct lldiv_t {
|
||||
long long quot;
|
||||
long long rem;
|
||||
} lldiv_t;
|
||||
|
||||
typedef struct ldiv_t
|
||||
{
|
||||
typedef struct ldiv_t {
|
||||
long quot;
|
||||
long rem;
|
||||
} ldiv_t;
|
||||
|
|
|
|||
|
|
@ -3,8 +3,8 @@
|
|||
|
||||
#include <libultra/types.h>
|
||||
|
||||
void *memcpy(void *dst, const void *src, size_t size);
|
||||
size_t strlen(const char *str);
|
||||
char *strchr(const char *str, s32 ch);
|
||||
void* memcpy(void* dst, const void* src, size_t size);
|
||||
size_t strlen(const char* str);
|
||||
char* strchr(const char* str, s32 ch);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -11,12 +11,12 @@
|
|||
#if !defined(__sgi) && (!defined(NON_MATCHING) || !defined(AVOID_UB))
|
||||
// asm-process isn't supported outside of IDO, and undefined behavior causes
|
||||
// crashes.
|
||||
//#error Matching build is only possible on IDO; please build with NON_MATCHING=1.
|
||||
// #error Matching build is only possible on IDO; please build with NON_MATCHING=1.
|
||||
#endif
|
||||
|
||||
#define ARRAY_COUNT(arr) (s32)(sizeof(arr) / sizeof(arr[0]))
|
||||
|
||||
#define GLUE(a, b) a ## b
|
||||
#define GLUE(a, b) a##b
|
||||
#define GLUE2(a, b) GLUE(a, b)
|
||||
|
||||
// Avoid compiler warnings for unused variables
|
||||
|
|
@ -62,21 +62,29 @@
|
|||
#endif
|
||||
|
||||
// Fixed point macros
|
||||
#define FTOFIX(f) ((s32)((f) * 65536.0))
|
||||
#define ITOFIX(i) ((s32)((i) << 16))
|
||||
#define FIXTOF(x) ((double)((x) / 65536.0))
|
||||
#define FIXTOI(x) ((s32)((x) >> 16))
|
||||
#define FTOFIX(f) ((s32) ((f) * 65536.0))
|
||||
#define ITOFIX(i) ((s32) ((i) << 16))
|
||||
#define FIXTOF(x) ((double) ((x) / 65536.0))
|
||||
#define FIXTOI(x) ((s32) ((x) >> 16))
|
||||
|
||||
// Split fixed-point values into its integer or fractional parts.
|
||||
#define toFixedInt(f) (FTOFIX(f) >> 16)
|
||||
#define toFrac(f) (FTOFIX(f) & 0xFFFF)
|
||||
#define toFixedInt(f) (FTOFIX(f) >> 16)
|
||||
#define toFrac(f) (FTOFIX(f) & 0xFFFF)
|
||||
|
||||
// Setup a fixed-point matrix using floats or doubles. Recommend using doubles for more precision.
|
||||
#define toFixedPointMatrix(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) \
|
||||
{{((toFixedInt(x1)) << 16) | toFixedInt(x2), ((toFixedInt(x3)) << 16) | toFixedInt(x4), (toFixedInt(x5) << 16) | toFixedInt(x6), (toFixedInt(x7) << 16) | toFixedInt(x8)}, \
|
||||
{((toFixedInt(x9)) << 16) | toFixedInt(x10), ((toFixedInt(x11)) << 16) | toFixedInt(x12), (toFixedInt(x13) << 16) | toFixedInt(x14), (toFixedInt(x15) << 16) | toFixedInt(x16)}, \
|
||||
{((toFrac(x1)) << 16) | toFrac(x2), ((toFrac(x3)) << 16) | toFrac(x4), (toFrac(x5) << 16) | toFrac(x6), (toFrac(x7) << 16) | toFrac(x8)}, \
|
||||
{((toFrac(x9)) << 16) | toFrac(x10), ((toFrac(x11)) << 16) | toFrac(x12), (toFrac(x13) << 16) | toFrac(x14), (toFrac(x15) << 16) | toFrac(x16)}}
|
||||
#define toFixedPointMatrix(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, x14, x15, x16) \
|
||||
{ \
|
||||
{ ((toFixedInt(x1)) << 16) | toFixedInt(x2), ((toFixedInt(x3)) << 16) | toFixedInt(x4), \
|
||||
(toFixedInt(x5) << 16) | toFixedInt(x6), (toFixedInt(x7) << 16) | toFixedInt(x8) }, \
|
||||
{ ((toFixedInt(x9)) << 16) | toFixedInt(x10), ((toFixedInt(x11)) << 16) | toFixedInt(x12), \
|
||||
(toFixedInt(x13) << 16) | toFixedInt(x14), (toFixedInt(x15) << 16) | toFixedInt(x16) }, \
|
||||
{ ((toFrac(x1)) << 16) | toFrac(x2), ((toFrac(x3)) << 16) | toFrac(x4), (toFrac(x5) << 16) | toFrac(x6), \
|
||||
(toFrac(x7) << 16) | toFrac(x8) }, \
|
||||
{ \
|
||||
((toFrac(x9)) << 16) | toFrac(x10), ((toFrac(x11)) << 16) | toFrac(x12), \
|
||||
(toFrac(x13) << 16) | toFrac(x14), (toFrac(x15) << 16) | toFrac(x16) \
|
||||
} \
|
||||
}
|
||||
|
||||
// convert a virtual address to physical.
|
||||
#define VIRTUAL_TO_PHYSICAL(addr) (addr)
|
||||
|
|
@ -93,9 +101,9 @@
|
|||
// Envelopes are always stored as big endian, to match sequence files which are
|
||||
// byte blobs and can embed envelopes. Hence this byteswapping macro.
|
||||
#if IS_BIG_ENDIAN
|
||||
#define BSWAP16(x) (x)
|
||||
#define BSWAP16(x) (x)
|
||||
#else
|
||||
#define BSWAP16(x) (((x) & 0xff) << 8 | (((x) >> 8) & 0xff))
|
||||
#define BSWAP16(x) (((x) & 0xff) << 8 | (((x) >> 8) & 0xff))
|
||||
#endif
|
||||
|
||||
/**
|
||||
|
|
@ -104,6 +112,6 @@
|
|||
* - sizeof(dl[0]) : walk back 1 Gfx macro
|
||||
* - 0x07000000 : get just the offset
|
||||
**/
|
||||
#define GET_PACKED_END(dl) (((u8 *) dl) + sizeof(dl) - sizeof(dl[0]) - 0x07000000)
|
||||
#define GET_PACKED_END(dl) (((u8*) dl) + sizeof(dl) - sizeof(dl[0]) - 0x07000000)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -14,11 +14,10 @@
|
|||
Configuration
|
||||
=======================*/
|
||||
|
||||
|
||||
#define AUDIO_HEAP_SIZE 0x48C00
|
||||
#define AUDIO_HEAP_INIT_SIZE 0x2600
|
||||
|
||||
#define DOUBLE_SIZE_ON_64_BIT(size) ((size) * (sizeof(void *) / 4))
|
||||
#define DOUBLE_SIZE_ON_64_BIT(size) ((size) * (sizeof(void*) / 4))
|
||||
|
||||
#define SCREEN_WIDTH 320
|
||||
#define SCREEN_HEIGHT 240
|
||||
|
|
@ -77,54 +76,56 @@ typedef enum {
|
|||
|
||||
/**
|
||||
* @brief The different types of surface in the game.
|
||||
*/
|
||||
*/
|
||||
enum SURFACE_TYPE {
|
||||
/* -0x1 */ SURFACE_DEFAULT = -1,
|
||||
/* 0x00 */ AIRBORNE,
|
||||
/* 0x01 */ ASPHALT, // Luigi's Raceway, Toad's Turnpike, Koopa Troop beach shortcut tunnel, Mario Raceway, Royal Raceway, Rainbow Road, Block Fort, Double Deck, Skyscraper
|
||||
/* 0x02 */ DIRT, // Luigi's Raceway, Moo Moo Farm, Kalimiari Desert on course, Choco Mountain, Wario Stadium, DK Jungle on course, Yoshi Valley
|
||||
/* 0x03 */ SAND, // Koopa Troopa Beach light color, Royal Raceway
|
||||
/* 0x04 */ STONE, // Royal Raceway castle entrance, Bowser's Castle
|
||||
/* 0x05 */ SNOW, // Frappe Snowland on course, Sherber Land tunnel
|
||||
/* 0x06 */ BRIDGE, // Royal Raceway castle bridges (even the wooden one), Banshee's Boardwalk, Big Donut
|
||||
/* 0x01 */ ASPHALT, // Luigi's Raceway, Toad's Turnpike, Koopa Troop beach shortcut tunnel, Mario Raceway, Royal
|
||||
// Raceway, Rainbow Road, Block Fort, Double Deck, Skyscraper
|
||||
/* 0x02 */ DIRT, // Luigi's Raceway, Moo Moo Farm, Kalimiari Desert on course, Choco Mountain, Wario Stadium, DK
|
||||
// Jungle on course, Yoshi Valley
|
||||
/* 0x03 */ SAND, // Koopa Troopa Beach light color, Royal Raceway
|
||||
/* 0x04 */ STONE, // Royal Raceway castle entrance, Bowser's Castle
|
||||
/* 0x05 */ SNOW, // Frappe Snowland on course, Sherber Land tunnel
|
||||
/* 0x06 */ BRIDGE, // Royal Raceway castle bridges (even the wooden one), Banshee's Boardwalk, Big Donut
|
||||
/* 0x07 */ SAND_OFFROAD, // Mario Raceway
|
||||
/* 0x08 */ GRASS, // Luigi's Raceway, Mario Raceway, Royal Raceway, Bowser's Castle, DK Jungle, Yoshi Valley
|
||||
/* 0x09 */ ICE, // Sherbert Land
|
||||
/* 0x0A */ WET_SAND, // Koop Troopa Beach dark color
|
||||
/* 0x08 */ GRASS, // Luigi's Raceway, Mario Raceway, Royal Raceway, Bowser's Castle, DK Jungle, Yoshi Valley
|
||||
/* 0x09 */ ICE, // Sherbert Land
|
||||
/* 0x0A */ WET_SAND, // Koop Troopa Beach dark color
|
||||
/* 0x0B */ SNOW_OFFROAD, // Frappe Snowland off course
|
||||
/* 0x0C */ CLIFF, // Koopa Troopa Beach, Choco Mountain
|
||||
/* 0x0C */ CLIFF, // Koopa Troopa Beach, Choco Mountain
|
||||
/* 0x0D */ DIRT_OFFROAD, // Kalimari Desert off course
|
||||
/* 0x0E */ TRAIN_TRACK, // Kalimari Desert
|
||||
/* 0x0F */ CAVE, // DK Jungle cave
|
||||
/* 0x10 */ ROPE_BRIDGE, // Bowser's Castle bridge 2, DK Jungle bridge
|
||||
/* 0x11 */ WOOD_BRIDGE, // Frappe Snowland bridge, Bowser's Castle bridge 1,3, Yoshi Valley bridge 2
|
||||
/* 0x0E */ TRAIN_TRACK, // Kalimari Desert
|
||||
/* 0x0F */ CAVE, // DK Jungle cave
|
||||
/* 0x10 */ ROPE_BRIDGE, // Bowser's Castle bridge 2, DK Jungle bridge
|
||||
/* 0x11 */ WOOD_BRIDGE, // Frappe Snowland bridge, Bowser's Castle bridge 1,3, Yoshi Valley bridge 2
|
||||
/* 0xFC */ BOOST_RAMP_WOOD = 0xFC, // DK Jungle
|
||||
/* 0xFD */ OUT_OF_BOUNDS, // DK Jungle river island
|
||||
/* 0xFE */ BOOST_RAMP_ASPHALT, // Royal Raceway
|
||||
/* 0xFF */ RAMP // Koopa Troopa beach
|
||||
/* 0xFD */ OUT_OF_BOUNDS, // DK Jungle river island
|
||||
/* 0xFE */ BOOST_RAMP_ASPHALT, // Royal Raceway
|
||||
/* 0xFF */ RAMP // Koopa Troopa beach
|
||||
};
|
||||
|
||||
#define GFX_GET_OPCODE(var) ((uint32_t)((var) & 0xFF000000))
|
||||
#define GFX_GET_OPCODE(var) ((uint32_t) ((var) & 0xFF000000))
|
||||
|
||||
// Pointer casting is technically UB, and avoiding it gets rid of endian issues
|
||||
// as well as a nice side effect.
|
||||
#ifdef AVOID_UB
|
||||
#define GET_HIGH_U16_OF_32(var) ((u16)((var) >> 16))
|
||||
#define GET_HIGH_S16_OF_32(var) ((s16)((var) >> 16))
|
||||
#define GET_LOW_U16_OF_32(var) ((u16)((var) & 0xFFFF))
|
||||
#define GET_LOW_S16_OF_32(var) ((s16)((var) & 0xFFFF))
|
||||
#define GET_HIGH_U16_OF_32(var) ((u16) ((var) >> 16))
|
||||
#define GET_HIGH_S16_OF_32(var) ((s16) ((var) >> 16))
|
||||
#define GET_LOW_U16_OF_32(var) ((u16) ((var) & 0xFFFF))
|
||||
#define GET_LOW_S16_OF_32(var) ((s16) ((var) & 0xFFFF))
|
||||
#define SET_HIGH_U16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))
|
||||
#define SET_HIGH_S16_OF_32(var, x) ((var) = ((var) & 0xFFFF) | ((x) << 16))
|
||||
#else
|
||||
#define GET_HIGH_U16_OF_32(var) (((u16 *)&(var))[0])
|
||||
#define GET_HIGH_S16_OF_32(var) (((s16 *)&(var))[0])
|
||||
#define GET_LOW_U16_OF_32(var) (((u16 *)&(var))[1])
|
||||
#define GET_LOW_S16_OF_32(var) (((s16 *)&(var))[1])
|
||||
#define SET_HIGH_U16_OF_32(var, x) ((((u16 *)&(var))[0]) = (x))
|
||||
#define SET_HIGH_S16_OF_32(var, x) ((((s16 *)&(var))[0]) = (x))
|
||||
#define GET_HIGH_U16_OF_32(var) (((u16*) &(var))[0])
|
||||
#define GET_HIGH_S16_OF_32(var) (((s16*) &(var))[0])
|
||||
#define GET_LOW_U16_OF_32(var) (((u16*) &(var))[1])
|
||||
#define GET_LOW_S16_OF_32(var) (((s16*) &(var))[1])
|
||||
#define SET_HIGH_U16_OF_32(var, x) ((((u16*) &(var))[0]) = (x))
|
||||
#define SET_HIGH_S16_OF_32(var, x) ((((s16*) &(var))[0]) = (x))
|
||||
#endif
|
||||
|
||||
#define MACRO_COLOR_FLAG(r, g, b, flag) (r&~0x3) | (flag & 0x3), (g&~0x3) | ((flag>>2) & 0x3), b
|
||||
#define MACRO_COLOR_FLAG(r, g, b, flag) (r & ~0x3) | (flag & 0x3), (g & ~0x3) | ((flag >> 2) & 0x3), b
|
||||
|
||||
// Extra gbi commands
|
||||
void gSPSegmentLoadRes(void* value, int segNum, uintptr_t target);
|
||||
|
|
|
|||
|
|
@ -7,8 +7,7 @@
|
|||
#define OBJECT_LIST_SIZE 0x226
|
||||
#define SOME_OBJECT_INDEX_LIST_SIZE 32
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 sizeScaling;
|
||||
/* 0x04 */ Vec3f pos;
|
||||
/* 0x10 */ Vec3f origin_pos;
|
||||
|
|
@ -23,20 +22,20 @@ typedef struct
|
|||
/* 0x54 */ s32 status;
|
||||
/* 0x58 */ s32 unk_058;
|
||||
/* 0x5C */ s32 unk_05C;
|
||||
/* 0x60 */ const char *activeTLUT;
|
||||
/* 0x64 */ const char *activeTexture;
|
||||
/* 0x60 */ const char* activeTLUT;
|
||||
/* 0x64 */ const char* activeTexture;
|
||||
/**
|
||||
* "list" is something of a misnomer for the names here
|
||||
* they can be pointers to just 1 tlut/texture, but it is common for one or the other
|
||||
* to be a pointer to an array of tluts/textures.
|
||||
**/
|
||||
/* 0x68 */ u8 *tlutList; // I feel like this should actually be `u8 (*tlutList)[512]`, but that causes mismatches
|
||||
/* 0x6C */ const char **textureList;
|
||||
/* 0x70 */ Gfx *model;
|
||||
/* 0x74 */ Vtx *vertex;
|
||||
/* 0x78 */ s8 unk_078[0x04];
|
||||
/* 0x7C */ SplineControlPoint *controlPoints;
|
||||
/* 0x80 */ SplineData *spline;
|
||||
**/
|
||||
/* 0x68 */ u8* tlutList; // I feel like this should actually be `u8 (*tlutList)[512]`, but that causes mismatches
|
||||
/* 0x6C */ const char** textureList;
|
||||
/* 0x70 */ Gfx* model;
|
||||
/* 0x74 */ Vtx* vertex;
|
||||
/* 0x78 */ s8 unk_078[0x04];
|
||||
/* 0x7C */ SplineControlPoint* controlPoints;
|
||||
/* 0x80 */ SplineData* spline;
|
||||
/* 0x84 */ s16 unk_084[0xA];
|
||||
/* 0x98 */ u16 timer;
|
||||
/* 0x9A */ u16 unk_09A;
|
||||
|
|
@ -57,34 +56,33 @@ typedef struct
|
|||
/* 0xC4 */ u16 unk_0C4;
|
||||
/* 0xC6 */ u16 unk_0C6;
|
||||
/* 0xC8 */ u16 boundingBoxSize;
|
||||
/* 0xCA */ s8 unk_0CA;
|
||||
/* 0xCB */ s8 unk_0CB;
|
||||
/* 0xCC */ s8 unk_0CC;
|
||||
/* 0xCD */ s8 unk_0CD;
|
||||
/* 0xCE */ s8 unk_0CE;
|
||||
/* 0xCF */ s8 unk_0CF;
|
||||
/* 0xD0 */ s8 unk_0D0;
|
||||
/* 0xD1 */ s8 unk_0D1;
|
||||
/* 0xD2 */ s8 itemDisplay;
|
||||
/* 0xD3 */ s8 unk_0D3;
|
||||
/* 0xD4 */ s8 unk_0D4;
|
||||
/* 0xD5 */ u8 unk_0D5;
|
||||
/* 0xD6 */ u8 unk_0D6;
|
||||
/* 0xD7 */ u8 unk_0D7;
|
||||
/* 0xD8 */ u8 unk_0D8;
|
||||
/* 0xD9 */ u8 textureWidth;
|
||||
/* 0xDA */ u8 textureHeight;
|
||||
/* 0xDB */ u8 unk_0DB;
|
||||
/* 0xDC */ u8 unk_0DC;
|
||||
/* 0xDD */ u8 unk_0DD;
|
||||
/* 0xDE */ s8 unk_0DE;
|
||||
/* 0xDF */ u8 unk_0DF;
|
||||
/* 0xCA */ s8 unk_0CA;
|
||||
/* 0xCB */ s8 unk_0CB;
|
||||
/* 0xCC */ s8 unk_0CC;
|
||||
/* 0xCD */ s8 unk_0CD;
|
||||
/* 0xCE */ s8 unk_0CE;
|
||||
/* 0xCF */ s8 unk_0CF;
|
||||
/* 0xD0 */ s8 unk_0D0;
|
||||
/* 0xD1 */ s8 unk_0D1;
|
||||
/* 0xD2 */ s8 itemDisplay;
|
||||
/* 0xD3 */ s8 unk_0D3;
|
||||
/* 0xD4 */ s8 unk_0D4;
|
||||
/* 0xD5 */ u8 unk_0D5;
|
||||
/* 0xD6 */ u8 unk_0D6;
|
||||
/* 0xD7 */ u8 unk_0D7;
|
||||
/* 0xD8 */ u8 unk_0D8;
|
||||
/* 0xD9 */ u8 textureWidth;
|
||||
/* 0xDA */ u8 textureHeight;
|
||||
/* 0xDB */ u8 unk_0DB;
|
||||
/* 0xDC */ u8 unk_0DC;
|
||||
/* 0xDD */ u8 unk_0DD;
|
||||
/* 0xDE */ s8 unk_0DE;
|
||||
/* 0xDF */ u8 unk_0DF;
|
||||
} Object; // size = 0xE0
|
||||
|
||||
extern Object gObjectList[];
|
||||
|
||||
typedef struct
|
||||
{
|
||||
typedef struct {
|
||||
/* 0x00 */ f32 sizeScaling;
|
||||
/* 0x04 */ Vec3f pos;
|
||||
/* 0x10 */ Vec3f origin_pos;
|
||||
|
|
@ -99,20 +97,20 @@ typedef struct
|
|||
/* 0x54 */ s32 status;
|
||||
/* 0x58 */ s32 unk_058;
|
||||
/* 0x5C */ s32 unk_05C;
|
||||
/* 0x60 */ u8 *activeTLUT;
|
||||
/* 0x64 */ u8 *activeTexture;
|
||||
/* 0x60 */ u8* activeTLUT;
|
||||
/* 0x64 */ u8* activeTexture;
|
||||
/**
|
||||
* "list" is something of a misnomer for the names here
|
||||
* they can be pointers to just 1 tlut/texture, but it is common for one or the other
|
||||
* to be a pointer to an array of tluts/textures.
|
||||
**/
|
||||
/* 0x68 */ u8 *tlutList; // I feel like this should actually be `u8 (*tlutList)[512]`, but that causes mismatches
|
||||
/* 0x6C */ u8 *textureList;
|
||||
/* 0x70 */ Gfx *model;
|
||||
/* 0x74 */ Vtx *vertex;
|
||||
/* 0x78 */ s8 unk_078[0x04];
|
||||
/* 0x7C */ Vec4s *unk_07C;
|
||||
/* 0x80 */ Vec4s *unk_080; // unk_080[][4]?
|
||||
**/
|
||||
/* 0x68 */ u8* tlutList; // I feel like this should actually be `u8 (*tlutList)[512]`, but that causes mismatches
|
||||
/* 0x6C */ u8* textureList;
|
||||
/* 0x70 */ Gfx* model;
|
||||
/* 0x74 */ Vtx* vertex;
|
||||
/* 0x78 */ s8 unk_078[0x04];
|
||||
/* 0x7C */ Vec4s* unk_07C;
|
||||
/* 0x80 */ Vec4s* unk_080; // unk_080[][4]?
|
||||
/* 0x84 */ s16 unk_084[0xA];
|
||||
/* 0x98 */ u16 goldenMushroomTimer;
|
||||
/* 0x9A */ u16 unk_09A;
|
||||
|
|
@ -133,28 +131,28 @@ typedef struct
|
|||
/* 0xC4 */ u16 unk_0C4;
|
||||
/* 0xC6 */ u16 unk_0C6;
|
||||
/* 0xC8 */ u16 unk_0C8;
|
||||
/* 0xCA */ s8 unk_0CA;
|
||||
/* 0xCB */ s8 unk_0CB;
|
||||
/* 0xCC */ s8 unk_0CC;
|
||||
/* 0xCD */ s8 unk_0CD;
|
||||
/* 0xCE */ s8 unk_0CE;
|
||||
/* 0xCF */ s8 unk_0CF;
|
||||
/* 0xD0 */ s8 unk_0D0;
|
||||
/* 0xD1 */ s8 unk_0D1;
|
||||
/* 0xD2 */ s8 itemDisplay;
|
||||
/* 0xD3 */ s8 unk_0D3;
|
||||
/* 0xD4 */ s8 unk_0D4;
|
||||
/* 0xD5 */ u8 unk_0D5;
|
||||
/* 0xD6 */ u8 unk_0D6;
|
||||
/* 0xD7 */ u8 unk_0D7;
|
||||
/* 0xD8 */ u8 unk_0D8;
|
||||
/* 0xD9 */ u8 textureWidth;
|
||||
/* 0xDA */ u8 textureHeight;
|
||||
/* 0xDB */ u8 unk_0DB;
|
||||
/* 0xDC */ u8 unk_0DC;
|
||||
/* 0xDD */ u8 unk_0DD;
|
||||
/* 0xDE */ s8 unk_0DE;
|
||||
/* 0xDF */ u8 unk_0DF;
|
||||
/* 0xCA */ s8 unk_0CA;
|
||||
/* 0xCB */ s8 unk_0CB;
|
||||
/* 0xCC */ s8 unk_0CC;
|
||||
/* 0xCD */ s8 unk_0CD;
|
||||
/* 0xCE */ s8 unk_0CE;
|
||||
/* 0xCF */ s8 unk_0CF;
|
||||
/* 0xD0 */ s8 unk_0D0;
|
||||
/* 0xD1 */ s8 unk_0D1;
|
||||
/* 0xD2 */ s8 itemDisplay;
|
||||
/* 0xD3 */ s8 unk_0D3;
|
||||
/* 0xD4 */ s8 unk_0D4;
|
||||
/* 0xD5 */ u8 unk_0D5;
|
||||
/* 0xD6 */ u8 unk_0D6;
|
||||
/* 0xD7 */ u8 unk_0D7;
|
||||
/* 0xD8 */ u8 unk_0D8;
|
||||
/* 0xD9 */ u8 textureWidth;
|
||||
/* 0xDA */ u8 textureHeight;
|
||||
/* 0xDB */ u8 unk_0DB;
|
||||
/* 0xDC */ u8 unk_0DC;
|
||||
/* 0xDD */ u8 unk_0DD;
|
||||
/* 0xDE */ s8 unk_0DE;
|
||||
/* 0xDF */ u8 unk_0DF;
|
||||
} ItemWindowObjects; // size = 0xE0
|
||||
|
||||
// This are other lists of indices in gObjectList.
|
||||
|
|
@ -199,10 +197,11 @@ extern Collision D_8018C0B0[];
|
|||
/**
|
||||
* indexObjectList1, indexObjectList2, indexObjectList3, and indexObjectList4 are all lists of indices in gObjectList.
|
||||
* init_object_list_index initializes them in such a way that the indicies in each list are not adjacent.
|
||||
* First indexObjectList1 gets an unused index, then indexObjectList2, then indexObjectList3, then indexObjectList4, and then it loops.
|
||||
*
|
||||
* First indexObjectList1 gets an unused index, then indexObjectList2, then indexObjectList3, then indexObjectList4, and
|
||||
*then it loops.
|
||||
*
|
||||
* The objects found at the indices in each list appears to be course dependent
|
||||
**/
|
||||
**/
|
||||
|
||||
#define NUM_YV_FLAG_POLES 4
|
||||
|
||||
|
|
@ -235,12 +234,12 @@ typedef struct {
|
|||
/* 0x2 */ s16 startZ;
|
||||
/* 0x4 */ s16 unk_4; // Group Id?
|
||||
/* 0x6 */ s16 unk_6; // Starting State?
|
||||
} ThwompSpawn; // size = 0x8;
|
||||
} ThwompSpawn; // size = 0x8;
|
||||
|
||||
extern ThwompSpawn gThomwpSpawns50CC[];
|
||||
extern ThwompSpawn gThwompSpawns100CCExtra[];
|
||||
extern ThwompSpawn gThomwpSpawns150CC[];
|
||||
extern ThwompSpawn *gThowmpSpawnList;
|
||||
extern ThwompSpawn* gThowmpSpawnList;
|
||||
|
||||
extern s16 gNumActiveThwomps;
|
||||
|
||||
|
|
@ -267,14 +266,14 @@ extern s32 indexObjectList1[];
|
|||
typedef struct {
|
||||
/* 0x0 */ Vec3s pos;
|
||||
/* 0x6 */ s16 unk_6; // Group Id?
|
||||
} SnowmanSpawn; // size = 0x8;
|
||||
} SnowmanSpawn; // size = 0x8;
|
||||
|
||||
extern SnowmanSpawn gSnowmanSpawns[];
|
||||
|
||||
typedef struct {
|
||||
/* 0x0 */ Vec3s pos;
|
||||
/* 0x6 */ s16 unk_06; // Group Id?
|
||||
} HegdehogSpawn; // size = 0x8;
|
||||
} HegdehogSpawn; // size = 0x8;
|
||||
|
||||
extern HegdehogSpawn gHedgehogSpawns[];
|
||||
extern Vec3s gHedgehogPatrolPoints[];
|
||||
|
|
@ -311,15 +310,15 @@ extern s32 indexObjectList3[];
|
|||
extern s32 indexObjectList4[];
|
||||
|
||||
#define gObjectParticle1_SIZE 128
|
||||
#define NUM_GROUP1_MOLES 8
|
||||
#define NUM_GROUP1_MOLES 8
|
||||
#define NUM_GROUP2_MOLES 11
|
||||
#define NUM_GROUP3_MOLES 12
|
||||
#define NUM_TOTAL_MOLES (NUM_GROUP1_MOLES + NUM_GROUP2_MOLES + NUM_GROUP3_MOLES)
|
||||
#define NUM_TOTAL_MOLES (NUM_GROUP1_MOLES + NUM_GROUP2_MOLES + NUM_GROUP3_MOLES)
|
||||
#define NUM_SNOWFLAKES 0x32
|
||||
|
||||
typedef union {
|
||||
Vec3s asVec3sList[NUM_TOTAL_MOLES];
|
||||
s16 asFlatList[NUM_TOTAL_MOLES*3];
|
||||
s16 asFlatList[NUM_TOTAL_MOLES * 3];
|
||||
} MoleSpawnUnion;
|
||||
extern MoleSpawnUnion gMoleSpawns;
|
||||
|
||||
|
|
|
|||
|
|
@ -35,7 +35,6 @@ typedef struct {
|
|||
u8 unknownBytes[8];
|
||||
} OnlyBestTimeTrialRecords; // size = 0x38
|
||||
|
||||
|
||||
typedef struct {
|
||||
// GP Points scored for each CC mode
|
||||
// 1st place is 3 points, 2nd is 2, etc.
|
||||
|
|
@ -58,13 +57,13 @@ typedef struct {
|
|||
* Instead of 4 entries, one per cup. Or even just one big entry for all 4 cups
|
||||
* Its also unknown why these are here when they're identical to the values found
|
||||
* in allCourseTimeTrialRecords
|
||||
**/
|
||||
**/
|
||||
/* 0x188 */ OnlyBestTimeTrialRecords onlyBestTimeTrialRecords[2];
|
||||
/**
|
||||
* If checksum[1] or checksum[2] does not match their expected value,
|
||||
* the grandPrixPoints and soundMode are reset. Then if the backup data's
|
||||
* checksums are valid, copy the backup data to the main data.
|
||||
**/
|
||||
**/
|
||||
/* 0x1F8 */ Stuff backup;
|
||||
} SaveData; // size = 0x200
|
||||
|
||||
|
|
|
|||
|
|
@ -38,80 +38,79 @@ extern u8 _startupLogoSegmentRomEnd[];
|
|||
* main 0x80000400
|
||||
* ending 0x80280000 size 0xDF00
|
||||
* race 0x8028DF00 size 0x2C470
|
||||
**/
|
||||
|
||||
|
||||
#define SEG_START 0x80000000
|
||||
**/
|
||||
|
||||
#define SEG_START 0x80000000
|
||||
|
||||
// Defines duplicated even if the same for both for easier readability
|
||||
#ifdef AVOID_UB
|
||||
#if 0
|
||||
#define MEMORY_POOL_START (uintptr_t) & _memoryPoolSegmentNoloadStart[0]
|
||||
#define MEMORY_POOL_END (uintptr_t) & _memoryPoolSegmentNoloadEnd[0]
|
||||
|
||||
// #define MEMORY_POOL_START (uintptr_t) &_memoryPoolSegmentNoloadStart[0]
|
||||
// #define MEMORY_POOL_END (uintptr_t) &_memoryPoolSegmentNoloadEnd[0]
|
||||
#define SEG_ENDING (uintptr_t) & _endingSegmentStart[0]
|
||||
#define SEG_ENDING_ROM_START (uintptr_t) & _endingSegmentRomStart[0]
|
||||
/**
|
||||
* Ending segment original size is 0xDF00 but much of that remains unused.
|
||||
* This auto fits the segment to its proper size.
|
||||
*/
|
||||
#define SEG_ENDING_SIZE (size_t) ALIGN16((ptrdiff_t) (&_endingSegmentNoloadEnd[0] - &_endingSegmentStart[0]))
|
||||
#define SEG_ENDING_ROM_SIZE (size_t) ALIGN16((ptrdiff_t) (&_endingSegmentRomEnd[0] - &_endingSegmentRomStart[0]))
|
||||
|
||||
// #define SEG_ENDING (uintptr_t) &_endingSegmentStart[0]
|
||||
// #define SEG_ENDING_ROM_START (uintptr_t) &_endingSegmentRomStart[0]
|
||||
// /**
|
||||
// * Ending segment original size is 0xDF00 but much of that remains unused.
|
||||
// * This auto fits the segment to its proper size.
|
||||
// */
|
||||
// #define SEG_ENDING_SIZE (size_t) ALIGN16( (ptrdiff_t) (&_endingSegmentNoloadEnd[0] - &_endingSegmentStart[0]) )
|
||||
// #define SEG_ENDING_ROM_SIZE (size_t) ALIGN16( (ptrdiff_t) (&_endingSegmentRomEnd[0] - &_endingSegmentRomStart[0]) )
|
||||
#define SEG_RACING (uintptr_t) & _racingSegmentStart[0]
|
||||
#define SEG_RACING_ROM_START (uintptr_t) & _racingSegmentRomStart[0]
|
||||
#define SEG_RACING_SIZE (size_t) ALIGN16((ptrdiff_t) (&_racingSegmentNoloadEnd[0] - &_racingSegmentStart[0]))
|
||||
#define SEG_RACING_ROM_SIZE (size_t) ALIGN16((ptrdiff_t) (&_racingSegmentRomEnd[0] - &_racingSegmentRomStart[0]))
|
||||
|
||||
// #define SEG_RACING (uintptr_t) &_racingSegmentStart[0]
|
||||
// #define SEG_RACING_ROM_START (uintptr_t) &_racingSegmentRomStart[0]
|
||||
// #define SEG_RACING_SIZE (size_t) ALIGN16( (ptrdiff_t) (&_racingSegmentNoloadEnd[0] - &_racingSegmentStart[0]) )
|
||||
// #define SEG_RACING_ROM_SIZE (size_t) ALIGN16( (ptrdiff_t) (&_racingSegmentRomEnd[0] - &_racingSegmentRomStart[0]) )
|
||||
#define TRIG_TABLES (uintptr_t) & _trigTablesSegmentStart[0]
|
||||
#define TRIG_TABLES_ROM_START (uintptr_t) & _trigTablesSegmentRomStart[0]
|
||||
#define TRIG_TABLES_SIZE (size_t) _trigTablesSegmentSize
|
||||
|
||||
// #define TRIG_TABLES (uintptr_t) &_trigTablesSegmentStart[0]
|
||||
// #define TRIG_TABLES_ROM_START (uintptr_t) &_trigTablesSegmentRomStart[0]
|
||||
// #define TRIG_TABLES_SIZE (size_t) _trigTablesSegmentSize
|
||||
#define SEG_DATA_START (uintptr_t) & _data_segment2SegmentRomStart[0]
|
||||
#define SEG_DATA_END (uintptr_t) & _data_segment2SegmentRomEnd[0]
|
||||
|
||||
// #define SEG_DATA_START (uintptr_t) &_data_segment2SegmentRomStart[0]
|
||||
// #define SEG_DATA_END (uintptr_t) &_data_segment2SegmentRomEnd[0]
|
||||
#define COMMON_TEXTURES_ROM_START (uintptr_t) & _common_texturesSegmentRomStart[0]
|
||||
#define COMMON_TEXTURES_SIZE (ptrdiff_t)(&_common_texturesSegmentRomEnd[0] - &_common_texturesSegmentRomStart[0])
|
||||
|
||||
// #define COMMON_TEXTURES_ROM_START (uintptr_t) &_common_texturesSegmentRomStart[0]
|
||||
// #define COMMON_TEXTURES_SIZE (ptrdiff_t) (&_common_texturesSegmentRomEnd[0] - &_common_texturesSegmentRomStart[0])
|
||||
|
||||
// #define CEREMONY_DATA_ROM_START &_ceremonyDataSegmentRomStart[0]
|
||||
// #define CEREMONY_DATA_ROM_END &_ceremonyDataSegmentRomEnd[0]
|
||||
|
||||
// #define STARTUP_LOGO_ROM_START &_startupLogoSegmentRomStart[0]
|
||||
// #define STARTUP_LOGO_ROM_END &_startupLogoSegmentRomEnd[0]
|
||||
#define CEREMONY_DATA_ROM_START &_ceremonyDataSegmentRomStart[0]
|
||||
#define CEREMONY_DATA_ROM_END &_ceremonyDataSegmentRomEnd[0]
|
||||
|
||||
#define STARTUP_LOGO_ROM_START &_startupLogoSegmentRomStart[0]
|
||||
#define STARTUP_LOGO_ROM_END &_startupLogoSegmentRomEnd[0]
|
||||
#endif
|
||||
#else // Required for ok
|
||||
|
||||
#define MEMORY_POOL_START (uintptr_t) &_memoryPoolSegmentNoloadStart
|
||||
#define MEMORY_POOL_END (uintptr_t) 0x80242F00
|
||||
#define MEMORY_POOL_START (uintptr_t) & _memoryPoolSegmentNoloadStart
|
||||
#define MEMORY_POOL_END (uintptr_t) 0x80242F00
|
||||
|
||||
#define SEG_ENDING (uintptr_t) 0x80280000
|
||||
#define SEG_ENDING_ROM_START (u8 *) &_endingSegmentRomStart[0]
|
||||
#define SEG_ENDING (uintptr_t) 0x80280000
|
||||
#define SEG_ENDING_ROM_START (u8*) &_endingSegmentRomStart[0]
|
||||
|
||||
#define SEG_ENDING_SIZE (size_t) 0xDF00
|
||||
#define SEG_ENDING_ROM_SIZE (size_t) ALIGN16( (ptrdiff_t) (&_endingSegmentRomEnd[0] - &_endingSegmentRomStart[0]) )
|
||||
#define SEG_ENDING_SIZE (size_t) 0xDF00
|
||||
#define SEG_ENDING_ROM_SIZE (size_t) ALIGN16((ptrdiff_t) (&_endingSegmentRomEnd[0] - &_endingSegmentRomStart[0]))
|
||||
|
||||
#define SEG_RACING (uintptr_t) 0x8028DF00
|
||||
#define SEG_RACING_ROM_START (u8 *) &_racingSegmentRomStart[0]
|
||||
#define SEG_RACING_SIZE (size_t) 0x2C470
|
||||
#define SEG_RACING (uintptr_t) 0x8028DF00
|
||||
#define SEG_RACING_ROM_START (u8*) &_racingSegmentRomStart[0]
|
||||
#define SEG_RACING_SIZE (size_t) 0x2C470
|
||||
|
||||
#define SEG_RACING_ROM_SIZE (size_t) ALIGN16( (ptrdiff_t) (&_racingSegmentRomEnd[0] - &_racingSegmentRomStart[0]) )
|
||||
#define SEG_RACING_ROM_SIZE (size_t) ALIGN16((ptrdiff_t) (&_racingSegmentRomEnd[0] - &_racingSegmentRomStart[0]))
|
||||
|
||||
#define TRIG_TABLES (uintptr_t) 0x802BA370
|
||||
#define TRIG_TABLES_ROM_START (uintptr_t) &_trigTablesSegmentRomStart[0]
|
||||
#define TRIG_TABLES_SIZE (size_t) 0x5810
|
||||
#define TRIG_TABLES (uintptr_t) 0x802BA370
|
||||
#define TRIG_TABLES_ROM_START (uintptr_t) & _trigTablesSegmentRomStart[0]
|
||||
#define TRIG_TABLES_SIZE (size_t) 0x5810
|
||||
|
||||
#define SEG_DATA_START (uintptr_t) &_data_segment2SegmentRomStart[0]
|
||||
#define SEG_DATA_END (uintptr_t) &_data_segment2SegmentRomEnd[0]
|
||||
#define SEG_DATA_START (uintptr_t) & _data_segment2SegmentRomStart[0]
|
||||
#define SEG_DATA_END (uintptr_t) & _data_segment2SegmentRomEnd[0]
|
||||
|
||||
#define COMMON_TEXTURES_ROM_START (uintptr_t) &_common_texturesSegmentRomStart[0]
|
||||
#define COMMON_TEXTURES_SIZE (ptrdiff_t) ((uintptr_t)&_common_texturesSegmentRomEnd - (uintptr_t)&_common_texturesSegmentRomStart)
|
||||
#define COMMON_TEXTURES_ROM_START (uintptr_t) & _common_texturesSegmentRomStart[0]
|
||||
#define COMMON_TEXTURES_SIZE \
|
||||
(ptrdiff_t)((uintptr_t) & _common_texturesSegmentRomEnd - (uintptr_t) & _common_texturesSegmentRomStart)
|
||||
|
||||
#define CEREMONY_DATA_ROM_START &_ceremonyDataSegmentRomStart[0]
|
||||
#define CEREMONY_DATA_ROM_END &_ceremonyDataSegmentRomEnd[0]
|
||||
#define CEREMONY_DATA_ROM_START &_ceremonyDataSegmentRomStart[0]
|
||||
#define CEREMONY_DATA_ROM_END &_ceremonyDataSegmentRomEnd[0]
|
||||
|
||||
#define STARTUP_LOGO_ROM_START &_startupLogoSegmentRomStart[0]
|
||||
#define STARTUP_LOGO_ROM_END &_startupLogoSegmentRomEnd[0]
|
||||
#define STARTUP_LOGO_ROM_START &_startupLogoSegmentRomStart[0]
|
||||
#define STARTUP_LOGO_ROM_END &_startupLogoSegmentRomEnd[0]
|
||||
|
||||
#endif /* AVOID_UB */
|
||||
|
||||
|
|
|
|||
|
|
@ -15,7 +15,7 @@
|
|||
((sound_bank << 24) | (byte2 << 16) | (byte3 << 8) | sound_id)
|
||||
|
||||
/* Intro */
|
||||
#define SOUND_INTRO_LOGO SOUND_ARG_LOAD(0x49, 0x01, 0x80, 0x08) //SOUND_ARG_LOAD(0x49, 0x01, 0x80, 0x08)
|
||||
#define SOUND_INTRO_LOGO SOUND_ARG_LOAD(0x49, 0x01, 0x80, 0x08) // SOUND_ARG_LOAD(0x49, 0x01, 0x80, 0x08)
|
||||
// Welcome to Mario Kart. Used in intro and credits.
|
||||
#define SOUND_INTRO_WELCOME SOUND_ARG_LOAD(0x49, 0x00, 0x90, 0x09)
|
||||
#define SOUND_INTRO_ENTER_MENU SOUND_ARG_LOAD(0x49, 0x00, 0x80, 0x1A)
|
||||
|
|
@ -66,7 +66,6 @@
|
|||
#define SOUND_MENU_HEADPHONES SOUND_ARG_LOAD(0x49, 0x00, 0x80, 0x25)
|
||||
#define SOUND_MENU_MONO SOUND_ARG_LOAD(0x49, 0x00, 0x80, 0x29)
|
||||
|
||||
|
||||
/* Staging */
|
||||
// Red and orange staging lights that Lakitu holds.
|
||||
#define SOUND_ACTION_COUNTDOWN_LIGHT SOUND_ARG_LOAD(0x49, 0x00, 0x80, 0x03)
|
||||
|
|
@ -93,7 +92,6 @@
|
|||
#define SOUND_ITEM_STAR SOUND_ARG_LOAD(0x31, 0x02, 0x90, 0x08)
|
||||
#define SOUND_ITEM_THUNDERBOLT SOUND_ARG_LOAD(0x51, 0x01, 0xC0, 0x0C)
|
||||
|
||||
|
||||
/* Score Screen */
|
||||
// Coin pickup sound (perfect fourth; B to E)
|
||||
#define SOUND_ACTION_COUNT_SCORE SOUND_ARG_LOAD(0x49, 0x00, 0x80, 0x17)
|
||||
|
|
@ -101,7 +99,6 @@
|
|||
// Same sound as ENTER_MENU
|
||||
#define SOUND_ACTION_CONTINUE_UNKNOWN SOUND_ARG_LOAD(0x49, 0x00, 0x80, 0x1B)
|
||||
|
||||
|
||||
/* Ceremony */
|
||||
// Congratulation
|
||||
#define SOUND_CEREMONY_CONGRATULATION SOUND_ARG_LOAD(0x49, 0x00, 0x90, 0x14)
|
||||
|
|
@ -118,8 +115,4 @@
|
|||
// Hey, you're very good. See you next time!
|
||||
#define SOUND_CREDITS_FAREWELL SOUND_ARG_LOAD(0x49, 0x00, 0x80, 0x26)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // SOUNDS_H
|
||||
|
|
|
|||
|
|
@ -48,7 +48,6 @@ typedef struct {
|
|||
// Seagulls in KoopaTroopaBeach x 1
|
||||
// length of 24
|
||||
|
||||
|
||||
// Ghosts in BansheeBoardwalk x 1
|
||||
// Seagulls in KoopaTroopaBeach x 1
|
||||
// Penguins in Sherbet Land x 1
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include <libultraship.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#define bzero(b,len) (memset((b), '\0', (len)), (void) 0)
|
||||
#define bzero(b, len) (memset((b), '\0', (len)), (void) 0)
|
||||
#define bcopy(b1, b2, len) (memmove((b2), (b1), (len)), (void) 0)
|
||||
#endif
|
||||
|
||||
|
|
@ -18,20 +18,21 @@ void mio0decode(u8* arg0, u8* arg1);
|
|||
s32 mio0encode(s32 input, s32, s32);
|
||||
void tkmk00decode(u8*, u8*, u8*, s32);
|
||||
void osStartThread(OSThread* thread);
|
||||
void osCreateThread(OSThread *thread, OSId id, void (*entry)(void *), void *arg, void *sp, OSPri pri);
|
||||
void osCreateThread(OSThread* thread, OSId id, void (*entry)(void*), void* arg, void* sp, OSPri pri);
|
||||
void osInitialize(void);
|
||||
void osSetThreadPri(OSThread *thread, OSPri pri);
|
||||
void osSpTaskLoad(OSTask *task);
|
||||
void osSpTaskStartGo(OSTask *task);
|
||||
void osSetThreadPri(OSThread* thread, OSPri pri);
|
||||
void osSpTaskLoad(OSTask* task);
|
||||
void osSpTaskStartGo(OSTask* task);
|
||||
void osSpTaskYield(void);
|
||||
OSYieldResult osSpTaskYielded(OSTask *task);
|
||||
s32 osPfsDeleteFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name, u8 *ext_name);
|
||||
s32 osPfsReadWriteFile(OSPfs *pfs, s32 file_no, u8 flag, int offset, int size_in_bytes, u8 *data_buffer);
|
||||
s32 osPfsAllocateFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name, u8 *ext_name, int file_size_in_bytes, s32 *file_no);
|
||||
OSYieldResult osSpTaskYielded(OSTask* task);
|
||||
s32 osPfsDeleteFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, u8* ext_name);
|
||||
s32 osPfsReadWriteFile(OSPfs* pfs, s32 file_no, u8 flag, int offset, int size_in_bytes, u8* data_buffer);
|
||||
s32 osPfsAllocateFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, u8* ext_name, int file_size_in_bytes,
|
||||
s32* file_no);
|
||||
void osSetTime(OSTime time);
|
||||
s32 osPfsIsPlug(OSMesgQueue *queue, u8 *pattern);
|
||||
s32 osPfsInit(OSMesgQueue *queue, OSPfs *pfs, int channel);
|
||||
s32 osPfsNumFiles(OSPfs *pfs, s32 *max_files, s32 *files_used);
|
||||
s32 osPfsFileState(OSPfs *pfs, s32 file_no, OSPfsState *state);
|
||||
s32 osPfsFreeBlocks(OSPfs *pfs, s32 *bytes_not_used);
|
||||
s32 osPfsFindFile(OSPfs *pfs, u16 company_code, u32 game_code, u8 *game_name, u8 *ext_name, s32 *file_no);
|
||||
s32 osPfsIsPlug(OSMesgQueue* queue, u8* pattern);
|
||||
s32 osPfsInit(OSMesgQueue* queue, OSPfs* pfs, int channel);
|
||||
s32 osPfsNumFiles(OSPfs* pfs, s32* max_files, s32* files_used);
|
||||
s32 osPfsFileState(OSPfs* pfs, s32 file_no, OSPfsState* state);
|
||||
s32 osPfsFreeBlocks(OSPfs* pfs, s32* bytes_not_used);
|
||||
s32 osPfsFindFile(OSPfs* pfs, u16 company_code, u32 game_code, u8* game_name, u8* ext_name, s32* file_no);
|
||||
|
|
|
|||
|
|
@ -3,12 +3,17 @@
|
|||
|
||||
#include <common_structs.h>
|
||||
|
||||
#define NUM_1P_PASSENGER_CARS 4
|
||||
#define NUM_2P_PASSENGER_CARS 1
|
||||
#define NUM_1P_PASSENGER_CARS 4
|
||||
#define NUM_2P_PASSENGER_CARS 1
|
||||
#define NUM_PASSENGER_CAR_ENTRIES 5 // Max 16
|
||||
#define NUM_TENDERS 1
|
||||
#define NUM_TRAINS 2
|
||||
#define LOCOMOTIVE_ONLY 0
|
||||
#define NUM_TENDERS 1
|
||||
#define NUM_TRAINS 2
|
||||
#define LOCOMOTIVE_ONLY 0
|
||||
|
||||
#define NUM_CROSSINGS 2
|
||||
// This allows karts to jump the train despite the crossing being activated.
|
||||
// but still stop for the train once it's close
|
||||
#define FRAMES_SINCE_CROSSING_ACTIVATED 240
|
||||
|
||||
#define NUM_CROSSINGS 2
|
||||
// This allows karts to jump the train despite the crossing being activated.
|
||||
|
|
@ -19,15 +24,21 @@
|
|||
#define NUM_ACTIVE_PADDLE_BOATS 1
|
||||
#define NUM_PADDLE_BOATS 2
|
||||
|
||||
#define NUM_RACE_BOX_TRUCKS 7
|
||||
#define NUM_RACE_SCHOOL_BUSES 7
|
||||
#define NUM_RACE_BOX_TRUCKS 7
|
||||
#define NUM_RACE_SCHOOL_BUSES 7
|
||||
#define NUM_RACE_TANKER_TRUCKS 7
|
||||
#define NUM_RACE_CARS 7
|
||||
#define NUM_RACE_CARS 7
|
||||
|
||||
#define NUM_TIME_TRIAL_BOX_TRUCKS (NUM_RACE_BOX_TRUCKS + 1)
|
||||
#define NUM_TIME_TRIAL_SCHOOL_BUSES (NUM_RACE_SCHOOL_BUSES + 1)
|
||||
#define NUM_TIME_TRIAL_BOX_TRUCKS (NUM_RACE_BOX_TRUCKS + 1)
|
||||
#define NUM_TIME_TRIAL_SCHOOL_BUSES (NUM_RACE_SCHOOL_BUSES + 1)
|
||||
#define NUM_TIME_TRIAL_TANKER_TRUCKS (NUM_RACE_TANKER_TRUCKS + 1)
|
||||
#define NUM_TIME_TRIAL_CARS (NUM_RACE_CARS + 1)
|
||||
#define NUM_TIME_TRIAL_CARS (NUM_RACE_CARS + 1)
|
||||
|
||||
#define TRAIN_SMOKE_RENDER_DISTANCE 2000.0f
|
||||
#define TRAIN_CROSSING_AI_DISTANCE 1000.0f
|
||||
#define BOAT_SMOKE_RENDER_DISTANCE 2000.0f
|
||||
|
||||
#define RENDER_VEHICLE 1
|
||||
|
||||
#define TRAIN_SMOKE_RENDER_DISTANCE 2000.0f
|
||||
#define TRAIN_CROSSING_AI_DISTANCE 1000.0f
|
||||
|
|
@ -36,62 +47,62 @@
|
|||
#define RENDER_VEHICLE 1
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 isActive; // Only used for Tender and Passenger Cars, unused for Locomotives
|
||||
/* 0x02 */ s16 compilerPadding;
|
||||
/* 0x04 */ Vec3f position;
|
||||
/* 0x10 */ Vec3f velocity;
|
||||
/* 0x1C */ u16 waypointIndex;
|
||||
/* 0x1E */ s16 actorIndex;
|
||||
/* 0x20 */ s32 unused; // Not read or written. Could be padding?
|
||||
} TrainCarStuff; // size = 0x24;
|
||||
/* 0x00 */ s16 isActive; // Only used for Tender and Passenger Cars, unused for Locomotives
|
||||
/* 0x02 */ s16 compilerPadding;
|
||||
/* 0x04 */ Vec3f position;
|
||||
/* 0x10 */ Vec3f velocity;
|
||||
/* 0x1C */ u16 waypointIndex;
|
||||
/* 0x1E */ s16 actorIndex;
|
||||
/* 0x20 */ s32 unused; // Not read or written. Could be padding?
|
||||
} TrainCarStuff; // size = 0x24;
|
||||
|
||||
typedef struct {
|
||||
/* 0x000 */ TrainCarStuff locomotive;
|
||||
/* 0x024 */ TrainCarStuff tender;
|
||||
/* 0x048 */ TrainCarStuff passengerCars[NUM_PASSENGER_CAR_ENTRIES];
|
||||
/* 0x0FC */ f32 speed;
|
||||
/* 0x100 */ s32 someFlags;
|
||||
/* 0x104 */ s32 numCars; // Non-locomotive car count?
|
||||
/* 0x108 */ s32 unused; // Not read or written. Could be padding?
|
||||
} TrainStuff; // size = 0x10C
|
||||
/* 0x000 */ TrainCarStuff locomotive;
|
||||
/* 0x024 */ TrainCarStuff tender;
|
||||
/* 0x048 */ TrainCarStuff passengerCars[NUM_PASSENGER_CAR_ENTRIES];
|
||||
/* 0x0FC */ f32 speed;
|
||||
/* 0x100 */ s32 someFlags;
|
||||
/* 0x104 */ s32 numCars; // Non-locomotive car count?
|
||||
/* 0x108 */ s32 unused; // Not read or written. Could be padding?
|
||||
} TrainStuff; // size = 0x10C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 isActive; // The paddle wheel boat only shows up if the number of players is < 3
|
||||
/* 0x02 */ // s16 compilerPadding;
|
||||
/* 0x04 */ Vec3f position; //
|
||||
/* 0x10 */ Vec3f velocity; //
|
||||
/* 0x1C */ u16 waypointIndex; //
|
||||
/* 0x1E */ s16 actorIndex; //
|
||||
/* 0x20 */ f32 speed; //
|
||||
/* 0x24 */ s16 rotY; // Only Y rotation is tracked in this struct
|
||||
/* 0x26 */ // s16 compilerPadding2;
|
||||
/**
|
||||
* Bit field that tracks whether a given human player is within a certain distance of the boat
|
||||
* Probably audio related
|
||||
**/
|
||||
/* 0x28 */ s32 someFlags;
|
||||
/* 0x00 */ s16 isActive; // The paddle wheel boat only shows up if the number of players is < 3
|
||||
/* 0x02 */ // s16 compilerPadding;
|
||||
/* 0x04 */ Vec3f position; //
|
||||
/* 0x10 */ Vec3f velocity; //
|
||||
/* 0x1C */ u16 waypointIndex; //
|
||||
/* 0x1E */ s16 actorIndex; //
|
||||
/* 0x20 */ f32 speed; //
|
||||
/* 0x24 */ s16 rotY; // Only Y rotation is tracked in this struct
|
||||
/* 0x26 */ // s16 compilerPadding2;
|
||||
/**
|
||||
* Bit field that tracks whether a given human player is within a certain distance of the boat
|
||||
* Probably audio related
|
||||
**/
|
||||
/* 0x28 */ s32 someFlags;
|
||||
} PaddleBoatStuff; // size = 0x2C
|
||||
|
||||
typedef struct {
|
||||
/* 0x00 */ s16 unused; // Gets set to 0, but doesn't seem to have any purpose
|
||||
/* 0x02 */ // s16 compilerPadding;
|
||||
/* 0x04 */ Vec3f position;
|
||||
/* 0x10 */ Vec3f velocity;
|
||||
/* 0x1C */ u16 waypointIndex;
|
||||
/* 0x1E */ s16 actorIndex;
|
||||
/* 0x20 */ f32 speed; //
|
||||
/* 0x24 */ f32 someMultiplierTheSequel; //
|
||||
/* 0x28 */ Vec3s rotation;
|
||||
/* 0x2E */ s16 someType; //
|
||||
/**
|
||||
* Each set of flags seems to be a bit field tracking whether a given human player
|
||||
* is within a certain distance of the vehicle. Likely related to audio stuff
|
||||
* Seems to turn on/off based on player distance from the vehicle
|
||||
**/
|
||||
/* 0x30 */ s8 someFlags; //
|
||||
/* 0x31 */ s8 someFlagsTheSequel; //
|
||||
/* 0x32 */ // s16 compilerPadding2;
|
||||
} VehicleStuff; // size = 0x34
|
||||
/* 0x00 */ s16 unused; // Gets set to 0, but doesn't seem to have any purpose
|
||||
/* 0x02 */ // s16 compilerPadding;
|
||||
/* 0x04 */ Vec3f position;
|
||||
/* 0x10 */ Vec3f velocity;
|
||||
/* 0x1C */ u16 waypointIndex;
|
||||
/* 0x1E */ s16 actorIndex;
|
||||
/* 0x20 */ f32 speed; //
|
||||
/* 0x24 */ f32 someMultiplierTheSequel; //
|
||||
/* 0x28 */ Vec3s rotation;
|
||||
/* 0x2E */ s16 someType; //
|
||||
/**
|
||||
* Each set of flags seems to be a bit field tracking whether a given human player
|
||||
* is within a certain distance of the vehicle. Likely related to audio stuff
|
||||
* Seems to turn on/off based on player distance from the vehicle
|
||||
**/
|
||||
/* 0x30 */ s8 someFlags; //
|
||||
/* 0x31 */ s8 someFlagsTheSequel; //
|
||||
/* 0x32 */ // s16 compilerPadding2;
|
||||
} VehicleStuff; // size = 0x34
|
||||
|
||||
extern TrainStuff gTrainList[];
|
||||
|
||||
|
|
|
|||
|
|
@ -13,24 +13,24 @@ typedef struct {
|
|||
/**
|
||||
* These are per-path arrays that contain some information relating to waypoints
|
||||
* The arrays in D_80164550 contain X/Y/Z and track segment information
|
||||
* The arrays in D_80164560 and D_80164570 track some other X/Y/Z, but the track segment is always 0 (so, untracked/unused)
|
||||
* Its unclear how these arrays relate to each other
|
||||
* The arrays in D_80164560 and D_80164570 track some other X/Y/Z, but the track segment is always 0 (so,
|
||||
*untracked/unused) Its unclear how these arrays relate to each other
|
||||
**/
|
||||
extern TrackWaypoint *D_80164550[];
|
||||
extern TrackWaypoint *D_80164560[];
|
||||
extern TrackWaypoint *D_80164570[];
|
||||
extern TrackWaypoint* D_80164550[];
|
||||
extern TrackWaypoint* D_80164560[];
|
||||
extern TrackWaypoint* D_80164570[];
|
||||
|
||||
/**
|
||||
* Don't know what exactly these are, but like D_80164550, D_80164560, and D_80164570
|
||||
* they track something about the waypoints on a per-path basis
|
||||
**/
|
||||
// Waypoint types?
|
||||
extern s16 *D_80164580[];
|
||||
extern s16* D_80164580[];
|
||||
// Based on func_80010DBC this may be angles between waypoints
|
||||
// D_80164590[i] = atan2(waypoint_i, waypoint_i+1)?
|
||||
extern s16 *D_80164590[];
|
||||
extern s16* D_80164590[];
|
||||
// No idea. Adjacency list?
|
||||
extern s16 *D_801645A0[];
|
||||
extern s16* D_801645A0[];
|
||||
|
||||
/**
|
||||
* Certain parts of the waypoint logic will copy some path/player specific data to a temporary variable.
|
||||
|
|
@ -42,20 +42,19 @@ extern s16 sSomeNearestWaypoint;
|
|||
// Shadows values from gPathIndexByPlayerId
|
||||
extern s32 D_80163448;
|
||||
// Shadows values from D_80164560
|
||||
extern TrackWaypoint *D_801631D0;
|
||||
extern TrackWaypoint* D_801631D0;
|
||||
// Shadows values from D_80164570
|
||||
extern TrackWaypoint *D_801631D4;
|
||||
extern TrackWaypoint* D_801631D4;
|
||||
// Shadows values from D_80164580
|
||||
extern s16 *D_801631D8;
|
||||
extern s16* D_801631D8;
|
||||
// Shadows values from D_80164590
|
||||
extern s16 *D_801631DC;
|
||||
extern s16* D_801631DC;
|
||||
// Shadowd values from gWaypointCountByPathIndex
|
||||
extern u16 D_80164430;
|
||||
// Shadows values from D_80164550
|
||||
extern TrackWaypoint *D_80164490;
|
||||
extern TrackWaypoint* D_80164490;
|
||||
// Shadows values from D_801645A0
|
||||
extern s16 *D_801645E0;
|
||||
|
||||
extern s16* D_801645E0;
|
||||
|
||||
extern u16 gNearestWaypointByPlayerId[]; // D_80164438
|
||||
// Total waypoints passed by playerId?
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
Subproject commit 9babd56c2a0f9aeb419c60abb9acc13d2a154517
|
||||
Subproject commit b59bf87a625d952a14cd61b568e1a1228176be98
|
||||
|
|
@ -9,28 +9,29 @@
|
|||
* @param arg1
|
||||
* @param banana
|
||||
*/
|
||||
void render_actor_banana(Camera *camera, UNUSED Mat4 arg1, struct BananaActor *banana) {
|
||||
void render_actor_banana(Camera* camera, UNUSED Mat4 arg1, struct BananaActor* banana) {
|
||||
UNUSED s32 pad[2];
|
||||
s32 maxObjectsReached;
|
||||
Vec3s sp7C;
|
||||
Mat4 sp3C;
|
||||
|
||||
f32 temp = is_within_render_distance(camera->pos, banana->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 490000.0f);
|
||||
f32 temp = is_within_render_distance(camera->pos, banana->pos, camera->rot[1], 0, gCameraZoom[camera - camera1],
|
||||
490000.0f);
|
||||
if (temp < 0.0f) {
|
||||
actor_not_rendered(camera, (struct Actor *) banana);
|
||||
actor_not_rendered(camera, (struct Actor*) banana);
|
||||
return;
|
||||
}
|
||||
|
||||
if ((banana->pos[1] > gCourseMaxY + 800.0f)) {
|
||||
actor_not_rendered(camera, (struct Actor *) banana);
|
||||
actor_not_rendered(camera, (struct Actor*) banana);
|
||||
return;
|
||||
}
|
||||
if (banana->pos[1] < (gCourseMinY - 800.0f)) {
|
||||
actor_not_rendered(camera, (struct Actor *) banana);
|
||||
actor_not_rendered(camera, (struct Actor*) banana);
|
||||
return;
|
||||
}
|
||||
|
||||
actor_rendered(camera, (struct Actor *) banana);
|
||||
actor_rendered(camera, (struct Actor*) banana);
|
||||
|
||||
if (banana->state == 5) {
|
||||
mtxf_pos_rotation_xyz(sp3C, banana->pos, banana->rot);
|
||||
|
|
@ -42,7 +43,9 @@ void render_actor_banana(Camera *camera, UNUSED Mat4 arg1, struct BananaActor *b
|
|||
}
|
||||
|
||||
maxObjectsReached = render_set_position(sp3C, 0) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (banana->state != 5) {
|
||||
gSPDisplayList(gDisplayListHead++, &common_model_banana);
|
||||
|
|
|
|||
|
|
@ -5,14 +5,14 @@
|
|||
|
||||
/**
|
||||
* @brief Update the banana actor
|
||||
*
|
||||
* @param banana
|
||||
*
|
||||
* @param banana
|
||||
*/
|
||||
void update_actor_banana(struct BananaActor *banana) {
|
||||
void update_actor_banana(struct BananaActor* banana) {
|
||||
UNUSED f32 pad;
|
||||
Player *player;
|
||||
struct BananaActor *elderBanana;
|
||||
struct Controller *controller;
|
||||
Player* player;
|
||||
struct BananaActor* elderBanana;
|
||||
struct Controller* controller;
|
||||
Vec3f someOtherVelocity;
|
||||
Vec3f someVelocity;
|
||||
f32 temp_f0;
|
||||
|
|
@ -30,157 +30,163 @@ void update_actor_banana(struct BananaActor *banana) {
|
|||
|
||||
player = &gPlayers[banana->rot[0]];
|
||||
switch (banana->state) {
|
||||
case HELD_BANANA:
|
||||
temp_f2 = player->pos[0] - banana->pos[0];
|
||||
temp_f14 = player->pos[1] - banana->pos[1];
|
||||
temp_f16 = player->pos[2] - banana->pos[2];
|
||||
temp_f12 = sqrtf((temp_f2 * temp_f2) + (temp_f14 * temp_f14) + (temp_f16 * temp_f16)) / 10.0f;
|
||||
if (temp_f12 == 0.0f) {
|
||||
banana->pos[0] = player->pos[0] + 0.2f;
|
||||
banana->pos[1] = player->pos[1] + 0.2f;
|
||||
banana->pos[2] = player->pos[2] + 0.2f;
|
||||
} else {
|
||||
temp_f2 /= temp_f12;
|
||||
temp_f14 /= temp_f12;
|
||||
temp_f16 /= temp_f12;
|
||||
banana->pos[0] = player->pos[0] - temp_f2;
|
||||
banana->pos[1] = player->pos[1] - temp_f14 - 2.0f;
|
||||
banana->pos[2] = player->pos[2] - temp_f16;
|
||||
}
|
||||
check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]);
|
||||
func_802B4E30((struct Actor *) banana);
|
||||
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||
if (gDemoMode) {
|
||||
controller = gControllerOne;
|
||||
case HELD_BANANA:
|
||||
temp_f2 = player->pos[0] - banana->pos[0];
|
||||
temp_f14 = player->pos[1] - banana->pos[1];
|
||||
temp_f16 = player->pos[2] - banana->pos[2];
|
||||
temp_f12 = sqrtf((temp_f2 * temp_f2) + (temp_f14 * temp_f14) + (temp_f16 * temp_f16)) / 10.0f;
|
||||
if (temp_f12 == 0.0f) {
|
||||
banana->pos[0] = player->pos[0] + 0.2f;
|
||||
banana->pos[1] = player->pos[1] + 0.2f;
|
||||
banana->pos[2] = player->pos[2] + 0.2f;
|
||||
} else {
|
||||
controller = &gControllers[banana->rot[0]];
|
||||
temp_f2 /= temp_f12;
|
||||
temp_f14 /= temp_f12;
|
||||
temp_f16 /= temp_f12;
|
||||
banana->pos[0] = player->pos[0] - temp_f2;
|
||||
banana->pos[1] = player->pos[1] - temp_f14 - 2.0f;
|
||||
banana->pos[2] = player->pos[2] - temp_f16;
|
||||
}
|
||||
if ((controller->buttonDepressed & Z_TRIG) != 0) {
|
||||
controller->buttonDepressed &= ~Z_TRIG;
|
||||
banana->state = 1;
|
||||
banana->unk_04 = 0x00B4;
|
||||
player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
|
||||
func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x12));
|
||||
pad3 = controller->rawStickY;
|
||||
if ((pad3 > 30.0f) && (controller->rawStickX < 10) && (controller->rawStickX >= -9)) {
|
||||
pad3 = pad3 - ((f32) 30);
|
||||
pad3 = (pad3 / 20.0f) + 0.5f;
|
||||
if (player->unk_094 < 2.0f) {
|
||||
temp_f0 = 4.0f;
|
||||
} else {
|
||||
temp_f0 = (player->unk_094 * 0.75f) + 3.5f + pad3;
|
||||
}
|
||||
vec3f_set(someVelocity, 0, pad3, temp_f0);
|
||||
func_802B64C4(someVelocity, player->rotation[1] + player->unk_0C0);
|
||||
banana->velocity[0] = someVelocity[0];
|
||||
banana->velocity[1] = someVelocity[1];
|
||||
banana->velocity[2] = someVelocity[2];
|
||||
check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1],
|
||||
banana->pos[2]);
|
||||
func_802B4E30((struct Actor*) banana);
|
||||
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||
if (gDemoMode) {
|
||||
controller = gControllerOne;
|
||||
} else {
|
||||
banana->velocity[0] = 0;
|
||||
banana->velocity[1] = 1.5f;
|
||||
banana->velocity[2] = 0;
|
||||
controller = &gControllers[banana->rot[0]];
|
||||
}
|
||||
if ((controller->buttonDepressed & Z_TRIG) != 0) {
|
||||
controller->buttonDepressed &= ~Z_TRIG;
|
||||
banana->state = 1;
|
||||
banana->unk_04 = 0x00B4;
|
||||
player->soundEffects &= ~HOLD_BANANA_SOUND_EFFECT;
|
||||
func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x12));
|
||||
pad3 = controller->rawStickY;
|
||||
if ((pad3 > 30.0f) && (controller->rawStickX < 10) && (controller->rawStickX >= -9)) {
|
||||
pad3 = pad3 - ((f32) 30);
|
||||
pad3 = (pad3 / 20.0f) + 0.5f;
|
||||
if (player->unk_094 < 2.0f) {
|
||||
temp_f0 = 4.0f;
|
||||
} else {
|
||||
temp_f0 = (player->unk_094 * 0.75f) + 3.5f + pad3;
|
||||
}
|
||||
vec3f_set(someVelocity, 0, pad3, temp_f0);
|
||||
func_802B64C4(someVelocity, player->rotation[1] + player->unk_0C0);
|
||||
banana->velocity[0] = someVelocity[0];
|
||||
banana->velocity[1] = someVelocity[1];
|
||||
banana->velocity[2] = someVelocity[2];
|
||||
} else {
|
||||
banana->velocity[0] = 0;
|
||||
banana->velocity[1] = 1.5f;
|
||||
banana->velocity[2] = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DROPPED_BANANA:
|
||||
if (banana->unk_04 != 0) {
|
||||
break;
|
||||
case DROPPED_BANANA:
|
||||
if (banana->unk_04 != 0) {
|
||||
banana->unk_04 -= 1;
|
||||
if (banana->unk_04 == 0) {
|
||||
banana->flags &= ~0x1000;
|
||||
}
|
||||
}
|
||||
banana->pos[0] += banana->velocity[0];
|
||||
banana->pos[2] += banana->velocity[2];
|
||||
if (banana->velocity[1] > -1.0f) {
|
||||
banana->velocity[1] -= 0.15f;
|
||||
}
|
||||
banana->pos[1] += banana->velocity[1];
|
||||
if ((banana->pos[2] < (f32) gCourseMinZ) || ((f32) gCourseMaxZ < banana->pos[2]) ||
|
||||
(banana->pos[0] < (f32) gCourseMinX) || ((f32) gCourseMaxX < banana->pos[0]) ||
|
||||
(banana->pos[1] < (f32) gCourseMinY)) {
|
||||
destroy_destructable_actor((struct Actor*) banana);
|
||||
} else {
|
||||
check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1],
|
||||
banana->pos[2]);
|
||||
banana->unk30.unk34 = 1;
|
||||
if ((banana->unk30.unk34 != 0) && (banana->unk30.surfaceDistance[2] < 0.0f)) {
|
||||
someOtherVelocity[0] = -banana->unk30.orientationVector[0];
|
||||
someOtherVelocity[1] = -banana->unk30.orientationVector[1];
|
||||
someOtherVelocity[2] = -banana->unk30.orientationVector[2];
|
||||
banana->pos[0] += someOtherVelocity[0] * banana->unk30.surfaceDistance[2];
|
||||
banana->pos[1] += someOtherVelocity[1] * banana->unk30.surfaceDistance[2];
|
||||
banana->pos[2] += someOtherVelocity[2] * banana->unk30.surfaceDistance[2];
|
||||
banana->flags &= ~0x1000;
|
||||
banana->state = 4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FIRST_BANANA_BUNCH_BANANA:
|
||||
someVelocity[0] = 0.0f;
|
||||
someVelocity[1] = 0.0f;
|
||||
someVelocity[2] = -5.0f;
|
||||
func_802B64C4(someVelocity, player->rotation[1] + player->unk_0C0);
|
||||
unkX = player->pos[0] + someVelocity[0];
|
||||
unkY = player->pos[1] + someVelocity[1];
|
||||
unkZ = player->pos[2] + someVelocity[2];
|
||||
temp_f2 = unkX - banana->pos[0];
|
||||
temp_f14 = unkY - banana->pos[1];
|
||||
temp_f16 = unkZ - banana->pos[2];
|
||||
temp_f0 = sqrtf((temp_f2 * temp_f2) + (temp_f14 * temp_f14) + (temp_f16 * temp_f16));
|
||||
if (temp_f0 == 0.0f) {
|
||||
banana->pos[0] = player->pos[0] + 0.2f;
|
||||
banana->pos[1] = player->pos[1] + 0.2f;
|
||||
banana->pos[2] = player->pos[2] + 0.2f;
|
||||
} else {
|
||||
temp_f2 /= temp_f0;
|
||||
temp_f14 /= temp_f0;
|
||||
temp_f16 /= temp_f0;
|
||||
banana->pos[0] = someVelocity[0] + (unkX - temp_f2);
|
||||
banana->pos[1] = unkY - temp_f14 - 2.0f;
|
||||
banana->pos[2] = unkZ - temp_f16;
|
||||
}
|
||||
check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1],
|
||||
banana->pos[2]);
|
||||
func_802B4E30((struct Actor*) banana);
|
||||
break;
|
||||
case BANANA_BUNCH_BANANA:
|
||||
elderBanana = (struct BananaActor*) &gActorList[banana->elderIndex];
|
||||
temp_f2 = elderBanana->pos[0] - banana->pos[0];
|
||||
temp_f14 = elderBanana->pos[1] - banana->pos[1];
|
||||
temp_f16 = elderBanana->pos[2] - banana->pos[2];
|
||||
temp_f12 = sqrtf((temp_f2 * temp_f2) + (temp_f14 * temp_f14) + (temp_f16 * temp_f16)) / 5.0f;
|
||||
if (temp_f12 == 0.0f) {
|
||||
banana->pos[0] = elderBanana->pos[0] + 0.2f;
|
||||
banana->pos[1] = elderBanana->pos[1] + 0.2f;
|
||||
banana->pos[2] = elderBanana->pos[2] + 0.2f;
|
||||
} else {
|
||||
temp_f2 /= temp_f12;
|
||||
temp_f14 /= temp_f12;
|
||||
temp_f16 /= temp_f12;
|
||||
banana->pos[0] = elderBanana->pos[0] - temp_f2;
|
||||
banana->pos[1] = elderBanana->pos[1] - temp_f14 - 2.0f;
|
||||
banana->pos[2] = elderBanana->pos[2] - temp_f16;
|
||||
}
|
||||
var_f8 = banana->pos[2];
|
||||
check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1],
|
||||
banana->pos[2]);
|
||||
func_802B4E30((struct Actor*) banana);
|
||||
break;
|
||||
case DESTROYED_BANANA:
|
||||
banana->velocity[1] -= 0.3f;
|
||||
if (banana->velocity[1] < -5.0f) {
|
||||
banana->velocity[1] = -5.0f;
|
||||
}
|
||||
banana->pos[1] += banana->velocity[1];
|
||||
banana->rot[0] += 0x16C;
|
||||
banana->rot[1] -= 0x5B0;
|
||||
banana->rot[2] += 0x38E;
|
||||
banana->unk_04 -= 1;
|
||||
if (banana->unk_04 == 0) {
|
||||
banana->flags &= ~0x1000;
|
||||
destroy_actor((struct Actor*) banana);
|
||||
}
|
||||
}
|
||||
banana->pos[0] += banana->velocity[0];
|
||||
banana->pos[2] += banana->velocity[2];
|
||||
if (banana->velocity[1] > -1.0f) {
|
||||
banana->velocity[1] -= 0.15f;
|
||||
}
|
||||
banana->pos[1] += banana->velocity[1];
|
||||
if ((banana->pos[2] < (f32) gCourseMinZ) || ((f32) gCourseMaxZ < banana->pos[2]) || (banana->pos[0] < (f32) gCourseMinX) || ((f32) gCourseMaxX < banana->pos[0]) || (banana->pos[1] < (f32) gCourseMinY)) {
|
||||
destroy_destructable_actor((struct Actor *) banana);
|
||||
} else {
|
||||
check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]);
|
||||
banana->unk30.unk34 = 1;
|
||||
if ((banana->unk30.unk34 != 0) && (banana->unk30.surfaceDistance[2] < 0.0f)) {
|
||||
someOtherVelocity[0] = -banana->unk30.orientationVector[0];
|
||||
someOtherVelocity[1] = -banana->unk30.orientationVector[1];
|
||||
someOtherVelocity[2] = -banana->unk30.orientationVector[2];
|
||||
banana->pos[0] += someOtherVelocity[0] * banana->unk30.surfaceDistance[2];
|
||||
banana->pos[1] += someOtherVelocity[1] * banana->unk30.surfaceDistance[2];
|
||||
banana->pos[2] += someOtherVelocity[2] * banana->unk30.surfaceDistance[2];
|
||||
banana->flags &= ~0x1000;
|
||||
banana->state = 4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case FIRST_BANANA_BUNCH_BANANA:
|
||||
someVelocity[0] = 0.0f;
|
||||
someVelocity[1] = 0.0f;
|
||||
someVelocity[2] = -5.0f;
|
||||
func_802B64C4(someVelocity, player->rotation[1] + player->unk_0C0);
|
||||
unkX = player->pos[0] + someVelocity[0];
|
||||
unkY = player->pos[1] + someVelocity[1];
|
||||
unkZ = player->pos[2] + someVelocity[2];
|
||||
temp_f2 = unkX - banana->pos[0];
|
||||
temp_f14 = unkY - banana->pos[1];
|
||||
temp_f16 = unkZ - banana->pos[2];
|
||||
temp_f0 = sqrtf((temp_f2 * temp_f2) + (temp_f14 * temp_f14) + (temp_f16 * temp_f16));
|
||||
if (temp_f0 == 0.0f) {
|
||||
banana->pos[0] = player->pos[0] + 0.2f;
|
||||
banana->pos[1] = player->pos[1] + 0.2f;
|
||||
banana->pos[2] = player->pos[2] + 0.2f;
|
||||
} else {
|
||||
temp_f2 /= temp_f0;
|
||||
temp_f14 /= temp_f0;
|
||||
temp_f16 /= temp_f0;
|
||||
banana->pos[0] = someVelocity[0] + (unkX - temp_f2);
|
||||
banana->pos[1] = unkY - temp_f14 - 2.0f;
|
||||
banana->pos[2] = unkZ - temp_f16;
|
||||
}
|
||||
check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]);
|
||||
func_802B4E30((struct Actor *) banana);
|
||||
break;
|
||||
case BANANA_BUNCH_BANANA:
|
||||
elderBanana = (struct BananaActor*)&gActorList[banana->elderIndex];
|
||||
temp_f2 = elderBanana->pos[0] - banana->pos[0];
|
||||
temp_f14 = elderBanana->pos[1] - banana->pos[1];
|
||||
temp_f16 = elderBanana->pos[2] - banana->pos[2];
|
||||
temp_f12 = sqrtf((temp_f2 * temp_f2) + (temp_f14 * temp_f14) + (temp_f16 * temp_f16)) / 5.0f;
|
||||
if (temp_f12 == 0.0f) {
|
||||
banana->pos[0] = elderBanana->pos[0] + 0.2f;
|
||||
banana->pos[1] = elderBanana->pos[1] + 0.2f;
|
||||
banana->pos[2] = elderBanana->pos[2] + 0.2f;
|
||||
} else {
|
||||
temp_f2 /= temp_f12;
|
||||
temp_f14 /= temp_f12;
|
||||
temp_f16 /= temp_f12;
|
||||
banana->pos[0] = elderBanana->pos[0] - temp_f2;
|
||||
banana->pos[1] = elderBanana->pos[1] - temp_f14 - 2.0f;
|
||||
banana->pos[2] = elderBanana->pos[2] - temp_f16;
|
||||
}
|
||||
var_f8 = banana->pos[2];
|
||||
check_bounding_collision(&banana->unk30, banana->boundingBoxSize + 1.0f, banana->pos[0], banana->pos[1], banana->pos[2]);
|
||||
func_802B4E30((struct Actor *) banana);
|
||||
break;
|
||||
case DESTROYED_BANANA:
|
||||
banana->velocity[1] -= 0.3f;
|
||||
if (banana->velocity[1] < -5.0f) {
|
||||
banana->velocity[1] = -5.0f;
|
||||
}
|
||||
banana->pos[1] += banana->velocity[1];
|
||||
banana->rot[0] += 0x16C;
|
||||
banana->rot[1] -= 0x5B0;
|
||||
banana->rot[2] += 0x38E;
|
||||
banana->unk_04 -= 1;
|
||||
if (banana->unk_04 == 0) {
|
||||
destroy_actor((struct Actor *) banana);
|
||||
}
|
||||
break;
|
||||
case BANANA_ON_GROUND:
|
||||
banana->flags |= 0xC000;
|
||||
banana->flags &= ~0x1000;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
case BANANA_ON_GROUND:
|
||||
banana->flags |= 0xC000;
|
||||
banana->flags &= ~0x1000;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@
|
|||
* @param matrix
|
||||
* @param shell
|
||||
*/
|
||||
void render_actor_red_shell(Camera *camera, Mat4 matrix, struct ShellActor *shell) {
|
||||
void render_actor_red_shell(Camera* camera, Mat4 matrix, struct ShellActor* shell) {
|
||||
gDPLoadTLUT_pal256(gDisplayListHead++, &gTLUTRedShell); // set texture
|
||||
render_actor_shell(camera, matrix, shell);
|
||||
}
|
||||
|
|
@ -20,7 +20,7 @@ void render_actor_red_shell(Camera *camera, Mat4 matrix, struct ShellActor *shel
|
|||
* @param matrix
|
||||
* @param shell
|
||||
*/
|
||||
void render_actor_blue_shell(Camera *camera, Mat4 matrix, struct ShellActor *shell) {
|
||||
void render_actor_blue_shell(Camera* camera, Mat4 matrix, struct ShellActor* shell) {
|
||||
gDPLoadTLUT_pal256(gDisplayListHead++, common_tlut_blue_shell); // set texture
|
||||
render_actor_shell(camera, matrix, shell);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
#include <actors_extended.h>
|
||||
#include <code_800029B0.h>
|
||||
|
||||
void func_802B3B44(struct ShellActor *shell) {
|
||||
void func_802B3B44(struct ShellActor* shell) {
|
||||
u16 currentWaypoint;
|
||||
u16 nextWaypoint;
|
||||
f32 temp_f0;
|
||||
|
|
@ -29,7 +29,7 @@ void func_802B3B44(struct ShellActor *shell) {
|
|||
Vec3f origPos;
|
||||
|
||||
currentWaypoint = shell->pathIndex;
|
||||
temp_f2 = D_80164490[currentWaypoint].posX;
|
||||
temp_f2 = D_80164490[currentWaypoint].posX;
|
||||
temp_f12 = D_80164490[currentWaypoint].posY;
|
||||
temp_f28 = D_80164490[currentWaypoint].posZ;
|
||||
nextWaypoint = currentWaypoint + 1;
|
||||
|
|
@ -38,18 +38,18 @@ void func_802B3B44(struct ShellActor *shell) {
|
|||
nextWaypoint -= D_80164430;
|
||||
}
|
||||
|
||||
temp_f20 = temp_f2 - shell->pos[0];
|
||||
temp_f20 = temp_f2 - shell->pos[0];
|
||||
temp_f22 = temp_f12 - shell->pos[1];
|
||||
temp_f24 = temp_f28 - shell->pos[2];
|
||||
temp_f0 = (temp_f20 * temp_f20) + (temp_f22 * temp_f22) + (temp_f24 * temp_f24);
|
||||
if (temp_f0 > 400.0f) {
|
||||
temp_f18_3 = D_80164490[nextWaypoint].posX;
|
||||
temp_f16_3 = D_80164490[nextWaypoint].posY;
|
||||
temp_f26 = D_80164490[nextWaypoint].posZ;
|
||||
temp_f26 = D_80164490[nextWaypoint].posZ;
|
||||
|
||||
temp_f12_0 = temp_f18_3 - shell->pos[0];
|
||||
temp_f12_1 = temp_f16_3 - shell->pos[1];
|
||||
temp_f12_2 = temp_f26 - shell->pos[2];
|
||||
temp_f12_2 = temp_f26 - shell->pos[2];
|
||||
|
||||
temp_f0_3 = (temp_f12_0 * temp_f12_0) + (temp_f12_1 * temp_f12_1) + (temp_f12_2 * temp_f12_2);
|
||||
if (temp_f0_3 < temp_f0) {
|
||||
|
|
@ -85,8 +85,9 @@ void func_802B3B44(struct ShellActor *shell) {
|
|||
shell->pos[0] += temp_f12_3;
|
||||
shell->pos[1] += temp_f14_2;
|
||||
shell->pos[2] += temp_f16_2;
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]);
|
||||
func_802B4E30((struct Actor *) shell);
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0],
|
||||
origPos[1], origPos[2]);
|
||||
func_802B4E30((struct Actor*) shell);
|
||||
}
|
||||
} else {
|
||||
if (temp_f0 > 5.0f) {
|
||||
|
|
@ -97,20 +98,20 @@ void func_802B3B44(struct ShellActor *shell) {
|
|||
} else {
|
||||
temp_f18_3 = D_80164490[nextWaypoint].posX;
|
||||
temp_f16_3 = D_80164490[nextWaypoint].posY;
|
||||
temp_f26 = D_80164490[nextWaypoint].posZ;
|
||||
temp_f26 = D_80164490[nextWaypoint].posZ;
|
||||
|
||||
shell->pos[0] = (temp_f2 + temp_f18_3) * 0.5f;
|
||||
shell->pos[0] = (temp_f2 + temp_f18_3) * 0.5f;
|
||||
shell->pos[1] = ((temp_f12 + temp_f16_3) * 0.5f) + shell->boundingBoxSize;
|
||||
shell->pos[2] = (temp_f28 + temp_f26) * 0.5f;
|
||||
shell->pos[2] = (temp_f28 + temp_f26) * 0.5f;
|
||||
|
||||
shell->velocity[0] = (temp_f18_3 - temp_f2) * 0.5f;
|
||||
shell->velocity[0] = (temp_f18_3 - temp_f2) * 0.5f;
|
||||
shell->velocity[1] = (temp_f16_3 - temp_f12) * 0.5f;
|
||||
shell->velocity[2] = (temp_f26 - temp_f28) * 0.5f;
|
||||
shell->velocity[2] = (temp_f26 - temp_f28) * 0.5f;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void func_802B3E7C(struct ShellActor *shell, Player *player) {
|
||||
void func_802B3E7C(struct ShellActor* shell, Player* player) {
|
||||
f32 x_velocity;
|
||||
f32 z_velocity;
|
||||
f32 xz_dist;
|
||||
|
|
@ -140,10 +141,11 @@ void func_802B3E7C(struct ShellActor *shell, Player *player) {
|
|||
shell->velocity[2] = z_velocity;
|
||||
|
||||
if (player->effects & BOO_EFFECT) {
|
||||
destroy_destructable_actor((struct Actor *) shell);
|
||||
destroy_destructable_actor((struct Actor*) shell);
|
||||
} else {
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], newPosition[0], newPosition[1], newPosition[2]);
|
||||
func_802B4E30((struct Actor *) shell);
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], newPosition[0],
|
||||
newPosition[1], newPosition[2]);
|
||||
func_802B4E30((struct Actor*) shell);
|
||||
func_802B4104(shell);
|
||||
}
|
||||
}
|
||||
|
|
@ -151,9 +153,9 @@ void func_802B3E7C(struct ShellActor *shell, Player *player) {
|
|||
/**
|
||||
* Only used in Battle mode
|
||||
* Likely trying to find the nearest player that is not the shell's owner and is not dead
|
||||
**/
|
||||
s16 func_802B3FD0(Player *owner, struct ShellActor *shell) {
|
||||
Player *player;
|
||||
**/
|
||||
s16 func_802B3FD0(Player* owner, struct ShellActor* shell) {
|
||||
Player* player;
|
||||
s32 playerIndex;
|
||||
f32 playerToShellDistance;
|
||||
s16 playerId = -1;
|
||||
|
|
@ -161,28 +163,36 @@ s16 func_802B3FD0(Player *owner, struct ShellActor *shell) {
|
|||
|
||||
for (playerIndex = 0; playerIndex < 4; playerIndex++) {
|
||||
player = &gPlayers[playerIndex];
|
||||
if ((player->type & PLAYER_EXISTS) == 0) {continue;}
|
||||
if (player == owner) {continue; }
|
||||
if (gPlayerBalloonCount[playerIndex] < 0) { continue; }
|
||||
// func_802B51E8 is not quite a 3D distance function, it doubles (rather than squares) the Z difference of the positions
|
||||
playerToShellDistance = func_802B51E8(player->pos, shell->pos);
|
||||
if (playerToShellDistance < smallestDistance) {
|
||||
smallestDistance = playerToShellDistance;
|
||||
playerId = player - gPlayerOne;
|
||||
}
|
||||
|
||||
if ((player->type & PLAYER_EXISTS) == 0) {
|
||||
continue;
|
||||
}
|
||||
if (player == owner) {
|
||||
continue;
|
||||
}
|
||||
if (gPlayerBalloonCount[playerIndex] < 0) {
|
||||
continue;
|
||||
}
|
||||
// func_802B51E8 is not quite a 3D distance function, it doubles (rather than squares) the Z difference of the
|
||||
// positions
|
||||
playerToShellDistance = func_802B51E8(player->pos, shell->pos);
|
||||
if (playerToShellDistance < smallestDistance) {
|
||||
smallestDistance = playerToShellDistance;
|
||||
playerId = player - gPlayerOne;
|
||||
}
|
||||
}
|
||||
|
||||
return playerId;
|
||||
}
|
||||
|
||||
void func_802B4104(struct ShellActor *shell) {
|
||||
if ((shell->unk30.surfaceDistance[0] < 0.0f) && ((shell->unk30.unk48[1] < 0.25f) || (shell->unk30.unk48[1] > -0.25f))) {
|
||||
destroy_destructable_actor((struct Actor *) shell);
|
||||
void func_802B4104(struct ShellActor* shell) {
|
||||
if ((shell->unk30.surfaceDistance[0] < 0.0f) &&
|
||||
((shell->unk30.unk48[1] < 0.25f) || (shell->unk30.unk48[1] > -0.25f))) {
|
||||
destroy_destructable_actor((struct Actor*) shell);
|
||||
func_800C98B8(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x54));
|
||||
shell->flags |= 0x80;
|
||||
} else if ((shell->unk30.surfaceDistance[1] < 0.0f) && ((shell->unk30.unk54[1] < 0.25f) || (shell->unk30.unk54[1] < -0.25f))) {
|
||||
destroy_destructable_actor((struct Actor *) shell);
|
||||
} else if ((shell->unk30.surfaceDistance[1] < 0.0f) &&
|
||||
((shell->unk30.unk54[1] < 0.25f) || (shell->unk30.unk54[1] < -0.25f))) {
|
||||
destroy_destructable_actor((struct Actor*) shell);
|
||||
func_800C98B8(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x54));
|
||||
shell->flags |= 0x80;
|
||||
}
|
||||
|
|
@ -190,20 +200,20 @@ void func_802B4104(struct ShellActor *shell) {
|
|||
|
||||
/**
|
||||
* @brief Update the red and blue shell actors
|
||||
*
|
||||
* @param shell
|
||||
*
|
||||
* @param shell
|
||||
*/
|
||||
void update_actor_red_blue_shell(struct ShellActor *shell) {
|
||||
void update_actor_red_blue_shell(struct ShellActor* shell) {
|
||||
UNUSED f32 pad9;
|
||||
Player *player;
|
||||
Player* player;
|
||||
f32 height;
|
||||
UNUSED f32 temp_f14;
|
||||
f32 temp_f2;
|
||||
s16 temp_v0;
|
||||
UNUSED s16 pad3;
|
||||
Vec3f somePosVel;
|
||||
struct Controller *controller;
|
||||
TripleShellParent *parent;
|
||||
struct Controller* controller;
|
||||
TripleShellParent* parent;
|
||||
UNUSED f32 pad0;
|
||||
UNUSED f32 pad1;
|
||||
UNUSED f32 pad2;
|
||||
|
|
@ -227,241 +237,246 @@ void update_actor_red_blue_shell(struct ShellActor *shell) {
|
|||
pad0 = shell->pos[2];
|
||||
pad2 = shell->pos[1];
|
||||
pad13 = shell->type;
|
||||
if ((pad0 < (f32) gCourseMinZ) || ((f32) gCourseMaxZ < pad0) || (pad1 < (f32) gCourseMinX) || ((f32) gCourseMaxX < pad1) || (pad2 < (f32) gCourseMinY)) {
|
||||
destroy_destructable_actor((struct Actor *) shell);
|
||||
if ((pad0 < (f32) gCourseMinZ) || ((f32) gCourseMaxZ < pad0) || (pad1 < (f32) gCourseMinX) ||
|
||||
((f32) gCourseMaxX < pad1) || (pad2 < (f32) gCourseMinY)) {
|
||||
destroy_destructable_actor((struct Actor*) shell);
|
||||
}
|
||||
|
||||
shell->rotVelocity += 0x71C;
|
||||
switch (shell->state) {
|
||||
case HELD_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
copy_collision(&player->collision, &shell->unk30);
|
||||
somePosVel[0] = 0.0f;
|
||||
somePosVel[1] = player->boundingBoxSize;
|
||||
somePosVel[2] = -(player->boundingBoxSize + shell->boundingBoxSize + 2.0f);
|
||||
mtxf_translate_vec3f_mat3(somePosVel, player->orientationMatrix);
|
||||
shell->pos[0] = player->pos[0] + somePosVel[0];
|
||||
pad7 = player->pos[1] - somePosVel[1];
|
||||
shell->pos[2] = player->pos[2] + somePosVel[2];
|
||||
height = calculate_surface_height(shell->pos[0], pad7, shell->pos[2], player->collision.meshIndexZX);
|
||||
temp_f2 = pad7 - height;
|
||||
|
||||
if ((temp_f2 < 5.0f) && (temp_f2 > -5.0f)) {
|
||||
shell->pos[1] = shell->boundingBoxSize + height;
|
||||
} else {
|
||||
shell->pos[1] = pad7;
|
||||
}
|
||||
|
||||
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||
if (gDemoMode) {
|
||||
controller = gControllerOne;
|
||||
} else {
|
||||
controller = &gControllers[shell->playerId];
|
||||
}
|
||||
} else {
|
||||
controller = gControllerOne;
|
||||
}
|
||||
|
||||
if ((controller->buttonDepressed & Z_TRIG) != 0) {
|
||||
controller->buttonDepressed &= ~Z_TRIG;
|
||||
shell->state = RELEASED_SHELL;
|
||||
if (player->unk_0C0 > 0) {
|
||||
shell->rotAngle = 0x78E3;
|
||||
} else {
|
||||
shell->rotAngle = -0x78E4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RELEASED_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
if (shell->rotAngle > 0) {
|
||||
shell->rotAngle -= 0x71C;
|
||||
if (shell->rotAngle < 0) {
|
||||
shell->state = MOVING_SHELL;
|
||||
func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
|
||||
func_800C90F4(shell->playerId, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
if (pad13 == ACTOR_RED_SHELL) {
|
||||
add_red_shell_in_unexpired_actor_list((struct Actor*)shell - gActorList);
|
||||
} else {
|
||||
add_blue_shell_in_unexpired_actor_list((struct Actor*)shell - gActorList);
|
||||
func_800C9D80(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x08));
|
||||
}
|
||||
}
|
||||
} else {
|
||||
shell->rotAngle += 0x71C;
|
||||
if (shell->rotAngle > 0) {
|
||||
shell->state = MOVING_SHELL;
|
||||
func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
|
||||
func_800C90F4(shell->playerId, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
if (pad13 == ACTOR_RED_SHELL) {
|
||||
add_red_shell_in_unexpired_actor_list((struct Actor*)shell - gActorList);
|
||||
} else {
|
||||
add_blue_shell_in_unexpired_actor_list((struct Actor*)shell - gActorList);
|
||||
func_800C9D80(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x08));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shell->state == MOVING_SHELL) {
|
||||
shell->someTimer = 0x001E;
|
||||
height = 8.0f;
|
||||
if (player->unk_094 > 8.0f) {
|
||||
height = player->unk_094 * 1.2f;
|
||||
}
|
||||
case HELD_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
copy_collision(&player->collision, &shell->unk30);
|
||||
somePosVel[0] = 0.0f;
|
||||
somePosVel[1] = 0.0f;
|
||||
somePosVel[2] = height;
|
||||
func_802B64C4(somePosVel, (s16) (player->rotation[1] + player->unk_0C0));
|
||||
shell->velocity[0] = somePosVel[0];
|
||||
shell->velocity[1] = somePosVel[1];
|
||||
shell->velocity[2] = somePosVel[2];
|
||||
} else {
|
||||
somePosVel[0] = sins(shell->rotAngle) * 8.0f;
|
||||
somePosVel[1] = shell->boundingBoxSize - player->boundingBoxSize;
|
||||
somePosVel[2] = coss(shell->rotAngle) * 8.0f;
|
||||
somePosVel[1] = player->boundingBoxSize;
|
||||
somePosVel[2] = -(player->boundingBoxSize + shell->boundingBoxSize + 2.0f);
|
||||
mtxf_translate_vec3f_mat3(somePosVel, player->orientationMatrix);
|
||||
shell->pos[0] = player->pos[0] + somePosVel[0];
|
||||
shell->pos[1] = player->pos[1] + somePosVel[1];
|
||||
pad7 = player->pos[1] - somePosVel[1];
|
||||
shell->pos[2] = player->pos[2] + somePosVel[2];
|
||||
}
|
||||
break;
|
||||
case MOVING_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
shell->someTimer -= 1;
|
||||
if (shell->someTimer == 0) {
|
||||
shell->flags &= 0xEFFF;
|
||||
if (shell->type == ACTOR_BLUE_SPINY_SHELL) {
|
||||
shell->targetPlayer = gPlayerPositionLUT[0];
|
||||
shell->state = BLUE_SHELL_LOCK_ON;
|
||||
shell->shellId = 1000.0f;
|
||||
temp_v0 = gNearestWaypointByPlayerId[player - gPlayerOne] + 8;
|
||||
if ((s32) D_80164430 < temp_v0) {
|
||||
temp_v0 -= D_80164430;
|
||||
}
|
||||
shell->pathIndex = temp_v0;
|
||||
} else if (gModeSelection == BATTLE) {
|
||||
shell->shellId = 1000.0f;
|
||||
shell->targetPlayer = func_802B3FD0(player, shell);
|
||||
if (shell->targetPlayer < 0) {
|
||||
shell->flags = 0x8000;
|
||||
shell->velocity[1] = 3.0f;
|
||||
shell->pathIndex = 0;
|
||||
shell->someTimer = 0x003C;
|
||||
shell->state = DESTROYED_SHELL;
|
||||
height = calculate_surface_height(shell->pos[0], pad7, shell->pos[2], player->collision.meshIndexZX);
|
||||
temp_f2 = pad7 - height;
|
||||
|
||||
if ((temp_f2 < 5.0f) && (temp_f2 > -5.0f)) {
|
||||
shell->pos[1] = shell->boundingBoxSize + height;
|
||||
} else {
|
||||
shell->pos[1] = pad7;
|
||||
}
|
||||
|
||||
if ((player->type & PLAYER_HUMAN) != 0) {
|
||||
if (gDemoMode) {
|
||||
controller = gControllerOne;
|
||||
} else {
|
||||
shell->state = RED_SHELL_LOCK_ON;
|
||||
controller = &gControllers[shell->playerId];
|
||||
}
|
||||
} else {
|
||||
if (player->currentRank == 0) {
|
||||
shell->state = TRIPLE_GREEN_SHELL;
|
||||
shell->someTimer = 0x0258;
|
||||
temp_v0 = gNearestWaypointByPlayerId[player - gPlayerOne] + 8;
|
||||
if ((s32) D_80164430 < temp_v0) {
|
||||
temp_v0 -= D_80164430;
|
||||
controller = gControllerOne;
|
||||
}
|
||||
|
||||
if ((controller->buttonDepressed & Z_TRIG) != 0) {
|
||||
controller->buttonDepressed &= ~Z_TRIG;
|
||||
shell->state = RELEASED_SHELL;
|
||||
if (player->unk_0C0 > 0) {
|
||||
shell->rotAngle = 0x78E3;
|
||||
} else {
|
||||
shell->rotAngle = -0x78E4;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case RELEASED_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
if (shell->rotAngle > 0) {
|
||||
shell->rotAngle -= 0x71C;
|
||||
if (shell->rotAngle < 0) {
|
||||
shell->state = MOVING_SHELL;
|
||||
func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
|
||||
func_800C90F4(shell->playerId,
|
||||
(player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
if (pad13 == ACTOR_RED_SHELL) {
|
||||
add_red_shell_in_unexpired_actor_list((struct Actor*) shell - gActorList);
|
||||
} else {
|
||||
add_blue_shell_in_unexpired_actor_list((struct Actor*) shell - gActorList);
|
||||
func_800C9D80(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x08));
|
||||
}
|
||||
shell->pathIndex = temp_v0;
|
||||
} else if (player->currentRank >= 5) {
|
||||
shell->state = GREEN_SHELL_HIT_A_RACER;
|
||||
}
|
||||
} else {
|
||||
shell->rotAngle += 0x71C;
|
||||
if (shell->rotAngle > 0) {
|
||||
shell->state = MOVING_SHELL;
|
||||
func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
|
||||
func_800C90F4(shell->playerId,
|
||||
(player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
if (pad13 == ACTOR_RED_SHELL) {
|
||||
add_red_shell_in_unexpired_actor_list((struct Actor*) shell - gActorList);
|
||||
} else {
|
||||
add_blue_shell_in_unexpired_actor_list((struct Actor*) shell - gActorList);
|
||||
func_800C9D80(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x08));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (shell->state == MOVING_SHELL) {
|
||||
shell->someTimer = 0x001E;
|
||||
height = 8.0f;
|
||||
if (player->unk_094 > 8.0f) {
|
||||
height = player->unk_094 * 1.2f;
|
||||
}
|
||||
somePosVel[0] = 0.0f;
|
||||
somePosVel[1] = 0.0f;
|
||||
somePosVel[2] = height;
|
||||
func_802B64C4(somePosVel, (s16) (player->rotation[1] + player->unk_0C0));
|
||||
shell->velocity[0] = somePosVel[0];
|
||||
shell->velocity[1] = somePosVel[1];
|
||||
shell->velocity[2] = somePosVel[2];
|
||||
} else {
|
||||
somePosVel[0] = sins(shell->rotAngle) * 8.0f;
|
||||
somePosVel[1] = shell->boundingBoxSize - player->boundingBoxSize;
|
||||
somePosVel[2] = coss(shell->rotAngle) * 8.0f;
|
||||
mtxf_translate_vec3f_mat3(somePosVel, player->orientationMatrix);
|
||||
shell->pos[0] = player->pos[0] + somePosVel[0];
|
||||
shell->pos[1] = player->pos[1] + somePosVel[1];
|
||||
shell->pos[2] = player->pos[2] + somePosVel[2];
|
||||
}
|
||||
break;
|
||||
case MOVING_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
shell->someTimer -= 1;
|
||||
if (shell->someTimer == 0) {
|
||||
shell->flags &= 0xEFFF;
|
||||
if (shell->type == ACTOR_BLUE_SPINY_SHELL) {
|
||||
shell->targetPlayer = gPlayerPositionLUT[0];
|
||||
shell->state = BLUE_SHELL_LOCK_ON;
|
||||
shell->shellId = 1000.0f;
|
||||
temp_v0 = gNearestWaypointByPlayerId[player - gPlayerOne] + 8;
|
||||
if ((s32) D_80164430 < temp_v0) {
|
||||
temp_v0 -= D_80164430;
|
||||
}
|
||||
shell->pathIndex = temp_v0;
|
||||
shell->targetPlayer = gPlayerPositionLUT[player->currentRank - 1];
|
||||
} else {
|
||||
shell->state = RED_SHELL_LOCK_ON;
|
||||
} else if (gModeSelection == BATTLE) {
|
||||
shell->shellId = 1000.0f;
|
||||
shell->targetPlayer = gPlayerPositionLUT[player->currentRank - 1];
|
||||
shell->targetPlayer = func_802B3FD0(player, shell);
|
||||
if (shell->targetPlayer < 0) {
|
||||
shell->flags = 0x8000;
|
||||
shell->velocity[1] = 3.0f;
|
||||
shell->pathIndex = 0;
|
||||
shell->someTimer = 0x003C;
|
||||
shell->state = DESTROYED_SHELL;
|
||||
} else {
|
||||
shell->state = RED_SHELL_LOCK_ON;
|
||||
}
|
||||
} else {
|
||||
if (player->currentRank == 0) {
|
||||
shell->state = TRIPLE_GREEN_SHELL;
|
||||
shell->someTimer = 0x0258;
|
||||
temp_v0 = gNearestWaypointByPlayerId[player - gPlayerOne] + 8;
|
||||
if ((s32) D_80164430 < temp_v0) {
|
||||
temp_v0 -= D_80164430;
|
||||
}
|
||||
shell->pathIndex = temp_v0;
|
||||
} else if (player->currentRank >= 5) {
|
||||
shell->state = GREEN_SHELL_HIT_A_RACER;
|
||||
shell->shellId = 1000.0f;
|
||||
temp_v0 = gNearestWaypointByPlayerId[player - gPlayerOne] + 8;
|
||||
if ((s32) D_80164430 < temp_v0) {
|
||||
temp_v0 -= D_80164430;
|
||||
}
|
||||
shell->pathIndex = temp_v0;
|
||||
shell->targetPlayer = gPlayerPositionLUT[player->currentRank - 1];
|
||||
} else {
|
||||
shell->state = RED_SHELL_LOCK_ON;
|
||||
shell->shellId = 1000.0f;
|
||||
shell->targetPlayer = gPlayerPositionLUT[player->currentRank - 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
shell->velocity[1] -= 0.5;
|
||||
if (shell->velocity[1] < -2.0f) {
|
||||
shell->velocity[1] = -2.0f;
|
||||
}
|
||||
origPos[0] = shell->pos[0];
|
||||
origPos[1] = shell->pos[1];
|
||||
origPos[2] = shell->pos[2];
|
||||
shell->pos[0] += shell->velocity[0];
|
||||
shell->pos[1] += shell->velocity[1];
|
||||
shell->pos[2] += shell->velocity[2];
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]);
|
||||
func_802B4E30((struct Actor *) shell);
|
||||
func_802B4104(shell);
|
||||
break;
|
||||
case RED_SHELL_LOCK_ON:
|
||||
func_802B3E7C(shell, &gPlayers[shell->targetPlayer]);
|
||||
break;
|
||||
case TRIPLE_GREEN_SHELL:
|
||||
func_802B3B44(shell);
|
||||
if (shell->someTimer == 0) {
|
||||
if ((shell->flags & 0xF) == 0) {
|
||||
destroy_destructable_actor((struct Actor *) shell);
|
||||
} else {
|
||||
shell->someTimer -= 1;
|
||||
shell->velocity[1] -= 0.5;
|
||||
if (shell->velocity[1] < -2.0f) {
|
||||
shell->velocity[1] = -2.0f;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GREEN_SHELL_HIT_A_RACER:
|
||||
func_802B3B44(shell);
|
||||
player = &gPlayers[shell->targetPlayer];
|
||||
height = player->pos[0];
|
||||
height -= shell->pos[0];
|
||||
temp_f2 = player->pos[2];
|
||||
temp_f2 -= shell->pos[2];
|
||||
if (((height * height) + (temp_f2 * temp_f2)) < 40000.0f) {
|
||||
shell->state = RED_SHELL_LOCK_ON;
|
||||
}
|
||||
break;
|
||||
case TRIPLE_RED_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
parent = (TripleShellParent *) &gActorList[shell->parentIndex];
|
||||
if (parent->type != ACTOR_TRIPLE_RED_SHELL) {
|
||||
destroy_destructable_actor((struct Actor *) shell);
|
||||
} else {
|
||||
shell->rotAngle += parent->rotVelocity;
|
||||
somePosVel[0] = sins(shell->rotAngle) * 8.0f;
|
||||
somePosVel[1] = shell->boundingBoxSize - player->boundingBoxSize;
|
||||
somePosVel[2] = coss(shell->rotAngle) * 8.0f;
|
||||
mtxf_translate_vec3f_mat3(somePosVel, player->orientationMatrix);
|
||||
origPos[0] = shell->pos[0];
|
||||
origPos[1] = shell->pos[1];
|
||||
origPos[2] = shell->pos[2];
|
||||
shell->pos[0] = player->pos[0] + somePosVel[0];
|
||||
shell->pos[1] = player->pos[1] + somePosVel[1];
|
||||
shell->pos[2] = player->pos[2] + somePosVel[2];
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0], origPos[1], origPos[2]);
|
||||
func_802B4E30((struct Actor *) shell);
|
||||
}
|
||||
break;
|
||||
case DESTROYED_SHELL:
|
||||
shell->velocity[1] -= 0.3f;
|
||||
if (shell->velocity[1] < -5.0f) {
|
||||
shell->velocity[1] = -5.0f;
|
||||
}
|
||||
shell->rotAngle += 0x5B0;
|
||||
shell->someTimer -= 1;
|
||||
shell->pos[1] += shell->velocity[1];
|
||||
if (shell->someTimer == 0) {
|
||||
destroy_actor((struct Actor *) shell);
|
||||
}
|
||||
break;
|
||||
case BLUE_SHELL_LOCK_ON:
|
||||
func_802B3B44(shell);
|
||||
shell->targetPlayer = gPlayerPositionLUT[0];
|
||||
player = &gPlayers[gPlayerPositionLUT[0]];
|
||||
height = player->pos[0];
|
||||
height -= shell->pos[0];
|
||||
temp_f2 = player->pos[2];
|
||||
temp_f2 -= shell->pos[2];
|
||||
if (((height * height) + (temp_f2 * temp_f2)) < 40000.0f) {
|
||||
shell->state = BLUE_SHELL_TARGET_ELIMINATED;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
func_802B3E7C(shell, &gPlayers[shell->targetPlayer]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
shell->pos[0] += shell->velocity[0];
|
||||
shell->pos[1] += shell->velocity[1];
|
||||
shell->pos[2] += shell->velocity[2];
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0],
|
||||
origPos[1], origPos[2]);
|
||||
func_802B4E30((struct Actor*) shell);
|
||||
func_802B4104(shell);
|
||||
break;
|
||||
case RED_SHELL_LOCK_ON:
|
||||
func_802B3E7C(shell, &gPlayers[shell->targetPlayer]);
|
||||
break;
|
||||
case TRIPLE_GREEN_SHELL:
|
||||
func_802B3B44(shell);
|
||||
if (shell->someTimer == 0) {
|
||||
if ((shell->flags & 0xF) == 0) {
|
||||
destroy_destructable_actor((struct Actor*) shell);
|
||||
} else {
|
||||
shell->someTimer -= 1;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case GREEN_SHELL_HIT_A_RACER:
|
||||
func_802B3B44(shell);
|
||||
player = &gPlayers[shell->targetPlayer];
|
||||
height = player->pos[0];
|
||||
height -= shell->pos[0];
|
||||
temp_f2 = player->pos[2];
|
||||
temp_f2 -= shell->pos[2];
|
||||
if (((height * height) + (temp_f2 * temp_f2)) < 40000.0f) {
|
||||
shell->state = RED_SHELL_LOCK_ON;
|
||||
}
|
||||
break;
|
||||
case TRIPLE_RED_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
parent = (TripleShellParent*) &gActorList[shell->parentIndex];
|
||||
if (parent->type != ACTOR_TRIPLE_RED_SHELL) {
|
||||
destroy_destructable_actor((struct Actor*) shell);
|
||||
} else {
|
||||
shell->rotAngle += parent->rotVelocity;
|
||||
somePosVel[0] = sins(shell->rotAngle) * 8.0f;
|
||||
somePosVel[1] = shell->boundingBoxSize - player->boundingBoxSize;
|
||||
somePosVel[2] = coss(shell->rotAngle) * 8.0f;
|
||||
mtxf_translate_vec3f_mat3(somePosVel, player->orientationMatrix);
|
||||
origPos[0] = shell->pos[0];
|
||||
origPos[1] = shell->pos[1];
|
||||
origPos[2] = shell->pos[2];
|
||||
shell->pos[0] = player->pos[0] + somePosVel[0];
|
||||
shell->pos[1] = player->pos[1] + somePosVel[1];
|
||||
shell->pos[2] = player->pos[2] + somePosVel[2];
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], origPos[0],
|
||||
origPos[1], origPos[2]);
|
||||
func_802B4E30((struct Actor*) shell);
|
||||
}
|
||||
break;
|
||||
case DESTROYED_SHELL:
|
||||
shell->velocity[1] -= 0.3f;
|
||||
if (shell->velocity[1] < -5.0f) {
|
||||
shell->velocity[1] = -5.0f;
|
||||
}
|
||||
shell->rotAngle += 0x5B0;
|
||||
shell->someTimer -= 1;
|
||||
shell->pos[1] += shell->velocity[1];
|
||||
if (shell->someTimer == 0) {
|
||||
destroy_actor((struct Actor*) shell);
|
||||
}
|
||||
break;
|
||||
case BLUE_SHELL_LOCK_ON:
|
||||
func_802B3B44(shell);
|
||||
shell->targetPlayer = gPlayerPositionLUT[0];
|
||||
player = &gPlayers[gPlayerPositionLUT[0]];
|
||||
height = player->pos[0];
|
||||
height -= shell->pos[0];
|
||||
temp_f2 = player->pos[2];
|
||||
temp_f2 -= shell->pos[2];
|
||||
if (((height * height) + (temp_f2 * temp_f2)) < 40000.0f) {
|
||||
shell->state = BLUE_SHELL_TARGET_ELIMINATED;
|
||||
}
|
||||
break;
|
||||
case 9:
|
||||
func_802B3E7C(shell, &gPlayers[shell->targetPlayer]);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,43 +12,46 @@
|
|||
* @param arg0
|
||||
* @param arg1
|
||||
*/
|
||||
void render_actor_box_truck(Camera *arg0, struct Actor *arg1) {
|
||||
void render_actor_box_truck(Camera* arg0, struct Actor* arg1) {
|
||||
UNUSED s32 pad[6];
|
||||
Mat4 spD8;
|
||||
UNUSED s32 pad2[32];
|
||||
f32 temp_f0 = is_within_render_distance(arg0->pos, arg1->pos, arg0->rot[1], 2500.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
f32 temp_f0 =
|
||||
is_within_render_distance(arg0->pos, arg1->pos, arg0->rot[1], 2500.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
mtxf_pos_rotation_xyz(spD8, arg1->pos, arg1->rot);
|
||||
if (render_set_position(spD8, 0) != 0) {
|
||||
mtxf_pos_rotation_xyz(spD8, arg1->pos, arg1->rot);
|
||||
if (render_set_position(spD8, 0) != 0) {
|
||||
|
||||
switch(arg1->state) {
|
||||
case 0:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_dl_23858);
|
||||
break;
|
||||
case 1:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_dl_238A0);
|
||||
break;
|
||||
case 2:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_dl_238E8);
|
||||
break;
|
||||
}
|
||||
switch (arg1->state) {
|
||||
case 0:
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_toads_turnpike_dl_23858);
|
||||
break;
|
||||
case 1:
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_toads_turnpike_dl_238A0);
|
||||
break;
|
||||
case 2:
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_toads_turnpike_dl_238E8);
|
||||
break;
|
||||
}
|
||||
|
||||
if (gActiveScreenMode == SCREEN_MODE_1P) {
|
||||
if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_0);
|
||||
} else if (temp_f0 < 640000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_1);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_2);
|
||||
}
|
||||
} else if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_1);
|
||||
if (gActiveScreenMode == SCREEN_MODE_1P) {
|
||||
if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_0);
|
||||
} else if (temp_f0 < 640000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_1);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_2);
|
||||
}
|
||||
} else if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_1);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_2);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,22 +7,22 @@
|
|||
* @brief Renders the car actor.
|
||||
* Actor used in Toad's Turnpike.
|
||||
* His update are made in vehicle.
|
||||
*
|
||||
* @param arg0
|
||||
* @param arg1
|
||||
*
|
||||
* @param arg0
|
||||
* @param arg1
|
||||
*/
|
||||
void render_actor_car(Camera *arg0, struct Actor *arg1) {
|
||||
void render_actor_car(Camera* arg0, struct Actor* arg1) {
|
||||
UNUSED s32 pad[6];
|
||||
Mat4 spC8;
|
||||
UNUSED s32 pad2[32];
|
||||
f32 temp_f0 = is_within_render_distance(arg0->pos,arg1->pos, arg0->rot[1], 2500.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
f32 temp_f0 =
|
||||
is_within_render_distance(arg0->pos, arg1->pos, arg0->rot[1], 2500.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
|
||||
if (!(temp_f0 < 0.0f)) {
|
||||
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
|
||||
mtxf_pos_rotation_xyz(spC8, arg1->pos, arg1->rot);
|
||||
mtxf_scale(spC8, 0.1f);
|
||||
if (render_set_position(spC8, 0) != 0) {
|
||||
|
|
|
|||
|
|
@ -12,8 +12,11 @@
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_cow(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
if (is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f) < 0) { return; }
|
||||
void render_actor_cow(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
if (is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1],
|
||||
4000000.0f) < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
arg1[3][0] = arg2->pos[0];
|
||||
arg1[3][1] = arg2->pos[1];
|
||||
|
|
@ -21,21 +24,21 @@ void render_actor_cow(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
|||
|
||||
if (render_set_position(arg1, 0) != 0) {
|
||||
switch (arg2->state) {
|
||||
case 0:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow1);
|
||||
break;
|
||||
case 1:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow2);
|
||||
break;
|
||||
case 2:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow3);
|
||||
break;
|
||||
case 3:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow4);
|
||||
break;
|
||||
case 4:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow5);
|
||||
break;
|
||||
case 0:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow1);
|
||||
break;
|
||||
case 1:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow2);
|
||||
break;
|
||||
case 2:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow3);
|
||||
break;
|
||||
case 3:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow4);
|
||||
break;
|
||||
case 4:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_cow5);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@
|
|||
* @param camera
|
||||
* @param fakeItemBox
|
||||
*/
|
||||
void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox) {
|
||||
void render_actor_fake_item_box(Camera* camera, struct FakeItemBox* fakeItemBox) {
|
||||
Vec3s someRot;
|
||||
UNUSED s32 pad[3];
|
||||
Vec3f someVec;
|
||||
|
|
@ -24,20 +24,21 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox)
|
|||
f32 temp_f2_2;
|
||||
f32 someMultiplier;
|
||||
|
||||
if (is_within_render_distance(camera->pos, fakeItemBox->pos, camera->rot[1], 2500.0f, gCameraZoom[camera - camera1], 1000000.0f) < 0) {
|
||||
actor_not_rendered(camera, (struct Actor *) fakeItemBox);
|
||||
if (is_within_render_distance(camera->pos, fakeItemBox->pos, camera->rot[1], 2500.0f, gCameraZoom[camera - camera1],
|
||||
1000000.0f) < 0) {
|
||||
actor_not_rendered(camera, (struct Actor*) fakeItemBox);
|
||||
return;
|
||||
}
|
||||
if (((f32) gCourseMaxY + 800.0f) < fakeItemBox->pos[1]) {
|
||||
actor_not_rendered(camera, (struct Actor *) fakeItemBox);
|
||||
actor_not_rendered(camera, (struct Actor*) fakeItemBox);
|
||||
return;
|
||||
}
|
||||
if (fakeItemBox->pos[1] < ((f32) gCourseMinY - 800.0f)) {
|
||||
actor_not_rendered(camera, (struct Actor *) fakeItemBox);
|
||||
actor_not_rendered(camera, (struct Actor*) fakeItemBox);
|
||||
return;
|
||||
}
|
||||
|
||||
actor_rendered(camera, (struct Actor *) fakeItemBox);
|
||||
actor_rendered(camera, (struct Actor*) fakeItemBox);
|
||||
someRot[0] = 0;
|
||||
someRot[1] = fakeItemBox->rot[1];
|
||||
someRot[2] = 0;
|
||||
|
|
@ -45,13 +46,17 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox)
|
|||
mtxf_scale(someMatrix2, fakeItemBox->sizeScaling);
|
||||
if (fakeItemBox->state != 2) {
|
||||
|
||||
if (!render_set_position(someMatrix2, 0)) { return; }
|
||||
if (!render_set_position(someMatrix2, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, common_model_fake_itembox);
|
||||
mtxf_pos_rotation_xyz(someMatrix2, fakeItemBox->pos, fakeItemBox->rot);
|
||||
mtxf_scale(someMatrix2, fakeItemBox->sizeScaling);
|
||||
|
||||
if (!render_set_position(someMatrix2, 0)) { return; }
|
||||
if (!render_set_position(someMatrix2, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
|
|
@ -91,7 +96,9 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox)
|
|||
someVec[2] = thing;
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
if (!render_set_position(someMatrix3, 0)) { return; }
|
||||
if (!render_set_position(someMatrix3, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003158);
|
||||
temp_f2_2 = 0.8f * thing;
|
||||
|
|
@ -101,7 +108,9 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox)
|
|||
someVec[2] = temp_f12;
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
if (!render_set_position(someMatrix3, 0)) { return; }
|
||||
if (!render_set_position(someMatrix3, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0031B8);
|
||||
temp_f0_2 = -0.5f * thing;
|
||||
|
|
@ -110,7 +119,9 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox)
|
|||
someVec[2] = temp_f0_2;
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
if (!render_set_position(someMatrix3, 0)) { return; }
|
||||
if (!render_set_position(someMatrix3, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003128);
|
||||
if (!(fakeItemBox->someTimer & 1)) {
|
||||
|
|
@ -123,7 +134,9 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox)
|
|||
someVec[2] = -1.0f * thing;
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
if (!render_set_position(someMatrix3, 0)) { return; }
|
||||
if (!render_set_position(someMatrix3, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0031E8);
|
||||
temp_f0_3 = -0.8f * thing;
|
||||
|
|
@ -132,7 +145,9 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox)
|
|||
someVec[2] = temp_f0_2;
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
if (!render_set_position(someMatrix3, 0)) { return; }
|
||||
if (!render_set_position(someMatrix3, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003188);
|
||||
someVec[0] = temp_f0_3;
|
||||
|
|
@ -140,7 +155,9 @@ void render_actor_fake_item_box(Camera *camera, struct FakeItemBox *fakeItemBox)
|
|||
someVec[2] = temp_f12;
|
||||
add_translate_mat4_vec3f(someMatrix2, someMatrix3, someVec);
|
||||
|
||||
if (!render_set_position(someMatrix3, 0)) { return; }
|
||||
if (!render_set_position(someMatrix3, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0030F8);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
|
|
|
|||
|
|
@ -3,13 +3,13 @@
|
|||
|
||||
/**
|
||||
* @brief Updates the fake item box actor.
|
||||
*
|
||||
* @param fake_item_box
|
||||
*
|
||||
* @param fake_item_box
|
||||
*/
|
||||
void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) {
|
||||
void update_actor_fake_item_box(struct FakeItemBox* fake_item_box) {
|
||||
u32 temp_v1 = fake_item_box->playerId;
|
||||
Player *temp_v0_4 = &gPlayers[temp_v1];
|
||||
struct Controller *temp_v1_3;
|
||||
Player* temp_v0_4 = &gPlayers[temp_v1];
|
||||
struct Controller* temp_v1_3;
|
||||
|
||||
UNUSED s32 pad[7];
|
||||
f32 temp_f2_2;
|
||||
|
|
@ -18,7 +18,7 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) {
|
|||
f32 temp_f18;
|
||||
UNUSED s32 pad2[3];
|
||||
|
||||
switch(fake_item_box->state) {
|
||||
switch (fake_item_box->state) {
|
||||
case 0:
|
||||
fake_item_box->boundingBoxSize = fake_item_box->sizeScaling * 5.5f;
|
||||
fake_item_box->rot[0] -= 0xB6;
|
||||
|
|
@ -36,8 +36,9 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) {
|
|||
fake_item_box->pos[0] = temp_v0_4->pos[0] - temp_f14;
|
||||
fake_item_box->pos[1] = (temp_v0_4->pos[1] - temp_f16) - 1.0f;
|
||||
fake_item_box->pos[2] = temp_v0_4->pos[2] - temp_f18;
|
||||
check_bounding_collision(&fake_item_box->unk30, fake_item_box->boundingBoxSize, fake_item_box->pos[0], fake_item_box->pos[1], fake_item_box->pos[2]);
|
||||
func_802B4E30((struct Actor *)fake_item_box);
|
||||
check_bounding_collision(&fake_item_box->unk30, fake_item_box->boundingBoxSize, fake_item_box->pos[0],
|
||||
fake_item_box->pos[1], fake_item_box->pos[2]);
|
||||
func_802B4E30((struct Actor*) fake_item_box);
|
||||
temp_v1_3 = &gControllers[temp_v1];
|
||||
if ((temp_v0_4->type & 0x4000) != 0) {
|
||||
|
||||
|
|
@ -45,7 +46,7 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) {
|
|||
temp_v1_3->buttonDepressed &= 0xDFFF;
|
||||
func_802A1064(fake_item_box);
|
||||
temp_v0_4->soundEffects &= 0xFFFBFFFF;
|
||||
func_800C9060((u8)(temp_v0_4 - gPlayerOne), SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x12));
|
||||
func_800C9060((u8) (temp_v0_4 - gPlayerOne), SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x12));
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -77,7 +78,7 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) {
|
|||
|
||||
case 2:
|
||||
if ((fake_item_box->someTimer >= 0x14) || (fake_item_box->someTimer < 0)) {
|
||||
destroy_actor((struct Actor *) fake_item_box);
|
||||
destroy_actor((struct Actor*) fake_item_box);
|
||||
} else {
|
||||
fake_item_box->someTimer++;
|
||||
fake_item_box->rot[0] += 0x444;
|
||||
|
|
@ -86,7 +87,7 @@ void update_actor_fake_item_box(struct FakeItemBox *fake_item_box) {
|
|||
}
|
||||
break;
|
||||
default:
|
||||
destroy_actor((struct Actor *) fake_item_box);
|
||||
break;
|
||||
destroy_actor((struct Actor*) fake_item_box);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,22 +5,27 @@
|
|||
/**
|
||||
* @brief Renders the falling rock actor.
|
||||
* Actor used in Choco Mountain.
|
||||
*
|
||||
* @param camera
|
||||
* @param rock
|
||||
*
|
||||
* @param camera
|
||||
* @param rock
|
||||
*/
|
||||
void render_actor_falling_rock(Camera *camera, struct FallingRock *rock) {
|
||||
void render_actor_falling_rock(Camera* camera, struct FallingRock* rock) {
|
||||
Vec3s sp98;
|
||||
Vec3f sp8C;
|
||||
Mat4 sp4C;
|
||||
f32 height;
|
||||
UNUSED s32 pad[4];
|
||||
|
||||
if (rock->respawnTimer != 0) { return; }
|
||||
if (rock->respawnTimer != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
height = is_within_render_distance(camera->pos, rock->pos, camera->rot[1], 400.0f, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
height = is_within_render_distance(camera->pos, rock->pos, camera->rot[1], 400.0f, gCameraZoom[camera - camera1],
|
||||
4000000.0f);
|
||||
|
||||
if (height < 0.0f) { return; }
|
||||
if (height < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (height < 250000.0f) {
|
||||
|
||||
|
|
@ -43,7 +48,7 @@ void render_actor_falling_rock(Camera *camera, struct FallingRock *rock) {
|
|||
if (render_set_position(sp4C, 0) == 0) {
|
||||
return;
|
||||
}
|
||||
//gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_dl_falling_rock);
|
||||
// gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_dl_falling_rock);
|
||||
//! @todo: Placeholder DLs weird vtx issues
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE);
|
||||
|
|
@ -55,11 +60,13 @@ void render_actor_falling_rock(Camera *camera, struct FallingRock *rock) {
|
|||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, d_course_choco_mountain_wall_texture);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_falling_rock_model, 15, 0);
|
||||
|
|
@ -89,11 +96,13 @@ void render_actor_falling_rock(Camera *camera, struct FallingRock *rock) {
|
|||
gSP1Triangle(gDisplayListHead++, 2, 8, 9, 0);
|
||||
gSP1Triangle(gDisplayListHead++, 3, 10, 11, 0);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_MIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_MIRROR | G_TX_WRAP,
|
||||
5, G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, d_course_choco_mountain_rock_texture);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP,
|
||||
G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gSPVertex(gDisplayListHead++, d_course_choco_mountain_6006EC8, 3, 0);
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
#include <main.h>
|
||||
#include <assets/choco_mountain_data.h>
|
||||
|
||||
void func_8029CF0C(struct ActorSpawnData *spawnData, struct FallingRock *rock) {
|
||||
struct ActorSpawnData *temp_v0 = (struct ActorSpawnData *) LOAD_ASSET(spawnData);
|
||||
Vec3s sp24 = {60, 120, 180};
|
||||
void func_8029CF0C(struct ActorSpawnData* spawnData, struct FallingRock* rock) {
|
||||
struct ActorSpawnData* temp_v0 = (struct ActorSpawnData*) LOAD_ASSET(spawnData);
|
||||
Vec3s sp24 = { 60, 120, 180 };
|
||||
rock->respawnTimer = sp24[rock->unk_06]; // * 2
|
||||
rock->pos[0] = (f32) temp_v0[rock->unk_06].pos[0] * gCourseDirection;
|
||||
rock->pos[1] = (f32) temp_v0[rock->unk_06].pos[1] + 10.0f;
|
||||
|
|
@ -20,10 +20,9 @@ void func_8029CF0C(struct ActorSpawnData *spawnData, struct FallingRock *rock) {
|
|||
*
|
||||
* @param spawnData
|
||||
*/
|
||||
void spawn_falling_rocks(struct ActorSpawnData *spawnData) {
|
||||
// Casting this to prevent warning does not work.
|
||||
struct ActorSpawnData *temp_s0 = (struct ActorSpawnData *) LOAD_ASSET(spawnData);
|
||||
struct FallingRock *temp_v1;
|
||||
void spawn_falling_rocks(struct ActorSpawnData* spawnData) {
|
||||
struct ActorSpawnData* temp_s0 = (struct ActorSpawnData*) LOAD_ASSET(spawnData);
|
||||
struct FallingRock* temp_v1;
|
||||
Vec3f startingPos;
|
||||
Vec3f startingVelocity;
|
||||
Vec3s startingRot;
|
||||
|
|
@ -36,10 +35,10 @@ void spawn_falling_rocks(struct ActorSpawnData *spawnData) {
|
|||
vec3f_set(startingVelocity, 0, 0, 0);
|
||||
vec3s_set(startingRot, 0, 0, 0);
|
||||
temp = add_actor_to_empty_slot(startingPos, startingRot, startingVelocity, ACTOR_FALLING_ROCK);
|
||||
temp_v1 = (struct FallingRock *) &gActorList[temp];
|
||||
temp_v1 = (struct FallingRock*) &gActorList[temp];
|
||||
|
||||
temp_v1->unk_06 = temp_s0->someId;
|
||||
func_802AAAAC((Collision *) &temp_v1->unk30);
|
||||
func_802AAAAC((Collision*) &temp_v1->unk30);
|
||||
temp_s0++;
|
||||
}
|
||||
}
|
||||
|
|
@ -50,7 +49,7 @@ void spawn_falling_rocks(struct ActorSpawnData *spawnData) {
|
|||
*
|
||||
* @param rock
|
||||
*/
|
||||
void update_actor_falling_rocks(struct FallingRock *rock) {
|
||||
void update_actor_falling_rocks(struct FallingRock* rock) {
|
||||
Vec3f unkVec;
|
||||
f32 pad0;
|
||||
f32 pad1;
|
||||
|
|
@ -91,8 +90,7 @@ void update_actor_falling_rocks(struct FallingRock *rock) {
|
|||
if (unkVec[1] == 0.0f) {
|
||||
rock->velocity[1] *= -1.2f;
|
||||
return;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
unkVec[0] = -rock->unk30.unk48[0];
|
||||
unkVec[2] = -rock->unk30.unk48[2];
|
||||
rock->pos[0] += unkVec[0] * rock->unk30.surfaceDistance[0];
|
||||
|
|
@ -108,8 +106,7 @@ void update_actor_falling_rocks(struct FallingRock *rock) {
|
|||
unkVec[1] = -rock->unk30.unk54[1];
|
||||
if (unkVec[1] == 0.0f) {
|
||||
rock->velocity[1] *= -1.2f;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
unkVec[0] = -rock->unk30.unk54[0];
|
||||
unkVec[2] = -rock->unk30.unk54[2];
|
||||
rock->pos[0] += unkVec[0] * rock->unk30.surfaceDistance[1];
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@
|
|||
* @param matrix
|
||||
* @param shell
|
||||
*/
|
||||
void render_actor_green_shell(Camera *camera, Mat4 matrix, struct ShellActor *shell) {
|
||||
void render_actor_green_shell(Camera* camera, Mat4 matrix, struct ShellActor* shell) {
|
||||
gDPLoadTLUT_pal256(gDisplayListHead++, common_tlut_green_shell); // set texture
|
||||
render_actor_shell(camera, matrix, shell);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,18 +6,18 @@
|
|||
|
||||
/**
|
||||
* @brief Updates the green shell actor.
|
||||
*
|
||||
* @param shell
|
||||
*
|
||||
* @param shell
|
||||
*/
|
||||
void update_actor_green_shell(struct ShellActor *shell) {
|
||||
Player *player;
|
||||
void update_actor_green_shell(struct ShellActor* shell) {
|
||||
Player* player;
|
||||
UNUSED f32 pad9;
|
||||
UNUSED f32 padA;
|
||||
Vec3f somePos2;
|
||||
Vec3f somePosVel;
|
||||
f32 var_f2;
|
||||
struct Controller *controller;
|
||||
TripleShellParent *parent;
|
||||
struct Controller* controller;
|
||||
TripleShellParent* parent;
|
||||
f32 height;
|
||||
f32 z;
|
||||
UNUSED f32 pad2;
|
||||
|
|
@ -31,8 +31,9 @@ void update_actor_green_shell(struct ShellActor *shell) {
|
|||
height = shell->pos[0];
|
||||
y = shell->pos[1];
|
||||
z = shell->pos[2];
|
||||
if ((z < gCourseMinZ) || (gCourseMaxZ < z) || (height < gCourseMinX) || (gCourseMaxX < height) || (y < gCourseMinY)) {
|
||||
destroy_destructable_actor((struct Actor *) shell);
|
||||
if ((z < gCourseMinZ) || (gCourseMaxZ < z) || (height < gCourseMinX) || (gCourseMaxX < height) ||
|
||||
(y < gCourseMinY)) {
|
||||
destroy_destructable_actor((struct Actor*) shell);
|
||||
}
|
||||
shell->rotVelocity += 0x71C;
|
||||
switch (shell->state) {
|
||||
|
|
@ -71,8 +72,9 @@ void update_actor_green_shell(struct ShellActor *shell) {
|
|||
shell->velocity[2] = somePosVel[2];
|
||||
shell->state = 2;
|
||||
func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
|
||||
func_800C90F4(shell->playerId, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
add_green_shell_in_unexpired_actor_list((struct Actor*)shell - gActorList);
|
||||
func_800C90F4(shell->playerId,
|
||||
(player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
add_green_shell_in_unexpired_actor_list((struct Actor*) shell - gActorList);
|
||||
return;
|
||||
} else {
|
||||
shell->state = 1;
|
||||
|
|
@ -93,8 +95,9 @@ void update_actor_green_shell(struct ShellActor *shell) {
|
|||
shell->state = 2;
|
||||
shell->someTimer = 0x001E;
|
||||
func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
|
||||
func_800C90F4(shell->playerId, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
add_green_shell_in_unexpired_actor_list((struct Actor*)shell - gActorList);
|
||||
func_800C90F4(shell->playerId,
|
||||
(player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
add_green_shell_in_unexpired_actor_list((struct Actor*) shell - gActorList);
|
||||
}
|
||||
} else {
|
||||
shell->rotAngle += 0xE38;
|
||||
|
|
@ -102,8 +105,9 @@ void update_actor_green_shell(struct ShellActor *shell) {
|
|||
shell->state = 2;
|
||||
shell->someTimer = 0x001E;
|
||||
func_800C9060(shell->playerId, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x04));
|
||||
func_800C90F4(shell->playerId, (player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
add_green_shell_in_unexpired_actor_list((struct Actor*)shell - gActorList);
|
||||
func_800C90F4(shell->playerId,
|
||||
(player->characterId * 0x10) + SOUND_ARG_LOAD(0x29, 0x00, 0x80, 0x00));
|
||||
add_green_shell_in_unexpired_actor_list((struct Actor*) shell - gActorList);
|
||||
}
|
||||
}
|
||||
if (shell->state == 2) {
|
||||
|
|
@ -145,8 +149,9 @@ void update_actor_green_shell(struct ShellActor *shell) {
|
|||
shell->pos[0] += shell->velocity[0];
|
||||
shell->pos[1] += shell->velocity[1];
|
||||
shell->pos[2] += shell->velocity[2];
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], somePos2[0], somePos2[1], somePos2[2]);
|
||||
func_802B4E30((struct Actor *) shell);
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], somePos2[0],
|
||||
somePos2[1], somePos2[2]);
|
||||
func_802B4E30((struct Actor*) shell);
|
||||
if ((shell->unk30.surfaceDistance[0] < 0.0f) || (shell->unk30.surfaceDistance[1] < 0.0f)) {
|
||||
shell_collision(&shell->unk30, shell->velocity);
|
||||
func_800C98B8(shell->pos, shell->velocity, SOUND_ARG_LOAD(0x19, 0x00, 0x80, 0x54));
|
||||
|
|
@ -155,9 +160,9 @@ void update_actor_green_shell(struct ShellActor *shell) {
|
|||
break;
|
||||
case TRIPLE_GREEN_SHELL:
|
||||
player = &gPlayers[shell->playerId];
|
||||
parent = (TripleShellParent *) &gActorList[shell->parentIndex];
|
||||
parent = (TripleShellParent*) &gActorList[shell->parentIndex];
|
||||
if (parent->type != ACTOR_TRIPLE_GREEN_SHELL) {
|
||||
destroy_destructable_actor((struct Actor *) shell);
|
||||
destroy_destructable_actor((struct Actor*) shell);
|
||||
} else {
|
||||
shell->rotAngle += parent->rotVelocity;
|
||||
somePosVel[0] = sins(shell->rotAngle) * 8.0f;
|
||||
|
|
@ -170,8 +175,9 @@ void update_actor_green_shell(struct ShellActor *shell) {
|
|||
shell->pos[0] = player->pos[0] + somePosVel[0];
|
||||
shell->pos[1] = player->pos[1] + somePosVel[1];
|
||||
shell->pos[2] = player->pos[2] + somePosVel[2];
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], somePos2[0], somePos2[1], somePos2[2]);
|
||||
func_802B4E30((struct Actor *) shell);
|
||||
actor_terrain_collision(&shell->unk30, 4.0f, shell->pos[0], shell->pos[1], shell->pos[2], somePos2[0],
|
||||
somePos2[1], somePos2[2]);
|
||||
func_802B4E30((struct Actor*) shell);
|
||||
}
|
||||
break;
|
||||
case GREEN_SHELL_HIT_A_RACER:
|
||||
|
|
@ -184,7 +190,7 @@ void update_actor_green_shell(struct ShellActor *shell) {
|
|||
shell->someTimer -= 1;
|
||||
shell->pos[1] += shell->velocity[1];
|
||||
if (shell->someTimer == 0) {
|
||||
destroy_actor((struct Actor *) shell);
|
||||
destroy_actor((struct Actor*) shell);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@
|
|||
|
||||
/**
|
||||
* @brief Renders the item box actor.
|
||||
*
|
||||
* @param camera
|
||||
* @param item_box
|
||||
*
|
||||
* @param camera
|
||||
* @param item_box
|
||||
*/
|
||||
void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
||||
void render_actor_item_box(Camera* camera, struct ItemBox* item_box) {
|
||||
UNUSED s32 pad[2];
|
||||
Vec3f someVec1;
|
||||
Vec3f someVec2;
|
||||
|
|
@ -26,7 +26,8 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
|||
f32 temp_f2_2;
|
||||
f32 someMultiplier;
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, item_box->pos, camera->rot[1], 0.0f, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 = is_within_render_distance(camera->pos, item_box->pos, camera->rot[1], 0.0f, gCameraZoom[camera - camera1],
|
||||
4000000.0f);
|
||||
if (!(temp_f0 < 0.0f) && !(600000.0f < temp_f0)) {
|
||||
if ((item_box->state == 2) && (temp_f0 < 100000.0f)) {
|
||||
someRot[0] = 0;
|
||||
|
|
@ -37,28 +38,36 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
|||
someVec2[2] = item_box->pos[2];
|
||||
mtxf_pos_rotation_xyz(someMatrix1, someVec2, someRot);
|
||||
|
||||
if (!render_set_position(someMatrix1, 0)) { return; }
|
||||
if (!render_set_position(someMatrix1, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D002EE8);
|
||||
someRot[1] = item_box->rot[1] * 2;
|
||||
someVec2[1] = item_box->pos[1];
|
||||
mtxf_pos_rotation_xyz(someMatrix1, someVec2, someRot);
|
||||
|
||||
if (!render_set_position(someMatrix1, 0)) { return; }
|
||||
if (!render_set_position(someMatrix1, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, itemBoxQuestionMarkModel);
|
||||
}
|
||||
if (item_box->state == 5) {
|
||||
mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
|
||||
|
||||
if (!render_set_position(someMatrix1, 0)) { return; }
|
||||
if (!render_set_position(someMatrix1, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, itemBoxQuestionMarkModel);
|
||||
}
|
||||
if (item_box->state != 3) {
|
||||
mtxf_pos_rotation_xyz(someMatrix1, item_box->pos, item_box->rot);
|
||||
|
||||
if (!render_set_position(someMatrix1, 0)) { return; }
|
||||
if (!render_set_position(someMatrix1, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
|
|
@ -99,7 +108,9 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
|||
someVec1[2] = thing;
|
||||
add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
|
||||
|
||||
if (!render_set_position(someMatrix2, 0)) { return; }
|
||||
if (!render_set_position(someMatrix2, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003158);
|
||||
temp_f2_2 = 0.8f * thing;
|
||||
|
|
@ -109,7 +120,9 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
|||
someVec1[2] = temp_f12;
|
||||
add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
|
||||
|
||||
if (!render_set_position(someMatrix2, 0)) { return; }
|
||||
if (!render_set_position(someMatrix2, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0031B8);
|
||||
temp_f0_2 = -0.5f * thing;
|
||||
|
|
@ -118,7 +131,9 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
|||
someVec1[2] = temp_f0_2;
|
||||
add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
|
||||
|
||||
if (!render_set_position(someMatrix2, 0)) { return; }
|
||||
if (!render_set_position(someMatrix2, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003128);
|
||||
if (!(item_box->someTimer & 1)) {
|
||||
|
|
@ -131,7 +146,9 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
|||
someVec1[2] = -1.0f * thing;
|
||||
add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
|
||||
|
||||
if (!render_set_position(someMatrix2, 0)) { return; }
|
||||
if (!render_set_position(someMatrix2, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0031E8);
|
||||
temp_f0_3 = -0.8f * thing;
|
||||
|
|
@ -140,7 +157,9 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
|||
someVec1[2] = temp_f0_2;
|
||||
add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
|
||||
|
||||
if (!render_set_position(someMatrix2, 0)) { return; }
|
||||
if (!render_set_position(someMatrix2, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D003188);
|
||||
someVec1[0] = temp_f0_3;
|
||||
|
|
@ -148,7 +167,9 @@ void render_actor_item_box(Camera *camera, struct ItemBox *item_box) {
|
|||
someVec1[2] = temp_f12;
|
||||
add_translate_mat4_vec3f(someMatrix1, someMatrix2, someVec1);
|
||||
|
||||
if (!render_set_position(someMatrix2, 0)) { return; }
|
||||
if (!render_set_position(someMatrix2, 0)) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, D_0D0030F8);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
|
|
|
|||
|
|
@ -4,11 +4,11 @@
|
|||
* @brief Updates the item box under the hot air balloon object.
|
||||
* It used in Luigi Raceway.
|
||||
* (here it's just update the rotation of the item box not the position, for the position it's in object)
|
||||
*
|
||||
* @param itemBox
|
||||
*
|
||||
* @param itemBox
|
||||
*/
|
||||
void update_actor_item_box_hot_air_balloon(struct ItemBox *itemBox) {
|
||||
switch(itemBox->state) {
|
||||
void update_actor_item_box_hot_air_balloon(struct ItemBox* itemBox) {
|
||||
switch (itemBox->state) {
|
||||
case 5:
|
||||
itemBox->rot[0] += 0xB6;
|
||||
itemBox->rot[1] -= 0x16C;
|
||||
|
|
@ -30,10 +30,10 @@ void update_actor_item_box_hot_air_balloon(struct ItemBox *itemBox) {
|
|||
|
||||
/**
|
||||
* @brief Updates the item box actor.
|
||||
*
|
||||
* @param itemBox
|
||||
*
|
||||
* @param itemBox
|
||||
*/
|
||||
void update_actor_item_box(struct ItemBox *itemBox) {
|
||||
void update_actor_item_box(struct ItemBox* itemBox) {
|
||||
switch (itemBox->state) {
|
||||
case 0:
|
||||
itemBox->state = 1;
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
#include <actors.h>
|
||||
#include <libultra/gbi.h>
|
||||
#include <main.h>
|
||||
//#include <assets/dks_jungle_parkway_data.h>
|
||||
// #include <assets/dks_jungle_parkway_data.h>
|
||||
|
||||
/**
|
||||
* @brief Renders the kiwano fruit actor.
|
||||
|
|
@ -11,22 +11,26 @@
|
|||
* @param arg1
|
||||
* @param actor
|
||||
*/
|
||||
void render_actor_kiwano_fruit(UNUSED Camera *camera, Mat4 arg1, struct Actor *actor) {
|
||||
void render_actor_kiwano_fruit(UNUSED Camera* camera, Mat4 arg1, struct Actor* actor) {
|
||||
uintptr_t addr;
|
||||
s32 maxObjectsReached;
|
||||
|
||||
if (actor->state == 0) { return; }
|
||||
if (actor->state == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
arg1[3][0] = actor->pos[0];
|
||||
arg1[3][1] = actor->pos[1];
|
||||
arg1[3][2] = actor->pos[2];
|
||||
|
||||
maxObjectsReached = render_set_position(arg1, 0) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
addr = segmented_texture_to_virtual((actor->rot[0] << 0xA) + 0x03009000);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(addr),
|
||||
G_IM_FMT_CI, G_IM_SIZ_8b, 32, 32, 0, G_TX_NOMIRROR | G_TX_CLAMP,
|
||||
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(addr), G_IM_FMT_CI, G_IM_SIZ_8b, 32, 32, 0,
|
||||
G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
G_TX_NOLOD);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_dks_jungle_parkway_dl_kiwano_fruit);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,11 +6,11 @@
|
|||
/**
|
||||
* @brief Updates the kiwano fruit actor.
|
||||
* Actor used in DK's Jungle Parkway.
|
||||
*
|
||||
* @param fruit
|
||||
*
|
||||
* @param fruit
|
||||
*/
|
||||
void update_actor_kiwano_fruit(struct KiwanoFruit *fruit) {
|
||||
Player *player;
|
||||
void update_actor_kiwano_fruit(struct KiwanoFruit* fruit) {
|
||||
Player* player;
|
||||
f32 temp_f2;
|
||||
f32 temp_f16;
|
||||
f32 temp_f14;
|
||||
|
|
@ -22,59 +22,59 @@ void update_actor_kiwano_fruit(struct KiwanoFruit *fruit) {
|
|||
fruit->state = 0;
|
||||
return;
|
||||
}
|
||||
switch (fruit->state) { /* irregular */
|
||||
case 0:
|
||||
if ((get_surface_type(player->collision.meshIndexZX) & 0xFF) != GRASS) {
|
||||
return;
|
||||
}
|
||||
fruit->state = 1;
|
||||
fruit->velocity[0] = 80.0f;
|
||||
case 1:
|
||||
nearestWaypoint = gNearestWaypointByPlayerId[(u16)(player - gPlayerOne)];
|
||||
temp_f2 = player->pos[0] - D_80164490[nearestWaypoint].posX;
|
||||
temp_f16 = player->pos[1] - D_80164490[nearestWaypoint].posY;
|
||||
temp_f14 = player->pos[2] - D_80164490[nearestWaypoint].posZ;
|
||||
temp_f12 = fruit->velocity[0] / sqrtf((temp_f2 * temp_f2) + (temp_f16 * temp_f16) + (temp_f14 * temp_f14));
|
||||
temp_f2 *= temp_f12;
|
||||
temp_f16 *= temp_f12;
|
||||
temp_f14 *= temp_f12;
|
||||
fruit->pos[0] = player->pos[0] + temp_f2;
|
||||
fruit->pos[1] = player->pos[1] + temp_f16;
|
||||
fruit->pos[2] = player->pos[2] + temp_f14;
|
||||
fruit->velocity[0] -= 2.0f;
|
||||
if (fruit->velocity[0] <= 0.0f) {
|
||||
fruit->state = 2;
|
||||
fruit->bonkTimer = 30.0f;
|
||||
fruit->velocity[0] = 0.0f;
|
||||
fruit->velocity[1] = 2.3f;
|
||||
fruit->velocity[2] = 0.0f;
|
||||
if ((player->effects & STAR_EFFECT) != 0) {
|
||||
func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x52));
|
||||
} else {
|
||||
player->effects |= 0x8000;
|
||||
player->pos[0] -= temp_f2 * 4.0f;
|
||||
player->pos[2] -= temp_f14 * 4.0f;
|
||||
player->velocity[0] -= temp_f2 * 0.7f;
|
||||
player->velocity[2] -= temp_f14 * 0.7f;
|
||||
func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0x70, 0x18));
|
||||
if (gModeSelection != GRAND_PRIX) {
|
||||
D_80162DF8 = 1;
|
||||
switch (fruit->state) { /* irregular */
|
||||
case 0:
|
||||
if ((get_surface_type(player->collision.meshIndexZX) & 0xFF) != GRASS) {
|
||||
return;
|
||||
}
|
||||
fruit->state = 1;
|
||||
fruit->velocity[0] = 80.0f;
|
||||
case 1:
|
||||
nearestWaypoint = gNearestWaypointByPlayerId[(u16) (player - gPlayerOne)];
|
||||
temp_f2 = player->pos[0] - D_80164490[nearestWaypoint].posX;
|
||||
temp_f16 = player->pos[1] - D_80164490[nearestWaypoint].posY;
|
||||
temp_f14 = player->pos[2] - D_80164490[nearestWaypoint].posZ;
|
||||
temp_f12 = fruit->velocity[0] / sqrtf((temp_f2 * temp_f2) + (temp_f16 * temp_f16) + (temp_f14 * temp_f14));
|
||||
temp_f2 *= temp_f12;
|
||||
temp_f16 *= temp_f12;
|
||||
temp_f14 *= temp_f12;
|
||||
fruit->pos[0] = player->pos[0] + temp_f2;
|
||||
fruit->pos[1] = player->pos[1] + temp_f16;
|
||||
fruit->pos[2] = player->pos[2] + temp_f14;
|
||||
fruit->velocity[0] -= 2.0f;
|
||||
if (fruit->velocity[0] <= 0.0f) {
|
||||
fruit->state = 2;
|
||||
fruit->bonkTimer = 30.0f;
|
||||
fruit->velocity[0] = 0.0f;
|
||||
fruit->velocity[1] = 2.3f;
|
||||
fruit->velocity[2] = 0.0f;
|
||||
if ((player->effects & STAR_EFFECT) != 0) {
|
||||
func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0xA0, 0x52));
|
||||
} else {
|
||||
player->effects |= 0x8000;
|
||||
player->pos[0] -= temp_f2 * 4.0f;
|
||||
player->pos[2] -= temp_f14 * 4.0f;
|
||||
player->velocity[0] -= temp_f2 * 0.7f;
|
||||
player->velocity[2] -= temp_f14 * 0.7f;
|
||||
func_800C9060(player - gPlayerOne, SOUND_ARG_LOAD(0x19, 0x00, 0x70, 0x18));
|
||||
if (gModeSelection != GRAND_PRIX) {
|
||||
D_80162DF8 = 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
fruit->velocity[1] -= 0.3f;
|
||||
fruit->pos[0] += fruit->velocity[0];
|
||||
fruit->pos[1] += fruit->velocity[1];
|
||||
fruit->pos[2] += fruit->velocity[2];
|
||||
fruit->bonkTimer -= 1.0f;
|
||||
if (fruit->bonkTimer < 0.0f) {
|
||||
fruit->state = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
break;
|
||||
case 2:
|
||||
fruit->velocity[1] -= 0.3f;
|
||||
fruit->pos[0] += fruit->velocity[0];
|
||||
fruit->pos[1] += fruit->velocity[1];
|
||||
fruit->pos[2] += fruit->velocity[2];
|
||||
fruit->bonkTimer -= 1.0f;
|
||||
if (fruit->bonkTimer < 0.0f) {
|
||||
fruit->state = 0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
if (fruit->state != 0) {
|
||||
fruit->animTimer += 1;
|
||||
|
|
|
|||
|
|
@ -5,17 +5,19 @@
|
|||
/**
|
||||
* @brief Renders the Mario sign actor.
|
||||
* Actor used in Mario Raceway.
|
||||
*
|
||||
* @param arg0
|
||||
* @param arg1
|
||||
* @param arg2
|
||||
*
|
||||
* @param arg0
|
||||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_mario_sign(Camera *arg0, UNUSED Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_mario_sign(Camera* arg0, UNUSED Mat4 arg1, struct Actor* arg2) {
|
||||
Mat4 sp40;
|
||||
f32 unk;
|
||||
s16 temp = arg2->flags;
|
||||
|
||||
if (temp & 0x800) { return; }
|
||||
if (temp & 0x800) {
|
||||
return;
|
||||
}
|
||||
|
||||
unk = is_within_render_distance(arg0->pos, arg2->pos, arg0->rot[1], 0, gCameraZoom[arg0 - camera1], 16000000.0f);
|
||||
if (!(unk < 0.0f)) {
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
/**
|
||||
* @brief Updates the Mario sign actor.
|
||||
*
|
||||
* @param arg0
|
||||
*
|
||||
* @param arg0
|
||||
*/
|
||||
void update_actor_mario_sign(struct Actor *arg0) {
|
||||
void update_actor_mario_sign(struct Actor* arg0) {
|
||||
if ((arg0->flags & 0x800) == 0) {
|
||||
if ((arg0->flags & 0x400) != 0) {
|
||||
arg0->pos[1] += 4.0f;
|
||||
|
|
|
|||
|
|
@ -17,7 +17,7 @@
|
|||
* @param arg2
|
||||
* @param pathCounter
|
||||
*/
|
||||
void render_actor_paddle_boat(Camera *arg0, struct PaddleWheelBoat *boat, UNUSED Mat4 arg2, u16 pathCounter) {
|
||||
void render_actor_paddle_boat(Camera* arg0, struct PaddleWheelBoat* boat, UNUSED Mat4 arg2, u16 pathCounter) {
|
||||
UNUSED s32 pad[3];
|
||||
Vec3f sp120;
|
||||
Mat4 spE0;
|
||||
|
|
@ -25,32 +25,37 @@ void render_actor_paddle_boat(Camera *arg0, struct PaddleWheelBoat *boat, UNUSED
|
|||
Mat4 sp60;
|
||||
f32 temp;
|
||||
|
||||
if ((pathCounter > 20) && (pathCounter < 25)) { return; }
|
||||
if ((pathCounter > 20) && (pathCounter < 25)) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp = is_within_render_distance(arg0->pos, boat->pos, arg0->rot[1], 90000.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
temp = is_within_render_distance(arg0->pos, boat->pos, arg0->rot[1], 90000.0f, gCameraZoom[arg0 - camera1],
|
||||
9000000.0f);
|
||||
|
||||
if (temp < 0.0f) { return; }
|
||||
if (temp < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPSetLights1(gDisplayListHead++, D_800DC610[1]);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH);
|
||||
gSPSetLights1(gDisplayListHead++, D_800DC610[1]);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_LIGHTING | G_SHADING_SMOOTH);
|
||||
|
||||
mtxf_pos_rotation_xyz(spE0, boat->pos, boat->boatRot);
|
||||
if (render_set_position(spE0, 1) != 0) {
|
||||
mtxf_pos_rotation_xyz(spE0, boat->pos, boat->boatRot);
|
||||
if (render_set_position(spE0, 1) != 0) {
|
||||
|
||||
// Render the boat
|
||||
gSPDisplayList(gDisplayListHead++, d_course_dks_jungle_parkway_boat_dl);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_dks_jungle_parkway_railings_dl);
|
||||
// Render the boat
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_boat_dl);
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_railings_dl);
|
||||
|
||||
mtxf_rotate_x(spE0, boat->wheelRot);
|
||||
vec3f_set(sp120, 0, 16.0f, -255.0f);
|
||||
mtxf_translate(spA0, sp120);
|
||||
mtxf_multiplication(sp60, spE0, spA0);
|
||||
if (render_set_position(sp60, 3) != 0) {
|
||||
// Render the paddle wheel
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_dks_jungle_parkway_paddle_wheel_dl);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
}
|
||||
mtxf_rotate_x(spE0, boat->wheelRot);
|
||||
vec3f_set(sp120, 0, 16.0f, -255.0f);
|
||||
mtxf_translate(spA0, sp120);
|
||||
mtxf_multiplication(sp60, spE0, spA0);
|
||||
if (render_set_position(sp60, 3) != 0) {
|
||||
// Render the paddle wheel
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_dks_jungle_parkway_paddle_wheel_dl);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,6 +8,6 @@
|
|||
*
|
||||
* @param boat
|
||||
*/
|
||||
void update_actor_paddle_boat(struct PaddleWheelBoat *boat) {
|
||||
void update_actor_paddle_boat(struct PaddleWheelBoat* boat) {
|
||||
boat->wheelRot += 0x38E;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,13 +5,13 @@
|
|||
/**
|
||||
* @brief Renders the palm tree actor.
|
||||
* Actor used in Koopa Troopa Beach.
|
||||
*
|
||||
* @param arg0
|
||||
* @param arg1
|
||||
* @param arg2
|
||||
*
|
||||
* @param arg0
|
||||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_palm_tree(Camera *arg0, UNUSED Mat4 arg1, struct PalmTree *arg2) {
|
||||
Vec3s spA8 = {0, 0, 0};
|
||||
void render_actor_palm_tree(Camera* arg0, UNUSED Mat4 arg1, struct PalmTree* arg2) {
|
||||
Vec3s spA8 = { 0, 0, 0 };
|
||||
Mat4 sp68;
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
|
@ -20,7 +20,8 @@ void render_actor_palm_tree(Camera *arg0, UNUSED Mat4 arg1, struct PalmTree *arg
|
|||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(arg0->pos, arg2->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(arg0->pos, arg2->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1], 4000000.0f);
|
||||
|
||||
if (!(temp_f0 < 0.0f)) {
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
|
|
@ -32,7 +33,7 @@ void render_actor_palm_tree(Camera *arg0, UNUSED Mat4 arg1, struct PalmTree *arg
|
|||
gDPSetTextureLUT(gDisplayListHead++, G_TT_NONE);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
switch(arg2->variant) {
|
||||
switch (arg2->variant) {
|
||||
case 0:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_koopa_troopa_beach_dl_tree_trunk1);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
|
|
@ -53,7 +54,6 @@ void render_actor_palm_tree(Camera *arg0, UNUSED Mat4 arg1, struct PalmTree *arg
|
|||
gSPDisplayList(gDisplayListHead++, d_course_koopa_troopa_beach_dl_tree_top3);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -12,106 +12,109 @@
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_piranha_plant(Camera *arg0, Mat4 arg1, struct PiranhaPlant *arg2) {
|
||||
void render_actor_piranha_plant(Camera* arg0, Mat4 arg1, struct PiranhaPlant* arg2) {
|
||||
UNUSED s32 pad;
|
||||
u8 *addr;
|
||||
u8* addr;
|
||||
s16 temp_lo = arg0 - camera1;
|
||||
s16 animationFrame; // unconfirmed
|
||||
s16 temp = arg2->flags;
|
||||
f32 temp_f0;
|
||||
s32 maxObjectsReached;
|
||||
|
||||
if (temp & 0x800) { return; }
|
||||
if (temp & 0x800) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(arg0->pos, arg2->pos, arg0->rot[1], 0, gCameraZoom[arg0 - camera1], 1000000.0f);
|
||||
temp_f0 = is_within_render_distance(arg0->pos, arg2->pos, arg0->rot[1], 0, gCameraZoom[arg0 - camera1], 1000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) {
|
||||
if (temp_f0 < 0.0f) {
|
||||
|
||||
switch(temp_lo) {
|
||||
case 0:
|
||||
arg2->visibilityStates[0] = -1;
|
||||
break;
|
||||
case 1:
|
||||
arg2->visibilityStates[1] = -1;
|
||||
break;
|
||||
case 2:
|
||||
arg2->visibilityStates[2] = -1;
|
||||
break;
|
||||
case 3:
|
||||
arg2->visibilityStates[3] = -1;
|
||||
break;
|
||||
|
||||
}
|
||||
return;
|
||||
switch (temp_lo) {
|
||||
case 0:
|
||||
arg2->visibilityStates[0] = -1;
|
||||
break;
|
||||
case 1:
|
||||
arg2->visibilityStates[1] = -1;
|
||||
break;
|
||||
case 2:
|
||||
arg2->visibilityStates[2] = -1;
|
||||
break;
|
||||
case 3:
|
||||
arg2->visibilityStates[3] = -1;
|
||||
break;
|
||||
}
|
||||
arg1[3][0] = arg2->pos[0];
|
||||
arg1[3][1] = arg2->pos[1];
|
||||
arg1[3][2] = arg2->pos[2];
|
||||
maxObjectsReached = render_set_position(arg1, 0) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
return;
|
||||
}
|
||||
arg1[3][0] = arg2->pos[0];
|
||||
arg1[3][1] = arg2->pos[1];
|
||||
arg1[3][2] = arg2->pos[2];
|
||||
maxObjectsReached = render_set_position(arg1, 0) == 0;
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (90000.0f < temp_f0) {
|
||||
if (90000.0f < temp_f0) {
|
||||
|
||||
switch(temp_lo) {
|
||||
case 0:
|
||||
arg2->visibilityStates[0] = 0;
|
||||
break;
|
||||
case 1:
|
||||
arg2->visibilityStates[1] = 0;
|
||||
break;
|
||||
case 2:
|
||||
arg2->visibilityStates[2] = 0;
|
||||
break;
|
||||
case 3:
|
||||
arg2->visibilityStates[3] = 0;
|
||||
break;
|
||||
}
|
||||
animationFrame = 0;
|
||||
|
||||
} else {
|
||||
switch(temp_lo) {
|
||||
case 0:
|
||||
arg2->visibilityStates[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
arg2->visibilityStates[1] = 1;
|
||||
break;
|
||||
case 2:
|
||||
arg2->visibilityStates[2] = 1;
|
||||
break;
|
||||
case 3:
|
||||
arg2->visibilityStates[3] = 1;
|
||||
break;
|
||||
}
|
||||
|
||||
switch(temp_lo) {
|
||||
case 0:
|
||||
animationFrame = arg2->timers[0];
|
||||
break;
|
||||
case 1:
|
||||
animationFrame = arg2->timers[1];
|
||||
break;
|
||||
case 2:
|
||||
animationFrame = arg2->timers[2];
|
||||
break;
|
||||
case 3:
|
||||
animationFrame = arg2->timers[3];
|
||||
break;
|
||||
}
|
||||
switch (temp_lo) {
|
||||
case 0:
|
||||
arg2->visibilityStates[0] = 0;
|
||||
break;
|
||||
case 1:
|
||||
arg2->visibilityStates[1] = 0;
|
||||
break;
|
||||
case 2:
|
||||
arg2->visibilityStates[2] = 0;
|
||||
break;
|
||||
case 3:
|
||||
arg2->visibilityStates[3] = 0;
|
||||
break;
|
||||
}
|
||||
animationFrame /= 6;
|
||||
animationFrame = 0;
|
||||
|
||||
if (animationFrame > 8) {
|
||||
animationFrame = 8;
|
||||
} else {
|
||||
switch (temp_lo) {
|
||||
case 0:
|
||||
arg2->visibilityStates[0] = 1;
|
||||
break;
|
||||
case 1:
|
||||
arg2->visibilityStates[1] = 1;
|
||||
break;
|
||||
case 2:
|
||||
arg2->visibilityStates[2] = 1;
|
||||
break;
|
||||
case 3:
|
||||
arg2->visibilityStates[3] = 1;
|
||||
break;
|
||||
}
|
||||
addr = D_802BA058 + (animationFrame << 0xB);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(addr), G_IM_FMT_CI, G_IM_SIZ_8b, 32, 64, 0,
|
||||
G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOLOD);
|
||||
|
||||
|
||||
if (gCurrentCourseId == COURSE_MARIO_RACEWAY) {
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_dl_piranha_plant);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_royal_raceway_dl_piranha_plant);
|
||||
switch (temp_lo) {
|
||||
case 0:
|
||||
animationFrame = arg2->timers[0];
|
||||
break;
|
||||
case 1:
|
||||
animationFrame = arg2->timers[1];
|
||||
break;
|
||||
case 2:
|
||||
animationFrame = arg2->timers[2];
|
||||
break;
|
||||
case 3:
|
||||
animationFrame = arg2->timers[3];
|
||||
break;
|
||||
}
|
||||
}
|
||||
animationFrame /= 6;
|
||||
|
||||
if (animationFrame > 8) {
|
||||
animationFrame = 8;
|
||||
}
|
||||
addr = D_802BA058 + (animationFrame << 0xB);
|
||||
gDPLoadTextureBlock(gDisplayListHead++, VIRTUAL_TO_PHYSICAL(addr), G_IM_FMT_CI, G_IM_SIZ_8b, 32, 64, 0,
|
||||
G_TX_MIRROR | G_TX_WRAP, G_TX_NOMIRROR | G_TX_CLAMP, G_TX_NOMASK, G_TX_NOMASK, G_TX_NOLOD,
|
||||
G_TX_NOLOD);
|
||||
|
||||
if (gCurrentCourseId == COURSE_MARIO_RACEWAY) {
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_mario_raceway_dl_piranha_plant);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, &d_course_royal_raceway_dl_piranha_plant);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,10 +3,10 @@
|
|||
/**
|
||||
* @brief Updates the piranha plant actor.
|
||||
* Actor used in Mario Raceway and Royal Raceway.
|
||||
*
|
||||
* @param arg0
|
||||
*
|
||||
* @param arg0
|
||||
*/
|
||||
void update_actor_piranha_plant(struct PiranhaPlant *arg0) {
|
||||
void update_actor_piranha_plant(struct PiranhaPlant* arg0) {
|
||||
if ((arg0->flags & 0x800) == 0) {
|
||||
if ((arg0->flags & 0x400) != 0) {
|
||||
arg0->pos[1] += 4.0f;
|
||||
|
|
|
|||
|
|
@ -10,10 +10,11 @@
|
|||
* @param arg0
|
||||
* @param rr_crossing
|
||||
*/
|
||||
void render_actor_railroad_crossing(Camera *arg0, struct RailroadCrossing *rr_crossing) {
|
||||
UNUSED Vec3s sp80 = {0, 0, 0};
|
||||
void render_actor_railroad_crossing(Camera* arg0, struct RailroadCrossing* rr_crossing) {
|
||||
UNUSED Vec3s sp80 = { 0, 0, 0 };
|
||||
Mat4 sp40;
|
||||
f32 unk = is_within_render_distance(arg0->pos, rr_crossing->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1], 4000000.0f);
|
||||
f32 unk = is_within_render_distance(arg0->pos, rr_crossing->pos, arg0->rot[1], 0.0f, gCameraZoom[arg0 - camera1],
|
||||
4000000.0f);
|
||||
|
||||
if (!(unk < 0.0f)) {
|
||||
mtxf_pos_rotation_xyz(sp40, rr_crossing->pos, rr_crossing->rot);
|
||||
|
|
|
|||
|
|
@ -4,10 +4,10 @@
|
|||
* @brief Updates the railroad crossing actor.
|
||||
* Actor used in Kalimari Desert.
|
||||
* Make the sound of the bell when the train is close.
|
||||
*
|
||||
* @param crossing
|
||||
*
|
||||
* @param crossing
|
||||
*/
|
||||
void update_actor_railroad_crossing(struct RailroadCrossing *crossing) {
|
||||
void update_actor_railroad_crossing(struct RailroadCrossing* crossing) {
|
||||
// If train close?
|
||||
if (isCrossingTriggeredByIndex[crossing->crossingId] != 0) {
|
||||
// Timer++
|
||||
|
|
|
|||
|
|
@ -11,34 +11,36 @@
|
|||
* @param arg0
|
||||
* @param arg1
|
||||
*/
|
||||
void render_actor_school_bus(Camera *arg0, struct Actor *arg1) {
|
||||
void render_actor_school_bus(Camera* arg0, struct Actor* arg1) {
|
||||
UNUSED s32 pad[6];
|
||||
Mat4 spC8;
|
||||
UNUSED s32 pad2[32];
|
||||
f32 temp_f0;
|
||||
|
||||
temp_f0 = is_within_render_distance(arg0->pos, arg1->pos, arg0->rot[1], 2500.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
temp_f0 =
|
||||
is_within_render_distance(arg0->pos, arg1->pos, arg0->rot[1], 2500.0f, gCameraZoom[arg0 - camera1], 9000000.0f);
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
mtxf_pos_rotation_xyz(spC8, arg1->pos, arg1->rot);
|
||||
if (render_set_position(spC8, 0) != 0) {
|
||||
|
||||
mtxf_pos_rotation_xyz(spC8, arg1->pos, arg1->rot);
|
||||
if (render_set_position(spC8, 0) != 0) {
|
||||
|
||||
if (gActiveScreenMode == SCREEN_MODE_1P) {
|
||||
if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_3);
|
||||
} else if (temp_f0 < 640000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_4);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_5);
|
||||
}
|
||||
} else if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_4);
|
||||
if (gActiveScreenMode == SCREEN_MODE_1P) {
|
||||
if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_3);
|
||||
} else if (temp_f0 < 640000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_4);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_5);
|
||||
}
|
||||
} else if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_4);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, &toads_turnpike_dl_5);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,15 +6,16 @@
|
|||
* @brief Renders the tanker truck actor.
|
||||
* Actor used in Toad's Turnpike.
|
||||
* His update are made in vehicle.
|
||||
*
|
||||
* @param camera
|
||||
* @param arg1
|
||||
*
|
||||
* @param camera
|
||||
* @param arg1
|
||||
*/
|
||||
void render_actor_tanker_truck(Camera *camera, struct Actor* arg1) {
|
||||
void render_actor_tanker_truck(Camera* camera, struct Actor* arg1) {
|
||||
UNUSED s32 pad[6];
|
||||
Mat4 spC8;
|
||||
UNUSED s32 pad2[32];
|
||||
f32 temp_f0 = is_within_render_distance(camera->pos, arg1->pos, camera->rot[1], 2500.0f, gCameraZoom[camera - camera1], 9000000.0f);
|
||||
f32 temp_f0 = is_within_render_distance(camera->pos, arg1->pos, camera->rot[1], 2500.0f,
|
||||
gCameraZoom[camera - camera1], 9000000.0f);
|
||||
|
||||
if (!(temp_f0 < 0.0f)) {
|
||||
|
||||
|
|
@ -33,11 +34,11 @@ void render_actor_tanker_truck(Camera *camera, struct Actor* arg1) {
|
|||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_8);
|
||||
}
|
||||
} else if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_7);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_8);
|
||||
}
|
||||
} else if (temp_f0 < 160000.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_7);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, toads_turnpike_dl_8);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@
|
|||
* @param camera
|
||||
* @param actor
|
||||
*/
|
||||
void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
||||
void render_actor_train_engine(Camera* camera, struct TrainCar* actor) {
|
||||
UNUSED s32 pad[2];
|
||||
s32 maxObjectsReached;
|
||||
Vec3f sp160;
|
||||
|
|
@ -19,15 +19,20 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
Mat4 spE0;
|
||||
Mat4 spA0;
|
||||
|
||||
f32 distance = is_within_render_distance(camera->pos, actor->pos, camera->rot[1], 2500.0f, gCameraZoom[camera - camera1], 9000000.0f);
|
||||
f32 distance = is_within_render_distance(camera->pos, actor->pos, camera->rot[1], 2500.0f,
|
||||
gCameraZoom[camera - camera1], 9000000.0f);
|
||||
|
||||
if (distance < 0.0f) { return; }
|
||||
if (distance < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
mtxf_pos_rotation_xyz(sp120, actor->pos, actor->rot);
|
||||
maxObjectsReached = render_set_position(sp120, 0) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (distance < 122500.0f) {
|
||||
|
||||
|
|
@ -37,12 +42,14 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
} else if (distance < 640000.0f) {
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_1D670);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_1D160);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_1D160);
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_1E910);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_1E480);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_1E910);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_1E480);
|
||||
}
|
||||
if (1440000.0f < distance) {
|
||||
return;
|
||||
}
|
||||
if (1440000.0f < distance) { return; }
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22D28);
|
||||
|
|
@ -53,7 +60,9 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
maxObjectsReached = render_set_position(spA0, 3) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -64,7 +73,9 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
maxObjectsReached = render_set_position(spA0, 3) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -75,7 +86,9 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
maxObjectsReached = render_set_position(spA0, 3) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -86,7 +99,9 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
maxObjectsReached = render_set_position(spA0, 3) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -97,7 +112,9 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
maxObjectsReached = render_set_position(spA0, 3) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22D70);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -108,7 +125,9 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
maxObjectsReached = render_set_position(spA0, 3) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22D70);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -119,7 +138,9 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
maxObjectsReached = render_set_position(spA0, 3) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22D70);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -130,27 +151,34 @@ void render_actor_train_engine(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
maxObjectsReached = render_set_position(spA0, 3) == 0;
|
||||
if (maxObjectsReached) { return; }
|
||||
if (maxObjectsReached) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22D70);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
}
|
||||
|
||||
void render_actor_train_tender(Camera *camera, struct TrainCar *actor) {
|
||||
void render_actor_train_tender(Camera* camera, struct TrainCar* actor) {
|
||||
Mat4 sp120;
|
||||
Vec3f sp160;
|
||||
Mat4 spE0;
|
||||
Mat4 spA0;
|
||||
|
||||
f32 temp_f0 = is_within_render_distance(camera->pos, actor->pos, camera->rot[1], 625.0f, gCameraZoom[camera - camera1], 9000000.0f);
|
||||
f32 temp_f0 = is_within_render_distance(camera->pos, actor->pos, camera->rot[1], 625.0f,
|
||||
gCameraZoom[camera - camera1], 9000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
mtxf_pos_rotation_xyz(sp120, actor->pos, actor->rot);
|
||||
if (render_set_position(sp120, 0) == 0) { return; }
|
||||
if (render_set_position(sp120, 0) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (temp_f0 < 250000.0f) {
|
||||
|
||||
|
|
@ -161,7 +189,9 @@ void render_actor_train_tender(Camera *camera, struct TrainCar *actor) {
|
|||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_1FAF8);
|
||||
}
|
||||
if (1440000.0f < temp_f0) { return; }
|
||||
if (1440000.0f < temp_f0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22D28);
|
||||
|
|
@ -171,7 +201,9 @@ void render_actor_train_tender(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -181,7 +213,9 @@ void render_actor_train_tender(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -191,7 +225,9 @@ void render_actor_train_tender(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -201,27 +237,34 @@ void render_actor_train_tender(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
}
|
||||
|
||||
void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
||||
void render_actor_train_passenger_car(Camera* camera, struct TrainCar* actor) {
|
||||
Mat4 sp120;
|
||||
Vec3f sp160;
|
||||
Mat4 spE0;
|
||||
Mat4 spA0;
|
||||
|
||||
f32 temp_f0 = is_within_render_distance(camera->pos, actor->pos, camera->rot[1], 2025.0f, gCameraZoom[camera - camera1], 9000000.0f);
|
||||
f32 temp_f0 = is_within_render_distance(camera->pos, actor->pos, camera->rot[1], 2025.0f,
|
||||
gCameraZoom[camera - camera1], 9000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
mtxf_pos_rotation_xyz(sp120, actor->pos, actor->rot);
|
||||
|
||||
if (render_set_position(sp120, 0) == 0) { return; }
|
||||
if (render_set_position(sp120, 0) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (temp_f0 < 250000.0f) {
|
||||
|
||||
|
|
@ -236,7 +279,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_21C90);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_21A80);
|
||||
}
|
||||
if (1440000.0f < temp_f0) { return; }
|
||||
if (1440000.0f < temp_f0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22D28);
|
||||
|
|
@ -246,7 +291,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -256,7 +303,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -266,7 +315,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -276,7 +327,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -286,7 +339,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -296,7 +351,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -306,7 +363,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
@ -316,7 +375,9 @@ void render_actor_train_passenger_car(Camera *camera, struct TrainCar *actor) {
|
|||
mtxf_translate(spE0, sp160);
|
||||
mtxf_multiplication(spA0, sp120, spE0);
|
||||
|
||||
if (render_set_position(spA0, 3) == 0) { return; }
|
||||
if (render_set_position(spA0, 3) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_dl_22DB8);
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
|
|
|
|||
|
|
@ -4,15 +4,15 @@
|
|||
* @brief Updates the train engine actor.
|
||||
* Used in Kalimari Desert.
|
||||
* Update wheels and make sound, for his update position it's in vehicle.
|
||||
*
|
||||
* @param arg0
|
||||
*
|
||||
* @param arg0
|
||||
*/
|
||||
void update_actor_train_engine(struct TrainCar *arg0) {
|
||||
void update_actor_train_engine(struct TrainCar* arg0) {
|
||||
arg0->wheelRot -= 0x666;
|
||||
|
||||
if (arg0->unk_08 != 0.0f) {
|
||||
arg0->unk_08 = 0.0f;
|
||||
func_800C9D80(arg0->pos, arg0->velocity, SOUND_ARG_LOAD(0x51,0x01,0x80,0x00));
|
||||
func_800C9D80(arg0->pos, arg0->velocity, SOUND_ARG_LOAD(0x51, 0x01, 0x80, 0x00));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -20,9 +20,9 @@ void update_actor_train_engine(struct TrainCar *arg0) {
|
|||
* @brief Updates the train tender actor.
|
||||
* Used in Kalimari Desert.
|
||||
* Update wheels, for his update position it's in vehicle.
|
||||
* @param tender
|
||||
* @param tender
|
||||
*/
|
||||
void update_actor_train_tender(struct TrainCar *tender) {
|
||||
void update_actor_train_tender(struct TrainCar* tender) {
|
||||
tender->wheelRot -= 0x4FA;
|
||||
}
|
||||
|
||||
|
|
@ -30,9 +30,9 @@ void update_actor_train_tender(struct TrainCar *tender) {
|
|||
* @brief Updates the train passenger car actor.
|
||||
* Used in Kalimari Desert.
|
||||
* Update wheels, for his update position it's in vehicle.
|
||||
*
|
||||
* @param arg0
|
||||
*
|
||||
* @param arg0
|
||||
*/
|
||||
void update_actor_train_passenger_car(struct TrainCar *arg0) {
|
||||
void update_actor_train_passenger_car(struct TrainCar* arg0) {
|
||||
arg0->wheelRot -= 0x666;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -13,15 +13,20 @@
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_mario_raceway(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_mario_raceway(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 16000000.0f);
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1],
|
||||
16000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 3.0f);
|
||||
|
|
@ -43,15 +48,20 @@ void render_actor_tree_mario_raceway(Camera *camera, Mat4 arg1, struct Actor *ar
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_yoshi_valley(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_yoshi_valley(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 2.79999995f);
|
||||
|
|
@ -73,15 +83,20 @@ void render_actor_tree_yoshi_valley(Camera *camera, Mat4 arg1, struct Actor *arg
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_royal_raceway(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_royal_raceway(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 2.79999995f);
|
||||
|
|
@ -103,15 +118,20 @@ void render_actor_tree_royal_raceway(Camera *camera, Mat4 arg1, struct Actor *ar
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_moo_moo_farm(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_moo_moo_farm(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 6250000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 6250000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 600.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 5.0f);
|
||||
|
|
@ -127,15 +147,20 @@ void render_actor_tree_moo_moo_farm(Camera *camera, Mat4 arg1, struct Actor *arg
|
|||
}
|
||||
|
||||
// have all the properties of the tree
|
||||
void func_80299864(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void func_80299864(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 2.79999995f);
|
||||
|
|
@ -158,7 +183,7 @@ void func_80299864(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
|||
// Just in-case changed the code into a switch to prevent future crashes.
|
||||
// This comment can be removed when this is confirmed to work.
|
||||
|
||||
switch(gCurrentCourseId) {
|
||||
switch (gCurrentCourseId) {
|
||||
case COURSE_LUIGI_RACEWAY:
|
||||
gSPDisplayList(gDisplayListHead++, d_course_luigi_raceway_dl_FC70);
|
||||
break;
|
||||
|
|
@ -176,15 +201,20 @@ void func_80299864(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_bowser_castle(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_bowser_castle(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 2.79999995f);
|
||||
|
|
@ -206,15 +236,20 @@ void render_actor_tree_bowser_castle(Camera *camera, Mat4 arg1, struct Actor *ar
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_bush_bowser_castle(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_bush_bowser_castle(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 640000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 640000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 2.79999995f);
|
||||
|
|
@ -236,15 +271,20 @@ void render_actor_bush_bowser_castle(Camera *camera, Mat4 arg1, struct Actor *ar
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_frappe_snowland(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_frappe_snowland(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 250000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 2.79999995f);
|
||||
|
|
@ -265,15 +305,20 @@ void render_actor_tree_frappe_snowland(Camera *camera, Mat4 arg1, struct Actor *
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_cactus1_kalimari_desert(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_cactus1_kalimari_desert(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 40000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 1.0f);
|
||||
|
|
@ -294,15 +339,20 @@ void render_actor_tree_cactus1_kalimari_desert(Camera *camera, Mat4 arg1, struct
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_cactus2_kalimari_desert(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_cactus2_kalimari_desert(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 40000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 1.0f);
|
||||
|
|
@ -323,15 +373,20 @@ void render_actor_tree_cactus2_kalimari_desert(Camera *camera, Mat4 arg1, struct
|
|||
* @param arg1
|
||||
* @param arg2
|
||||
*/
|
||||
void render_actor_tree_cactus3_kalimari_desert(Camera *camera, Mat4 arg1, struct Actor *arg2) {
|
||||
void render_actor_tree_cactus3_kalimari_desert(Camera* camera, Mat4 arg1, struct Actor* arg2) {
|
||||
f32 temp_f0;
|
||||
s16 temp_v0 = arg2->flags;
|
||||
|
||||
if ((temp_v0 & 0x800) != 0) { return; }
|
||||
if ((temp_v0 & 0x800) != 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
temp_f0 = is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
temp_f0 =
|
||||
is_within_render_distance(camera->pos, arg2->pos, camera->rot[1], 0, gCameraZoom[camera - camera1], 4000000.0f);
|
||||
|
||||
if (temp_f0 < 0.0f) { return; }
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (((temp_v0 & 0x400) == 0) && (temp_f0 < 40000.0f)) {
|
||||
func_8029794C(arg2->pos, arg2->rot, 0.80000001f);
|
||||
|
|
|
|||
|
|
@ -10,9 +10,10 @@
|
|||
* @param arg0
|
||||
* @param arg1
|
||||
*/
|
||||
void render_actor_wario_sign(Camera *arg0, struct Actor *arg1) {
|
||||
void render_actor_wario_sign(Camera* arg0, struct Actor* arg1) {
|
||||
Mat4 sp38;
|
||||
f32 unk = is_within_render_distance(arg0->pos, arg1->pos, arg0->rot[1], 0, gCameraZoom[arg0 - camera1], 16000000.0f);
|
||||
f32 unk =
|
||||
is_within_render_distance(arg0->pos, arg1->pos, arg0->rot[1], 0, gCameraZoom[arg0 - camera1], 16000000.0f);
|
||||
|
||||
if (!(unk < 0.0f)) {
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
|
||||
|
|
|
|||
|
|
@ -3,9 +3,9 @@
|
|||
/**
|
||||
* @brief Updates the Wario sign actor.
|
||||
* Used in Wario Stadium.
|
||||
*
|
||||
* @param arg0
|
||||
*
|
||||
* @param arg0
|
||||
*/
|
||||
void update_actor_wario_sign(struct Actor *arg0) {
|
||||
void update_actor_wario_sign(struct Actor* arg0) {
|
||||
arg0->rot[1] += 0xB6;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,20 +6,21 @@
|
|||
/**
|
||||
* @brief Renders the Yoshi egg actor.
|
||||
* Actor used in Yoshi Valley.
|
||||
*
|
||||
* @param arg0
|
||||
* @param arg1
|
||||
* @param egg
|
||||
* @param arg3
|
||||
*
|
||||
* @param arg0
|
||||
* @param arg1
|
||||
* @param egg
|
||||
* @param arg3
|
||||
*/
|
||||
void render_actor_yoshi_egg(Camera *arg0, Mat4 arg1, struct YoshiValleyEgg *egg, u16 arg3) {
|
||||
void render_actor_yoshi_egg(Camera* arg0, Mat4 arg1, struct YoshiValleyEgg* egg, u16 arg3) {
|
||||
Mat4 sp60;
|
||||
Vec3s sp5C;
|
||||
Vec3f sp54;
|
||||
f32 temp_f0;
|
||||
|
||||
if (gGamestate != CREDITS_SEQUENCE) {
|
||||
temp_f0 = is_within_render_distance(arg0->pos, egg->pos, arg0->rot[1], 200.0f, gCameraZoom[arg0 - camera1], 16000000.0f);
|
||||
temp_f0 = is_within_render_distance(arg0->pos, egg->pos, arg0->rot[1], 200.0f, gCameraZoom[arg0 - camera1],
|
||||
16000000.0f);
|
||||
if (temp_f0 < 0.0f) {
|
||||
return;
|
||||
}
|
||||
|
|
@ -41,7 +42,9 @@ void render_actor_yoshi_egg(Camera *arg0, Mat4 arg1, struct YoshiValleyEgg *egg,
|
|||
sp5C[1] = egg->eggRot;
|
||||
sp5C[2] = 0;
|
||||
mtxf_pos_rotation_xyz(sp60, egg->pos, sp5C);
|
||||
if (render_set_position(sp60, 0) == 0) { return; }
|
||||
if (render_set_position(sp60, 0) == 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_yoshi_valley_dl_16D70);
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@
|
|||
|
||||
/**
|
||||
* @brief Updates the Yoshi egg actor.
|
||||
*
|
||||
* @param egg
|
||||
*
|
||||
* @param egg
|
||||
*/
|
||||
void update_actor_yoshi_egg(struct YoshiValleyEgg *egg) {
|
||||
void update_actor_yoshi_egg(struct YoshiValleyEgg* egg) {
|
||||
egg->pathRot += 0x5B;
|
||||
egg->pos[0] = egg->pathCenter[0] + (sins(egg->pathRot) * egg->pathRadius);
|
||||
egg->pos[2] = egg->pathCenter[2] + (coss(egg->pathRot) * egg->pathRadius);
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ s16 isNotTheFirst;
|
|||
s16 sMatrixShouldNotPop;
|
||||
s16 sMatrixStackSize;
|
||||
|
||||
void convert_to_fixed_point_matrix_animation(Mtx *dest, Mat4 src) {
|
||||
void convert_to_fixed_point_matrix_animation(Mtx* dest, Mat4 src) {
|
||||
#ifdef AVOID_UB
|
||||
// Avoid type-casting which is technically UB by calling the equivalent
|
||||
// guMtxF2L function. This helps little-endian systems, as well.
|
||||
|
|
@ -21,12 +21,12 @@ void convert_to_fixed_point_matrix_animation(Mtx *dest, Mat4 src) {
|
|||
#else
|
||||
s32 asFixedPoint;
|
||||
register s32 i;
|
||||
register s16 *a3 = (s16 *) dest; // all integer parts stored in first 16 bytes
|
||||
register s16 *t0 = (s16 *) dest + 16; // all fraction parts stored in last 16 bytes
|
||||
register f32 *t1 = (f32 *) src;
|
||||
register s16* a3 = (s16*) dest; // all integer parts stored in first 16 bytes
|
||||
register s16* t0 = (s16*) dest + 16; // all fraction parts stored in last 16 bytes
|
||||
register f32* t1 = (f32*) src;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
asFixedPoint = *t1++ * (1 << 16); //! float-to-integer conversion responsible for PU crashes
|
||||
asFixedPoint = *t1++ * (1 << 16); //! float-to-integer conversion responsible for PU crashes
|
||||
*a3++ = GET_HIGH_S16_OF_32(asFixedPoint); // integer part
|
||||
*t0++ = GET_LOW_S16_OF_32(asFixedPoint); // fraction part
|
||||
}
|
||||
|
|
@ -64,14 +64,14 @@ void mtxf_translate_rotate2(Mat4 dest, Vec3f pos, Vec3s angle) {
|
|||
dest[3][3] = 1.0f;
|
||||
}
|
||||
|
||||
void render_limb_or_add_mtx(Armature *arg0, s16 *arg1, AnimationLimbVector arg2, s32 timeCycle) {
|
||||
void render_limb_or_add_mtx(Armature* arg0, s16* arg1, AnimationLimbVector arg2, s32 timeCycle) {
|
||||
Vec3f pos;
|
||||
Vec3s angle;
|
||||
Mat4 modelMatrix;
|
||||
s32 i;
|
||||
s32 some_offset;
|
||||
Gfx *model;
|
||||
Gfx *virtualModel;
|
||||
Gfx* model;
|
||||
Gfx* virtualModel;
|
||||
virtualModel = arg0->model;
|
||||
if (isNotTheFirst == 0) {
|
||||
for (i = 0; i < 3; i++) {
|
||||
|
|
@ -91,22 +91,23 @@ void render_limb_or_add_mtx(Armature *arg0, s16 *arg1, AnimationLimbVector arg2,
|
|||
}
|
||||
angle[i] = arg1[arg2[i].indexCycle + some_offset];
|
||||
}
|
||||
|
||||
|
||||
mtxf_translate_rotate2(modelMatrix, pos, angle);
|
||||
convert_to_fixed_point_matrix_animation(&gGfxPool->mtxHud[gMatrixHudCount], modelMatrix);
|
||||
sMatrixStackSize += 1;
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL2(&gGfxPool->mtxHud[gMatrixHudCount++]), G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
|
||||
gSPMatrix(gDisplayListHead++, VIRTUAL_TO_PHYSICAL2(&gGfxPool->mtxHud[gMatrixHudCount++]),
|
||||
G_MTX_PUSH | G_MTX_MUL | G_MTX_MODELVIEW);
|
||||
if (virtualModel != NULL) {
|
||||
model = segmented_to_virtual(virtualModel);
|
||||
gSPDisplayList(gDisplayListHead++, model);
|
||||
}
|
||||
}
|
||||
|
||||
void render_armature(Armature *animation, Animation *arg1, s16 timeCycle) {
|
||||
UNUSED u32 *temp;
|
||||
s16 *angle_array;
|
||||
void render_armature(Armature* animation, Animation* arg1, s16 timeCycle) {
|
||||
UNUSED u32* temp;
|
||||
s16* angle_array;
|
||||
s32 some_offset;
|
||||
AnimationLimbVector *animation_cycle_list;
|
||||
AnimationLimbVector* animation_cycle_list;
|
||||
s32 animation_type;
|
||||
s32 someIndex;
|
||||
|
||||
|
|
@ -126,37 +127,38 @@ void render_armature(Armature *animation, Animation *arg1, s16 timeCycle) {
|
|||
sMatrixShouldNotPop = 0;
|
||||
do {
|
||||
animation_type = animation->type;
|
||||
switch (animation_type) { /* irregular */
|
||||
case STOP_ANIMATION:
|
||||
break;
|
||||
case DISABLE_AUTOMATIC_POP_MATRIX:
|
||||
sMatrixShouldNotPop = 1;
|
||||
break;
|
||||
case POP_MATRIX:
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
sMatrixStackSize -= 1;
|
||||
break;
|
||||
case RENDER_MODEL_OR_ADD_POS:
|
||||
if (sMatrixShouldNotPop == 0) {
|
||||
switch (animation_type) { /* irregular */
|
||||
case STOP_ANIMATION:
|
||||
break;
|
||||
case DISABLE_AUTOMATIC_POP_MATRIX:
|
||||
sMatrixShouldNotPop = 1;
|
||||
break;
|
||||
case POP_MATRIX:
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
sMatrixStackSize -= 1;
|
||||
}
|
||||
render_limb_or_add_mtx(animation, angle_array, *animation_cycle_list, (s32) timeCycle);
|
||||
sMatrixShouldNotPop = 0;
|
||||
animation_cycle_list++;
|
||||
break;
|
||||
break;
|
||||
case RENDER_MODEL_OR_ADD_POS:
|
||||
if (sMatrixShouldNotPop == 0) {
|
||||
gSPPopMatrix(gDisplayListHead++, G_MTX_MODELVIEW);
|
||||
sMatrixStackSize -= 1;
|
||||
}
|
||||
render_limb_or_add_mtx(animation, angle_array, *animation_cycle_list, (s32) timeCycle);
|
||||
sMatrixShouldNotPop = 0;
|
||||
animation_cycle_list++;
|
||||
break;
|
||||
}
|
||||
animation = (Armature *) ((uintptr_t *) animation + animation->size);
|
||||
animation = (Armature*) ((uintptr_t*) animation + animation->size);
|
||||
} while (animation_type != STOP_ANIMATION);
|
||||
}
|
||||
|
||||
s16 render_animated_model(Armature *virtualArmature, Animation **virtualListAnimation, s16 animationIndex, s16 timeCycle) {
|
||||
Armature *armature;
|
||||
Animation *animation;
|
||||
Animation **listAnimation;
|
||||
s16 render_animated_model(Armature* virtualArmature, Animation** virtualListAnimation, s16 animationIndex,
|
||||
s16 timeCycle) {
|
||||
Armature* armature;
|
||||
Animation* animation;
|
||||
Animation** listAnimation;
|
||||
|
||||
armature = segmented_to_virtual(virtualArmature);
|
||||
listAnimation = segmented_to_virtual(virtualListAnimation); // Convert the array's address
|
||||
listAnimation = segmented_to_virtual(virtualListAnimation); // Convert the array's address
|
||||
animation = segmented_to_virtual(listAnimation[animationIndex]); // Convert an array element's address
|
||||
if (timeCycle >= animation->animation_length) {
|
||||
timeCycle = 0;
|
||||
|
|
@ -169,9 +171,9 @@ s16 render_animated_model(Armature *virtualArmature, Animation **virtualListAnim
|
|||
return timeCycle;
|
||||
}
|
||||
|
||||
s16 get_animation_length(Animation **addr, s16 offset) {
|
||||
Animation **item = segmented_to_virtual(addr);
|
||||
Animation *temp = (Animation *) segmented_to_virtual((void *) item[offset]);
|
||||
|
||||
s16 get_animation_length(Animation** addr, s16 offset) {
|
||||
Animation** item = segmented_to_virtual(addr);
|
||||
Animation* temp = (Animation*) segmented_to_virtual((void*) item[offset]);
|
||||
|
||||
return temp->animation_length - 1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,10 +6,10 @@
|
|||
/*
|
||||
What I know about animation stuff so far
|
||||
|
||||
Its not clear to me exactly what animations even are in MK64, my speculation is that their some form of matrix manipulation sequence.
|
||||
Presumably the "models" of the objects that are getting animated are a bunch of matrices and the animations somehow change them.
|
||||
animation appears to be responsible for the handling of animations.
|
||||
Animation seem to be reserved for objects, namely: seagulls in KTB, flags in YV, chain chomps in RR, and penguins in SL.
|
||||
Its not clear to me exactly what animations even are in MK64, my speculation is that their some form of matrix
|
||||
manipulation sequence. Presumably the "models" of the objects that are getting animated are a bunch of matrices and the
|
||||
animations somehow change them. animation appears to be responsible for the handling of animations. Animation seem to be
|
||||
reserved for objects, namely: seagulls in KTB, flags in YV, chain chomps in RR, and penguins in SL.
|
||||
|
||||
Each object has 2 pointers of interest, at offsets 0x70 and 0x74 (unk_070 and unk_074).
|
||||
These are passed to render_animated_model, along with what appears to be an index and a timer.
|
||||
|
|
@ -37,7 +37,8 @@ Each "type" indicates a different action to take while iterating over the array.
|
|||
Type 1: Only used to modify Type 0's behaviour
|
||||
Type 2: Pop a matrix
|
||||
Type 3: End of array, stop processing
|
||||
Type 0: Always handles some part of the animation. If preceded by a Type 1 entry it will pop a matrix prior to the animation handling.
|
||||
Type 0: Always handles some part of the animation. If preceded by a Type 1 entry it will pop a matrix prior to the
|
||||
animation handling.
|
||||
|
||||
The "size" entry is used in a weird way. If you have a set of entries like:
|
||||
|
||||
|
|
@ -91,12 +92,12 @@ This is why I don't think referring to this as an "array" is really correct.
|
|||
Iterating over this data not like iterating over a proper array at all.
|
||||
|
||||
I don't really understand the "thing" entries yet.
|
||||
They seem to be used in render_limb_or_add_mtx to set some values in Vec3f which is then used to set some values in a Mat4.
|
||||
This, I assume, is related to the matrix maniplation stuff that's used to actually accomplish the animation.
|
||||
They seem to be used in render_limb_or_add_mtx to set some values in Vec3f which is then used to set some values in a
|
||||
Mat4. This, I assume, is related to the matrix maniplation stuff that's used to actually accomplish the animation.
|
||||
|
||||
The unk_074 pointer points to a list of other pointers.
|
||||
As best as I can tell only the penguins actually have multiple entries in this list, all the other animated objects have just 1 entry.
|
||||
The pointers in this list have entires that look like this struct:
|
||||
As best as I can tell only the penguins actually have multiple entries in this list, all the other animated objects have
|
||||
just 1 entry. The pointers in this list have entires that look like this struct:
|
||||
|
||||
struct {
|
||||
s32 always_set_to_something_but_never_used;
|
||||
|
|
@ -136,7 +137,8 @@ So, for example, if you have a Struct 2 like:
|
|||
d_course_koopa_troopa_beach_unk_data2,
|
||||
d_course_koopa_troopa_beach_unk_data3,
|
||||
|
||||
d_course_koopa_troopa_beach_unk_data2 should be a Type 2 array while d_course_koopa_troopa_beach_unk_data3 is a Type 3 array.
|
||||
d_course_koopa_troopa_beach_unk_data2 should be a Type 2 array while d_course_koopa_troopa_beach_unk_data3 is a Type 3
|
||||
array.
|
||||
|
||||
d_course_koopa_troopa_beach_unk_data3 has entries that look like:
|
||||
//limiter //offset
|
||||
|
|
@ -144,17 +146,19 @@ d_course_koopa_troopa_beach_unk_data3 has entries that look like:
|
|||
0x0037, 0x0001,
|
||||
0x0001, 0x0000,
|
||||
|
||||
In practice the limiter value is always 1 or the animation length, meaning that you either choose 0 or the current animation timer.
|
||||
There's never a situation where you will choose the animation timer until it hits X and then swap to 0.
|
||||
In practice the limiter value is always 1 or the animation length, meaning that you either choose 0 or the current
|
||||
animation timer. There's never a situation where you will choose the animation timer until it hits X and then swap to 0.
|
||||
Its always one or the other, never swapping.
|
||||
|
||||
The first triplet is used in render_armature to access the Type 2 array and the values accessed is placed into sOriginalPosAnimation.
|
||||
sOriginalPosAnimation is a Vec3s is then used to set the values of some Vec3f in render_limb_or_add_mtx.
|
||||
All further triplets are used in render_limb_or_add_mtx to collect Type 2 values to another Vec3s local to the function.
|
||||
Both the local Vec3s and Vec3f are used to create a Mat4, which is then converted to a Mtx, which is then pushed into the matrix pool.
|
||||
The first triplet is used in render_armature to access the Type 2 array and the values accessed is placed into
|
||||
sOriginalPosAnimation. sOriginalPosAnimation is a Vec3s is then used to set the values of some Vec3f in
|
||||
render_limb_or_add_mtx. All further triplets are used in render_limb_or_add_mtx to collect Type 2 values to another
|
||||
Vec3s local to the function. Both the local Vec3s and Vec3f are used to create a Mat4, which is then converted to a Mtx,
|
||||
which is then pushed into the matrix pool.
|
||||
|
||||
The chosen values are then used to access the Type 2 array and the value accessed is placed into sOriginalPosAnimation.
|
||||
sOriginalPosAnimation is a Vec3s that is used to set values in the some Vec3f that goes on to be used to modify the same Mat4 that the `thing` values are placed into.
|
||||
sOriginalPosAnimation is a Vec3s that is used to set values in the some Vec3f that goes on to be used to modify the same
|
||||
Mat4 that the `thing` values are placed into.
|
||||
|
||||
*/
|
||||
|
||||
|
|
@ -164,27 +168,23 @@ sOriginalPosAnimation is a Vec3s that is used to set values in the some Vec3f th
|
|||
#define ANIMATION_POP_MATRIX SIMPLE_ANIMATION_INSTRUCTION(POP_MATRIX)
|
||||
#define ANIMATION_STOP SIMPLE_ANIMATION_INSTRUCTION(STOP_ANIMATION)
|
||||
//! the pos is relative to the previous RENDER_MODEL_OR_ADD_POS if ANIMATION_DISABLE_AUTOMATIC_POP is used
|
||||
#define ANIMATION_RENDER_MODEL_AT(model, x, y, z) RENDER_MODEL_OR_ADD_POS, 0x00000007, 0x00000000, (u32) model, x, y, z
|
||||
#define ANIMATION_RENDER_MODEL_AT(model, x, y, z) RENDER_MODEL_OR_ADD_POS, 0x00000007, 0x00000000, (s64) model, x, y, z
|
||||
//! use RENDER_MODEL_OR_ADD_POS
|
||||
#define ANIMATION_RENDER_MODEL(model) ANIMATION_RENDER_MODEL_AT(model, 0x00000000, 0x00000000, 0x00000000)
|
||||
//! use RENDER_MODEL_OR_ADD_POS
|
||||
#define ANIMATION_ADD_POS(x,y,z) ANIMATION_RENDER_MODEL_AT((u32)NULL, x, y, z)
|
||||
#define ANIMATION_ADD_POS(x, y, z) ANIMATION_RENDER_MODEL_AT((s64) NULL, x, y, z)
|
||||
|
||||
enum animation_type {
|
||||
RENDER_MODEL_OR_ADD_POS,
|
||||
DISABLE_AUTOMATIC_POP_MATRIX,
|
||||
POP_MATRIX,
|
||||
STOP_ANIMATION
|
||||
};
|
||||
enum animation_type { RENDER_MODEL_OR_ADD_POS, DISABLE_AUTOMATIC_POP_MATRIX, POP_MATRIX, STOP_ANIMATION };
|
||||
|
||||
/**
|
||||
* @brief The armature is associated with an AnimationLimbVector which is equal to the number of RENDER_MODEL_OR_ADD_POS in the armature
|
||||
* @brief The armature is associated with an AnimationLimbVector which is equal to the number of RENDER_MODEL_OR_ADD_POS
|
||||
* in the armature
|
||||
*/
|
||||
typedef struct {
|
||||
/* 0x00 */ s64 type;
|
||||
/* 0x04 */ s64 size;
|
||||
/* 0x08 */ s64 always_zero_never_used;
|
||||
/* 0x0C */ Gfx *model;
|
||||
/* 0x0C */ Gfx* model;
|
||||
/* 0x10 */ s64 pos[3];
|
||||
} Armature;
|
||||
|
||||
|
|
@ -193,7 +193,8 @@ typedef struct {
|
|||
/* 0x02 */ u16 indexCycle;
|
||||
} AnimationCycleSpec;
|
||||
|
||||
//! the first are the original position and other are animation specification for each "limb" who correspond to each RENDER_MODEL_OR_ADD_POS so ANIMATION_RENDER_MODEL and ANIMATION_ADD_POS
|
||||
//! the first are the original position and other are animation specification for each "limb" who correspond to each
|
||||
//! RENDER_MODEL_OR_ADD_POS so ANIMATION_RENDER_MODEL and ANIMATION_ADD_POS
|
||||
typedef AnimationCycleSpec AnimationLimbVector[3];
|
||||
|
||||
typedef struct {
|
||||
|
|
@ -201,17 +202,17 @@ typedef struct {
|
|||
/* 0x04 */ s32 always_zero_never_used;
|
||||
/* 0x08 */ s16 animation_length;
|
||||
/* 0x0A */ u16 has_value_but_never_used;
|
||||
/* 0x0C */ s16 *angle_array;
|
||||
/* 0x10 */ AnimationLimbVector *animation_cycle_spec_vector;
|
||||
/* 0x0C */ s16* angle_array;
|
||||
/* 0x10 */ AnimationLimbVector* animation_cycle_spec_vector;
|
||||
} Animation;
|
||||
|
||||
/* Function Prototypes */
|
||||
|
||||
void convert_to_fixed_point_matrix_animation(Mtx *dest, Mat4 src);
|
||||
void mtxf_translate_rotate2(Mat4 dest, Vec3f b, Vec3s c);
|
||||
s16 get_animation_length(Animation **, s16);
|
||||
void convert_to_fixed_point_matrix_animation(Mtx* dest, Mat4 src);
|
||||
void mtxf_translate_rotate2(Mat4 dest, Vec3f pos, Vec3s angle);
|
||||
s16 get_animation_length(Animation**, s16);
|
||||
void render_limb_or_add_mtx(Armature*, s16*, AnimationLimbVector, s32);
|
||||
void render_armature(Armature*, Animation*, s16);
|
||||
s16 render_animated_model(Armature*, Animation**, s16, s16);
|
||||
s16 render_animated_model(Armature*, Animation**, s16, s16);
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -6,32 +6,30 @@
|
|||
#include "../buffers/audio_heap.h"
|
||||
|
||||
struct ReverbSettingsEU sReverbSettings[] = {
|
||||
{0x01, 0x28, 0x4fff},
|
||||
{0x01, 0x14, 0x5fff},
|
||||
{ 0x01, 0x28, 0x4fff },
|
||||
{ 0x01, 0x14, 0x5fff },
|
||||
};
|
||||
|
||||
struct AudioSessionSettingsEU gAudioSessionPresets[] = {
|
||||
{ 0x000068b0, 0x01, 0x18, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600,
|
||||
0x00000000, 0x00005800, 0x00002800, 0x00000000 },
|
||||
{ 0x000068b0, 0x01, 0x18, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600, 0x00000000,
|
||||
0x00005800, 0x00002800, 0x00000000 },
|
||||
|
||||
{ 0x000068b0, 0x01, 0x14, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600,
|
||||
0x00000000, 0x00005800, 0x00002800, 0x00000000 },
|
||||
{ 0x000068b0, 0x01, 0x14, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600, 0x00000000,
|
||||
0x00005800, 0x00002800, 0x00000000 },
|
||||
|
||||
{ 0x000068b0, 0x01, 0x1c, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600,
|
||||
0x00000000, 0x00005800, 0x00002800, 0x00000000 },
|
||||
{ 0x000068b0, 0x01, 0x1c, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600, 0x00000000,
|
||||
0x00005800, 0x00002800, 0x00000000 },
|
||||
|
||||
{ 0x000068b0, 0x01, 0x1c, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600,
|
||||
0x00000000, 0x00005800, 0x00002800, 0x00000000 },
|
||||
{ 0x000068b0, 0x01, 0x1c, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600, 0x00000000,
|
||||
0x00005800, 0x00002800, 0x00000000 },
|
||||
|
||||
{ 0x000068b0, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600,
|
||||
0x00000000, 0x00004800, 0x00002000, 0x00000000 },
|
||||
{ 0x000068b0, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[0], 0x7fff, 0x0000, 0x00002a00, 0x00004600, 0x00000000,
|
||||
0x00004800, 0x00002000, 0x00000000 },
|
||||
|
||||
{ 0x000068b0, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[1], 0x7fff, 0x0000, 0x00002a00, 0x00004600,
|
||||
0x00000000, 0x00004800, 0x00002000, 0x00000000 },
|
||||
{ 0x000068b0, 0x01, 0x10, 0x01, 0x00, &sReverbSettings[1], 0x7fff, 0x0000, 0x00002a00, 0x00004600, 0x00000000,
|
||||
0x00004800, 0x00002000, 0x00000000 },
|
||||
};
|
||||
|
||||
|
||||
|
||||
s8 gUnusedCount800EA5C8 = 0x1c;
|
||||
s16 gTatumsPerBeat = TATUMS_PER_BEAT;
|
||||
s32 gAudioHeapSize = AUDIO_HEAP_SIZE;
|
||||
|
|
|
|||
400
src/audio/data.c
400
src/audio/data.c
|
|
@ -6,286 +6,170 @@
|
|||
#include "effects.h"
|
||||
|
||||
s16 sSawtoothWaves[256] = {
|
||||
0, 1023, 2047, 3071, 4095, 5119, 6143, 7167,
|
||||
8191, 9215, 10239, 11263, 12287, 13311, 14335, 15359,
|
||||
16383, 17407, 18431, 19455, 20479, 21503, 22527, 23551,
|
||||
24575, 25599, 26623, 27647, 28671, 29695, 30719, 31743,
|
||||
-32767, -31743, -30719, -29695, -28671, -27647, -26623, -25599,
|
||||
-24575, -23551, -22527, -21503, -20479, -19455, -18431, -17407,
|
||||
-16383, -15359, -14335, -13311, -12287, -11263, -10239, -9215,
|
||||
-8191, -7167, -6143, -5119, -4095, -3071, -2047, -1023,
|
||||
0, 2047, 4095, 6143, 8191, 10239, 12287, 14335,
|
||||
16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719,
|
||||
-32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431,
|
||||
-16383, -14335, -12287, -10239, -8191, -6143, -4095, -2047,
|
||||
0, 2047, 4095, 6143, 8191, 10239, 12287, 14335,
|
||||
16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719,
|
||||
-32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431,
|
||||
-16383, -14335, -12287, -10239, -8191, -6143, -4095, -2047,
|
||||
0, 4095, 8191, 12287, 16383, 20479, 24575, 28671,
|
||||
-32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095,
|
||||
0, 4095, 8191, 12287, 16383, 20479, 24575, 28671,
|
||||
-32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095,
|
||||
0, 4095, 8191, 12287, 16383, 20479, 24575, 28671,
|
||||
-32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095,
|
||||
0, 4095, 8191, 12287, 16383, 20479, 24575, 28671,
|
||||
-32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 1023, 2047, 3071, 4095, 5119, 6143, 7167, 8191, 9215, 10239, 11263, 12287, 13311,
|
||||
14335, 15359, 16383, 17407, 18431, 19455, 20479, 21503, 22527, 23551, 24575, 25599, 26623, 27647,
|
||||
28671, 29695, 30719, 31743, -32767, -31743, -30719, -29695, -28671, -27647, -26623, -25599, -24575, -23551,
|
||||
-22527, -21503, -20479, -19455, -18431, -17407, -16383, -15359, -14335, -13311, -12287, -11263, -10239, -9215,
|
||||
-8191, -7167, -6143, -5119, -4095, -3071, -2047, -1023, 0, 2047, 4095, 6143, 8191, 10239,
|
||||
12287, 14335, 16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719, -32767, -30719, -28671, -26623,
|
||||
-24575, -22527, -20479, -18431, -16383, -14335, -12287, -10239, -8191, -6143, -4095, -2047, 0, 2047,
|
||||
4095, 6143, 8191, 10239, 12287, 14335, 16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719,
|
||||
-32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431, -16383, -14335, -12287, -10239, -8191, -6143,
|
||||
-4095, -2047, 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671, -32767, -28671, -24575, -20479,
|
||||
-16383, -12287, -8191, -4095, 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671, -32767, -28671,
|
||||
-24575, -20479, -16383, -12287, -8191, -4095, 0, 4095, 8191, 12287, 16383, 20479, 24575, 28671,
|
||||
-32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, 0, 4095, 8191, 12287, 16383, 20479,
|
||||
24575, 28671, -32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, 0, 8191, 16383, 24575,
|
||||
-32767, -24575, -16383, -8191, 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, 0, 8191,
|
||||
16383, 24575, -32767, -24575, -16383, -8191, 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, 0, 8191, 16383, 24575, -32767, -24575,
|
||||
-16383, -8191, 0, 8191, 16383, 24575, -32767, -24575, -16383, -8191, 0, 8191, 16383, 24575,
|
||||
-32767, -24575, -16383, -8191,
|
||||
};
|
||||
|
||||
s16 sTriangleWaves[256] = {
|
||||
0, 2047, 4095, 6143, 8191, 10239, 12287, 14335,
|
||||
16383, 18431, 20479, 22527, 24575, 26623, 28671, 30719,
|
||||
32767, 30719, 28671, 26623, 24575, 22527, 20479, 18431,
|
||||
16383, 14335, 12287, 10239, 8191, 6143, 4095, 2047,
|
||||
0, -2047, -4095, -6143, -8191, -10239, -12287, -14335,
|
||||
-16383, -18431, -20479, -22527, -24575, -26623, -28671, -30719,
|
||||
-32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431,
|
||||
-16383, -14335, -12287, -10239, -8191, -6143, -4095, -2047,
|
||||
0, 4095, 8191, 12287, 16383, 20479, 24575, 28671,
|
||||
32767, 28671, 24575, 20479, 16383, 12287, 8191, 4095,
|
||||
0, -4095, -8191, -12287, -16383, -20479, -24575, -28671,
|
||||
-32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095,
|
||||
0, 4095, 8191, 12287, 16383, 20479, 24575, 28671,
|
||||
32767, 28671, 24575, 20479, 16383, 12287, 8191, 4095,
|
||||
0, -4095, -8191, -12287, -16383, -20479, -24575, -28671,
|
||||
-32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095,
|
||||
0, 8191, 16383, 24575, 32767, 24575, 16383, 8191,
|
||||
0, -8191, -16383, -24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, 32767, 24575, 16383, 8191,
|
||||
0, -8191, -16383, -24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, 32767, 24575, 16383, 8191,
|
||||
0, -8191, -16383, -24575, -32767, -24575, -16383, -8191,
|
||||
0, 8191, 16383, 24575, 32767, 24575, 16383, 8191,
|
||||
0, -8191, -16383, -24575, -32767, -24575, -16383, -8191,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 2047, 4095, 6143, 8191, 10239, 12287, 14335, 16383, 18431, 20479, 22527, 24575, 26623,
|
||||
28671, 30719, 32767, 30719, 28671, 26623, 24575, 22527, 20479, 18431, 16383, 14335, 12287, 10239,
|
||||
8191, 6143, 4095, 2047, 0, -2047, -4095, -6143, -8191, -10239, -12287, -14335, -16383, -18431,
|
||||
-20479, -22527, -24575, -26623, -28671, -30719, -32767, -30719, -28671, -26623, -24575, -22527, -20479, -18431,
|
||||
-16383, -14335, -12287, -10239, -8191, -6143, -4095, -2047, 0, 4095, 8191, 12287, 16383, 20479,
|
||||
24575, 28671, 32767, 28671, 24575, 20479, 16383, 12287, 8191, 4095, 0, -4095, -8191, -12287,
|
||||
-16383, -20479, -24575, -28671, -32767, -28671, -24575, -20479, -16383, -12287, -8191, -4095, 0, 4095,
|
||||
8191, 12287, 16383, 20479, 24575, 28671, 32767, 28671, 24575, 20479, 16383, 12287, 8191, 4095,
|
||||
0, -4095, -8191, -12287, -16383, -20479, -24575, -28671, -32767, -28671, -24575, -20479, -16383, -12287,
|
||||
-8191, -4095, 0, 8191, 16383, 24575, 32767, 24575, 16383, 8191, 0, -8191, -16383, -24575,
|
||||
-32767, -24575, -16383, -8191, 0, 8191, 16383, 24575, 32767, 24575, 16383, 8191, 0, -8191,
|
||||
-16383, -24575, -32767, -24575, -16383, -8191, 0, 8191, 16383, 24575, 32767, 24575, 16383, 8191,
|
||||
0, -8191, -16383, -24575, -32767, -24575, -16383, -8191, 0, 8191, 16383, 24575, 32767, 24575,
|
||||
16383, 8191, 0, -8191, -16383, -24575, -32767, -24575, -16383, -8191, 0, 16383, 32767, 16383,
|
||||
0, -16383, -32767, -16383, 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, 0, 16383,
|
||||
32767, 16383, 0, -16383, -32767, -16383, 0, 16383, 32767, 16383, 0, -16383, -32767, -16383,
|
||||
0, 16383, 32767, 16383, 0, -16383, -32767, -16383, 0, 16383, 32767, 16383, 0, -16383,
|
||||
-32767, -16383, 0, 16383, 32767, 16383, 0, -16383, -32767, -16383, 0, 16383, 32767, 16383,
|
||||
0, -16383, -32767, -16383,
|
||||
};
|
||||
|
||||
s16 sSineWaves[256] = {
|
||||
0, 3211, 6392, 9511, 12539, 15446, 18204, 20787,
|
||||
23169, 25329, 27244, 28897, 30272, 31356, 32137, 32609,
|
||||
32767, 32609, 32137, 31356, 30272, 28897, 27244, 25329,
|
||||
23169, 20787, 18204, 15446, 12539, 9511, 6392, 3211,
|
||||
0, -3211, -6392, -9511, -12539, -15446, -18204, -20787,
|
||||
-23169, -25329, -27244, -28897, -30272, -31356, -32137, -32609,
|
||||
-32767, -32609, -32137, -31356, -30272, -28897, -27244, -25329,
|
||||
-23169, -20787, -18204, -15446, -12539, -9511, -6392, -3211,
|
||||
0, 6392, 12539, 18204, 23169, 27244, 30272, 32137,
|
||||
32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392,
|
||||
0, -6392, -12539, -18204, -23169, -27244, -30272, -32137,
|
||||
-32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392,
|
||||
0, 6392, 12539, 18204, 23169, 27244, 30272, 32137,
|
||||
32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392,
|
||||
0, -6392, -12539, -18204, -23169, -27244, -30272, -32137,
|
||||
-32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392,
|
||||
0, 12539, 23169, 30272, 32767, 30272, 23169, 12539,
|
||||
0, -12539, -23169, -30272, -32767, -30272, -23169, -12539,
|
||||
0, 12539, 23169, 30272, 32767, 30272, 23169, 12539,
|
||||
0, -12539, -23169, -30272, -32767, -30272, -23169, -12539,
|
||||
0, 12539, 23169, 30272, 32767, 30272, 23169, 12539,
|
||||
0, -12539, -23169, -30272, -32767, -30272, -23169, -12539,
|
||||
0, 12539, 23169, 30272, 32767, 30272, 23169, 12539,
|
||||
0, -12539, -23169, -30272, -32767, -30272, -23169, -12539,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 3211, 6392, 9511, 12539, 15446, 18204, 20787, 23169, 25329, 27244, 28897, 30272, 31356,
|
||||
32137, 32609, 32767, 32609, 32137, 31356, 30272, 28897, 27244, 25329, 23169, 20787, 18204, 15446,
|
||||
12539, 9511, 6392, 3211, 0, -3211, -6392, -9511, -12539, -15446, -18204, -20787, -23169, -25329,
|
||||
-27244, -28897, -30272, -31356, -32137, -32609, -32767, -32609, -32137, -31356, -30272, -28897, -27244, -25329,
|
||||
-23169, -20787, -18204, -15446, -12539, -9511, -6392, -3211, 0, 6392, 12539, 18204, 23169, 27244,
|
||||
30272, 32137, 32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392, 0, -6392, -12539, -18204,
|
||||
-23169, -27244, -30272, -32137, -32767, -32137, -30272, -27244, -23169, -18204, -12539, -6392, 0, 6392,
|
||||
12539, 18204, 23169, 27244, 30272, 32137, 32767, 32137, 30272, 27244, 23169, 18204, 12539, 6392,
|
||||
0, -6392, -12539, -18204, -23169, -27244, -30272, -32137, -32767, -32137, -30272, -27244, -23169, -18204,
|
||||
-12539, -6392, 0, 12539, 23169, 30272, 32767, 30272, 23169, 12539, 0, -12539, -23169, -30272,
|
||||
-32767, -30272, -23169, -12539, 0, 12539, 23169, 30272, 32767, 30272, 23169, 12539, 0, -12539,
|
||||
-23169, -30272, -32767, -30272, -23169, -12539, 0, 12539, 23169, 30272, 32767, 30272, 23169, 12539,
|
||||
0, -12539, -23169, -30272, -32767, -30272, -23169, -12539, 0, 12539, 23169, 30272, 32767, 30272,
|
||||
23169, 12539, 0, -12539, -23169, -30272, -32767, -30272, -23169, -12539, 0, 23169, 32767, 23169,
|
||||
0, -23169, -32767, -23169, 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, 0, 23169,
|
||||
32767, 23169, 0, -23169, -32767, -23169, 0, 23169, 32767, 23169, 0, -23169, -32767, -23169,
|
||||
0, 23169, 32767, 23169, 0, -23169, -32767, -23169, 0, 23169, 32767, 23169, 0, -23169,
|
||||
-32767, -23169, 0, 23169, 32767, 23169, 0, -23169, -32767, -23169, 0, 23169, 32767, 23169,
|
||||
0, -23169, -32767, -23169,
|
||||
};
|
||||
s16 sSquareWaves[256] = {
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
|
||||
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
|
||||
-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, 0, 0, 0, 0,
|
||||
-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
|
||||
0, 0, 0, 0, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, -32767, -32767, -32767, -32767,
|
||||
0, 0, 0, 0, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, -32767, -32767, -32767, -32767,
|
||||
0, 0, 0, 0, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, -32767, -32767, -32767, -32767,
|
||||
0, 0, 0, 0, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, -32767, -32767, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
|
||||
32767, 32767, 32767, 32767, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767,
|
||||
-32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, 0, 0, 0, 0, 0, 0,
|
||||
0, 0, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 0, 0, 0, 0,
|
||||
0, 0, 0, 0, -32767, -32767, -32767, -32767, -32767, -32767, -32767, -32767, 0, 0,
|
||||
0, 0, 0, 0, 0, 0, 32767, 32767, 32767, 32767, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, 0, 0, 0, 0, -32767, -32767, -32767, -32767, -32767, -32767,
|
||||
-32767, -32767, 0, 0, 0, 0, 32767, 32767, 32767, 32767, 0, 0, 0, 0,
|
||||
-32767, -32767, -32767, -32767, 0, 0, 0, 0, 32767, 32767, 32767, 32767, 0, 0,
|
||||
0, 0, -32767, -32767, -32767, -32767, 0, 0, 0, 0, 32767, 32767, 32767, 32767,
|
||||
0, 0, 0, 0, -32767, -32767, -32767, -32767, 0, 0, 0, 0, 32767, 32767,
|
||||
32767, 32767, 0, 0, 0, 0, -32767, -32767, -32767, -32767, 0, 0, 32767, 32767,
|
||||
0, 0, -32767, -32767, 0, 0, 32767, 32767, 0, 0, -32767, -32767, 0, 0,
|
||||
32767, 32767, 0, 0, -32767, -32767, 0, 0, 32767, 32767, 0, 0, -32767, -32767,
|
||||
0, 0, 32767, 32767, 0, 0, -32767, -32767, 0, 0, 32767, 32767, 0, 0,
|
||||
-32767, -32767, 0, 0, 32767, 32767, 0, 0, -32767, -32767, 0, 0, 32767, 32767,
|
||||
0, 0, -32767, -32767,
|
||||
};
|
||||
s16 sUnknownWave6[256] = {
|
||||
0, -25689, -25791, 27803, -27568, -21030, 22174, 6298,
|
||||
27071, -18531, 28649, 2284, 3380, 6890, -12682, -21114,
|
||||
10000, -24520, 32296, 12248, 15096, 15354, -12021, -31545,
|
||||
-12929, 6388, -11064, 30456, -30316, -21999, 29691, 27649,
|
||||
0, -27649, -29691, 21999, 30316, -30457, 11064, -6387,
|
||||
12929, 31544, 12021, -15353, -15096, -12249, -32296, 24521,
|
||||
-10000, 21113, 12682, -6889, -3380, -2285, -28649, 18532,
|
||||
-27071, -6299, -22174, 21031, 27568, -27804, 25791, 25690,
|
||||
0, -25791, -27568, 22174, 27071, 28649, 3380, -12682,
|
||||
10000, 32296, 15096, -12021, -12929, -11064, -30316, 29691,
|
||||
0, -29691, 30316, 11064, 12929, 12021, -15096, -32296,
|
||||
-10000, 12682, -3380, -28649, -27071, -22174, 27568, 25791,
|
||||
0, -25791, -27568, 22174, 27071, 28649, 3380, -12682,
|
||||
10000, 32296, 15096, -12021, -12929, -11064, -30316, 29691,
|
||||
0, -29691, 30316, 11064, 12929, 12021, -15096, -32296,
|
||||
-10000, 12682, -3380, -28649, -27071, -22174, 27568, 25791,
|
||||
0, -27568, 27071, 3380, 10000, 15096, -12929, -30316,
|
||||
0, 30316, 12929, -15096, -10000, -3380, -27071, 27568,
|
||||
0, -27568, 27071, 3380, 10000, 15096, -12929, -30316,
|
||||
0, 30316, 12929, -15096, -10000, -3380, -27071, 27568,
|
||||
0, -27568, 27071, 3380, 10000, 15096, -12929, -30316,
|
||||
0, 30316, 12929, -15096, -10000, -3380, -27071, 27568,
|
||||
0, -27568, 27071, 3380, 10000, 15096, -12929, -30316,
|
||||
0, 30316, 12929, -15096, -10000, -3380, -27071, 27568,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, -25689, -25791, 27803, -27568, -21030, 22174, 6298, 27071, -18531, 28649, 2284, 3380, 6890,
|
||||
-12682, -21114, 10000, -24520, 32296, 12248, 15096, 15354, -12021, -31545, -12929, 6388, -11064, 30456,
|
||||
-30316, -21999, 29691, 27649, 0, -27649, -29691, 21999, 30316, -30457, 11064, -6387, 12929, 31544,
|
||||
12021, -15353, -15096, -12249, -32296, 24521, -10000, 21113, 12682, -6889, -3380, -2285, -28649, 18532,
|
||||
-27071, -6299, -22174, 21031, 27568, -27804, 25791, 25690, 0, -25791, -27568, 22174, 27071, 28649,
|
||||
3380, -12682, 10000, 32296, 15096, -12021, -12929, -11064, -30316, 29691, 0, -29691, 30316, 11064,
|
||||
12929, 12021, -15096, -32296, -10000, 12682, -3380, -28649, -27071, -22174, 27568, 25791, 0, -25791,
|
||||
-27568, 22174, 27071, 28649, 3380, -12682, 10000, 32296, 15096, -12021, -12929, -11064, -30316, 29691,
|
||||
0, -29691, 30316, 11064, 12929, 12021, -15096, -32296, -10000, 12682, -3380, -28649, -27071, -22174,
|
||||
27568, 25791, 0, -27568, 27071, 3380, 10000, 15096, -12929, -30316, 0, 30316, 12929, -15096,
|
||||
-10000, -3380, -27071, 27568, 0, -27568, 27071, 3380, 10000, 15096, -12929, -30316, 0, 30316,
|
||||
12929, -15096, -10000, -3380, -27071, 27568, 0, -27568, 27071, 3380, 10000, 15096, -12929, -30316,
|
||||
0, 30316, 12929, -15096, -10000, -3380, -27071, 27568, 0, -27568, 27071, 3380, 10000, 15096,
|
||||
-12929, -30316, 0, 30316, 12929, -15096, -10000, -3380, -27071, 27568, 0, 27071, 10000, -12929,
|
||||
0, 12929, -10000, -27071, 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, 0, 27071,
|
||||
10000, -12929, 0, 12929, -10000, -27071, 0, 27071, 10000, -12929, 0, 12929, -10000, -27071,
|
||||
0, 27071, 10000, -12929, 0, 12929, -10000, -27071, 0, 27071, 10000, -12929, 0, 12929,
|
||||
-10000, -27071, 0, 27071, 10000, -12929, 0, 12929, -10000, -27071, 0, 27071, 10000, -12929,
|
||||
0, 12929, -10000, -27071,
|
||||
};
|
||||
|
||||
s16 gUnknownWave7[256] = {
|
||||
0, 16316, 20148, 20257, 27209, -32657, 29264, 27259,
|
||||
-29394, -21494, -26410, 30770, 30033, 29130, 20206, 14129,
|
||||
20000, 25677, 19024, 9146, 6921, 4506, -5868, -13122,
|
||||
-7858, -1885, -7042, -14025, -11903, -8647, -12346, -12396,
|
||||
0, 12396, 12346, 8647, 11903, 14024, 7042, 1886,
|
||||
7858, 13121, 5868, -4505, -6921, -9147, -19024, -25676,
|
||||
-20000, -14130, -20206, -29129, -30033, -30771, 26410, 21495,
|
||||
29394, -27260, -29264, 32658, -27209, -20258, -20148, -16315,
|
||||
0, 20148, 27209, 29264, -29394, -26410, 30033, 20206,
|
||||
20000, 19024, 6921, -5868, -7858, -7042, -11903, -12346,
|
||||
0, 12346, 11903, 7042, 7858, 5868, -6921, -19024,
|
||||
-20000, -20206, -30033, 26410, 29394, -29264, -27209, -20148,
|
||||
0, 20148, 27209, 29264, -29394, -26410, 30033, 20206,
|
||||
20000, 19024, 6921, -5868, -7858, -7042, -11903, -12346,
|
||||
0, 12346, 11903, 7042, 7858, 5868, -6921, -19024,
|
||||
-20000, -20206, -30033, 26410, 29394, -29264, -27209, -20148,
|
||||
0, 27209, -29394, 30033, 20000, 6921, -7858, -11903,
|
||||
0, 11903, 7858, -6921, -20000, -30033, 29394, -27209,
|
||||
0, 27209, -29394, 30033, 20000, 6921, -7858, -11903,
|
||||
0, 11903, 7858, -6921, -20000, -30033, 29394, -27209,
|
||||
0, 27209, -29394, 30033, 20000, 6921, -7858, -11903,
|
||||
0, 11903, 7858, -6921, -20000, -30033, 29394, -27209,
|
||||
0, 27209, -29394, 30033, 20000, 6921, -7858, -11903,
|
||||
0, 11903, 7858, -6921, -20000, -30033, 29394, -27209,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, 16316, 20148, 20257, 27209, -32657, 29264, 27259, -29394, -21494, -26410, 30770, 30033, 29130,
|
||||
20206, 14129, 20000, 25677, 19024, 9146, 6921, 4506, -5868, -13122, -7858, -1885, -7042, -14025,
|
||||
-11903, -8647, -12346, -12396, 0, 12396, 12346, 8647, 11903, 14024, 7042, 1886, 7858, 13121,
|
||||
5868, -4505, -6921, -9147, -19024, -25676, -20000, -14130, -20206, -29129, -30033, -30771, 26410, 21495,
|
||||
29394, -27260, -29264, 32658, -27209, -20258, -20148, -16315, 0, 20148, 27209, 29264, -29394, -26410,
|
||||
30033, 20206, 20000, 19024, 6921, -5868, -7858, -7042, -11903, -12346, 0, 12346, 11903, 7042,
|
||||
7858, 5868, -6921, -19024, -20000, -20206, -30033, 26410, 29394, -29264, -27209, -20148, 0, 20148,
|
||||
27209, 29264, -29394, -26410, 30033, 20206, 20000, 19024, 6921, -5868, -7858, -7042, -11903, -12346,
|
||||
0, 12346, 11903, 7042, 7858, 5868, -6921, -19024, -20000, -20206, -30033, 26410, 29394, -29264,
|
||||
-27209, -20148, 0, 27209, -29394, 30033, 20000, 6921, -7858, -11903, 0, 11903, 7858, -6921,
|
||||
-20000, -30033, 29394, -27209, 0, 27209, -29394, 30033, 20000, 6921, -7858, -11903, 0, 11903,
|
||||
7858, -6921, -20000, -30033, 29394, -27209, 0, 27209, -29394, 30033, 20000, 6921, -7858, -11903,
|
||||
0, 11903, 7858, -6921, -20000, -30033, 29394, -27209, 0, 27209, -29394, 30033, 20000, 6921,
|
||||
-7858, -11903, 0, 11903, 7858, -6921, -20000, -30033, 29394, -27209, 0, -29394, 20000, -7858,
|
||||
0, 7858, -20000, 29394, 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, 0, -29394,
|
||||
20000, -7858, 0, 7858, -20000, 29394, 0, -29394, 20000, -7858, 0, 7858, -20000, 29394,
|
||||
0, -29394, 20000, -7858, 0, 7858, -20000, 29394, 0, -29394, 20000, -7858, 0, 7858,
|
||||
-20000, 29394, 0, -29394, 20000, -7858, 0, 7858, -20000, 29394, 0, -29394, 20000, -7858,
|
||||
0, 7858, -20000, 29394,
|
||||
};
|
||||
|
||||
s16 *gWaveSamples[6] = { sSawtoothWaves, sTriangleWaves, sSineWaves, sSquareWaves, sUnknownWave6, gUnknownWave7 };
|
||||
s16* gWaveSamples[6] = { sSawtoothWaves, sTriangleWaves, sSineWaves, sSquareWaves, sUnknownWave6, gUnknownWave7 };
|
||||
|
||||
//! @todo file boundary?
|
||||
u32 fill[2] = {0x00000000, 0x00000000};
|
||||
u32 fill[2] = { 0x00000000, 0x00000000 };
|
||||
|
||||
// Transforms a pitch scale factor in -127..127 into a frequency scale factor
|
||||
// between -1 and +1 octave.
|
||||
// gPitchBendFrequencyScale[k] = 0.5 * 2^(k/127)
|
||||
f32 gPitchBendFrequencyScale[256] = {
|
||||
0.5f, 0.5f, 0.502736f, 0.505488f,
|
||||
0.508254f, 0.511036f, 0.513833f, 0.516645f,
|
||||
0.519472f, 0.522315f, 0.525174f, 0.528048f,
|
||||
0.530938f, 0.533843f, 0.536765f, 0.539702f,
|
||||
0.542656f, 0.545626f, 0.548612f, 0.551614f,
|
||||
0.554633f, 0.557669f, 0.560721f, 0.563789f,
|
||||
0.566875f, 0.569977f, 0.573097f, 0.576233f,
|
||||
0.579387f, 0.582558f, 0.585746f, 0.588951f,
|
||||
0.592175f, 0.595415f, 0.598674f, 0.60195f,
|
||||
0.605245f, 0.608557f, 0.611888f, 0.615236f,
|
||||
0.618603f, 0.621989f, 0.625393f, 0.628815f,
|
||||
0.632257f, 0.635717f, 0.639196f, 0.642694f,
|
||||
0.646212f, 0.649748f, 0.653304f, 0.65688f,
|
||||
0.660475f, 0.664089f, 0.667724f, 0.671378f,
|
||||
0.675052f, 0.678747f, 0.682461f, 0.686196f,
|
||||
0.689952f, 0.693727f, 0.697524f, 0.701341f,
|
||||
0.70518f, 0.709039f, 0.712919f, 0.716821f,
|
||||
0.720744f, 0.724689f, 0.728655f, 0.732642f,
|
||||
0.736652f, 0.740684f, 0.744737f, 0.748813f,
|
||||
0.752911f, 0.757031f, 0.761175f, 0.76534f,
|
||||
0.769529f, 0.77374f, 0.777975f, 0.782232f,
|
||||
0.786513f, 0.790818f, 0.795146f, 0.799497f,
|
||||
0.803873f, 0.808272f, 0.812696f, 0.817144f,
|
||||
0.821616f, 0.826112f, 0.830633f, 0.835179f,
|
||||
0.83975f, 0.844346f, 0.848966f, 0.853613f,
|
||||
0.858284f, 0.862982f, 0.867704f, 0.872453f,
|
||||
0.877228f, 0.882029f, 0.886856f, 0.891709f,
|
||||
0.89659f, 0.901496f, 0.90643f, 0.911391f,
|
||||
0.916379f, 0.921394f, 0.926436f, 0.931507f,
|
||||
0.936604f, 0.94173f, 0.946884f, 0.952066f,
|
||||
0.957277f, 0.962516f, 0.967783f, 0.97308f,
|
||||
0.978405f, 0.98376f, 0.989144f, 0.994557f,
|
||||
1.0f, 1.005473f, 1.010975f, 1.016508f,
|
||||
1.022071f, 1.027665f, 1.033289f, 1.038944f,
|
||||
1.04463f, 1.050347f, 1.056095f, 1.061875f,
|
||||
1.067687f, 1.07353f, 1.079405f, 1.085312f,
|
||||
1.091252f, 1.097224f, 1.103229f, 1.109267f,
|
||||
1.115337f, 1.121441f, 1.127579f, 1.13375f,
|
||||
1.139955f, 1.146193f, 1.152466f, 1.158773f,
|
||||
1.165115f, 1.171491f, 1.177903f, 1.184349f,
|
||||
1.190831f, 1.197348f, 1.203901f, 1.210489f,
|
||||
1.217114f, 1.223775f, 1.230473f, 1.237207f,
|
||||
1.243978f, 1.250786f, 1.257631f, 1.264514f,
|
||||
1.271434f, 1.278392f, 1.285389f, 1.292423f,
|
||||
1.299497f, 1.306608f, 1.313759f, 1.320949f,
|
||||
1.328178f, 1.335447f, 1.342756f, 1.350104f,
|
||||
1.357493f, 1.364922f, 1.372392f, 1.379903f,
|
||||
1.387455f, 1.395048f, 1.402683f, 1.41036f,
|
||||
1.418078f, 1.425839f, 1.433642f, 1.441488f,
|
||||
1.449377f, 1.457309f, 1.465285f, 1.473304f,
|
||||
1.481367f, 1.489474f, 1.497626f, 1.505822f,
|
||||
1.514063f, 1.522349f, 1.530681f, 1.539058f,
|
||||
1.547481f, 1.55595f, 1.564465f, 1.573027f,
|
||||
1.581636f, 1.590292f, 1.598995f, 1.607746f,
|
||||
1.616545f, 1.625392f, 1.634287f, 1.643231f,
|
||||
1.652224f, 1.661266f, 1.670358f, 1.6795f,
|
||||
1.688691f, 1.697933f, 1.707225f, 1.716569f,
|
||||
1.725963f, 1.735409f, 1.744906f, 1.754456f,
|
||||
1.764058f, 1.773712f, 1.783419f, 1.793179f,
|
||||
1.802993f, 1.81286f, 1.822782f, 1.832757f,
|
||||
1.842788f, 1.852873f, 1.863013f, 1.873209f,
|
||||
1.883461f, 1.893768f, 1.904132f, 1.914553f,
|
||||
1.925031f, 1.935567f, 1.946159f, 1.95681f,
|
||||
1.96752f, 1.978287f, 1.989114f, 2.0f
|
||||
0.5f, 0.5f, 0.502736f, 0.505488f, 0.508254f, 0.511036f, 0.513833f, 0.516645f, 0.519472f, 0.522315f,
|
||||
0.525174f, 0.528048f, 0.530938f, 0.533843f, 0.536765f, 0.539702f, 0.542656f, 0.545626f, 0.548612f, 0.551614f,
|
||||
0.554633f, 0.557669f, 0.560721f, 0.563789f, 0.566875f, 0.569977f, 0.573097f, 0.576233f, 0.579387f, 0.582558f,
|
||||
0.585746f, 0.588951f, 0.592175f, 0.595415f, 0.598674f, 0.60195f, 0.605245f, 0.608557f, 0.611888f, 0.615236f,
|
||||
0.618603f, 0.621989f, 0.625393f, 0.628815f, 0.632257f, 0.635717f, 0.639196f, 0.642694f, 0.646212f, 0.649748f,
|
||||
0.653304f, 0.65688f, 0.660475f, 0.664089f, 0.667724f, 0.671378f, 0.675052f, 0.678747f, 0.682461f, 0.686196f,
|
||||
0.689952f, 0.693727f, 0.697524f, 0.701341f, 0.70518f, 0.709039f, 0.712919f, 0.716821f, 0.720744f, 0.724689f,
|
||||
0.728655f, 0.732642f, 0.736652f, 0.740684f, 0.744737f, 0.748813f, 0.752911f, 0.757031f, 0.761175f, 0.76534f,
|
||||
0.769529f, 0.77374f, 0.777975f, 0.782232f, 0.786513f, 0.790818f, 0.795146f, 0.799497f, 0.803873f, 0.808272f,
|
||||
0.812696f, 0.817144f, 0.821616f, 0.826112f, 0.830633f, 0.835179f, 0.83975f, 0.844346f, 0.848966f, 0.853613f,
|
||||
0.858284f, 0.862982f, 0.867704f, 0.872453f, 0.877228f, 0.882029f, 0.886856f, 0.891709f, 0.89659f, 0.901496f,
|
||||
0.90643f, 0.911391f, 0.916379f, 0.921394f, 0.926436f, 0.931507f, 0.936604f, 0.94173f, 0.946884f, 0.952066f,
|
||||
0.957277f, 0.962516f, 0.967783f, 0.97308f, 0.978405f, 0.98376f, 0.989144f, 0.994557f, 1.0f, 1.005473f,
|
||||
1.010975f, 1.016508f, 1.022071f, 1.027665f, 1.033289f, 1.038944f, 1.04463f, 1.050347f, 1.056095f, 1.061875f,
|
||||
1.067687f, 1.07353f, 1.079405f, 1.085312f, 1.091252f, 1.097224f, 1.103229f, 1.109267f, 1.115337f, 1.121441f,
|
||||
1.127579f, 1.13375f, 1.139955f, 1.146193f, 1.152466f, 1.158773f, 1.165115f, 1.171491f, 1.177903f, 1.184349f,
|
||||
1.190831f, 1.197348f, 1.203901f, 1.210489f, 1.217114f, 1.223775f, 1.230473f, 1.237207f, 1.243978f, 1.250786f,
|
||||
1.257631f, 1.264514f, 1.271434f, 1.278392f, 1.285389f, 1.292423f, 1.299497f, 1.306608f, 1.313759f, 1.320949f,
|
||||
1.328178f, 1.335447f, 1.342756f, 1.350104f, 1.357493f, 1.364922f, 1.372392f, 1.379903f, 1.387455f, 1.395048f,
|
||||
1.402683f, 1.41036f, 1.418078f, 1.425839f, 1.433642f, 1.441488f, 1.449377f, 1.457309f, 1.465285f, 1.473304f,
|
||||
1.481367f, 1.489474f, 1.497626f, 1.505822f, 1.514063f, 1.522349f, 1.530681f, 1.539058f, 1.547481f, 1.55595f,
|
||||
1.564465f, 1.573027f, 1.581636f, 1.590292f, 1.598995f, 1.607746f, 1.616545f, 1.625392f, 1.634287f, 1.643231f,
|
||||
1.652224f, 1.661266f, 1.670358f, 1.6795f, 1.688691f, 1.697933f, 1.707225f, 1.716569f, 1.725963f, 1.735409f,
|
||||
1.744906f, 1.754456f, 1.764058f, 1.773712f, 1.783419f, 1.793179f, 1.802993f, 1.81286f, 1.822782f, 1.832757f,
|
||||
1.842788f, 1.852873f, 1.863013f, 1.873209f, 1.883461f, 1.893768f, 1.904132f, 1.914553f, 1.925031f, 1.935567f,
|
||||
1.946159f, 1.95681f, 1.96752f, 1.978287f, 1.989114f, 2.0f
|
||||
};
|
||||
|
||||
// Frequencies for notes using the standard twelve-tone equal temperament scale.
|
||||
|
|
|
|||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue