Add royal raceway course (#29)

* Add files via upload

* Update memory.c

* Update render_courses.c

* Update code_80281780.c

* Update path_spawn_metadata.c

* Update render.inc.c

* Update all_course_packed.h

* Update all_course_model.h

* Update all_course_data.h

* Delete courses/royal_raceway/course_data.c

* Delete courses/royal_raceway/course_data.h

* Delete courses/royal_raceway/course_vertices.inc.c

* Delete courses/royal_raceway/course_displaylists.c

* Delete courses/royal_raceway/course_displaylists.h

* Update memory.c

* Update royal_raceway_displaylists.yml

* Update values

* update

* Course works now

* fixes

* wip framebuffer

* Fix trees

* Fix player select borders

* Remove commented code

---------

Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
This commit is contained in:
MegaMech 2024-07-31 21:57:02 -06:00 committed by GitHub
parent 48a8342f3f
commit 2a8362dd10
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
37 changed files with 1118 additions and 23730 deletions

View File

@ -16,7 +16,6 @@
#include "courses/rainbow_road/course_data.h"
#include "courses/yoshi_valley/course_data.h"
#include "courses/bowsers_castle/course_data.h"
#include "courses/royal_raceway/course_data.h"
#include "courses/sherbet_land/course_data.h"
#include "courses/wario_stadium/course_data.h"
void gSPDisplayList(Gfx* pkt, Gfx* dl);

View File

@ -26,7 +26,6 @@ extern CourseVtx d_course_dks_jungle_parkway_vertex[];
extern CourseVtx d_course_rainbow_road_vertex[];
extern CourseVtx d_course_yoshi_valley_vertex[];
extern CourseVtx d_course_bowsers_castle_vertex[];
extern CourseVtx d_course_royal_raceway_vertex[];
extern CourseVtx d_course_sherbet_land_vertex[];
extern CourseVtx d_course_wario_stadium_vertex[];

View File

@ -7,10 +7,10 @@ extern Gfx *banshee_boardwalk_dls[];
extern Gfx *bowsers_castle_dls[];
extern Gfx *choco_mountain_dls[];
extern Gfx *kalimari_desert_dls[];
extern Gfx *luigi_raceway_dls[];
extern const char *luigi_raceway_dls[];
extern const char *mario_raceway_dls[];
extern Gfx *moo_moo_farm_dls[];
extern Gfx *royal_raceway_dls[];
extern const char *royal_raceway_dls[];
extern Gfx *sherbet_land_dls[];
extern Gfx *sherbet_land_dls_2[];
extern Gfx *wario_stadium_dls[];

View File

@ -25,7 +25,6 @@
#include "courses/rainbow_road/course_displaylists.h"
#include "courses/yoshi_valley/course_displaylists.h"
#include "courses/bowsers_castle/course_displaylists.h"
#include "courses/royal_raceway/course_displaylists.h"
#include "courses/sherbet_land/course_displaylists.h"
#include "courses/wario_stadium/course_displaylists.h"

File diff suppressed because it is too large Load Diff

View File

@ -1,157 +0,0 @@
#ifndef ROYAL_RACEWAY_COURSE_DATA_H
#define ROYAL_RACEWAY_COURSE_DATA_H
#include <libultraship.h>
#include <libultra/gbi.h>
#include <actor_types.h>
#include <waypoints.h>
#include <course.h>
extern Gfx d_course_royal_raceway_dl_0[];
extern Gfx d_course_royal_raceway_dl_258[];
extern Gfx d_course_royal_raceway_dl_360[];
extern Gfx d_course_royal_raceway_dl_470[];
extern Gfx d_course_royal_raceway_dl_6D0[];
extern Gfx d_course_royal_raceway_dl_8E0[];
extern Gfx d_course_royal_raceway_dl_A48[];
extern Gfx d_course_royal_raceway_dl_B40[];
extern Gfx d_course_royal_raceway_dl_DA0[];
extern Gfx d_course_royal_raceway_dl_F40[];
extern Gfx d_course_royal_raceway_dl_1180[];
extern Gfx d_course_royal_raceway_dl_12C0[];
extern Gfx d_course_royal_raceway_dl_1538[];
extern Gfx d_course_royal_raceway_dl_1610[];
extern Gfx d_course_royal_raceway_dl_1850[];
extern Gfx d_course_royal_raceway_dl_19B0[];
extern Gfx d_course_royal_raceway_dl_1BB8[];
extern Gfx d_course_royal_raceway_dl_1C40[];
extern Gfx d_course_royal_raceway_dl_1E88[];
extern Gfx d_course_royal_raceway_dl_2018[];
extern Gfx d_course_royal_raceway_dl_21A8[];
extern Gfx d_course_royal_raceway_dl_2210[];
extern Gfx d_course_royal_raceway_dl_2428[];
extern Gfx d_course_royal_raceway_dl_25F0[];
extern Gfx d_course_royal_raceway_dl_26F0[];
extern Gfx d_course_royal_raceway_dl_27B8[];
extern Gfx d_course_royal_raceway_dl_29A0[];
extern Gfx d_course_royal_raceway_dl_2B78[];
extern Gfx d_course_royal_raceway_dl_2C20[];
extern Gfx d_course_royal_raceway_dl_2DD0[];
extern Gfx d_course_royal_raceway_dl_2FE0[];
extern Gfx d_course_royal_raceway_dl_31F8[];
extern Gfx d_course_royal_raceway_dl_33B0[];
extern Gfx d_course_royal_raceway_dl_3580[];
extern Gfx d_course_royal_raceway_dl_3748[];
extern Gfx d_course_royal_raceway_dl_3960[];
extern Gfx d_course_royal_raceway_dl_3AD8[];
extern Gfx d_course_royal_raceway_dl_3BA8[];
extern Gfx d_course_royal_raceway_dl_3D38[];
extern Gfx d_course_royal_raceway_dl_3ED8[];
extern Gfx d_course_royal_raceway_dl_3FA0[];
extern Gfx d_course_royal_raceway_dl_4048[];
extern Gfx d_course_royal_raceway_dl_41D8[];
extern Gfx d_course_royal_raceway_dl_4380[];
extern Gfx d_course_royal_raceway_dl_4438[];
extern Gfx d_course_royal_raceway_dl_44C0[];
extern Gfx d_course_royal_raceway_dl_45A0[];
extern Gfx d_course_royal_raceway_dl_46A0[];
extern Gfx d_course_royal_raceway_dl_4750[];
extern Gfx d_course_royal_raceway_dl_4800[];
extern Gfx d_course_royal_raceway_dl_4930[];
extern Gfx d_course_royal_raceway_dl_4A38[];
extern Gfx d_course_royal_raceway_dl_4AE0[];
extern Gfx d_course_royal_raceway_dl_4BA8[];
extern Gfx d_course_royal_raceway_dl_4D00[];
extern Gfx d_course_royal_raceway_dl_4DF8[];
extern Gfx d_course_royal_raceway_dl_4EC0[];
extern Gfx d_course_royal_raceway_dl_4F80[];
extern Gfx d_course_royal_raceway_dl_50F0[];
extern Gfx d_course_royal_raceway_dl_51D0[];
extern Gfx d_course_royal_raceway_dl_52F0[];
extern Gfx d_course_royal_raceway_dl_53B8[];
extern Gfx d_course_royal_raceway_dl_54F8[];
extern Gfx d_course_royal_raceway_dl_5598[];
extern Gfx d_course_royal_raceway_dl_56C0[];
extern Gfx d_course_royal_raceway_dl_5758[];
extern Gfx d_course_royal_raceway_dl_5890[];
extern Gfx d_course_royal_raceway_dl_5900[];
extern Gfx d_course_royal_raceway_dl_5A40[];
extern Gfx d_course_royal_raceway_dl_5B28[];
extern Gfx d_course_royal_raceway_dl_5CA0[];
extern Gfx d_course_royal_raceway_dl_5D08[];
extern Gfx d_course_royal_raceway_dl_5EB8[];
extern Gfx d_course_royal_raceway_dl_5FD8[];
extern Gfx d_course_royal_raceway_dl_6118[];
extern Gfx d_course_royal_raceway_dl_61B0[];
extern Gfx d_course_royal_raceway_dl_6378[];
extern Gfx d_course_royal_raceway_dl_6538[];
extern Gfx d_course_royal_raceway_dl_6780[];
extern Gfx d_course_royal_raceway_dl_68C8[];
extern Gfx d_course_royal_raceway_dl_6BC0[];
extern Gfx d_course_royal_raceway_dl_6E20[];
extern Gfx d_course_royal_raceway_dl_70C0[];
extern Gfx d_course_royal_raceway_dl_72B8[];
extern Gfx d_course_royal_raceway_dl_75C0[];
extern Gfx d_course_royal_raceway_dl_7778[];
extern Gfx d_course_royal_raceway_dl_78E8[];
extern Gfx d_course_royal_raceway_dl_7AD0[];
extern Gfx d_course_royal_raceway_dl_7BD8[];
extern Gfx d_course_royal_raceway_dl_7DB0[];
extern Gfx d_course_royal_raceway_dl_7ED8[];
extern Gfx d_course_royal_raceway_dl_8068[];
extern Gfx d_course_royal_raceway_dl_81C0[];
extern Gfx d_course_royal_raceway_dl_8398[];
extern Gfx d_course_royal_raceway_dl_84A0[];
extern Gfx d_course_royal_raceway_dl_8620[];
extern Gfx d_course_royal_raceway_dl_8770[];
extern Gfx d_course_royal_raceway_dl_8838[];
extern Gfx d_course_royal_raceway_dl_88B0[];
extern Gfx d_course_royal_raceway_dl_8930[];
extern Gfx d_course_royal_raceway_dl_89F0[];
extern Gfx d_course_royal_raceway_dl_8C58[];
extern Gfx d_course_royal_raceway_dl_8CD8[];
extern Gfx d_course_royal_raceway_dl_8EB8[];
extern Gfx d_course_royal_raceway_dl_8FA8[];
extern Gfx d_course_royal_raceway_dl_9218[];
extern Gfx d_course_royal_raceway_dl_92D0[];
extern Gfx d_course_royal_raceway_dl_94E8[];
extern Gfx d_course_royal_raceway_dl_9678[];
extern Gfx d_course_royal_raceway_dl_9900[];
extern Gfx d_course_royal_raceway_dl_99A0[];
extern Gfx d_course_royal_raceway_dl_9B30[];
extern Gfx d_course_royal_raceway_dl_9D58[];
extern Gfx d_course_royal_raceway_dl_9FE8[];
extern Gfx d_course_royal_raceway_dl_A0A8[];
extern Gfx d_course_royal_raceway_dl_A200[];
extern Gfx d_course_royal_raceway_dl_A478[];
extern Gfx d_course_royal_raceway_dl_A600[];
extern Gfx d_course_royal_raceway_dl_A728[];
extern Gfx d_course_royal_raceway_dl_A8A8[];
extern Gfx d_course_royal_raceway_dl_A9D0[];
extern Gfx d_course_royal_raceway_dl_AB28[];
extern Gfx d_course_royal_raceway_dl_AC28[];
extern Gfx d_course_royal_raceway_dl_AD90[];
extern Gfx d_course_royal_raceway_dl_AE70[];
extern Gfx d_course_royal_raceway_dl_AFB0[];
extern Gfx d_course_royal_raceway_dl_B040[];
extern Gfx d_course_royal_raceway_dl_B188[];
extern Gfx d_course_royal_raceway_dl_B230[];
extern Gfx d_course_royal_raceway_dl_B2E0[];
extern Gfx d_course_royal_raceway_dl_B3E8[];
extern Gfx d_course_royal_raceway_dl_B508[];
extern TrackWaypoint d_course_royal_raceway_unknown_waypoints[];
extern TrackWaypoint d_course_royal_raceway_track_waypoints[];
extern Vtx d_course_royal_raceway_tree_model[];
extern Gfx d_course_royal_raceway_dl_tree[];
extern Vtx d_royal_raceway_peaches_castle_tree_model[];
extern Gfx d_course_royal_raceway_dl_castle_tree[];
extern u8 d_course_royal_raceway_piranha_plant_tlut[];
extern Vtx d_course_royal_raceway_piranha_plant_model[];
extern Gfx d_course_royal_raceway_dl_piranha_plant[];
extern Gfx d_course_royal_raceway_dl_D8E8[];
extern struct ActorSpawnData d_course_royal_raceway_piranha_plant_spawn[];
extern struct ActorSpawnData d_course_royal_raceway_tree_spawn[];
extern struct ActorSpawnData d_course_royal_raceway_item_box_spawns[];
extern TrackSections d_course_royal_raceway_addr[];
#endif

File diff suppressed because it is too large Load Diff

View File

@ -1,328 +0,0 @@
#include <libultra/gbi.h>
#include "macros.h"
extern Gfx d_course_royal_raceway_packed_dl_0[];
extern Gfx d_course_royal_raceway_packed_dl_A8[];
extern Gfx d_course_royal_raceway_packed_dl_130[];
extern Gfx d_course_royal_raceway_packed_dl_1A8[];
extern Gfx d_course_royal_raceway_packed_dl_1C8[];
extern Gfx d_course_royal_raceway_packed_dl_230[];
extern Gfx d_course_royal_raceway_packed_dl_2A8[];
extern Gfx d_course_royal_raceway_packed_dl_320[];
extern Gfx d_course_royal_raceway_packed_dl_340[];
extern Gfx d_course_royal_raceway_packed_dl_4D0[];
extern Gfx d_course_royal_raceway_packed_dl_4E0[];
extern Gfx d_course_royal_raceway_packed_dl_548[];
extern Gfx d_course_royal_raceway_packed_dl_558[];
extern Gfx d_course_royal_raceway_packed_dl_5D8[];
extern Gfx d_course_royal_raceway_packed_dl_650[];
extern Gfx d_course_royal_raceway_packed_dl_668[];
extern Gfx d_course_royal_raceway_packed_dl_6D0[];
extern Gfx d_course_royal_raceway_packed_dl_6E0[];
extern Gfx d_course_royal_raceway_packed_dl_750[];
extern Gfx d_course_royal_raceway_packed_dl_7C0[];
extern Gfx d_course_royal_raceway_packed_dl_840[];
extern Gfx d_course_royal_raceway_packed_dl_860[];
extern Gfx d_course_royal_raceway_packed_dl_8A0[];
extern Gfx d_course_royal_raceway_packed_dl_8B0[];
extern Gfx d_course_royal_raceway_packed_dl_930[];
extern Gfx d_course_royal_raceway_packed_dl_9C8[];
extern Gfx d_course_royal_raceway_packed_dl_AB8[];
extern Gfx d_course_royal_raceway_packed_dl_B78[];
extern Gfx d_course_royal_raceway_packed_dl_C38[];
extern Gfx d_course_royal_raceway_packed_dl_C68[];
extern Gfx d_course_royal_raceway_packed_dl_CE0[];
extern Gfx d_course_royal_raceway_packed_dl_CF0[];
extern Gfx d_course_royal_raceway_packed_dl_E88[];
extern Gfx d_course_royal_raceway_packed_dl_E98[];
extern Gfx d_course_royal_raceway_packed_dl_F88[];
extern Gfx d_course_royal_raceway_packed_dl_1098[];
extern Gfx d_course_royal_raceway_packed_dl_11A8[];
extern Gfx d_course_royal_raceway_packed_dl_11C8[];
extern Gfx d_course_royal_raceway_packed_dl_12B0[];
extern Gfx d_course_royal_raceway_packed_dl_1438[];
extern Gfx d_course_royal_raceway_packed_dl_1450[];
extern Gfx d_course_royal_raceway_packed_dl_14C8[];
extern Gfx d_course_royal_raceway_packed_dl_1548[];
extern Gfx d_course_royal_raceway_packed_dl_15D8[];
extern Gfx d_course_royal_raceway_packed_dl_1640[];
extern Gfx d_course_royal_raceway_packed_dl_16B8[];
extern Gfx d_course_royal_raceway_packed_dl_1720[];
extern Gfx d_course_royal_raceway_packed_dl_1788[];
extern Gfx d_course_royal_raceway_packed_dl_17F8[];
extern Gfx d_course_royal_raceway_packed_dl_1860[];
extern Gfx d_course_royal_raceway_packed_dl_18D8[];
extern Gfx d_course_royal_raceway_packed_dl_1940[];
extern Gfx d_course_royal_raceway_packed_dl_19B0[];
extern Gfx d_course_royal_raceway_packed_dl_1A30[];
extern Gfx d_course_royal_raceway_packed_dl_1AA0[];
extern Gfx d_course_royal_raceway_packed_dl_1B18[];
extern Gfx d_course_royal_raceway_packed_dl_1B98[];
extern Gfx d_course_royal_raceway_packed_dl_1C48[];
extern Gfx d_course_royal_raceway_packed_dl_1CF0[];
extern Gfx d_course_royal_raceway_packed_dl_1D68[];
extern Gfx d_course_royal_raceway_packed_dl_1DF0[];
extern Gfx d_course_royal_raceway_packed_dl_1E60[];
extern Gfx d_course_royal_raceway_packed_dl_1EF0[];
extern Gfx d_course_royal_raceway_packed_dl_1F58[];
extern Gfx d_course_royal_raceway_packed_dl_1FE8[];
extern Gfx d_course_royal_raceway_packed_dl_20A0[];
extern Gfx d_course_royal_raceway_packed_dl_2110[];
extern Gfx d_course_royal_raceway_packed_dl_21B8[];
extern Gfx d_course_royal_raceway_packed_dl_2230[];
extern Gfx d_course_royal_raceway_packed_dl_22C0[];
extern Gfx d_course_royal_raceway_packed_dl_2370[];
extern Gfx d_course_royal_raceway_packed_dl_23F8[];
extern Gfx d_course_royal_raceway_packed_dl_2478[];
extern Gfx d_course_royal_raceway_packed_dl_2530[];
extern Gfx d_course_royal_raceway_packed_dl_25E0[];
extern Gfx d_course_royal_raceway_packed_dl_26B0[];
extern Gfx d_course_royal_raceway_packed_dl_2758[];
extern Gfx d_course_royal_raceway_packed_dl_27E0[];
extern Gfx d_course_royal_raceway_packed_dl_2870[];
extern Gfx d_course_royal_raceway_packed_dl_28D8[];
extern Gfx d_course_royal_raceway_packed_dl_2950[];
extern Gfx d_course_royal_raceway_packed_dl_2A10[];
extern Gfx d_course_royal_raceway_packed_dl_2AC8[];
extern Gfx d_course_royal_raceway_packed_dl_2B38[];
extern Gfx d_course_royal_raceway_packed_dl_2BA0[];
extern Gfx d_course_royal_raceway_packed_dl_2C08[];
extern Gfx d_course_royal_raceway_packed_dl_2CF8[];
extern Gfx d_course_royal_raceway_packed_dl_2D80[];
extern Gfx d_course_royal_raceway_packed_dl_2E08[];
extern Gfx d_course_royal_raceway_packed_dl_2EE0[];
extern Gfx d_course_royal_raceway_packed_dl_2F70[];
extern Gfx d_course_royal_raceway_packed_dl_3018[];
extern Gfx d_course_royal_raceway_packed_dl_3090[];
extern Gfx d_course_royal_raceway_packed_dl_3118[];
extern Gfx d_course_royal_raceway_packed_dl_3190[];
extern Gfx d_course_royal_raceway_packed_dl_3218[];
extern Gfx d_course_royal_raceway_packed_dl_3268[];
extern Gfx d_course_royal_raceway_packed_dl_32F0[];
extern Gfx d_course_royal_raceway_packed_dl_3368[];
extern Gfx d_course_royal_raceway_packed_dl_33D8[];
extern Gfx d_course_royal_raceway_packed_dl_3440[];
extern Gfx d_course_royal_raceway_packed_dl_34C0[];
extern Gfx d_course_royal_raceway_packed_dl_3540[];
extern Gfx d_course_royal_raceway_packed_dl_3628[];
extern Gfx d_course_royal_raceway_packed_dl_36B8[];
extern Gfx d_course_royal_raceway_packed_dl_3728[];
extern Gfx d_course_royal_raceway_packed_dl_3790[];
extern Gfx d_course_royal_raceway_packed_dl_37E8[];
extern Gfx d_course_royal_raceway_packed_dl_3908[];
extern Gfx d_course_royal_raceway_packed_dl_3978[];
extern Gfx d_course_royal_raceway_packed_dl_3B50[];
extern Gfx d_course_royal_raceway_packed_dl_3B70[];
extern Gfx d_course_royal_raceway_packed_dl_3C18[];
extern Gfx d_course_royal_raceway_packed_dl_3CF0[];
extern Gfx d_course_royal_raceway_packed_dl_3DC0[];
extern Gfx d_course_royal_raceway_packed_dl_3E50[];
extern Gfx d_course_royal_raceway_packed_dl_3F18[];
extern Gfx d_course_royal_raceway_packed_dl_3FA8[];
extern Gfx d_course_royal_raceway_packed_dl_4078[];
extern Gfx d_course_royal_raceway_packed_dl_4118[];
extern Gfx d_course_royal_raceway_packed_dl_41A8[];
extern Gfx d_course_royal_raceway_packed_dl_4298[];
extern Gfx d_course_royal_raceway_packed_dl_4350[];
extern Gfx d_course_royal_raceway_packed_dl_4400[];
extern Gfx d_course_royal_raceway_packed_dl_44B0[];
extern Gfx d_course_royal_raceway_packed_dl_4538[];
extern Gfx d_course_royal_raceway_packed_dl_45E0[];
extern Gfx d_course_royal_raceway_packed_dl_46E0[];
extern Gfx d_course_royal_raceway_packed_dl_47C0[];
extern Gfx d_course_royal_raceway_packed_dl_4890[];
extern Gfx d_course_royal_raceway_packed_dl_4968[];
extern Gfx d_course_royal_raceway_packed_dl_4A08[];
extern Gfx d_course_royal_raceway_packed_dl_4A80[];
extern Gfx d_course_royal_raceway_packed_dl_4B30[];
extern Gfx d_course_royal_raceway_packed_dl_4BC8[];
extern Gfx d_course_royal_raceway_packed_dl_4CC8[];
extern Gfx d_course_royal_raceway_packed_dl_4DC0[];
extern Gfx d_course_royal_raceway_packed_dl_4E90[];
extern Gfx d_course_royal_raceway_packed_dl_4F20[];
extern Gfx d_course_royal_raceway_packed_dl_4F98[];
extern Gfx d_course_royal_raceway_packed_dl_5018[];
extern Gfx d_course_royal_raceway_packed_dl_50B0[];
extern Gfx d_course_royal_raceway_packed_dl_5138[];
extern Gfx d_course_royal_raceway_packed_dl_51E8[];
extern Gfx d_course_royal_raceway_packed_dl_5298[];
extern Gfx d_course_royal_raceway_packed_dl_5330[];
extern Gfx d_course_royal_raceway_packed_dl_5400[];
extern Gfx d_course_royal_raceway_packed_dl_54A8[];
extern Gfx d_course_royal_raceway_packed_dl_5520[];
extern Gfx d_course_royal_raceway_packed_dl_55D0[];
extern Gfx d_course_royal_raceway_packed_dl_56A0[];
extern Gfx d_course_royal_raceway_packed_dl_5740[];
extern Gfx d_course_royal_raceway_packed_dl_57F0[];
extern Gfx d_course_royal_raceway_packed_dl_58E8[];
extern Gfx d_course_royal_raceway_packed_dl_5990[];
extern Gfx d_course_royal_raceway_packed_dl_5A10[];
extern Gfx d_course_royal_raceway_packed_dl_5AA8[];
extern Gfx d_course_royal_raceway_packed_dl_5B50[];
extern Gfx d_course_royal_raceway_packed_dl_5C00[];
extern Gfx d_course_royal_raceway_packed_dl_5D18[];
extern Gfx d_course_royal_raceway_packed_dl_5DC8[];
extern Gfx d_course_royal_raceway_packed_dl_5EF8[];
extern Gfx d_course_royal_raceway_packed_dl_6008[];
extern Gfx d_course_royal_raceway_packed_dl_60D8[];
extern Gfx d_course_royal_raceway_packed_dl_6228[];
extern Gfx d_course_royal_raceway_packed_dl_6328[];
extern Gfx d_course_royal_raceway_packed_dl_67E8[];
extern Gfx d_course_royal_raceway_packed_dl_6808[];
extern Gfx d_course_royal_raceway_packed_dl_6880[];
extern Gfx d_course_royal_raceway_packed_dl_68E8[];
extern Gfx d_course_royal_raceway_packed_dl_6950[];
extern Gfx d_course_royal_raceway_packed_dl_69B0[];
extern Gfx d_course_royal_raceway_packed_dl_6A10[];
extern Gfx d_course_royal_raceway_packed_dl_6A80[];
extern Gfx d_course_royal_raceway_packed_dl_6B60[];
extern Gfx d_course_royal_raceway_packed_dl_6BE8[];
extern Gfx d_course_royal_raceway_packed_dl_6C58[];
extern Gfx d_course_royal_raceway_packed_dl_6CC0[];
extern Gfx d_course_royal_raceway_packed_dl_6D18[];
extern Gfx d_course_royal_raceway_packed_dl_6D98[];
extern Gfx d_course_royal_raceway_packed_dl_6E20[];
extern Gfx d_course_royal_raceway_packed_dl_6EB8[];
extern Gfx d_course_royal_raceway_packed_dl_6F28[];
extern Gfx d_course_royal_raceway_packed_dl_6FB0[];
extern Gfx d_course_royal_raceway_packed_dl_7020[];
extern Gfx d_course_royal_raceway_packed_dl_70B8[];
extern Gfx d_course_royal_raceway_packed_dl_7138[];
extern Gfx d_course_royal_raceway_packed_dl_71A0[];
extern Gfx d_course_royal_raceway_packed_dl_7278[];
extern Gfx d_course_royal_raceway_packed_dl_72E8[];
extern Gfx d_course_royal_raceway_packed_dl_7360[];
extern Gfx d_course_royal_raceway_packed_dl_73E0[];
extern Gfx d_course_royal_raceway_packed_dl_7490[];
extern Gfx d_course_royal_raceway_packed_dl_7500[];
extern Gfx d_course_royal_raceway_packed_dl_7578[];
extern Gfx d_course_royal_raceway_packed_dl_75F8[];
extern Gfx d_course_royal_raceway_packed_dl_7680[];
extern Gfx d_course_royal_raceway_packed_dl_7718[];
extern Gfx d_course_royal_raceway_packed_dl_7780[];
extern Gfx d_course_royal_raceway_packed_dl_77E8[];
extern Gfx d_course_royal_raceway_packed_dl_7868[];
extern Gfx d_course_royal_raceway_packed_dl_78E0[];
extern Gfx d_course_royal_raceway_packed_dl_7980[];
extern Gfx d_course_royal_raceway_packed_dl_7A18[];
extern Gfx d_course_royal_raceway_packed_dl_7AE8[];
extern Gfx d_course_royal_raceway_packed_dl_7B50[];
extern Gfx d_course_royal_raceway_packed_dl_7BB8[];
extern Gfx d_course_royal_raceway_packed_dl_7C20[];
extern Gfx d_course_royal_raceway_packed_dl_7C98[];
extern Gfx d_course_royal_raceway_packed_dl_7D10[];
extern Gfx d_course_royal_raceway_packed_dl_7D90[];
extern Gfx d_course_royal_raceway_packed_dl_7E08[];
extern Gfx d_course_royal_raceway_packed_dl_7E80[];
extern Gfx d_course_royal_raceway_packed_dl_7EF8[];
extern Gfx d_course_royal_raceway_packed_dl_7F70[];
extern Gfx d_course_royal_raceway_packed_dl_7FD0[];
extern Gfx d_course_royal_raceway_packed_dl_8040[];
extern Gfx d_course_royal_raceway_packed_dl_80C8[];
extern Gfx d_course_royal_raceway_packed_dl_8140[];
extern Gfx d_course_royal_raceway_packed_dl_81C8[];
extern Gfx d_course_royal_raceway_packed_dl_8278[];
extern Gfx d_course_royal_raceway_packed_dl_8318[];
extern Gfx d_course_royal_raceway_packed_dl_8390[];
extern Gfx d_course_royal_raceway_packed_dl_8400[];
extern Gfx d_course_royal_raceway_packed_dl_8470[];
extern Gfx d_course_royal_raceway_packed_dl_84E8[];
extern Gfx d_course_royal_raceway_packed_dl_8580[];
extern Gfx d_course_royal_raceway_packed_dl_8618[];
extern Gfx d_course_royal_raceway_packed_dl_86B8[];
extern Gfx d_course_royal_raceway_packed_dl_8740[];
extern Gfx d_course_royal_raceway_packed_dl_8810[];
extern Gfx d_course_royal_raceway_packed_dl_8888[];
extern Gfx d_course_royal_raceway_packed_dl_8900[];
extern Gfx d_course_royal_raceway_packed_dl_8988[];
extern Gfx d_course_royal_raceway_packed_dl_89F0[];
extern Gfx d_course_royal_raceway_packed_dl_8A60[];
extern Gfx d_course_royal_raceway_packed_dl_8AC0[];
extern Gfx d_course_royal_raceway_packed_dl_8B28[];
extern Gfx d_course_royal_raceway_packed_dl_8B98[];
extern Gfx d_course_royal_raceway_packed_dl_8C00[];
extern Gfx d_course_royal_raceway_packed_dl_8C70[];
extern Gfx d_course_royal_raceway_packed_dl_8CD8[];
extern Gfx d_course_royal_raceway_packed_dl_8D48[];
extern Gfx d_course_royal_raceway_packed_dl_8DC0[];
extern Gfx d_course_royal_raceway_packed_dl_8E30[];
extern Gfx d_course_royal_raceway_packed_dl_8EA8[];
extern Gfx d_course_royal_raceway_packed_dl_8F28[];
extern Gfx d_course_royal_raceway_packed_dl_8F98[];
extern Gfx d_course_royal_raceway_packed_dl_9008[];
extern Gfx d_course_royal_raceway_packed_dl_9080[];
extern Gfx d_course_royal_raceway_packed_dl_90F8[];
extern Gfx d_course_royal_raceway_packed_dl_9168[];
extern Gfx d_course_royal_raceway_packed_dl_9198[];
extern Gfx d_course_royal_raceway_packed_dl_9210[];
extern Gfx d_course_royal_raceway_packed_dl_9290[];
extern Gfx d_course_royal_raceway_packed_dl_9310[];
extern Gfx d_course_royal_raceway_packed_dl_9380[];
extern Gfx d_course_royal_raceway_packed_dl_9408[];
extern Gfx d_course_royal_raceway_packed_dl_9438[];
extern Gfx d_course_royal_raceway_packed_dl_94B0[];
extern Gfx d_course_royal_raceway_packed_dl_9520[];
extern Gfx d_course_royal_raceway_packed_dl_9598[];
extern Gfx d_course_royal_raceway_packed_dl_9608[];
extern Gfx d_course_royal_raceway_packed_dl_9630[];
extern Gfx d_course_royal_raceway_packed_dl_96A8[];
extern Gfx d_course_royal_raceway_packed_dl_9718[];
extern Gfx d_course_royal_raceway_packed_dl_9778[];
extern Gfx d_course_royal_raceway_packed_dl_97E8[];
extern Gfx d_course_royal_raceway_packed_dl_9848[];
extern Gfx d_course_royal_raceway_packed_dl_98B8[];
extern Gfx d_course_royal_raceway_packed_dl_9918[];
extern Gfx d_course_royal_raceway_packed_dl_9988[];
extern Gfx d_course_royal_raceway_packed_dl_9A38[];
extern Gfx d_course_royal_raceway_packed_dl_9A98[];
extern Gfx d_course_royal_raceway_packed_dl_9B08[];
extern Gfx d_course_royal_raceway_packed_dl_9B68[];
extern Gfx d_course_royal_raceway_packed_dl_9BD0[];
extern Gfx d_course_royal_raceway_packed_dl_9C48[];
extern Gfx d_course_royal_raceway_packed_dl_9CB8[];
extern Gfx d_course_royal_raceway_packed_dl_9D20[];
extern Gfx d_course_royal_raceway_packed_dl_9DA0[];
extern Gfx d_course_royal_raceway_packed_dl_9E18[];
extern Gfx d_course_royal_raceway_packed_dl_9E98[];
extern Gfx d_course_royal_raceway_packed_dl_9F10[];
extern Gfx d_course_royal_raceway_packed_dl_9F80[];
extern Gfx d_course_royal_raceway_packed_dl_9FF0[];
extern Gfx d_course_royal_raceway_packed_dl_A050[];
extern Gfx d_course_royal_raceway_packed_dl_A0B0[];
extern Gfx d_course_royal_raceway_packed_dl_A128[];
extern Gfx d_course_royal_raceway_packed_dl_A1A0[];
extern Gfx d_course_royal_raceway_packed_dl_A210[];
extern Gfx d_course_royal_raceway_packed_dl_A278[];
extern Gfx d_course_royal_raceway_packed_dl_A2D8[];
extern Gfx d_course_royal_raceway_packed_dl_A3C8[];
extern Gfx d_course_royal_raceway_packed_dl_A438[];
extern Gfx d_course_royal_raceway_packed_dl_A4B8[];
extern Gfx d_course_royal_raceway_packed_dl_A538[];
extern Gfx d_course_royal_raceway_packed_dl_A5A0[];
extern Gfx d_course_royal_raceway_packed_dl_A618[];
extern Gfx d_course_royal_raceway_packed_dl_A648[];
extern Gfx d_course_royal_raceway_packed_dl_A6A8[];
extern Gfx d_course_royal_raceway_packed_dl_A718[];
extern Gfx d_course_royal_raceway_packed_dl_A730[];
extern Gfx d_course_royal_raceway_packed_dl_A7D8[];
extern Gfx d_course_royal_raceway_packed_dl_A870[];
extern Gfx d_course_royal_raceway_packed_dl_A8F8[];
extern Gfx d_course_royal_raceway_packed_dl_A970[];
extern Gfx d_course_royal_raceway_packed_dl_A998[];
extern Gfx d_course_royal_raceway_packed_dl_AA10[];
extern Gfx d_course_royal_raceway_packed_dl_AA90[];
extern Gfx d_course_royal_raceway_packed_dl_AB28[];
extern Gfx d_course_royal_raceway_packed_dl_ABA8[];
extern Gfx d_course_royal_raceway_packed_dl_AC30[];
extern Gfx d_course_royal_raceway_packed_dl_AC60[];
extern Gfx d_course_royal_raceway_packed_dl_ACE0[];
extern Gfx d_course_royal_raceway_packed_dl_AD78[];
extern Gfx d_course_royal_raceway_packed_dl_AE00[];
extern Gfx d_course_royal_raceway_packed_dl_AE70[];
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[2];
#define d_course_royal_raceway_packed_end GET_PACKED_END(d_course_royal_raceway_packed_dl_B120)

View File

@ -1,6 +1,6 @@
#include <libultra/types.h>
#include "course_offsets.h"
#include "course_data.h"
#include <assets/royal_raceway_data.h>
const course_texture royal_raceway_textures[] = {
{gTexture64619C, 0x0124, 0x0800, 0x0},

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
#include <actors.h>
#include <main.h>
#include <libultra/gbi.h>
#include "courses/royal_raceway/course_data.h"
#include <assets/mario_raceway_data.h>
#include <assets/royal_raceway_data.h>
/**
* @brief Renders the piranha plant actor.

View File

@ -148,7 +148,22 @@ void func_80299864(Camera *camera, Mat4 arg1, struct Actor *arg2) {
// Based on the TLUT being loaded above, this ought to be be another
// tree related DL, presumably one found in a course other than Moo Moo farm
// 0x0600FC70
//! @warning Possible bug:
// Previous incorrectly set to:
// d_course_moo_moo_farm_mole_tlut
// Unless both courses use this actor and use the same addr for the texture.
// 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) {
case COURSE_LUIGI_RACEWAY:
gSPDisplayList(gDisplayListHead++, d_course_luigi_raceway_dl_FC70);
break;
case COURSE_MOO_MOO_FARM:
gSPDisplayList(gDisplayListHead++, d_course_moo_moo_farm_mole_tlut);
break;
}
}
}

View File

@ -3595,60 +3595,49 @@ void *segmented_to_virtual_dupe_2(const void *addr) {
#include <assets/player_selection.h>
#ifdef NON_MATCHING
// https://decomp.me/scratch/NAZ12
// Register allocation nonsense
void func_80099184(MkTexture *arg0) {
void func_80099184(MkTexture *arg0)
{
u16 var_a1_2;
s32 var_v0;
s32 var_a1;
UNUSED s32 temp_s3;
MkTexture *texture = arg0;
UNUSED struct_8018E118_entry *thing;
while (texture->textureData != NULL) {
u8 *textureData = (u8 *) LOAD_ASSET(texture->textureData);
MkTexture *var_s1;
struct_8018E118_entry *thing = &D_8018E118[0];
var_s1 = segmented_to_virtual_dupe(arg0);
while (var_s1->textureData != NULL) {
var_a1 = 0;
for (var_v0 = 0; var_v0 < gNumD_8018E118Entries; var_v0++) {
// wtf is going on here?
if (D_8018E118[var_v0].textureData == (*texture).textureData) {
if ( var_s1->textureData == (thing+var_v0)->textureData) {
var_a1 = 1;
break;
}
}
if (var_a1 == 0) {
if (texture->type == 3) {
if (texture->size != 0) {
var_a1_2 = texture->size;
if (var_s1->type == 3) {
if (var_s1->size != 0) {
var_a1_2 = var_s1->size;
} else {
var_a1_2 = 0x1000;
}
if (var_a1_2 % 8) {
var_a1_2 = ((var_a1_2 / 8) * 8) + 8;
}
//dma_copy_base_729a30(texture->textureData, var_a1_2, D_8018D9B4);
//mio0decode(D_8018D9B4, (u8*)&D_8018D9B0[gD_8018E118TotalSize]);
// * 2 here is just a guess
size_t size = ResourceGetTexSizeByName(texture->textureData);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], textureData, size);
//dma_copy_base_729a30(var_s1->textureData, var_a1_2, D_8018D9B4);
//mio0decode(D_8018D9B4, &D_8018D9B0[gD_8018E118TotalSize]);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], var_s1->textureData, var_a1_2);
} else {
//dma_copy_base_729a30(texture->textureData, texture->height * texture->width * 2, &D_8018D9B0[gD_8018E118TotalSize]);
// * 2 here is just a guess
size_t size = ResourceGetTexSizeByName(texture->textureData);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], textureData, size);
//dma_copy_base_729a30(var_s1->textureData, (var_s1->height * var_s1->width) * 2, &D_8018D9B0[gD_8018E118TotalSize]);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], var_s1->textureData, var_s1->width * var_s1->height*2);
}
thing = &D_8018E118[gNumD_8018E118Entries];
printf("test: %s\n",texture->textureData);
thing->textureData = texture->textureData;
thing = &D_8018E118[gNumD_8018E118Entries];
thing->offset = gD_8018E118TotalSize;
gD_8018E118TotalSize += (texture->height * texture->width);
gNumD_8018E118Entries += 1;
thing[gNumD_8018E118Entries].textureData = var_s1->textureData;
thing[gNumD_8018E118Entries].offset = gD_8018E118TotalSize;
gD_8018E118TotalSize += var_s1->height * var_s1->width;
gD_8018E118TotalSize = ((gD_8018E118TotalSize / 8) * 8) + 8;
gNumD_8018E118Entries += 1;
}
texture++;
break;
var_s1++;
}
}
#else
GLOBAL_ASM("asm/non_matchings/code_80091750/func_80099184.s")
@ -3670,14 +3659,17 @@ void func_80099394(MkTexture *arg0) {
var_a1 = 0;
for (var_v0 = 0; var_v0 < gNumD_8018E118Entries; var_v0++) {
// wtf is going on here?
if (D_8018E118[var_v0^0].textureData == (*var_s1).textureData) {
if (D_8018E118[var_v0].textureData == (*var_s1).textureData) {
var_a1 = 1;
break;
}
}
if (var_a1 == 0) {
if (var_s1->type == 5) {
dma_copy_base_729a30(var_s1->textureData, (u32) ((s32) (var_s1->height * var_s1->width) / 2), &D_8018D9B0[gD_8018E118TotalSize]);
//dma_copy_base_729a30(var_s1->textureData, (u32) ((s32) (var_s1->height * var_s1->width) / 2), &D_8018D9B0[gD_8018E118TotalSize]);
u8 *tex = LOAD_ASSET(var_s1->textureData);
size_t texSize = ResourceGetTexSizeByName(var_s1->textureData);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], tex, texSize);
}
thing = &D_8018E118[gNumD_8018E118Entries];
@ -3745,6 +3737,7 @@ void func_8009969C(MkTexture *arg0) {
#ifdef NON_MATCHING
// Register allocation nonsense
// https://decomp.me/scratch/hwAAp
// Load background?
void func_800996BC(MkTexture *arg0, s32 arg1) {
u16 var_a1_2;
s32 var_v0;
@ -3796,7 +3789,8 @@ void func_800996BC(MkTexture *arg0, s32 arg1) {
case 1: /* switch 1 */
//mio0decode(D_8018D9B4, (u8*)&D_8018D9B0[gD_8018E118TotalSize]);
//printf("w: %d, h: %d", texture->width, texture->height);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], texture->textureData, texture->width * texture->height * 2);
u8 *tex = (u8 *) LOAD_ASSET(texture->textureData);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], tex, texture->width * texture->height * 2);
break;
case 0: /* switch 1 */
case 2: /* switch 1 */
@ -3808,7 +3802,8 @@ void func_800996BC(MkTexture *arg0, s32 arg1) {
if (1) {}
//D_8018D9B0[gD_8018E118TotalSize] = &gTextureBackgroundBlueSky;
//tkmk00decode(D_8018D9B4, texture->textureData, (u8*)&D_8018D9B0[gD_8018E118TotalSize], var_v0_2);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], texture->textureData, texture->width * texture->height * 2);
u8 *tex2 = (u8 *) LOAD_ASSET(texture->textureData);
memcpy(&D_8018D9B0[gD_8018E118TotalSize], tex2, texture->width * texture->height * 2);
break;
}
@ -3845,6 +3840,7 @@ void func_80099958(MkTexture *arg0, s32 arg1, s32 arg2) {
}
//dma_copy_base_729a30(temp_v0->textureData, var_a1, D_8018D9B4);
//mio0decode(D_8018D9B4, D_802BFB80.arraySize4[arg2][arg1 / 2][(arg1 % 2) + 2].pixel_index_array);
u8 *tex = LOAD_ASSET(temp_v0->textureData);
memcpy(D_802BFB80.arraySize4[arg2][arg1 / 2][(arg1 % 2) + 2].pixel_index_array, temp_v0->textureData, temp_v0->width * temp_v0->height * 2);
temp_v0++;
}
@ -4068,7 +4064,7 @@ void func_80099EC4(void) {
GLOBAL_ASM("asm/non_matchings/code_80091750/func_80099EC4.s")
#endif
void func_8009A238(MkTexture *arg0, s32 arg1) {
UNUSED void func_8009A238(MkTexture *arg0, s32 arg1) {
s32 var_a3;
s32 temp_v1;
u64 *sp24;
@ -4082,7 +4078,9 @@ void func_8009A238(MkTexture *arg0, s32 arg1) {
}
//dma_copy_base_7fa3c0(sp24, var_a3, D_8018D9B4);
//tkmk00decode(D_8018D9B4, D_8018D9B8, (u8*) &D_8018D9B0[temp_v1], 1);
memcpy(&D_8018D9B0[temp_v1], arg0->textureData, arg0->height * arg0->width * 2);
//u8 *tex = (u8 *) LOAD_ASSET(arg0->textureData);
size_t texSize = ResourceGetTexSizeByName(arg0->textureData);
memcpy(&D_8018D9B0[temp_v1], arg0->textureData, texSize);
D_8018E118[arg1].textureData = arg0->textureData;
}

View File

@ -3,6 +3,7 @@
#include <assets/ceremony_data.h>
#include <assets/mario_raceway_data.h>
#include <assets/luigi_raceway_data.h>
#include <assets/royal_raceway_data.h>
// @warning Array contains an extra zero element at the end.
KartAIBehaviour *gKartAIBehaviourLUT[] = {

View File

@ -3,7 +3,7 @@
#include <defines.h>
#include <segments.h>
#include <mk64.h>
#include <courses/royal_raceway/course_displaylists.h>
#include <assets/royal_raceway_displaylists.h>
#include "code_80281780.h"
#include "memory.h"
@ -136,16 +136,17 @@ void load_ceremony_cutscene(void) {
D_800DC5C8 = (u16)0;
gCollisionMesh = (CollisionTriangle *) gNextFreeMemoryAddress;
//! @bug these segmented addresses need to be symbols for mobility
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_67E8, -1);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_AEF8, -1);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_A970, 8);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_AC30, 8);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_CE0, 0x10);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_E88, 0x10);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_A618, -1);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_A618, -1);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_23F8, 1);
generate_collision_mesh_with_default_section_id(d_course_royal_raceway_packed_dl_2478, 1);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x070067E8), -1);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x0700AEF8), -1);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x0700A970), 8);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x0700AC30), 8);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x07000CE0), 0x10);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x07000E88), 0x10);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x0700A618), -1);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x0700A618), -1);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x070023F8), 1);
generate_collision_mesh_with_default_section_id(segmented_gfx_to_virtual(0x07002478), 1);
func_80295C6C();
debug_switch_character_ceremony_cutscene();
func_802818BC();

