make replace neon texture (#435)

* make replace neon texture

* cmake are dumb

* fix neon render

* Update render_objects.c

---------

Co-authored-by: MegaMech <MegaMech@users.noreply.github.com>
This commit is contained in:
coco875
2025-07-09 22:36:39 +00:00
committed by GitHub
parent d175f5ef24
commit 5277fced87
6 changed files with 200 additions and 41 deletions
+2 -4
View File
@@ -58,10 +58,8 @@ set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${PROJECT
set_property(DIRECTORY ${CMAKE_SOURCE_DIR} PROPERTY VS_DEBUGGER_WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
endif()
if(NOT EXISTS ${CMAKE_BINARY_DIR}/config.yml)
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/config.yml" "${CMAKE_BINARY_DIR}/config.yml")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/yamls/" "${CMAKE_BINARY_DIR}/yamls/")
endif()
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_if_different "${CMAKE_SOURCE_DIR}/config.yml" "${CMAKE_BINARY_DIR}/config.yml")
execute_process(COMMAND ${CMAKE_COMMAND} -E copy_directory "${CMAKE_SOURCE_DIR}/yamls/" "${CMAKE_BINARY_DIR}/yamls/")
if (MSVC)
set(CPP "${CMAKE_C_COMPILER}" "/EP")
+4 -4
View File
@@ -248,7 +248,7 @@ static const ALIGN_ASSET(2) char d_course_luigi_raceway_unknown_waypoints[] = "_
static const ALIGN_ASSET(2) char d_course_luigi_raceway_track_waypoints[] = "__OTR__luigi_raceway_data/d_course_luigi_raceway_track_waypoints";
static const ALIGN_ASSET(2) char luigi_raceway_data_seg6_vtx_BA90[] = "__OTR__luigi_raceway_data/luigi_raceway_data_seg6_vtx_BA90";
static const ALIGN_ASSET(2) char d_course_luigi_raceway_basket_model_lod2[] = "__OTR__luigi_raceway_data/d_course_luigi_raceway_basket_model_lod2";
static const ALIGN_ASSET(2) char d_course_luigi_raceway_unknown_model1[] = "__OTR__luigi_raceway_data/d_course_luigi_raceway_unknown_model1";
@@ -280,14 +280,14 @@ static const ALIGN_ASSET(2) char d_course_luigi_raceway_balloon_basket[] = "__OT
static const ALIGN_ASSET(2) char d_course_luigi_raceway_balloon_rope[] = "__OTR__luigi_raceway_data/d_course_luigi_raceway_balloon_rope";
static const ALIGN_ASSET(2) char luigi_raceway_data_seg6_gfx_F588[] = "__OTR__luigi_raceway_data/luigi_raceway_data_seg6_gfx_F588";
static const ALIGN_ASSET(2) char d_course_luigi_raceway_dl_F588[] = "__OTR__luigi_raceway_data/d_course_luigi_raceway_dl_F588";
static const ALIGN_ASSET(2) char d_course_luigi_raceway_dl_F630[] = "__OTR__luigi_raceway_data/d_course_luigi_raceway_dl_F630";
static const ALIGN_ASSET(2) char luigi_raceway_data_seg6_gfx_F588[] = "__OTR__luigi_raceway_data/luigi_raceway_data_seg6_gfx_F588";
static const ALIGN_ASSET(2) char luigi_raceway_data_seg6_gfx_F630[] = "__OTR__luigi_raceway_data/luigi_raceway_data_seg6_gfx_F630";
static const ALIGN_ASSET(2) char d_course_luigi_raceway_dl_F630[] = "__OTR__luigi_raceway_data/d_course_luigi_raceway_dl_F630";
static const ALIGN_ASSET(2) char luigi_raceway_data_seg6_gfx_F640[] = "__OTR__luigi_raceway_data/luigi_raceway_data_seg6_gfx_F640";
static const ALIGN_ASSET(2) char d_course_luigi_raceway_dl_F640[] = "__OTR__luigi_raceway_data/d_course_luigi_raceway_dl_F640";
+29 -5
View File
@@ -190,11 +190,35 @@ static const char* d_course_rainbow_road_static_tluts[] = {
gTLUTRainbowRoadNeonToad,
};
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mushroom[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mushroom";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mushroom1[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mushroom1";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mario[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mario";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mushroom2[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mushroom2";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_boo[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_boo";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mushroom3[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mushroom3";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mushroom4[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mushroom4";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mushroom5[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mushroom5";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mario1[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mario1";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mario2[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mario2";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mario3[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mario3";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mario4[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mario4";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_mario5[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_mario5";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_boo1[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_boo1";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_boo2[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_boo2";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_boo3[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_boo3";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_boo4[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_boo4";
static const ALIGN_ASSET(2) char d_course_rainbow_road_neon_boo5[] = "__OTR__rainbow_road_data/d_course_rainbow_road_neon_boo5";
static const ALIGN_ASSET(2) char gTextureRainbowRoadNeonPeach[] = "__OTR__rainbow_road_data/gTextureRainbowRoadNeonPeach";
@@ -220,10 +244,10 @@ static const char* d_course_rainbow_road_static_textures[] = {
gTextureRainbowRoadNeonToad,
};
static const ALIGN_ASSET(2) char d_course_rainbow_road_light1[] = "__OTR__rainbow_road_data/d_course_rainbow_road_light1";
static const ALIGN_ASSET(2) char rainbow_road_data_seg6_lights_12010[] = "__OTR__rainbow_road_data/rainbow_road_data_seg6_lights_12010";
static const ALIGN_ASSET(2) char d_course_rainbow_road_light1[] = "__OTR__rainbow_road_data/d_course_rainbow_road_light1";
static const ALIGN_ASSET(2) char d_course_rainbow_road_sphere[] = "__OTR__rainbow_road_data/d_course_rainbow_road_sphere";
static const ALIGN_ASSET(2) char d_course_rainbow_road_reflection_map_metal[] = "__OTR__rainbow_road_data/d_course_rainbow_road_reflection_map_metal";
+21 -10
View File
@@ -2081,7 +2081,8 @@ void render_texture_tile_rgba32_block(s16 x, s16 y, u8* texture, u32 width, u32
void render_game_logo(s16 x, s16 y) {
int32_t height = 128;
int32_t width = ResourceGetTexWidthByName(logo_mario_kart_64) * height / ResourceGetTexHeightByName(logo_mario_kart_64);
int32_t width =
ResourceGetTexWidthByName(logo_mario_kart_64) * height / ResourceGetTexHeightByName(logo_mario_kart_64);
render_texture_tile_rgba32_block(x, y, logo_mario_kart_64, width, height);
}
@@ -2706,7 +2707,7 @@ void render_digital_speedometer(s32 playerIdx) {
size_t len = (size_t) snprintf(str, sizeof(str), "%.2f", speed);
if (len >= sizeof(str)) {
printf("[render_objects.c] [render_digital_speedometer] str buffer too small, characters were discarded!\n");
printf("[render_objects.c] [render_digital_speedometer] str buffer too small, characters were discarded!\n");
}
text_draw_wide(270, 224, str, 0, 0.5f, 0.5f);
@@ -2747,8 +2748,8 @@ void func_8004EF9C(s32 arg0) {
temp_v0 = CM_GetPropsCourseId(arg0)->Minimap.Width;
temp_t0 = CM_GetPropsCourseId(arg0)->Minimap.Height;
func_8004D37C(0x00000104, 0x0000003C, CM_GetPropsCourseId(arg0)->Minimap.Texture, 0x000000FF, 0x000000FF, 0x000000FF,
0x000000FF, temp_v0, temp_t0, temp_v0, temp_t0);
func_8004D37C(0x00000104, 0x0000003C, CM_GetPropsCourseId(arg0)->Minimap.Texture, 0x000000FF, 0x000000FF,
0x000000FF, 0x000000FF, temp_v0, temp_t0, temp_v0, temp_t0);
}
void set_minimap_finishline_position(s32 playerId) {
@@ -2812,7 +2813,7 @@ void draw_minimap_character(s32 arg0, s32 playerId, s32 characterId) {
x = (center - (CM_GetProps()->Minimap.Width / 2)) + CM_GetProps()->Minimap.PlayerX + (s16) (thing0);
y = (CM_GetProps()->Minimap.Pos[arg0].Y - (CM_GetProps()->Minimap.Height / 2)) +
CM_GetProps()->Minimap.PlayerY + (s16) (thing1);
CM_GetProps()->Minimap.PlayerY + (s16) (thing1);
if (characterId != 8) {
if ((gGPCurrentRaceRankByPlayerId[playerId] == 0) && (gModeSelection != 3) && (gModeSelection != 1)) {
func_80046424(x, y, player->rotation[1] + 0x8000, 1.0f,
@@ -2834,7 +2835,6 @@ void draw_minimap_character(s32 arg0, s32 playerId, s32 characterId) {
// @port Resume Interpolation, if interpolated later remove this tag
FrameInterpolation_ShouldInterpolateFrame(true);
}
#else
GLOBAL_ASM("asm/non_matchings/render_objects/draw_minimap_character.s")
@@ -3543,7 +3543,6 @@ void func_80051ABC(s16 arg0, s32 arg1) {
func_800519D4(objectIndex, object->unk_09C, arg0 - object->unk_09E);
FrameInterpolation_RecordCloseChild();
}
} else {
func_8004B6C4(255, 255, 255);
@@ -4027,6 +4026,14 @@ void func_80055EF4(s32 objectIndex, UNUSED s32 arg1) {
}
}
Vtx common_vtx_neon[] = {
{ { { -32, -31, 0 }, 0, { 0, 0 }, { 255, 255, 255, 255 } } },
{ { { 31, -31, 0 }, 0, { 4032, 0 }, { 255, 255, 255, 255 } } },
{ { { 31, 31, 0 }, 0, { 4032, 3968 }, { 255, 255, 255, 255 } } },
{ { { -32, 31, 0 }, 0, { 0, 3968 }, { 255, 255, 255, 255 } } },
};
void render_object_neon(s32 cameraId) {
Camera* camera;
s32 objectIndex;
@@ -4040,10 +4047,14 @@ void render_object_neon(s32 cameraId) {
FrameInterpolation_RecordOpenChild(object, TAG_OBJECT((objectIndex << 8) + i));
if ((object->state >= 2) && (is_obj_index_flag_status_inactive(objectIndex, 0x00080000) != 0) &&
(is_object_visible_on_camera(objectIndex, camera, 0x2AABU) != 0)) {
Vtx* vtx = (Vtx*) LOAD_ASSET(common_vtx_hedgehog);
object->orientation[1] = angle_between_object_camera(objectIndex, camera);
draw_2d_texture_at(object->pos, object->orientation, object->sizeScaling, (u8*) object->activeTLUT,
object->activeTexture, vtx, 0x00000040, 0x00000040, 0x00000040, 0x00000020);
rsp_set_matrix_transformation(object->pos, object->orientation, object->sizeScaling);
gSPDisplayList(gDisplayListHead++, D_0D007D78);
gDPLoadTLUT_pal256(gDisplayListHead++, object->activeTLUT);
rsp_load_texture(object->activeTexture, 64, 64);
gSPVertex(gDisplayListHead++, common_vtx_neon, 4, 0);
gSPDisplayList(gDisplayListHead++, common_rectangle_display);
gSPTexture(gDisplayListHead++, 1, 1, 0, G_TX_RENDERTILE, G_OFF);
}
FrameInterpolation_RecordCloseChild();
}
+20 -11
View File
@@ -756,7 +756,10 @@ void update_neon_texture(s32 objectIndex) {
// I have no idea why this typecast works
gObjectList[objectIndex].activeTLUT =
(u8*) ((u32*) gObjectList[objectIndex].tlutList + (gObjectList[objectIndex].textureListIndex * 128));
gObjectList[objectIndex].activeTexture = gObjectList[objectIndex].textureList;
int idx = gObjectList[objectIndex].textureListIndex;
char* texture = gObjectList[objectIndex].textureList[idx];
gObjectList[objectIndex].activeTexture =
gObjectList[objectIndex].textureList[gObjectList[objectIndex].textureListIndex];
}
void func_80073514(s32 objectIndex) {
@@ -3259,10 +3262,10 @@ void verify_probability_table(char* str, const ItemProbabilities* probs, int16_t
getProbabilityArray(probs, itemProbabilities);
size_t count = 0;
for (size_t i = 0; i < ITEM_MAX; i++) {
//printf("prob %d ", itemProbabilities[i]);
// printf("prob %d ", itemProbabilities[i]);
count += itemProbabilities[i];
}
//printf("\n");
// printf("\n");
if (count != 100) {
printf("update_objects.c::verify_probability_table\n %s table for rank %d is imba %d/100\n", str, rank, count);
@@ -3289,7 +3292,7 @@ u8 gen_random_item(s16 rank, s16 option) {
switch (gModeSelection) {
case GRAND_PRIX:
switch(option) {
switch (option) {
case HUMAN_TABLE:
distributionTable = &grandPrixHumanProbabilityTable[rank];
verify_probability_table("Human", distributionTable, rank);
@@ -4099,14 +4102,16 @@ void func_80085BB4(s32 objectIndex) {
object_next_state(objectIndex);
}
const char* sNeonMushroomList[] = { d_course_rainbow_road_neon_mushroom };
const char* sNeonMushroomList[] = { d_course_rainbow_road_neon_mushroom1, d_course_rainbow_road_neon_mushroom2,
d_course_rainbow_road_neon_mushroom3, d_course_rainbow_road_neon_mushroom4,
d_course_rainbow_road_neon_mushroom5 };
void init_obj_neon_mushroom(s32 objectIndex) {
set_obj_origin_pos(objectIndex, xOrientation * -1431.0, 827.0f, -2957.0f);
init_texture_object(objectIndex,
load_lakitu_tlut_x64(d_course_rainbow_road_neon_mushroom_tlut_list,
ARRAY_COUNT(d_course_rainbow_road_neon_mushroom_tlut_list)),
d_course_rainbow_road_neon_mushroom, 0x40U, (u16) 0x00000040);
sNeonMushroomList, 0x40U, (u16) 0x00000040);
func_80085BB4(objectIndex);
}
@@ -4142,14 +4147,16 @@ void func_80085CA0(s32 objectIndex) {
}
}
const char* sNeonList[] = { d_course_rainbow_road_neon_mario };
const char* sNeonMarioList[] = { d_course_rainbow_road_neon_mario1, d_course_rainbow_road_neon_mario2,
d_course_rainbow_road_neon_mario3, d_course_rainbow_road_neon_mario4,
d_course_rainbow_road_neon_mario5 };
void func_80085DB8(s32 objectIndex) {
set_obj_origin_pos(objectIndex, xOrientation * 799.0, 1193.0f, -5891.0f);
init_texture_object(objectIndex,
load_lakitu_tlut_x64(d_course_rainbow_road_neon_mario_tlut_list,
ARRAY_COUNT(d_course_rainbow_road_neon_mario_tlut_list)),
d_course_rainbow_road_neon_mario, 0x40U, (u16) 0x00000040);
sNeonMarioList, 0x40U, (u16) 0x00000040);
func_80085BB4(objectIndex);
}
@@ -4176,14 +4183,16 @@ void func_80085E38(s32 objectIndex) {
}
}
const char* sNeonBooList[] = { d_course_rainbow_road_neon_boo };
const char* sNeonBooList[] = { d_course_rainbow_road_neon_boo1, d_course_rainbow_road_neon_boo2,
d_course_rainbow_road_neon_boo3, d_course_rainbow_road_neon_boo4,
d_course_rainbow_road_neon_boo5 };
void func_80085EF8(s32 objectIndex) {
set_obj_origin_pos(objectIndex, xOrientation * -2013.0, 555.0f, 0.0f);
init_texture_object(objectIndex,
load_lakitu_tlut_x64(d_course_rainbow_road_neon_boo_tlut_list,
ARRAY_COUNT(d_course_rainbow_road_neon_boo_tlut_list)),
d_course_rainbow_road_neon_boo, 0x40U, (u16) 0x00000040);
sNeonBooList, 0x40U, (u16) 0x00000040);
func_80085BB4(objectIndex);
}
@@ -4229,7 +4238,7 @@ void func_80085F74(s32 objectIndex) {
void func_80086074(s32 objectIndex, s32 arg1) {
set_obj_origin_pos(objectIndex, D_800E6734[arg1][0] * xOrientation, D_800E6734[arg1][1], D_800E6734[arg1][2]);
init_texture_object(objectIndex, d_course_rainbow_road_static_tluts[arg1],
d_course_rainbow_road_static_textures[arg1], 64, 64);
&d_course_rainbow_road_static_textures[arg1], 64, 64);
func_80085BB4(objectIndex);
}
#else
+124 -7
View File
@@ -412,30 +412,141 @@ gTLUTRainbowRoadNeonToad:
height: 16
format: rgba16
ctype: u16
d_course_rainbow_road_neon_mushroom:
symbol: d_course_rainbow_road_neon_mushroom
d_course_rainbow_road_neon_mushroom1:
symbol: d_course_rainbow_road_neon_mushroom1
type: texture
offset: 0x8000
width: 64
height: 64
format: ci8
ctype: u8
d_course_rainbow_road_neon_mario:
symbol: d_course_rainbow_road_neon_mario
tlut_symbol: gTLUTRainbowRoadNeonMushroom1
d_course_rainbow_road_neon_mushroom2:
symbol: d_course_rainbow_road_neon_mushroom2
type: texture
offset: 0x8000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonMushroom2
d_course_rainbow_road_neon_mushroom3:
symbol: d_course_rainbow_road_neon_mushroom3
type: texture
offset: 0x8000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonMushroom3
d_course_rainbow_road_neon_mushroom4:
symbol: d_course_rainbow_road_neon_mushroom4
type: texture
offset: 0x8000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonMushroom4
d_course_rainbow_road_neon_mushroom5:
symbol: d_course_rainbow_road_neon_mushroom5
type: texture
offset: 0x8000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonMushroom5
d_course_rainbow_road_neon_mario1:
symbol: d_course_rainbow_road_neon_mario1
type: texture
offset: 0x9000
width: 64
height: 64
format: ci8
ctype: u8
d_course_rainbow_road_neon_boo:
symbol: d_course_rainbow_road_neon_boo
tlut_symbol: gTLUTRainbowRoadNeonMario1
d_course_rainbow_road_neon_mario2:
symbol: d_course_rainbow_road_neon_mario2
type: texture
offset: 0x9000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonMario2
d_course_rainbow_road_neon_mario3:
symbol: d_course_rainbow_road_neon_mario3
type: texture
offset: 0x9000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonMario3
d_course_rainbow_road_neon_mario4:
symbol: d_course_rainbow_road_neon_mario4
type: texture
offset: 0x9000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonMario4
d_course_rainbow_road_neon_mario5:
symbol: d_course_rainbow_road_neon_mario5
type: texture
offset: 0x9000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonMario5
d_course_rainbow_road_neon_boo1:
symbol: d_course_rainbow_road_neon_boo1
type: texture
offset: 0xA000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonBoo1
d_course_rainbow_road_neon_boo2:
symbol: d_course_rainbow_road_neon_boo2
type: texture
offset: 0xA000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonBoo2
d_course_rainbow_road_neon_boo3:
symbol: d_course_rainbow_road_neon_boo3
type: texture
offset: 0xA000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonBoo3
d_course_rainbow_road_neon_boo4:
symbol: d_course_rainbow_road_neon_boo4
type: texture
offset: 0xA000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonBoo4
d_course_rainbow_road_neon_boo5:
symbol: d_course_rainbow_road_neon_boo5
type: texture
offset: 0xA000
width: 64
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonBoo5
gTextureRainbowRoadNeonPeach:
symbol: gTextureRainbowRoadNeonPeach
type: texture
@@ -444,6 +555,7 @@ gTextureRainbowRoadNeonPeach:
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonPeach
gTextureRainbowRoadNeonLuigi:
symbol: gTextureRainbowRoadNeonLuigi
type: texture
@@ -452,6 +564,7 @@ gTextureRainbowRoadNeonLuigi:
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonLuigi
gTextureRainbowRoadNeonDonkeyKong:
symbol: gTextureRainbowRoadNeonDonkeyKong
type: texture
@@ -460,6 +573,7 @@ gTextureRainbowRoadNeonDonkeyKong:
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonDonkeyKong
gTextureRainbowRoadNeonYoshi:
symbol: gTextureRainbowRoadNeonYoshi
type: texture
@@ -468,6 +582,7 @@ gTextureRainbowRoadNeonYoshi:
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonYoshi
gTextureRainbowRoadNeonBowser:
symbol: gTextureRainbowRoadNeonBowser
type: texture
@@ -476,6 +591,7 @@ gTextureRainbowRoadNeonBowser:
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonBowser
gTextureRainbowRoadNeonWario:
symbol: gTextureRainbowRoadNeonWario
type: texture
@@ -484,6 +600,7 @@ gTextureRainbowRoadNeonWario:
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonWario
gTextureRainbowRoadNeonToad:
symbol: gTextureRainbowRoadNeonToad
type: texture
@@ -492,7 +609,7 @@ gTextureRainbowRoadNeonToad:
height: 64
format: ci8
ctype: u8
tlut_symbol: gTLUTRainbowRoadNeonToad
d_course_rainbow_road_light1:
symbol: d_course_rainbow_road_light1
type: lights