mirror of https://github.com/n64decomp/mk64.git
Add new utility to calculate packed dl end and vertex count (#411)
* Add new utility to calculate packed dl end and vertex count Requires changing a bunch of actual references to packed dl lists with raw numbers. Which feels extremely bad but it doesn't match otherwise. Signed-off-by: Taggerung <tyler.taggerung@email.com> * Hard code array lenghts in appropriate headers Use macros to generate the vertex counts and packed dl end points Heavily dependent on the array lengths being accurate. If they aren't stuff will break. Signed-off-by: Taggerung <tyler.taggerung@email.com>
This commit is contained in:
parent
ccfe604719
commit
c85a333a3f
2
Makefile
2
Makefile
|
|
@ -347,8 +347,6 @@ MIO0TOOL := $(TOOLS_DIR)/mio0
|
|||
N64CKSUM := $(TOOLS_DIR)/n64cksum
|
||||
N64GRAPHICS := $(TOOLS_DIR)/n64graphics
|
||||
DLPACKER := $(TOOLS_DIR)/displaylist_packer
|
||||
DLSYMGEN := $(PYTHON) $(TOOLS_DIR)/generate_segment_headers.py
|
||||
MODELSYMGEN := $(PYTHON) $(TOOLS_DIR)/generate_vertice_count.py
|
||||
BIN2C := $(PYTHON) $(TOOLS_DIR)/bin2c.py
|
||||
EXTRACT_DATA_FOR_MIO := $(TOOLS_DIR)/extract_data_for_mio
|
||||
ASSET_EXTRACT := $(PYTHON) $(TOOLS_DIR)/new_extract_assets.py
|
||||
|
|
|
|||
|
|
@ -0,0 +1,55 @@
|
|||
#ifndef ALL_COURSE_DATA_H
|
||||
#define ALL_COURSE_DATA_H
|
||||
|
||||
#include "macros.h"
|
||||
#include "common_structs.h"
|
||||
|
||||
/** WARNING!!!
|
||||
* This header file has the sizes of the vertex array's hard coded.
|
||||
* If those arrays ever have their sizes changed that MUST be reflected
|
||||
* in this file or problems will arise in other parts of the code
|
||||
**/
|
||||
|
||||
extern mk64_Vtx d_course_big_donut_vertex[0x48D];
|
||||
extern mk64_Vtx d_course_block_fort_vertex[0x440];
|
||||
extern mk64_Vtx d_course_double_deck_vertex[0x22B];
|
||||
extern mk64_Vtx d_course_skyscraper_vertex[0x43E];
|
||||
extern mk64_Vtx d_course_choco_mountain_vertex[0x15B8];
|
||||
extern mk64_Vtx d_course_frappe_snowland_vertex[0x1599];
|
||||
extern mk64_Vtx d_course_mario_raceway_vertex[0x167D];
|
||||
extern mk64_Vtx d_course_toads_turnpike_vertex[0x18D7];
|
||||
extern mk64_Vtx d_course_kalimari_desert_vertex[0x18F9];
|
||||
extern mk64_Vtx d_course_koopa_troopa_beach_vertex[0x24A0];
|
||||
extern mk64_Vtx d_course_luigi_raceway_vertex[0x1730];
|
||||
extern mk64_Vtx d_course_moo_moo_farm_vertex[0x1F24];
|
||||
extern mk64_Vtx d_course_banshee_boardwalk_vertex[0x1351];
|
||||
extern mk64_Vtx d_course_dks_jungle_parkway_vertex[0x162F];
|
||||
extern mk64_Vtx d_course_rainbow_road_vertex[0xC27];
|
||||
extern mk64_Vtx d_course_yoshi_valley_vertex[0xE88];
|
||||
extern mk64_Vtx d_course_bowsers_castle_vertex[0x2537];
|
||||
extern mk64_Vtx d_course_royal_raceway_vertex[0x2072];
|
||||
extern mk64_Vtx d_course_sherbet_land_vertex[0xA76];
|
||||
extern mk64_Vtx d_course_wario_stadium_vertex[0x17B3];
|
||||
|
||||
#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_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)
|
||||
|
||||
#endif
|
||||
|
|
@ -0,0 +1,32 @@
|
|||
#ifndef ALL_COURSE_PACKED_H
|
||||
#define ALL_COURSE_PACKED_H
|
||||
|
||||
/** WARNING!!!
|
||||
* Each course #defines a token that looks like `d_course_<course_name_here>_packed_end`.
|
||||
* These macros only work if the the last Gfx array in each packed.inc.c file has its length hardcoded
|
||||
* in the accompanying header file. If that array is resized or moved the #defines will become
|
||||
* incorrect
|
||||
**/
|
||||
|
||||
#include "courses/battle/big_donut/packed.inc.h"
|
||||
#include "courses/battle/block_fort/packed.inc.h"
|
||||
#include "courses/battle/double_deck/packed.inc.h"
|
||||
#include "courses/battle/skyscraper/packed.inc.h"
|
||||
#include "courses/flower_cup/choco_mountain/packed.inc.h"
|
||||
#include "courses/flower_cup/frappe_snowland/packed.inc.h"
|
||||
#include "courses/flower_cup/mario_raceway/packed.inc.h"
|
||||
#include "courses/flower_cup/toads_turnpike/packed.inc.h"
|
||||
#include "courses/mushroom_cup/kalimari_desert/packed.inc.h"
|
||||
#include "courses/mushroom_cup/koopa_troopa_beach/packed.inc.h"
|
||||
#include "courses/mushroom_cup/luigi_raceway/packed.inc.h"
|
||||
#include "courses/mushroom_cup/moo_moo_farm/packed.inc.h"
|
||||
#include "courses/special_cup/banshee_boardwalk/packed.inc.h"
|
||||
#include "courses/special_cup/dks_jungle_parkway/packed.inc.h"
|
||||
#include "courses/special_cup/rainbow_road/packed.inc.h"
|
||||
#include "courses/special_cup/yoshi_valley/packed.inc.h"
|
||||
#include "courses/star_cup/bowsers_castle/packed.inc.h"
|
||||
#include "courses/star_cup/royal_raceway/packed.inc.h"
|
||||
#include "courses/star_cup/sherbet_land/packed.inc.h"
|
||||
#include "courses/star_cup/wario_stadium/packed.inc.h"
|
||||
|
||||
#endif
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_big_donut_packed_dl_0[];
|
||||
extern Gfx d_course_big_donut_packed_dl_210[];
|
||||
|
|
@ -19,4 +20,6 @@ extern Gfx d_course_big_donut_packed_dl_F08[];
|
|||
extern Gfx d_course_big_donut_packed_dl_F90[];
|
||||
extern Gfx d_course_big_donut_packed_dl_1018[];
|
||||
extern Gfx d_course_big_donut_packed_dl_1040[];
|
||||
extern Gfx d_course_big_donut_packed_dl_1070[];
|
||||
extern Gfx d_course_big_donut_packed_dl_1070[2];
|
||||
|
||||
#define d_course_big_donut_packed_end GET_PACKED_END(d_course_big_donut_packed_dl_1070)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_block_fort_packed_dl_0[];
|
||||
extern Gfx d_course_block_fort_packed_dl_B8[];
|
||||
|
|
@ -27,4 +28,6 @@ extern Gfx d_course_block_fort_packed_dl_14C8[];
|
|||
extern Gfx d_course_block_fort_packed_dl_1580[];
|
||||
extern Gfx d_course_block_fort_packed_dl_1590[];
|
||||
extern Gfx d_course_block_fort_packed_dl_15C0[];
|
||||
extern Gfx d_course_block_fort_packed_dl_15D0[];
|
||||
extern Gfx d_course_block_fort_packed_dl_15D0[1];
|
||||
|
||||
#define d_course_block_fort_packed_end GET_PACKED_END(d_course_block_fort_packed_dl_15D0)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_double_deck_packed_dl_0[];
|
||||
extern Gfx d_course_double_deck_packed_dl_210[];
|
||||
|
|
@ -8,4 +9,6 @@ extern Gfx d_course_double_deck_packed_dl_580[];
|
|||
extern Gfx d_course_double_deck_packed_dl_708[];
|
||||
extern Gfx d_course_double_deck_packed_dl_720[];
|
||||
extern Gfx d_course_double_deck_packed_dl_738[];
|
||||
extern Gfx d_course_double_deck_packed_dl_748[];
|
||||
extern Gfx d_course_double_deck_packed_dl_748[1];
|
||||
|
||||
#define d_course_double_deck_packed_end GET_PACKED_END(d_course_double_deck_packed_dl_748)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_skyscraper_packed_dl_0[];
|
||||
extern Gfx d_course_skyscraper_packed_dl_238[];
|
||||
|
|
@ -18,4 +19,6 @@ extern Gfx d_course_skyscraper_packed_dl_FE8[];
|
|||
extern Gfx d_course_skyscraper_packed_dl_FF8[];
|
||||
extern Gfx d_course_skyscraper_packed_dl_10C8[];
|
||||
extern Gfx d_course_skyscraper_packed_dl_10D8[];
|
||||
extern Gfx d_course_skyscraper_packed_dl_1110[];
|
||||
extern Gfx d_course_skyscraper_packed_dl_1110[2];
|
||||
|
||||
#define d_course_skyscraper_packed_end GET_PACKED_END(d_course_skyscraper_packed_dl_1110)
|
||||
|
|
|
|||
|
|
@ -1,164 +1,149 @@
|
|||
#include <ultra64.h>
|
||||
#include <macros.h>
|
||||
#include "types.h"
|
||||
#include <vertice_count_gen.h>
|
||||
#include <packed_displaylist_symbols_gen.h>
|
||||
#include "courseTable.h"
|
||||
|
||||
/**
|
||||
* vertex_count is generated from tools/generate_vertice_count.py
|
||||
* It takes the size of the vertex variable from objdump using the model.inc.elf file.
|
||||
* From there it divides the size by fourteen bytes (the size of a single vertex).
|
||||
* It then generates the header file with definitions of vertex_count.
|
||||
* This tool is ran during the compile process.
|
||||
*/
|
||||
|
||||
/**
|
||||
* The address of the final displaylist is generated and calculated by tools/generate_segment_headers.py
|
||||
* It always refers to a gsSPEndDisplayList command.
|
||||
*/
|
||||
#define GET_OFFSET(val) (val - 0x8) - 0x07000000
|
||||
|
||||
#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, GET_OFFSET(d_course_mario_raceway_packed_end),
|
||||
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, GET_OFFSET(d_course_choco_mountain_packed_end),
|
||||
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, GET_OFFSET(d_course_bowsers_castle_packed_end),
|
||||
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, GET_OFFSET(d_course_banshee_boardwalk_packed_end),
|
||||
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, GET_OFFSET(d_course_yoshi_valley_packed_end),
|
||||
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, GET_OFFSET(d_course_frappe_snowland_packed_end),
|
||||
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, GET_OFFSET(d_course_koopa_troopa_beach_packed_end),
|
||||
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, GET_OFFSET(d_course_royal_raceway_packed_end),
|
||||
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, GET_OFFSET(d_course_luigi_raceway_packed_end),
|
||||
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, GET_OFFSET(d_course_moo_moo_farm_packed_end),
|
||||
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, GET_OFFSET(d_course_toads_turnpike_packed_end),
|
||||
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, GET_OFFSET(d_course_kalimari_desert_packed_end),
|
||||
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, GET_OFFSET(d_course_sherbet_land_packed_end),
|
||||
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, GET_OFFSET(d_course_rainbow_road_packed_end),
|
||||
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, GET_OFFSET(d_course_wario_stadium_packed_end),
|
||||
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, GET_OFFSET(d_course_block_fort_packed_end),
|
||||
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, GET_OFFSET(d_course_skyscraper_packed_end),
|
||||
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, GET_OFFSET(d_course_double_deck_packed_end),
|
||||
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, GET_OFFSET(d_course_dks_jungle_parkway_packed_end),
|
||||
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, GET_OFFSET(d_course_big_donut_packed_end),
|
||||
d_course_big_donut_packed, d_course_big_donut_packed_end,
|
||||
big_donut_textures, 0, 0x0000,
|
||||
}};
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_choco_mountain_packed_dl_0[];
|
||||
extern Gfx d_course_choco_mountain_packed_dl_98[];
|
||||
|
|
@ -126,4 +127,6 @@ extern Gfx d_course_choco_mountain_packed_dl_59A0[];
|
|||
extern Gfx d_course_choco_mountain_packed_dl_5A00[];
|
||||
extern Gfx d_course_choco_mountain_packed_dl_5A70[];
|
||||
extern Gfx d_course_choco_mountain_packed_dl_5A98[];
|
||||
extern Gfx d_course_choco_mountain_packed_dl_5AE0[];
|
||||
extern Gfx d_course_choco_mountain_packed_dl_5AE0[2];
|
||||
|
||||
#define d_course_choco_mountain_packed_end GET_PACKED_END(d_course_choco_mountain_packed_dl_5AE0)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_frappe_snowland_packed_dl_0[];
|
||||
extern Gfx d_course_frappe_snowland_packed_dl_88[];
|
||||
|
|
@ -140,4 +141,6 @@ extern Gfx d_course_frappe_snowland_packed_dl_62F8[];
|
|||
extern Gfx d_course_frappe_snowland_packed_dl_63D8[];
|
||||
extern Gfx d_course_frappe_snowland_packed_dl_65E0[];
|
||||
extern Gfx d_course_frappe_snowland_packed_dl_65F0[];
|
||||
extern Gfx d_course_frappe_snowland_packed_dl_6638[];
|
||||
extern Gfx d_course_frappe_snowland_packed_dl_6638[3];
|
||||
|
||||
#define d_course_frappe_snowland_packed_end GET_PACKED_END(d_course_frappe_snowland_packed_dl_6638)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_mario_raceway_packed_dl_0[];
|
||||
extern Gfx d_course_mario_raceway_packed_dl_70[];
|
||||
|
|
@ -172,4 +173,6 @@ extern Gfx d_course_mario_raceway_packed_dl_6598[];
|
|||
extern Gfx d_course_mario_raceway_packed_dl_6710[];
|
||||
extern Gfx d_course_mario_raceway_packed_dl_68B0[];
|
||||
extern Gfx d_course_mario_raceway_packed_dl_68C0[];
|
||||
extern Gfx d_course_mario_raceway_packed_dl_6928[];
|
||||
extern Gfx d_course_mario_raceway_packed_dl_6928[2];
|
||||
|
||||
#define d_course_mario_raceway_packed_end GET_PACKED_END(d_course_mario_raceway_packed_dl_6928)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_toads_turnpike_packed_dl_0[];
|
||||
extern Gfx d_course_toads_turnpike_packed_dl_68[];
|
||||
|
|
@ -116,4 +117,6 @@ extern Gfx d_course_toads_turnpike_packed_dl_6848[];
|
|||
extern Gfx d_course_toads_turnpike_packed_dl_6908[];
|
||||
extern Gfx d_course_toads_turnpike_packed_dl_6AB8[];
|
||||
extern Gfx d_course_toads_turnpike_packed_dl_6AD8[];
|
||||
extern Gfx d_course_toads_turnpike_packed_dl_6B08[];
|
||||
extern Gfx d_course_toads_turnpike_packed_dl_6B08[2];
|
||||
|
||||
#define d_course_toads_turnpike_packed_end GET_PACKED_END(d_course_toads_turnpike_packed_dl_6B08)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_kalimari_desert_packed_dl_0[];
|
||||
extern Gfx d_course_kalimari_desert_packed_dl_68[];
|
||||
|
|
@ -304,4 +305,6 @@ extern Gfx d_course_kalimari_desert_packed_dl_A458[];
|
|||
extern Gfx d_course_kalimari_desert_packed_dl_A4D0[];
|
||||
extern Gfx d_course_kalimari_desert_packed_dl_A548[];
|
||||
extern Gfx d_course_kalimari_desert_packed_dl_A5F0[];
|
||||
extern Gfx d_course_kalimari_desert_packed_dl_A670[];
|
||||
extern Gfx d_course_kalimari_desert_packed_dl_A670[2];
|
||||
|
||||
#define d_course_kalimari_desert_packed_end GET_PACKED_END(d_course_kalimari_desert_packed_dl_A670)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_koopa_troopa_beach_packed_dl_0[];
|
||||
extern Gfx d_course_koopa_troopa_beach_packed_dl_B0[];
|
||||
|
|
@ -307,4 +308,6 @@ extern Gfx d_course_koopa_troopa_beach_packed_dl_B0A0[];
|
|||
extern Gfx d_course_koopa_troopa_beach_packed_dl_B168[];
|
||||
extern Gfx d_course_koopa_troopa_beach_packed_dl_B208[];
|
||||
extern Gfx d_course_koopa_troopa_beach_packed_dl_B230[];
|
||||
extern Gfx d_course_koopa_troopa_beach_packed_dl_B2B0[];
|
||||
extern Gfx d_course_koopa_troopa_beach_packed_dl_B2B0[2];
|
||||
|
||||
#define d_course_koopa_troopa_beach_packed_end GET_PACKED_END(d_course_koopa_troopa_beach_packed_dl_B2B0)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_luigi_raceway_packed_dl_0[];
|
||||
extern Gfx d_course_luigi_raceway_packed_dl_68[];
|
||||
|
|
@ -357,4 +358,6 @@ extern Gfx d_course_luigi_raceway_packed_dl_C540[];
|
|||
extern Gfx d_course_luigi_raceway_packed_dl_C5C0[];
|
||||
extern Gfx d_course_luigi_raceway_packed_dl_C640[];
|
||||
extern Gfx d_course_luigi_raceway_packed_dl_C668[];
|
||||
extern Gfx d_course_luigi_raceway_packed_dl_C730[];
|
||||
extern Gfx d_course_luigi_raceway_packed_dl_C730[2];
|
||||
|
||||
#define d_course_luigi_raceway_packed_end GET_PACKED_END(d_course_luigi_raceway_packed_dl_C730)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_moo_moo_farm_packed_dl_0[];
|
||||
extern Gfx d_course_moo_moo_farm_packed_dl_28[];
|
||||
|
|
@ -229,4 +230,6 @@ extern Gfx d_course_moo_moo_farm_packed_dl_64D0[];
|
|||
extern Gfx d_course_moo_moo_farm_packed_dl_6578[];
|
||||
extern Gfx d_course_moo_moo_farm_packed_dl_6618[];
|
||||
extern Gfx d_course_moo_moo_farm_packed_dl_66D0[];
|
||||
extern Gfx d_course_moo_moo_farm_packed_dl_6730[];
|
||||
extern Gfx d_course_moo_moo_farm_packed_dl_6730[2];
|
||||
|
||||
#define d_course_moo_moo_farm_packed_end GET_PACKED_END(d_course_moo_moo_farm_packed_dl_6730)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_banshee_boardwalk_packed_dl_0[];
|
||||
extern Gfx d_course_banshee_boardwalk_packed_dl_60[];
|
||||
|
|
@ -191,4 +192,6 @@ extern Gfx d_course_banshee_boardwalk_packed_dl_7138[];
|
|||
extern Gfx d_course_banshee_boardwalk_packed_dl_71B0[];
|
||||
extern Gfx d_course_banshee_boardwalk_packed_dl_7228[];
|
||||
extern Gfx d_course_banshee_boardwalk_packed_dl_72B8[];
|
||||
extern Gfx d_course_banshee_boardwalk_packed_dl_7338[];
|
||||
extern Gfx d_course_banshee_boardwalk_packed_dl_7338[2];
|
||||
|
||||
#define d_course_banshee_boardwalk_packed_end GET_PACKED_END(d_course_banshee_boardwalk_packed_dl_7338)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_dks_jungle_parkway_packed_dl_0[];
|
||||
extern Gfx d_course_dks_jungle_parkway_packed_dl_200[];
|
||||
|
|
@ -202,4 +203,6 @@ extern Gfx d_course_dks_jungle_parkway_packed_dl_9A20[];
|
|||
extern Gfx d_course_dks_jungle_parkway_packed_dl_9A38[];
|
||||
extern Gfx d_course_dks_jungle_parkway_packed_dl_9B98[];
|
||||
extern Gfx d_course_dks_jungle_parkway_packed_dl_9BA8[];
|
||||
extern Gfx d_course_dks_jungle_parkway_packed_dl_9C18[];
|
||||
extern Gfx d_course_dks_jungle_parkway_packed_dl_9C18[2];
|
||||
|
||||
#define d_course_dks_jungle_parkway_packed_end GET_PACKED_END(d_course_dks_jungle_parkway_packed_dl_9C18)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_rainbow_road_packed_dl_0[];
|
||||
extern Gfx d_course_rainbow_road_packed_dl_308[];
|
||||
|
|
@ -35,4 +36,6 @@ extern Gfx d_course_rainbow_road_packed_dl_2068[];
|
|||
extern Gfx d_course_rainbow_road_packed_dl_2078[];
|
||||
extern Gfx d_course_rainbow_road_packed_dl_20C0[];
|
||||
extern Gfx d_course_rainbow_road_packed_dl_20D0[];
|
||||
extern Gfx d_course_rainbow_road_packed_dl_20F8[];
|
||||
extern Gfx d_course_rainbow_road_packed_dl_20F8[2];
|
||||
|
||||
#define d_course_rainbow_road_packed_end GET_PACKED_END(d_course_rainbow_road_packed_dl_20F8)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_yoshi_valley_packed_dl_0[];
|
||||
extern Gfx d_course_yoshi_valley_packed_dl_A8[];
|
||||
|
|
@ -238,4 +239,6 @@ extern Gfx d_course_yoshi_valley_packed_dl_7F58[];
|
|||
extern Gfx d_course_yoshi_valley_packed_dl_7FC8[];
|
||||
extern Gfx d_course_yoshi_valley_packed_dl_8050[];
|
||||
extern Gfx d_course_yoshi_valley_packed_dl_8110[];
|
||||
extern Gfx d_course_yoshi_valley_packed_dl_8150[];
|
||||
extern Gfx d_course_yoshi_valley_packed_dl_8150[2];
|
||||
|
||||
#define d_course_yoshi_valley_packed_end GET_PACKED_END(d_course_yoshi_valley_packed_dl_8150)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_bowsers_castle_packed_dl_0[];
|
||||
extern Gfx d_course_bowsers_castle_packed_dl_60[];
|
||||
|
|
@ -174,4 +175,6 @@ extern Gfx d_course_bowsers_castle_packed_dl_94B0[];
|
|||
extern Gfx d_course_bowsers_castle_packed_dl_94D8[];
|
||||
extern Gfx d_course_bowsers_castle_packed_dl_9820[];
|
||||
extern Gfx d_course_bowsers_castle_packed_dl_9830[];
|
||||
extern Gfx d_course_bowsers_castle_packed_dl_9910[];
|
||||
extern Gfx d_course_bowsers_castle_packed_dl_9910[2];
|
||||
|
||||
#define d_course_bowsers_castle_packed_end GET_PACKED_END(d_course_bowsers_castle_packed_dl_9910)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_royal_raceway_packed_dl_0[];
|
||||
extern Gfx d_course_royal_raceway_packed_dl_A8[];
|
||||
|
|
@ -322,4 +323,6 @@ extern Gfx d_course_royal_raceway_packed_dl_AEF8[];
|
|||
extern Gfx d_course_royal_raceway_packed_dl_AF28[];
|
||||
extern Gfx d_course_royal_raceway_packed_dl_B030[];
|
||||
extern Gfx d_course_royal_raceway_packed_dl_B040[];
|
||||
extern Gfx d_course_royal_raceway_packed_dl_B120[];
|
||||
extern Gfx d_course_royal_raceway_packed_dl_B120[2];
|
||||
|
||||
#define d_course_royal_raceway_packed_end GET_PACKED_END(d_course_royal_raceway_packed_dl_B120)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_sherbet_land_packed_dl_0[];
|
||||
extern Gfx d_course_sherbet_land_packed_dl_C0[];
|
||||
|
|
@ -100,4 +101,6 @@ extern Gfx d_course_sherbet_land_packed_dl_36B8[];
|
|||
extern Gfx d_course_sherbet_land_packed_dl_3728[];
|
||||
extern Gfx d_course_sherbet_land_packed_dl_3788[];
|
||||
extern Gfx d_course_sherbet_land_packed_dl_37E0[];
|
||||
extern Gfx d_course_sherbet_land_packed_dl_3848[];
|
||||
extern Gfx d_course_sherbet_land_packed_dl_3848[2];
|
||||
|
||||
#define d_course_sherbet_land_packed_end GET_PACKED_END(d_course_sherbet_land_packed_dl_3848)
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#include <PR/gbi.h>
|
||||
#include "macros.h"
|
||||
|
||||
extern Gfx d_course_wario_stadium_packed_dl_0[];
|
||||
extern Gfx d_course_wario_stadium_packed_dl_60[];
|
||||
|
|
@ -259,4 +260,6 @@ extern Gfx d_course_wario_stadium_packed_dl_A228[];
|
|||
extern Gfx d_course_wario_stadium_packed_dl_A248[];
|
||||
extern Gfx d_course_wario_stadium_packed_dl_A448[];
|
||||
extern Gfx d_course_wario_stadium_packed_dl_A458[];
|
||||
extern Gfx d_course_wario_stadium_packed_dl_A4A8[];
|
||||
extern Gfx d_course_wario_stadium_packed_dl_A4A8[3];
|
||||
|
||||
#define d_course_wario_stadium_packed_end GET_PACKED_END(d_course_wario_stadium_packed_dl_A4A8)
|
||||
|
|
|
|||
|
|
@ -1,23 +1,5 @@
|
|||
#include "courses/battle/big_donut/course_data.inc.h"
|
||||
#include "courses/battle/block_fort/course_data.inc.h"
|
||||
#include "courses/battle/double_deck/course_data.inc.h"
|
||||
#include "courses/battle/skyscraper/course_data.inc.h"
|
||||
#include "courses/flower_cup/choco_mountain/course_data.inc.h"
|
||||
#include "courses/flower_cup/frappe_snowland/course_data.inc.h"
|
||||
#include "courses/flower_cup/mario_raceway/course_data.inc.h"
|
||||
#include "courses/flower_cup/toads_turnpike/course_data.inc.h"
|
||||
#include "courses/mushroom_cup/kalimari_desert/course_data.inc.h"
|
||||
#include "courses/mushroom_cup/koopa_troopa_beach/course_data.inc.h"
|
||||
#include "courses/mushroom_cup/luigi_raceway/course_data.inc.h"
|
||||
#include "courses/mushroom_cup/moo_moo_farm/course_data.inc.h"
|
||||
#include "courses/special_cup/banshee_boardwalk/course_data.inc.h"
|
||||
#include "courses/special_cup/dks_jungle_parkway/course_data.inc.h"
|
||||
#include "courses/special_cup/rainbow_road/course_data.inc.h"
|
||||
#include "courses/special_cup/yoshi_valley/course_data.inc.h"
|
||||
#include "courses/star_cup/bowsers_castle/course_data.inc.h"
|
||||
#include "courses/star_cup/royal_raceway/course_data.inc.h"
|
||||
#include "courses/star_cup/sherbet_land/course_data.inc.h"
|
||||
#include "courses/star_cup/wario_stadium/course_data.inc.h"
|
||||
#include "courses/all_course_data.h"
|
||||
#include "courses/all_course_packed.h"
|
||||
#include "include/libc/math.h"
|
||||
#include "include/libc/stdarg.h"
|
||||
#include "include/libc/stddef.h"
|
||||
|
|
|
|||
|
|
@ -64,4 +64,12 @@
|
|||
// aligns an address to the next 16 bytes
|
||||
#define ALIGN16(val) (((val) + 0xF) & ~0xF)
|
||||
|
||||
/**
|
||||
* (u8*) dl : Cast array down to u8's
|
||||
* + sizeof(dl) : go to the end of the array
|
||||
* - 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)
|
||||
|
||||
#endif
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load Diff
|
|
@ -1,44 +0,0 @@
|
|||
// Generated by tools/generate_vertice_count.py
|
||||
|
||||
#include <macros.h>
|
||||
|
||||
#define d_course_rainbow_road_vertex_count 0x00000C27
|
||||
|
||||
#define d_course_yoshi_valley_vertex_count 0x00000E88
|
||||
|
||||
#define d_course_banshee_boardwalk_vertex_count 0x00001351
|
||||
|
||||
#define d_course_dks_jungle_parkway_vertex_count 0x0000162F
|
||||
|
||||
#define d_course_skyscraper_vertex_count 0x0000043E
|
||||
|
||||
#define d_course_block_fort_vertex_count 0x00000440
|
||||
|
||||
#define d_course_double_deck_vertex_count 0x0000022B
|
||||
|
||||
#define d_course_big_donut_vertex_count 0x0000048D
|
||||
|
||||
#define d_course_mario_raceway_vertex_count 0x0000167D
|
||||
|
||||
#define d_course_toads_turnpike_vertex_count 0x000018D7
|
||||
|
||||
#define d_course_choco_mountain_vertex_count 0x000015B8
|
||||
|
||||
#define d_course_frappe_snowland_vertex_count 0x00001599
|
||||
|
||||
#define d_course_kalimari_desert_vertex_count 0x000018F9
|
||||
|
||||
#define d_course_luigi_raceway_vertex_count 0x00001730
|
||||
|
||||
#define d_course_moo_moo_farm_vertex_count 0x00001F24
|
||||
|
||||
#define d_course_koopa_troopa_beach_vertex_count 0x000024A0
|
||||
|
||||
#define d_course_sherbet_land_vertex_count 0x00000A76
|
||||
|
||||
#define d_course_wario_stadium_vertex_count 0x000017B3
|
||||
|
||||
#define d_course_royal_raceway_vertex_count 0x00002072
|
||||
|
||||
#define d_course_bowsers_castle_vertex_count 0x00002537
|
||||
|
||||
|
|
@ -70,7 +70,9 @@
|
|||
#include <ultra64.h>
|
||||
#include <variables.h>
|
||||
#include <vehicles.h>
|
||||
#include <vertice_count_gen.h>
|
||||
#include <waypoints.h>
|
||||
|
||||
#include <courses/all_course_data.h>
|
||||
#include <courses/all_course_packed.h>
|
||||
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -5,7 +5,6 @@
|
|||
#include <types.h>
|
||||
#include <code_800029B0.h>
|
||||
#include <course.h>
|
||||
#include <packed_displaylist_symbols_gen.h>
|
||||
#include "main.h"
|
||||
#include "actors.h"
|
||||
#include "math_util.h"
|
||||
|
|
@ -15,6 +14,7 @@
|
|||
#include "render_courses.h"
|
||||
#include "skybox_and_splitscreen.h"
|
||||
#include "courses/all_course_data.h"
|
||||
#include "courses/all_course_packed.h"
|
||||
|
||||
s16 D_802B87B0 = 995;
|
||||
s16 D_802B87B4 = 1000;
|
||||
|
|
@ -182,14 +182,17 @@ void load_surface_map(uintptr_t arg0, struct UnkStruct_800DC5EC *arg1) {
|
|||
}
|
||||
|
||||
void func_80291198(void) {
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_1140);
|
||||
// d_course_mario_raceway_packed_dl_1140
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07001140));
|
||||
}
|
||||
|
||||
void func_802911C4(void) {
|
||||
if (gScreenModeSelection == SCREEN_MODE_1P) {
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_8E8);
|
||||
// d_course_mario_raceway_packed_dl_8E8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070008E8));
|
||||
} else {
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_2D68);
|
||||
// d_course_mario_raceway_packed_dl_2D68
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07002D68));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -244,6 +247,7 @@ void func_8029122C(struct UnkStruct_800DC5EC *arg0, s32 arg1) {
|
|||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
|
||||
gDPSetBlendMask(gDisplayListHead++, 0xFF);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
// d_course_banshee_boardwalk_packed_dl_878
|
||||
gSPDisplayList(gDisplayListHead++, 0x07000878);
|
||||
gDPSetAlphaCompare(gDisplayListHead++, G_AC_NONE);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
|
|
@ -473,7 +477,8 @@ void render_mario_raceway(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_3050);
|
||||
// d_course_mario_raceway_packed_dl_3050
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07003050));
|
||||
}
|
||||
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
|
@ -556,19 +561,26 @@ void render_mario_raceway(struct UnkStruct_800DC5EC *arg0) {
|
|||
}
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_3508);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_3240);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_14A0);
|
||||
// d_course_mario_raceway_packed_dl_3508
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07003508));
|
||||
// d_course_mario_raceway_packed_dl_3240
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07003240));
|
||||
// d_course_mario_raceway_packed_dl_14A0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070014A0));
|
||||
|
||||
load_surface_map((uintptr_t) mario_raceway_dls, arg0);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_450);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_240);
|
||||
// d_course_mario_raceway_packed_dl_450
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000450));
|
||||
// d_course_mario_raceway_packed_dl_240
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000240));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_E0);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_mario_raceway_packed_dl_160);
|
||||
// d_course_mario_raceway_packed_dl_E0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070000E0));
|
||||
// d_course_mario_raceway_packed_dl_160
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000160));
|
||||
}
|
||||
|
||||
void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
|
||||
|
|
@ -580,7 +592,8 @@ void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_4608);
|
||||
// d_course_choco_mountain_packed_dl_4608
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07004608));
|
||||
}
|
||||
gDPSetCycleType(gDisplayListHead++, G_CYC_2CYCLE);
|
||||
gDPSetFogColor(gDisplayListHead++, D_801625EC, D_801625F4, D_801625F0, 0xFF);
|
||||
|
|
@ -592,10 +605,14 @@ void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_5A70);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_828);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_8E0);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_5868);
|
||||
// d_course_choco_mountain_packed_dl_5A70
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005A70));
|
||||
// d_course_choco_mountain_packed_dl_828
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000828));
|
||||
// d_course_choco_mountain_packed_dl_8E0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070008E0));
|
||||
// d_course_choco_mountain_packed_dl_5868
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005868));
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
|
||||
load_surface_map((uintptr_t) choco_mountain_dls, arg0);
|
||||
|
|
@ -603,10 +620,13 @@ void render_choco_mountain(struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_PASS2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_448);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_5D8);
|
||||
// d_course_choco_mountain_packed_dl_448
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000448));
|
||||
// d_course_choco_mountain_packed_dl_5D8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070005D8));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_choco_mountain_packed_dl_718);
|
||||
// d_course_choco_mountain_packed_dl_718
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000718));
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_FOG);
|
||||
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
|
|
@ -622,7 +642,8 @@ void render_bowsers_castle(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_bowsers_castle_packed_dl_6A80);
|
||||
// d_course_bowsers_castle_packed_dl_6A80
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07006A80));
|
||||
}
|
||||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
|
|
@ -636,7 +657,8 @@ void render_bowsers_castle(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_bowsers_castle_packed_dl_248);
|
||||
// d_course_bowsers_castle_packed_dl_248
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000248));
|
||||
}
|
||||
|
||||
void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
|
||||
|
|
@ -648,7 +670,8 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_DECALRGBA);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_7228);
|
||||
// d_course_banshee_boardwalk_packed_dl_7228
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07007228));
|
||||
|
||||
gSPFogPosition(gDisplayListHead++, D_802B87B0, D_802B87B4);
|
||||
|
||||
|
|
@ -662,9 +685,12 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
|
|||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_5CD0);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_4E60);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_69B0);
|
||||
// d_course_banshee_boardwalk_packed_dl_5CD0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005CD0));
|
||||
// d_course_banshee_boardwalk_packed_dl_4E60
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07004E60));
|
||||
// d_course_banshee_boardwalk_packed_dl_69B0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070069B0));
|
||||
|
||||
load_surface_map((uintptr_t) banshee_boardwalk_dls, arg0);
|
||||
|
||||
|
|
@ -673,12 +699,16 @@ void render_banshee_boardwalk(struct UnkStruct_800DC5EC *arg0) {
|
|||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_580);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_60);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_540);
|
||||
// d_course_banshee_boardwalk_packed_dl_580
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000580));
|
||||
// d_course_banshee_boardwalk_packed_dl_60
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000060));
|
||||
// d_course_banshee_boardwalk_packed_dl_540
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000540));
|
||||
|
||||
if (camera->pos[1] < -20.0f) {
|
||||
gSPDisplayList(gDisplayListHead++, d_course_banshee_boardwalk_packed_dl_6310);
|
||||
// d_course_banshee_boardwalk_packed_dl_6310
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07006310));
|
||||
}
|
||||
spA8[0] = camera->pos[0];
|
||||
spA8[1] = -82.0f;
|
||||
|
|
@ -709,7 +739,8 @@ void render_frappe_snowland(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_frappe_snowland_packed_dl_65E0);
|
||||
// d_course_frappe_snowland_packed_dl_65E0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070065E0));
|
||||
}
|
||||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
|
|
@ -727,16 +758,19 @@ void render_koopa_troopa_beach(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_koopa_troopa_beach_packed_dl_9CC0);
|
||||
// d_course_koopa_troopa_beach_packed_dl_9CC0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07009CC0));
|
||||
}
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_koopa_troopa_beach_packed_dl_9688);
|
||||
// d_course_koopa_troopa_beach_packed_dl_9688
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07009688));
|
||||
load_surface_map((uintptr_t) d_course_koopa_troopa_beach_dl_list1, arg0);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_koopa_troopa_beach_packed_dl_2C0);
|
||||
// d_course_koopa_troopa_beach_packed_dl_2C0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070002C0));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
}
|
||||
|
|
@ -750,20 +784,24 @@ void render_royal_raceway(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_royal_raceway_packed_dl_B030);
|
||||
// d_course_royal_raceway_packed_dl_B030
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700B030));
|
||||
}
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_royal_raceway_packed_dl_A648);
|
||||
// d_course_royal_raceway_packed_dl_A648
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A648));
|
||||
|
||||
load_surface_map((uintptr_t) royal_raceway_dls, arg0);
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_royal_raceway_packed_dl_11A8);
|
||||
// d_course_royal_raceway_packed_dl_11A8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070011A8));
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_royal_raceway_packed_dl_8A0);
|
||||
// d_course_royal_raceway_packed_dl_8A0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070008A0));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
}
|
||||
|
||||
|
|
@ -780,7 +818,8 @@ void render_luigi_raceway(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_luigi_raceway_packed_dl_9EC0);
|
||||
// d_course_luigi_raceway_packed_dl_9EC0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07009EC0));
|
||||
}
|
||||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
|
|
@ -790,8 +829,10 @@ void render_luigi_raceway(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_luigi_raceway_packed_dl_E0);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_luigi_raceway_packed_dl_68);
|
||||
// d_course_luigi_raceway_packed_dl_E0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070000E0));
|
||||
// d_course_luigi_raceway_packed_dl_68
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000068));
|
||||
|
||||
D_800DC5DC = 88;
|
||||
D_800DC5E0 = 72;
|
||||
|
|
@ -849,14 +890,17 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_4DF8);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_5640);
|
||||
// d_course_moo_moo_farm_packed_dl_4DF8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07004DF8));
|
||||
// d_course_moo_moo_farm_packed_dl_5640
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005640));
|
||||
gSPFogPosition(gDisplayListHead++, D_802B87B0, D_802B87B4);
|
||||
|
||||
load_surface_map((uintptr_t) moo_moo_farm_dls, arg0);
|
||||
|
||||
if ((temp_s0 < 14) && (temp_s0 > 10)) {
|
||||
if ((temp_s1 == 2) || (temp_s1 == 3) || (temp_s1 == 1))
|
||||
//
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_13FF8);
|
||||
|
||||
} else if (temp_s0 < 16) {
|
||||
|
|
@ -875,31 +919,34 @@ void render_moo_moo_farm(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
if ((temp_s0 >= 16) && (temp_s0 < 24)) {
|
||||
if ((temp_s1 == 2) || (temp_s1 == 3))
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_5410);
|
||||
// d_course_moo_moo_farm_packed_dl_5410
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005410));
|
||||
|
||||
} else if (temp_s0 < 9) {
|
||||
if (temp_s1 == 2)
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_5410);
|
||||
// d_course_moo_moo_farm_packed_dl_5410
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07005410));
|
||||
|
||||
}
|
||||
if (temp_s0 < 4) {
|
||||
if (temp_s1 != 0)
|
||||
if (temp_s1 != 0)
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060);
|
||||
|
||||
} else if (temp_s0 < 8) {
|
||||
if (temp_s1 == 2)
|
||||
if (temp_s1 == 2)
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060);
|
||||
|
||||
} else if (temp_s0 >= 22) {
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060);
|
||||
} else if (temp_s0 >= 18) {
|
||||
if ((temp_s1 == 0) || (temp_s1 == 3))
|
||||
if ((temp_s1 == 0) || (temp_s1 == 3))
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_dl_14060);
|
||||
|
||||
}
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_packed_dl_10C0);
|
||||
// d_course_moo_moo_farm_packed_dl_10C0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070010C0));
|
||||
}
|
||||
|
||||
void render_toads_turnpike(struct UnkStruct_800DC5EC *arg0) {
|
||||
|
|
@ -920,9 +967,12 @@ void render_toads_turnpike(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_FOG_SHADE_A, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_DECALRGBA, G_CC_PASS2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_packed_dl_0);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_packed_dl_68);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_toads_turnpike_packed_dl_D8);
|
||||
// d_course_toads_turnpike_packed_dl_0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000000));
|
||||
// d_course_toads_turnpike_packed_dl_68
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000068));
|
||||
// d_course_toads_turnpike_packed_dl_D8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070000D8));
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_FOG);
|
||||
gDPSetCycleType(gDisplayListHead++, G_CYC_1CYCLE);
|
||||
}
|
||||
|
|
@ -938,20 +988,26 @@ void render_kalimari_desert(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_71C8);
|
||||
// d_course_kalimari_desert_packed_dl_71C8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070071C8));
|
||||
}
|
||||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEI, G_CC_MODULATEI);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
load_surface_map((uintptr_t) kalimari_desert_dls, arg0);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_1ED8);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_1B18);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_8330);
|
||||
// d_course_kalimari_desert_packed_dl_1ED8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07001ED8));
|
||||
// d_course_kalimari_desert_packed_dl_1B18
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07001B18));
|
||||
// d_course_kalimari_desert_packed_dl_8330
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07008330));
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_998);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_kalimari_desert_packed_dl_270);
|
||||
// d_course_kalimari_desert_packed_dl_998
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000998));
|
||||
// d_course_kalimari_desert_packed_dl_270
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000270));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
}
|
||||
|
||||
|
|
@ -985,7 +1041,8 @@ void render_wario_stadium(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_wario_stadium_packed_dl_A0C8);
|
||||
// d_course_wario_stadium_packed_dl_A0C8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A0C8));
|
||||
|
||||
}
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATERGBA, G_CC_MODULATERGBA);
|
||||
|
|
@ -993,11 +1050,13 @@ void render_wario_stadium(struct UnkStruct_800DC5EC *arg0) {
|
|||
|
||||
load_surface_map((uintptr_t) wario_stadium_dls, arg0);
|
||||
|
||||
gSPDisplayList(gDisplayListHead++, d_course_wario_stadium_packed_dl_A228);
|
||||
// d_course_wario_stadium_packed_dl_A228
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A228));
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_wario_stadium_packed_dl_A88);
|
||||
// d_course_wario_stadium_packed_dl_A88
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000A88));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
|
||||
D_800DC5DC = 88;
|
||||
|
|
@ -1042,7 +1101,8 @@ void render_block_fort(UNUSED struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_block_fort_packed_dl_15C0);
|
||||
// d_course_block_fort_packed_dl_15C0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070015C0));
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1051,15 +1111,22 @@ void render_skyscraper(UNUSED struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_FE8);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_C60);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_B70);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_6B8);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_570);
|
||||
// d_course_skyscraper_packed_dl_FE8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000FE8));
|
||||
// d_course_skyscraper_packed_dl_C60
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000C60));
|
||||
// d_course_skyscraper_packed_dl_B70
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000B70));
|
||||
// d_course_skyscraper_packed_dl_6B8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070006B8));
|
||||
// d_course_skyscraper_packed_dl_570
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000570));
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_10C8);
|
||||
// d_course_skyscraper_packed_dl_10C8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070010C8));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_skyscraper_packed_dl_258);
|
||||
// d_course_skyscraper_packed_dl_258
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000258));
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1070,7 +1137,8 @@ void render_double_deck(UNUSED struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_double_deck_packed_dl_738);
|
||||
// d_course_double_deck_packed_dl_738
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000738));
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
}
|
||||
|
||||
|
|
@ -1086,7 +1154,8 @@ void render_dks_jungle_parkway(struct UnkStruct_800DC5EC *arg0) {
|
|||
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_dks_jungle_parkway_packed_dl_92D8);
|
||||
// d_course_dks_jungle_parkway_packed_dl_92D8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070092D8));
|
||||
}
|
||||
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
|
|
@ -1108,12 +1177,17 @@ void render_big_donut(struct UnkStruct_800DC5EC *arg0) {
|
|||
if (func_80290C20(arg0->camera) == 1) {
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_DE8);
|
||||
// d_course_big_donut_packed_dl_DE8
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000DE8));
|
||||
}
|
||||
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_450);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_AC0);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_D20);
|
||||
gSPDisplayList(gDisplayListHead++, d_course_big_donut_packed_dl_230);
|
||||
// d_course_big_donut_packed_dl_450
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000450));
|
||||
// d_course_big_donut_packed_dl_AC0
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000AC0));
|
||||
// d_course_big_donut_packed_dl_D20
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000D20));
|
||||
// d_course_big_donut_packed_dl_230
|
||||
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000230));
|
||||
}
|
||||
|
||||
void func_8029569C(void) {
|
||||
|
|
@ -1306,11 +1380,14 @@ void func_80295D88(void) {
|
|||
D_800DC5C8 = 0;
|
||||
switch (gCurrentCourseId) {
|
||||
case COURSE_MARIO_RACEWAY:
|
||||
set_vertex_data_with_defaults(d_course_mario_raceway_packed_dl_1140);
|
||||
// d_course_mario_raceway_packed_dl_1140
|
||||
set_vertex_data_with_defaults((uintptr_t)0x07001140);
|
||||
if (gScreenModeSelection == SCREEN_MODE_1P) {
|
||||
set_vertex_data_with_defaults(d_course_mario_raceway_packed_dl_8E8);
|
||||
// d_course_mario_raceway_packed_dl_8E8
|
||||
set_vertex_data_with_defaults((uintptr_t)0x070008E8);
|
||||
} else {
|
||||
set_vertex_data_with_defaults(d_course_mario_raceway_packed_dl_2D68);
|
||||
// d_course_mario_raceway_packed_dl_2D68
|
||||
set_vertex_data_with_defaults((uintptr_t)0x07002D68);
|
||||
}
|
||||
parse_course_displaylists((uintptr_t) d_course_mario_raceway_addr);
|
||||
func_80295C6C();
|
||||
|
|
@ -1328,12 +1405,18 @@ void func_80295D88(void) {
|
|||
|
||||
// Spawn guardrail only for CC_50 and time trials.
|
||||
if ((gCCSelection != CC_50) && (gModeSelection != TIME_TRIALS)) {
|
||||
nullify_displaylist(d_course_choco_mountain_packed_dl_0);
|
||||
nullify_displaylist(d_course_choco_mountain_packed_dl_98);
|
||||
nullify_displaylist(d_course_choco_mountain_packed_dl_178);
|
||||
nullify_displaylist(d_course_choco_mountain_packed_dl_280);
|
||||
nullify_displaylist(d_course_choco_mountain_packed_dl_340);
|
||||
nullify_displaylist(d_course_choco_mountain_packed_dl_3C8);
|
||||
// d_course_choco_mountain_packed_dl_0
|
||||
nullify_displaylist((uintptr_t)0x07000000);
|
||||
// d_course_choco_mountain_packed_dl_98
|
||||
nullify_displaylist((uintptr_t)0x07000098);
|
||||
// d_course_choco_mountain_packed_dl_178
|
||||
nullify_displaylist((uintptr_t)0x07000178);
|
||||
// d_course_choco_mountain_packed_dl_280
|
||||
nullify_displaylist((uintptr_t)0x07000280);
|
||||
// d_course_choco_mountain_packed_dl_340
|
||||
nullify_displaylist((uintptr_t)0x07000340);
|
||||
// d_course_choco_mountain_packed_dl_3C8
|
||||
nullify_displaylist((uintptr_t)0x070003C8);
|
||||
}
|
||||
parse_course_displaylists((uintptr_t) &d_course_choco_mountain_addr);
|
||||
func_802B5CAC(0x238E, 0x31C7, D_8015F590);
|
||||
|
|
@ -1343,7 +1426,8 @@ void func_80295D88(void) {
|
|||
case COURSE_BOWSER_CASTLE:
|
||||
parse_course_displaylists((uintptr_t) d_course_bowsers_castle_addr);
|
||||
func_80295C6C();
|
||||
find_vtx_and_set_colours(d_course_bowsers_castle_packed_dl_1350, 0x32, 0, 0, 0);
|
||||
// d_course_bowsers_castle_packed_dl_1350
|
||||
find_vtx_and_set_colours((uintptr_t)0x07001350, 0x32, 0, 0, 0);
|
||||
D_8015F8E4 = -50.0f;
|
||||
break;
|
||||
case COURSE_BANSHEE_BOARDWALK:
|
||||
|
|
@ -1353,7 +1437,8 @@ void func_80295D88(void) {
|
|||
D_801625F0 = 0;
|
||||
parse_course_displaylists((uintptr_t) d_course_banshee_boardwalk_track_sections);
|
||||
func_80295C6C();
|
||||
find_vtx_and_set_colours(d_course_banshee_boardwalk_packed_dl_878, 128, 0, 0, 0);
|
||||
// d_course_banshee_boardwalk_packed_dl_878
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000878, 128, 0, 0, 0);
|
||||
D_8015F8E4 = -80.0f;
|
||||
break;
|
||||
case COURSE_YOSHI_VALLEY:
|
||||
|
|
@ -1370,10 +1455,14 @@ void func_80295D88(void) {
|
|||
case COURSE_KOOPA_BEACH:
|
||||
parse_course_displaylists((uintptr_t) d_course_koopa_troopa_beach_addr);
|
||||
func_80295C6C();
|
||||
find_vtx_and_set_colours(d_course_koopa_troopa_beach_packed_dl_ADE0, -0x6A, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_koopa_troopa_beach_packed_dl_A540, -0x6A, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_koopa_troopa_beach_packed_dl_9E70, -0x6A, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_koopa_troopa_beach_packed_dl_358, -0x6A, 255, 255, 255);
|
||||
// d_course_koopa_troopa_beach_packed_dl_ADE0
|
||||
find_vtx_and_set_colours((uintptr_t)0x0700ADE0, -0x6A, 255, 255, 255);
|
||||
// d_course_koopa_troopa_beach_packed_dl_A540
|
||||
find_vtx_and_set_colours((uintptr_t)0x0700A540, -0x6A, 255, 255, 255);
|
||||
// d_course_koopa_troopa_beach_packed_dl_9E70
|
||||
find_vtx_and_set_colours((uintptr_t)0x07009E70, -0x6A, 255, 255, 255);
|
||||
// d_course_koopa_troopa_beach_packed_dl_358
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000358, -0x6A, 255, 255, 255);
|
||||
break;
|
||||
case COURSE_ROYAL_RACEWAY:
|
||||
parse_course_displaylists((uintptr_t) d_course_royal_raceway_addr);
|
||||
|
|
@ -1409,48 +1498,66 @@ void func_80295D88(void) {
|
|||
parse_course_displaylists((uintptr_t) d_course_sherbet_land_addr);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = -18.0f;
|
||||
find_vtx_and_set_colours(d_course_sherbet_land_packed_dl_1EB8, -0x4C, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_sherbet_land_packed_dl_2308, -0x6A, 255, 255, 255);
|
||||
// d_course_sherbet_land_packed_dl_1EB8
|
||||
find_vtx_and_set_colours((uintptr_t)0x07001EB8, -0x4C, 255, 255, 255);
|
||||
// d_course_sherbet_land_packed_dl_2308
|
||||
find_vtx_and_set_colours((uintptr_t)0x07002308, -0x6A, 255, 255, 255);
|
||||
break;
|
||||
case COURSE_RAINBOW_ROAD:
|
||||
D_800DC5C8 = 1;
|
||||
parse_course_displaylists((uintptr_t) d_course_rainbow_road_addr);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = 0.0f;
|
||||
find_vtx_and_set_colours(d_course_rainbow_road_packed_dl_2068, -0x6A, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_rainbow_road_packed_dl_1E18, -0x6A, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_rainbow_road_packed_dl_1318, 255, 255, 255, 0);
|
||||
// d_course_rainbow_road_packed_dl_2068
|
||||
find_vtx_and_set_colours((uintptr_t)0x07002068, -0x6A, 255, 255, 255);
|
||||
// d_course_rainbow_road_packed_dl_1E18
|
||||
find_vtx_and_set_colours((uintptr_t)0x07001E18, -0x6A, 255, 255, 255);
|
||||
// d_course_rainbow_road_packed_dl_1318
|
||||
find_vtx_and_set_colours((uintptr_t)0x07001318, 255, 255, 255, 0);
|
||||
if (gGamestate != CREDITS_SEQUENCE) {
|
||||
find_vtx_and_set_colours(d_course_rainbow_road_packed_dl_1FB8, -0x6A, 255, 255, 255);
|
||||
// d_course_rainbow_road_packed_dl_1FB8
|
||||
find_vtx_and_set_colours((uintptr_t)0x07001FB8, -0x6A, 255, 255, 255);
|
||||
}
|
||||
break;
|
||||
case COURSE_WARIO_STADIUM:
|
||||
parse_course_displaylists((uintptr_t) d_course_wario_stadium_addr);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = D_8015F6EE - 10.0f;
|
||||
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_C50, 100, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_BD8, 100, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_B60, 100, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_AE8, 100, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_CC8, 100, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_D50, 100, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_DD0, 100, 255, 255, 255);
|
||||
find_vtx_and_set_colours(d_course_wario_stadium_packed_dl_E48, 100, 255, 255, 255);
|
||||
// d_course_wario_stadium_packed_dl_C50
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000C50, 100, 255, 255, 255);
|
||||
// d_course_wario_stadium_packed_dl_BD8
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000BD8, 100, 255, 255, 255);
|
||||
// d_course_wario_stadium_packed_dl_B60
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000B60, 100, 255, 255, 255);
|
||||
// d_course_wario_stadium_packed_dl_AE8
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000AE8, 100, 255, 255, 255);
|
||||
// d_course_wario_stadium_packed_dl_CC8
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000CC8, 100, 255, 255, 255);
|
||||
// d_course_wario_stadium_packed_dl_D50
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000D50, 100, 255, 255, 255);
|
||||
// d_course_wario_stadium_packed_dl_DD0
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000DD0, 100, 255, 255, 255);
|
||||
// d_course_wario_stadium_packed_dl_E48
|
||||
find_vtx_and_set_colours((uintptr_t)0x07000E48, 100, 255, 255, 255);
|
||||
break;
|
||||
case COURSE_BLOCK_FORT:
|
||||
set_vertex_data_with_default_section_id(d_course_block_fort_packed_dl_15C0, 1);
|
||||
// d_course_block_fort_packed_dl_15C0
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x070015C0, 1);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = D_8015F6EE - 10.0f;
|
||||
break;
|
||||
case COURSE_SKYSCRAPER:
|
||||
set_vertex_data_with_default_section_id(d_course_skyscraper_packed_dl_1110, 1);
|
||||
set_vertex_data_with_default_section_id(d_course_skyscraper_packed_dl_258, 1);
|
||||
// d_course_skyscraper_packed_dl_1110
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x07001110, 1);
|
||||
// d_course_skyscraper_packed_dl_258
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x07000258, 1);
|
||||
func_80295C6C();
|
||||
|
||||
D_8015F8E4 = -480.0f;
|
||||
break;
|
||||
case COURSE_DOUBLE_DECK:
|
||||
set_vertex_data_with_default_section_id(d_course_double_deck_packed_dl_738, 1);
|
||||
// d_course_double_deck_packed_dl_738
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x07000738, 1);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = D_8015F6EE - 10.0f;
|
||||
break;
|
||||
|
|
@ -1458,14 +1565,20 @@ void func_80295D88(void) {
|
|||
parse_course_displaylists((uintptr_t) d_course_dks_jungle_parkway_addr);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = -475.0f;
|
||||
find_vtx_and_set_colours(d_course_dks_jungle_parkway_packed_dl_3FA8, 120, 255, 255, 255);
|
||||
// d_course_dks_jungle_parkway_packed_dl_3FA8
|
||||
find_vtx_and_set_colours((uintptr_t)0x07003FA8, 120, 255, 255, 255);
|
||||
break;
|
||||
case COURSE_BIG_DONUT:
|
||||
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_1018, 6);
|
||||
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_450, 6);
|
||||
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_AC0, 6);
|
||||
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_B58, 6);
|
||||
set_vertex_data_with_default_section_id(d_course_big_donut_packed_dl_230, 6);
|
||||
// d_course_big_donut_packed_dl_1018
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x07001018, 6);
|
||||
// d_course_big_donut_packed_dl_450
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x07000450, 6);
|
||||
// d_course_big_donut_packed_dl_AC0
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x07000AC0, 6);
|
||||
// d_course_big_donut_packed_dl_B58
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x07000B58, 6);
|
||||
// d_course_big_donut_packed_dl_230
|
||||
set_vertex_data_with_default_section_id((uintptr_t)0x07000230, 6);
|
||||
func_80295C6C();
|
||||
D_8015F8E4 = 100.0f;
|
||||
break;
|
||||
|
|
@ -1492,8 +1605,10 @@ void func_802966A0(void) {
|
|||
D_802B87C4 = 0;
|
||||
}
|
||||
// waterfall animation
|
||||
find_and_set_tile_size(d_course_koopa_troopa_beach_packed_dl_9D58, 0, D_802B87BC);
|
||||
find_and_set_tile_size(d_course_koopa_troopa_beach_packed_dl_9CD0, 0, D_802B87C4);
|
||||
// d_course_koopa_troopa_beach_packed_dl_9D58
|
||||
find_and_set_tile_size((uintptr_t)0x07009D58, 0, D_802B87BC);
|
||||
// d_course_koopa_troopa_beach_packed_dl_9CD0
|
||||
find_and_set_tile_size((uintptr_t)0x07009CD0, 0, D_802B87C4);
|
||||
D_802B87CC = random_int(300) / 40;
|
||||
if (D_802B87C8 < 0) {
|
||||
D_802B87C8 = random_int(300) / 40;
|
||||
|
|
@ -1501,7 +1616,8 @@ void func_802966A0(void) {
|
|||
D_802B87C8 = -(random_int(300) / 40);
|
||||
}
|
||||
// Waterfall bubbling effect? (unused)
|
||||
find_and_set_tile_size(d_course_koopa_troopa_beach_packed_dl_2E8, D_802B87C8, D_802B87CC);
|
||||
// d_course_koopa_troopa_beach_packed_dl_2E8
|
||||
find_and_set_tile_size((uintptr_t)0x070002E8, D_802B87C8, D_802B87CC);
|
||||
break;
|
||||
case COURSE_BANSHEE_BOARDWALK:
|
||||
D_802B87BC++;
|
||||
|
|
@ -1509,31 +1625,39 @@ void func_802966A0(void) {
|
|||
if (D_802B87BC >= 0x100) {
|
||||
D_802B87BC = 0;
|
||||
}
|
||||
find_and_set_tile_size((uintptr_t) d_course_banshee_boardwalk_dl_B278, 0, D_802B87BC);
|
||||
find_and_set_tile_size(d_course_banshee_boardwalk_dl_B278, 0, D_802B87BC);
|
||||
break;
|
||||
case COURSE_ROYAL_RACEWAY:
|
||||
D_802B87BC -= 20;
|
||||
if (D_802B87BC < 0) {
|
||||
D_802B87BC = 0xFF;
|
||||
}
|
||||
find_and_set_tile_size(d_course_royal_raceway_packed_dl_A6A8, 0, D_802B87BC);
|
||||
find_and_set_tile_size(d_course_royal_raceway_packed_dl_A648, 0, D_802B87BC);
|
||||
// d_course_royal_raceway_packed_dl_A6A8
|
||||
find_and_set_tile_size((uintptr_t)0x0700A6A8, 0, D_802B87BC);
|
||||
// d_course_royal_raceway_packed_dl_A648
|
||||
find_and_set_tile_size((uintptr_t)0x0700A648, 0, D_802B87BC);
|
||||
break;
|
||||
case COURSE_DK_JUNGLE:
|
||||
D_802B87BC += 2;
|
||||
if (D_802B87BC > 255) {
|
||||
D_802B87BC = 0;
|
||||
}
|
||||
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_3DD0, 0, D_802B87BC);
|
||||
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_3E40, 0, D_802B87BC);
|
||||
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_3EB0, 0, D_802B87BC);
|
||||
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_3F30, 0, D_802B87BC);
|
||||
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_36A8, 0, D_802B87BC);
|
||||
// d_course_dks_jungle_parkway_packed_dl_3DD0
|
||||
find_and_set_tile_size((uintptr_t)0x07003DD0, 0, D_802B87BC);
|
||||
// d_course_dks_jungle_parkway_packed_dl_3E40
|
||||
find_and_set_tile_size((uintptr_t)0x07003E40, 0, D_802B87BC);
|
||||
// d_course_dks_jungle_parkway_packed_dl_3EB0
|
||||
find_and_set_tile_size((uintptr_t)0x07003EB0, 0, D_802B87BC);
|
||||
// d_course_dks_jungle_parkway_packed_dl_3F30
|
||||
find_and_set_tile_size((uintptr_t)0x07003F30, 0, D_802B87BC);
|
||||
// d_course_dks_jungle_parkway_packed_dl_36A8
|
||||
find_and_set_tile_size((uintptr_t)0x070036A8, 0, D_802B87BC);
|
||||
D_802B87C4 -= 20;
|
||||
if (D_802B87C4 < 0) {
|
||||
D_802B87C4 = 0xFF;
|
||||
}
|
||||
find_and_set_tile_size(d_course_dks_jungle_parkway_packed_dl_9880, 0, D_802B87C4);
|
||||
// d_course_dks_jungle_parkway_packed_dl_9880
|
||||
find_and_set_tile_size((uintptr_t)0x07009880, 0, D_802B87C4);
|
||||
func_80298C94();
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,56 +0,0 @@
|
|||
import subprocess
|
||||
|
||||
# This script generates headers for course segmented packed displaylist data
|
||||
|
||||
dir_path = "build/us/courses/"
|
||||
output_file = "include/packed_displaylist_symbols_gen.h"
|
||||
|
||||
sym_list = []
|
||||
|
||||
# Run objdump for each packed.inc.elf file in courses/
|
||||
for filename in subprocess.check_output(f"find {dir_path} -name packed.inc.elf", shell=True).decode().splitlines():
|
||||
file_output = subprocess.check_output(f"objdump -t {filename} | grep ' .data\| .bss' | awk '$6 != \"\" {{print $1, $5, $6}}'", shell=True)
|
||||
file_output = file_output.decode()
|
||||
|
||||
# Create temporary list of (addr, name) tuples from file_output
|
||||
sym_list_tmp = []
|
||||
for line in file_output.splitlines():
|
||||
addr, size, name = line.split()
|
||||
# Skip lines with the .data directive
|
||||
if (name == ".data"):
|
||||
continue
|
||||
|
||||
sym_list_tmp.append((addr, size, name))
|
||||
|
||||
# Sort the tmp list
|
||||
sym_list_tmp = sorted(sym_list_tmp, key=lambda x: x[0])
|
||||
|
||||
# Generate the final displaylist symbol for courses
|
||||
# Take the last addr and add its size
|
||||
end_addr = '0{:X}'.format(int(sym_list_tmp[-1][0], 16) + int(sym_list_tmp[-1][1], 16))
|
||||
|
||||
end_name = sym_list_tmp[-1][2].split("dl_")[0] + "end"
|
||||
|
||||
sym_list_tmp.append((end_addr, '0', end_name))
|
||||
|
||||
# Magic number to insert a newline after every file.
|
||||
sym_list_tmp.append((0xFFFFFFFF, '0',"newline"))
|
||||
# Copy to the main list
|
||||
sym_list.extend(sym_list_tmp)
|
||||
|
||||
# Write includes and defines to the header file
|
||||
with open(output_file, "w") as f:
|
||||
|
||||
# Write comments
|
||||
f.write("// Generated by tools/generate_segment_headers.py\n\n")
|
||||
|
||||
# Write includes
|
||||
f.write("#include <macros.h>\n\n")
|
||||
|
||||
# Write #define statements to header file
|
||||
for addr, size, name in sym_list:
|
||||
# Add two newlines for readability
|
||||
if (name == "newline"):
|
||||
f.write("\n\n")
|
||||
continue
|
||||
f.write(f"#define {name} ((uintptr_t) 0x{addr.upper()})\n")
|
||||
|
|
@ -1,34 +0,0 @@
|
|||
import sys
|
||||
import subprocess
|
||||
|
||||
# This script generates vertice count for course geography used in the courseTable.
|
||||
|
||||
dir_path = "build/us/courses/"
|
||||
output_file = "include/vertice_count_gen.h"
|
||||
|
||||
sym_list = []
|
||||
output = ""
|
||||
|
||||
# Run objdump for each model.inc.elf file in courses/
|
||||
for filename in subprocess.check_output(f"find {dir_path} -name model.inc.elf", shell=True).decode().splitlines():
|
||||
file_output = subprocess.check_output(f"objdump -t {filename} | grep ' .data\| .bss' | awk '$6 != \"\" {{print $5, $6}}'", shell=True)
|
||||
output += file_output.decode()
|
||||
|
||||
# Write includes and defines to the header file
|
||||
with open(output_file, "w") as f:
|
||||
|
||||
# Write comments
|
||||
f.write("// Generated by tools/generate_vertice_count.py\n\n")
|
||||
|
||||
# Write includes
|
||||
f.write("#include <macros.h>\n\n")
|
||||
|
||||
# Write defines
|
||||
for line in output.splitlines():
|
||||
addr, name = line.split()
|
||||
if (name == ".data"):
|
||||
continue
|
||||
|
||||
# (size / 14) -> fill with zeros to make complete u32 -> toUppercase()
|
||||
# One vertice = 14 bytes. objdump outputs the size. Divide size by 14.
|
||||
f.write(f"#define {name}_count 0x{hex(int(addr, 16) // 14)[2:].zfill(8).upper()}\n\n")
|
||||
Loading…
Reference in New Issue