diff options
| author | MegaMech <MegaMech@users.noreply.github.com> | 2024-10-05 15:31:31 -0600 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-05 15:31:31 -0600 |
| commit | 75297759ee906b103ff9714dad17e683f1757b7f (patch) | |
| tree | 2a81aff6c8e1d2be2806f34f8850c74499980479 /courses | |
| parent | 447fd8b29057e8dcc223507e6b7d6bc448c6f7d8 (diff) | |
[modding] Course Mod Support (#104)
* Course Manager
* Course
* Test
* Render
* That escalated quickly
* update
* properties
* Properties
* test
* Fix compile
* Add World
* skycolours
* Skybox Colours done
* Cleanup
* test
* Game runs again
* update
* Game run again
* Cup Works
* continue
* Add Courses
* clouds
* changes
* fixes
* update
* Fix compile
* update
* A few changes
* More Updates
* More refactors
* Fixes
* Fix ai behaviour
* Changes
* Fix courses
* test course test not working
* CUSTOM
* TestCourse works kinda
* fixes
* test course works
* cleanup
---------
Co-authored-by: MegaMech <7255464+MegaMech@users.noreply.github.com>
Diffstat (limited to 'courses')
| -rw-r--r-- | courses/test_course/data.c | 75 | ||||
| -rw-r--r-- | courses/test_course/model.c | 389 | ||||
| -rw-r--r-- | courses/test_course/vtx.c | 16 |
3 files changed, 480 insertions, 0 deletions
diff --git a/courses/test_course/data.c b/courses/test_course/data.c new file mode 100644 index 000000000..a39c05dc5 --- /dev/null +++ b/courses/test_course/data.c @@ -0,0 +1,75 @@ +#include "waypoints.h" +#include "course.h" +#include <libultra/gbi.h> + +extern Gfx mario_Plane_001_mesh[]; + +Gfx test_course_data_dl[] = { + gsDPSetCombineMode(G_CC_MODULATEIDECALA, G_CC_MODULATEIDECALA), + gsDPSetRenderMode(G_RM_AA_ZB_TEX_EDGE, G_RM_AA_ZB_TEX_EDGE2), + gsSPClearGeometryMode(G_CULL_BACK), + gsSPDisplayList(mario_Plane_001_mesh), +}; + +TrackWaypoint test_course_path[] = { + { 0, 0, 0, 0}, + { 0, 0, -100, 1}, + { 0, 0, -200, 1}, + { 0, 0, -300, 1}, + { 0, 0, -400, 1}, + { 0, 0, -500, 1}, + { 0, 0, -600, 1}, + { 0, 0, -700, 1}, + { 0, 0, -800, 1}, + { 0, 0, -900, 1}, + { 0, 0, -1000, 1}, + { 0, 0, -1096, 1}, // Main point 1 + { 100, 0, -1090, 2}, + { 200, 0, -1085, 2}, + { 300, 0, -1080, 2}, + { 400, 0, -1075, 2}, + { 500, 0, -1072, 2}, // Curve begins to smooth here + { 600, 0, -1068, 2}, + { 700, 0, -1065, 2}, + { 800, 0, -1063, 2}, + { 900, 0, -1061, 2}, + { 984, 0, -1060, 2}, // Main point 2 + { 990, 0, -900, 3}, + { 995, 0, -800, 3}, + { 997, 0, -700, 3}, + { 998, 0, -600, 3}, + { 999, 0, -500, 3}, + { 999, 0, -400, 3}, + { 999, 0, -300, 3}, + { 999, 0, -200, 3}, + { 999, 0, -100, 3}, + { 999, 0, 0,3}, + { 999, 0, 100, 3}, + { 999, 0, 200, 3}, + { 999, 0, 300, 3}, + { 999, 0, 400, 3}, + { 999, 0, 500, 3}, + { 999, 0, 600, 3}, + { 999, 0, 700, 3}, + { 999, 0, 800, 3}, + { 999, 0, 900, 3}, + { 999, 0, 940, 3}, // Main point 3 + { 900, 0, 945, 4}, + { 800, 0, 945, 4}, + { 700, 0, 947, 4}, + { 600, 0, 948, 4}, + { 500, 0, 949, 4}, + { 400, 0, 949, 4}, + { 300, 0, 949, 4}, + { 200, 0, 950, 4}, + { 100, 0, 950, 4}, + { 0, 0, 950, 1}, // Main point 4 + + // End of path + { -32768, -32768, -32768, 0 } // Terminator +}; + +TrackSections test_course_addr[] = { + { mario_Plane_001_mesh, 255, 255, 0x0000 }, + { 0x00000000, 0, 0, 0x00000 }, +}; diff --git a/courses/test_course/model.c b/courses/test_course/model.c new file mode 100644 index 000000000..61405fff1 --- /dev/null +++ b/courses/test_course/model.c @@ -0,0 +1,389 @@ +#include <libultraship.h> +#include <libultra/gbi.h> +#include "assets/other_textures.h" + +Lights1 mario_f3dlite_material_009_lights = gdSPDefLights1( + 0x0, 0x0, 0x0, + 0x0, 0x0, 0x0, 0x49, 0x49, 0x49); + +Lights1 mario_f3dlite_material_lights = gdSPDefLights1( + 0x7F, 0x7F, 0x7F, + 0xFF, 0xFF, 0xFF, 0x49, 0x49, 0x49); + +Vtx mario_Plane_001_mesh_vtx_cull[8] = { + {{ {-431, 0, -1544}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-431, 0, 1394}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-431, 9, 1394}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {-431, 9, -1544}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {1522, 0, -1544}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {1522, 0, 1394}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {1522, 9, 1394}, 0, {0, 0}, {0, 0, 0, 0} }}, + {{ {1522, 9, -1544}, 0, {0, 0}, {0, 0, 0, 0} }}, +}; + +Vtx mario_Plane_001_mesh_vtx_0[114] = { + {{ {984, 0, -1177}, 0, {2037, -25}, {0, 127, 0, 255} }}, + {{ {925, 0, -1018}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {1011, 0, -1164}, 0, {2025, 1009}, {0, 127, 0, 255} }}, + {{ {961, 0, -1184}, 0, {2035, -23}, {0, 127, 0, 255} }}, + {{ {984, 0, -1177}, 0, {2025, 999}, {0, 127, 0, 255} }}, + {{ {961, 0, -1184}, 0, {2036, 1008}, {0, 127, 0, 255} }}, + {{ {925, 0, -1188}, 0, {2031, -20}, {0, 127, 0, 255} }}, + {{ {925, 0, -1018}, 0, {-20, -16}, {0, 127, 0, 255} }}, + {{ {-85, 0, 271}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {85, 0, 271}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {85, 0, -716}, 0, {2032, -16}, {0, 127, 0, 255} }}, + {{ {-85, 0, -716}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {-85, 0, -716}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {85, 0, -716}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {85, 0, -1018}, 0, {2032, -16}, {0, 127, 0, 255} }}, + {{ {-85, 0, -1107}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {-70, 0, -1146}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {-51, 0, -1173}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {85, 0, -1018}, 0, {2032, -16}, {0, 127, 0, 255} }}, + {{ {-26, 0, -1192}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {2, 0, -1205}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {30, 0, -1211}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {60, 0, -1214}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {85, 0, -1217}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {124, 0, -1211}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {156, 0, -1188}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {925, 0, -1018}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {925, 0, -1188}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {156, 0, -1188}, 0, {2032, -16}, {0, 127, 0, 255} }}, + {{ {85, 0, -1018}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {954, 0, 656}, 0, {-16, 880}, {0, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {1095, 0, 895}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {1095, 0, 417}, 0, {2032, 752}, {0, 127, 0, 255} }}, + {{ {1095, 9, -62}, 0, {2032, 496}, {0, 127, 0, 255} }}, + {{ {1095, 6, 178}, 0, {2032, 624}, {0, 127, 0, 255} }}, + {{ {1095, 0, -540}, 0, {2032, 240}, {0, 127, 0, 255} }}, + {{ {1095, 5, -301}, 0, {2032, 368}, {0, 127, 0, 255} }}, + {{ {942, 9, -62}, 0, {-16, 496}, {0, 127, 0, 255} }}, + {{ {946, 5, 178}, 0, {-16, 624}, {0, 127, 0, 255} }}, + {{ {950, 0, 417}, 0, {-16, 752}, {0, 127, 0, 255} }}, + {{ {938, 7, -301}, 0, {-16, 368}, {0, 127, 0, 255} }}, + {{ {929, 0, -779}, 0, {-16, 112}, {0, 127, 0, 255} }}, + {{ {925, 0, -1018}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {1095, 0, -1018}, 0, {2032, -16}, {0, 127, 0, 255} }}, + {{ {933, 0, -540}, 0, {-16, 240}, {0, 127, 0, 255} }}, + {{ {85, 0, 895}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {958, 0, 1065}, 0, {2032, -16}, {0, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {85, 0, 1065}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {51, 0, 1059}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {21, 0, 1053}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {-9, 0, 1042}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {-31, 0, 1029}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {-50, 0, 1008}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {-70, 0, 981}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {-78, 0, 963}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {-82, 0, 936}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {-85, 0, 895}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {85, 0, 271}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {-85, 0, 271}, 0, {2032, 1008}, {0, 127, 0, 255} }}, + {{ {-85, 0, 895}, 0, {2032, -16}, {0, 127, 0, 255} }}, + {{ {85, 0, 271}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {-85, 0, 895}, 0, {2032, -16}, {0, 127, 0, 255} }}, + {{ {85, 0, 895}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {1095, 0, 895}, 0, {2032, 1008}, {0, 127, 252, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {0, 127, 252, 255} }}, + {{ {1090, 1, 933}, 0, {2032, 1008}, {0, 127, 252, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {0, 127, 252, 255} }}, + {{ {1090, 1, 933}, 0, {2032, 1008}, {255, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 0, 255} }}, + {{ {1086, 1, 957}, 0, {2032, 1008}, {255, 127, 0, 255} }}, + {{ {1086, 1, 957}, 0, {2032, 1008}, {255, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 0, 255} }}, + {{ {1078, 1, 979}, 0, {2032, 1008}, {255, 127, 0, 255} }}, + {{ {1078, 1, 979}, 0, {2032, 1008}, {255, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 0, 255} }}, + {{ {1069, 1, 999}, 0, {2032, 1008}, {255, 127, 0, 255} }}, + {{ {1069, 1, 999}, 0, {2032, 1008}, {255, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 0, 255} }}, + {{ {1059, 1, 1019}, 0, {2032, 1008}, {255, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 0, 255} }}, + {{ {1059, 1, 1019}, 0, {2032, 1008}, {255, 127, 255, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 255, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {255, 127, 255, 255} }}, + {{ {1042, 1, 1035}, 0, {2032, 1008}, {255, 127, 255, 255} }}, + {{ {1059, 1, 1019}, 0, {2032, 1008}, {0, 129, 0, 255} }}, + {{ {1042, 1, 1035}, 0, {2032, 1008}, {0, 129, 0, 255} }}, + {{ {1020, 1, 1047}, 0, {2032, 1008}, {0, 129, 0, 255} }}, + {{ {1038, 1, 1031}, 0, {2032, 1008}, {0, 129, 0, 255} }}, + {{ {1042, 1, 1035}, 0, {2032, 1008}, {0, 127, 255, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {0, 127, 255, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {0, 127, 255, 255} }}, + {{ {1020, 1, 1047}, 0, {2032, 1008}, {0, 127, 255, 255} }}, + {{ {1020, 1, 1047}, 0, {2032, 1008}, {0, 127, 255, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {0, 127, 255, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {0, 127, 255, 255} }}, + {{ {991, 1, 1058}, 0, {2032, 1008}, {0, 127, 255, 255} }}, + {{ {991, 1, 1058}, 0, {2032, 1008}, {251, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {251, 127, 0, 255} }}, + {{ {958, 0, 1065}, 0, {2032, 1008}, {251, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {-16, 1008}, {251, 127, 0, 255} }}, + {{ {1095, 0, -1018}, 0, {2024, -19}, {0, 127, 0, 255} }}, + {{ {1098, 0, -1036}, 0, {2045, -12}, {0, 127, 0, 255} }}, + {{ {925, 0, -1018}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {1098, 0, -1058}, 0, {2040, -24}, {0, 127, 0, 255} }}, + {{ {1090, 0, -1080}, 0, {2037, -18}, {0, 127, 0, 255} }}, + {{ {1077, 0, -1103}, 0, {2037, -27}, {0, 127, 0, 255} }}, + {{ {1059, 0, -1129}, 0, {2040, -13}, {0, 127, 0, 255} }}, + {{ {1036, 0, -1149}, 0, {2032, -15}, {0, 127, 0, 255} }}, + {{ {1011, 0, -1164}, 0, {2033, -15}, {0, 127, 0, 255} }}, +}; + +Gfx mario_Plane_001_mesh_tri_0[] = { + gsSPVertex(mario_Plane_001_mesh_vtx_0 + 0, 30, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 1, 4, 0), + gsSP2Triangles(5, 6, 7, 0, 8, 9, 10, 0), + gsSP2Triangles(8, 10, 11, 0, 12, 13, 14, 0), + gsSP2Triangles(12, 14, 15, 0, 15, 14, 14, 0), + gsSP2Triangles(15, 14, 16, 0, 16, 14, 17, 0), + gsSP2Triangles(14, 18, 17, 0, 17, 18, 18, 0), + gsSP2Triangles(17, 18, 19, 0, 19, 18, 18, 0), + gsSP2Triangles(19, 18, 20, 0, 20, 18, 18, 0), + gsSP2Triangles(20, 18, 21, 0, 21, 18, 14, 0), + gsSP2Triangles(21, 14, 22, 0, 22, 14, 23, 0), + gsSP2Triangles(14, 18, 23, 0, 23, 18, 14, 0), + gsSP2Triangles(23, 14, 24, 0, 24, 14, 18, 0), + gsSP2Triangles(24, 18, 25, 0, 26, 27, 28, 0), + gsSP1Triangle(26, 28, 29, 0), + gsSPVertex(mario_Plane_001_mesh_vtx_0 + 30, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(0, 3, 4, 0, 3, 5, 4, 0), + gsSP2Triangles(0, 4, 6, 0, 4, 7, 6, 0), + gsSP2Triangles(8, 0, 6, 0, 8, 9, 0, 0), + gsSP2Triangles(9, 10, 0, 0, 6, 11, 8, 0), + gsSP2Triangles(6, 12, 11, 0, 6, 13, 12, 0), + gsSP2Triangles(6, 14, 13, 0, 12, 15, 11, 0), + gsSP2Triangles(16, 17, 18, 0, 16, 19, 17, 0), + gsSP2Triangles(19, 16, 16, 0, 19, 16, 20, 0), + gsSP2Triangles(20, 16, 16, 0, 20, 16, 21, 0), + gsSP2Triangles(21, 16, 16, 0, 21, 16, 22, 0), + gsSP2Triangles(22, 16, 16, 0, 22, 16, 23, 0), + gsSP2Triangles(23, 16, 16, 0, 23, 16, 24, 0), + gsSP2Triangles(24, 16, 16, 0, 24, 16, 25, 0), + gsSP2Triangles(25, 16, 16, 0, 25, 16, 26, 0), + gsSP2Triangles(26, 16, 16, 0, 26, 16, 27, 0), + gsSP2Triangles(27, 16, 28, 0, 16, 16, 28, 0), + gsSP1Triangle(29, 30, 31, 0), + gsSPVertex(mario_Plane_001_mesh_vtx_0 + 62, 31, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(4, 6, 5, 0, 7, 8, 9, 0), + gsSP2Triangles(7, 9, 10, 0, 11, 12, 12, 0), + gsSP2Triangles(11, 12, 14, 0, 15, 16, 16, 0), + gsSP2Triangles(15, 16, 18, 0, 19, 20, 21, 0), + gsSP2Triangles(20, 22, 21, 0, 23, 24, 24, 0), + gsSP2Triangles(23, 24, 26, 0, 27, 28, 29, 0), + gsSP1Triangle(27, 29, 30, 0), + gsSPVertex(mario_Plane_001_mesh_vtx_0 + 93, 21, 0), + gsSP2Triangles(0, 1, 1, 0, 0, 1, 3, 0), + gsSP2Triangles(4, 5, 5, 0, 4, 5, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 9, 11, 10, 0), + gsSP2Triangles(12, 13, 14, 0, 13, 15, 14, 0), + gsSP2Triangles(15, 16, 14, 0, 17, 14, 16, 0), + gsSP2Triangles(18, 14, 17, 0, 19, 14, 18, 0), + gsSP1Triangle(20, 14, 19, 0), + gsSPEndDisplayList(), +}; + +Vtx mario_Plane_001_mesh_vtx_1[92] = { + {{ {1090, 1, 933}, 0, {1008, 1008}, {32, 123, 0, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {32, 123, 0, 255} }}, + {{ {1095, 0, 895}, 0, {1008, 1008}, {32, 123, 0, 255} }}, + {{ {1086, 1, 957}, 0, {1008, 1008}, {6, 127, 1, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {6, 127, 1, 255} }}, + {{ {1090, 1, 933}, 0, {1008, 1008}, {6, 127, 1, 255} }}, + {{ {1078, 1, 979}, 0, {1008, 1008}, {3, 127, 1, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {3, 127, 1, 255} }}, + {{ {1086, 1, 957}, 0, {1008, 1008}, {3, 127, 1, 255} }}, + {{ {1069, 1, 999}, 0, {1008, 1008}, {3, 127, 1, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {3, 127, 1, 255} }}, + {{ {1078, 1, 979}, 0, {1008, 1008}, {3, 127, 1, 255} }}, + {{ {1059, 1, 1019}, 0, {1008, 1008}, {3, 127, 1, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {3, 127, 1, 255} }}, + {{ {1069, 1, 999}, 0, {1008, 1008}, {3, 127, 1, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {2, 127, 3, 255} }}, + {{ {1042, 1, 1035}, 0, {1008, 1008}, {2, 127, 3, 255} }}, + {{ {1020, 1, 1047}, 0, {1008, 1008}, {2, 127, 3, 255} }}, + {{ {1042, 1, 1035}, 0, {-16, 1008}, {2, 127, 2, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {2, 127, 2, 255} }}, + {{ {1059, 1, 1019}, 0, {-16, 1008}, {2, 127, 2, 255} }}, + {{ {991, 1, 1058}, 0, {1008, 1008}, {1, 127, 3, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {1, 127, 3, 255} }}, + {{ {1020, 1, 1047}, 0, {1008, 1008}, {1, 127, 3, 255} }}, + {{ {958, 0, 1065}, 0, {1008, 1008}, {0, 125, 23, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {0, 125, 23, 255} }}, + {{ {991, 1, 1058}, 0, {1008, 1008}, {0, 125, 23, 255} }}, + {{ {85, 0, -1018}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {85, 0, 895}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {958, 0, 895}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {942, 0, -62}, 0, {1008, 496}, {0, 127, 0, 255} }}, + {{ {925, 0, -1018}, 0, {1008, -16}, {0, 127, 0, 255} }}, + {{ {-431, 0, 1065}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {-85, 0, 1065}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-85, 0, -1217}, 0, {1008, -16}, {0, 127, 0, 255} }}, + {{ {-431, 0, -1217}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {-431, 0, 1394}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {1522, 0, 1394}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {1522, 0, 1065}, 0, {1008, -16}, {0, 127, 0, 255} }}, + {{ {-431, 0, 1065}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {1095, 0, 23}, 0, {-16, 496}, {0, 127, 0, 255} }}, + {{ {1095, 0, 1065}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {1522, 0, 1065}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {1095, 0, -1018}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {1522, 0, -1018}, 0, {1008, -16}, {0, 127, 0, 255} }}, + {{ {-431, 0, -1544}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {-431, 0, -1217}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {156, 0, -1217}, 0, {240, 1008}, {0, 127, 0, 255} }}, + {{ {925, 0, -1217}, 0, {496, 1008}, {0, 127, 0, 255} }}, + {{ {1521, 0, -1544}, 0, {1008, -16}, {0, 127, 0, 255} }}, + {{ {1521, 0, -1217}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {85, 0, 1065}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {51, 0, 1059}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-85, 0, 1065}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {21, 0, 1053}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-9, 0, 1042}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-31, 0, 1029}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-50, 0, 1008}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-70, 0, 981}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-78, 0, 963}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-82, 0, 936}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {-85, 0, 895}, 0, {1008, 1008}, {0, 127, 0, 255} }}, + {{ {925, 0, -1188}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {961, 0, -1184}, 0, {1010, 1008}, {0, 127, 0, 255} }}, + {{ {156, 0, -1217}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {925, 0, -1188}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {925, 0, -1217}, 0, {496, 1008}, {0, 127, 0, 255} }}, + {{ {156, 0, -1188}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {124, 0, -1211}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {85, 0, -1217}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {1098, 0, -1036}, 0, {1014, -12}, {0, 127, 0, 255} }}, + {{ {1095, 0, -1018}, 0, {1004, -19}, {0, 127, 0, 255} }}, + {{ {1522, 0, -1018}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {1098, 0, -1058}, 0, {1012, -24}, {0, 127, 0, 255} }}, + {{ {1522, 0, -1058}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {1098, 0, -1217}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {1521, 0, -1217}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {1090, 0, -1080}, 0, {1010, -18}, {0, 127, 0, 255} }}, + {{ {1077, 0, -1103}, 0, {1010, -27}, {0, 127, 0, 255} }}, + {{ {1059, 0, -1129}, 0, {1012, -13}, {0, 127, 0, 255} }}, + {{ {1036, 0, -1149}, 0, {1008, -15}, {0, 127, 0, 255} }}, + {{ {1011, 0, -1164}, 0, {1008, -15}, {0, 127, 0, 255} }}, + {{ {984, 0, -1177}, 0, {1011, -25}, {0, 127, 0, 255} }}, + {{ {961, 0, -1184}, 0, {1010, -23}, {0, 127, 0, 255} }}, + {{ {-85, 0, -1107}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {-70, 0, -1146}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {-85, 0, -1217}, 0, {-16, 1008}, {0, 127, 0, 255} }}, + {{ {-51, 0, -1173}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {-26, 0, -1192}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {2, 0, -1205}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {30, 0, -1211}, 0, {-16, -16}, {0, 127, 0, 255} }}, + {{ {60, 0, -1214}, 0, {-16, -16}, {0, 127, 0, 255} }}, +}; + +Gfx mario_Plane_001_mesh_tri_1[] = { + gsSPVertex(mario_Plane_001_mesh_vtx_1 + 0, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 4, 5, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 10, 11, 0), + gsSP2Triangles(12, 13, 14, 0, 15, 16, 17, 0), + gsSP2Triangles(18, 19, 20, 0, 21, 22, 23, 0), + gsSP2Triangles(24, 25, 26, 0, 27, 28, 29, 0), + gsSP2Triangles(29, 30, 27, 0, 30, 31, 27, 0), + gsSPVertex(mario_Plane_001_mesh_vtx_1 + 32, 32, 0), + gsSP2Triangles(0, 1, 2, 0, 0, 2, 3, 0), + gsSP2Triangles(4, 5, 6, 0, 4, 6, 7, 0), + gsSP2Triangles(8, 9, 10, 0, 10, 11, 8, 0), + gsSP2Triangles(10, 12, 11, 0, 13, 14, 15, 0), + gsSP2Triangles(13, 15, 16, 0, 16, 17, 13, 0), + gsSP2Triangles(16, 18, 17, 0, 19, 20, 21, 0), + gsSP2Triangles(20, 22, 21, 0, 22, 23, 21, 0), + gsSP2Triangles(24, 21, 23, 0, 24, 25, 21, 0), + gsSP2Triangles(25, 26, 21, 0, 26, 27, 21, 0), + gsSP2Triangles(27, 28, 21, 0, 28, 29, 21, 0), + gsSP1Triangle(30, 31, 16, 0), + gsSPVertex(mario_Plane_001_mesh_vtx_1 + 64, 28, 0), + gsSP2Triangles(0, 1, 2, 0, 3, 1, 0, 0), + gsSP2Triangles(3, 0, 4, 0, 5, 4, 0, 0), + gsSP2Triangles(6, 7, 8, 0, 9, 6, 8, 0), + gsSP2Triangles(9, 8, 10, 0, 11, 9, 10, 0), + gsSP2Triangles(11, 10, 12, 0, 9, 11, 13, 0), + gsSP2Triangles(13, 11, 14, 0, 14, 11, 15, 0), + gsSP2Triangles(15, 11, 16, 0, 16, 11, 17, 0), + gsSP2Triangles(17, 11, 18, 0, 18, 11, 19, 0), + gsSP2Triangles(2, 19, 11, 0, 20, 21, 22, 0), + gsSP2Triangles(23, 22, 21, 0, 23, 24, 22, 0), + gsSP2Triangles(24, 25, 22, 0, 25, 26, 22, 0), + gsSP2Triangles(26, 27, 22, 0, 27, 5, 22, 0), + gsSPEndDisplayList(), +}; + +Gfx mat_mario_f3dlite_material_009[] = { + gsSPClearGeometryMode(G_CLIPPING), + gsSPSetLights1(mario_f3dlite_material_009_lights), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, ENVIRONMENT, TEXEL0, SHADE, TEXEL0_ALPHA, SHADE, 0, 0, 0, ENVIRONMENT), + gsDPSetAlphaDither(G_AD_NOISE), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetTextureImage(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 1, gTextureRoad2), + gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 0, 0), + gsDPLoadBlock(7, 0, 0, 1023, 256), + gsDPSetTile(G_IM_FMT_I, G_IM_SIZ_8b, 8, 0, 0, 0, G_TX_WRAP | G_TX_NOMIRROR, 5, 0, G_TX_WRAP | G_TX_NOMIRROR, 6, 0), + gsDPSetTileSize(0, 0, 0, 252, 124), + gsSPEndDisplayList(), +}; + +Gfx mat_revert_mario_f3dlite_material_009[] = { + gsSPSetGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsDPSetAlphaDither(G_AD_DISABLE), + gsSPEndDisplayList(), +}; + +Gfx mat_mario_f3dlite_material[] = { + gsSPClearGeometryMode(G_CLIPPING), + gsSPSetLights1(mario_f3dlite_material_lights), + gsDPPipeSync(), + gsDPSetCombineLERP(TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT, TEXEL0, 0, SHADE, 0, 0, 0, 0, ENVIRONMENT), + gsDPSetAlphaDither(G_AD_NOISE), + gsSPTexture(65535, 65535, 0, 0, 1), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 1, gTextureGrass1), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, 7, 0, G_TX_WRAP, 0, 0, G_TX_WRAP, 0, 0), + gsDPLoadBlock(7, 0, 0, 1023, 256), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0, 0, 0, G_TX_WRAP, 5, 0, G_TX_WRAP, 5, 0), + gsDPSetTileSize(0, 0, 0, 32, 32), + gsSPEndDisplayList(), +}; + +Gfx mat_revert_mario_f3dlite_material[] = { + gsSPSetGeometryMode(G_CLIPPING), + gsDPPipeSync(), + gsDPSetAlphaDither(G_AD_DISABLE), + gsSPEndDisplayList(), +}; + +Gfx mario_Plane_001_mesh[] = { + gsSPClearGeometryMode(G_LIGHTING), + gsSPVertex(mario_Plane_001_mesh_vtx_cull + 0, 8, 0), + gsSPSetGeometryMode(G_LIGHTING), + gsSPCullDisplayList(0, 7), + gsSPDisplayList(mat_mario_f3dlite_material_009), + gsSPDisplayList(mario_Plane_001_mesh_tri_0), + gsSPDisplayList(mat_revert_mario_f3dlite_material_009), + gsSPDisplayList(mat_mario_f3dlite_material), + gsSPDisplayList(mario_Plane_001_mesh_tri_1), + gsSPDisplayList(mat_revert_mario_f3dlite_material), + gsDPPipeSync(), + gsSPSetGeometryMode(G_LIGHTING), + gsSPClearGeometryMode(G_TEXTURE_GEN), + gsDPSetCombineLERP(0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT, 0, 0, 0, SHADE, 0, 0, 0, ENVIRONMENT), + gsSPTexture(65535, 65535, 0, 0, 0), + gsSPEndDisplayList(), +}; + diff --git a/courses/test_course/vtx.c b/courses/test_course/vtx.c new file mode 100644 index 000000000..24a4cc07a --- /dev/null +++ b/courses/test_course/vtx.c @@ -0,0 +1,16 @@ +#include "mk64.h" +#include "common_structs.h" + +CourseVtx test_course_vertices[] = { + // Top-left vertex (x, y, z), texture coord (tc), color and alpha (ca) + {{ -100, 100, 0}, { 0, 0}, {MACRO_COLOR_FLAG(0xFF, 0x00, 0x00, 0), 0x00}}, // Red + + // Top-right vertex + {{ 100, 100, 0}, { 1024, 0}, {MACRO_COLOR_FLAG(0x00, 0xFF, 0x00, 0), 0x00}}, // Green + + // Bottom-right vertex + {{ 100, -100, 0}, { 1024, 1024}, {MACRO_COLOR_FLAG(0x00, 0x00, 0xFF, 0), 0x00}}, // Blue + + // Bottom-left vertex + {{ -100, -100, 0}, { 0, 1024}, {MACRO_COLOR_FLAG(0xFF, 0xFF, 0x00, 0), 0x00}}, // Yellow +}; |
