#ifndef SEGMENT_SYMBOLS_H #define SEGMENT_SYMBOLS_H #include #include #define DECLARE_VRAM_SEGMENT(name) \ extern u32 name ## _VRAM[]; \ extern u32 name ## _VRAM_END[] #define DECLARE_ROM_SEGMENT(name) \ extern u32 name ## _ROM_START[]; \ extern u32 name ## _ROM_END[] #define DECLARE_DATA_SEGMENT(name) \ extern u32 name ## _DATA_START[]; \ extern u32 name ## _DATA_END[]; \ extern u32 name ## _DATA_SIZE #define DECLARE_BSS_SEGMENT(name) \ extern u32 name ## _BSS_START[]; \ extern u32 name ## _BSS_END[] #define DECLARE_SEGMENT(name) \ DECLARE_VRAM_SEGMENT(name); \ DECLARE_ROM_SEGMENT(name); \ DECLARE_DATA_SEGMENT(name); \ DECLARE_BSS_SEGMENT(name) #define SEGMENT_VRAM_START(segment) (segment ## _VRAM) #define SEGMENT_VRAM_END(segment) (segment ## _VRAM_END) #define SEGMENT_VRAM_SIZE(segment) ((uintptr_t)SEGMENT_VRAM_END(segment) - (uintptr_t)SEGMENT_VRAM_START(segment)) #define SEGMENT_ROM_START(segment) ((void*)segment ## _ROM_START) #define SEGMENT_ROM_END(segment) ((void*)segment ## _ROM_END) #define SEGMENT_ROM_SIZE(segment) (SEGMENT_ROM_END(segment) - SEGMENT_ROM_START(segment)) #define SEGMENT_DATA_SIZE_CONST(segment) ((RomOffset)segment ## _DATA_SIZE) #define SEGMENT_BSS_START(segment) (segment ## _BSS_START) #define SEGMENT_BSS_END(segment) (segment ## _BSS_END) #define SEGMENT_BSS_SIZE(segment) ((uintptr_t)SEGMENT_BSS_END(segment) - (uintptr_t)SEGMENT_BSS_START(segment)) DECLARE_ROM_SEGMENT(n64_ptr_tables_v2_00); DECLARE_ROM_SEGMENT(n64_ptr_tables_v2_01); DECLARE_ROM_SEGMENT(n64_wave_data); DECLARE_ROM_SEGMENT(n64_wave_table_00); DECLARE_ROM_SEGMENT(n64_wave_table_01); #endif // SEGMENT_SYMBOLS_H