View File

@ -1,6 +1,6 @@
#include <libultraship.h>
#include <libultra/gbi.h>
#include <courses/royal_raceway/course_displaylists.h>
#include <assets/royal_raceway_displaylists.h>
// Init RDP - RSP (Ceremony)
Gfx D_80284EE0[] = {
@ -29,42 +29,43 @@ Gfx D_80284F70[] = {
gsDPSetCombineMode(G_CC_MODULATEIA, G_CC_MODULATEIA),
gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2),
gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON),
gsSPDisplayList(d_course_royal_raceway_packed_dl_67E8),
gsSPDisplayList(d_course_royal_raceway_packed_dl_AEF8),
gsSPDisplayList(d_course_royal_raceway_packed_dl_1438),
gsSPDisplayList(d_course_royal_raceway_packed_dl_A970),
gsSPDisplayList(d_course_royal_raceway_packed_dl_CE0),
gsSPDisplayList(d_course_royal_raceway_packed_dl_E88),
gsSPDisplayList(d_course_royal_raceway_packed_dl_A618),
gsSPDisplayList(d_course_royal_raceway_packed_dl_AC30),
gsSPDisplayList(d_course_royal_raceway_packed_dl_3728),
gsSPDisplayList(d_course_royal_raceway_packed_dl_36B8),
gsSPDisplayList(d_course_royal_raceway_packed_dl_3628),
gsSPDisplayList(d_course_royal_raceway_packed_dl_3540),
gsSPDisplayList(d_course_royal_raceway_packed_dl_3DC0),
gsSPDisplayList(d_course_royal_raceway_packed_dl_3E50),
gsSPDisplayList(d_course_royal_raceway_packed_dl_3F18),
gsSPDisplayList(d_course_royal_raceway_packed_dl_50B0),
gsSPDisplayList(d_course_royal_raceway_packed_dl_5138),
gsSPDisplayList(d_course_royal_raceway_packed_dl_55D0),
gsSPDisplayList(d_course_royal_raceway_packed_dl_5B50),
gsSPDisplayList(d_course_royal_raceway_packed_dl_5C00),
gsSPDisplayList(d_course_royal_raceway_packed_dl_5D18),
gsSPDisplayList(d_course_royal_raceway_packed_dl_5DC8),
gsSPDisplayList(d_course_royal_raceway_packed_dl_5EF8),
gsSPDisplayList(d_course_royal_raceway_packed_dl_5740),
gsSPDisplayList(d_course_royal_raceway_packed_dl_57F0),
gsSPDisplayList(d_course_royal_raceway_packed_dl_58E8),
gsSPDisplayList(d_course_royal_raceway_packed_dl_1788),
gsSPDisplayList(d_course_royal_raceway_packed_dl_1AA0),
gsSPDisplayList(d_course_royal_raceway_packed_dl_1A30),
gsSPDisplayList(d_course_royal_raceway_packed_dl_23F8),
gsSPDisplayList(d_course_royal_raceway_packed_dl_2478),
gsSPDisplayList(d_course_royal_raceway_packed_dl_3790),
gsSPDisplayList(0x070067E8),
gsSPDisplayList(0x0700AEF8),
gsSPDisplayList(0x07001438),
gsSPDisplayList(0x0700A970),
gsSPDisplayList(0x07000CE0),
gsSPDisplayList(0x07000E88),
gsSPDisplayList(0x0700A618),
gsSPDisplayList(0x0700AC30),
gsSPDisplayList(0x07003728),
gsSPDisplayList(0x070036B8),
gsSPDisplayList(0x07003628),
gsSPDisplayList(0x07003540),
gsSPDisplayList(0x07003DC0),
gsSPDisplayList(0x07003E50),
gsSPDisplayList(0x07003F18),
gsSPDisplayList(0x070050B0),
gsSPDisplayList(0x07005138),
gsSPDisplayList(0x070055D0),
gsSPDisplayList(0x07005B50),
gsSPDisplayList(0x07005C00),
gsSPDisplayList(0x07005D18),
gsSPDisplayList(0x07005DC8),
gsSPDisplayList(0x07005EF8),
gsSPDisplayList(0x07005740),
gsSPDisplayList(0x070057F0),
gsSPDisplayList(0x070058E8),
gsSPDisplayList(0x07001788),
gsSPDisplayList(0x07001AA0),
gsSPDisplayList(0x07001A30),
gsSPDisplayList(0x070023F8),
gsSPDisplayList(0x07002478),
gsSPDisplayList(0x07003790),
gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA),
gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2),
gsSPDisplayList(d_course_royal_raceway_packed_dl_6D0),
gsSPDisplayList(d_course_royal_raceway_packed_dl_4D0),
gsSPDisplayList(d_course_royal_raceway_packed_dl_840),
gsSPDisplayList(0x070006D0),
gsSPDisplayList(0x070004D0),
gsSPDisplayList(0x07000840),
gsSPEndDisplayList(),
};

