From c2ebc5a01e8a031a1c09d372fa298e84c9b8de67 Mon Sep 17 00:00:00 2001 From: Reonu Date: Thu, 15 Jul 2021 01:06:52 +0100 Subject: [PATCH 1/7] auto savefile padding --- src/buffers/buffers.c | 2 +- src/game/save_file.c | 2 +- src/game/save_file.h | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/buffers/buffers.c b/src/buffers/buffers.c index d37193e81..1ae6da92e 100644 --- a/src/buffers/buffers.c +++ b/src/buffers/buffers.c @@ -28,6 +28,6 @@ ALIGNED8 u8 gGfxSPTaskStack[SP_DRAM_STACK_SIZE8]; // 0xc00 bytes for f3dex, 0x900 otherwise ALIGNED8 u8 gGfxSPTaskYieldBuffer[OS_YIELD_DATA_SIZE]; // 0x200 bytes -ALIGNED8 struct SaveBuffer gSaveBuffer; +struct SaveBuffer __attribute__ ((aligned (8))) gSaveBuffer; // 0x190a0 bytes struct GfxPool gGfxPools[2]; diff --git a/src/game/save_file.c b/src/game/save_file.c index da3378eb1..0ee411a57 100644 --- a/src/game/save_file.c +++ b/src/game/save_file.c @@ -20,7 +20,7 @@ #define MENU_DATA_MAGIC 0x4849 #define SAVE_FILE_MAGIC 0x4441 -STATIC_ASSERT(sizeof(struct SaveBuffer) == EEPROM_SIZE, "eeprom buffer size must match"); +//STATIC_ASSERT(sizeof(struct SaveBuffer) == EEPROM_SIZE, "eeprom buffer size must match"); extern struct SaveBuffer gSaveBuffer; diff --git a/src/game/save_file.h b/src/game/save_file.h index ae6fcf35d..b6f73b9d1 100644 --- a/src/game/save_file.h +++ b/src/game/save_file.h @@ -8,7 +8,14 @@ #include "course_table.h" -#define EEPROM_SIZE 0x200 +#if defined(SRAM) + #define EEPROM_SIZE 0x8000 +#elif defined(EEP16K) + #define EEPROM_SIZE 0x800 +#else + #define EEPROM_SIZE 0x200 +#endif + #define NUM_SAVE_FILES 4 struct SaveBlockSignature @@ -55,13 +62,13 @@ struct MainMenuSaveData #ifdef VERSION_EU u16 language; -#define SUBTRAHEND 8 +#define SUBTRAHEND 10 #else #define SUBTRAHEND 6 #endif // Pad to match the EEPROM size of 0x200 (10 bytes on JP/US, 8 bytes on EU) - u8 filler[EEPROM_SIZE / 2 - SUBTRAHEND - NUM_SAVE_FILES * (4 + sizeof(struct SaveFile))]; + //u8 filler[EEPROM_SIZE / 2 - SUBTRAHEND - NUM_SAVE_FILES * (4 + sizeof(struct SaveFile))]; struct SaveBlockSignature signature; }; @@ -74,6 +81,8 @@ struct SaveBuffer struct MainMenuSaveData menuData[2]; }; +STATIC_ASSERT(sizeof(struct SaveBuffer) <= EEPROM_SIZE, "ERROR: Save struct too big for specified save type"); + extern u8 gLastCompletedCourseNum; extern u8 gLastCompletedStarNum; extern s8 sUnusedGotGlobalCoinHiScore; From 793c9aacb2debc3aceb7b0f719340e1865e3c98e Mon Sep 17 00:00:00 2001 From: Reonu Date: Thu, 15 Jul 2021 01:10:17 +0100 Subject: [PATCH 2/7] apply_patch creates conflicts instead of rejects --- tools/apply_patch.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/apply_patch.sh b/tools/apply_patch.sh index 1ab8ed239..31ddfc3a1 100755 --- a/tools/apply_patch.sh +++ b/tools/apply_patch.sh @@ -13,7 +13,7 @@ fi read -p "Do you wish to apply the patch '$1'? [Y/N] " response case "$response" in Y|y) - patch -p1 < "$1" + patch -p1 --merge < "$1" ;; N|n) echo 'Quit' From d797cbe4947bc411af4e0344b012da0b36bce4b9 Mon Sep 17 00:00:00 2001 From: Reonu Date: Thu, 15 Jul 2021 01:13:20 +0100 Subject: [PATCH 3/7] fix EU SUBTRAHEND --- src/game/save_file.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/game/save_file.h b/src/game/save_file.h index b6f73b9d1..5cd6cd136 100644 --- a/src/game/save_file.h +++ b/src/game/save_file.h @@ -62,7 +62,7 @@ struct MainMenuSaveData #ifdef VERSION_EU u16 language; -#define SUBTRAHEND 10 +#define SUBTRAHEND 8 #else #define SUBTRAHEND 6 #endif From 1cc7fb9b506c6fefbf2102a20c88fc36bb481d64 Mon Sep 17 00:00:00 2001 From: CrashOveride95 Date: Wed, 14 Jul 2021 20:28:15 -0400 Subject: [PATCH 4/7] Revert "haveyourcake" This reverts commit 1f3a27347b9ef4d438a1d115a7df1449bd3a123f. --- haveyourcake2.patch | 752 ----------------------------- levels/ending/geo.c | 2 + levels/ending/leveldata.c | 639 ++++++++++++++++++++++--- levels/ending/leveldata.c.orig | 840 --------------------------------- tools/skyconv.c | 25 +- 5 files changed, 576 insertions(+), 1682 deletions(-) delete mode 100644 haveyourcake2.patch delete mode 100644 levels/ending/leveldata.c.orig diff --git a/haveyourcake2.patch b/haveyourcake2.patch deleted file mode 100644 index c09681355..000000000 --- a/haveyourcake2.patch +++ /dev/null @@ -1,752 +0,0 @@ -diff --git a/levels/ending/geo.c b/levels/ending/geo.c -index 867bebb..b8e2711 100644 ---- a/levels/ending/geo.c -+++ b/levels/ending/geo.c -@@ -21,9 +21,7 @@ const GeoLayout ending_geo_000050[] = { - GEO_OPEN_NODE(), - GEO_NODE_ORTHO(100), - GEO_OPEN_NODE(), --#ifdef VERSION_EU - GEO_BACKGROUND_COLOR(0x0001), --#endif - GEO_ASM(0, geo_exec_cake_end_screen), - GEO_CLOSE_NODE(), - GEO_CLOSE_NODE(), -diff --git a/levels/ending/leveldata.c b/levels/ending/leveldata.c -index 0ea6be6..bba0a94 100644 ---- a/levels/ending/leveldata.c -+++ b/levels/ending/leveldata.c -@@ -250,389 +250,63 @@ const Gfx dl_cake_end_screen_eu_070297D8[] = { - - #include "levels/ending/cake.inc.c" - --// 0x07025800 - 0x07025840 --static const Vtx cake_end_vertex_07025800[] = { -- {{{ 0, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025840 - 0x07025880 --static const Vtx cake_end_vertex_07025840[] = { -- {{{ 80, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025880 - 0x070258C0 --static const Vtx cake_end_vertex_07025880[] = { -- {{{ 160, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x070258C0 - 0x07025900 --static const Vtx cake_end_vertex_070258C0[] = { -- {{{ 240, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025900 - 0x07025940 --static const Vtx cake_end_vertex_07025900[] = { -- {{{ 0, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025940 - 0x07025980 --static const Vtx cake_end_vertex_07025940[] = { -- {{{ 80, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025980 - 0x070259C0 --static const Vtx cake_end_vertex_07025980[] = { -- {{{ 160, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x070259C0 - 0x07025A00 --static const Vtx cake_end_vertex_070259C0[] = { -- {{{ 240, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025A00 - 0x07025A40 --static const Vtx cake_end_vertex_07025A00[] = { -- {{{ 0, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025A40 - 0x07025A80 --static const Vtx cake_end_vertex_07025A40[] = { -- {{{ 80, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025A80 - 0x07025AC0 --static const Vtx cake_end_vertex_07025A80[] = { -- {{{ 160, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025AC0 - 0x07025B00 --static const Vtx cake_end_vertex_07025AC0[] = { -- {{{ 240, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025B00 - 0x07025B40 --static const Vtx cake_end_vertex_07025B00[] = { -- {{{ 0, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025B40 - 0x07025B80 --static const Vtx cake_end_vertex_07025B40[] = { -- {{{ 80, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025B80 - 0x07025BC0 --static const Vtx cake_end_vertex_07025B80[] = { -- {{{ 160, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025BC0 - 0x07025C00 --static const Vtx cake_end_vertex_07025BC0[] = { -- {{{ 240, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025C00 - 0x07025C40 --static const Vtx cake_end_vertex_07025C00[] = { -- {{{ 0, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025C40 - 0x07025C80 --static const Vtx cake_end_vertex_07025C40[] = { -- {{{ 80, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025C80 - 0x07025CC0 --static const Vtx cake_end_vertex_07025C80[] = { -- {{{ 160, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025CC0 - 0x07025D00 --static const Vtx cake_end_vertex_07025CC0[] = { -- {{{ 240, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025D00 - 0x07025D40 --static const Vtx cake_end_vertex_07025D00[] = { -- {{{ 0, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025D40 - 0x07025D80 --static const Vtx cake_end_vertex_07025D40[] = { -- {{{ 80, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025D80 - 0x07025DC0 --static const Vtx cake_end_vertex_07025D80[] = { -- {{{ 160, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025DC0 - 0x07025E00 --static const Vtx cake_end_vertex_07025DC0[] = { -- {{{ 240, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025E00 - 0x07025E40 --static const Vtx cake_end_vertex_07025E00[] = { -- {{{ 0, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025E40 - 0x07025E80 --static const Vtx cake_end_vertex_07025E40[] = { -- {{{ 80, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025E80 - 0x07025EC0 --static const Vtx cake_end_vertex_07025E80[] = { -- {{{ 160, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025EC0 - 0x07025F00 --static const Vtx cake_end_vertex_07025EC0[] = { -- {{{ 240, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025F00 - 0x07025F40 --static const Vtx cake_end_vertex_07025F00[] = { -- {{{ 0, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025F40 - 0x07025F80 --static const Vtx cake_end_vertex_07025F40[] = { -- {{{ 80, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025F80 - 0x07025FC0 --static const Vtx cake_end_vertex_07025F80[] = { -- {{{ 160, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07025FC0 - 0x07026000 --static const Vtx cake_end_vertex_07025FC0[] = { -- {{{ 240, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026000 - 0x07026040 --static const Vtx cake_end_vertex_07026000[] = { -- {{{ 0, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026040 - 0x07026080 --static const Vtx cake_end_vertex_07026040[] = { -- {{{ 80, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026080 - 0x070260C0 --static const Vtx cake_end_vertex_07026080[] = { -- {{{ 160, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x070260C0 - 0x07026100 --static const Vtx cake_end_vertex_070260C0[] = { -- {{{ 240, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026100 - 0x07026140 --static const Vtx cake_end_vertex_07026100[] = { -- {{{ 0, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026140 - 0x07026180 --static const Vtx cake_end_vertex_07026140[] = { -- {{{ 80, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026180 - 0x070261C0 --static const Vtx cake_end_vertex_07026180[] = { -- {{{ 160, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x070261C0 - 0x07026200 --static const Vtx cake_end_vertex_070261C0[] = { -- {{{ 240, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026200 - 0x07026240 --static const Vtx cake_end_vertex_07026200[] = { -- {{{ 0, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026240 - 0x07026280 --static const Vtx cake_end_vertex_07026240[] = { -- {{{ 80, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026280 - 0x070262C0 --static const Vtx cake_end_vertex_07026280[] = { -- {{{ 160, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x070262C0 - 0x07026300 --static const Vtx cake_end_vertex_070262C0[] = { -- {{{ 240, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026300 - 0x07026340 --static const Vtx cake_end_vertex_07026300[] = { -- {{{ 0, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 0, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026340 - 0x07026380 --static const Vtx cake_end_vertex_07026340[] = { -- {{{ 80, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 80, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x07026380 - 0x070263C0 --static const Vtx cake_end_vertex_07026380[] = { -- {{{ 160, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 160, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -- --// 0x070263C0 - 0x07026400 --static const Vtx cake_end_vertex_070263C0[] = { -- {{{ 240, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 320, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, -- {{{ 240, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, --}; -+#define NUM_CAKE_TEXTURES 40 -+#define NUM_CAKE_TEXTURES_X 5 -+#define NUM_CAKE_TEXTURES_Y (NUM_CAKE_TEXTURES / NUM_CAKE_TEXTURES_X) -+#define CAKE_TEX_WIDTH (320 / NUM_CAKE_TEXTURES_X) -+#define CAKE_TEX_HEIGHT (240 / NUM_CAKE_TEXTURES_Y) -+ -+#define MAKE_RECT_VERTICES(i, startX, startY, dx, dy, starts, startt) \ -+ {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + 0), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + 0), -1}, 0, {(starts + 0) << 5, (startt + 0) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ -+ {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + dx), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + 0), -1}, 0, {(starts + dx) << 5, (startt + 0) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ -+ {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + 0), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + dy), -1}, 0, {(starts + 0) << 5, (startt + dy) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ -+ {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + dx), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + dy), -1}, 0, {(starts + dx) << 5, (startt + dy) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}} -+ -+#define MAKE_TEXT_VERTICES(i) \ -+ MAKE_RECT_VERTICES(i, 0, 0, CAKE_TEX_WIDTH - 1, CAKE_TEX_HEIGHT - 1, 0, 0) -+ -+#define MAKE_ROW_VERTICES(row) \ -+ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 0), \ -+ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 1), \ -+ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 2), \ -+ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 3), \ -+ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 4) -+ -+const Vtx cake_verts[] = { -+ MAKE_ROW_VERTICES(0), -+ MAKE_ROW_VERTICES(1), -+ MAKE_ROW_VERTICES(2), -+ MAKE_ROW_VERTICES(3), -+ MAKE_ROW_VERTICES(4), -+ MAKE_ROW_VERTICES(5), -+ MAKE_ROW_VERTICES(6), -+ MAKE_ROW_VERTICES(7), -+}; -+ -+#define LOAD_CAKE_TEXTURE(i) \ -+ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_data + (CAKE_TEX_WIDTH * CAKE_TEX_HEIGHT * 2 * (i))), \ -+ gsDPLoadSync(), \ -+ gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ -+ (((CAKE_TEX_WIDTH)*(CAKE_TEX_HEIGHT) + G_IM_SIZ_16b_INCR) >> G_IM_SIZ_16b_SHIFT)-1, \ -+ CALC_DXT(CAKE_TEX_WIDTH, G_IM_SIZ_16b_BYTES)) -+ -+#define LOAD_CAKE_VERTICES(i) \ -+ gsSPVertex(cake_verts + 4 * (i), 4, 0) -+ -+#define CAKE_TRIS(i) \ -+ LOAD_CAKE_TEXTURE(i), \ -+ gsSP2Triangles(0, 2, 1, 0x0, 1, 2, 3, 0x0) -+ -+#define CAKE_RECT(i) \ -+ LOAD_CAKE_VERTICES(i), \ -+ CAKE_TRIS(i) \ -+ -+#define CAKE_ROW(row) \ -+ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 0),\ -+ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 1),\ -+ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 2),\ -+ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 3),\ -+ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 4) - - // 0x07026400 - 0x07027350 - const Gfx dl_cake_end_screen[] = { -@@ -640,198 +314,27 @@ const Gfx dl_cake_end_screen[] = { - 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), -+ -+ gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, -+ G_TX_LOADTILE, 0, -+ G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, -+ G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD), -+ gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, (((CAKE_TEX_WIDTH * G_IM_SIZ_16b_LINE_BYTES)+7)>>3), 0, -+ G_TX_RENDERTILE, 0, -+ G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, -+ G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD), -+ gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, -+ (CAKE_TEX_WIDTH - 1) << G_TEXTURE_IMAGE_FRAC, -+ (CAKE_TEX_HEIGHT - 1) << G_TEXTURE_IMAGE_FRAC), -+ -+ CAKE_ROW(0), -+ CAKE_ROW(1), -+ CAKE_ROW(2), -+ CAKE_ROW(3), -+ CAKE_ROW(4), -+ CAKE_ROW(5), -+ CAKE_ROW(6), -+ CAKE_ROW(7), - - gsDPPipeSync(), - gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), -diff --git a/tools/skyconv.c b/tools/skyconv.c -index b515373..1fdf027 100644 ---- a/tools/skyconv.c -+++ b/tools/skyconv.c -@@ -47,8 +47,8 @@ static const ImageProps IMAGE_PROPERTIES[ImageType_MAX][2] = { - {256, 256, 32, 32, 8, 8, true, true}, - }, - [Cake] = { -- {316, 228, 79, 19, 4, 12, false, false}, -- {320, 240, 80, 20, 4, 12, false, false}, -+ {316, 228, 63, 29, 5, 8, false, false}, -+ {320, 240, 64, 30, 5, 8, false, false}, - }, - [CakeEU] = { - {320, 224, 64, 32, 5, 7, false, false}, -@@ -62,7 +62,7 @@ typedef struct { - - static const TableDimension TABLE_DIMENSIONS[ImageType_MAX] = { - [Skybox] = {8, 10}, -- [Cake] = {4, 12}, -+ [Cake] = {5, 8}, - [CakeEU] = {5, 7}, - }; - -@@ -104,15 +104,26 @@ static void split_tile(int col, int row, rgba *image, bool expanded) { - int tileWidth = props.tileWidth; - int tileHeight = props.tileHeight; - int imageWidth = props.imageWidth; -+ int imageHeight = props.imageHeight; - int numCols = props.numCols; - - int expandedWidth = IMAGE_PROPERTIES[type][true].tileWidth; - -+ rgba black = {0, 0, 0, 0}; -+ - for (int y = 0; y < tileHeight; y++) { - for (int x = 0; x < tileWidth; x++) { - int ny = row * tileHeight + y; - int nx = col * tileWidth + x; -- tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; -+ if (nx < imageWidth && ny < imageHeight) -+ { -+ tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; -+ } -+ else -+ { -+ tiles[row * numCols + col].px[y * expandedWidth + x] = black; -+ } -+ - } - } - } -@@ -339,11 +350,12 @@ static void write_cake_c() { - } - - int numTiles = TABLE_DIMENSIONS[type].cols * TABLE_DIMENSIONS[type].rows; -+ fprintf(cFile, "ALIGNED8 static const u8 cake_end_texture_%sdata[] = {\n", euSuffx); - for (int i = 0; i < numTiles; ++i) { -- fprintf(cFile, "ALIGNED8 static const u8 cake_end_texture_%s%d[] = {\n", euSuffx, i); - print_raw_data(cFile, &tiles[i]); -- fputs("};\n\n", cFile); -+ fputc('\n', cFile); - } -+ fputs("};\n\n", cFile); - fclose(cFile); - } - diff --git a/levels/ending/geo.c b/levels/ending/geo.c index b8e2711ad..867bebb56 100644 --- a/levels/ending/geo.c +++ b/levels/ending/geo.c @@ -21,7 +21,9 @@ const GeoLayout ending_geo_000050[] = { GEO_OPEN_NODE(), GEO_NODE_ORTHO(100), GEO_OPEN_NODE(), +#ifdef VERSION_EU GEO_BACKGROUND_COLOR(0x0001), +#endif GEO_ASM(0, geo_exec_cake_end_screen), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ending/leveldata.c b/levels/ending/leveldata.c index f28605e60..94b938726 100644 --- a/levels/ending/leveldata.c +++ b/levels/ending/leveldata.c @@ -247,63 +247,389 @@ const Gfx dl_cake_end_screen_eu_070297D8[] = { #include "levels/ending/cake.inc.c" -#define NUM_CAKE_TEXTURES 40 -#define NUM_CAKE_TEXTURES_X 5 -#define NUM_CAKE_TEXTURES_Y (NUM_CAKE_TEXTURES / NUM_CAKE_TEXTURES_X) -#define CAKE_TEX_WIDTH (320 / NUM_CAKE_TEXTURES_X) -#define CAKE_TEX_HEIGHT (240 / NUM_CAKE_TEXTURES_Y) - -#define MAKE_RECT_VERTICES(i, startX, startY, dx, dy, starts, startt) \ - {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + 0), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + 0), -1}, 0, {(starts + 0) << 5, (startt + 0) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ - {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + dx), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + 0), -1}, 0, {(starts + dx) << 5, (startt + 0) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ - {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + 0), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + dy), -1}, 0, {(starts + 0) << 5, (startt + dy) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ - {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + dx), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + dy), -1}, 0, {(starts + dx) << 5, (startt + dy) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}} - -#define MAKE_TEXT_VERTICES(i) \ - MAKE_RECT_VERTICES(i, 0, 0, CAKE_TEX_WIDTH - 1, CAKE_TEX_HEIGHT - 1, 0, 0) - -#define MAKE_ROW_VERTICES(row) \ - MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 0), \ - MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 1), \ - MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 2), \ - MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 3), \ - MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 4) - -const Vtx cake_verts[] = { - MAKE_ROW_VERTICES(0), - MAKE_ROW_VERTICES(1), - MAKE_ROW_VERTICES(2), - MAKE_ROW_VERTICES(3), - MAKE_ROW_VERTICES(4), - MAKE_ROW_VERTICES(5), - MAKE_ROW_VERTICES(6), - MAKE_ROW_VERTICES(7), +// 0x07025800 - 0x07025840 +static const Vtx cake_end_vertex_07025800[] = { + {{{ 0, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, }; -#define LOAD_CAKE_TEXTURE(i) \ - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_data + (CAKE_TEX_WIDTH * CAKE_TEX_HEIGHT * 2 * (i))), \ - gsDPLoadSync(), \ - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ - (((CAKE_TEX_WIDTH)*(CAKE_TEX_HEIGHT) + G_IM_SIZ_16b_INCR) >> G_IM_SIZ_16b_SHIFT)-1, \ - CALC_DXT(CAKE_TEX_WIDTH, G_IM_SIZ_16b_BYTES)) +// 0x07025840 - 0x07025880 +static const Vtx cake_end_vertex_07025840[] = { + {{{ 80, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; -#define LOAD_CAKE_VERTICES(i) \ - gsSPVertex(cake_verts + 4 * (i), 4, 0) +// 0x07025880 - 0x070258C0 +static const Vtx cake_end_vertex_07025880[] = { + {{{ 160, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; -#define CAKE_TRIS(i) \ - LOAD_CAKE_TEXTURE(i), \ - gsSP2Triangles(0, 2, 1, 0x0, 1, 2, 3, 0x0) +// 0x070258C0 - 0x07025900 +static const Vtx cake_end_vertex_070258C0[] = { + {{{ 240, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; -#define CAKE_RECT(i) \ - LOAD_CAKE_VERTICES(i), \ - CAKE_TRIS(i) \ +// 0x07025900 - 0x07025940 +static const Vtx cake_end_vertex_07025900[] = { + {{{ 0, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; -#define CAKE_ROW(row) \ - CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 0),\ - CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 1),\ - CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 2),\ - CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 3),\ - CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 4) +// 0x07025940 - 0x07025980 +static const Vtx cake_end_vertex_07025940[] = { + {{{ 80, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025980 - 0x070259C0 +static const Vtx cake_end_vertex_07025980[] = { + {{{ 160, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070259C0 - 0x07025A00 +static const Vtx cake_end_vertex_070259C0[] = { + {{{ 240, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025A00 - 0x07025A40 +static const Vtx cake_end_vertex_07025A00[] = { + {{{ 0, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025A40 - 0x07025A80 +static const Vtx cake_end_vertex_07025A40[] = { + {{{ 80, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025A80 - 0x07025AC0 +static const Vtx cake_end_vertex_07025A80[] = { + {{{ 160, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025AC0 - 0x07025B00 +static const Vtx cake_end_vertex_07025AC0[] = { + {{{ 240, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025B00 - 0x07025B40 +static const Vtx cake_end_vertex_07025B00[] = { + {{{ 0, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025B40 - 0x07025B80 +static const Vtx cake_end_vertex_07025B40[] = { + {{{ 80, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025B80 - 0x07025BC0 +static const Vtx cake_end_vertex_07025B80[] = { + {{{ 160, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025BC0 - 0x07025C00 +static const Vtx cake_end_vertex_07025BC0[] = { + {{{ 240, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025C00 - 0x07025C40 +static const Vtx cake_end_vertex_07025C00[] = { + {{{ 0, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025C40 - 0x07025C80 +static const Vtx cake_end_vertex_07025C40[] = { + {{{ 80, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025C80 - 0x07025CC0 +static const Vtx cake_end_vertex_07025C80[] = { + {{{ 160, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025CC0 - 0x07025D00 +static const Vtx cake_end_vertex_07025CC0[] = { + {{{ 240, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025D00 - 0x07025D40 +static const Vtx cake_end_vertex_07025D00[] = { + {{{ 0, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025D40 - 0x07025D80 +static const Vtx cake_end_vertex_07025D40[] = { + {{{ 80, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025D80 - 0x07025DC0 +static const Vtx cake_end_vertex_07025D80[] = { + {{{ 160, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025DC0 - 0x07025E00 +static const Vtx cake_end_vertex_07025DC0[] = { + {{{ 240, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025E00 - 0x07025E40 +static const Vtx cake_end_vertex_07025E00[] = { + {{{ 0, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025E40 - 0x07025E80 +static const Vtx cake_end_vertex_07025E40[] = { + {{{ 80, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025E80 - 0x07025EC0 +static const Vtx cake_end_vertex_07025E80[] = { + {{{ 160, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025EC0 - 0x07025F00 +static const Vtx cake_end_vertex_07025EC0[] = { + {{{ 240, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025F00 - 0x07025F40 +static const Vtx cake_end_vertex_07025F00[] = { + {{{ 0, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025F40 - 0x07025F80 +static const Vtx cake_end_vertex_07025F40[] = { + {{{ 80, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025F80 - 0x07025FC0 +static const Vtx cake_end_vertex_07025F80[] = { + {{{ 160, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025FC0 - 0x07026000 +static const Vtx cake_end_vertex_07025FC0[] = { + {{{ 240, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026000 - 0x07026040 +static const Vtx cake_end_vertex_07026000[] = { + {{{ 0, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026040 - 0x07026080 +static const Vtx cake_end_vertex_07026040[] = { + {{{ 80, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026080 - 0x070260C0 +static const Vtx cake_end_vertex_07026080[] = { + {{{ 160, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070260C0 - 0x07026100 +static const Vtx cake_end_vertex_070260C0[] = { + {{{ 240, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026100 - 0x07026140 +static const Vtx cake_end_vertex_07026100[] = { + {{{ 0, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026140 - 0x07026180 +static const Vtx cake_end_vertex_07026140[] = { + {{{ 80, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026180 - 0x070261C0 +static const Vtx cake_end_vertex_07026180[] = { + {{{ 160, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070261C0 - 0x07026200 +static const Vtx cake_end_vertex_070261C0[] = { + {{{ 240, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026200 - 0x07026240 +static const Vtx cake_end_vertex_07026200[] = { + {{{ 0, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026240 - 0x07026280 +static const Vtx cake_end_vertex_07026240[] = { + {{{ 80, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026280 - 0x070262C0 +static const Vtx cake_end_vertex_07026280[] = { + {{{ 160, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070262C0 - 0x07026300 +static const Vtx cake_end_vertex_070262C0[] = { + {{{ 240, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026300 - 0x07026340 +static const Vtx cake_end_vertex_07026300[] = { + {{{ 0, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026340 - 0x07026380 +static const Vtx cake_end_vertex_07026340[] = { + {{{ 80, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026380 - 0x070263C0 +static const Vtx cake_end_vertex_07026380[] = { + {{{ 160, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070263C0 - 0x07026400 +static const Vtx cake_end_vertex_070263C0[] = { + {{{ 240, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; // 0x07026400 - 0x07027350 const Gfx dl_cake_end_screen[] = { @@ -311,27 +637,198 @@ const Gfx dl_cake_end_screen[] = { 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), - - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, - G_TX_LOADTILE, 0, - G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, - G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, (((CAKE_TEX_WIDTH * G_IM_SIZ_16b_LINE_BYTES)+7)>>3), 0, - G_TX_RENDERTILE, 0, - G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, - G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD), - gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, - (CAKE_TEX_WIDTH - 1) << G_TEXTURE_IMAGE_FRAC, - (CAKE_TEX_HEIGHT - 1) << G_TEXTURE_IMAGE_FRAC), - CAKE_ROW(0), - CAKE_ROW(1), - CAKE_ROW(2), - CAKE_ROW(3), - CAKE_ROW(4), - CAKE_ROW(5), - CAKE_ROW(6), - CAKE_ROW(7), + 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), diff --git a/levels/ending/leveldata.c.orig b/levels/ending/leveldata.c.orig deleted file mode 100644 index 94b938726..000000000 --- a/levels/ending/leveldata.c.orig +++ /dev/null @@ -1,840 +0,0 @@ -#include -#include - -#include "macros.h" -#include "types.h" - -#include "make_const_nonconst.h" - -#ifdef VERSION_EU -#include "levels/ending/cake_eu.inc.c" - -// 0x07023000 - 0x07023FFF -ALIGNED8 static const Texture cake_end_texture_eu_35[] = { -#include "levels/ending/eu_023000.rgba16.inc.c" -}; - -// 0x07024000 - 0x07024FFF -ALIGNED8 static const Texture cake_end_texture_eu_36[] = { -#include "levels/ending/eu_024000.rgba16.inc.c" -}; - -// 0x07025000 - 0x07025FFF -ALIGNED8 static const Texture cake_end_texture_eu_37[] = { -#include "levels/ending/eu_025000.rgba16.inc.c" -}; - -// 0x07026000 - 0x07026FFF -ALIGNED8 static const Texture cake_end_texture_eu_38[] = { -#include "levels/ending/eu_026000.rgba16.inc.c" -}; - -// 0x07027000 - 0x07027FFF -ALIGNED8 static const Texture cake_end_texture_eu_39[] = { -#include "levels/ending/eu_027000.rgba16.inc.c" -}; - -// 0x07028000 - 0x07028FFF -ALIGNED8 static const Texture cake_end_texture_eu_40[] = { -#include "levels/ending/eu_028000.rgba16.inc.c" -}; - -// 0x07029000 - 0x070296D8 -const Gfx dl_cake_end_screen[] = { - gsDPPipeSync(), - gsDPSetCycleType(G_CYC_COPY), - gsDPSetTexturePersp(G_TP_NONE), - gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), - gsDPTileSync(), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD), - gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_0), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 8 << 2, (0 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_1), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 8 << 2, (64 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_2), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 8 << 2, (128 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_3), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 8 << 2, (192 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_4), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 8 << 2, (256 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_5), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 40 << 2, (0 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_6), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 40 << 2, (64 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_7), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 40 << 2, (128 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_8), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 40 << 2, (192 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_9), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 40 << 2, (256 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_10), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 72 << 2, (0 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_11), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 72 << 2, (64 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_12), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 72 << 2, (128 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_13), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 72 << 2, (192 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_14), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 72 << 2, (256 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_15), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 104 << 2, (0 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_16), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 104 << 2, (64 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_17), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 104 << 2, (128 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_18), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 104 << 2, (192 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_19), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 104 << 2, (256 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_20), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 136 << 2, (0 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_21), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 136 << 2, (64 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_22), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 136 << 2, (128 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_23), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 136 << 2, (192 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_24), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 136 << 2, (256 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_25), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 168 << 2, (0 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_26), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 168 << 2, (64 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_27), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 168 << 2, (128 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_28), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 168 << 2, (192 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_29), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 168 << 2, (256 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_30), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 200 << 2, (0 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_31), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 200 << 2, (64 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_32), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_33), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 200 << 2, (192 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_34), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 200 << 2, (256 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsSPEndDisplayList(), -}; - -// 0x070296D8 - 0x070296F8 -static const Gfx dl_cake_end_eu_070296D8[] = { - gsDPPipeSync(), - gsDPSetCycleType(G_CYC_1CYCLE), - gsDPSetTexturePersp(G_TP_PERSP), - gsSPEndDisplayList(), -}; - -// 0x070296F8 - 0x07029768 -const Gfx dl_cake_end_screen_eu_070296F8[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_38), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_35), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsSPDisplayList(dl_cake_end_eu_070296D8), - gsSPEndDisplayList(), -}; - -// 0x07029768 - 0x070297D8 -const Gfx dl_cake_end_screen_eu_07029768[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_39), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_36), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsSPDisplayList(dl_cake_end_eu_070296D8), - gsSPEndDisplayList(), -}; - -// 0x070297D8 - 0x07029848 -const Gfx dl_cake_end_screen_eu_070297D8[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_40), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_37), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsSPDisplayList(dl_cake_end_eu_070296D8), - gsSPEndDisplayList(), -}; - -// VERSION_EU -#else - -#include "levels/ending/cake.inc.c" - -// 0x07025800 - 0x07025840 -static const Vtx cake_end_vertex_07025800[] = { - {{{ 0, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025840 - 0x07025880 -static const Vtx cake_end_vertex_07025840[] = { - {{{ 80, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025880 - 0x070258C0 -static const Vtx cake_end_vertex_07025880[] = { - {{{ 160, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070258C0 - 0x07025900 -static const Vtx cake_end_vertex_070258C0[] = { - {{{ 240, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025900 - 0x07025940 -static const Vtx cake_end_vertex_07025900[] = { - {{{ 0, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025940 - 0x07025980 -static const Vtx cake_end_vertex_07025940[] = { - {{{ 80, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025980 - 0x070259C0 -static const Vtx cake_end_vertex_07025980[] = { - {{{ 160, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070259C0 - 0x07025A00 -static const Vtx cake_end_vertex_070259C0[] = { - {{{ 240, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A00 - 0x07025A40 -static const Vtx cake_end_vertex_07025A00[] = { - {{{ 0, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A40 - 0x07025A80 -static const Vtx cake_end_vertex_07025A40[] = { - {{{ 80, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A80 - 0x07025AC0 -static const Vtx cake_end_vertex_07025A80[] = { - {{{ 160, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025AC0 - 0x07025B00 -static const Vtx cake_end_vertex_07025AC0[] = { - {{{ 240, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B00 - 0x07025B40 -static const Vtx cake_end_vertex_07025B00[] = { - {{{ 0, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B40 - 0x07025B80 -static const Vtx cake_end_vertex_07025B40[] = { - {{{ 80, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B80 - 0x07025BC0 -static const Vtx cake_end_vertex_07025B80[] = { - {{{ 160, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025BC0 - 0x07025C00 -static const Vtx cake_end_vertex_07025BC0[] = { - {{{ 240, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C00 - 0x07025C40 -static const Vtx cake_end_vertex_07025C00[] = { - {{{ 0, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C40 - 0x07025C80 -static const Vtx cake_end_vertex_07025C40[] = { - {{{ 80, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C80 - 0x07025CC0 -static const Vtx cake_end_vertex_07025C80[] = { - {{{ 160, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025CC0 - 0x07025D00 -static const Vtx cake_end_vertex_07025CC0[] = { - {{{ 240, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D00 - 0x07025D40 -static const Vtx cake_end_vertex_07025D00[] = { - {{{ 0, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D40 - 0x07025D80 -static const Vtx cake_end_vertex_07025D40[] = { - {{{ 80, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D80 - 0x07025DC0 -static const Vtx cake_end_vertex_07025D80[] = { - {{{ 160, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025DC0 - 0x07025E00 -static const Vtx cake_end_vertex_07025DC0[] = { - {{{ 240, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E00 - 0x07025E40 -static const Vtx cake_end_vertex_07025E00[] = { - {{{ 0, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E40 - 0x07025E80 -static const Vtx cake_end_vertex_07025E40[] = { - {{{ 80, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E80 - 0x07025EC0 -static const Vtx cake_end_vertex_07025E80[] = { - {{{ 160, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025EC0 - 0x07025F00 -static const Vtx cake_end_vertex_07025EC0[] = { - {{{ 240, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F00 - 0x07025F40 -static const Vtx cake_end_vertex_07025F00[] = { - {{{ 0, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F40 - 0x07025F80 -static const Vtx cake_end_vertex_07025F40[] = { - {{{ 80, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F80 - 0x07025FC0 -static const Vtx cake_end_vertex_07025F80[] = { - {{{ 160, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025FC0 - 0x07026000 -static const Vtx cake_end_vertex_07025FC0[] = { - {{{ 240, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026000 - 0x07026040 -static const Vtx cake_end_vertex_07026000[] = { - {{{ 0, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026040 - 0x07026080 -static const Vtx cake_end_vertex_07026040[] = { - {{{ 80, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026080 - 0x070260C0 -static const Vtx cake_end_vertex_07026080[] = { - {{{ 160, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070260C0 - 0x07026100 -static const Vtx cake_end_vertex_070260C0[] = { - {{{ 240, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026100 - 0x07026140 -static const Vtx cake_end_vertex_07026100[] = { - {{{ 0, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026140 - 0x07026180 -static const Vtx cake_end_vertex_07026140[] = { - {{{ 80, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026180 - 0x070261C0 -static const Vtx cake_end_vertex_07026180[] = { - {{{ 160, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070261C0 - 0x07026200 -static const Vtx cake_end_vertex_070261C0[] = { - {{{ 240, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026200 - 0x07026240 -static const Vtx cake_end_vertex_07026200[] = { - {{{ 0, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026240 - 0x07026280 -static const Vtx cake_end_vertex_07026240[] = { - {{{ 80, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026280 - 0x070262C0 -static const Vtx cake_end_vertex_07026280[] = { - {{{ 160, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070262C0 - 0x07026300 -static const Vtx cake_end_vertex_070262C0[] = { - {{{ 240, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026300 - 0x07026340 -static const Vtx cake_end_vertex_07026300[] = { - {{{ 0, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026340 - 0x07026380 -static const Vtx cake_end_vertex_07026340[] = { - {{{ 80, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026380 - 0x070263C0 -static const Vtx cake_end_vertex_07026380[] = { - {{{ 160, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070263C0 - 0x07026400 -static const Vtx cake_end_vertex_070263C0[] = { - {{{ 240, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 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(), -}; -#endif diff --git a/tools/skyconv.c b/tools/skyconv.c index d81f9b2be..79d6f0411 100644 --- a/tools/skyconv.c +++ b/tools/skyconv.c @@ -49,8 +49,8 @@ static const ImageProps IMAGE_PROPERTIES[ImageType_MAX][2] = { {256, 256, 32, 32, 8, 8, true, true}, }, [Cake] = { - {316, 228, 63, 29, 5, 8, false, false}, - {320, 240, 64, 30, 5, 8, false, false}, + {316, 228, 79, 19, 4, 12, false, false}, + {320, 240, 80, 20, 4, 12, false, false}, }, [CakeEU] = { {320, 224, 64, 32, 5, 7, false, false}, @@ -64,7 +64,7 @@ typedef struct { static const TableDimension TABLE_DIMENSIONS[ImageType_MAX] = { [Skybox] = {8, 10}, - [Cake] = {5, 8}, + [Cake] = {4, 12}, [CakeEU] = {5, 7}, }; @@ -106,26 +106,15 @@ static void split_tile(int col, int row, rgba *image, bool expanded) { int tileWidth = props.tileWidth; int tileHeight = props.tileHeight; int imageWidth = props.imageWidth; - int imageHeight = props.imageHeight; int numCols = props.numCols; int expandedWidth = IMAGE_PROPERTIES[type][true].tileWidth; - rgba black = {0, 0, 0, 0}; - for (int y = 0; y < tileHeight; y++) { for (int x = 0; x < tileWidth; x++) { int ny = row * tileHeight + y; int nx = col * tileWidth + x; - if (nx < imageWidth && ny < imageHeight) - { - tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; - } - else - { - tiles[row * numCols + col].px[y * expandedWidth + x] = black; - } - + tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; } } } @@ -350,13 +339,11 @@ static void write_cake_c() { } int numTiles = TABLE_DIMENSIONS[type].cols * TABLE_DIMENSIONS[type].rows; - fprintf(cFile, "ALIGNED8 static const Texture cake_end_texture_%sdata[] = {\n", euSuffx); for (int i = 0; i < numTiles; ++i) { + fprintf(cFile, "ALIGNED8 static const Texture cake_end_texture_%s%d[] = {\n", euSuffx, i); print_raw_data(cFile, &tiles[i]); - fputc(',', cFile); - fputc('\n', cFile); + fputs("};\n\n", cFile); } - fputs("};\n\n", cFile); fclose(cFile); } From 18b562cd8500ec005bacb3b5e045f36e89f905ca Mon Sep 17 00:00:00 2001 From: Cheezepin Date: Thu, 15 Jul 2021 11:33:37 -0700 Subject: [PATCH 5/7] haveyourcake but it works --- haveyourcake2.patch | 752 +++++++++++++++++++++++++++++ include/config.h | 2 + levels/ending/geo.c | 2 - levels/ending/header.h | 4 + levels/ending/leveldata.c | 647 ++++--------------------- levels/ending/leveldata.c.orig | 840 +++++++++++++++++++++++++++++++++ src/game/geo_misc.c | 6 +- tools/skyconv.c | 47 +- tools/skyconv.c.orig | 657 ++++++++++++++++++++++++++ 9 files changed, 2373 insertions(+), 584 deletions(-) create mode 100644 haveyourcake2.patch create mode 100644 levels/ending/leveldata.c.orig create mode 100644 tools/skyconv.c.orig diff --git a/haveyourcake2.patch b/haveyourcake2.patch new file mode 100644 index 000000000..c09681355 --- /dev/null +++ b/haveyourcake2.patch @@ -0,0 +1,752 @@ +diff --git a/levels/ending/geo.c b/levels/ending/geo.c +index 867bebb..b8e2711 100644 +--- a/levels/ending/geo.c ++++ b/levels/ending/geo.c +@@ -21,9 +21,7 @@ const GeoLayout ending_geo_000050[] = { + GEO_OPEN_NODE(), + GEO_NODE_ORTHO(100), + GEO_OPEN_NODE(), +-#ifdef VERSION_EU + GEO_BACKGROUND_COLOR(0x0001), +-#endif + GEO_ASM(0, geo_exec_cake_end_screen), + GEO_CLOSE_NODE(), + GEO_CLOSE_NODE(), +diff --git a/levels/ending/leveldata.c b/levels/ending/leveldata.c +index 0ea6be6..bba0a94 100644 +--- a/levels/ending/leveldata.c ++++ b/levels/ending/leveldata.c +@@ -250,389 +250,63 @@ const Gfx dl_cake_end_screen_eu_070297D8[] = { + + #include "levels/ending/cake.inc.c" + +-// 0x07025800 - 0x07025840 +-static const Vtx cake_end_vertex_07025800[] = { +- {{{ 0, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025840 - 0x07025880 +-static const Vtx cake_end_vertex_07025840[] = { +- {{{ 80, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025880 - 0x070258C0 +-static const Vtx cake_end_vertex_07025880[] = { +- {{{ 160, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x070258C0 - 0x07025900 +-static const Vtx cake_end_vertex_070258C0[] = { +- {{{ 240, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025900 - 0x07025940 +-static const Vtx cake_end_vertex_07025900[] = { +- {{{ 0, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025940 - 0x07025980 +-static const Vtx cake_end_vertex_07025940[] = { +- {{{ 80, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025980 - 0x070259C0 +-static const Vtx cake_end_vertex_07025980[] = { +- {{{ 160, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x070259C0 - 0x07025A00 +-static const Vtx cake_end_vertex_070259C0[] = { +- {{{ 240, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025A00 - 0x07025A40 +-static const Vtx cake_end_vertex_07025A00[] = { +- {{{ 0, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025A40 - 0x07025A80 +-static const Vtx cake_end_vertex_07025A40[] = { +- {{{ 80, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025A80 - 0x07025AC0 +-static const Vtx cake_end_vertex_07025A80[] = { +- {{{ 160, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025AC0 - 0x07025B00 +-static const Vtx cake_end_vertex_07025AC0[] = { +- {{{ 240, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025B00 - 0x07025B40 +-static const Vtx cake_end_vertex_07025B00[] = { +- {{{ 0, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025B40 - 0x07025B80 +-static const Vtx cake_end_vertex_07025B40[] = { +- {{{ 80, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025B80 - 0x07025BC0 +-static const Vtx cake_end_vertex_07025B80[] = { +- {{{ 160, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025BC0 - 0x07025C00 +-static const Vtx cake_end_vertex_07025BC0[] = { +- {{{ 240, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025C00 - 0x07025C40 +-static const Vtx cake_end_vertex_07025C00[] = { +- {{{ 0, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025C40 - 0x07025C80 +-static const Vtx cake_end_vertex_07025C40[] = { +- {{{ 80, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025C80 - 0x07025CC0 +-static const Vtx cake_end_vertex_07025C80[] = { +- {{{ 160, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025CC0 - 0x07025D00 +-static const Vtx cake_end_vertex_07025CC0[] = { +- {{{ 240, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025D00 - 0x07025D40 +-static const Vtx cake_end_vertex_07025D00[] = { +- {{{ 0, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025D40 - 0x07025D80 +-static const Vtx cake_end_vertex_07025D40[] = { +- {{{ 80, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025D80 - 0x07025DC0 +-static const Vtx cake_end_vertex_07025D80[] = { +- {{{ 160, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025DC0 - 0x07025E00 +-static const Vtx cake_end_vertex_07025DC0[] = { +- {{{ 240, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025E00 - 0x07025E40 +-static const Vtx cake_end_vertex_07025E00[] = { +- {{{ 0, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025E40 - 0x07025E80 +-static const Vtx cake_end_vertex_07025E40[] = { +- {{{ 80, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025E80 - 0x07025EC0 +-static const Vtx cake_end_vertex_07025E80[] = { +- {{{ 160, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025EC0 - 0x07025F00 +-static const Vtx cake_end_vertex_07025EC0[] = { +- {{{ 240, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025F00 - 0x07025F40 +-static const Vtx cake_end_vertex_07025F00[] = { +- {{{ 0, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025F40 - 0x07025F80 +-static const Vtx cake_end_vertex_07025F40[] = { +- {{{ 80, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025F80 - 0x07025FC0 +-static const Vtx cake_end_vertex_07025F80[] = { +- {{{ 160, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07025FC0 - 0x07026000 +-static const Vtx cake_end_vertex_07025FC0[] = { +- {{{ 240, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026000 - 0x07026040 +-static const Vtx cake_end_vertex_07026000[] = { +- {{{ 0, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026040 - 0x07026080 +-static const Vtx cake_end_vertex_07026040[] = { +- {{{ 80, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026080 - 0x070260C0 +-static const Vtx cake_end_vertex_07026080[] = { +- {{{ 160, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x070260C0 - 0x07026100 +-static const Vtx cake_end_vertex_070260C0[] = { +- {{{ 240, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026100 - 0x07026140 +-static const Vtx cake_end_vertex_07026100[] = { +- {{{ 0, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026140 - 0x07026180 +-static const Vtx cake_end_vertex_07026140[] = { +- {{{ 80, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026180 - 0x070261C0 +-static const Vtx cake_end_vertex_07026180[] = { +- {{{ 160, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x070261C0 - 0x07026200 +-static const Vtx cake_end_vertex_070261C0[] = { +- {{{ 240, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026200 - 0x07026240 +-static const Vtx cake_end_vertex_07026200[] = { +- {{{ 0, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026240 - 0x07026280 +-static const Vtx cake_end_vertex_07026240[] = { +- {{{ 80, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026280 - 0x070262C0 +-static const Vtx cake_end_vertex_07026280[] = { +- {{{ 160, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x070262C0 - 0x07026300 +-static const Vtx cake_end_vertex_070262C0[] = { +- {{{ 240, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026300 - 0x07026340 +-static const Vtx cake_end_vertex_07026300[] = { +- {{{ 0, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 0, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026340 - 0x07026380 +-static const Vtx cake_end_vertex_07026340[] = { +- {{{ 80, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 80, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x07026380 - 0x070263C0 +-static const Vtx cake_end_vertex_07026380[] = { +- {{{ 160, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 160, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; +- +-// 0x070263C0 - 0x07026400 +-static const Vtx cake_end_vertex_070263C0[] = { +- {{{ 240, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 320, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, +- {{{ 240, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +-}; ++#define NUM_CAKE_TEXTURES 40 ++#define NUM_CAKE_TEXTURES_X 5 ++#define NUM_CAKE_TEXTURES_Y (NUM_CAKE_TEXTURES / NUM_CAKE_TEXTURES_X) ++#define CAKE_TEX_WIDTH (320 / NUM_CAKE_TEXTURES_X) ++#define CAKE_TEX_HEIGHT (240 / NUM_CAKE_TEXTURES_Y) ++ ++#define MAKE_RECT_VERTICES(i, startX, startY, dx, dy, starts, startt) \ ++ {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + 0), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + 0), -1}, 0, {(starts + 0) << 5, (startt + 0) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ ++ {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + dx), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + 0), -1}, 0, {(starts + dx) << 5, (startt + 0) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ ++ {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + 0), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + dy), -1}, 0, {(starts + 0) << 5, (startt + dy) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ ++ {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + dx), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + dy), -1}, 0, {(starts + dx) << 5, (startt + dy) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}} ++ ++#define MAKE_TEXT_VERTICES(i) \ ++ MAKE_RECT_VERTICES(i, 0, 0, CAKE_TEX_WIDTH - 1, CAKE_TEX_HEIGHT - 1, 0, 0) ++ ++#define MAKE_ROW_VERTICES(row) \ ++ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 0), \ ++ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 1), \ ++ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 2), \ ++ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 3), \ ++ MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 4) ++ ++const Vtx cake_verts[] = { ++ MAKE_ROW_VERTICES(0), ++ MAKE_ROW_VERTICES(1), ++ MAKE_ROW_VERTICES(2), ++ MAKE_ROW_VERTICES(3), ++ MAKE_ROW_VERTICES(4), ++ MAKE_ROW_VERTICES(5), ++ MAKE_ROW_VERTICES(6), ++ MAKE_ROW_VERTICES(7), ++}; ++ ++#define LOAD_CAKE_TEXTURE(i) \ ++ gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_data + (CAKE_TEX_WIDTH * CAKE_TEX_HEIGHT * 2 * (i))), \ ++ gsDPLoadSync(), \ ++ gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ ++ (((CAKE_TEX_WIDTH)*(CAKE_TEX_HEIGHT) + G_IM_SIZ_16b_INCR) >> G_IM_SIZ_16b_SHIFT)-1, \ ++ CALC_DXT(CAKE_TEX_WIDTH, G_IM_SIZ_16b_BYTES)) ++ ++#define LOAD_CAKE_VERTICES(i) \ ++ gsSPVertex(cake_verts + 4 * (i), 4, 0) ++ ++#define CAKE_TRIS(i) \ ++ LOAD_CAKE_TEXTURE(i), \ ++ gsSP2Triangles(0, 2, 1, 0x0, 1, 2, 3, 0x0) ++ ++#define CAKE_RECT(i) \ ++ LOAD_CAKE_VERTICES(i), \ ++ CAKE_TRIS(i) \ ++ ++#define CAKE_ROW(row) \ ++ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 0),\ ++ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 1),\ ++ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 2),\ ++ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 3),\ ++ CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 4) + + // 0x07026400 - 0x07027350 + const Gfx dl_cake_end_screen[] = { +@@ -640,198 +314,27 @@ const Gfx dl_cake_end_screen[] = { + 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), ++ ++ gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, ++ G_TX_LOADTILE, 0, ++ G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, ++ G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD), ++ gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, (((CAKE_TEX_WIDTH * G_IM_SIZ_16b_LINE_BYTES)+7)>>3), 0, ++ G_TX_RENDERTILE, 0, ++ G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, ++ G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD), ++ gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, ++ (CAKE_TEX_WIDTH - 1) << G_TEXTURE_IMAGE_FRAC, ++ (CAKE_TEX_HEIGHT - 1) << G_TEXTURE_IMAGE_FRAC), ++ ++ CAKE_ROW(0), ++ CAKE_ROW(1), ++ CAKE_ROW(2), ++ CAKE_ROW(3), ++ CAKE_ROW(4), ++ CAKE_ROW(5), ++ CAKE_ROW(6), ++ CAKE_ROW(7), + + gsDPPipeSync(), + gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), +diff --git a/tools/skyconv.c b/tools/skyconv.c +index b515373..1fdf027 100644 +--- a/tools/skyconv.c ++++ b/tools/skyconv.c +@@ -47,8 +47,8 @@ static const ImageProps IMAGE_PROPERTIES[ImageType_MAX][2] = { + {256, 256, 32, 32, 8, 8, true, true}, + }, + [Cake] = { +- {316, 228, 79, 19, 4, 12, false, false}, +- {320, 240, 80, 20, 4, 12, false, false}, ++ {316, 228, 63, 29, 5, 8, false, false}, ++ {320, 240, 64, 30, 5, 8, false, false}, + }, + [CakeEU] = { + {320, 224, 64, 32, 5, 7, false, false}, +@@ -62,7 +62,7 @@ typedef struct { + + static const TableDimension TABLE_DIMENSIONS[ImageType_MAX] = { + [Skybox] = {8, 10}, +- [Cake] = {4, 12}, ++ [Cake] = {5, 8}, + [CakeEU] = {5, 7}, + }; + +@@ -104,15 +104,26 @@ static void split_tile(int col, int row, rgba *image, bool expanded) { + int tileWidth = props.tileWidth; + int tileHeight = props.tileHeight; + int imageWidth = props.imageWidth; ++ int imageHeight = props.imageHeight; + int numCols = props.numCols; + + int expandedWidth = IMAGE_PROPERTIES[type][true].tileWidth; + ++ rgba black = {0, 0, 0, 0}; ++ + for (int y = 0; y < tileHeight; y++) { + for (int x = 0; x < tileWidth; x++) { + int ny = row * tileHeight + y; + int nx = col * tileWidth + x; +- tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; ++ if (nx < imageWidth && ny < imageHeight) ++ { ++ tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; ++ } ++ else ++ { ++ tiles[row * numCols + col].px[y * expandedWidth + x] = black; ++ } ++ + } + } + } +@@ -339,11 +350,12 @@ static void write_cake_c() { + } + + int numTiles = TABLE_DIMENSIONS[type].cols * TABLE_DIMENSIONS[type].rows; ++ fprintf(cFile, "ALIGNED8 static const u8 cake_end_texture_%sdata[] = {\n", euSuffx); + for (int i = 0; i < numTiles; ++i) { +- fprintf(cFile, "ALIGNED8 static const u8 cake_end_texture_%s%d[] = {\n", euSuffx, i); + print_raw_data(cFile, &tiles[i]); +- fputs("};\n\n", cFile); ++ fputc('\n', cFile); + } ++ fputs("};\n\n", cFile); + fclose(cFile); + } + diff --git a/include/config.h b/include/config.h index 8551a8ae0..2bc91a07f 100644 --- a/include/config.h +++ b/include/config.h @@ -30,6 +30,8 @@ #define BUGFIX_BOWSER_FALLEN_OFF_STAGE (0 || VERSION_US || VERSION_EU || VERSION_SH) /// Fixes bug where Bowser would look weird while fading out #define BUGFIX_BOWSER_FADING_OUT (0 || VERSION_US || VERSION_EU || VERSION_SH) +/// Removes multi-language cake screen +#define EU_CUSTOM_CAKE_FIX 1 // Support Rumble Pak #define ENABLE_RUMBLE (1 || VERSION_SH) diff --git a/levels/ending/geo.c b/levels/ending/geo.c index 867bebb56..b8e2711ad 100644 --- a/levels/ending/geo.c +++ b/levels/ending/geo.c @@ -21,9 +21,7 @@ const GeoLayout ending_geo_000050[] = { GEO_OPEN_NODE(), GEO_NODE_ORTHO(100), GEO_OPEN_NODE(), -#ifdef VERSION_EU GEO_BACKGROUND_COLOR(0x0001), -#endif GEO_ASM(0, geo_exec_cake_end_screen), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(), diff --git a/levels/ending/header.h b/levels/ending/header.h index 2bf34c029..30bee900d 100644 --- a/levels/ending/header.h +++ b/levels/ending/header.h @@ -8,9 +8,13 @@ extern const GeoLayout ending_geo_000050[]; // leveldata extern const Gfx dl_cake_end_screen[]; +#ifndef EU_CUSTOM_CAKE_FIX 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[]; +#else +extern const Gfx dl_cake_end_screen_eu_fix[]; +#endif extern const Gfx dl_cake_end_screen[]; // script diff --git a/levels/ending/leveldata.c b/levels/ending/leveldata.c index 94b938726..84b953f4d 100644 --- a/levels/ending/leveldata.c +++ b/levels/ending/leveldata.c @@ -200,6 +200,7 @@ static const Gfx dl_cake_end_eu_070296D8[] = { gsSPEndDisplayList(), }; +#ifndef EU_CUSTOM_CAKE_FIX // 0x070296F8 - 0x07029768 const Gfx dl_cake_end_screen_eu_070296F8[] = { gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_38), @@ -242,394 +243,75 @@ const Gfx dl_cake_end_screen_eu_070297D8[] = { gsSPEndDisplayList(), }; +#else +const Gfx dl_cake_end_screen_eu_fix[] = { + gsSPDisplayList(dl_cake_end_eu_070296D8), + gsSPEndDisplayList(), +}; +#endif + // VERSION_EU #else #include "levels/ending/cake.inc.c" -// 0x07025800 - 0x07025840 -static const Vtx cake_end_vertex_07025800[] = { - {{{ 0, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +#define NUM_CAKE_TEXTURES 40 +#define NUM_CAKE_TEXTURES_X 5 +#define NUM_CAKE_TEXTURES_Y (NUM_CAKE_TEXTURES / NUM_CAKE_TEXTURES_X) +#define CAKE_TEX_WIDTH (320 / NUM_CAKE_TEXTURES_X) +#define CAKE_TEX_HEIGHT (240 / NUM_CAKE_TEXTURES_Y) + +#define MAKE_RECT_VERTICES(i, startX, startY, dx, dy, starts, startt) \ + {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + 0), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + 0), -1}, 0, {(starts + 0) << 5, (startt + 0) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ + {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + dx), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + 0), -1}, 0, {(starts + dx) << 5, (startt + 0) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ + {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + 0), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + dy), -1}, 0, {(starts + 0) << 5, (startt + dy) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}},\ + {{{2 + (((i) % NUM_CAKE_TEXTURES_X) * (CAKE_TEX_WIDTH - 1) + startX + dx), 240 - 6 - (((i) / NUM_CAKE_TEXTURES_X) * (CAKE_TEX_HEIGHT - 1) + startY + dy), -1}, 0, {(starts + dx) << 5, (startt + dy) << 5}, {0xFF, 0xFF, 0xFF, 0xFF}}} + +#define MAKE_TEXT_VERTICES(i) \ + MAKE_RECT_VERTICES(i, 0, 0, CAKE_TEX_WIDTH - 1, CAKE_TEX_HEIGHT - 1, 0, 0) + +#define MAKE_ROW_VERTICES(row) \ + MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 0), \ + MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 1), \ + MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 2), \ + MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 3), \ + MAKE_TEXT_VERTICES(row * NUM_CAKE_TEXTURES_X + 4) + +const Vtx cake_verts[] = { + MAKE_ROW_VERTICES(0), + MAKE_ROW_VERTICES(1), + MAKE_ROW_VERTICES(2), + MAKE_ROW_VERTICES(3), + MAKE_ROW_VERTICES(4), + MAKE_ROW_VERTICES(5), + MAKE_ROW_VERTICES(6), + MAKE_ROW_VERTICES(7), }; -// 0x07025840 - 0x07025880 -static const Vtx cake_end_vertex_07025840[] = { - {{{ 80, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; +#define LOAD_CAKE_TEXTURE(i) \ + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_data + (CAKE_TEX_WIDTH * CAKE_TEX_HEIGHT * 2 * (i))), \ + gsDPLoadSync(), \ + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, \ + (((CAKE_TEX_WIDTH)*(CAKE_TEX_HEIGHT) + G_IM_SIZ_16b_INCR) >> G_IM_SIZ_16b_SHIFT)-1, \ + CALC_DXT(CAKE_TEX_WIDTH, G_IM_SIZ_16b_BYTES)) -// 0x07025880 - 0x070258C0 -static const Vtx cake_end_vertex_07025880[] = { - {{{ 160, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; +#define LOAD_CAKE_VERTICES(i) \ + gsSPVertex(cake_verts + 4 * (i), 4, 0) -// 0x070258C0 - 0x07025900 -static const Vtx cake_end_vertex_070258C0[] = { - {{{ 240, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; +#define CAKE_TRIS(i) \ + LOAD_CAKE_TEXTURE(i), \ + gsSP2Triangles(0, 2, 1, 0x0, 1, 2, 3, 0x0) -// 0x07025900 - 0x07025940 -static const Vtx cake_end_vertex_07025900[] = { - {{{ 0, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; +#define CAKE_RECT(i) \ + LOAD_CAKE_VERTICES(i), \ + CAKE_TRIS(i) \ -// 0x07025940 - 0x07025980 -static const Vtx cake_end_vertex_07025940[] = { - {{{ 80, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025980 - 0x070259C0 -static const Vtx cake_end_vertex_07025980[] = { - {{{ 160, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070259C0 - 0x07025A00 -static const Vtx cake_end_vertex_070259C0[] = { - {{{ 240, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A00 - 0x07025A40 -static const Vtx cake_end_vertex_07025A00[] = { - {{{ 0, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A40 - 0x07025A80 -static const Vtx cake_end_vertex_07025A40[] = { - {{{ 80, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A80 - 0x07025AC0 -static const Vtx cake_end_vertex_07025A80[] = { - {{{ 160, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025AC0 - 0x07025B00 -static const Vtx cake_end_vertex_07025AC0[] = { - {{{ 240, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B00 - 0x07025B40 -static const Vtx cake_end_vertex_07025B00[] = { - {{{ 0, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B40 - 0x07025B80 -static const Vtx cake_end_vertex_07025B40[] = { - {{{ 80, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B80 - 0x07025BC0 -static const Vtx cake_end_vertex_07025B80[] = { - {{{ 160, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025BC0 - 0x07025C00 -static const Vtx cake_end_vertex_07025BC0[] = { - {{{ 240, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C00 - 0x07025C40 -static const Vtx cake_end_vertex_07025C00[] = { - {{{ 0, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C40 - 0x07025C80 -static const Vtx cake_end_vertex_07025C40[] = { - {{{ 80, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C80 - 0x07025CC0 -static const Vtx cake_end_vertex_07025C80[] = { - {{{ 160, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025CC0 - 0x07025D00 -static const Vtx cake_end_vertex_07025CC0[] = { - {{{ 240, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D00 - 0x07025D40 -static const Vtx cake_end_vertex_07025D00[] = { - {{{ 0, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D40 - 0x07025D80 -static const Vtx cake_end_vertex_07025D40[] = { - {{{ 80, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D80 - 0x07025DC0 -static const Vtx cake_end_vertex_07025D80[] = { - {{{ 160, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025DC0 - 0x07025E00 -static const Vtx cake_end_vertex_07025DC0[] = { - {{{ 240, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E00 - 0x07025E40 -static const Vtx cake_end_vertex_07025E00[] = { - {{{ 0, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E40 - 0x07025E80 -static const Vtx cake_end_vertex_07025E40[] = { - {{{ 80, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E80 - 0x07025EC0 -static const Vtx cake_end_vertex_07025E80[] = { - {{{ 160, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025EC0 - 0x07025F00 -static const Vtx cake_end_vertex_07025EC0[] = { - {{{ 240, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F00 - 0x07025F40 -static const Vtx cake_end_vertex_07025F00[] = { - {{{ 0, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F40 - 0x07025F80 -static const Vtx cake_end_vertex_07025F40[] = { - {{{ 80, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F80 - 0x07025FC0 -static const Vtx cake_end_vertex_07025F80[] = { - {{{ 160, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025FC0 - 0x07026000 -static const Vtx cake_end_vertex_07025FC0[] = { - {{{ 240, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026000 - 0x07026040 -static const Vtx cake_end_vertex_07026000[] = { - {{{ 0, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026040 - 0x07026080 -static const Vtx cake_end_vertex_07026040[] = { - {{{ 80, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026080 - 0x070260C0 -static const Vtx cake_end_vertex_07026080[] = { - {{{ 160, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070260C0 - 0x07026100 -static const Vtx cake_end_vertex_070260C0[] = { - {{{ 240, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026100 - 0x07026140 -static const Vtx cake_end_vertex_07026100[] = { - {{{ 0, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026140 - 0x07026180 -static const Vtx cake_end_vertex_07026140[] = { - {{{ 80, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026180 - 0x070261C0 -static const Vtx cake_end_vertex_07026180[] = { - {{{ 160, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070261C0 - 0x07026200 -static const Vtx cake_end_vertex_070261C0[] = { - {{{ 240, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026200 - 0x07026240 -static const Vtx cake_end_vertex_07026200[] = { - {{{ 0, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026240 - 0x07026280 -static const Vtx cake_end_vertex_07026240[] = { - {{{ 80, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026280 - 0x070262C0 -static const Vtx cake_end_vertex_07026280[] = { - {{{ 160, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070262C0 - 0x07026300 -static const Vtx cake_end_vertex_070262C0[] = { - {{{ 240, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026300 - 0x07026340 -static const Vtx cake_end_vertex_07026300[] = { - {{{ 0, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026340 - 0x07026380 -static const Vtx cake_end_vertex_07026340[] = { - {{{ 80, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026380 - 0x070263C0 -static const Vtx cake_end_vertex_07026380[] = { - {{{ 160, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070263C0 - 0x07026400 -static const Vtx cake_end_vertex_070263C0[] = { - {{{ 240, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; +#define CAKE_ROW(row) \ + CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 0),\ + CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 1),\ + CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 2),\ + CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 3),\ + CAKE_RECT((row) * NUM_CAKE_TEXTURES_X + 4) // 0x07026400 - 0x07027350 const Gfx dl_cake_end_screen[] = { @@ -637,198 +319,27 @@ const Gfx dl_cake_end_screen[] = { 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), + + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b_LOAD_BLOCK, 0, 0, + G_TX_LOADTILE, 0, + G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, + G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, (((CAKE_TEX_WIDTH * G_IM_SIZ_16b_LINE_BYTES)+7)>>3), 0, + G_TX_RENDERTILE, 0, + G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD, + G_TX_CLAMP, G_TX_NOMASK, G_TX_NOLOD), + gsDPSetTileSize(G_TX_RENDERTILE, 0, 0, + (CAKE_TEX_WIDTH - 1) << G_TEXTURE_IMAGE_FRAC, + (CAKE_TEX_HEIGHT - 1) << G_TEXTURE_IMAGE_FRAC), - 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), + CAKE_ROW(0), + CAKE_ROW(1), + CAKE_ROW(2), + CAKE_ROW(3), + CAKE_ROW(4), + CAKE_ROW(5), + CAKE_ROW(6), + CAKE_ROW(7), gsDPPipeSync(), gsSPTexture(0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF), diff --git a/levels/ending/leveldata.c.orig b/levels/ending/leveldata.c.orig new file mode 100644 index 000000000..94b938726 --- /dev/null +++ b/levels/ending/leveldata.c.orig @@ -0,0 +1,840 @@ +#include +#include + +#include "macros.h" +#include "types.h" + +#include "make_const_nonconst.h" + +#ifdef VERSION_EU +#include "levels/ending/cake_eu.inc.c" + +// 0x07023000 - 0x07023FFF +ALIGNED8 static const Texture cake_end_texture_eu_35[] = { +#include "levels/ending/eu_023000.rgba16.inc.c" +}; + +// 0x07024000 - 0x07024FFF +ALIGNED8 static const Texture cake_end_texture_eu_36[] = { +#include "levels/ending/eu_024000.rgba16.inc.c" +}; + +// 0x07025000 - 0x07025FFF +ALIGNED8 static const Texture cake_end_texture_eu_37[] = { +#include "levels/ending/eu_025000.rgba16.inc.c" +}; + +// 0x07026000 - 0x07026FFF +ALIGNED8 static const Texture cake_end_texture_eu_38[] = { +#include "levels/ending/eu_026000.rgba16.inc.c" +}; + +// 0x07027000 - 0x07027FFF +ALIGNED8 static const Texture cake_end_texture_eu_39[] = { +#include "levels/ending/eu_027000.rgba16.inc.c" +}; + +// 0x07028000 - 0x07028FFF +ALIGNED8 static const Texture cake_end_texture_eu_40[] = { +#include "levels/ending/eu_028000.rgba16.inc.c" +}; + +// 0x07029000 - 0x070296D8 +const Gfx dl_cake_end_screen[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_COPY), + gsDPSetTexturePersp(G_TP_NONE), + gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), + gsDPTileSync(), + gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD), + gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_0), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(0 << 2, 8 << 2, (0 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_1), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(64 << 2, 8 << 2, (64 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_2), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 8 << 2, (128 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_3), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(192 << 2, 8 << 2, (192 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_4), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(256 << 2, 8 << 2, (256 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_5), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(0 << 2, 40 << 2, (0 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_6), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(64 << 2, 40 << 2, (64 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_7), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 40 << 2, (128 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_8), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(192 << 2, 40 << 2, (192 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_9), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(256 << 2, 40 << 2, (256 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_10), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(0 << 2, 72 << 2, (0 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_11), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(64 << 2, 72 << 2, (64 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_12), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 72 << 2, (128 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_13), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(192 << 2, 72 << 2, (192 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_14), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(256 << 2, 72 << 2, (256 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_15), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(0 << 2, 104 << 2, (0 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_16), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(64 << 2, 104 << 2, (64 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_17), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 104 << 2, (128 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_18), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(192 << 2, 104 << 2, (192 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_19), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(256 << 2, 104 << 2, (256 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_20), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(0 << 2, 136 << 2, (0 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_21), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(64 << 2, 136 << 2, (64 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_22), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 136 << 2, (128 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_23), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(192 << 2, 136 << 2, (192 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_24), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(256 << 2, 136 << 2, (256 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_25), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(0 << 2, 168 << 2, (0 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_26), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(64 << 2, 168 << 2, (64 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_27), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 168 << 2, (128 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_28), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(192 << 2, 168 << 2, (192 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_29), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(256 << 2, 168 << 2, (256 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_30), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(0 << 2, 200 << 2, (0 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_31), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(64 << 2, 200 << 2, (64 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_32), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_33), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(192 << 2, 200 << 2, (192 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_34), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(256 << 2, 200 << 2, (256 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsSPEndDisplayList(), +}; + +// 0x070296D8 - 0x070296F8 +static const Gfx dl_cake_end_eu_070296D8[] = { + gsDPPipeSync(), + gsDPSetCycleType(G_CYC_1CYCLE), + gsDPSetTexturePersp(G_TP_PERSP), + gsSPEndDisplayList(), +}; + +// 0x070296F8 - 0x07029768 +const Gfx dl_cake_end_screen_eu_070296F8[] = { + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_38), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_35), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsSPDisplayList(dl_cake_end_eu_070296D8), + gsSPEndDisplayList(), +}; + +// 0x07029768 - 0x070297D8 +const Gfx dl_cake_end_screen_eu_07029768[] = { + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_39), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_36), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsSPDisplayList(dl_cake_end_eu_070296D8), + gsSPEndDisplayList(), +}; + +// 0x070297D8 - 0x07029848 +const Gfx dl_cake_end_screen_eu_070297D8[] = { + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_40), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_37), + gsDPLoadSync(), + gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), + gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), + gsSPDisplayList(dl_cake_end_eu_070296D8), + gsSPEndDisplayList(), +}; + +// VERSION_EU +#else + +#include "levels/ending/cake.inc.c" + +// 0x07025800 - 0x07025840 +static const Vtx cake_end_vertex_07025800[] = { + {{{ 0, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025840 - 0x07025880 +static const Vtx cake_end_vertex_07025840[] = { + {{{ 80, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025880 - 0x070258C0 +static const Vtx cake_end_vertex_07025880[] = { + {{{ 160, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070258C0 - 0x07025900 +static const Vtx cake_end_vertex_070258C0[] = { + {{{ 240, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025900 - 0x07025940 +static const Vtx cake_end_vertex_07025900[] = { + {{{ 0, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025940 - 0x07025980 +static const Vtx cake_end_vertex_07025940[] = { + {{{ 80, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025980 - 0x070259C0 +static const Vtx cake_end_vertex_07025980[] = { + {{{ 160, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070259C0 - 0x07025A00 +static const Vtx cake_end_vertex_070259C0[] = { + {{{ 240, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025A00 - 0x07025A40 +static const Vtx cake_end_vertex_07025A00[] = { + {{{ 0, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025A40 - 0x07025A80 +static const Vtx cake_end_vertex_07025A40[] = { + {{{ 80, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025A80 - 0x07025AC0 +static const Vtx cake_end_vertex_07025A80[] = { + {{{ 160, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025AC0 - 0x07025B00 +static const Vtx cake_end_vertex_07025AC0[] = { + {{{ 240, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025B00 - 0x07025B40 +static const Vtx cake_end_vertex_07025B00[] = { + {{{ 0, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025B40 - 0x07025B80 +static const Vtx cake_end_vertex_07025B40[] = { + {{{ 80, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025B80 - 0x07025BC0 +static const Vtx cake_end_vertex_07025B80[] = { + {{{ 160, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025BC0 - 0x07025C00 +static const Vtx cake_end_vertex_07025BC0[] = { + {{{ 240, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025C00 - 0x07025C40 +static const Vtx cake_end_vertex_07025C00[] = { + {{{ 0, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025C40 - 0x07025C80 +static const Vtx cake_end_vertex_07025C40[] = { + {{{ 80, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025C80 - 0x07025CC0 +static const Vtx cake_end_vertex_07025C80[] = { + {{{ 160, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025CC0 - 0x07025D00 +static const Vtx cake_end_vertex_07025CC0[] = { + {{{ 240, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025D00 - 0x07025D40 +static const Vtx cake_end_vertex_07025D00[] = { + {{{ 0, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025D40 - 0x07025D80 +static const Vtx cake_end_vertex_07025D40[] = { + {{{ 80, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025D80 - 0x07025DC0 +static const Vtx cake_end_vertex_07025D80[] = { + {{{ 160, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025DC0 - 0x07025E00 +static const Vtx cake_end_vertex_07025DC0[] = { + {{{ 240, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025E00 - 0x07025E40 +static const Vtx cake_end_vertex_07025E00[] = { + {{{ 0, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025E40 - 0x07025E80 +static const Vtx cake_end_vertex_07025E40[] = { + {{{ 80, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025E80 - 0x07025EC0 +static const Vtx cake_end_vertex_07025E80[] = { + {{{ 160, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025EC0 - 0x07025F00 +static const Vtx cake_end_vertex_07025EC0[] = { + {{{ 240, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025F00 - 0x07025F40 +static const Vtx cake_end_vertex_07025F00[] = { + {{{ 0, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025F40 - 0x07025F80 +static const Vtx cake_end_vertex_07025F40[] = { + {{{ 80, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025F80 - 0x07025FC0 +static const Vtx cake_end_vertex_07025F80[] = { + {{{ 160, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07025FC0 - 0x07026000 +static const Vtx cake_end_vertex_07025FC0[] = { + {{{ 240, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026000 - 0x07026040 +static const Vtx cake_end_vertex_07026000[] = { + {{{ 0, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026040 - 0x07026080 +static const Vtx cake_end_vertex_07026040[] = { + {{{ 80, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026080 - 0x070260C0 +static const Vtx cake_end_vertex_07026080[] = { + {{{ 160, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070260C0 - 0x07026100 +static const Vtx cake_end_vertex_070260C0[] = { + {{{ 240, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026100 - 0x07026140 +static const Vtx cake_end_vertex_07026100[] = { + {{{ 0, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026140 - 0x07026180 +static const Vtx cake_end_vertex_07026140[] = { + {{{ 80, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026180 - 0x070261C0 +static const Vtx cake_end_vertex_07026180[] = { + {{{ 160, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070261C0 - 0x07026200 +static const Vtx cake_end_vertex_070261C0[] = { + {{{ 240, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026200 - 0x07026240 +static const Vtx cake_end_vertex_07026200[] = { + {{{ 0, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026240 - 0x07026280 +static const Vtx cake_end_vertex_07026240[] = { + {{{ 80, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026280 - 0x070262C0 +static const Vtx cake_end_vertex_07026280[] = { + {{{ 160, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070262C0 - 0x07026300 +static const Vtx cake_end_vertex_070262C0[] = { + {{{ 240, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026300 - 0x07026340 +static const Vtx cake_end_vertex_07026300[] = { + {{{ 0, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 0, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026340 - 0x07026380 +static const Vtx cake_end_vertex_07026340[] = { + {{{ 80, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 80, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x07026380 - 0x070263C0 +static const Vtx cake_end_vertex_07026380[] = { + {{{ 160, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 240, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 160, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, +}; + +// 0x070263C0 - 0x07026400 +static const Vtx cake_end_vertex_070263C0[] = { + {{{ 240, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 320, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, + {{{ 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(), +}; +#endif diff --git a/src/game/geo_misc.c b/src/game/geo_misc.c index 2fb8c5efa..61d7a8c02 100644 --- a/src/game/geo_misc.c +++ b/src/game/geo_misc.c @@ -209,7 +209,10 @@ Gfx *geo_exec_cake_end_screen(s32 callContext, struct GraphNode *node, UNUSED f3 gSPDisplayList(displayListHead++, dl_proj_mtx_fullscreen); #endif #ifdef VERSION_EU - switch (eu_get_language()) { +#ifdef EU_CUSTOM_CAKE_FIX + gSPDisplayList(displayListHead++, dl_cake_end_screen_eu_fix); +#else + switch (eu_get_language()) { case LANGUAGE_ENGLISH: gSPDisplayList(displayListHead++, dl_cake_end_screen_eu_070296F8); break; @@ -220,6 +223,7 @@ Gfx *geo_exec_cake_end_screen(s32 callContext, struct GraphNode *node, UNUSED f3 gSPDisplayList(displayListHead++, dl_cake_end_screen_eu_070297D8); break; } +#endif #else gSPDisplayList(displayListHead++, dl_cake_end_screen); #endif diff --git a/tools/skyconv.c b/tools/skyconv.c index 79d6f0411..f4b894ec8 100644 --- a/tools/skyconv.c +++ b/tools/skyconv.c @@ -49,8 +49,8 @@ static const ImageProps IMAGE_PROPERTIES[ImageType_MAX][2] = { {256, 256, 32, 32, 8, 8, true, true}, }, [Cake] = { - {316, 228, 79, 19, 4, 12, false, false}, - {320, 240, 80, 20, 4, 12, false, false}, + {316, 228, 63, 29, 5, 8, false, false}, + {320, 240, 64, 30, 5, 8, false, false}, }, [CakeEU] = { {320, 224, 64, 32, 5, 7, false, false}, @@ -64,7 +64,7 @@ typedef struct { static const TableDimension TABLE_DIMENSIONS[ImageType_MAX] = { [Skybox] = {8, 10}, - [Cake] = {4, 12}, + [Cake] = {5, 8}, [CakeEU] = {5, 7}, }; @@ -106,15 +106,29 @@ static void split_tile(int col, int row, rgba *image, bool expanded) { int tileWidth = props.tileWidth; int tileHeight = props.tileHeight; int imageWidth = props.imageWidth; + int imageHeight = props.imageHeight; int numCols = props.numCols; int expandedWidth = IMAGE_PROPERTIES[type][true].tileWidth; + rgba black = {0, 0, 0, 0}; + for (int y = 0; y < tileHeight; y++) { for (int x = 0; x < tileWidth; x++) { int ny = row * tileHeight + y; int nx = col * tileWidth + x; - tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; + if(type == CakeEU) { + tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; + } else { + if (nx < imageWidth && ny < imageHeight) + { + tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; + } + else + { + tiles[row * numCols + col].px[y * expandedWidth + x] = black; + } + } } } } @@ -333,17 +347,24 @@ static void write_cake_c() { FILE *cFile = fopen(buffer, "w"); - const char *euSuffx = ""; - if (type == CakeEU) { - euSuffx = "eu_"; - } - int numTiles = TABLE_DIMENSIONS[type].cols * TABLE_DIMENSIONS[type].rows; - for (int i = 0; i < numTiles; ++i) { - fprintf(cFile, "ALIGNED8 static const Texture cake_end_texture_%s%d[] = {\n", euSuffx, i); - print_raw_data(cFile, &tiles[i]); + + if (type == CakeEU) { + for (int i = 0; i < numTiles; ++i) { + fprintf(cFile, "ALIGNED8 static const Texture cake_end_texture_eu_%d[] = {\n", i); + print_raw_data(cFile, &tiles[i]); + fputs("};\n\n", cFile); + } + } else { + fprintf(cFile, "ALIGNED8 static const u8 cake_end_texture_data[] = {\n"); + for (int i = 0; i < numTiles; ++i) { + print_raw_data(cFile, &tiles[i]); + fputc(',', cFile); + fputc('\n', cFile); + } fputs("};\n\n", cFile); } + fclose(cFile); } @@ -654,4 +675,4 @@ int main(int argc, char *argv[]) { return EXIT_SUCCESS; -} +} \ No newline at end of file diff --git a/tools/skyconv.c.orig b/tools/skyconv.c.orig new file mode 100644 index 000000000..79d6f0411 --- /dev/null +++ b/tools/skyconv.c.orig @@ -0,0 +1,657 @@ +/* skybox generator */ + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include + +#include "n64graphics.h" +#include "utils.h" + +#define SKYCONV_ENCODING ENCODING_U8 + +typedef struct { + rgba *px; + bool useless; + unsigned int pos; +} TextureTile; + +typedef enum { + InvalidType = -1, + Skybox, + Cake, + CakeEU, + ImageType_MAX +} ImageType; + +typedef enum { + InvalidMode = -1, + Combine, + Split +} OperationMode; + +typedef struct { + int imageWidth, imageHeight; + int tileWidth, tileHeight; + int numCols, numRows; + bool wrapX; + bool optimizePositions; +} ImageProps; + +static const ImageProps IMAGE_PROPERTIES[ImageType_MAX][2] = { + [Skybox] = { + {248, 248, 31, 31, 8, 8, true, true}, + {256, 256, 32, 32, 8, 8, true, true}, + }, + [Cake] = { + {316, 228, 79, 19, 4, 12, false, false}, + {320, 240, 80, 20, 4, 12, false, false}, + }, + [CakeEU] = { + {320, 224, 64, 32, 5, 7, false, false}, + {320, 224, 64, 32, 5, 7, false, false}, + }, +}; + +typedef struct { + int cols, rows; +} TableDimension; + +static const TableDimension TABLE_DIMENSIONS[ImageType_MAX] = { + [Skybox] = {8, 10}, + [Cake] = {4, 12}, + [CakeEU] = {5, 7}, +}; + +TextureTile *tiles; +ImageType type = InvalidType; +OperationMode mode = InvalidMode; +char *programName; +char *input, *output; +char *writeDir; +char skyboxName[256]; +bool expanded = false; +bool writeTiles; + +static void allocate_tiles() { + const ImageProps props = IMAGE_PROPERTIES[type][true]; + int tileWidth = props.tileWidth; + int tileHeight = props.tileHeight; + int numRows = props.numRows; + int numCols = props.numCols; + + int tileSize = tileWidth * tileHeight * sizeof(rgba); + int totalSize = numRows * numCols * tileSize; + tiles = calloc(1, numRows * numCols * sizeof(TextureTile)); + rgba *tileData = calloc(1, totalSize); + for (int row = 0; row < numRows; ++row) { + for (int col = 0; col < numCols; ++col) { + tiles[row * numCols + col].px = (tileData + (row * numCols + col) * (tileWidth * tileHeight)); + } + } +} + +static void free_tiles() { + free(tiles->px); + free(tiles); +} + +static void split_tile(int col, int row, rgba *image, bool expanded) { + const ImageProps props = IMAGE_PROPERTIES[type][expanded]; + int tileWidth = props.tileWidth; + int tileHeight = props.tileHeight; + int imageWidth = props.imageWidth; + int numCols = props.numCols; + + int expandedWidth = IMAGE_PROPERTIES[type][true].tileWidth; + + for (int y = 0; y < tileHeight; y++) { + for (int x = 0; x < tileWidth; x++) { + int ny = row * tileHeight + y; + int nx = col * tileWidth + x; + tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; + } + } +} + +static void expand_tiles(ImageType imageType) { + const ImageProps props = IMAGE_PROPERTIES[imageType][true]; + int numRows = props.numRows; + int numCols = props.numCols; + int tileWidth = props.tileWidth; + int tileHeight = props.tileHeight; + + // If the image type wraps, + // Copy each tile's left edge to the previous tile's right edge + // Each tile's height is still tileHeight - 1 + if (props.wrapX) { + for (int row = 0; row < numRows; ++row) { + for (int col = 0; col < numCols; ++col) { + int nextCol = (col + 1) % numCols; + for (int y = 0; y < (tileHeight - 1); ++y) { + tiles[row * numCols + col].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + nextCol].px[y * tileWidth]; + } + } + } + } else { + // Don't wrap, copy the second to last column instead. + for (int row = 0; row < numRows; ++row) { + for (int col = 0; col < numCols - 1; ++col) { + int nextCol = (col + 1) % numCols; + for (int y = 0; y < (tileHeight - 1); ++y) { + tiles[row * numCols + col].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + nextCol].px[y * tileWidth]; + } + } + for (int y = 0; y < (tileHeight - 1); ++y) { + tiles[row * numCols + (numCols - 1)].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + (numCols - 1)].px[(tileWidth - 2) + y * tileWidth]; + } + + } + } + + // Copy each tile's top edge to the previous tile's bottom edge, EXCEPT for the bottom row, which + // just duplicates its second-to-last row + for (int row = 0; row < numRows; ++row) { + if (row < numRows - 1) { + for (int col = 0; col < numCols; ++col) { + int nextRow = (row + 1) % numRows; + for (int x = 0; x < tileWidth; ++x) { + tiles[row * numCols + col].px[x + (tileHeight - 1) * tileWidth] = tiles[nextRow * numCols + col].px[x]; + } + } + } + // For the last row of tiles, duplicate each one's second to last row + else { + for (int col = 0; col < numCols; ++col) { + for (int x = 0; x < tileWidth; ++x) { + tiles[row * numCols + col].px[x + (tileHeight - 1) * tileWidth] = tiles[row * numCols + col].px[x + (tileHeight - 2) * tileWidth]; + } + } + } + } +} + +static void init_tiles(rgba *image, bool expanded) { + const ImageProps props = IMAGE_PROPERTIES[type][expanded]; + + for (int row = 0; row < props.numRows; row++) { + for (int col = 0; col < props.numCols; col++) { + split_tile(col, row, image, expanded); + } + } + + // Expand the tiles to their full size + if (!expanded) { + expand_tiles(type); + } +} + +static void assign_tile_positions() { + const ImageProps props = IMAGE_PROPERTIES[type][true]; + const size_t TILE_SIZE = props.tileWidth * props.tileHeight * sizeof(rgba); + + unsigned int newPos = 0; + for (int i = 0; i < props.numRows * props.numCols; i++) { + if (props.optimizePositions) { + for (int j = 0; j < i; j++) { + if (!tiles[j].useless && memcmp(tiles[j].px, tiles[i].px, TILE_SIZE) == 0) { + tiles[i].useless = 1; + tiles[i].pos = j; + break; + } + } + } + + if (!tiles[i].useless) { + tiles[i].pos = newPos; + newPos++; + } + } +} + +// Provide a replacement for realpath on Windows +#ifdef _WIN32 +#define realpath(path, resolved_path) _fullpath(resolved_path, path, PATH_MAX) +#endif + +/* write pngs to disc */ +void write_tiles() { + const ImageProps props = IMAGE_PROPERTIES[type][true]; + char buffer[PATH_MAX]; + char skyboxName[PATH_MAX]; + + if (realpath(writeDir, buffer) == NULL) { + fprintf(stderr, "err: Could not find find img dir %s", writeDir); + exit(EXIT_FAILURE); + } + + strcat(buffer, "/"); + + switch(type) { + case Skybox: + strcat(buffer, skyboxName); + break; + case Cake: + strcat(buffer, "cake"); + break; + case CakeEU: + strcat(buffer, "cake_eu"); + break; + default: + exit(EXIT_FAILURE); + break; + } + + int dirLength = strlen(buffer); + char *filename = buffer + dirLength; + for (int i = 0; i < props.numRows * props.numCols; i++) { + if (!tiles[i].useless) { + *filename = 0; + snprintf(filename, PATH_MAX, ".%d.rgba16.png", tiles[i].pos); + rgba2png(buffer, tiles[i].px, props.tileWidth, props.tileHeight); + } + } +} + +static unsigned int get_index(TextureTile *t, unsigned int i) { + if (t[i].useless) { + i = t[i].pos; + } + return t[i].pos; +} + +static void print_raw_data(FILE *cFile, TextureTile *tile) { + ImageProps props = IMAGE_PROPERTIES[type][true]; + uint8_t *raw = malloc(props.tileWidth * props.tileHeight * 2); + int size = rgba2raw(raw, tile->px, props.tileWidth, props.tileHeight, 16); + fprint_write_output(cFile, SKYCONV_ENCODING, raw, size); + free(raw); +} + +static void write_skybox_c() { /* write c data to disc */ + const ImageProps props = IMAGE_PROPERTIES[type][true]; + + char fBuffer[PATH_MAX] = ""; + FILE *cFile; + + if (realpath(output, fBuffer) == NULL) { + fprintf(stderr, "err: Could not find find src dir %s", output); + exit(EXIT_FAILURE); + } + + sprintf(fBuffer, "%s/%s_skybox.c", output, skyboxName); + cFile = fopen(fBuffer, "w"); /* reset file */ + + /* setup C file */ + + if (cFile == NULL) { + fprintf(stderr, "err: Could not open %s\n", fBuffer); + } + + fprintf(cFile, "#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n"); + + for (int i = 0; i < props.numRows * props.numCols; i++) { + if (!tiles[i].useless) { + fprintf(cFile, "ALIGNED8 static const Texture %s_skybox_texture_%05X[] = {\n", skyboxName, tiles[i].pos); + + print_raw_data(cFile, &tiles[i]); + + fputs("};\n\n", cFile); + } + } + + fprintf(cFile, "const Texture *const %s_skybox_ptrlist[] = {\n", skyboxName); + + for (int row = 0; row < 8; row++) { + for (int col = 0; col < 10; col++) { + fprintf(cFile, "%s_skybox_texture_%05X,\n", skyboxName, get_index(tiles, row * 8 + (col % 8))); + } + } + + fputs("};\n\n", cFile); + fclose(cFile); +} + +static void write_cake_c() { + char buffer[PATH_MAX] = ""; + if (realpath(output, buffer) == NULL) { + fprintf(stderr, "err: Could not find find src dir %s", output); + exit(EXIT_FAILURE); + } + + if (type == CakeEU) { + strcat(buffer, "/cake_eu.inc.c"); + } + else { + strcat(buffer, "/cake.inc.c"); + } + + FILE *cFile = fopen(buffer, "w"); + + const char *euSuffx = ""; + if (type == CakeEU) { + euSuffx = "eu_"; + } + + int numTiles = TABLE_DIMENSIONS[type].cols * TABLE_DIMENSIONS[type].rows; + for (int i = 0; i < numTiles; ++i) { + fprintf(cFile, "ALIGNED8 static const Texture cake_end_texture_%s%d[] = {\n", euSuffx, i); + print_raw_data(cFile, &tiles[i]); + fputs("};\n\n", cFile); + } + fclose(cFile); +} + +// input: the skybox tiles + the table = up to 64 32x32 images (rgba16) + 80 pointers (u32) +// some pointers point to duplicate entries +void combine_skybox(const char *input, const char *output) { + enum { W = 10, H = 8, W2 = 8 }; + + FILE *file = fopen(input, "rb"); + if (!file) goto fail; + if (fseek(file, 0, SEEK_END)) goto fail; + + ssize_t fileSize = ftell(file); + if (fileSize < 8*10*4) goto fail; + rewind(file); + + size_t tableIndex = fileSize - 8*10*4; + if (tableIndex % (32*32*2) != 0) goto fail; + + // there are at most 64 tiles before the table + rgba *tiles[8*8]; + size_t tileIndex = 0; + for (size_t pos = 0; pos < tableIndex; pos += 32*32*2) { + uint8_t buf[32*32*2]; + if (fread(buf, sizeof(buf), 1, file) != 1) goto fail; + tiles[tileIndex] = raw2rgba(buf, 32, 32, 16); + tileIndex++; + } + + uint32_t table[W*H]; + if (fread(table, sizeof(table), 1, file) != 1) goto fail; + + reverse_endian((unsigned char *) table, W*H*4); + + uint32_t base = table[0]; + for (int i = 0; i < W*H; i++) { + table[i] -= base; + } + + // Convert the 256x256 skybox to an editable 248x248 image by skipping the duplicated rows and columns + // every 32nd column is a repeat of the 33rd, and + // every 32nd row is a repeat of the 33rd, EXCEPT for the last row, but that only matters when + // expanding the tiles + rgba combined[31*H * 31*W2]; + for (int i = 0; i < H; i++) { + for (int j = 0; j < W2; j++) { + int index = table[i*W+j] / 0x800; + for (int y = 0; y < 31; y++) { + for (int x = 0; x < 31; x++) { + combined[(i*31 + y) * (31*W2) + (j*31 + x)] = tiles[index][y*32 + x]; + } + } + } + } + if (!rgba2png(output, combined, 31*W2, 31*H)) { + fprintf(stderr, "Failed to write skybox image.\n"); + exit(1); + } + return; +fail: + fprintf(stderr, "Failed to read skybox binary.\n"); + exit(1); +} + +void combine_cakeimg(const char *input, const char *output, bool eu) { + int W, H, SMALLH, SMALLW; + if (eu) { + W = 5; + H = 7; + SMALLH = 32; + SMALLW = 64; + } else { + W = 4; + H = 12; + SMALLH = 20; + SMALLW = 80; + } + + FILE *file = fopen(input, "rb"); + if (!file) goto fail; + + rgba *combined; + if (!eu) { + combined = malloc((SMALLH-1)*H * (SMALLW-1)*W * sizeof(rgba)); + for (int i = 0; i < H; i++) { + for (int j = 0; j < W; j++) { + //Read the full tile + uint8_t buf[SMALLH * SMALLW * 2]; + if (fread(buf, sizeof(buf), 1, file) != 1) goto fail; + rgba *tile = raw2rgba(buf, SMALLH, SMALLW, 16); + + //Only write the unique parts of each tile + for (int y = 0; y < SMALLH - 1; y++) { + for (int x = 0; x < SMALLW - 1; x++) { + combined[(i*(SMALLH-1) + y) * (SMALLW-1)*W + (j*(SMALLW-1) + x)] = tile[y*(SMALLW) + x]; + } + } + } + } + if (!rgba2png(output, combined, (SMALLW-1)*W, (SMALLH-1)*H)) { + fprintf(stderr, "Failed to write cake image.\n"); + exit(1); + } + } + else { + combined = malloc(SMALLH*H * SMALLW*W * sizeof(rgba)); + for (int i = 0; i < H; i++) { + for (int j = 0; j < W; j++) { + uint8_t buf[SMALLH * SMALLW * 2]; + if (fread(buf, sizeof(buf), 1, file) != 1) goto fail; + rgba *tile = raw2rgba(buf, SMALLH, SMALLW, 16); + for (int y = 0; y < SMALLH; y++) { + for (int x = 0; x < SMALLW; x++) { + combined[(i*SMALLH + y) * SMALLW*W + (j*SMALLW + x)] = tile[y*SMALLW + x]; + } + } + } + } + if (!rgba2png(output, combined, SMALLW*W, SMALLH*H)) { + fprintf(stderr, "Failed to write cake image.\n"); + exit(1); + } + } + return; +fail: + fprintf(stderr, "Failed to read cake binary.\n"); + exit(1); +} + +// Modified from n64split +static void usage() { + fprintf(stderr, + "Usage: %s --type sky|cake|cake_eu {--combine INPUT OUTPUT | --split INPUT OUTPUT}\n" + "\n" + "Optional arguments:\n" + " --write-tiles OUTDIR Also create the individual tiles' PNG files\n", programName); +} + +// Modified from n64split +static int parse_arguments(int argc, char *argv[]) { + programName = argv[0]; + for (int i = 1; i < argc; ++i) { + if (strcmp(argv[i], "--combine") == 0) { + if (++i >= argc || mode != InvalidMode) { + goto invalid; + } + + mode = Combine; + input = argv[i]; + if (++i >= argc) { + goto invalid; + } + + output = argv[i]; + } + + if (strcmp(argv[i], "--split") == 0) { + if (++i >= argc || mode != InvalidMode) { + goto invalid; + } + + mode = Split; + input = argv[i]; + if (++i >= argc) { + goto invalid; + } + + output = argv[i]; + } + + if (strcmp(argv[i], "--type") == 0) { + if (++i >= argc || type != InvalidType) { + goto invalid; + } + + if (strcmp(argv[i], "sky") == 0) { + type = Skybox; + } else if(strcmp(argv[i], "cake-eu") == 0) { + type = CakeEU; + } else if(strcmp(argv[i], "cake") == 0) { + type = Cake; + } + } + + if (strcmp(argv[i], "--write-tiles") == 0) { + if (++i >= argc || argv[i][0] == '-') { + goto invalid; + } + + writeTiles = true; + writeDir = argv[i]; + } + } + + return 1; +invalid: + usage(); + return 0; +} + +bool imageMatchesDimensions(int width, int height) { + bool matchesDimensions = false; + for (int expand = false; expand <= true; ++expand) { + if (width == IMAGE_PROPERTIES[type][expand].imageWidth && + height == IMAGE_PROPERTIES[type][expand].imageHeight) { + matchesDimensions = true; + expanded = expand; + break; + } + } + if (!matchesDimensions) { + if (type != CakeEU) { + fprintf(stderr, "err: That type of image must be either %d x %d or %d x %d. Yours is %d x %d.\n", + IMAGE_PROPERTIES[type][false].imageWidth, IMAGE_PROPERTIES[type][false].imageHeight, + IMAGE_PROPERTIES[type][true].imageWidth, IMAGE_PROPERTIES[type][true].imageHeight, + width, height); + } + else { + fprintf(stderr, "err: That type of image must be %d x %d. Yours is %d x %d.\n", + IMAGE_PROPERTIES[type][true].imageWidth, IMAGE_PROPERTIES[type][true].imageHeight, + width, height); + + } + return false; + } + + if (type == CakeEU) { + expanded = true; + } + + return true; +} + +int main(int argc, char *argv[]) { + if (parse_arguments(argc, argv) == false) { + return EXIT_FAILURE; + } + + if (type == Skybox && mode == Split) { + // Extract the skybox's name (ie: bbh, bidw) from the input png + char *base = basename(input); + strcpy(skyboxName, base); + char *extension = strrchr(skyboxName, '.'); + if (extension) *extension = '\0'; + } + + switch (mode) { + case Combine: + switch (type) { + case Skybox: + combine_skybox(input, output); + break; + case Cake: + combine_cakeimg(input, output, 0); + break; + case CakeEU: + combine_cakeimg(input, output, 1); + break; + default: + usage(); + return EXIT_FAILURE; + break; + } + break; + + case Split: { + int width, height; + rgba *image = png2rgba(input, &width, &height); + if (image == NULL) { + fprintf(stderr, "err: Could not load image %s\n", argv[1]); + return EXIT_FAILURE; + } + + if (!imageMatchesDimensions(width, height)) { + return EXIT_FAILURE; + } + + allocate_tiles(); + + init_tiles(image, expanded); + switch (type) { + case Skybox: + assign_tile_positions(); + write_skybox_c(); + break; + case Cake: + case CakeEU: + assign_tile_positions(); + write_cake_c(); + break; + default: + fprintf(stderr, "err: Unknown image type.\n"); + return EXIT_FAILURE; + break; + } + + if (writeTiles) { + write_tiles(); + } + free_tiles(); + free(image); + } break; + default: + usage(); + return EXIT_FAILURE; + break; + } + + + return EXIT_SUCCESS; +} From 350eaaaac0c1e8d327009f2e280cda2b20efb6b9 Mon Sep 17 00:00:00 2001 From: Cheezepin Date: Thu, 15 Jul 2021 11:34:55 -0700 Subject: [PATCH 6/7] haveyourcake but it works --- levels/ending/leveldata.c.orig | 840 --------------------------------- tools/skyconv.c.orig | 657 -------------------------- 2 files changed, 1497 deletions(-) delete mode 100644 levels/ending/leveldata.c.orig delete mode 100644 tools/skyconv.c.orig diff --git a/levels/ending/leveldata.c.orig b/levels/ending/leveldata.c.orig deleted file mode 100644 index 94b938726..000000000 --- a/levels/ending/leveldata.c.orig +++ /dev/null @@ -1,840 +0,0 @@ -#include -#include - -#include "macros.h" -#include "types.h" - -#include "make_const_nonconst.h" - -#ifdef VERSION_EU -#include "levels/ending/cake_eu.inc.c" - -// 0x07023000 - 0x07023FFF -ALIGNED8 static const Texture cake_end_texture_eu_35[] = { -#include "levels/ending/eu_023000.rgba16.inc.c" -}; - -// 0x07024000 - 0x07024FFF -ALIGNED8 static const Texture cake_end_texture_eu_36[] = { -#include "levels/ending/eu_024000.rgba16.inc.c" -}; - -// 0x07025000 - 0x07025FFF -ALIGNED8 static const Texture cake_end_texture_eu_37[] = { -#include "levels/ending/eu_025000.rgba16.inc.c" -}; - -// 0x07026000 - 0x07026FFF -ALIGNED8 static const Texture cake_end_texture_eu_38[] = { -#include "levels/ending/eu_026000.rgba16.inc.c" -}; - -// 0x07027000 - 0x07027FFF -ALIGNED8 static const Texture cake_end_texture_eu_39[] = { -#include "levels/ending/eu_027000.rgba16.inc.c" -}; - -// 0x07028000 - 0x07028FFF -ALIGNED8 static const Texture cake_end_texture_eu_40[] = { -#include "levels/ending/eu_028000.rgba16.inc.c" -}; - -// 0x07029000 - 0x070296D8 -const Gfx dl_cake_end_screen[] = { - gsDPPipeSync(), - gsDPSetCycleType(G_CYC_COPY), - gsDPSetTexturePersp(G_TP_NONE), - gsDPSetRenderMode(G_RM_NOOP, G_RM_NOOP2), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0, G_TX_LOADTILE, 0, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD, G_TX_WRAP | G_TX_NOMIRROR, G_TX_NOMASK, G_TX_NOLOD), - gsDPTileSync(), - gsDPSetTile(G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0, G_TX_RENDERTILE, 0, G_TX_CLAMP, 5, G_TX_NOLOD, G_TX_CLAMP, 6, G_TX_NOLOD), - gsDPSetTileSize(0, 0, 0, (64 - 1) << G_TEXTURE_IMAGE_FRAC, (32 - 1) << G_TEXTURE_IMAGE_FRAC), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_0), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 8 << 2, (0 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_1), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 8 << 2, (64 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_2), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 8 << 2, (128 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_3), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 8 << 2, (192 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_4), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 8 << 2, (256 + 63) << 2, (8 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_5), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 40 << 2, (0 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_6), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 40 << 2, (64 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_7), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 40 << 2, (128 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_8), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 40 << 2, (192 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_9), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 40 << 2, (256 + 63) << 2, (40 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_10), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 72 << 2, (0 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_11), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 72 << 2, (64 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_12), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 72 << 2, (128 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_13), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 72 << 2, (192 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_14), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 72 << 2, (256 + 63) << 2, (72 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_15), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 104 << 2, (0 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_16), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 104 << 2, (64 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_17), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 104 << 2, (128 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_18), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 104 << 2, (192 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_19), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 104 << 2, (256 + 63) << 2, (104 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_20), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 136 << 2, (0 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_21), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 136 << 2, (64 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_22), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 136 << 2, (128 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_23), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 136 << 2, (192 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_24), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 136 << 2, (256 + 63) << 2, (136 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_25), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 168 << 2, (0 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_26), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 168 << 2, (64 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_27), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 168 << 2, (128 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_28), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 168 << 2, (192 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_29), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 168 << 2, (256 + 63) << 2, (168 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_30), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(0 << 2, 200 << 2, (0 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_31), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(64 << 2, 200 << 2, (64 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_32), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_33), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(192 << 2, 200 << 2, (192 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_34), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(256 << 2, 200 << 2, (256 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsSPEndDisplayList(), -}; - -// 0x070296D8 - 0x070296F8 -static const Gfx dl_cake_end_eu_070296D8[] = { - gsDPPipeSync(), - gsDPSetCycleType(G_CYC_1CYCLE), - gsDPSetTexturePersp(G_TP_PERSP), - gsSPEndDisplayList(), -}; - -// 0x070296F8 - 0x07029768 -const Gfx dl_cake_end_screen_eu_070296F8[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_38), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_35), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsSPDisplayList(dl_cake_end_eu_070296D8), - gsSPEndDisplayList(), -}; - -// 0x07029768 - 0x070297D8 -const Gfx dl_cake_end_screen_eu_07029768[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_39), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_36), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsSPDisplayList(dl_cake_end_eu_070296D8), - gsSPEndDisplayList(), -}; - -// 0x070297D8 - 0x07029848 -const Gfx dl_cake_end_screen_eu_070297D8[] = { - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_40), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 200 << 2, (128 + 63) << 2, (200 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsDPSetTextureImage(G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, cake_end_texture_eu_37), - gsDPLoadSync(), - gsDPLoadBlock(G_TX_LOADTILE, 0, 0, 64 * 32 - 1, CALC_DXT(64, G_IM_SIZ_16b_BYTES)), - gsSPTextureRectangle(128 << 2, 125 << 2, (128 + 63) << 2, (125 + 31) << 2, G_TX_RENDERTILE, 0, 0, 4 << 10, 1 << 10), - gsSPDisplayList(dl_cake_end_eu_070296D8), - gsSPEndDisplayList(), -}; - -// VERSION_EU -#else - -#include "levels/ending/cake.inc.c" - -// 0x07025800 - 0x07025840 -static const Vtx cake_end_vertex_07025800[] = { - {{{ 0, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025840 - 0x07025880 -static const Vtx cake_end_vertex_07025840[] = { - {{{ 80, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025880 - 0x070258C0 -static const Vtx cake_end_vertex_07025880[] = { - {{{ 160, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070258C0 - 0x07025900 -static const Vtx cake_end_vertex_070258C0[] = { - {{{ 240, 220, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 220, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 240, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 240, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025900 - 0x07025940 -static const Vtx cake_end_vertex_07025900[] = { - {{{ 0, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025940 - 0x07025980 -static const Vtx cake_end_vertex_07025940[] = { - {{{ 80, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025980 - 0x070259C0 -static const Vtx cake_end_vertex_07025980[] = { - {{{ 160, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070259C0 - 0x07025A00 -static const Vtx cake_end_vertex_070259C0[] = { - {{{ 240, 200, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 200, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 220, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 220, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A00 - 0x07025A40 -static const Vtx cake_end_vertex_07025A00[] = { - {{{ 0, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A40 - 0x07025A80 -static const Vtx cake_end_vertex_07025A40[] = { - {{{ 80, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025A80 - 0x07025AC0 -static const Vtx cake_end_vertex_07025A80[] = { - {{{ 160, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025AC0 - 0x07025B00 -static const Vtx cake_end_vertex_07025AC0[] = { - {{{ 240, 180, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 180, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 200, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 200, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B00 - 0x07025B40 -static const Vtx cake_end_vertex_07025B00[] = { - {{{ 0, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B40 - 0x07025B80 -static const Vtx cake_end_vertex_07025B40[] = { - {{{ 80, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025B80 - 0x07025BC0 -static const Vtx cake_end_vertex_07025B80[] = { - {{{ 160, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025BC0 - 0x07025C00 -static const Vtx cake_end_vertex_07025BC0[] = { - {{{ 240, 160, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 160, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 180, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 180, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C00 - 0x07025C40 -static const Vtx cake_end_vertex_07025C00[] = { - {{{ 0, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C40 - 0x07025C80 -static const Vtx cake_end_vertex_07025C40[] = { - {{{ 80, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025C80 - 0x07025CC0 -static const Vtx cake_end_vertex_07025C80[] = { - {{{ 160, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025CC0 - 0x07025D00 -static const Vtx cake_end_vertex_07025CC0[] = { - {{{ 240, 140, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 140, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 160, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 160, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D00 - 0x07025D40 -static const Vtx cake_end_vertex_07025D00[] = { - {{{ 0, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D40 - 0x07025D80 -static const Vtx cake_end_vertex_07025D40[] = { - {{{ 80, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025D80 - 0x07025DC0 -static const Vtx cake_end_vertex_07025D80[] = { - {{{ 160, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025DC0 - 0x07025E00 -static const Vtx cake_end_vertex_07025DC0[] = { - {{{ 240, 120, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 120, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 140, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 140, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E00 - 0x07025E40 -static const Vtx cake_end_vertex_07025E00[] = { - {{{ 0, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E40 - 0x07025E80 -static const Vtx cake_end_vertex_07025E40[] = { - {{{ 80, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025E80 - 0x07025EC0 -static const Vtx cake_end_vertex_07025E80[] = { - {{{ 160, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025EC0 - 0x07025F00 -static const Vtx cake_end_vertex_07025EC0[] = { - {{{ 240, 100, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 100, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 120, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 120, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F00 - 0x07025F40 -static const Vtx cake_end_vertex_07025F00[] = { - {{{ 0, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F40 - 0x07025F80 -static const Vtx cake_end_vertex_07025F40[] = { - {{{ 80, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025F80 - 0x07025FC0 -static const Vtx cake_end_vertex_07025F80[] = { - {{{ 160, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07025FC0 - 0x07026000 -static const Vtx cake_end_vertex_07025FC0[] = { - {{{ 240, 80, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 80, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 100, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 100, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026000 - 0x07026040 -static const Vtx cake_end_vertex_07026000[] = { - {{{ 0, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026040 - 0x07026080 -static const Vtx cake_end_vertex_07026040[] = { - {{{ 80, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026080 - 0x070260C0 -static const Vtx cake_end_vertex_07026080[] = { - {{{ 160, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070260C0 - 0x07026100 -static const Vtx cake_end_vertex_070260C0[] = { - {{{ 240, 60, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 60, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 80, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 80, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026100 - 0x07026140 -static const Vtx cake_end_vertex_07026100[] = { - {{{ 0, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026140 - 0x07026180 -static const Vtx cake_end_vertex_07026140[] = { - {{{ 80, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026180 - 0x070261C0 -static const Vtx cake_end_vertex_07026180[] = { - {{{ 160, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070261C0 - 0x07026200 -static const Vtx cake_end_vertex_070261C0[] = { - {{{ 240, 40, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 40, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 60, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 60, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026200 - 0x07026240 -static const Vtx cake_end_vertex_07026200[] = { - {{{ 0, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026240 - 0x07026280 -static const Vtx cake_end_vertex_07026240[] = { - {{{ 80, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026280 - 0x070262C0 -static const Vtx cake_end_vertex_07026280[] = { - {{{ 160, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070262C0 - 0x07026300 -static const Vtx cake_end_vertex_070262C0[] = { - {{{ 240, 20, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 20, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 40, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 40, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026300 - 0x07026340 -static const Vtx cake_end_vertex_07026300[] = { - {{{ 0, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 0, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026340 - 0x07026380 -static const Vtx cake_end_vertex_07026340[] = { - {{{ 80, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 80, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x07026380 - 0x070263C0 -static const Vtx cake_end_vertex_07026380[] = { - {{{ 160, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 240, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 160, 20, -1}, 0, { 0, 0}, {0xff, 0xff, 0xff, 0xff}}}, -}; - -// 0x070263C0 - 0x07026400 -static const Vtx cake_end_vertex_070263C0[] = { - {{{ 240, 0, -1}, 0, { 0, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 0, -1}, 0, { 2528, 608}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 320, 20, -1}, 0, { 2528, 0}, {0xff, 0xff, 0xff, 0xff}}}, - {{{ 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(), -}; -#endif diff --git a/tools/skyconv.c.orig b/tools/skyconv.c.orig deleted file mode 100644 index 79d6f0411..000000000 --- a/tools/skyconv.c.orig +++ /dev/null @@ -1,657 +0,0 @@ -/* skybox generator */ - -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include - -#include "n64graphics.h" -#include "utils.h" - -#define SKYCONV_ENCODING ENCODING_U8 - -typedef struct { - rgba *px; - bool useless; - unsigned int pos; -} TextureTile; - -typedef enum { - InvalidType = -1, - Skybox, - Cake, - CakeEU, - ImageType_MAX -} ImageType; - -typedef enum { - InvalidMode = -1, - Combine, - Split -} OperationMode; - -typedef struct { - int imageWidth, imageHeight; - int tileWidth, tileHeight; - int numCols, numRows; - bool wrapX; - bool optimizePositions; -} ImageProps; - -static const ImageProps IMAGE_PROPERTIES[ImageType_MAX][2] = { - [Skybox] = { - {248, 248, 31, 31, 8, 8, true, true}, - {256, 256, 32, 32, 8, 8, true, true}, - }, - [Cake] = { - {316, 228, 79, 19, 4, 12, false, false}, - {320, 240, 80, 20, 4, 12, false, false}, - }, - [CakeEU] = { - {320, 224, 64, 32, 5, 7, false, false}, - {320, 224, 64, 32, 5, 7, false, false}, - }, -}; - -typedef struct { - int cols, rows; -} TableDimension; - -static const TableDimension TABLE_DIMENSIONS[ImageType_MAX] = { - [Skybox] = {8, 10}, - [Cake] = {4, 12}, - [CakeEU] = {5, 7}, -}; - -TextureTile *tiles; -ImageType type = InvalidType; -OperationMode mode = InvalidMode; -char *programName; -char *input, *output; -char *writeDir; -char skyboxName[256]; -bool expanded = false; -bool writeTiles; - -static void allocate_tiles() { - const ImageProps props = IMAGE_PROPERTIES[type][true]; - int tileWidth = props.tileWidth; - int tileHeight = props.tileHeight; - int numRows = props.numRows; - int numCols = props.numCols; - - int tileSize = tileWidth * tileHeight * sizeof(rgba); - int totalSize = numRows * numCols * tileSize; - tiles = calloc(1, numRows * numCols * sizeof(TextureTile)); - rgba *tileData = calloc(1, totalSize); - for (int row = 0; row < numRows; ++row) { - for (int col = 0; col < numCols; ++col) { - tiles[row * numCols + col].px = (tileData + (row * numCols + col) * (tileWidth * tileHeight)); - } - } -} - -static void free_tiles() { - free(tiles->px); - free(tiles); -} - -static void split_tile(int col, int row, rgba *image, bool expanded) { - const ImageProps props = IMAGE_PROPERTIES[type][expanded]; - int tileWidth = props.tileWidth; - int tileHeight = props.tileHeight; - int imageWidth = props.imageWidth; - int numCols = props.numCols; - - int expandedWidth = IMAGE_PROPERTIES[type][true].tileWidth; - - for (int y = 0; y < tileHeight; y++) { - for (int x = 0; x < tileWidth; x++) { - int ny = row * tileHeight + y; - int nx = col * tileWidth + x; - tiles[row * numCols + col].px[y * expandedWidth + x] = image[(ny * imageWidth + nx)]; - } - } -} - -static void expand_tiles(ImageType imageType) { - const ImageProps props = IMAGE_PROPERTIES[imageType][true]; - int numRows = props.numRows; - int numCols = props.numCols; - int tileWidth = props.tileWidth; - int tileHeight = props.tileHeight; - - // If the image type wraps, - // Copy each tile's left edge to the previous tile's right edge - // Each tile's height is still tileHeight - 1 - if (props.wrapX) { - for (int row = 0; row < numRows; ++row) { - for (int col = 0; col < numCols; ++col) { - int nextCol = (col + 1) % numCols; - for (int y = 0; y < (tileHeight - 1); ++y) { - tiles[row * numCols + col].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + nextCol].px[y * tileWidth]; - } - } - } - } else { - // Don't wrap, copy the second to last column instead. - for (int row = 0; row < numRows; ++row) { - for (int col = 0; col < numCols - 1; ++col) { - int nextCol = (col + 1) % numCols; - for (int y = 0; y < (tileHeight - 1); ++y) { - tiles[row * numCols + col].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + nextCol].px[y * tileWidth]; - } - } - for (int y = 0; y < (tileHeight - 1); ++y) { - tiles[row * numCols + (numCols - 1)].px[(tileWidth - 1) + y * tileWidth] = tiles[row * numCols + (numCols - 1)].px[(tileWidth - 2) + y * tileWidth]; - } - - } - } - - // Copy each tile's top edge to the previous tile's bottom edge, EXCEPT for the bottom row, which - // just duplicates its second-to-last row - for (int row = 0; row < numRows; ++row) { - if (row < numRows - 1) { - for (int col = 0; col < numCols; ++col) { - int nextRow = (row + 1) % numRows; - for (int x = 0; x < tileWidth; ++x) { - tiles[row * numCols + col].px[x + (tileHeight - 1) * tileWidth] = tiles[nextRow * numCols + col].px[x]; - } - } - } - // For the last row of tiles, duplicate each one's second to last row - else { - for (int col = 0; col < numCols; ++col) { - for (int x = 0; x < tileWidth; ++x) { - tiles[row * numCols + col].px[x + (tileHeight - 1) * tileWidth] = tiles[row * numCols + col].px[x + (tileHeight - 2) * tileWidth]; - } - } - } - } -} - -static void init_tiles(rgba *image, bool expanded) { - const ImageProps props = IMAGE_PROPERTIES[type][expanded]; - - for (int row = 0; row < props.numRows; row++) { - for (int col = 0; col < props.numCols; col++) { - split_tile(col, row, image, expanded); - } - } - - // Expand the tiles to their full size - if (!expanded) { - expand_tiles(type); - } -} - -static void assign_tile_positions() { - const ImageProps props = IMAGE_PROPERTIES[type][true]; - const size_t TILE_SIZE = props.tileWidth * props.tileHeight * sizeof(rgba); - - unsigned int newPos = 0; - for (int i = 0; i < props.numRows * props.numCols; i++) { - if (props.optimizePositions) { - for (int j = 0; j < i; j++) { - if (!tiles[j].useless && memcmp(tiles[j].px, tiles[i].px, TILE_SIZE) == 0) { - tiles[i].useless = 1; - tiles[i].pos = j; - break; - } - } - } - - if (!tiles[i].useless) { - tiles[i].pos = newPos; - newPos++; - } - } -} - -// Provide a replacement for realpath on Windows -#ifdef _WIN32 -#define realpath(path, resolved_path) _fullpath(resolved_path, path, PATH_MAX) -#endif - -/* write pngs to disc */ -void write_tiles() { - const ImageProps props = IMAGE_PROPERTIES[type][true]; - char buffer[PATH_MAX]; - char skyboxName[PATH_MAX]; - - if (realpath(writeDir, buffer) == NULL) { - fprintf(stderr, "err: Could not find find img dir %s", writeDir); - exit(EXIT_FAILURE); - } - - strcat(buffer, "/"); - - switch(type) { - case Skybox: - strcat(buffer, skyboxName); - break; - case Cake: - strcat(buffer, "cake"); - break; - case CakeEU: - strcat(buffer, "cake_eu"); - break; - default: - exit(EXIT_FAILURE); - break; - } - - int dirLength = strlen(buffer); - char *filename = buffer + dirLength; - for (int i = 0; i < props.numRows * props.numCols; i++) { - if (!tiles[i].useless) { - *filename = 0; - snprintf(filename, PATH_MAX, ".%d.rgba16.png", tiles[i].pos); - rgba2png(buffer, tiles[i].px, props.tileWidth, props.tileHeight); - } - } -} - -static unsigned int get_index(TextureTile *t, unsigned int i) { - if (t[i].useless) { - i = t[i].pos; - } - return t[i].pos; -} - -static void print_raw_data(FILE *cFile, TextureTile *tile) { - ImageProps props = IMAGE_PROPERTIES[type][true]; - uint8_t *raw = malloc(props.tileWidth * props.tileHeight * 2); - int size = rgba2raw(raw, tile->px, props.tileWidth, props.tileHeight, 16); - fprint_write_output(cFile, SKYCONV_ENCODING, raw, size); - free(raw); -} - -static void write_skybox_c() { /* write c data to disc */ - const ImageProps props = IMAGE_PROPERTIES[type][true]; - - char fBuffer[PATH_MAX] = ""; - FILE *cFile; - - if (realpath(output, fBuffer) == NULL) { - fprintf(stderr, "err: Could not find find src dir %s", output); - exit(EXIT_FAILURE); - } - - sprintf(fBuffer, "%s/%s_skybox.c", output, skyboxName); - cFile = fopen(fBuffer, "w"); /* reset file */ - - /* setup C file */ - - if (cFile == NULL) { - fprintf(stderr, "err: Could not open %s\n", fBuffer); - } - - fprintf(cFile, "#include \"types.h\"\n\n#include \"make_const_nonconst.h\"\n\n"); - - for (int i = 0; i < props.numRows * props.numCols; i++) { - if (!tiles[i].useless) { - fprintf(cFile, "ALIGNED8 static const Texture %s_skybox_texture_%05X[] = {\n", skyboxName, tiles[i].pos); - - print_raw_data(cFile, &tiles[i]); - - fputs("};\n\n", cFile); - } - } - - fprintf(cFile, "const Texture *const %s_skybox_ptrlist[] = {\n", skyboxName); - - for (int row = 0; row < 8; row++) { - for (int col = 0; col < 10; col++) { - fprintf(cFile, "%s_skybox_texture_%05X,\n", skyboxName, get_index(tiles, row * 8 + (col % 8))); - } - } - - fputs("};\n\n", cFile); - fclose(cFile); -} - -static void write_cake_c() { - char buffer[PATH_MAX] = ""; - if (realpath(output, buffer) == NULL) { - fprintf(stderr, "err: Could not find find src dir %s", output); - exit(EXIT_FAILURE); - } - - if (type == CakeEU) { - strcat(buffer, "/cake_eu.inc.c"); - } - else { - strcat(buffer, "/cake.inc.c"); - } - - FILE *cFile = fopen(buffer, "w"); - - const char *euSuffx = ""; - if (type == CakeEU) { - euSuffx = "eu_"; - } - - int numTiles = TABLE_DIMENSIONS[type].cols * TABLE_DIMENSIONS[type].rows; - for (int i = 0; i < numTiles; ++i) { - fprintf(cFile, "ALIGNED8 static const Texture cake_end_texture_%s%d[] = {\n", euSuffx, i); - print_raw_data(cFile, &tiles[i]); - fputs("};\n\n", cFile); - } - fclose(cFile); -} - -// input: the skybox tiles + the table = up to 64 32x32 images (rgba16) + 80 pointers (u32) -// some pointers point to duplicate entries -void combine_skybox(const char *input, const char *output) { - enum { W = 10, H = 8, W2 = 8 }; - - FILE *file = fopen(input, "rb"); - if (!file) goto fail; - if (fseek(file, 0, SEEK_END)) goto fail; - - ssize_t fileSize = ftell(file); - if (fileSize < 8*10*4) goto fail; - rewind(file); - - size_t tableIndex = fileSize - 8*10*4; - if (tableIndex % (32*32*2) != 0) goto fail; - - // there are at most 64 tiles before the table - rgba *tiles[8*8]; - size_t tileIndex = 0; - for (size_t pos = 0; pos < tableIndex; pos += 32*32*2) { - uint8_t buf[32*32*2]; - if (fread(buf, sizeof(buf), 1, file) != 1) goto fail; - tiles[tileIndex] = raw2rgba(buf, 32, 32, 16); - tileIndex++; - } - - uint32_t table[W*H]; - if (fread(table, sizeof(table), 1, file) != 1) goto fail; - - reverse_endian((unsigned char *) table, W*H*4); - - uint32_t base = table[0]; - for (int i = 0; i < W*H; i++) { - table[i] -= base; - } - - // Convert the 256x256 skybox to an editable 248x248 image by skipping the duplicated rows and columns - // every 32nd column is a repeat of the 33rd, and - // every 32nd row is a repeat of the 33rd, EXCEPT for the last row, but that only matters when - // expanding the tiles - rgba combined[31*H * 31*W2]; - for (int i = 0; i < H; i++) { - for (int j = 0; j < W2; j++) { - int index = table[i*W+j] / 0x800; - for (int y = 0; y < 31; y++) { - for (int x = 0; x < 31; x++) { - combined[(i*31 + y) * (31*W2) + (j*31 + x)] = tiles[index][y*32 + x]; - } - } - } - } - if (!rgba2png(output, combined, 31*W2, 31*H)) { - fprintf(stderr, "Failed to write skybox image.\n"); - exit(1); - } - return; -fail: - fprintf(stderr, "Failed to read skybox binary.\n"); - exit(1); -} - -void combine_cakeimg(const char *input, const char *output, bool eu) { - int W, H, SMALLH, SMALLW; - if (eu) { - W = 5; - H = 7; - SMALLH = 32; - SMALLW = 64; - } else { - W = 4; - H = 12; - SMALLH = 20; - SMALLW = 80; - } - - FILE *file = fopen(input, "rb"); - if (!file) goto fail; - - rgba *combined; - if (!eu) { - combined = malloc((SMALLH-1)*H * (SMALLW-1)*W * sizeof(rgba)); - for (int i = 0; i < H; i++) { - for (int j = 0; j < W; j++) { - //Read the full tile - uint8_t buf[SMALLH * SMALLW * 2]; - if (fread(buf, sizeof(buf), 1, file) != 1) goto fail; - rgba *tile = raw2rgba(buf, SMALLH, SMALLW, 16); - - //Only write the unique parts of each tile - for (int y = 0; y < SMALLH - 1; y++) { - for (int x = 0; x < SMALLW - 1; x++) { - combined[(i*(SMALLH-1) + y) * (SMALLW-1)*W + (j*(SMALLW-1) + x)] = tile[y*(SMALLW) + x]; - } - } - } - } - if (!rgba2png(output, combined, (SMALLW-1)*W, (SMALLH-1)*H)) { - fprintf(stderr, "Failed to write cake image.\n"); - exit(1); - } - } - else { - combined = malloc(SMALLH*H * SMALLW*W * sizeof(rgba)); - for (int i = 0; i < H; i++) { - for (int j = 0; j < W; j++) { - uint8_t buf[SMALLH * SMALLW * 2]; - if (fread(buf, sizeof(buf), 1, file) != 1) goto fail; - rgba *tile = raw2rgba(buf, SMALLH, SMALLW, 16); - for (int y = 0; y < SMALLH; y++) { - for (int x = 0; x < SMALLW; x++) { - combined[(i*SMALLH + y) * SMALLW*W + (j*SMALLW + x)] = tile[y*SMALLW + x]; - } - } - } - } - if (!rgba2png(output, combined, SMALLW*W, SMALLH*H)) { - fprintf(stderr, "Failed to write cake image.\n"); - exit(1); - } - } - return; -fail: - fprintf(stderr, "Failed to read cake binary.\n"); - exit(1); -} - -// Modified from n64split -static void usage() { - fprintf(stderr, - "Usage: %s --type sky|cake|cake_eu {--combine INPUT OUTPUT | --split INPUT OUTPUT}\n" - "\n" - "Optional arguments:\n" - " --write-tiles OUTDIR Also create the individual tiles' PNG files\n", programName); -} - -// Modified from n64split -static int parse_arguments(int argc, char *argv[]) { - programName = argv[0]; - for (int i = 1; i < argc; ++i) { - if (strcmp(argv[i], "--combine") == 0) { - if (++i >= argc || mode != InvalidMode) { - goto invalid; - } - - mode = Combine; - input = argv[i]; - if (++i >= argc) { - goto invalid; - } - - output = argv[i]; - } - - if (strcmp(argv[i], "--split") == 0) { - if (++i >= argc || mode != InvalidMode) { - goto invalid; - } - - mode = Split; - input = argv[i]; - if (++i >= argc) { - goto invalid; - } - - output = argv[i]; - } - - if (strcmp(argv[i], "--type") == 0) { - if (++i >= argc || type != InvalidType) { - goto invalid; - } - - if (strcmp(argv[i], "sky") == 0) { - type = Skybox; - } else if(strcmp(argv[i], "cake-eu") == 0) { - type = CakeEU; - } else if(strcmp(argv[i], "cake") == 0) { - type = Cake; - } - } - - if (strcmp(argv[i], "--write-tiles") == 0) { - if (++i >= argc || argv[i][0] == '-') { - goto invalid; - } - - writeTiles = true; - writeDir = argv[i]; - } - } - - return 1; -invalid: - usage(); - return 0; -} - -bool imageMatchesDimensions(int width, int height) { - bool matchesDimensions = false; - for (int expand = false; expand <= true; ++expand) { - if (width == IMAGE_PROPERTIES[type][expand].imageWidth && - height == IMAGE_PROPERTIES[type][expand].imageHeight) { - matchesDimensions = true; - expanded = expand; - break; - } - } - if (!matchesDimensions) { - if (type != CakeEU) { - fprintf(stderr, "err: That type of image must be either %d x %d or %d x %d. Yours is %d x %d.\n", - IMAGE_PROPERTIES[type][false].imageWidth, IMAGE_PROPERTIES[type][false].imageHeight, - IMAGE_PROPERTIES[type][true].imageWidth, IMAGE_PROPERTIES[type][true].imageHeight, - width, height); - } - else { - fprintf(stderr, "err: That type of image must be %d x %d. Yours is %d x %d.\n", - IMAGE_PROPERTIES[type][true].imageWidth, IMAGE_PROPERTIES[type][true].imageHeight, - width, height); - - } - return false; - } - - if (type == CakeEU) { - expanded = true; - } - - return true; -} - -int main(int argc, char *argv[]) { - if (parse_arguments(argc, argv) == false) { - return EXIT_FAILURE; - } - - if (type == Skybox && mode == Split) { - // Extract the skybox's name (ie: bbh, bidw) from the input png - char *base = basename(input); - strcpy(skyboxName, base); - char *extension = strrchr(skyboxName, '.'); - if (extension) *extension = '\0'; - } - - switch (mode) { - case Combine: - switch (type) { - case Skybox: - combine_skybox(input, output); - break; - case Cake: - combine_cakeimg(input, output, 0); - break; - case CakeEU: - combine_cakeimg(input, output, 1); - break; - default: - usage(); - return EXIT_FAILURE; - break; - } - break; - - case Split: { - int width, height; - rgba *image = png2rgba(input, &width, &height); - if (image == NULL) { - fprintf(stderr, "err: Could not load image %s\n", argv[1]); - return EXIT_FAILURE; - } - - if (!imageMatchesDimensions(width, height)) { - return EXIT_FAILURE; - } - - allocate_tiles(); - - init_tiles(image, expanded); - switch (type) { - case Skybox: - assign_tile_positions(); - write_skybox_c(); - break; - case Cake: - case CakeEU: - assign_tile_positions(); - write_cake_c(); - break; - default: - fprintf(stderr, "err: Unknown image type.\n"); - return EXIT_FAILURE; - break; - } - - if (writeTiles) { - write_tiles(); - } - free_tiles(); - free(image); - } break; - default: - usage(); - return EXIT_FAILURE; - break; - } - - - return EXIT_SUCCESS; -} From 921be6f0c520d65d31ad93dc8f02a95016991a0c Mon Sep 17 00:00:00 2001 From: Cheezepin Date: Thu, 15 Jul 2021 11:38:38 -0700 Subject: [PATCH 7/7] haveyourcake but it works --- levels/ending/geo.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/levels/ending/geo.c b/levels/ending/geo.c index b8e2711ad..867bebb56 100644 --- a/levels/ending/geo.c +++ b/levels/ending/geo.c @@ -21,7 +21,9 @@ const GeoLayout ending_geo_000050[] = { GEO_OPEN_NODE(), GEO_NODE_ORTHO(100), GEO_OPEN_NODE(), +#ifdef VERSION_EU GEO_BACKGROUND_COLOR(0x0001), +#endif GEO_ASM(0, geo_exec_cake_end_screen), GEO_CLOSE_NODE(), GEO_CLOSE_NODE(),