sgdk
|
00001 00010 #ifndef _SYS_H_ 00011 #define _SYS_H_ 00012 00013 00014 #define PROCESS_PALETTE_FADING (1 << 0) 00015 #define PROCESS_BITMAP_TASK (1 << 1) 00016 #define PROCESS_DMA_TASK (1 << 2) 00017 #define PROCESS_XGM_TASK (1 << 3) 00018 #define PROCESS_VDP_SCROLL_TASK (1 << 4) 00019 #define PROCESS_XGM2_FADE_TASK (1 << 5) 00020 00021 00022 #define ROM_ALIGN_BIT 17 00023 #define ROM_ALIGN (1 << ROM_ALIGN_BIT) 00024 #define ROM_ALIGN_MASK (ROM_ALIGN - 1) 00025 00026 #define ROM_START ROM 00027 #define ROM_END (((u32) &_stext) + ((u32) &_sdata)) 00028 #define ROM_SIZE ((ROM_END + ROM_ALIGN_MASK) & (~ROM_ALIGN_MASK)) 00029 00030 00031 #define HINTERRUPT_CALLBACK __attribute__ ((interrupt)) void 00032 00033 00034 // exist through rom_head.c 00035 typedef struct 00036 { 00037 char console[16]; /* Console Name (16) */ 00038 char copyright[16]; /* Copyright Information (16) */ 00039 char title_local[48]; /* Domestic Name (48) */ 00040 char title_int[48]; /* Overseas Name (48) */ 00041 char serial[14]; /* Serial Number (2, 12) */ 00042 u16 checksum; /* Checksum (2) */ 00043 char IOSupport[16]; /* I/O Support (16) */ 00044 u32 rom_start; /* ROM Start Address (4) */ 00045 u32 rom_end; /* ROM End Address (4) */ 00046 u32 ram_start; /* Start of Backup RAM (4) */ 00047 u32 ram_end; /* End of Backup RAM (4) */ 00048 char sram_sig[2]; /* "RA" for save ram (2) */ 00049 u16 sram_type; /* 0xF820 for save ram on odd bytes (2) */ 00050 u32 sram_start; /* SRAM start address - normally 0x200001 (4) */ 00051 u32 sram_end; /* SRAM end address - start + 2*sram_size (4) */ 00052 char modem_support[12]; /* Modem Support (24) */ 00053 char notes[40]; /* Memo (40) */ 00054 char region[16]; /* Country Support (16) */ 00055 } ROMHeader; 00056 00057 extern const ROMHeader rom_header; 00058 00059 // size of text segment --> start of initialized data (RO) 00060 extern u32 _stext; 00061 // size of initialized data segment 00062 extern u32 _sdata; 00063 00068 typedef enum 00069 { 00070 IMMEDIATELY, 00071 ON_VBLANK , 00072 ON_VBLANK_START 00073 } VBlankProcessTime; 00074 00075 00082 extern VoidCallback *busErrorCB; 00089 extern VoidCallback *addressErrorCB; 00096 extern VoidCallback *illegalInstCB; 00103 extern VoidCallback *zeroDivideCB; 00110 extern VoidCallback *chkInstCB; 00117 extern VoidCallback *trapvInstCB; 00124 extern VoidCallback *privilegeViolationCB; 00131 extern VoidCallback *traceCB; 00138 extern VoidCallback *line1x1xCB; 00145 extern VoidCallback *errorExceptionCB; 00152 extern VoidCallback *intCB; 00153 00154 00162 void SYS_assertReset(void); 00169 void SYS_reset(void); 00176 void SYS_hardReset(void); 00177 00195 bool SYS_doVBlankProcess(void); 00226 bool SYS_doVBlankProcessEx(VBlankProcessTime processTime); 00227 00236 bool SYS_nextFrame(void); 00237 00244 u16 SYS_getInterruptMaskLevel(void); 00263 void SYS_setInterruptMaskLevel(u16 value); 00264 00283 u16 SYS_getAndSetInterruptMaskLevel(u16 value); 00284 00298 void SYS_disableInts(void); 00308 void SYS_enableInts(void); 00309 00325 void SYS_setVBlankCallback(VoidCallback *CB); 00326 00345 void SYS_setVIntCallback(VoidCallback *CB); 00364 void SYS_setHIntCallback(VoidCallback *CB); 00375 void SYS_setExtIntCallback(VoidCallback *CB); 00376 00383 bool SYS_isInVInt(void); 00384 00391 u16 SYS_isNTSC(void); 00398 u16 SYS_isPAL(void); 00399 00407 u32 SYS_getFPS(void); 00415 fix32 SYS_getFPSAsFloat(void); 00426 u16 SYS_getCPULoad(void); 00433 bool SYS_getShowFrameLoad(); 00447 void SYS_showFrameLoad(bool mean); 00454 void SYS_hideFrameLoad(void); 00455 00461 u16 SYS_computeChecksum(void); 00466 bool SYS_isChecksumOk(void); 00467 00475 void SYS_die(char *err); 00476 00477 #endif // _SYS_H_