/*
            __
           / /_______________  ____  ___
          / __/ ___/ ___/ __ \/ __ \/ _ \
         / /_(__  ) /__/ /_/ / /_/ /  __/
         \__/____/\___/\____/ .___/\___/
                           /_/
    
    tscope-internal functions and variables

    By Michael Stevens

    See license.html for copyright information
*/

#ifndef INTERNAL_H
#define INTERNAL_H

// -----------------------------------------------------------------------
// internal variables 

// variables set by internal.c
extern int _tscope_flag;        // needed by the screen, sound and timer 

// variables set by screen.c 
extern int _debug_flag;         // amount of debugging info 
extern int _ndebug;
extern int _vdebug[];
extern char *_sdebug[];
extern int _screen_flag;        // graphics screen on/off
extern int _dbuff_flag;         // double buffer on/off

extern int _refreshrate;        // screen parameters
extern int _screendepth;        // requested by the user
extern int _screensize;
extern int _nscreensize;
extern int _vscreensize[];
extern char *_sscreensize[];
extern int _screenmode;
extern int _nscreenmode;
extern int _vscreenmode[];
extern char *_sscreenmode[];
extern int _dbuff;
extern int _screenx;
extern int _screeny;

extern int _actualdepth;        // actual screen parameters
extern int _actual_refreshrate;
extern int _actualx;
extern int _actualy;

extern int _desktopx;           // desktop parameters
extern int _desktopy;
extern int _desktopdepth;

extern map *_screenmap;         // screen bitmap
extern map *_dbuffmap;          // double buffer bitmap
extern map *_destmap;           // curren destination bitmap

// variables set by graphics.c 
extern int _graphics_flag;      // graphics on/off

extern int _fgcolor;            // parameters requested by user
extern int _bgcolor;
extern int _textbgcolor;
extern int _fill;
extern int _font;

extern DATAFILE *_fontfile[NFONTS]; // font files 
extern FONT *_basefont;         // standard allegro font

// variables set by coordinates.c 
extern int _coordinates;        // current coordinate system

// variables set by textio.c 

// variables set by draw.c 

// variables set by timer.c 
extern int _timer_flag;         // timer on/off

extern int _trigger_flag;       // parport trigger on/off
extern int _vsync_flag;         // actual vsync mode
extern int _rtc_flag;           
extern int _rtc_fd;
extern int _nvsyncmode;
extern int _vvsyncmode[];
extern char *_svsyncmode[];
extern int _wait_flag;          // wait mode
extern int _nwaitmode;
extern int _vwaitmode[];
extern char *_swaitmode[];

extern int _parport_flag;       // status drivers input devices 
extern int _parport1_flag;
extern int _parport2_flag;
extern int _parport3_flag;
extern int _gameport_flag;
extern int _serialport_flag;
extern int _joystick_flag;      
extern int _mouse_flag;
extern int _keyboard_flag;

#ifdef ALLEGRO_WINDOWS
extern HANDLE _serialport_handle;
#endif
extern int _serialport_num;


extern int _parport1_resp_flag; // are the input devices currently 
extern int _parport2_resp_flag; // used for response registration
extern int _parport3_resp_flag;
extern int _gameport_resp_flag; 
extern int _serialport_resp_flag;
extern int _joystick_resp_flag;
extern int _mouse_resp_flag;
extern int _keyboard_resp_flag;

extern int _key_defined[NRESPKEYS]; // is a response key defined
extern int _key_active[NRESPKEYS];  // is a response key active
                                    // (i.e. not hidden by user)
extern int _n_active_keys;      // n of active response keys                   

extern int _ndefkey;
extern int _vdefkey[];
extern char *_sdefkey[];

extern int _priority;           // program priority
extern int _npriority;
extern int _vpriority[];
extern char *_spriority[];
extern __int64 _clockfreq;      // clock frequency (tics/second)
#ifdef ALLEGRO_WINDOWS
extern LARGE_INTEGER _clocktime;    // n of tics since
#else                               // computer started
extern struct timeval _clocktime;
#endif

extern int _vsync_requestedmode;    // vsync mode requested by user
extern __int64 _vsyncinterval;  // n of tics between sync signals
extern int _vsync_limit;        // maximum refreshrate for real vsync
                // above limit simulate vsync

extern int _trigport;           // parport used to send triggers
extern int _trigaddress;        // byte parport (should be DATA byte)
extern __int64 _trigtime;       // time trigger signal stays on

// variables set by random.c    
extern int _random_flag;        // randomization subsystem on/off

extern int _rndseed[3];         // random seeds used to generate numbers
                // changes with every draw

// variables set by mouse.c
extern int _mousegui_flag;      // mousegui on/off

extern int _mousecolor;         // color mouse pointer
extern int _mousex;             // start position mouse
extern int _mousey;             // (in standard screen coordinates)
extern BITMAP *_mousemap;       // mouse pointer bitmap

// variables set by sound.c 
extern int _sound_flag;         // sound system on/off

extern int _volume;             // sample/stream volume
extern int _pan;                // sample/stream pan
extern int _loop;               // play sample once or repeat

extern int _samplerate;         // stream samplerate
extern int _streambufsize;      // stream buffer size
extern int _sinefreq;           // frequency sine 

extern unsigned char (*_streamfunc) (__int64);  // stream function 

// variables set by sound2.c
extern int _snd2_flag;

extern int _snd2_channels;
extern int _snd2_samplerate;
extern int _snd2_sampleformat;              // float/integer
extern __int64 _snd2_filebufferlength;  


// -----------------------------------------------------------------------
// internal functions 
#ifdef __cplusplus
extern "C" {
#endif

    void _tscope_init();        // first init function
    // everything but the randomisation
    // subsystem needs this

    int _screen_init();

    void _graphics_init();
    void _graphics_exit();

    __int64 _timer_init();
    void _timer_exit();
    void _vsync_init();
    void _vsync_exit();
    void _rtc_init();
    void _rtc_nap();
    void _rtc_exit();

    void _parport_init(int nr);
    void _parport_exit();
    void _gameport_init();
    void _gameport_exit();
    void _serialport_init();
    int _serialport_poll();
    int _serialport_flush();

    void _serialport_exit();
    void _joystick_init();
    void _joystick_exit();
    void _mouse_init();
    void _mouse_exit();
    void _keyboard_init();
    void _keyboard_exit();

    void _random_init();
    void _random_exit();

    void _mousegui_init();
    void _mousegui_exit();

    void _sound_init();
    void _sound_exit();

    void _snd2_init();  
    void _snd2_exit();

    int _setcfg(char *file);
    int _readcfg(int nval, char **names, char *input);

#ifdef __cplusplus
}
#endif
// -----------------------------------------------------------------------
// internal definitions
// port addresses
#define PAR1DATA             0x378
#define PAR1STATUS           0x379
#define PAR1CONTROL          0x37A
#define PAR2DATA             0x278
#define PAR2STATUS           0x279
#define PAR2CONTROL          0x27A
#define PAR3DATA             0x3BC
#define PAR3STATUS           0x3BD
#define PAR3CONTROL          0x3BE
#define GAMEPORT            0x201
#define VSYNCPORT           0x3DA
#endif                          //      INTERNAL_H


top
Persoonlijke pagina Universiteit GentTscope
Allegro | Cygwin | Gcc
© See license.html for copyright information