From 025758bf454bb209aff322e1fc4eacf4b3dde568 Mon Sep 17 00:00:00 2001 From: Arceveti Date: Mon, 15 Apr 2024 14:23:20 -0700 Subject: [PATCH] Improve segment symbols --- include/segment_symbols.h | 50 ++++++++++++++++----------- src/crash_screen/cs_descriptions.c | 1 + src/crash_screen/pages/page_summary.c | 3 +- src/crash_screen/util/map_parser.h | 4 --- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/include/segment_symbols.h b/include/segment_symbols.h index 0a94f7401..9fedbf45d 100644 --- a/include/segment_symbols.h +++ b/include/segment_symbols.h @@ -4,12 +4,18 @@ #ifndef NO_SEGMENTED_MEMORY #define DECLARE_SEGMENT(name) \ extern u8 _##name##SegmentRomStart[]; \ - extern u8 _##name##SegmentRomEnd[]; + extern u8 _##name##SegmentRomEnd[]; \ + extern u8 _##name##SegmentStart[]; \ + extern u8 _##name##SegmentEnd[]; #define DECLARE_NOLOAD(name) \ extern u8 _##name##SegmentBssStart[]; \ extern u8 _##name##SegmentBssEnd[]; +#define DECLARE_TEXT(name) \ + extern u8 _##name##SegmentTextStart[]; \ + extern u8 _##name##SegmentTextEnd[]; + #define DECLARE_ACTOR_SEGMENT(name) \ DECLARE_SEGMENT(name##_mio0) \ DECLARE_SEGMENT(name##_yay0) \ @@ -42,32 +48,34 @@ DECLARE_ACTOR_SEGMENT(group15) DECLARE_ACTOR_SEGMENT(group16) DECLARE_ACTOR_SEGMENT(group17) -DECLARE_SEGMENT(entry) +// BEGIN_SEG() +DECLARE_SEGMENT(boot) // Segment 4 +#ifdef KEEP_MARIO_HEAD +DECLARE_SEGMENT(gd_dynlists) // Segment 4 +#endif // KEEP_MARIO_HEAD +#ifdef HVQM +DECLARE_NOLOAD(hvqmwork) +DECLARE_NOLOAD(adpcmbuf) +DECLARE_NOLOAD(hvqbuf) +#endif // HVQM +DECLARE_SEGMENT(entry) // Segment 7 DECLARE_SEGMENT(main) +DECLARE_NOLOAD(main) DECLARE_SEGMENT(engine) -DECLARE_SEGMENT(behavior) +DECLARE_NOLOAD(engine) +DECLARE_SEGMENT(behavior) // Segment 19 DECLARE_NOLOAD(behavior) DECLARE_SEGMENT(crashscreen) DECLARE_NOLOAD(crashscreen) DECLARE_SEGMENT(scripts) DECLARE_SEGMENT(goddard) +DECLARE_NOLOAD(goddard) DECLARE_SEGMENT(framebuffers) +DECLARE_NOLOAD(framebuffers) +DECLARE_NOLOAD(zbuffer) +DECLARE_NOLOAD(buffers) DECLARE_SEGMENT(assets) -extern u8 _goddardSegmentStart[]; -extern u8 _goddardSegmentEnd[]; -extern u8 _engineSegmentStart[]; -extern u8 _engineSegmentBssEnd[]; -extern u8 _mainSegmentStart[]; -extern u8 _mainSegmentEnd[]; -extern u8 _engineSegmentEnd[]; -extern u8 _crashscreenSegmentStart[]; -extern u8 _crashscreenSegmentEnd[]; -extern u8 _framebuffersSegmentBssStart[]; -extern u8 _framebuffersSegmentBssEnd[]; -extern u8 _zbufferSegmentBssStart[]; -extern u8 _zbufferSegmentBssEnd[]; -extern u8 _buffersSegmentBssStart[]; -extern u8 _buffersSegmentBssEnd[]; +DECLARE_SEGMENT(mapData) DECLARE_LEVEL_SEGMENT(menu) DECLARE_LEVEL_SEGMENT(intro) @@ -115,7 +123,7 @@ DECLARE_SEGMENT(debug_level_select_yay0) DECLARE_SEGMENT(translation_de_yay0) DECLARE_SEGMENT(translation_en_yay0) DECLARE_SEGMENT(translation_fr_yay0) -#endif +#endif // VERSION_EU //added for compatibility DECLARE_SEGMENT(segment2_mio0) @@ -152,8 +160,8 @@ DECLARE_SEGMENT(debug_level_select_mio0) DECLARE_SEGMENT(translation_de_mio0) DECLARE_SEGMENT(translation_en_mio0) DECLARE_SEGMENT(translation_fr_mio0) -#endif +#endif // VERSION_EU -#endif +#endif // !NO_SEGMENTED_MEMORY #endif // SEGMENT_SYMBOLS_H diff --git a/src/crash_screen/cs_descriptions.c b/src/crash_screen/cs_descriptions.c index 0f66e6e16..b008779dc 100644 --- a/src/crash_screen/cs_descriptions.c +++ b/src/crash_screen/cs_descriptions.c @@ -340,6 +340,7 @@ static const IdNamePair sROMSegNames_03_common1_gfx[] = { // 04: SEGMENT_GROUP0_YAY0 static const IdNamePair sROMSegNames_04_group0_gfx[] = { DEF_ROM_SEG_YAY0(group0), + DEF_ROM_SEG(boot), ID_LIST_END(), }; // 05: SEGMENT_GROUPA_YAY0 diff --git a/src/crash_screen/pages/page_summary.c b/src/crash_screen/pages/page_summary.c index c6cc0d573..b4e214c18 100644 --- a/src/crash_screen/pages/page_summary.c +++ b/src/crash_screen/pages/page_summary.c @@ -127,7 +127,7 @@ CSTextCoord_u32 cs_draw_assert(CSTextCoord_u32 line) { case ASSERT_TYPE_LEVEL: // line = (CRASH_SCREEN_NUM_CHARS_Y - 3 - 1); line++; - CSTextCoord_u32 levelStrSize = cs_print(x, TEXT_Y(line), "Level %d: %s", + CSTextCoord_u32 levelStrSize = cs_print(x, TEXT_Y(line), "Level %d %s", gCurrLevelNum, get_level_name(gCurrLevelNum) ); if (gCurrentArea != NULL) { @@ -137,6 +137,7 @@ CSTextCoord_u32 cs_draw_assert(CSTextCoord_u32 line) { case ASSERT_TYPE_RCP: // line = (CRASH_SCREEN_NUM_CHARS_Y - 3 - 3); line++; + //! TODO: Other RCP registers. cs_print(x, TEXT_Y(line), "DPC:\t0x%08X in 0x%08X-0x%08X\nSTAT:\tdp:0x%04X\tsp:0x%04X\nSP DMA:\tfull:%X busy:%X", IO_READ(DPC_CURRENT_REG), IO_READ(DPC_START_REG), IO_READ(DPC_END_REG), IO_READ(DPC_STATUS_REG), IO_READ(SP_STATUS_REG), diff --git a/src/crash_screen/util/map_parser.h b/src/crash_screen/util/map_parser.h index 66eb8ca9d..fe48d9760 100644 --- a/src/crash_screen/util/map_parser.h +++ b/src/crash_screen/util/map_parser.h @@ -110,10 +110,6 @@ extern const MapSymbol gMapSymbols[]; extern const MapSymbol gMapSymbolsEnd[]; extern const Byte gMapStrings[]; extern const Byte gMapStringEnd[]; -extern const Byte _mapDataSegmentStart[]; -extern const Byte _mapDataSegmentEnd[]; -extern const Byte _mapDataSegmentRomStart[]; -extern const Byte _mapDataSegmentRomEnd[]; extern size_t gNumMapSymbols;