View File

@ -8,6 +8,7 @@
#include <decode.h>
#include <mk64.h>
#include <stubs.h>
#include "racing/framebuffer_effects.h"
#include "networking/networking.h"
@ -1222,6 +1223,7 @@ void thread5_iteration(void){
}
profiler_log_thread5_time(THREAD5_START);
config_gfx_pool();
FB_CreateFramebuffers();
read_controllers();
game_state_handler();
end_master_display_list();

View File

@ -246,3 +246,13 @@ extern "C" float OTRGetDimensionFromRightEdge(float v) {
extern "C" int16_t OTRGetRectDimensionFromRightEdge(float v) {
return ((int)ceilf(OTRGetDimensionFromRightEdge(v)));
}
// Gets the width of the current render target area
extern "C" uint32_t OTRGetGameRenderWidth() {
return gfx_current_dimensions.width;
}
// Gets the height of the current render target area
extern "C" uint32_t OTRGetGameRenderHeight() {
return gfx_current_dimensions.height;
}

View File

@ -32,6 +32,8 @@ class GameEngine {
float OTRGetDimensionFromRightEdge(float v);
int16_t OTRGetRectDimensionFromLeftEdge(float v);
int16_t OTRGetRectDimensionFromRightEdge(float v);
uint32_t OTRGetGameRenderWidth();
uint32_t OTRGetGameRenderHeight();
};
#else
void GameEngine_ProcessGfxCommands(Gfx* commands);
@ -42,4 +44,6 @@ float OTRGetDimensionFromLeftEdge(float v);
float OTRGetDimensionFromRightEdge(float v);
int16_t OTRGetRectDimensionFromLeftEdge(float v);
int16_t OTRGetRectDimensionFromRightEdge(float v);
uint32_t OTRGetGameRenderWidth(void);
uint32_t OTRGetGameRenderHeight(void);
#endif

View File

@ -800,8 +800,8 @@ UNUSED void func_8029AE14() {
#include "actors/falling_rock/render.inc.c"
void spawn_piranha_plants(struct ActorSpawnData *spawnData) {
struct ActorSpawnData *temp_s0 = spawnData;
void spawn_piranha_plants(const char *spawnData) {
struct ActorSpawnData *temp_s0 = (struct ActorSpawnData *) LOAD_ASSET(spawnData);
struct PiranhaPlant *temp_v1;
UNUSED s32 pad;
Vec3f startingPos;
@ -858,7 +858,7 @@ void spawn_palm_trees(struct ActorSpawnData *spawnData) {
#include "actors/falling_rock/update.inc.c"
// Trees, cacti, shrubs, etc.
void spawn_foliage(struct ActorSpawnData *arg0) {
void spawn_foliage(const char *actor) {
UNUSED s32 pad[4];
Vec3f position;
Vec3f velocity;
@ -868,7 +868,7 @@ void spawn_foliage(struct ActorSpawnData *arg0) {
struct Actor *temp_s0;
struct ActorSpawnData *var_s3;
var_s3 = arg0;
var_s3 = (struct ActorSpawnData*) LOAD_ASSET(actor);
vec3f_set(velocity, 0.0f, 0.0f, 0.0f);
rotation[0] = 0x4000;
rotation[1] = 0;
@ -937,13 +937,13 @@ void spawn_foliage(struct ActorSpawnData *arg0) {
}
}
void spawn_all_item_boxes(struct ActorSpawnData *spawnData) {
void spawn_all_item_boxes(const char *spawnData) {
s16 temp_s1;
f32 temp_f0;
Vec3f startingPos;
Vec3f startingVelocity;
Vec3s startingRot;
struct ActorSpawnData *temp_s0 = spawnData;
struct ActorSpawnData *temp_s0 = (struct ActorSpawnData *) LOAD_ASSET(spawnData);
//struct ItemBox *itemBox;
if ((gModeSelection == TIME_TRIALS) || (gPlaceItemBoxes == 0)) { return; }
@ -1028,13 +1028,9 @@ void spawn_course_actors(void) {
gNumPermanentActors = 0;
switch (gCurrentCourseId) {
case COURSE_MARIO_RACEWAY:
struct ActorSpawnData *a_d_course_mario_raceway_tree_spawns = (struct ActorSpawnData *) LOAD_ASSET(d_course_mario_raceway_tree_spawns);
struct ActorSpawnData *a_d_course_mario_raceway_piranha_plant_spawns = (struct ActorSpawnData *) LOAD_ASSET(d_course_mario_raceway_piranha_plant_spawns);
struct ActorSpawnData *a_d_course_mario_raceway_item_box_spawns = (struct ActorSpawnData *) LOAD_ASSET(d_course_mario_raceway_item_box_spawns);
spawn_foliage(a_d_course_mario_raceway_tree_spawns);
spawn_piranha_plants(a_d_course_mario_raceway_piranha_plant_spawns);
spawn_all_item_boxes(a_d_course_mario_raceway_item_box_spawns);
spawn_foliage(d_course_mario_raceway_tree_spawns);
spawn_piranha_plants(d_course_mario_raceway_piranha_plant_spawns);
spawn_all_item_boxes(d_course_mario_raceway_item_box_spawns);
vec3f_set(position, 150.0f, 40.0f, -1300.0f);
position[0] *= gCourseDirection;
add_actor_to_empty_slot(position, rotation, velocity, ACTOR_MARIO_SIGN);

View File

@ -1,180 +1,197 @@
// #include <libultraship.h>
// #include "framebuffer_effects.h"
// #include "mk64.h"
// #include <assets/common_data.h>
#include <libultraship.h>
#include "framebuffer_effects.h"
#include "mk64.h"
#include <assets/common_data.h>
// int gfx_create_framebuffer(uint32_t width, uint32_t height, uint32_t native_width, uint32_t native_height,
// uint8_t resize);
int gfx_create_framebuffer(uint32_t width, uint32_t height, uint32_t native_width, uint32_t native_height,
uint8_t resize);
// s32 gPauseFrameBuffer = -1;
// s32 gBlurFrameBuffer = -1;
// // A framebuffer that should only be used for drawing in the same frame that it is copied too
// // i.e. the VisMono and VisFbuf effects
// s32 gReusableFrameBuffer = -1;
s32 gPauseFrameBuffer = -1;
s32 gBlurFrameBuffer = -1;
// A framebuffer that should only be used for drawing in the same frame that it is copied too
// i.e. the VisMono and VisFbuf effects
s32 gReusableFrameBuffer = -1;
// // N64 resolution sized buffer (320x240), used by picto box and deku bubble
// s32 gN64ResFrameBuffer = -1;
// N64 resolution sized buffer (320x240), used by picto box and deku bubble
s32 gN64ResFrameBuffer = -1;
// void FB_CreateFramebuffers(void) {
// if (gPauseFrameBuffer == -1) {
// gPauseFrameBuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, true);
// }
void FB_CreateFramebuffers(void) {
if (gPauseFrameBuffer == -1) {
gPauseFrameBuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, true);
}
// if (gBlurFrameBuffer == -1) {
// gBlurFrameBuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, true);
// }
if (gBlurFrameBuffer == -1) {
gBlurFrameBuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, true);
}
// if (gReusableFrameBuffer == -1) {
// gReusableFrameBuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, true);
// }
if (gReusableFrameBuffer == -1) {
gReusableFrameBuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, true);
}
// if (gN64ResFrameBuffer == -1) {
// gN64ResFrameBuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, false);
// }
// }
if (gN64ResFrameBuffer == -1) {
gN64ResFrameBuffer = gfx_create_framebuffer(SCREEN_WIDTH, SCREEN_HEIGHT, SCREEN_WIDTH, SCREEN_HEIGHT, false);
}
}
// /**
// * Copies the current texture data from the source frame buffer to the destination frame buffer
// * Setting oncePerFrame ensures that the copy will only happen once every game frame. This
// * is important for effects that could be affected by increased frame interpolation (like motion blur).
// * A pointer to a boolean is passed to the render for the render to set once the copy has been performed.
// * This function uses opcodes from f3dex2 but may be called when s2dex is loaded, such as during shrink window. Make
// * sure f3dex2 is loaded before this function is called.
// */
// 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))
// void FB_CopyToFramebuffer(Gfx** gfxp, s32 fb_src, s32 fb_dest, u8 oncePerFrame, u8* hasCopied) {
#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)}}
Mtx gIdentityMtx = {
toFixedPointMatrix(1.0, 0.0, 0.0, 0.0,
0.0, 1.0, 0.0, 0.0,
0.0, 0.0, 1.0, 0.0,
0.0, 0.0, 0.0, 1.0),
};
/**
* Copies the current texture data from the source frame buffer to the destination frame buffer
* Setting oncePerFrame ensures that the copy will only happen once every game frame. This
* is important for effects that could be affected by increased frame interpolation (like motion blur).
* A pointer to a boolean is passed to the render for the render to set once the copy has been performed.
* This function uses opcodes from f3dex2 but may be called when s2dex is loaded, such as during shrink window. Make
* sure f3dex2 is loaded before this function is called.
*/
void FB_CopyToFramebuffer(Gfx* gfx, s32 fb_src, s32 fb_dest, u8 oncePerFrame, u8* hasCopied) {
gSPMatrix(gfx++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetOtherMode(gfx++,
G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_POINT | G_TT_NONE | G_TL_TILE |
G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
G_AC_NONE | G_ZS_PRIM | G_RM_OPA_SURF | G_RM_OPA_SURF2);
gSPClearGeometryMode(gfx++, G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR);
gSPSetGeometryMode(gfx++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
gDPSetBlendColor(gfx++, 255, 255, 255, 8);
gDPSetPrimDepth(gfx++, 0xFFFF, 0xFFFF);
gDPSetEnvColor(gfx++, 255, 255, 255, 255);
gDPSetCombineLERP(gfx++, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0,
ENVIRONMENT);
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
gDPCopyFB(gfx++, fb_dest, fb_src, oncePerFrame, hasCopied);
}
/**
* Copies a 4:3 slice of the current framebuffer scaled down to 320x240 to a CPU buffer address.
* The buffer output will be in RGBA16 format.
* Specify the byteswap flag to force the buffer data to be written as BigEndian, which is
* required if the buffer is being used as a texture in F3D.
*/
void FB_WriteFramebufferSliceToCPU(Gfx* gfx, void *buffer, u8 byteSwap) {
//Gfx* gfx = *gfxp;
printf("write!\n");
FB_CopyToFramebuffer(gfx, 0, gReusableFrameBuffer, false, NULL);
// gSPMatrix(gfx++, &D_0D008E98, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
// Set the N64 resolution framebuffer as the draw target (320x240)
gsSPSetFB(gfx++, gN64ResFrameBuffer);
// Reset scissor for new framebuffer
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
// gDPSetOtherMode(gfx++,
// G_AD_DISABLE | G_CD_DISABLE | G_CK_NONE | G_TC_FILT | G_TF_POINT | G_TT_NONE | G_TL_TILE |
// G_TD_CLAMP | G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
// G_AC_NONE | G_ZS_PRIM | G_RM_OPA_SURF | G_RM_OPA_SURF2);
int16_t s0 = 0, t0 = 0;
int16_t s1 = OTRGetGameRenderWidth();
int16_t t1 = OTRGetGameRenderHeight();
printf("half!\n");
float aspectRatio = OTRGetAspectRatio();
float fourByThree = 4.0f / 3.0f;
// gSPClearGeometryMode(gfx++, G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR);
// gSPSetGeometryMode(gfx++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
// Adjust the texture coordinates so that only a 4:3 region from the center is drawn
// to the N64 resolution buffer. Currently ratios smaller than 4:3 will just stretch to fill.
if (aspectRatio > fourByThree) {
int16_t adjustedWidth = OTRGetGameRenderWidth() / (aspectRatio / fourByThree);
s0 = (OTRGetGameRenderWidth() - adjustedWidth) / 2;
s1 -= s0;
}
printf("Aspect!\n");
gDPSetTextureImageFB(gfx++, 0, 0, 0, gReusableFrameBuffer);
gDPImageRectangle(gfx++, 0 << 2, 0 << 2, s0, t0, SCREEN_WIDTH << 2, SCREEN_HEIGHT << 2, s1, t1, G_TX_RENDERTILE,
OTRGetGameRenderWidth(), OTRGetGameRenderHeight());
// gDPSetBlendColor(gfx++, 255, 255, 255, 8);
// gDPSetPrimDepth(gfx++, 0xFFFF, 0xFFFF);
// Read the final N64 framebuffer back as rgba16 into the CPU-side buffer
gDPReadFB(gfx++, gN64ResFrameBuffer, buffer, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, byteSwap);
// gDPSetEnvColor(gfx++, 255, 255, 255, 255);
// gDPSetCombineLERP(gfx++, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0,
// ENVIRONMENT);
gsSPResetFB(gfx++);
// Reset scissor for original framebuffer
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
printf("Complete!\n");
}
// gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
/**
* Draws the texture data from the specified frame buffer as a full screen image
*/
void FB_DrawFromFramebuffer(Gfx* gfx, s32 fb, u8 alpha) {
// gDPCopyFB(gfx++, fb_dest, fb_src, oncePerFrame, hasCopied);
gSPMatrix(gfx++, &gIdentityMtx, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
// *gfxp = gfx;
// }
gDPSetEnvColor(gfx++, 255, 255, 255, alpha);
// /**
// * Copies a 4:3 slice of the current framebuffer scaled down to 320x240 to a CPU buffer address.
// * The buffer output will be in RGBA16 format.
// * Specify the byteswap flag to force the buffer data to be written as BigEndian, which is
// * required if the buffer is being used as a texture in F3D.
// */
// void FB_WriteFramebufferSliceToCPU(Gfx** gfxp, void* buffer, u8 byteSwap) {
// Gfx* gfx = *gfxp;
gDPSetOtherMode(gfx++,
G_AD_NOISE | G_CD_NOISE | G_CK_NONE | G_TC_FILT | G_TF_POINT | G_TT_NONE | G_TL_TILE | G_TD_CLAMP |
G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
G_AC_NONE | G_ZS_PRIM | G_RM_CLD_SURF | G_RM_CLD_SURF2);
// FB_CopyToFramebuffer(&gfx, 0, gReusableFrameBuffer, false, NULL);
gSPClearGeometryMode(gfx++, G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR);
gSPSetGeometryMode(gfx++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
// // Set the N64 resolution framebuffer as the draw target (320x240)
// gsSPSetFB(gfx++, gN64ResFrameBuffer);
// // Reset scissor for new framebuffer
// gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
gDPSetCombineLERP(gfx++, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0,
ENVIRONMENT);
// int16_t s0 = 0, t0 = 0;
// int16_t s1 = OTRGetGameRenderWidth();
// int16_t t1 = OTRGetGameRenderHeight();
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
// float aspectRatio = OTRGetAspectRatio();
// float fourByThree = 4.0f / 3.0f;
gDPSetTextureImageFB(gfx++, 0, 0, 0, fb);
gDPImageRectangle(gfx++, OTRGetRectDimensionFromLeftEdge(0) << 2, 0 << 2, 0, 0,
OTRGetRectDimensionFromRightEdge(SCREEN_WIDTH) << 2, SCREEN_HEIGHT << 2, OTRGetGameRenderWidth(),
OTRGetGameRenderHeight(), G_TX_RENDERTILE, OTRGetGameRenderWidth(), OTRGetGameRenderHeight());
// // Adjust the texture coordinates so that only a 4:3 region from the center is drawn
// // to the N64 resolution buffer. Currently ratios smaller than 4:3 will just stretch to fill.
// if (aspectRatio > fourByThree) {
// int16_t adjustedWidth = OTRGetGameRenderWidth() / (aspectRatio / fourByThree);
// s0 = (OTRGetGameRenderWidth() - adjustedWidth) / 2;
// s1 -= s0;
// }
}
// gDPSetTextureImageFB(gfx++, 0, 0, 0, gReusableFrameBuffer);
// gDPImageRectangle(gfx++, 0 << 2, 0 << 2, s0, t0, SCREEN_WIDTH << 2, SCREEN_HEIGHT << 2, s1, t1, G_TX_RENDERTILE,
// OTRGetGameRenderWidth(), OTRGetGameRenderHeight());
/**
* Similar to FB_DrawFromFramebuffer, but scales the image relative to the center of the screen.
* This function uses opcodes from f3dex2 but may be called when s2dex is loaded, such as during shrink window. Make
* sure f3dex2 is loaded before this function is called.
*/
void FB_DrawFromFramebufferScaled(Gfx* gfx, s32 fb, u8 alpha, float scaleX, float scaleY) {
// // Read the final N64 framebuffer back as rgba16 into the CPU-side buffer
// gDPReadFB(gfx++, gN64ResFrameBuffer, buffer, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT, byteSwap);
gDPSetEnvColor(gfx++, 255, 255, 255, alpha);
// gsSPResetFB(gfx++);
// // Reset scissor for original framebuffer
// gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
gDPSetOtherMode(gfx++,
G_AD_NOISE | G_CD_NOISE | G_CK_NONE | G_TC_FILT | G_TF_POINT | G_TT_NONE | G_TL_TILE | G_TD_CLAMP |
G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
G_AC_NONE | G_ZS_PRIM | G_RM_CLD_SURF | G_RM_CLD_SURF2);
// *gfxp = gfx;
// }
gDPSetCombineLERP(gfx++, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0,
ENVIRONMENT);
// /**
// * Draws the texture data from the specified frame buffer as a full screen image
// */
// void FB_DrawFromFramebuffer(Gfx** gfxp, s32 fb, u8 alpha) {
// Gfx* gfx = *gfxp;
gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
// gSPMatrix(gfx++, &D_0D008E98, G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_MODELVIEW);
gDPSetTextureImageFB(gfx++, 0, 0, 0, fb);
// gDPSetEnvColor(gfx++, 255, 255, 255, alpha);
float x0 = SCREEN_WIDTH * 0.5f * scaleX;
float y0 = SCREEN_HEIGHT * 0.5f * scaleY;
// gDPSetOtherMode(gfx++,
// G_AD_NOISE | G_CD_NOISE | G_CK_NONE | G_TC_FILT | G_TF_POINT | G_TT_NONE | G_TL_TILE | G_TD_CLAMP |
// G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
// G_AC_NONE | G_ZS_PRIM | G_RM_CLD_SURF | G_RM_CLD_SURF2);
gDPImageRectangle(gfx++, OTRGetRectDimensionFromLeftEdge(x0) << 2, (int)(y0) << 2, 0, 0,
OTRGetRectDimensionFromRightEdge((float)(SCREEN_WIDTH - x0)) << 2,
(int)((float)(SCREEN_HEIGHT - y0)) << 2, OTRGetGameRenderWidth(), OTRGetGameRenderHeight(),
G_TX_RENDERTILE, OTRGetGameRenderWidth(), OTRGetGameRenderHeight());
// gSPClearGeometryMode(gfx++, G_CULL_BOTH | G_FOG | G_LIGHTING | G_TEXTURE_GEN | G_TEXTURE_GEN_LINEAR);
// gSPSetGeometryMode(gfx++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
// gDPSetCombineLERP(gfx++, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0,
// ENVIRONMENT);
// gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
// gDPSetTextureImageFB(gfx++, 0, 0, 0, fb);
// gDPImageRectangle(gfx++, OTRGetRectDimensionFromLeftEdge(0) << 2, 0 << 2, 0, 0,
// OTRGetRectDimensionFromRightEdge(SCREEN_WIDTH) << 2, SCREEN_HEIGHT << 2, OTRGetGameRenderWidth(),
// OTRGetGameRenderHeight(), G_TX_RENDERTILE, OTRGetGameRenderWidth(), OTRGetGameRenderHeight());
// *gfxp = gfx;
// }
// /**
// * Similar to FB_DrawFromFramebuffer, but scales the image relative to the center of the screen.
// * This function uses opcodes from f3dex2 but may be called when s2dex is loaded, such as during shrink window. Make
// * sure f3dex2 is loaded before this function is called.
// */
// void FB_DrawFromFramebufferScaled(Gfx** gfxp, s32 fb, u8 alpha, float scaleX, float scaleY) {
// Gfx* gfx = *gfxp;
// gDPSetEnvColor(gfx++, 255, 255, 255, alpha);
// gDPSetOtherMode(gfx++,
// G_AD_NOISE | G_CD_NOISE | G_CK_NONE | G_TC_FILT | G_TF_POINT | G_TT_NONE | G_TL_TILE | G_TD_CLAMP |
// G_TP_NONE | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
// G_AC_NONE | G_ZS_PRIM | G_RM_CLD_SURF | G_RM_CLD_SURF2);
// gDPSetCombineLERP(gfx++, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, ENVIRONMENT, 0, 0, 0, 0,
// ENVIRONMENT);
// gDPSetScissor(gfx++, G_SC_NON_INTERLACE, 0, 0, SCREEN_WIDTH, SCREEN_HEIGHT);
// gDPSetTextureImageFB(gfx++, 0, 0, 0, fb);
// float x0 = SCREEN_WIDTH * 0.5f * scaleX;
// float y0 = SCREEN_HEIGHT * 0.5f * scaleY;
// gDPImageRectangle(gfx++, OTRGetRectDimensionFromLeftEdge(x0) << 2, (int)(y0) << 2, 0, 0,
// OTRGetRectDimensionFromRightEdge((float)(SCREEN_WIDTH - x0)) << 2,
// (int)((float)(SCREEN_HEIGHT - y0)) << 2, OTRGetGameRenderWidth(), OTRGetGameRenderHeight(),
// G_TX_RENDERTILE, OTRGetGameRenderWidth(), OTRGetGameRenderHeight());
// *gfxp = gfx;
// }
}

View File

@ -1,4 +1,17 @@
// #include <libultraship.h>
#ifndef FRAMEBUFFER_EFFECTS_H
#define FRAMEBUFFER_EFFECTS_H
// void FB_DrawFromFramebuffer(Gfx** gfxp, s32 fb, u8 alpha);
// void FB_DrawFromFramebufferScaled(Gfx** gfxp, s32 fb, u8 alpha, float scaleX, float scaleY);
#include <libultraship.h>
extern s32 gPauseFrameBuffer;
extern s32 gBlurFrameBuffer;
extern s32 gReusableFrameBuffer;
extern s32 gN64ResFrameBuffer;
void FB_CreateFramebuffers(void);
void FB_CopyToFramebuffer(Gfx* gfx, s32 fb_src, s32 fb_dest, u8 oncePerFrame, u8* hasCopied);
void FB_WriteFramebufferSliceToCPU(Gfx* gfx, void *buffer, u8 byteSwap);
void FB_DrawFromFramebuffer(Gfx* gfx, s32 fb, u8 alpha);
void FB_DrawFromFramebufferScaled(Gfx* gfx, s32 fb, u8 alpha, float scaleX, float scaleY);
#endif // FRAMEBUFFER_EFFECTS_H

View File

@ -21,6 +21,9 @@
#include <assets/luigi_raceway_displaylists.h>
#include <assets/luigi_raceway_vertices.h>
#include <assets/luigi_raceway_data.h>
#include <assets/royal_raceway_displaylists.h>
#include <assets/royal_raceway_vertices.h>
#include <assets/royal_raceway_data.h>
#include <assert.h>
#include <course_offsets.h>
@ -1489,12 +1492,12 @@ NewCourseTable gNewCourseTable[] = {
.displaylists = NULL,
.dlSize = 0
}, {
.data = NULL,
.vtx = NULL,
.vtxSize = 0,
.textures = NULL,
.displaylists = NULL,
.dlSize = 0
.data = d_course_royal_raceway_dl_0,
.vtx = d_course_royal_raceway_vertex,
.vtxSize = 8306,
.textures = royal_raceway_textures,
.displaylists = d_course_royal_raceway_packed_dls,
.dlSize = 5670
}, {
.data = d_course_luigi_raceway_dl_0,
.vtx = d_course_luigi_raceway_vertex,
@ -1518,15 +1521,15 @@ u8 *load_lakitu_textures_x64(const char** textureList, size_t length) {
gNextFreeMemoryAddress += size;
size_t offset = 0;
for (size_t i = 0; i < length; i++) {
u8 *tex = (u8 *) LOAD_ASSET(textureList[i]);
//u8 *tex = (u8 *) LOAD_ASSET(textureList[i]);
size_t texSize = ResourceGetTexSizeByName(textureList[i]);
memcpy(&textures[offset], tex, texSize);
printf("\nTEX SIZE: %X\n\n", texSize);
memcpy(&textures[offset], textureList[i], texSize);
offset += texSize;
}
return textures;
}
void load_luigi_raceway(void);
void load_course(s32 courseId) {
printf("Loading Course Data\n");
@ -1537,8 +1540,6 @@ void load_course(s32 courseId) {
char* displaylists = gNewCourseTable[courseId].displaylists;
size_t dlSize = gNewCourseTable[courseId].dlSize;
testaaa = (Gfx *) LOAD_ASSET(data);
// Convert course vtx to vtx
CourseVtx *cvtx = (CourseVtx *) LOAD_ASSET(vtxData);
Vtx *vtx = (Vtx *) allocate_memory(sizeof(Vtx) * vtxSize);

View File

@ -6,6 +6,7 @@
#include <defines.h>
#include <course.h>
#include "../camera.h"
#include "framebuffer_effects.h"
#include "render_courses.h"
#include "code_800029B0.h"
@ -23,6 +24,8 @@
#include <assets/mario_raceway_displaylists.h>
#include <assets/luigi_raceway_data.h>
#include <assets/luigi_raceway_displaylists.h>
#include <assets/royal_raceway_data.h>
#include <assets/royal_raceway_displaylists.h>
s16 D_802B87B0 = 995;
s16 D_802B87B4 = 1000;
@ -845,23 +848,23 @@ void render_royal_raceway(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);
// d_course_royal_raceway_packed_dl_B030
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700B030));
gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(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);
// d_course_royal_raceway_packed_dl_A648
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x0700A648));
gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x0700A648)));
render_course_segments((uintptr_t) royal_raceway_dls, arg0);
render_course_segments(royal_raceway_dls, arg0);
// d_course_royal_raceway_packed_dl_11A8
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070011A8));
gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(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);
// d_course_royal_raceway_packed_dl_8A0
gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070008A0));
gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x070008A0)));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
@ -911,28 +914,34 @@ void render_luigi_raceway(struct UnkStruct_800DC5EC *arg0) {
if (currentScreenSection >= 6) {
currentScreenSection = 0;
}
u16 *fb = (u16 *) gSegmentTable[5] + 0xF800;
//FB_WriteFramebufferSliceToCPU(gDisplayListHead, fb, true);
//FB_DrawFromFramebuffer(gDisplayListHead, 0, fb, true);
//FB_CopyToFramebuffer(gDisplayListHead, 0, fb, false, NULL);
/**
* The jumbo television screen is split into six sections each section is copied one at a time.
* This is done to fit within the n64's texture size requirements; 64x32
*/
switch (currentScreenSection) {
case 0:
copy_framebuffer(D_800DC5DC, D_800DC5E0, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xF800));
//copy_framebuffer(D_800DC5DC, D_800DC5E0, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0xF800));
break;
case 1:
copy_framebuffer(D_800DC5DC + 64, D_800DC5E0, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x10800));
//copy_framebuffer(D_800DC5DC + 64, D_800DC5E0, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x10800));
break;
case 2:
copy_framebuffer(D_800DC5DC, D_800DC5E0 + 32, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x11800));
//copy_framebuffer(D_800DC5DC, D_800DC5E0 + 32, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x11800));
break;
case 3:
copy_framebuffer(D_800DC5DC + 64, D_800DC5E0 + 32, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x12800));
//copy_framebuffer(D_800DC5DC + 64, D_800DC5E0 + 32, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x12800));
break;
case 4:
copy_framebuffer(D_800DC5DC, D_800DC5E0 + 64, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x13800));
//copy_framebuffer(D_800DC5DC, D_800DC5E0 + 64, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x13800));
break;
case 5:
copy_framebuffer(D_800DC5DC + 64, D_800DC5E0 + 64, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x14800));
//copy_framebuffer(D_800DC5DC + 64, D_800DC5E0 + 64, 64, 32, (u16 *) PHYSICAL_TO_VIRTUAL(gPhysicalFramebuffers[prevFrame]), (u16 *) PHYSICAL_TO_VIRTUAL(gSegmentTable[5] + 0x14800));
break;
}
}
@ -1525,7 +1534,8 @@ void func_80295D88(void) {
255, 255);
break;
case COURSE_ROYAL_RACEWAY:
parse_course_displaylists((uintptr_t) d_course_royal_raceway_addr);
TrackSectionsI *section7 = (TrackSectionsI *) LOAD_ASSET(d_course_royal_raceway_addr);
parse_course_displaylists(section7);
func_80295C6C();
D_8015F8E4 = -60.0f;
break;
@ -1694,9 +1704,9 @@ void func_802966A0(void) {
D_802B87BC = 0xFF;
}
// d_course_royal_raceway_packed_dl_A6A8
find_and_set_tile_size((uintptr_t)0x0700A6A8, 0, D_802B87BC);
find_and_set_tile_size((uintptr_t)segmented_gfx_to_virtual(0x0700A6A8), 0, D_802B87BC);
// d_course_royal_raceway_packed_dl_A648
find_and_set_tile_size((uintptr_t)0x0700A648, 0, D_802B87BC);
find_and_set_tile_size((uintptr_t)segmented_gfx_to_virtual(0x0700A648), 0, D_802B87BC);
break;
case COURSE_DK_JUNGLE:
D_802B87BC += 2;

