diff options
Diffstat (limited to 'packages/libndsfpc/src/nds/helper.inc')
-rw-r--r-- | packages/libndsfpc/src/nds/helper.inc | 122 |
1 files changed, 37 insertions, 85 deletions
diff --git a/packages/libndsfpc/src/nds/helper.inc b/packages/libndsfpc/src/nds/helper.inc index 4664e02e56..6e9e3b837d 100644 --- a/packages/libndsfpc/src/nds/helper.inc +++ b/packages/libndsfpc/src/nds/helper.inc @@ -35,105 +35,57 @@ *) -(* +------------------------------------------------------------------------+ *) -(* Begin Random function *) -(* +------------------------------------------------------------------------+ *) {$ifdef NDS_INTERFACE} -const - QRAN_SHIFT = 15; - QRAN_MASK = ((1 shl QRAN_SHIFT) - 1); - QRAN_MAX = QRAN_MASK; - QRAN_A = 1664525; - QRAN_C = 1013904223; - -var - RandSeed: dword = 42; -{$endif NDS_INTERFACE} - -{$ifdef NDS_IMPLEMENTATION} -function Randomize(seed: cint): cint; -var - old: cint; -begin - old := RandSeed; - RandSeed := seed; - Randomize := old; -end; - -function Rand(): cint; -begin - RandSeed := QRAN_A * RandSeed + QRAN_C; - Rand := (RandSeed shr 16) and QRAN_MAX; -end; - -function Rand(value: cint): cint; -var - a: cint; -begin - RandSeed := QRAN_A * RandSeed + QRAN_C; - a := (RandSeed shr 16) and QRAN_MAX; - Rand := (a * value) shr 15; -end; -(* +------------------------------------------------------------------------+ *) -(* End Random function *) -(* +------------------------------------------------------------------------+ *) -{$endif NDS_IMPLEMENTATION} +type + time_t = cint; + ptime_t = ^time_t; + + Ptm = ^tm; + tm = record + tm_sec: cint; + tm_min: cint; + tm_hour: cint; + tm_mday: cint; + tm_mon: cint; + tm_year: cint; + tm_wday: cint; + tm_yday: cint; + tm_isdst: cint; + end; -{$ifdef NDS_INTERFACE} (* Some libc functions *) -function printf(format: Pchar; args: array of const): longint; cdecl; external; +//function printf(format: Pchar; args: array of const): longint; cdecl; external; function printf(format: Pchar): longint; cdecl; varargs; external; -function sprintf(s: Pchar; format: Pchar; args: array of const): longint; cdecl; external; +//function sprintf(s: Pchar; format: Pchar; args: array of const): longint; cdecl; external; function sprintf(s: Pchar; format: Pchar): longint; varargs; cdecl; external; -function iprintf(format: Pchar; args: array of const): longint; cdecl; external; +//function iprintf(format: Pchar; args: array of const): longint; cdecl; external; function iprintf(format: Pchar): longint; varargs; cdecl; external; -function scanf(format: Pchar; args: array of const): longint; cdecl; external; +//function scanf(format: Pchar; args: array of const): longint; cdecl; external; function scanf(format: Pchar): longint; cdecl; varargs; external; -function sscanf(s: Pchar; format: Pchar; args: array of const): longint; cdecl; external; +//function sscanf(s: Pchar; format: Pchar; args: array of const): longint; cdecl; external; function sscanf(s: Pchar; format: Pchar): longint; cdecl; varargs; external; +function strcmp(s1: Pchar; s2: Pchar): longint; cdecl; external; +function malloc(size: integer): pointer; cdecl; external; +function realloc(ptr: pointer; size: integer): pointer; cdecl; external; +procedure free(ptr: pointer); cdecl; external; +function memcpy(dest: pointer; src: pointer; n: integer): pointer; cdecl; external; -(* libc file handling types and routines *) -type - _FILE = record - firstCluster: cuint; - length: cuint; - curPos: cuint; - curClus: cuint; // Current cluster to read from - curSect: integer; // Current sector within cluster - curByte: integer; // Current byte within sector - readBuffer: array [0..511] of byte; // Buffer used for unaligned reads - appClus: cuint; // Cluster to append to - appSect: integer; // Sector within cluster for appending - appByte: integer; // Byte within sector for appending - read: boolean; // Can read from file - write: boolean; // Can write to file - append: boolean;// Can append to file - inUse: boolean; // This file is open - dirEntSector: cuint; // The sector where the directory entry is stored - dirEntOffset: integer; // The offset within the directory sector - end; - P_FILE = ^_FILE; +function gmtime(timer: ptime_t): ptm; cdecl; external; +function time(timer: ptime_t): time_t; cdecl; external; -const - SEEK_SET = 0; - SEEK_CUR = 1; - SEEK_END = 2; +type + TSort = function (const a, b: pointer): integer; +procedure qsort(__base: pointer; __nmemb: integer; __size: integer; __compar: TSort); cdecl; external; -function fopen(filename: Pchar; modes: Pchar): P_FILE; cdecl; external; -function fread(ptr: pointer; size: longint; n: longint; stream: P_FILE): longint; cdecl; external; -function fwrite(ptr: pointer; size: longint; n: longint; s: P_FILE): longint; cdecl; external; -function ftell(stream: P_FILE): longint; cdecl; external; -function fseek(stream: P_FILE; off: longint; whence: longint): longint; cdecl; external; -function fclose(stream: P_FILE): longint; cdecl; external; +function __errno: pcint; cdecl; export; {$endif NDS_INTERFACE} +{$ifdef NDS_IMPLEMENTATION} +function __errno: pcint; cdecl; export; +begin +end; +{$endif NDS_IMPLEMENTATION} - -{$ifdef NDS_INTERFACE} -function Randomize(seed: cint): cint; -function Rand(): cint; -function Rand(value: cint): cint; -{$endif NDS_INTERFACE} |