From e0182f49c923700fb94b6c059d565b0675460760 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Sat, 19 Aug 2023 23:53:12 -0600 Subject: [PATCH] Removed cake and implemented widescreen on intro --- CMakeLists.txt | 23 ---- levels/ending/header.h | 3 +- levels/ending/leveldata.c | 254 ++++++++------------------------------ src/game/area.c | 4 +- src/game/geo_misc.c | 37 +++++- src/game/geo_misc.h | 4 + src/menu/intro_geo.c | 27 ++-- 7 files changed, 101 insertions(+), 251 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 59d56196..c984ede4 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -146,20 +146,6 @@ list(FILTER ALL_FILES EXCLUDE REGEX "bin/eu/.*.c") list(FILTER ALL_FILES EXCLUDE REGEX "src/game/main.c") list(FILTER ALL_FILES EXCLUDE REGEX "src/pc/dlmalloc.c") -file(GLOB_RECURSE SKYBOXES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "textures/skyboxes/*.png") -foreach(skybox ${SKYBOXES}) - get_filename_component(OUTPUT_FILE_WLE ${skybox} NAME_WLE) - get_filename_component(OUTPUT_DIR ${skybox} DIRECTORY) - set(OUTPUT_FILE ${CMAKE_CURRENT_BINARY_DIR}/bin/${OUTPUT_FILE_WLE}_skybox.c) - add_custom_command( - OUTPUT ${OUTPUT_FILE} - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/bin - VERBATIM COMMAND $ --type sky --split ${CMAKE_CURRENT_SOURCE_DIR}/${skybox} ${CMAKE_CURRENT_BINARY_DIR}/bin - DEPENDS skyconv - ) - list(APPEND ALL_FILES ${OUTPUT_FILE}) -endforeach(skybox) - add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/include/level_headers.tmp COMMAND ${CPP} -I${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/levels/level_headers.h.in > ${CMAKE_CURRENT_BINARY_DIR}/include/level_headers.tmp @@ -296,7 +282,6 @@ file(GLOB_RECURSE ORGFILES2 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "levels/*.png") file(GLOB_RECURSE ORGFILES3 RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} "textures/*.png") list (APPEND ORGFILES ${ORGFILES2}) list (APPEND ORGFILES ${ORGFILES3}) -list(REMOVE_ITEM ORGFILES "levels/ending/cake.png") list(FILTER ORGFILES EXCLUDE REGEX "textures/ipl3_raw/.*.png") list(FILTER ORGFILES EXCLUDE REGEX "textures/skyboxes/.*.png") foreach(orgfile ${ORGFILES}) @@ -314,14 +299,6 @@ foreach(orgfile ${ORGFILES}) list(APPEND INC_C_FILES ${OUTPUT_FILE}) endforeach(orgfile) -add_custom_command( - OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/levels/ending/cake.inc.c - COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/levels/ending - COMMAND $ --type cake --split ${CMAKE_CURRENT_SOURCE_DIR}/levels/ending/cake.png ${CMAKE_CURRENT_BINARY_DIR}/levels/ending - DEPENDS skyconv - ) - list(APPEND INC_C_FILES ${CMAKE_CURRENT_BINARY_DIR}/levels/ending/cake.inc.c) - add_custom_command( OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/text/us/define_text-tmp COMMAND ${CMAKE_COMMAND} -E make_directory ${CMAKE_CURRENT_BINARY_DIR}/text/us diff --git a/levels/ending/header.h b/levels/ending/header.h index 2bf34c02..98b60c7c 100644 --- a/levels/ending/header.h +++ b/levels/ending/header.h @@ -7,11 +7,10 @@ extern const GeoLayout ending_geo_000050[]; // leveldata -extern const Gfx dl_cake_end_screen[]; extern const Gfx dl_cake_end_screen_eu_070296F8[]; extern const Gfx dl_cake_end_screen_eu_07029768[]; extern const Gfx dl_cake_end_screen_eu_070297D8[]; -extern const Gfx dl_cake_end_screen[]; +extern const Vtx* cake_end_vertex_positions[]; // script extern const LevelScript level_ending_entry[]; diff --git a/levels/ending/leveldata.c b/levels/ending/leveldata.c index 154496c7..0485d6bf 100644 --- a/levels/ending/leveldata.c +++ b/levels/ending/leveldata.c @@ -619,210 +619,54 @@ static const Vtx cake_end_vertex_070263C0[] = { {{{ 240, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, }; -// 0x07026400 - 0x07027350 -const Gfx dl_cake_end_screen[] = { - gsDPPipeSync(), - gsDPSetCombineMode(G_CC_DECALRGB, G_CC_DECALRGB), - gsDPSetRenderMode(G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2), - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON), - - gsDPLoadTextureBlock(cake_end_texture_0, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025800, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_1, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025840, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_2, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025880, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_3, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_070258C0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_4, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025900, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_5, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025940, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_6, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025980, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_7, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_070259C0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_8, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025A00, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_9, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025A40, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_10, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025A80, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_11, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025AC0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_12, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025B00, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_13, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025B40, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_14, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025B80, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_15, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025BC0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_16, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025C00, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_17, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025C40, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_18, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025C80, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_19, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025CC0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_20, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025D00, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_21, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025D40, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_22, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025D80, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_23, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025DC0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_24, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025E00, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_25, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025E40, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_26, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025E80, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_27, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025EC0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_28, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025F00, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_29, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025F40, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_30, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025F80, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_31, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07025FC0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_32, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026000, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_33, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026040, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_34, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026080, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_35, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_070260C0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_36, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026100, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_37, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026140, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_38, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026180, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_39, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_070261C0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_40, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026200, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_41, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026240, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_42, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026280, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_43, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_070262C0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_44, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026300, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_45, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026340, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_46, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_07026380, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPLoadTextureBlock(cake_end_texture_47, G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD), - gsSPVertex(cake_end_vertex_070263C0, 4, 0), - gsSP2Triangles( 0, 1, 2, 0x0, 0, 2, 3, 0x0), - - gsDPPipeSync(), - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), - gsSPSetGeometryMode(G_LIGHTING), - gsDPSetCombineMode(G_CC_SHADE, G_CC_SHADE), - gsDPSetRenderMode(G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2), - gsSPEndDisplayList(), +const Vtx* cake_end_vertex_positions[] = { + cake_end_vertex_07025800, + cake_end_vertex_07025840, + cake_end_vertex_07025880, + cake_end_vertex_070258C0, + cake_end_vertex_07025900, + cake_end_vertex_07025940, + cake_end_vertex_07025980, + cake_end_vertex_070259C0, + cake_end_vertex_07025A00, + cake_end_vertex_07025A40, + cake_end_vertex_07025A80, + cake_end_vertex_07025AC0, + cake_end_vertex_07025B00, + cake_end_vertex_07025B40, + cake_end_vertex_07025B80, + cake_end_vertex_07025BC0, + cake_end_vertex_07025C00, + cake_end_vertex_07025C40, + cake_end_vertex_07025C80, + cake_end_vertex_07025CC0, + cake_end_vertex_07025D00, + cake_end_vertex_07025D40, + cake_end_vertex_07025D80, + cake_end_vertex_07025DC0, + cake_end_vertex_07025E00, + cake_end_vertex_07025E40, + cake_end_vertex_07025E80, + cake_end_vertex_07025EC0, + cake_end_vertex_07025F00, + cake_end_vertex_07025F40, + cake_end_vertex_07025F80, + cake_end_vertex_07025FC0, + cake_end_vertex_07026000, + cake_end_vertex_07026040, + cake_end_vertex_07026080, + cake_end_vertex_070260C0, + cake_end_vertex_07026100, + cake_end_vertex_07026140, + cake_end_vertex_07026180, + cake_end_vertex_070261C0, + cake_end_vertex_07026200, + cake_end_vertex_07026240, + cake_end_vertex_07026280, + cake_end_vertex_070262C0, + cake_end_vertex_07026300, + cake_end_vertex_07026340, + cake_end_vertex_07026380, + cake_end_vertex_070263C0 }; #endif diff --git a/src/game/area.c b/src/game/area.c index 081466d1..ab4569bf 100644 --- a/src/game/area.c +++ b/src/game/area.c @@ -120,8 +120,8 @@ void print_intro_text(void) { #ifdef VERSION_EU print_text(20, 20, "START"); #else - print_text_centered(60, 38, "PRESS"); - print_text_centered(60, 20, "START"); + print_text_centered(GFX_DIMENSIONS_FROM_LEFT_EDGE(60), 38, "PRESS"); + print_text_centered(GFX_DIMENSIONS_FROM_LEFT_EDGE(60), 20, "START"); #endif } } diff --git a/src/game/geo_misc.c b/src/game/geo_misc.c index 535e5855..4ea008cb 100644 --- a/src/game/geo_misc.c +++ b/src/game/geo_misc.c @@ -1,4 +1,5 @@ #include +#include #include "sm64.h" #include "geo_misc.h" @@ -190,6 +191,8 @@ Gfx *geo_exec_flying_carpet_create(s32 callContext, struct GraphNode *node, UNUS return displayList; } +static char** gCakeSlices; + /** * Create a display list for the end screen with Peach's delicious cake. */ @@ -198,8 +201,12 @@ Gfx *geo_exec_cake_end_screen(s32 callContext, struct GraphNode *node, UNUSED f3 Gfx *displayList = NULL; Gfx *displayListHead = NULL; + if(gCakeSlices == NULL){ + gCakeSlices = malloc((12 * 4) * sizeof(char*)); + } + if (callContext == GEO_CONTEXT_RENDER) { - displayList = alloc_display_list(3 * sizeof(*displayList)); + displayList = alloc_display_list(64 * sizeof(*displayList)); displayListHead = displayList; generatedNode->fnNode.node.flags = (generatedNode->fnNode.node.flags & 0xFF) | 0x100; @@ -221,7 +228,33 @@ Gfx *geo_exec_cake_end_screen(s32 callContext, struct GraphNode *node, UNUSED f3 break; } #else - gSPDisplayList(displayListHead++, dl_cake_end_screen); + Gfx* cake = alloc_display_list(512 * sizeof(*cake)); + Gfx *cakeHead = cake; + gDPPipeSync(cakeHead++); + gDPSetCombineMode(cakeHead++, G_CC_DECALRGBA, G_CC_DECALRGBA); + gDPSetRenderMode(cakeHead++, G_RM_AA_OPA_SURF, G_RM_AA_OPA_SURF2); + gSPTexture(cakeHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON); + + void* data = ResourceGetDataByName(gCakeImage); + s32 size = 80 * 20 * 2; + for (int i = 0; i < 4 * 12; i++) { + if (!gCakeSlices[i]) { + gCakeSlices[i] = malloc(size); + memcpy(gCakeSlices[i], data + i * 3200, size); + } + gDPLoadTextureBlock(cakeHead++, gCakeSlices[i], G_IM_FMT_RGBA, G_IM_SIZ_16b, 80, 20, 0, G_TX_CLAMP, G_TX_CLAMP, 7, 6, G_TX_NOLOD, G_TX_NOLOD); + gSPVertex(cakeHead++, cake_end_vertex_positions[i], 4, 0); + gSP2Triangles(cakeHead++, 0, 1, 2, 0x0, 0, 2, 3, 0x0); + } + + gDPPipeSync(cakeHead++); + gSPTexture(cakeHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF); + gSPSetGeometryMode(cakeHead++, G_LIGHTING); + gDPSetCombineMode(cakeHead++, G_CC_SHADE, G_CC_SHADE); + gDPSetRenderMode(cakeHead++, G_RM_AA_ZB_OPA_SURF, G_RM_AA_ZB_OPA_SURF2); + gSPEndDisplayList(cakeHead++); + + gSPDisplayList(displayListHead++, cake); #endif gSPEndDisplayList(displayListHead); } diff --git a/src/game/geo_misc.h b/src/game/geo_misc.h index 4e8238ae..5118b73a 100644 --- a/src/game/geo_misc.h +++ b/src/game/geo_misc.h @@ -1,6 +1,7 @@ #ifndef GEO_MISC_H #define GEO_MISC_H +#include "align_asset_macro.h" #include #include @@ -12,6 +13,9 @@ enum FlyingCarpetState { extern s8 gFlyingCarpetState; +#define dgCakeImage "__OTR__levels/ending/cake" +static const ALIGN_ASSET(2) char gCakeImage[] = dgCakeImage; + #ifndef GBI_FLOATS extern void make_vertex( Vtx *vtx, s32 n, s16 x, s16 y, s16 z, s16 tx, s16 ty, u8 r, u8 g, u8 b, u8 a diff --git a/src/menu/intro_geo.c b/src/menu/intro_geo.c index 418facaa..a16c8237 100644 --- a/src/menu/intro_geo.c +++ b/src/menu/intro_geo.c @@ -10,6 +10,7 @@ #include "buffers/framebuffers.h" #include "game/game_init.h" #include "audio/external.h" +#include "gfx_dimensions.h" // frame counts for the zoom in, hold, and zoom out of title model #define INTRO_STEPS_ZOOM_IN 20 @@ -141,19 +142,8 @@ static Gfx *intro_backdrop_one_image(s32 index, s8 *backgroundTable) { static const Gfx *introBackgroundDlRows[] = { title_screen_bg_dl_0A000130, title_screen_bg_dl_0A000148, title_screen_bg_dl_0A000160, title_screen_bg_dl_0A000178 }; - // intro screen background texture X offsets - static float xCoords[] = { - 0, 80, 160, 240, - 0, 80, 160, 240, - 0, 80, 160, 240, - }; - - // intro screen background texture Y offsets - static float yCoords[] = { - 160, 160, 160, 160, - 80, 80, 80, 80, - 0, 0, 0, 0, - }; + s32 num_tiles_h = (s32)(GFX_DIMENSIONS_ASPECT_RATIO * SCREEN_HEIGHT + 80 ) / 80; + float xOffset = ((float) SCREEN_WIDTH / 2) - ( GFX_DIMENSIONS_ASPECT_RATIO * SCREEN_HEIGHT / 2); // table that points to either the "Super Mario 64" or "Game Over" tables static const u8 *const *textureTables[] = { mario_title_texture_table, game_over_texture_table }; @@ -161,10 +151,11 @@ static Gfx *intro_backdrop_one_image(s32 index, s8 *backgroundTable) { Mtx *mtx = alloc_display_list(sizeof(*mtx)); Gfx *displayList = alloc_display_list(36 * sizeof(*displayList)); Gfx *displayListIter = displayList; - const u8 *const *vIntroBgTable = segmented_to_virtual(textureTables[backgroundTable[index]]); + // TODO: Fix this for gameover screen + const u8 *const *vIntroBgTable = segmented_to_virtual(textureTables[backgroundTable[0]]); s32 i; - guTranslate(mtx, xCoords[index], yCoords[index], 0.0f); + guTranslate(mtx, ((index % num_tiles_h) * 80) + xOffset, (index/num_tiles_h) * 80, 0.0f); gSPMatrix(displayListIter++, mtx, G_MTX_MODELVIEW | G_MTX_LOAD | G_MTX_PUSH); gSPDisplayList(displayListIter++, &title_screen_bg_dl_0A000118); for (i = 0; i < 4; ++i) { @@ -198,13 +189,15 @@ Gfx *geo_intro_regular_backdrop(s32 state, struct GraphNode *node, UNUSED void * Gfx *dlIter = NULL; s32 i; + s32 num_tiles_h = (s32)((GFX_DIMENSIONS_ASPECT_RATIO * SCREEN_HEIGHT + 80 ) / 80) * 3; + if (state == 1) { // draw - dl = alloc_display_list(16 * sizeof(*dl)); + dl = alloc_display_list((num_tiles_h + 4) * sizeof(*dl)); dlIter = dl; graphNode->node.flags = (graphNode->node.flags & 0xFF) | (LAYER_OPAQUE << 8); gSPDisplayList(dlIter++, &dl_proj_mtx_fullscreen); gSPDisplayList(dlIter++, &title_screen_bg_dl_0A000100); - for (i = 0; i < 12; ++i) { + for (i = 0; i < num_tiles_h; ++i) { gSPDisplayList(dlIter++, intro_backdrop_one_image(i, backgroundTable)); } gSPDisplayList(dlIter++, &title_screen_bg_dl_0A000190);