View File

@ -1349,7 +1349,7 @@ void copy_framebuffer(s32 arg0, s32 arg1, s32 width, s32 height, u16 *source, u1
targetIndex = 0;
for (var_v1 = 0; var_v1 < height; var_v1++) {
sourceIndex = ((arg1 + var_v1) * 320) + arg0;
sourceIndex = ((arg1 + var_v1) * SCREEN_WIDTH) + arg0;
for (var_a1 = 0; var_a1 < width; var_a1++, targetIndex++, sourceIndex++) {
target[targetIndex] = source[sourceIndex];
}

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x8B9630]
no_compression: true
header:
code:
- '#include <libultraship.h>'

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x8A7640]
no_compression: true
header:
code:
- '#include <libultraship.h>'

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x89B510]
no_compression: true
header:
code:
- '#include <libultraship.h>'

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x8CC900]
no_compression: true
header:
code:
- '#include <libultraship.h>'

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x8D8E50]
no_compression: true
header:
code:
- '#include <libultraship.h>'

View File

@ -639,17 +639,17 @@ d_course_luigi_raceway_unknown_model3:
symbol: d_course_luigi_raceway_unknown_model3
type: vtx
offset: 0xBED0
count: 36
count: 32
d_course_luigi_raceway_unknown_model4:
symbol: d_course_luigi_raceway_unknown_model4
type: vtx
offset: 0xC0D0
count: 12
count: 18
d_course_luigi_raceway_unknown_model5:
symbol: d_course_luigi_raceway_unknown_model5
type: vtx
offset: 0xC1F0
count: 12
count: 27
d_course_luigi_raceway_light1:
symbol: d_course_luigi_raceway_light1
type: lights

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x90B3E0]
no_compression: true
header:
code:
- '#include <libultraship.h>'

