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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
{$ifdef NDS_INTERFACE}
type
TGetHeaderCallback = function(source: pcuint8; dest: pcuint16; r2: cuint32): pcint;
getHeaderCallback = TGetHeaderCallback;
TGetResultCallback = function(source: pcuint8): pcint;
getResultCallback = TGetResultCallback;
TGetByteCallback = function(source: pcuint8): pcuint8;
getByteCallback = TGetByteCallback;
type
DecompressionStream = packed record
getSize: TGetHeaderCallback;
getResult: TGetResultCallback;
readByte: TGetByteCallback;
end;
TDecompressionStream = DecompressionStream;
PDecompressionStream = ^TDecompressionStream;
UnpackStruct = packed record
sourceSize: cuint16; // in bytes
sourceWidth: cuint8;
destWidth: cuint8;
dataOffset: cuint32;
end;
TUnpackStruct = UnpackStruct;
PUnpackStruct = ^TUnpackStruct;
procedure swiSoftReset(); cdecl; external;
procedure swiDelay(duration: cuint32); cdecl; external;
function swiDivide(numerator, divisor: cint): cint; cdecl; external;
function swiRemainder(numerator, divisor: cint): cint; cdecl; external;
procedure swiDivMod(numerator, divisor: cint; var result, remainder: cint); cdecl; external;
const
COPY_MODE_HWORD = (0);
COPY_MODE_WORD = (1 shl 26);
COPY_MODE_COPY = (0);
COPY_MODE_FILL = (1 shl 24);
procedure swiCopy(const source: pointer; dest: pointer; flags: cint); cdecl; external;
procedure swiFastCopy(const source: pointer; dest: pointer; flags: cint); cdecl; external;
function swiSqrt(value: cint): cint; cdecl; external;
function swiCRC16(crc: cuint16; data: pointer; size: cuint32): cuint16; cdecl; external;
function swiIsDebugger(): cint; cdecl; external;
procedure swiUnpackBits(source: pcuint8; destination: pcuint32; params: PUnpackStruct); cdecl; external;
procedure swiDecompressLZSSWram(source, destination: pointer); cdecl; external;
function swiDecompressLZSSVram(source, destination: pointer; toGetSize: cuint32; stream: PDecompressionStream): cint; cdecl; external;
function swiDecompressLZSSVramNTR(source, destination: pointer; toGetSize: cuint32; stream: PDecompressionStream): cint; cdecl; external;
function swiDecompressLZSSVramTWL(source, destination: pointer; toGetSize: cuint32; stream: PDecompressionStream): cint; cdecl; external;
function swiDecompressHuffman(source, destination: pointer; toGetSize: cuint32; stream: PDecompressionStream): cint; cdecl; external;
procedure swiDecompressRLEWram(source, destination: pointer); cdecl; external;
function swiDecompressRLEVram(source, destination: pointer; toGetSize: cuint32; stream: PDecompressionStream): cint; cdecl; external;
{$ifdef ARM9}
procedure swiWaitForIRQ(); cdecl; external;
procedure swiSetHaltCR(data: cuint32); cdecl; external;
procedure swiDecodeDelta8(source, destination: pointer); cdecl; external;
procedure swiDecodeDelta16(source, destination: pointer); cdecl; external;
{$endif ARM9}
{$ifdef ARM7}
procedure swiHalt(); cdecl; external;
procedure swiSleep(); cdecl; external;
procedure swiSwitchToGBAMode(); cdecl; external;
procedure swiSetHaltCR(data: cuint8); cdecl; external;
function swiGetSineTable(index: cint): cuint16; cdecl; external;
function swiGetPitchTable(index: cint): cuint16; cdecl; external;
function swiGetVolumeTable(index: cint): cuint8; cdecl; external;
procedure swiChangeSoundBias(enabled, delay: cint); cdecl; external;
{$endif ARM7}
{$endif NDS_INTERFACE}
|