summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMegaMech <MegaMech@users.noreply.github.com>2024-08-11 23:36:56 -0600
committerGitHub <noreply@github.com>2024-08-11 23:36:56 -0600
commit3476fe0dbb7afb73a831f511d80d9437f6d58f63 (patch)
tree216252ad14bc5e79d128b06cea3007d5408cb754
parent2cdd3a9de8b5fcd88acb586938be0f7044bab30c (diff)
Battle (#45)
* Battle courses
-rw-r--r--src/racing/memory.c72
-rw-r--r--src/racing/render_courses.c48
-rw-r--r--yamls/us/big_donut_data.yml22
-rw-r--r--yamls/us/big_donut_displaylists.yml17
-rw-r--r--yamls/us/big_donut_vertices.yml15
-rw-r--r--yamls/us/block_fort_data.yml22
-rw-r--r--yamls/us/block_fort_displaylists.yml17
-rw-r--r--yamls/us/block_fort_vertices.yml15
-rw-r--r--yamls/us/double_deck_data.yml22
-rw-r--r--yamls/us/double_deck_displaylists.yml17
-rw-r--r--yamls/us/double_deck_vertices.yml15
-rw-r--r--yamls/us/skyscraper_data.yml22
-rw-r--r--yamls/us/skyscraper_displaylists.yml17
-rw-r--r--yamls/us/skyscraper_vertices.yml15
14 files changed, 312 insertions, 24 deletions
diff --git a/src/racing/memory.c b/src/racing/memory.c
index 837e6761c..6821251e5 100644
--- a/src/racing/memory.c
+++ b/src/racing/memory.c
@@ -30,6 +30,22 @@
#include <assets/kalimari_desert_vertices.h>
#include <assets/kalimari_desert_data.h>
+#include <assets/big_donut_displaylists.h>
+#include <assets/big_donut_vertices.h>
+#include <assets/big_donut_data.h>
+
+#include <assets/skyscraper_displaylists.h>
+#include <assets/skyscraper_vertices.h>
+#include <assets/skyscraper_data.h>
+
+#include <assets/block_fort_displaylists.h>
+#include <assets/block_fort_vertices.h>
+#include <assets/block_fort_data.h>
+
+#include <assets/double_deck_displaylists.h>
+#include <assets/double_deck_vertices.h>
+#include <assets/double_deck_data.h>
+
#include <assert.h>
#include <course_offsets.h>
@@ -1531,6 +1547,62 @@ NewCourseTable gNewCourseTable[] = {
.textures = kalimari_desert_textures,
.displaylists = d_course_kalimari_desert_packed_dls,
.dlSize = 5328
+ }, { // sherbet
+ .data = NULL,
+ .vtx = NULL,
+ .vtxSize = 0,
+ .textures = NULL,
+ .displaylists = NULL,
+ .dlSize = 0
+ }, { // rainbow
+ .data = NULL,
+ .vtx = NULL,
+ .vtxSize = 0,
+ .textures = NULL,
+ .displaylists = NULL,
+ .dlSize = 0
+ }, { // wario
+ .data = NULL,
+ .vtx = NULL,
+ .vtxSize = 0,
+ .textures = NULL,
+ .displaylists = NULL,
+ .dlSize = 0
+ }, { // block fort
+ .data = d_course_block_fort_dl,
+ .vtx = d_course_block_fort_vertex,
+ .vtxSize = 1088,
+ .textures = block_fort_textures,
+ .displaylists = d_course_block_fort_packed_dls,
+ .dlSize = 699
+ }, { // skyscraper
+ .data = d_course_skyscraper_dl,
+ .vtx = d_course_skyscraper_vertex,
+ .vtxSize = 1086,
+ .textures = skyscraper_textures,
+ .displaylists = d_course_skyscraper_packed_dls,
+ .dlSize = 548
+ }, { // double decker
+ .data = d_course_double_deck_dl,
+ .vtx = d_course_double_deck_vertex,
+ .vtxSize = 555,
+ .textures = double_deck_textures,
+ .displaylists = d_course_double_deck_packed_dls,
+ .dlSize = 234
+ }, { // dk jungle
+ .data = NULL,
+ .vtx = NULL,
+ .vtxSize = 0,
+ .textures = NULL,
+ .displaylists = NULL,
+ .dlSize = 0
+ }, { // big donut
+ .data = d_course_big_donut_dl,
+ .vtx = d_course_big_donut_vertex,
+ .vtxSize = 1165,
+ .textures = big_donut_textures,
+ .displaylists = d_course_big_donut_packed_dls,
+ .dlSize = 528
}
};
diff --git a/src/racing/render_courses.c b/src/racing/render_courses.c
index 4149085e8..453660ea9 100644
--- a/src/racing/render_courses.c
+++ b/src/racing/render_courses.c
@@ -1173,7 +1173,7 @@ void render_block_fort(UNUSED struct UnkStruct_800DC5EC *arg0) {
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
// d_course_block_fort_packed_dl_15C0
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070015C0));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x070015C0)));
}
@@ -1183,21 +1183,21 @@ void render_skyscraper(UNUSED struct UnkStruct_800DC5EC *arg0) {
gSPSetGeometryMode(gDisplayListHead++, G_SHADING_SMOOTH);
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
// d_course_skyscraper_packed_dl_FE8
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000FE8));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000FE8)));
// d_course_skyscraper_packed_dl_C60
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000C60));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000C60)));
// d_course_skyscraper_packed_dl_B70
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000B70));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000B70)));
// d_course_skyscraper_packed_dl_6B8
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070006B8));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x070006B8)));
// d_course_skyscraper_packed_dl_570
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000570));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000570)));
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
// d_course_skyscraper_packed_dl_10C8
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x070010C8));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x070010C8)));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
// d_course_skyscraper_packed_dl_258
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000258));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000258)));
}
@@ -1209,7 +1209,7 @@ void render_double_deck(UNUSED struct UnkStruct_800DC5EC *arg0) {
gSPClearGeometryMode(gDisplayListHead++, G_LIGHTING);
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
// d_course_double_deck_packed_dl_738
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000738));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000738)));
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
}
@@ -1249,16 +1249,16 @@ void render_big_donut(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_big_donut_packed_dl_DE8
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000DE8));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000DE8)));
}
// d_course_big_donut_packed_dl_450
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000450));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000450)));
// d_course_big_donut_packed_dl_AC0
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000AC0));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000AC0)));
// d_course_big_donut_packed_dl_D20
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000D20));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000D20)));
// d_course_big_donut_packed_dl_230
- gSPDisplayList(gDisplayListHead++, ((uintptr_t)0x07000230));
+ gSPDisplayList(gDisplayListHead++, ((uintptr_t)segmented_gfx_to_virtual(0x07000230)));
}
void func_8029569C(void) {
@@ -1616,22 +1616,22 @@ void func_80295D88(void) {
break;
case COURSE_BLOCK_FORT:
// d_course_block_fort_packed_dl_15C0
- generate_collision_mesh_with_default_section_id((Gfx *)0x070015C0, 1);
+ generate_collision_mesh_with_default_section_id((Gfx *)segmented_gfx_to_virtual(0x070015C0), 1);
func_80295C6C();
D_8015F8E4 = gCourseMinY - 10.0f;
break;
case COURSE_SKYSCRAPER:
// d_course_skyscraper_packed_dl_1110
- generate_collision_mesh_with_default_section_id((Gfx *)0x07001110, 1);
+ generate_collision_mesh_with_default_section_id((Gfx *)segmented_gfx_to_virtual(0x07001110), 1);
// d_course_skyscraper_packed_dl_258
- generate_collision_mesh_with_default_section_id((Gfx *)0x07000258, 1);
+ generate_collision_mesh_with_default_section_id((Gfx *)segmented_gfx_to_virtual(0x07000258), 1);
func_80295C6C();
D_8015F8E4 = -480.0f;
break;
case COURSE_DOUBLE_DECK:
// d_course_double_deck_packed_dl_738
- generate_collision_mesh_with_default_section_id((Gfx *)0x07000738, 1);
+ generate_collision_mesh_with_default_section_id((Gfx *) segmented_gfx_to_virtual(0x07000738), 1);
func_80295C6C();
D_8015F8E4 = gCourseMinY - 10.0f;
break;
@@ -1640,19 +1640,19 @@ void func_80295D88(void) {
func_80295C6C();
D_8015F8E4 = -475.0f;
// d_course_dks_jungle_parkway_packed_dl_3FA8
- find_vtx_and_set_colours((uintptr_t)0x07003FA8, 120, 255, 255, 255);
+ find_vtx_and_set_colours((uintptr_t)segmented_gfx_to_virtual(0x07003FA8), 120, 255, 255, 255);
break;
case COURSE_BIG_DONUT:
// d_course_big_donut_packed_dl_1018
- generate_collision_mesh_with_default_section_id((Gfx *)0x07001018, 6);
+ generate_collision_mesh_with_default_section_id((Gfx *) segmented_gfx_to_virtual(0x07001018), 6);
// d_course_big_donut_packed_dl_450
- generate_collision_mesh_with_default_section_id((Gfx *)0x07000450, 6);
+ generate_collision_mesh_with_default_section_id((Gfx *)segmented_gfx_to_virtual(0x07000450), 6);
// d_course_big_donut_packed_dl_AC0
- generate_collision_mesh_with_default_section_id((Gfx *)0x07000AC0, 6);
+ generate_collision_mesh_with_default_section_id((Gfx *)segmented_gfx_to_virtual(0x07000AC0), 6);
// d_course_big_donut_packed_dl_B58
- generate_collision_mesh_with_default_section_id((Gfx *)0x07000B58, 6);
+ generate_collision_mesh_with_default_section_id((Gfx *)segmented_gfx_to_virtual(0x07000B58), 6);
// d_course_big_donut_packed_dl_230
- generate_collision_mesh_with_default_section_id((Gfx *)0x07000230, 6);
+ generate_collision_mesh_with_default_section_id((Gfx *)segmented_gfx_to_virtual(0x07000230), 6);
func_80295C6C();
D_8015F8E4 = 100.0f;
break;
diff --git a/yamls/us/big_donut_data.yml b/yamls/us/big_donut_data.yml
new file mode 100644
index 000000000..56dd752fd
--- /dev/null
+++ b/yamls/us/big_donut_data.yml
@@ -0,0 +1,22 @@
+:config:
+ segments:
+ - [0x06, 0x88CC50]
+ - [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_big_donut_dl:
+ symbol: d_course_big_donut_dl
+ type: gfx
+ offset: 0x0
+ otr_mode: index
+d_course_big_donut_item_box_spawns:
+ symbol: d_course_big_donut_item_box_spawns
+ type: mk64:spawn_data
+ count: 25
+ offset: 0x58
diff --git a/yamls/us/big_donut_displaylists.yml b/yamls/us/big_donut_displaylists.yml
new file mode 100644
index 000000000..eb57177ca
--- /dev/null
+++ b/yamls/us/big_donut_displaylists.yml
@@ -0,0 +1,17 @@
+:config:
+ vram:
+ addr: 0x800E8700 # not used for anything
+ offset: 0x965A74
+ no_compression: true
+ header:
+ code:
+ - '#include <libultraship.h>'
+ header:
+ - '#include <libultraship.h>'
+ - '#include <libultra/gbi.h>'
+ - '#include <align_asset_macro.h>'
+d_course_big_donut_packed_dls:
+ symbol: d_course_big_donut_packed_dls
+ type: blob
+ offset: 0x965A74
+ size: 0x7EC
diff --git a/yamls/us/big_donut_vertices.yml b/yamls/us/big_donut_vertices.yml
new file mode 100644
index 000000000..78649de8f
--- /dev/null
+++ b/yamls/us/big_donut_vertices.yml
@@ -0,0 +1,15 @@
+:config:
+ segments:
+ - [0x0F, 0x963EF0]
+ header:
+ code:
+ - '#include <libultraship.h>'
+ header:
+ - '#include <libultraship.h>'
+ - '#include <libultra/gbi.h>'
+ - '#include <align_asset_macro.h>'
+d_course_big_donut_vertex:
+ symbol: d_course_big_donut_vertex
+ type: mk64:course_vtx
+ count: 1165
+ offset: 0x0
diff --git a/yamls/us/block_fort_data.yml b/yamls/us/block_fort_data.yml
new file mode 100644
index 000000000..57a762ed8
--- /dev/null
+++ b/yamls/us/block_fort_data.yml
@@ -0,0 +1,22 @@
+:config:
+ segments:
+ - [0x06, 0x885630]
+ - [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_block_fort_dl:
+ symbol: d_course_block_fort_dl
+ type: gfx
+ offset: 0x0
+ otr_mode: index
+d_course_block_fort_item_box_spawns:
+ symbol: d_course_block_fort_item_box_spawns
+ type: mk64:spawn_data
+ count: 37
+ offset: 0x38
diff --git a/yamls/us/block_fort_displaylists.yml b/yamls/us/block_fort_displaylists.yml
new file mode 100644
index 000000000..6f57ba9a7
--- /dev/null
+++ b/yamls/us/block_fort_displaylists.yml
@@ -0,0 +1,17 @@
+:config:
+ vram:
+ addr: 0x800E8700 # not used for anything
+ offset: 0x953058
+ no_compression: true
+ header:
+ code:
+ - '#include <libultraship.h>'
+ header:
+ - '#include <libultraship.h>'
+ - '#include <libultra/gbi.h>'
+ - '#include <align_asset_macro.h>'
+d_course_block_fort_packed_dls:
+ symbol: d_course_block_fort_packed_dls
+ type: blob
+ offset: 0x953058
+ size: 0x829
diff --git a/yamls/us/block_fort_vertices.yml b/yamls/us/block_fort_vertices.yml
new file mode 100644
index 000000000..b9e4a694c
--- /dev/null
+++ b/yamls/us/block_fort_vertices.yml
@@ -0,0 +1,15 @@
+:config:
+ segments:
+ - [0x0F, 0x951780]
+ header:
+ code:
+ - '#include <libultraship.h>'
+ header:
+ - '#include <libultraship.h>'
+ - '#include <libultra/gbi.h>'
+ - '#include <align_asset_macro.h>'
+d_course_block_fort_vertex:
+ symbol: d_course_block_fort_vertex
+ type: mk64:course_vtx
+ count: 1088
+ offset: 0x0
diff --git a/yamls/us/double_deck_data.yml b/yamls/us/double_deck_data.yml
new file mode 100644
index 000000000..d22b1d7b2
--- /dev/null
+++ b/yamls/us/double_deck_data.yml
@@ -0,0 +1,22 @@
+:config:
+ segments:
+ - [0x06, 0x8858A0]
+ - [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_double_deck_dl:
+ symbol: d_course_double_deck_dl
+ type: gfx
+ offset: 0x0
+ otr_mode: index
+d_course_double_deck_item_box_spawns:
+ symbol: d_course_double_deck_item_box_spawns
+ type: mk64:spawn_data
+ count: 43
+ offset: 0x28
diff --git a/yamls/us/double_deck_displaylists.yml b/yamls/us/double_deck_displaylists.yml
new file mode 100644
index 000000000..27328ee47
--- /dev/null
+++ b/yamls/us/double_deck_displaylists.yml
@@ -0,0 +1,17 @@
+:config:
+ vram:
+ addr: 0x800E8700 # not used for anything
+ offset: 0x9562F4
+ no_compression: true
+ header:
+ code:
+ - '#include <libultraship.h>'
+ header:
+ - '#include <libultraship.h>'
+ - '#include <libultra/gbi.h>'
+ - '#include <align_asset_macro.h>'
+d_course_double_deck_packed_dls:
+ symbol: d_course_double_deck_packed_dls
+ type: blob
+ offset: 0x9562F4
+ size: 0x373
diff --git a/yamls/us/double_deck_vertices.yml b/yamls/us/double_deck_vertices.yml
new file mode 100644
index 000000000..9f62e7610
--- /dev/null
+++ b/yamls/us/double_deck_vertices.yml
@@ -0,0 +1,15 @@
+:config:
+ segments:
+ - [0x0F, 0x955620]
+ header:
+ code:
+ - '#include <libultraship.h>'
+ header:
+ - '#include <libultraship.h>'
+ - '#include <libultra/gbi.h>'
+ - '#include <align_asset_macro.h>'
+d_course_double_deck_vertex:
+ symbol: d_course_double_deck_vertex
+ type: mk64:course_vtx
+ count: 555
+ offset: 0x0
diff --git a/yamls/us/skyscraper_data.yml b/yamls/us/skyscraper_data.yml
new file mode 100644
index 000000000..81df6758c
--- /dev/null
+++ b/yamls/us/skyscraper_data.yml
@@ -0,0 +1,22 @@
+:config:
+ segments:
+ - [0x06, 0x885780]
+ - [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_skyscraper_dl:
+ symbol: d_course_skyscraper_dl
+ type: gfx
+ offset: 0x0
+ otr_mode: index
+d_course_skyscraper_item_box_spawns:
+ symbol: d_course_skyscraper_item_box_spawns
+ type: mk64:spawn_data
+ count: 25
+ offset: 0x80
diff --git a/yamls/us/skyscraper_displaylists.yml b/yamls/us/skyscraper_displaylists.yml
new file mode 100644
index 000000000..c4f3a04c5
--- /dev/null
+++ b/yamls/us/skyscraper_displaylists.yml
@@ -0,0 +1,17 @@
+:config:
+ vram:
+ addr: 0x800E8700 # not used for anything
+ offset: 0x954F08
+ no_compression: true
+ header:
+ code:
+ - '#include <libultraship.h>'
+ header:
+ - '#include <libultraship.h>'
+ - '#include <libultra/gbi.h>'
+ - '#include <align_asset_macro.h>'
+d_course_skyscraper_packed_dls:
+ symbol: d_course_skyscraper_packed_dls
+ type: blob
+ offset: 0x954F08
+ size: 0x711
diff --git a/yamls/us/skyscraper_vertices.yml b/yamls/us/skyscraper_vertices.yml
new file mode 100644
index 000000000..3682335e5
--- /dev/null
+++ b/yamls/us/skyscraper_vertices.yml
@@ -0,0 +1,15 @@
+:config:
+ segments:
+ - [0x0F, 0x953890]
+ header:
+ code:
+ - '#include <libultraship.h>'
+ header:
+ - '#include <libultraship.h>'
+ - '#include <libultra/gbi.h>'
+ - '#include <align_asset_macro.h>'
+d_course_skyscraper_vertex:
+ symbol: d_course_skyscraper_vertex
+ type: mk64:course_vtx
+ count: 1086
+ offset: 0x0