View File

@ -0,0 +1,743 @@
:config:
segments:
- [0x06, 0x84ABD0]
- [0x07, 0x800000]
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
- '#include <align_asset_macro.h>'
references_packed_displaylists: true
d_course_royal_raceway_dl_0:
symbol: d_course_royal_raceway_dl_0
type: gfx
offset: 0x0
otr_mode: index
d_course_royal_raceway_dl_258:
symbol: d_course_royal_raceway_dl_258
type: gfx
offset: 0x258
otr_mode: index
d_course_royal_raceway_dl_360:
symbol: d_course_royal_raceway_dl_360
type: gfx
offset: 0x360
otr_mode: index
d_course_royal_raceway_dl_470:
symbol: d_course_royal_raceway_dl_470
type: gfx
offset: 0x470
otr_mode: index
d_course_royal_raceway_dl_6D0:
symbol: d_course_royal_raceway_dl_6D0
type: gfx
offset: 0x6D0
otr_mode: index
d_course_royal_raceway_dl_8E0:
symbol: d_course_royal_raceway_dl_8E0
type: gfx
offset: 0x8E0
otr_mode: index
d_course_royal_raceway_dl_A48:
symbol: d_course_royal_raceway_dl_A48
type: gfx
offset: 0xA48
otr_mode: index
d_course_royal_raceway_dl_B40:
symbol: d_course_royal_raceway_dl_B40
type: gfx
offset: 0xB40
otr_mode: index
d_course_royal_raceway_dl_DA0:
symbol: d_course_royal_raceway_dl_DA0
type: gfx
offset: 0xDA0
otr_mode: index
d_course_royal_raceway_dl_F40:
symbol: d_course_royal_raceway_dl_F40
type: gfx
offset: 0xF40
otr_mode: index
d_course_royal_raceway_dl_1180:
symbol: d_course_royal_raceway_dl_1180
type: gfx
offset: 0x1180
otr_mode: index
d_course_royal_raceway_dl_12C0:
symbol: d_course_royal_raceway_dl_12C0
type: gfx
offset: 0x12C0
otr_mode: index
d_course_royal_raceway_dl_1538:
symbol: d_course_royal_raceway_dl_1538
type: gfx
offset: 0x1538
otr_mode: index
d_course_royal_raceway_dl_1610:
symbol: d_course_royal_raceway_dl_1610
type: gfx
offset: 0x1610
otr_mode: index
d_course_royal_raceway_dl_1850:
symbol: d_course_royal_raceway_dl_1850
type: gfx
offset: 0x1850
otr_mode: index
d_course_royal_raceway_dl_19B0:
symbol: d_course_royal_raceway_dl_19B0
type: gfx
offset: 0x19B0
otr_mode: index
d_course_royal_raceway_dl_1BB8:
symbol: d_course_royal_raceway_dl_1BB8
type: gfx
offset: 0x1BB8
otr_mode: index
d_course_royal_raceway_dl_1C40:
symbol: d_course_royal_raceway_dl_1C40
type: gfx
offset: 0x1C40
otr_mode: index
d_course_royal_raceway_dl_1E88:
symbol: d_course_royal_raceway_dl_1E88
type: gfx
offset: 0x1E88
otr_mode: index
d_course_royal_raceway_dl_2018:
symbol: d_course_royal_raceway_dl_2018
type: gfx
offset: 0x2018
otr_mode: index
d_course_royal_raceway_dl_21A8:
symbol: d_course_royal_raceway_dl_21A8
type: gfx
offset: 0x21A8
otr_mode: index
d_course_royal_raceway_dl_2210:
symbol: d_course_royal_raceway_dl_2210
type: gfx
offset: 0x2210
otr_mode: index
d_course_royal_raceway_dl_2428:
symbol: d_course_royal_raceway_dl_2428
type: gfx
offset: 0x2428
otr_mode: index
d_course_royal_raceway_dl_25F0:
symbol: d_course_royal_raceway_dl_25F0
type: gfx
offset: 0x25F0
otr_mode: index
d_course_royal_raceway_dl_26F0:
symbol: d_course_royal_raceway_dl_26F0
type: gfx
offset: 0x26F0
otr_mode: index
d_course_royal_raceway_dl_27B8:
symbol: d_course_royal_raceway_dl_27B8
type: gfx
offset: 0x27B8
otr_mode: index
d_course_royal_raceway_dl_29A0:
symbol: d_course_royal_raceway_dl_29A0
type: gfx
offset: 0x29A0
otr_mode: index
d_course_royal_raceway_dl_2B78:
symbol: d_course_royal_raceway_dl_2B78
type: gfx
offset: 0x2B78
otr_mode: index
d_course_royal_raceway_dl_2C20:
symbol: d_course_royal_raceway_dl_2C20
type: gfx
offset: 0x2C20
otr_mode: index
d_course_royal_raceway_dl_2DD0:
symbol: d_course_royal_raceway_dl_2DD0
type: gfx
offset: 0x2DD0
otr_mode: index
d_course_royal_raceway_dl_2FE0:
symbol: d_course_royal_raceway_dl_2FE0
type: gfx
offset: 0x2FE0
otr_mode: index
d_course_royal_raceway_dl_31F8:
symbol: d_course_royal_raceway_dl_31F8
type: gfx
offset: 0x31F8
otr_mode: index
d_course_royal_raceway_dl_33B0:
symbol: d_course_royal_raceway_dl_33B0
type: gfx
offset: 0x33B0
otr_mode: index
d_course_royal_raceway_dl_3580:
symbol: d_course_royal_raceway_dl_3580
type: gfx
offset: 0x3580
otr_mode: index
d_course_royal_raceway_dl_3748:
symbol: d_course_royal_raceway_dl_3748
type: gfx
offset: 0x3748
otr_mode: index
d_course_royal_raceway_dl_3960:
symbol: d_course_royal_raceway_dl_3960
type: gfx
offset: 0x3960
otr_mode: index
d_course_royal_raceway_dl_3AD8:
symbol: d_course_royal_raceway_dl_3AD8
type: gfx
offset: 0x3AD8
otr_mode: index
d_course_royal_raceway_dl_3BA8:
symbol: d_course_royal_raceway_dl_3BA8
type: gfx
offset: 0x3BA8
otr_mode: index
d_course_royal_raceway_dl_3D38:
symbol: d_course_royal_raceway_dl_3D38
type: gfx
offset: 0x3D38
otr_mode: index
d_course_royal_raceway_dl_3ED8:
symbol: d_course_royal_raceway_dl_3ED8
type: gfx
offset: 0x3ED8
otr_mode: index
d_course_royal_raceway_dl_3FA0:
symbol: d_course_royal_raceway_dl_3FA0
type: gfx
offset: 0x3FA0
otr_mode: index
d_course_royal_raceway_dl_4048:
symbol: d_course_royal_raceway_dl_4048
type: gfx
offset: 0x4048
otr_mode: index
d_course_royal_raceway_dl_41D8:
symbol: d_course_royal_raceway_dl_41D8
type: gfx
offset: 0x41D8
otr_mode: index
d_course_royal_raceway_dl_4380:
symbol: d_course_royal_raceway_dl_4380
type: gfx
offset: 0x4380
otr_mode: index
d_course_royal_raceway_dl_4438:
symbol: d_course_royal_raceway_dl_4438
type: gfx
offset: 0x4438
otr_mode: index
d_course_royal_raceway_dl_44C0:
symbol: d_course_royal_raceway_dl_44C0
type: gfx
offset: 0x44C0
otr_mode: index
d_course_royal_raceway_dl_45A0:
symbol: d_course_royal_raceway_dl_45A0
type: gfx
offset: 0x45A0
otr_mode: index
d_course_royal_raceway_dl_46A0:
symbol: d_course_royal_raceway_dl_46A0
type: gfx
offset: 0x46A0
otr_mode: index
d_course_royal_raceway_dl_4750:
symbol: d_course_royal_raceway_dl_4750
type: gfx
offset: 0x4750
otr_mode: index
d_course_royal_raceway_dl_4800:
symbol: d_course_royal_raceway_dl_4800
type: gfx
offset: 0x4800
otr_mode: index
d_course_royal_raceway_dl_4930:
symbol: d_course_royal_raceway_dl_4930
type: gfx
offset: 0x4930
otr_mode: index
d_course_royal_raceway_dl_4A38:
symbol: d_course_royal_raceway_dl_4A38
type: gfx
offset: 0x4A38
otr_mode: index
d_course_royal_raceway_dl_4AE0:
symbol: d_course_royal_raceway_dl_4AE0
type: gfx
offset: 0x4AE0
otr_mode: index
d_course_royal_raceway_dl_4BA8:
symbol: d_course_royal_raceway_dl_4BA8
type: gfx
offset: 0x4BA8
otr_mode: index
d_course_royal_raceway_dl_4D00:
symbol: d_course_royal_raceway_dl_4D00
type: gfx
offset: 0x4D00
otr_mode: index
d_course_royal_raceway_dl_4DF8:
symbol: d_course_royal_raceway_dl_4DF8
type: gfx
offset: 0x4DF8
otr_mode: index
d_course_royal_raceway_dl_4EC0:
symbol: d_course_royal_raceway_dl_4EC0
type: gfx
offset: 0x4EC0
otr_mode: index
d_course_royal_raceway_dl_4F80:
symbol: d_course_royal_raceway_dl_4F80
type: gfx
offset: 0x4F80
otr_mode: index
d_course_royal_raceway_dl_50F0:
symbol: d_course_royal_raceway_dl_50F0
type: gfx
offset: 0x50F0
otr_mode: index
d_course_royal_raceway_dl_51D0:
symbol: d_course_royal_raceway_dl_51D0
type: gfx
offset: 0x51D0
otr_mode: index
d_course_royal_raceway_dl_52F0:
symbol: d_course_royal_raceway_dl_52F0
type: gfx
offset: 0x52F0
otr_mode: index
d_course_royal_raceway_dl_53B8:
symbol: d_course_royal_raceway_dl_53B8
type: gfx
offset: 0x53B8
otr_mode: index
d_course_royal_raceway_dl_54F8:
symbol: d_course_royal_raceway_dl_54F8
type: gfx
offset: 0x54F8
otr_mode: index
d_course_royal_raceway_dl_5598:
symbol: d_course_royal_raceway_dl_5598
type: gfx
offset: 0x5598
otr_mode: index
d_course_royal_raceway_dl_56C0:
symbol: d_course_royal_raceway_dl_56C0
type: gfx
offset: 0x56C0
otr_mode: index
d_course_royal_raceway_dl_5758:
symbol: d_course_royal_raceway_dl_5758
type: gfx
offset: 0x5758
otr_mode: index
d_course_royal_raceway_dl_5890:
symbol: d_course_royal_raceway_dl_5890
type: gfx
offset: 0x5890
otr_mode: index
d_course_royal_raceway_dl_5900:
symbol: d_course_royal_raceway_dl_5900
type: gfx
offset: 0x5900
otr_mode: index
d_course_royal_raceway_dl_5A40:
symbol: d_course_royal_raceway_dl_5A40
type: gfx
offset: 0x5A40
otr_mode: index
d_course_royal_raceway_dl_5B28:
symbol: d_course_royal_raceway_dl_5B28
type: gfx
offset: 0x5B28
otr_mode: index
d_course_royal_raceway_dl_5CA0:
symbol: d_course_royal_raceway_dl_5CA0
type: gfx
offset: 0x5CA0
otr_mode: index
d_course_royal_raceway_dl_5D08:
symbol: d_course_royal_raceway_dl_5D08
type: gfx
offset: 0x5D08
otr_mode: index
d_course_royal_raceway_dl_5EB8:
symbol: d_course_royal_raceway_dl_5EB8
type: gfx
offset: 0x5EB8
otr_mode: index
d_course_royal_raceway_dl_5FD8:
symbol: d_course_royal_raceway_dl_5FD8
type: gfx
offset: 0x5FD8
otr_mode: index
d_course_royal_raceway_dl_6118:
symbol: d_course_royal_raceway_dl_6118
type: gfx
offset: 0x6118
otr_mode: index
d_course_royal_raceway_dl_61B0:
symbol: d_course_royal_raceway_dl_61B0
type: gfx
offset: 0x61B0
otr_mode: index
d_course_royal_raceway_dl_6378:
symbol: d_course_royal_raceway_dl_6378
type: gfx
offset: 0x6378
otr_mode: index
d_course_royal_raceway_dl_6538:
symbol: d_course_royal_raceway_dl_6538
type: gfx
offset: 0x6538
otr_mode: index
d_course_royal_raceway_dl_6780:
symbol: d_course_royal_raceway_dl_6780
type: gfx
offset: 0x6780
otr_mode: index
d_course_royal_raceway_dl_68C8:
symbol: d_course_royal_raceway_dl_68C8
type: gfx
offset: 0x68C8
otr_mode: index
d_course_royal_raceway_dl_6BC0:
symbol: d_course_royal_raceway_dl_6BC0
type: gfx
offset: 0x6BC0
otr_mode: index
d_course_royal_raceway_dl_6E20:
symbol: d_course_royal_raceway_dl_6E20
type: gfx
offset: 0x6E20
otr_mode: index
d_course_royal_raceway_dl_70C0:
symbol: d_course_royal_raceway_dl_70C0
type: gfx
offset: 0x70C0
otr_mode: index
d_course_royal_raceway_dl_72B8:
symbol: d_course_royal_raceway_dl_72B8
type: gfx
offset: 0x72B8
otr_mode: index
d_course_royal_raceway_dl_75C0:
symbol: d_course_royal_raceway_dl_75C0
type: gfx
offset: 0x75C0
otr_mode: index
d_course_royal_raceway_dl_7778:
symbol: d_course_royal_raceway_dl_7778
type: gfx
offset: 0x7778
otr_mode: index
d_course_royal_raceway_dl_78E8:
symbol: d_course_royal_raceway_dl_78E8
type: gfx
offset: 0x78E8
otr_mode: index
d_course_royal_raceway_dl_7AD0:
symbol: d_course_royal_raceway_dl_7AD0
type: gfx
offset: 0x7AD0
otr_mode: index
d_course_royal_raceway_dl_7BD8:
symbol: d_course_royal_raceway_dl_7BD8
type: gfx
offset: 0x7BD8
otr_mode: index
d_course_royal_raceway_dl_7DB0:
symbol: d_course_royal_raceway_dl_7DB0
type: gfx
offset: 0x7DB0
otr_mode: index
d_course_royal_raceway_dl_7ED8:
symbol: d_course_royal_raceway_dl_7ED8
type: gfx
offset: 0x7ED8
otr_mode: index
d_course_royal_raceway_dl_8068:
symbol: d_course_royal_raceway_dl_8068
type: gfx
offset: 0x8068
otr_mode: index
d_course_royal_raceway_dl_81C0:
symbol: d_course_royal_raceway_dl_81C0
type: gfx
offset: 0x81C0
otr_mode: index
d_course_royal_raceway_dl_8398:
symbol: d_course_royal_raceway_dl_8398
type: gfx
offset: 0x8398
otr_mode: index
d_course_royal_raceway_dl_84A0:
symbol: d_course_royal_raceway_dl_84A0
type: gfx
offset: 0x84A0
otr_mode: index
d_course_royal_raceway_dl_8620:
symbol: d_course_royal_raceway_dl_8620
type: gfx
offset: 0x8620
otr_mode: index
d_course_royal_raceway_dl_8770:
symbol: d_course_royal_raceway_dl_8770
type: gfx
offset: 0x8770
otr_mode: index
d_course_royal_raceway_dl_8838:
symbol: d_course_royal_raceway_dl_8838
type: gfx
offset: 0x8838
otr_mode: index
d_course_royal_raceway_dl_88B0:
symbol: d_course_royal_raceway_dl_88B0
type: gfx
offset: 0x88B0
otr_mode: index
d_course_royal_raceway_dl_8930:
symbol: d_course_royal_raceway_dl_8930
type: gfx
offset: 0x8930
otr_mode: index
d_course_royal_raceway_dl_89F0:
symbol: d_course_royal_raceway_dl_89F0
type: gfx
offset: 0x89F0
otr_mode: index
d_course_royal_raceway_dl_8C58:
symbol: d_course_royal_raceway_dl_8C58
type: gfx
offset: 0x8C58
otr_mode: index
d_course_royal_raceway_dl_8CD8:
symbol: d_course_royal_raceway_dl_8CD8
type: gfx
offset: 0x8CD8
otr_mode: index
d_course_royal_raceway_dl_8EB8:
symbol: d_course_royal_raceway_dl_8EB8
type: gfx
offset: 0x8EB8
otr_mode: index
d_course_royal_raceway_dl_8FA8:
symbol: d_course_royal_raceway_dl_8FA8
type: gfx
offset: 0x8FA8
otr_mode: index
d_course_royal_raceway_dl_9218:
symbol: d_course_royal_raceway_dl_9218
type: gfx
offset: 0x9218
otr_mode: index
d_course_royal_raceway_dl_92D0:
symbol: d_course_royal_raceway_dl_92D0
type: gfx
offset: 0x92D0
otr_mode: index
d_course_royal_raceway_dl_94E8:
symbol: d_course_royal_raceway_dl_94E8
type: gfx
offset: 0x94E8
otr_mode: index
d_course_royal_raceway_dl_9678:
symbol: d_course_royal_raceway_dl_9678
type: gfx
offset: 0x9678
otr_mode: index
d_course_royal_raceway_dl_9900:
symbol: d_course_royal_raceway_dl_9900
type: gfx
offset: 0x9900
otr_mode: index
d_course_royal_raceway_dl_99A0:
symbol: d_course_royal_raceway_dl_99A0
type: gfx
offset: 0x99A0
otr_mode: index
d_course_royal_raceway_dl_9B30:
symbol: d_course_royal_raceway_dl_9B30
type: gfx
offset: 0x9B30
otr_mode: index
d_course_royal_raceway_dl_9D58:
symbol: d_course_royal_raceway_dl_9D58
type: gfx
offset: 0x9D58
otr_mode: index
d_course_royal_raceway_dl_9FE8:
symbol: d_course_royal_raceway_dl_9FE8
type: gfx
offset: 0x9FE8
otr_mode: index
d_course_royal_raceway_dl_A0A8:
symbol: d_course_royal_raceway_dl_A0A8
type: gfx
offset: 0xA0A8
otr_mode: index
d_course_royal_raceway_dl_A200:
symbol: d_course_royal_raceway_dl_A200
type: gfx
offset: 0xA200
otr_mode: index
d_course_royal_raceway_dl_A478:
symbol: d_course_royal_raceway_dl_A478
type: gfx
offset: 0xA478
otr_mode: index
d_course_royal_raceway_dl_A600:
symbol: d_course_royal_raceway_dl_A600
type: gfx
offset: 0xA600
otr_mode: index
d_course_royal_raceway_dl_A728:
symbol: d_course_royal_raceway_dl_A728
type: gfx
offset: 0xA728
otr_mode: index
d_course_royal_raceway_dl_A8A8:
symbol: d_course_royal_raceway_dl_A8A8
type: gfx
offset: 0xA8A8
otr_mode: index
d_course_royal_raceway_dl_A9D0:
symbol: d_course_royal_raceway_dl_A9D0
type: gfx
offset: 0xA9D0
otr_mode: index
d_course_royal_raceway_dl_AB28:
symbol: d_course_royal_raceway_dl_AB28
type: gfx
offset: 0xAB28
otr_mode: index
d_course_royal_raceway_dl_AC28:
symbol: d_course_royal_raceway_dl_AC28
type: gfx
offset: 0xAC28
otr_mode: index
d_course_royal_raceway_dl_AD90:
symbol: d_course_royal_raceway_dl_AD90
type: gfx
offset: 0xAD90
otr_mode: index
d_course_royal_raceway_dl_AE70:
symbol: d_course_royal_raceway_dl_AE70
type: gfx
offset: 0xAE70
otr_mode: index
d_course_royal_raceway_dl_AFB0:
symbol: d_course_royal_raceway_dl_AFB0
type: gfx
offset: 0xAFB0
otr_mode: index
d_course_royal_raceway_dl_B040:
symbol: d_course_royal_raceway_dl_B040
type: gfx
offset: 0xB040
otr_mode: index
d_course_royal_raceway_dl_B188:
symbol: d_course_royal_raceway_dl_B188
type: gfx
offset: 0xB188
otr_mode: index
d_course_royal_raceway_dl_B230:
symbol: d_course_royal_raceway_dl_B230
type: gfx
offset: 0xB230
otr_mode: index
d_course_royal_raceway_dl_B2E0:
symbol: d_course_royal_raceway_dl_B2E0
type: gfx
offset: 0xB2E0
otr_mode: index
d_course_royal_raceway_dl_B3E8:
symbol: d_course_royal_raceway_dl_B3E8
type: gfx
offset: 0xB3E8
otr_mode: index
d_course_royal_raceway_dl_B508:
symbol: d_course_royal_raceway_dl_B508
type: gfx
offset: 0xB508
otr_mode: index
d_course_royal_raceway_unknown_waypoints:
symbol: d_course_royal_raceway_unknown_waypoints
offset: 0xB5B8
count: 78
type: mk64:TRACK_WAYPOINTS
d_course_royal_raceway_track_waypoints:
symbol: d_course_royal_raceway_track_waypoints
offset: 0xB828
count: 903
type: mk64:TRACK_WAYPOINTS
d_course_royal_raceway_tree_model:
symbol: d_course_royal_raceway_tree_model
type: vtx
offset: 0xD460
count: 4
d_course_royal_raceway_dl_tree:
symbol: d_course_royal_raceway_dl_tree
type: gfx
offset: 0xD4A0
d_royal_raceway_peaches_castle_tree_model:
symbol: d_royal_raceway_peaches_castle_tree_model
type: vtx
offset: 0xD538
count: 4
d_course_royal_raceway_dl_castle_tree:
symbol: d_course_royal_raceway_dl_castle_tree
type: gfx
offset: 0xD578
d_course_royal_raceway_piranha_plant_tlut:
symbol: d_course_royal_raceway_piranha_plant_tlut
type: texture
offset: 0xD610
width: 16
height: 16
format: rgba16
ctype: u16
d_course_royal_raceway_piranha_plant_model:
symbol: d_course_royal_raceway_piranha_plant_model
type: vtx
offset: 0xD810
count: 4
d_course_royal_raceway_dl_piranha_plant:
symbol: d_course_royal_raceway_dl_piranha_plant
type: gfx
offset: 0xD850
otr_mode: index
d_course_royal_raceway_dl_D8E8:
symbol: d_course_royal_raceway_dl_D8E8
type: gfx
offset: 0xD8E8
otr_mode: index
d_course_royal_raceway_piranha_plant_spawn:
symbol: d_course_royal_raceway_piranha_plant_spawn
type: mk64:spawn_data
count: 17
offset: 0xD9F0
d_course_royal_raceway_tree_spawn:
symbol: d_course_royal_raceway_tree_spawn
type: mk64:spawn_data
count: 33
offset: 0xDA80
d_course_royal_raceway_item_box_spawns:
symbol: d_course_royal_raceway_item_box_spawns
type: mk64:spawn_data
count: 21
offset: 0xDB88
d_course_royal_raceway_addr:
symbol: d_course_royal_raceway_addr
type: mk64:track_sections
offset: 0xDC28
count: 119

View File

@ -0,0 +1,17 @@
:config:
vram:
addr: 0x800E8700 # not used for anything
offset: 0x8FAFF0
no_compression: true
header:
code:
- '#include <libultraship.h>'
header:
- '#include <libultraship.h>'
- '#include <libultra/gbi.h>'
- '#include <align_asset_macro.h>'
d_course_royal_raceway_packed_dls:
symbol: d_course_royal_raceway_packed_dls
type: blob
offset: 0x8FAFF0
size: 0x3643

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x8EC390]
no_compression: true
header:
code:
- '#include <libultraship.h>'

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x91B980]
no_compression: true
header:
code:
- '#include <libultraship.h>'

View File

@ -1,7 +1,6 @@
:config:
segments:
- [0x0F, 0x8C2510]
no_compression: true
header:
code:
- '#include <libultraship.h>'