summaryrefslogtreecommitdiff
path: root/packages/libndsfpc/src
diff options
context:
space:
mode:
authorLegolas <Legolas@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-09-27 18:54:32 +0000
committerLegolas <Legolas@3ad0048d-3df7-0310-abae-a5850022a9f2>2011-09-27 18:54:32 +0000
commit707ed84c1a5daaf21b6dc091aed6cbcc7a5fc5bf (patch)
tree4f675a1fd5b2cb5f938145218efce16f945ab14e /packages/libndsfpc/src
parent4b5eb399f98146458147c33c0b6c51339a9260de (diff)
downloadfpc-707ed84c1a5daaf21b6dc091aed6cbcc7a5fc5bf.tar.gz
* libnds updated to ver.1.5.4
git-svn-id: http://svn.freepascal.org/svn/fpc/trunk@19255 3ad0048d-3df7-0310-abae-a5850022a9f2
Diffstat (limited to 'packages/libndsfpc/src')
-rw-r--r--packages/libndsfpc/src/nds/arm7/sdmmc.inc5
-rw-r--r--packages/libndsfpc/src/nds/arm9/videoGL.inc17
-rw-r--r--packages/libndsfpc/src/nds/card.inc18
-rw-r--r--packages/libndsfpc/src/nds/fifocommon.inc24
-rw-r--r--packages/libndsfpc/src/nds/fifomessages.inc16
-rw-r--r--packages/libndsfpc/src/nds/interrupts.inc3
-rw-r--r--packages/libndsfpc/src/nds/ndsinclude.inc2
-rw-r--r--packages/libndsfpc/src/nds/system.inc12
8 files changed, 67 insertions, 30 deletions
diff --git a/packages/libndsfpc/src/nds/arm7/sdmmc.inc b/packages/libndsfpc/src/nds/arm7/sdmmc.inc
index 9f7df0c6d3..0cbe19ec55 100644
--- a/packages/libndsfpc/src/nds/arm7/sdmmc.inc
+++ b/packages/libndsfpc/src/nds/arm7/sdmmc.inc
@@ -1,7 +1,6 @@
{$ifdef NDS_INTERFACE}
const
SDMMC_BASE = $04004800;
- DISPSTAT_CHK_VBLANK = (1 shl 0);
REG_SDSTATUS0 = $1c;
REG_SDSTATUS1 = $1e;
@@ -56,9 +55,9 @@ function sdmmc_cardinserted(): cint; cdecl; external;
function sdmmc_sdcard_init(): cint; cdecl; external;
procedure sdmmc_sdcard_readsector(sector_no: cuint32; _out: pointer); cdecl; external;
-procedure sdmmc_sdcard_readsectors(sector_no: cuint32; int numsectors: cint; _out: pointer); cdecl; external;
+procedure sdmmc_sdcard_readsectors(sector_no: cuint32; numsectors: cuint32; _out: pointer); cdecl; external;
procedure sdmmc_sdcard_writesector(sector_no: cuint32; _in: pointer); cdecl; external;
-procedure sdmmc_sdcard_writesectors(sector_no: cuint32; int numsectors: cint; _in: pointer); cdecl; external;
+procedure sdmmc_sdcard_writesectors(sector_no: cuint32; numsectors: cuint32; _in: pointer); cdecl; external;
var
sdmmc_curdevice: cint; cvar; external;
diff --git a/packages/libndsfpc/src/nds/arm9/videoGL.inc b/packages/libndsfpc/src/nds/arm9/videoGL.inc
index caa2d35684..73d001bff2 100644
--- a/packages/libndsfpc/src/nds/arm9/videoGL.inc
+++ b/packages/libndsfpc/src/nds/arm9/videoGL.inc
@@ -184,6 +184,7 @@ const
type
GL_TEXTURE_TYPE_ENUM = cint32;
const
+ GL_NOTEXTURE : GL_TEXTURE_TYPE_ENUM = 0;
GL_RGB32_A3 : GL_TEXTURE_TYPE_ENUM = 1;
GL_RGB4 : GL_TEXTURE_TYPE_ENUM = 2;
GL_RGB16 : GL_TEXTURE_TYPE_ENUM = 3;
@@ -193,7 +194,11 @@ const
GL_RGBA : GL_TEXTURE_TYPE_ENUM = 7;
GL_RGB : GL_TEXTURE_TYPE_ENUM = 8;
-
+type
+ GL_TEXTURE_PALETTE_PARAM_ENUM = cint32;
+const
+ GL_COLOR_TABLE_FORMAT_EXT: GL_TEXTURE_PALETTE_PARAM_ENUM = 0;
+ GL_COLOR_TABLE_WIDTH_EXT : GL_TEXTURE_PALETTE_PARAM_ENUM = 1;
type
DISP3DCNT_ENUM = cint32;
@@ -352,6 +357,7 @@ procedure glRotatef32i(angle: cint; x, y, z: cint32); cdecl; external;
function glTexImage2D(target, empty1: cint; _type: GL_TEXTURE_TYPE_ENUM; sizeX, sizeY, empty2, param: cint; texture: pointer): cint; cdecl; external;
procedure glColorTableEXT(target, empty1: cint; width: cuint16; empty2, empty3: cint; const table: pcuint16); cdecl; external;
+procedure glColorSubTableEXT(target, start, count, empty1, empty2: cint; const data: pcuint16); cdecl; external;
procedure glAssignColorTable(target, name: cint); cdecl; external;
//procedure glTexLoadPal(const pal: pcuint16; count: cuint16; addr: cuint32); cdecl; external;
@@ -359,6 +365,7 @@ procedure glAssignColorTable(target, name: cint); cdecl; external;
procedure glTexParameter(target, param: cint); cdecl; external;
function glGetTexParameter(): cuint32; cdecl; external;
+procedure glGetColorTableParameterEXT(target, pname: cint; params: pcint); cdecl; external;
function glGetTexturePointer(name: cint): pointer; cdecl; external;
procedure glBindTexture(target, name: cint); cdecl; external;
//procedure glColorTable(format: cuint8; addr: cuint32); cdecl; external;
@@ -370,8 +377,8 @@ procedure glMaterialf(mode: GL_MATERIALS_ENUM; color: rgb); cdecl; external;
procedure glInit_C(); cdecl; external;
function glGetGlobals(): PGLHiddenGlobals; cdecl; external;
-function POLY_ALPHA(n: cint): cuint32; inline;
-function POLY_ID(n: cint): cuint32; inline;
+function POLY_ALPHA(n: cuint32): cuint32; inline;
+function POLY_ID(n: cuint32): cuint32; inline;
procedure glBegin(mode: GL_GLBEGIN_ENUM); inline;
procedure glEnd(); inline;
procedure glClearDepth(depth: fixed12d3); inline;
@@ -737,12 +744,12 @@ end;
//////////////////////////////////////////////////////////////////////////////////////////
-function POLY_ALPHA(n: cint): cuint32; inline;
+function POLY_ALPHA(n: cuint32): cuint32; inline;
begin
POLY_ALPHA := cuint32((n) shl 16);
end;
-function POLY_ID(n: cint): cuint32; inline;
+function POLY_ID(n: cuint32): cuint32; inline;
begin
POLY_ID := cuint32((n) shl 24);
end;
diff --git a/packages/libndsfpc/src/nds/card.inc b/packages/libndsfpc/src/nds/card.inc
index f0ecbe9492..b31bd59db5 100644
--- a/packages/libndsfpc/src/nds/card.inc
+++ b/packages/libndsfpc/src/nds/card.inc
@@ -23,7 +23,7 @@ const
EEPROM_WREN = $06;
EEPROM_RDID = $9f;
-// ROMCTRL register:
+// REG_ROMCTRL:
CARD_ACTIVATE = (1 shl 31); // when writing, get the ball rolling
CARD_WR = (1 shl 30);
CARD_nRESET = (1 shl 29); // value on the /reset pin (1 = high out, not a reset state, 0 = low out = in reset)
@@ -62,6 +62,16 @@ const
CARD_CMD_DATA_CHIPID = $B8;
+ // REG_AUXSPICNT
+ CARD_ENABLE = (1 shl 15);
+ CARD_SPI_ENABLE = (1 shl 13);
+ CARD_SPI_BUSY = (1 shl 7);
+ CARD_SPI_HOLD = (1 shl 6);
+
+ CARD_SPICNTH_ENABLE = (1 shl 7); // in byte 1, i.e. 0x8000
+ CARD_SPICNTH_IRQ = (1 shl 6); // in byte 1, i.e. 0x4000
+
+
procedure cardWriteCommand(const command: pcuint8); cdecl; external;
@@ -74,6 +84,7 @@ procedure cardReadHeader(header: pcuint8); cdecl; external;
function cardReadID(flags: cuint32): cuint32; cdecl; external;
procedure cardReset(); cdecl; external;
+procedure eepromWaitBusy(); inline;
procedure cardReadEeprom(address: cuint32; data: pcuint8; length: cuint32; addrtype: cuint32); cdecl; external;
procedure cardWriteEeprom(address: cuint32; data: pcuint8; length: cuint32; addrtype: cuint32); cdecl; external;
@@ -107,4 +118,9 @@ begin
result := (n and $1FFF);
end;
+procedure eepromWaitBusy(); inline;
+begin
+ while (REG_AUXSPICNT^ and CARD_SPI_BUSY) <> 0 do;
+end;
+
{$endif NDS_IMPLEMENTATION}
diff --git a/packages/libndsfpc/src/nds/fifocommon.inc b/packages/libndsfpc/src/nds/fifocommon.inc
index 661545a8a6..2c41eae72b 100644
--- a/packages/libndsfpc/src/nds/fifocommon.inc
+++ b/packages/libndsfpc/src/nds/fifocommon.inc
@@ -9,9 +9,9 @@ const
FIFO_SYSTEM : FifoChannels = 2;
FIFO_MAXMOD : FifoChannels = 3;
FIFO_DSWIFI : FifoChannels = 4;
- FIFO_RSVD_01: FifoChannels = 5;
- FIFO_RSVD_02: FifoChannels = 6;
- FIFO_RSVD_03: FifoChannels = 7;
+ FIFO_SDMMC : FifoChannels = 5;
+ FIFO_RSVD_01: FifoChannels = 6;
+ FIFO_RSVD_02: FifoChannels = 7;
FIFO_USER_01: FifoChannels = 8;
FIFO_USER_02: FifoChannels = 9;
FIFO_USER_03: FifoChannels = 10;
@@ -44,10 +44,14 @@ const
SYS_REQ_KEYS : FifoSystemCommands = 1;
SYS_REQ_TIME : FifoSystemCommands = 2;
SYS_SET_TIME : FifoSystemCommands = 3;
- SYS_HAVE_SD : FifoSystemCommands = 4;
- SYS_SD_START : FifoSystemCommands = 5;
- SYS_SD_IS_INSERTED : FifoSystemCommands = 6;
- SYS_SD_STOP : FifoSystemCommands = 7;
+
+type
+ FifoSdmmcCommands = integer;
+const
+ SDMMC_HAVE_SD : FifoSystemCommands = 0;
+ SDMMC_SD_START : FifoSystemCommands = 1;
+ SDMMC_SD_IS_INSERTED : FifoSystemCommands = 2;
+ SDMMC_SD_STOP : FifoSystemCommands = 3;
type
FifoPMCommands = integer;
@@ -72,9 +76,9 @@ const
type
PM_LedBlinkMode = integer;
const
- PM_LED_ON: PM_LedBlinkMode = (0 shl 4);
- PM_LED_SLEEP: PM_LedBlinkMode = (1 shl 4);
- PM_LED_BLINK: PM_LedBlinkMode = (3 shl 4);
+ PM_LED_ON : PM_LedBlinkMode = 0;
+ PM_LED_SLEEP: PM_LedBlinkMode = 1;
+ PM_LED_BLINK: PM_LedBlinkMode = 3;
//var
// fifo_buffer: array [0..FIFO_BUFFER_ENTRIES*2-1] of cuint32; cvar; external;
diff --git a/packages/libndsfpc/src/nds/fifomessages.inc b/packages/libndsfpc/src/nds/fifomessages.inc
index 415afa297d..64ca98d3c5 100644
--- a/packages/libndsfpc/src/nds/fifomessages.inc
+++ b/packages/libndsfpc/src/nds/fifomessages.inc
@@ -3,14 +3,14 @@
type
FifoMessageType = integer;
const
- SOUND_PLAY_MESSAGE : FifoMessageType = $1234;
- SOUND_PSG_MESSAGE : FifoMessageType = $1235;
- SOUND_NOISE_MESSAGE : FifoMessageType = $1236;
- MIC_RECORD_MESSAGE : FifoMessageType = $1237;
- MIC_BUFFER_FULL_MESSAGE : FifoMessageType = $1238;
- SYS_INPUT_MESSAGE : FifoMessageType = $1239;
- SYS_SD_READ_SECTORS : FifoMessageType = $1240;
- SYS_SD_WRITE_SECTORS : FifoMessageType = $1241;
+ SOUND_PLAY_MESSAGE : FifoMessageType = $1234;
+ SOUND_PSG_MESSAGE : FifoMessageType = $1235;
+ SOUND_NOISE_MESSAGE : FifoMessageType = $1236;
+ MIC_RECORD_MESSAGE : FifoMessageType = $1237;
+ MIC_BUFFER_FULL_MESSAGE : FifoMessageType = $1238;
+ SYS_INPUT_MESSAGE : FifoMessageType = $1239;
+ SDMMC_SD_READ_SECTORS : FifoMessageType = $123A;
+ SDMMC_SD_WRITE_SECTORS : FifoMessageType = $123B;
type
{$PACKRECORDS 4}
diff --git a/packages/libndsfpc/src/nds/interrupts.inc b/packages/libndsfpc/src/nds/interrupts.inc
index 827cc18db0..944693128c 100644
--- a/packages/libndsfpc/src/nds/interrupts.inc
+++ b/packages/libndsfpc/src/nds/interrupts.inc
@@ -31,7 +31,8 @@ const
type
IRQ_MASKSAUX = cuint;
const
- IRQ_I2C: IRQ_MASKSAUX = (1 shl 6); (* Power Button interrupt mask (DSi ARM7) *)
+ IRQ_I2C : IRQ_MASKSAUX = (1 shl 6); (* Power Button interrupt mask (DSi ARM7) *)
+ IRQ_SDMMC : IRQ_MASKSAUX = (1 shl 8); (* Sdmmc interrupt mask (DSi ARM7) *)
function IRQ_TIMER(n: cint): cint; inline;
diff --git a/packages/libndsfpc/src/nds/ndsinclude.inc b/packages/libndsfpc/src/nds/ndsinclude.inc
index b0e4136332..43c69565a8 100644
--- a/packages/libndsfpc/src/nds/ndsinclude.inc
+++ b/packages/libndsfpc/src/nds/ndsinclude.inc
@@ -43,6 +43,7 @@
{$include arm9/guitarGrip.inc}
{$include arm9/paddle.inc}
{$include arm9/piano.inc}
+ {$include arm9/dldi.inc}
{$endif ARM9}
{$ifdef ARM7}
@@ -51,5 +52,6 @@
{$include arm7/input.inc}
{$include arm7/i2c.inc}
{$include arm7/serial.inc}
+ {$include arm7/sdmmc.inc}
{$include arm7/touch.inc}
{$endif ARM7}
diff --git a/packages/libndsfpc/src/nds/system.inc b/packages/libndsfpc/src/nds/system.inc
index 5c3d50e5fb..be07c543e5 100644
--- a/packages/libndsfpc/src/nds/system.inc
+++ b/packages/libndsfpc/src/nds/system.inc
@@ -42,12 +42,12 @@ const
// POWER_ALL : PM_Bits = PM_ARM9_DIRECT or POWER_ALL_2D or POWER_3D_CORE or POWER_MATRIX;
POWER_ALL : PM_Bits = (1 shl 16) or (1 shl 0) or (1 shl 1) or (1 shl 9) or (1 shl 3) or (1 shl 2);
-procedure sleep(); cdecl; external;
+procedure SystemSleep(); cdecl; external;
+procedure ledBlink(bm: cint); cdecl; external;
{$ifdef ARM9}
procedure powerOn(bits: cint); cdecl; external;
procedure powerOff(bits: cint); cdecl; external;
-procedure ledBlink(bm: cint); cdecl; external;
procedure systemMsgHandler(bytes: cint; user_data: pointer); cdecl; external;
procedure powerValueHandler(value: cuint32; data: pointer); cdecl; external;
@@ -77,6 +77,14 @@ type
var
SystemVectors: sysVectors; cvar; external;
+// Helper functions for heap size
+//! returns current start of heap space
+function getHeapStart(): pcuint8; cdecl; external;
+//! returns current end of heap space
+function getHeapEnd(): pcuint8; cdecl; external;
+//! returns current heap limit
+function getHeapLimit(): pcuint8; cdecl; external;
+
{$endif ARM9}