sgdk
sys.h
Go to the documentation of this file.
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_
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines