typedef void (*ptr_func_t)(); struct smd_header { char console_name[16]; char copyright[16]; char domestic_name[48]; char international_name[48]; char version[14]; unsigned short checksum; char io_support[16]; unsigned long rom_start; unsigned long rom_end; unsigned long ram_start; unsigned long ram_end; unsigned long sram_enabled; unsigned long unused1; unsigned long sram_start; unsigned long sram_end; unsigned long unused2; unsigned long unused3; char notes[40]; char country_codes[16]; }; extern int main(void); static __attribute__((interrupt)) void __start(void); static __attribute__((interrupt)) void HSYNC_handler(void); static __attribute__((interrupt)) void VSYNC_handler(void); static __attribute__((interrupt)) void CPUException_handler(void); extern unsigned __stacktop; __attribute__((section(".stack"), used)) unsigned *__stack_init = &__stacktop; __attribute__((section(".vectors"), used)) ptr_func_t __isr_vectors[] = { __start, CPUException_handler, CPUException_handler, CPUException_handler, CPUException_handler, CPUException_handler, CPUException_handler, CPUException_handler, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, HSYNC_handler, __start, VSYNC_handler, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, __start, }; __attribute__((section(".smd_header"), used)) struct smd_header __smd_header = { .console_name = "SEGA MEGA DRIVE ", .copyright = "BIGEVILCORP. ", .domestic_name = "HELLO WORLD ", .international_name = "HELLO WORLD ", .version = "GM XXXXXXXX-XX", .checksum = 0x0000, .io_support = "J ", .rom_start = 0, .rom_end = 0xfffff, .ram_start = 0xff0000, .ram_end = 0xffffff, .sram_enabled = 0x00000000, .unused1 = 0x00000000, .sram_start = 0x00000000, .sram_end = 0x00000000, .unused2 = 0x00000000, .unused3 = 0x00000000, .notes = " ", .country_codes = " E ", }; static void __start(void) { main(); } static void HSYNC_handler(void) {} static void VSYNC_handler(void) {} static void CPUException_handler(void) { asm inline volatile (" stop #2700"); }