/*
* src/system.h
*
* Copyright (C) 1998-2002 BigOrno (bigorno@bigorno.net). All rights reserved.
*
* The use and distribution terms for this software are contained in the file
* named README, which can be found in the root of this distribution. By
* using this software in any fashion, you are agreeing to be bound by the
* terms of this license.
*
* You must not remove this notice, or any other, from this software.
*/
#ifndef _SYSTEM_H
#define _SYSTEM_H
#include <stdint.h>
typedef uint8_t U8;
typedef uint16_t U16;
typedef uint32_t U32;
typedef int8_t S8;
typedef int16_t S16;
typedef int32_t S32;
#ifdef WIN32
#include <stdio.h> // for sprintf_s() and the likes
#else // !WIN32
#define strcpy_s(dest,size,source) strcpy (dest, source)
#define strcat_s(dest,size,source) strcat (dest, source)
#define sprintf_s(dest,size,format,...) sprintf (dest, format, __VA_ARGS__)
#define strncpy_s(dest,size,source,count) strncpy (dest, source, count)
#define vsprintf_s(buffer,maxsize,format,...) vsprintf(buffer,format, ##__VA_ARGS__)
#define fopen_s(fp,filename,mode) *(fp) = fopen (filename, mode)
#endif // WIN32
/* this must be after typedefs because it relies on types defined above */
#include "rects.h"
#include "img.h"
/*
* main section
*/
extern void sys_init (int, char **);
extern void sys_shutdown (void);
extern char *sys_getbasepath (void);
extern void sys_panic (char *, ...);
extern void sys_printf (char *, ...);
extern U32 sys_gettime (void);
extern void sys_sleep (int);
/*
* video section
*/
extern void sysvid_init (void);
extern void sysvid_shutdown (void);
extern void sysvid_clear (void);
extern void sysvid_paint (rect_t *);
/*
* events section
*/
extern void sysevt_poll (void);
extern void sysevt_wait (void);
/*
* sound section
*/
typedef struct
{
U8 *buf;
U32 len;
U8 dispose;
} sound_t;
extern void syssnd_init (void);
extern void syssnd_shutdown (void);
extern void syssnd_vol (S8);
extern void syssnd_toggleMute (void);
extern S8 syssnd_play (sound_t *, S8);
extern void syssnd_pause (U8, U8);
extern void syssnd_stopchan (S8);
extern void syssnd_stopsound (sound_t *);
extern void syssnd_stopall (void);
extern int syssnd_isplaying (sound_t *);
extern sound_t *syssnd_load (char *name);
extern void syssnd_free (sound_t *);
/*
* args section
*/
extern int sysarg_args_period;
extern int sysarg_args_map;
extern int sysarg_args_submap;
extern int sysarg_args_score;
extern int sysarg_args_nosound;
extern int sysarg_args_vol;
extern void sysarg_init (int, char **);
/*
* joystick section
*/
extern void sysjoy_init (void);
extern void sysjoy_shutdown (void);
#endif