/*
            __
           / /_______________  ____  ___
          / __/ ___/ ___/ __ \/ __ \/ _ \
         / /_(__  ) /__/ /_/ / /_/ /  __/
         \__/____/\___/\____/ .___/\___/
                           /_/
    
    timing functions

    By Michael Stevens

    See license.html for copyright information
*/

#ifndef TSCOPE_TIMER_H
#define TSCOPE_TIMER_H

#ifndef ALLEGRO_WINDOWS
#define __int64 unsigned long long
#endif

#ifdef __cplusplus
extern "C" {
#endif

    void ts_timercfg(char *file);

    int ts_priority(int prio);

    __int64 ts_time();
    void ts_wait(__int64 time);
    int ts_waitmode(int mode);

    int ts_defkey(int key);
    int ts_hidekey(int key);
    void ts_clrkeys();

    int ts_resp(__int64 * time, __int64 * error, __int64 maxtime);
    int ts_release(__int64 * time, __int64 * error, __int64 maxtime);

    int ts_respstatus();
    void ts_flushresp();

    void ts_vsync(__int64 * time, __int64 * error);
    void ts_vsyncs(__int64 * time, __int64 * error, int nsync);
    int ts_vsyncresp(__int64 * time, __int64 * error, int maxsync);

    int ts_vsyncstatus();

    int ts_vsyncmode(int mode);
    int ts_vsynclimit(int limit);

    int ts_setserialport(int port);
    void ts_settrigger(int port, __int64 time);
    void ts_trigger(char val);

    __int64 tts(__int64 time);
    __int64 ttm(__int64 time);
    __int64 ttmu(__int64 time);

    __int64 stt(__int64 time);
    __int64 mtt(__int64 time);
    __int64 mutt(__int64 time);

#ifdef __cplusplus
}
#endif


// priority modes
#ifdef ALLEGRO_WINDOWS
#define REALTIME    5
#define HIGH        4
#define ABOVE_NORMAL    3
#define NORMAL      2
#define BELOW_NORMAL    1
#define IDLE        0
#endif

#ifdef ALLEGRO_LINUX
#define REALTIME            -20
#define HIGH                -15 
#define ABOVE_NORMAL        -10
#define NORMAL               0
#define BELOW_NORMAL        10
#define IDLE                19
#endif

#ifdef ALLEGRO_MACOSX
#define REALTIME    5
#define HIGH        4
#define ABOVE_NORMAL    3
#define NORMAL      2
#define BELOW_NORMAL    1
#define IDLE        0
#endif


//vsync modes
#define NOSYNC      0
#define WHATEVER    1
#define REALSYNC    2
#define SIMSYNC_ACTUAL  3
#define SIMSYNC_REQ 4
//wait modes
#define BUSYLOOP    0
#define SLEEP_WAIT  1
#define SLEEP_RESP  2
#define SLEEP_VSYNC 3

// response key assignments
// keyboard buttons are defined by allegro
// KEY_MAX contains the maximum number of keyboard keys
// supported by allegro

// response buttons// mouse
#define KEY_NULL    0
#define P1      (KEY_MAX +  0)  // parallel port 1 keys
#define P2      (KEY_MAX +  1)
#define P3      (KEY_MAX +  2)
#define P4      (KEY_MAX +  3)
#define P5      (KEY_MAX +  4)
#define IP1     (KEY_MAX +  5)
#define IP2     (KEY_MAX +  6)
#define IP3     (KEY_MAX +  7)
#define IP4     (KEY_MAX +  8)
#define IP5     (KEY_MAX +  9)
#define PP1     (KEY_MAX + 10)  // parallel port 2 keys
#define PP2     (KEY_MAX + 11)
#define PP3     (KEY_MAX + 12)
#define PP4     (KEY_MAX + 13)
#define PP5     (KEY_MAX + 14)
#define IPP1    (KEY_MAX + 15)
#define IPP2    (KEY_MAX + 16)
#define IPP3    (KEY_MAX + 17)
#define IPP4    (KEY_MAX + 18)
#define IPP5    (KEY_MAX + 19)
#define PPP1    (KEY_MAX + 20)  // parallel port 3 keys
#define PPP2    (KEY_MAX + 21)
#define PPP3    (KEY_MAX + 22)
#define PPP4    (KEY_MAX + 23)
#define PPP5    (KEY_MAX + 24)
#define IPPP1   (KEY_MAX + 25)
#define IPPP2   (KEY_MAX + 26)
#define IPPP3   (KEY_MAX + 27)
#define IPPP4   (KEY_MAX + 28)
#define IPPP5   (KEY_MAX + 29)
#define G1      (KEY_MAX + 30)  // gameport
#define G2      (KEY_MAX + 31)
#define G3      (KEY_MAX + 32)
#define G4      (KEY_MAX + 33)
#define IG1     (KEY_MAX + 34)
#define IG2     (KEY_MAX + 35)
#define IG3     (KEY_MAX + 36)
#define IG4     (KEY_MAX + 37)                                              
#define S1      (KEY_MAX + 38)  // serial port
#define S2      (KEY_MAX + 39)
#define S3      (KEY_MAX + 40)
#define S4      (KEY_MAX + 41)
#define S5      (KEY_MAX + 42)
#define S6      (KEY_MAX + 43)
#define S7      (KEY_MAX + 44)
#define J1      (KEY_MAX + 45)  // joystick
#define J2      (KEY_MAX + 46)
#define J3      (KEY_MAX + 47)
#define J4      (KEY_MAX + 48)
#define J5      (KEY_MAX + 49)
#define J6      (KEY_MAX + 50)
#define J7      (KEY_MAX + 51)
#define J8      (KEY_MAX + 52)
#define J9      (KEY_MAX + 53)
#define J10     (KEY_MAX + 54)
#define M1      (KEY_MAX + 55)  // mouse    
#define M2      (KEY_MAX + 56)
#define M3      (KEY_MAX + 57)
                           
/*  buttons/bits/pins of the data byte of the parallell port
    used for sending ts_trigger signals
    bit0 -> pin2
    bit1 -> pin3
    bit2 -> pin4
    bit3 -> pin5
    bit4 -> pin6
    bit5 -> pin7
    bit6 -> pin8
    bit7 -> pin9
*/
#define NRESPKEYS   (KEY_MAX+58)
#endif                          //      TSCOPE_TIMER_H


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