summaryrefslogtreecommitdiff
path: root/packages/libndsfpc/src/nds/disc_io.inc
blob: 80edeafe78e32ab5933aaf8ef882f837219cbcd5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
{$ifdef NDS_INTERFACE}

//const
//  FEATURE_MEDIUM_CANREAD	= $00000001;
//  FEATURE_MEDIUM_CANWRITE	= $00000002;
//  FEATURE_SLOT_GBA			= $00000010;
//  FEATURE_SLOT_NDS			= $00000020;

function DEVICE_TYPE_DSI_SD(): cuint32; inline;

type
  FN_MEDIUM_STARTUP = function: cbool;
  FN_MEDIUM_ISINSERTED = function: cbool;
  FN_MEDIUM_READSECTORS = function(sector, numSectors: cuint32; buffer: pointer): cbool;
  FN_MEDIUM_WRITESECTORS = function(sector, numSectors: cuint32; const buffer: pointer): cbool;
  FN_MEDIUM_CLEARSTATUS = function: cbool;
  FN_MEDIUM_SHUTDOWN = function: cbool;

  DISC_INTERFACE_STRUCT = record
    ioType: cuint32;
    features: cuint32;
    startup: FN_MEDIUM_STARTUP;
    isInserted: FN_MEDIUM_ISINSERTED;
    readSectors: FN_MEDIUM_READSECTORS;
    writeSectors: FN_MEDIUM_WRITESECTORS;
    clearStatus: FN_MEDIUM_CLEARSTATUS;
    shutdown: FN_MEDIUM_SHUTDOWN;
  end;

  DISC_INTERFACE = DISC_INTERFACE_STRUCT;
  TDISC_INTERFACE = DISC_INTERFACE_STRUCT;
  PDISC_INTERFACE = ^DISC_INTERFACE_STRUCT;
  

(*
  PARTITION_INTERFACE = (
    PI_DEFAULT = 0,
    PI_SLOT_1, 
    PI_SLOT_2, 
    PI_CUSTOM
  );
*)

function get_io_dsisd(): PDISC_INTERFACE; cdecl; external;
{$endif NDS_INTERFACE}

{$ifdef NDS_IMPLEMENTATION}

function DEVICE_TYPE_DSI_SD(): cuint32; inline; 
begin
  DEVICE_TYPE_DSI_SD := ord('_') or (ord('S') shl 8) or (ord('D') shl 16) or (ord('_') shl 24);
end;


{$endif NDS_IMPLEMENTATION}