Airport/Source/System.h

139 lines
4.1 KiB
C

#ifndef SYSTEM_HEADER__
#define SYSTEM_HEADER__
/* **************************************
* Includes *
* **************************************/
#include "Global_Inc.h"
#include "GameStructures.h"
/* **************************************
* Defines *
* **************************************/
#define TIMER_PRESCALER_1_SECOND 10
#define TIMER_PRESCALER_1_MINUTE (TIMER_PRESCALER_1_SECOND * 60)
#define ARRAY_SIZE(x) (sizeof ((x)) / sizeof ((x[0])))
/* **************************************
* Global Prototypes *
* **************************************/
// Calls PSXSDK init routines
void SystemInit(void);
// Sets default VSync (only sets VBlank flag)
void ISR_SystemDefaultVBlank(void);
// Calls srand() using current global_timer value as seed
void SystemSetRandSeed(void);
// Returns VSync flag value
bool SystemRefreshNeeded(void);
// Loads a file into system's internal buffer
bool SystemLoadFile(const char*fname);
// Loads a file into desired buffer
bool SystemLoadFileToBuffer(const char* fname, uint8_t* buffer, uint32_t szBuffer);
// Clears VSync flag after each frame
void SystemDisableScreenRefresh(void);
// Returns file buffer address
uint8_t* SystemGetBufferAddress(void);
// Tells whether srand() has been called using a pseudo-random value
bool SystemIsRandSeedSet(void);
// To be called from GfxDrawScene after each cycle
void SystemRunTimers(void);
// 1 cycle-length flag with a frequency of 1 Hz
bool System1SecondTick(void);
// 1 cycle-length flag with a frequency of 2 Hz
bool System500msTick(void);
// 1 cycle-length flag with a frequency of 10 Hz
bool System100msTick(void);
// Returns random value between given minimum and maximum values
uint32_t SystemRand(uint32_t min, uint32_t max);
// Increases global timer by 1 step
void SystemIncreaseGlobalTimer(void);
// Sets value to emergency mode flag
void SystemSetEmergencyMode(bool value);
// Returns emergency mode flag state
bool SystemGetEmergencyMode(void);
volatile uint64_t SystemGetGlobalTimer(void);
// Returns whether critical section of code is being entered
volatile bool SystemIsBusy(void);
// Returns whether indicated value is contained inside buffer
bool SystemContains_u8(const uint8_t value, const uint8_t* const buffer, const size_t sz);
// Overload for uint16_t
bool SystemContains_u16(const uint16_t value, const uint16_t* const buffer, const size_t sz);
// Compares two arrays of unsigned short type.
bool SystemArrayCompare(const unsigned short* const arr1, const unsigned short* const arr2, const size_t sz);
// Prints stack pointer address using Serial_printf()
void SystemPrintStackPointerAddress(void);
// Checks if a 32-bit pattern set at the end of the stack has been
// accidentally modified by program flow.
void SystemCheckStack(void);
// Looks for string "str" inside a string array pointed to by "array".
// Returns index inside string array on success, -1 if not found.
int32_t SystemIndexOfStringArray(const char* str, const char* const* array);
// Function overload for uint16_t data type.
int32_t SystemIndexOf_U16(const uint16_t value, const uint16_t* array, const uint32_t sz);
// Function overload for uint8_t data type.
int32_t SystemIndexOf_U8(const uint8_t value, const uint8_t* const array, const uint32_t from, const uint32_t sz);
// Returns frames per second.
volatile uint8_t SystemGetFPS(void);
// Increase temp_fps in order to calculate frame rate.
void SystemAcknowledgeFrame(void);
void SystemCyclicHandler(void);
void SystemClearFileBuffer(void);
void SystemEnableVBlankInterrupt(void);
void SystemDisableVBlankInterrupt(void);
void SystemEnableRCnt2Interrupt(void);
void SystemDisableRCnt2Interrupt(void);
void SystemReturnToLoader(void);
void SystemDevMenuToggle(void);
void SystemDevMenu(void);
void SystemCalculateSine(void);
unsigned char SystemGetSineValue(void);
// Fills str with only file name and extension given input file path.
// For example: "FOLDER\\FOLDER\\MYFILE.EXT;1" -> "MYFILE.EXT"
void SystemGetFileBasename(const char* fileName, char* str, const size_t sz);
/* **************************************
* Global Variables *
* **************************************/
#endif //SYSTEM_HEADER__