Repository URL to install this package:
|
Version:
3.0.0 ▾
|
{$IFDEF OGC_INTERFACE}
const
SI_CHAN0 = 0;
SI_CHAN1 = 1;
SI_CHAN2 = 2;
SI_CHAN3 = 3;
SI_MAX_CHAN = 4;
SI_CHAN0_BIT = $80000000;
SI_CHAN1_BIT = $40000000;
SI_CHAN2_BIT = $20000000;
SI_CHAN3_BIT = $10000000;
function SI_CHAN_BIT(chn: cint): cint; inline;
const
SI_ERROR_UNDER_RUN = $0001;
SI_ERROR_OVER_RUN = $0002;
SI_ERROR_COLLISION = $0004;
SI_ERROR_NO_RESPONSE = $0008;
SI_ERROR_WRST = $0010;
SI_ERROR_RDST = $0020;
SI_ERR_UNKNOWN = $0040;
SI_ERR_BUSY = $0080;
SI_TYPE_MASK = $18000000;
SI_TYPE_N64 = $00000000;
SI_TYPE_DOLPHIN = $08000000;
SI_TYPE_GC = SI_TYPE_DOLPHIN;
// GameCube specific
const
SI_GC_WIRELESS = $80000000;
SI_GC_NOMOTOR = $20000000; // no rumble motor
SI_GC_STANDARD = $01000000;
// WaveBird specific
const
SI_WIRELESS_RECEIVED = $40000000; // 0: no wireless unit
SI_WIRELESS_IR = $04000000; // 0: IR 1: RF
SI_WIRELESS_STATE = $02000000; // 0: variable 1: fixed
SI_WIRELESS_ORIGIN = $00200000; // 0: invalid 1: valid
SI_WIRELESS_FIX_ID = $00100000; // 0: not fixed 1: fixed
SI_WIRELESS_TYPE = $000f0000;
SI_WIRELESS_LITE_MASK = $000c0000; // 0: normal 1: lite controller
SI_WIRELESS_LITE = $00040000; // 0: normal 1: lite controller
SI_WIRELESS_CONT_MASK = $00080000; // 0: non-controller 1: non-controller
SI_WIRELESS_CONT =$00000000;
SI_WIRELESS_ID = $00c0ff00;
SI_WIRELESS_TYPE_ID = ( SI_WIRELESS_TYPE or SI_WIRELESS_ID );
SI_N64_CONTROLLER = ( SI_TYPE_N64 or $05000000 );
SI_N64_MIC = ( SI_TYPE_N64 or $00010000 );
SI_N64_KEYBOARD = ( SI_TYPE_N64 or $00020000 );
SI_N64_MOUSE = ( SI_TYPE_N64 or $02000000 );
SI_GBA = ( SI_TYPE_N64 or $00040000 );
SI_GC_CONTROLLER = ( SI_TYPE_GC or SI_GC_STANDARD );
SI_GC_RECEIVER = ( SI_TYPE_GC or SI_GC_WIRELESS );
SI_GC_WAVEBIRD = ( SI_TYPE_GC or SI_GC_WIRELESS or SI_GC_STANDARD or SI_WIRELESS_STATE or SI_WIRELESS_FIX_ID );
SI_GC_KEYBOARD = ( SI_TYPE_GC or $00200000 );
SI_GC_STEERING = ( SI_TYPE_GC or $00000000 );
type
SICallback = procedure(par0: cint32; par1: cuint32); cdecl;
RDSTHandler = procedure(par0: cuint32; par1: pointer); cdecl;
function SI_Sync: cuint32; cdecl; external;
function SI_Busy: cuint32; cdecl; external;
function SI_IsChanBusy(chan: cint32): cuint32; cdecl; external;
procedure SI_EnablePolling(poll: cuint32); cdecl; external;
procedure SI_DisablePolling(poll: cuint32); cdecl; external;
procedure SI_SetCommand(chan: cint32; cmd: cuint32); cdecl; external;
function SI_GetStatus(chan: cint32): cuint32; cdecl; external;
function SI_GetResponse(chan: cint32; buf: pointer): cuint32; cdecl; external;
function SI_GetResponseRaw(chan: cint32): cuint32; cdecl; external;
procedure SI_RefreshSamplingRate; cdecl; external;
function SI_Transfer(chan: cint32; out_: pointer; out_len: cuint32;
in_: pointer; in_len: cuint32; cb: SICallback; us_delay: cuint32): cuint32; cdecl; external;
function SI_GetTypeAsync(chan: cint32; cb: SICallback): cuint32; cdecl; external;
function SI_GetType(chan: cint32): cuint32; cdecl; external;
function SI_GetCommand(chan: cint32): cuint32; cdecl; external;
procedure SI_TransferCommands; cdecl; external;
function SI_RegisterPollingHandler(handler: RDSTHandler): cuint32; cdecl; external;
function SI_UnregisterPollingHandler(handler: RDSTHandler): cuint32; cdecl; external;
function SI_EnablePollingInterrupt(enable: cint32): cuint32; cdecl; external;
{$ENDIF OGC_INTERFACE}
{$IFDEF OGC_IMPLEMENTATION}
function SI_CHAN_BIT(chn: cint): cint; inline;
begin
SI_CHAN_BIT := SI_CHAN0_BIT shr chn;
end;
{$ENDIF OGC_IMPLEMENTATION}