mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-08 02:07:53 +02:00
* Updated NDS and GBA to devkitARM r28
* Updated libnds to 1.4.1 * Fixed NDS rtl according with last string handling changes * Fixed nds audio examples git-svn-id: trunk@14967 -
This commit is contained in:
parent
71c99628d4
commit
bc1bcf343e
@ -429,13 +429,21 @@ begin
|
||||
add(' __init_lma = __preinit_lma + SIZEOF(.preinit_array);');
|
||||
add('');
|
||||
add(' PROVIDE (__init_array_start = .);');
|
||||
add(' .init_array : AT (__init_lma) { KEEP (*(.init_array)) } >iwram');
|
||||
add(' .init_array : AT (__init_lma)');
|
||||
add(' {');
|
||||
add(' KEEP (*(SORT(.init_array.*)))');
|
||||
add(' KEEP (*(.init_array))');
|
||||
add(' } >iwram');
|
||||
add(' PROVIDE (__init_array_end = .);');
|
||||
add(' PROVIDE (__fini_array_start = .);');
|
||||
add('');
|
||||
add(' __fini_lma = __init_lma + SIZEOF(.init_array);');
|
||||
add('');
|
||||
add(' .fini_array : AT (__fini_lma) { KEEP (*(.fini_array)) } >iwram');
|
||||
add(' .fini_array : AT (__fini_lma)');
|
||||
add(' {');
|
||||
add(' KEEP (*(SORT(.fini_array.*)))');
|
||||
add(' KEEP (*(.fini_array))');
|
||||
add(' } >iwram');
|
||||
add(' PROVIDE (__fini_array_end = .);');
|
||||
add('');
|
||||
add(' __jcr_lma = __fini_lma + SIZEOF(.fini_array);');
|
||||
|
@ -325,10 +325,18 @@ begin
|
||||
add(' .preinit_array : { KEEP (*(.preinit_array)) } >ewram = 0xff');
|
||||
add(' PROVIDE (__preinit_array_end = .);');
|
||||
add(' PROVIDE (__init_array_start = .);');
|
||||
add(' .init_array : { KEEP (*(.init_array)) } >ewram = 0xff');
|
||||
add(' .init_array :');
|
||||
add(' {');
|
||||
add(' KEEP (*(SORT(.init_array.*)))');
|
||||
add(' KEEP (*(.init_array))');
|
||||
add(' } >ewram = 0xff');
|
||||
add(' PROVIDE (__init_array_end = .);');
|
||||
add(' PROVIDE (__fini_array_start = .);');
|
||||
add(' .fini_array : { KEEP (*(.fini_array)) } >ewram = 0xff');
|
||||
add(' .fini_array :');
|
||||
add(' {');
|
||||
add(' KEEP (*(.fini_array))');
|
||||
add(' KEEP (*(SORT(.fini_array.*)))');
|
||||
add(' } >ewram = 0xff');
|
||||
add(' PROVIDE (__fini_array_end = .);');
|
||||
add('');
|
||||
add(' .ctors :');
|
||||
@ -504,12 +512,13 @@ begin
|
||||
add('');
|
||||
add('__iwram_start = ORIGIN(iwram);');
|
||||
add('__iwram_top = ORIGIN(iwram)+ LENGTH(iwram);');
|
||||
add('__sp_irq = __iwram_top - 0x60;');
|
||||
add('__sp_irq = __iwram_top - 0x100;');
|
||||
add('__sp_svc = __sp_irq - 0x100;');
|
||||
add('__sp_usr = __sp_svc - 0x100;');
|
||||
add('');
|
||||
add('__irq_flags = __iwram_top - 8;');
|
||||
add('__irq_vector = __iwram_top - 4;');
|
||||
add('__irq_flags = 0x04000000 - 8;');
|
||||
add('__irq_flagsaux = 0x04000000 - 0x40;');
|
||||
add('__irq_vector = 0x04000000 - 4;');
|
||||
add('');
|
||||
add('SECTIONS');
|
||||
add('{');
|
||||
|
@ -1,11 +1,10 @@
|
||||
#
|
||||
<<<<<<< .mine# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/04/02]
|
||||
=======# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/09/29]
|
||||
>>>>>>> .theirs#
|
||||
# Don't edit, this file is generated by FPCMake Version 2.0.0 [2009/12/24]
|
||||
#
|
||||
default: all
|
||||
MAKEFILETARGETS=arm-nds
|
||||
BSDs = freebsd netbsd openbsd darwin
|
||||
UNIXs = linux $(BSDs) solaris qnx
|
||||
UNIXs = linux $(BSDs) solaris qnx haiku
|
||||
LIMIT83fs = go32v2 os2 emx watcom
|
||||
OSNeedsComspecToRunBatch = go32v2 watcom
|
||||
FORCE:
|
||||
@ -60,9 +59,11 @@ endif
|
||||
endif
|
||||
ifdef COMSPEC
|
||||
ifneq ($(findstring $(OS_SOURCE),$(OSNeedsComspecToRunBatch)),)
|
||||
ifndef RUNBATCH
|
||||
RUNBATCH=$(COMSPEC) /C
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
ifdef inUnix
|
||||
PATHSEP=/
|
||||
else
|
||||
@ -174,6 +175,17 @@ OS_TARGET:=$(word 5,$(FPC_COMPILERINFO))
|
||||
endif
|
||||
FULL_TARGET=$(CPU_TARGET)-$(OS_TARGET)
|
||||
FULL_SOURCE=$(CPU_SOURCE)-$(OS_SOURCE)
|
||||
ifeq ($(CPU_TARGET),armeb)
|
||||
ARCH=arm
|
||||
override FPCOPT+=-Cb
|
||||
else
|
||||
ifeq ($(CPU_TARGET),armel)
|
||||
ARCH=arm
|
||||
override FPCOPT+=-CaEABI
|
||||
else
|
||||
ARCH=$(CPU_TARGET)
|
||||
endif
|
||||
endif
|
||||
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
|
||||
TARGETSUFFIX=$(OS_TARGET)
|
||||
SOURCESUFFIX=$(OS_SOURCE)
|
||||
@ -195,7 +207,7 @@ endif
|
||||
ifeq ($(OS_TARGET),linux)
|
||||
linuxHier=1
|
||||
endif
|
||||
export OS_TARGET OS_SOURCE CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
|
||||
export OS_TARGET OS_SOURCE ARCH CPU_TARGET CPU_SOURCE FULL_TARGET FULL_SOURCE TARGETSUFFIX SOURCESUFFIX CROSSCOMPILE
|
||||
ifdef FPCDIR
|
||||
override FPCDIR:=$(subst \,/,$(FPCDIR))
|
||||
ifeq ($(wildcard $(addprefix $(FPCDIR)/,rtl units)),)
|
||||
@ -267,7 +279,7 @@ ifeq ($(FULL_TARGET),arm-nds)
|
||||
override CLEAN_UNITS+=*
|
||||
endif
|
||||
ifeq ($(FULL_TARGET),arm-nds)
|
||||
override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin *.map $(BUILD)/* $(INC)/*
|
||||
override CLEAN_FILES+=*.elf *.o *.s *.nds *.nef *.h *.bin $(BUILD)/*
|
||||
endif
|
||||
override INSTALL_FPCPACKAGE=y
|
||||
ifdef REQUIRE_UNITSDIR
|
||||
@ -488,6 +500,7 @@ endif
|
||||
ifeq ($(OS_TARGET),go32v2)
|
||||
STATICLIBPREFIX=
|
||||
SHORTSUFFIX=dos
|
||||
IMPORTLIBPREFIX=
|
||||
endif
|
||||
ifeq ($(OS_TARGET),watcom)
|
||||
STATICLIBPREFIX=
|
||||
@ -495,6 +508,7 @@ OEXT=.obj
|
||||
ASMEXT=.asm
|
||||
SHAREDLIBEXT=.dll
|
||||
SHORTSUFFIX=wat
|
||||
IMPORTLIBPREFIX=
|
||||
endif
|
||||
ifeq ($(OS_TARGET),linux)
|
||||
BATCHEXT=.sh
|
||||
@ -531,6 +545,7 @@ STATICLIBPREFIX=
|
||||
SHAREDLIBEXT=.dll
|
||||
SHORTSUFFIX=os2
|
||||
ECHO=echo
|
||||
IMPORTLIBPREFIX=
|
||||
endif
|
||||
ifeq ($(OS_TARGET),emx)
|
||||
BATCHEXT=.cmd
|
||||
@ -539,6 +554,7 @@ STATICLIBPREFIX=
|
||||
SHAREDLIBEXT=.dll
|
||||
SHORTSUFFIX=emx
|
||||
ECHO=echo
|
||||
IMPORTLIBPREFIX=
|
||||
endif
|
||||
ifeq ($(OS_TARGET),amiga)
|
||||
EXEEXT=
|
||||
@ -559,6 +575,11 @@ BATCHEXT=.sh
|
||||
EXEEXT=
|
||||
SHORTSUFFIX=be
|
||||
endif
|
||||
ifeq ($(OS_TARGET),haiku)
|
||||
BATCHEXT=.sh
|
||||
EXEEXT=
|
||||
SHORTSUFFIX=hai
|
||||
endif
|
||||
ifeq ($(OS_TARGET),solaris)
|
||||
BATCHEXT=.sh
|
||||
EXEEXT=
|
||||
@ -573,17 +594,20 @@ ifeq ($(OS_TARGET),netware)
|
||||
EXEEXT=.nlm
|
||||
STATICLIBPREFIX=
|
||||
SHORTSUFFIX=nw
|
||||
IMPORTLIBPREFIX=imp
|
||||
endif
|
||||
ifeq ($(OS_TARGET),netwlibc)
|
||||
EXEEXT=.nlm
|
||||
STATICLIBPREFIX=
|
||||
SHORTSUFFIX=nwl
|
||||
IMPORTLIBPREFIX=imp
|
||||
endif
|
||||
ifeq ($(OS_TARGET),macos)
|
||||
BATCHEXT=
|
||||
EXEEXT=
|
||||
DEBUGSYMEXT=.xcoff
|
||||
SHORTSUFFIX=mac
|
||||
IMPORTLIBPREFIX=imp
|
||||
endif
|
||||
ifeq ($(OS_TARGET),darwin)
|
||||
BATCHEXT=.sh
|
||||
@ -610,14 +634,17 @@ STATICLIBEXT=.a1
|
||||
SHAREDLIBEXT=.so1
|
||||
STATICLIBPREFIX=
|
||||
SHORTSUFFIX=v1
|
||||
IMPORTLIBPREFIX=
|
||||
endif
|
||||
ifeq ($(OS_TARGET),go32v2)
|
||||
STATICLIBPREFIX=
|
||||
SHORTSUFFIX=dos
|
||||
IMPORTLIBPREFIX=
|
||||
endif
|
||||
ifeq ($(OS_TARGET),watcom)
|
||||
STATICLIBPREFIX=
|
||||
SHORTSUFFIX=wat
|
||||
IMPORTLIBPREFIX=
|
||||
endif
|
||||
ifeq ($(OS_TARGET),linux)
|
||||
BATCHEXT=.sh
|
||||
@ -664,6 +691,7 @@ STATICLIBEXT=.ao2
|
||||
SHAREDLIBEXT=.dll
|
||||
SHORTSUFFIX=os2
|
||||
ECHO=echo
|
||||
IMPORTLIBPREFIX=
|
||||
endif
|
||||
ifeq ($(OS_TARGET),amiga)
|
||||
EXEEXT=
|
||||
@ -724,6 +752,7 @@ STATICLIBEXT=.a
|
||||
SHAREDLIBEXT=.nlm
|
||||
EXEEXT=.nlm
|
||||
SHORTSUFFIX=nw
|
||||
IMPORTLIBPREFIX=imp
|
||||
endif
|
||||
ifeq ($(OS_TARGET),netwlibc)
|
||||
STATICLIBPREFIX=
|
||||
@ -735,6 +764,7 @@ STATICLIBEXT=.a
|
||||
SHAREDLIBEXT=.nlm
|
||||
EXEEXT=.nlm
|
||||
SHORTSUFFIX=nwl
|
||||
IMPORTLIBPREFIX=imp
|
||||
endif
|
||||
ifeq ($(OS_TARGET),macos)
|
||||
BATCHEXT=
|
||||
@ -746,6 +776,7 @@ STATICLIBEXT=.a
|
||||
EXEEXT=
|
||||
DEBUGSYMEXT=.xcoff
|
||||
SHORTSUFFIX=mac
|
||||
IMPORTLIBPREFIX=imp
|
||||
endif
|
||||
endif
|
||||
ifneq ($(findstring $(OS_SOURCE),$(LIMIT83fs)),)
|
||||
@ -1048,13 +1079,13 @@ override COMPILER_UNITDIR+=$(UNITDIR_LIBNDSFPC)
|
||||
endif
|
||||
endif
|
||||
ifndef NOCPUDEF
|
||||
override FPCOPTDEF=$(CPU_TARGET)
|
||||
override FPCOPTDEF=$(ARCH)
|
||||
endif
|
||||
ifneq ($(OS_TARGET),$(OS_SOURCE))
|
||||
override FPCOPT+=-T$(OS_TARGET)
|
||||
endif
|
||||
ifneq ($(CPU_TARGET),$(CPU_SOURCE))
|
||||
override FPCOPT+=-P$(CPU_TARGET)
|
||||
override FPCOPT+=-P$(ARCH)
|
||||
endif
|
||||
ifeq ($(OS_SOURCE),openbsd)
|
||||
override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
|
||||
@ -1617,7 +1648,6 @@ include fpcmake.loc
|
||||
endif
|
||||
.NOTPARALLEL:
|
||||
all: direc fpc_all
|
||||
direc:
|
||||
ifneq ($(BUILD), $(CURDIR))
|
||||
$(MKDIR) $(BUILD)
|
||||
endif
|
||||
|
@ -32,8 +32,6 @@ GFX_FILES = $(foreach dir,gfx,$(notdir $(wildcard $(dir)/*.png)))
|
||||
[rules]
|
||||
.NOTPARALLEL:
|
||||
all: direc fpc_all
|
||||
<<<<<<< .mine=======
|
||||
>>>>>>> .theirsdirec:
|
||||
ifneq ($(BUILD), $(CURDIR))
|
||||
$(MKDIR) $(BUILD)
|
||||
endif
|
||||
|
@ -37,9 +37,8 @@ var
|
||||
sprites: array[0..4] of MySprite;
|
||||
|
||||
|
||||
<<<<<<< .minefunction myEventHandler(msg, param: mm_word): mm_word;
|
||||
=======function myEventHandler(msg, param: mm_word): pmm_word;
|
||||
>>>>>>> .theirsbegin
|
||||
function myEventHandler(msg, param: mm_word): mm_word;
|
||||
begin
|
||||
case msg of
|
||||
MMCB_SONGMESSAGE: // process song messages
|
||||
begin
|
||||
|
@ -2,6 +2,6 @@
|
||||
const
|
||||
DSWIFI_MAJOR = 0;
|
||||
DSWIFI_MINOR = 3;
|
||||
DSWIFI_REVISION = 11;
|
||||
DSWIFI_VERSION = '0.3.11';
|
||||
DSWIFI_REVISION = 12;
|
||||
DSWIFI_VERSION = '0.3.12';
|
||||
{$endif NDS_INTERFACE}
|
||||
|
@ -40,15 +40,15 @@
|
||||
|
||||
{$ifdef NDS_INTERFACE}
|
||||
const
|
||||
EXCEPTION_VECTOR : ^VoidFunctionPointer = pointer($2FFFD9C);
|
||||
EXCEPTION_VECTOR : ^VoidFn = pointer($2FFFD9C);
|
||||
|
||||
var
|
||||
exceptionC: ^VoidFunctionPointer; cvar; external;
|
||||
exceptionC: ^VoidFn; cvar; external;
|
||||
exceptionStack: cuint32; cvar; external;
|
||||
exceptionRegisters: pcint32; cvar; external;
|
||||
|
||||
procedure enterException(); cdecl; external;
|
||||
procedure setExceptionHandler(handler: VoidFunctionPointer); cdecl; external;
|
||||
procedure setExceptionHandler(handler: VoidFn); cdecl; external;
|
||||
procedure defaultExceptionHandler(); cdecl; external;
|
||||
|
||||
function getCPSR(): cuint32; cdecl; external;
|
||||
|
@ -39,26 +39,6 @@
|
||||
*)
|
||||
|
||||
{$ifdef NDS_INTERFACE}
|
||||
// Keyboard
|
||||
type
|
||||
KEYPAD_BITS = cint;
|
||||
const
|
||||
//! Bit values for the keypad buttons.
|
||||
KEY_A : KEYPAD_BITS = (1 shl 0); // Keypad A button.
|
||||
KEY_B : KEYPAD_BITS = (1 shl 1); // Keypad B button.
|
||||
KEY_SELECT : KEYPAD_BITS = (1 shl 2); // Keypad SELECT button.
|
||||
KEY_START : KEYPAD_BITS = (1 shl 3); // Keypad START button.
|
||||
KEY_RIGHT : KEYPAD_BITS = (1 shl 4); // Keypad RIGHT button.
|
||||
KEY_LEFT : KEYPAD_BITS = (1 shl 5); // Keypad LEFT button.
|
||||
KEY_UP : KEYPAD_BITS = (1 shl 6); // Keypad UP button.
|
||||
KEY_DOWN : KEYPAD_BITS = (1 shl 7); // Keypad DOWN button.
|
||||
KEY_R : KEYPAD_BITS = (1 shl 8); // Right shoulder button.
|
||||
KEY_L : KEYPAD_BITS = (1 shl 9); // Left shoulder button.
|
||||
KEY_X : KEYPAD_BITS = (1 shl 10); // Keypad X button.
|
||||
KEY_Y : KEYPAD_BITS = (1 shl 11); // Keypad Y button.
|
||||
KEY_TOUCH : KEYPAD_BITS = (1 shl 12); // Touchscreen pendown.
|
||||
KEY_LID : KEYPAD_BITS = (1 shl 13); // Lid state.
|
||||
|
||||
|
||||
procedure scanKeys(); cdecl; external;
|
||||
|
||||
|
@ -315,7 +315,7 @@ procedure oamAffineTransformation(var oam: OamState; rotId, hdx, hdy, vdx, vdy:
|
||||
|
||||
function oamCountFragments(var oam: OamState): cint; cdecl; external;
|
||||
procedure oamAllocReset(var oam: OamState); cdecl; external;
|
||||
function oamGfxPtrToOffset(const offset: pointer): cuint; cdecl; external;
|
||||
function oamGfxPtrToOffset(var oam: OamState; const offset: pointer): cuint; cdecl; external;
|
||||
{$endif NDS_INTERFACE}
|
||||
|
||||
{$ifdef NDS_IMPLEMENTATION}
|
||||
|
@ -256,15 +256,15 @@ var
|
||||
function vramSetMainBanks(a: VRAM_A_TYPE; b: VRAM_B_TYPE; c: VRAM_C_TYPE; d: VRAM_D_TYPE): cuint32; cdecl; external;
|
||||
procedure vramRestoreMainBanks(vramTemp: cuint32); cdecl; external;
|
||||
|
||||
procedure vramSetBankA(a: VRAM_A_TYPE); cdecl; external;
|
||||
procedure vramSetBankB(b: VRAM_B_TYPE); cdecl; external;
|
||||
procedure vramSetBankC(c: VRAM_C_TYPE); cdecl; external;
|
||||
procedure vramSetBankD(d: VRAM_D_TYPE); cdecl; external;
|
||||
procedure vramSetBankE(e: VRAM_E_TYPE); cdecl; external;
|
||||
procedure vramSetBankF(f: VRAM_F_TYPE); cdecl; external;
|
||||
procedure vramSetBankG(g: VRAM_G_TYPE); cdecl; external;
|
||||
procedure vramSetBankH(h: VRAM_H_TYPE); cdecl; external;
|
||||
procedure vramSetBankI(i: VRAM_I_TYPE); cdecl; external;
|
||||
procedure vramSetBankA(a: VRAM_A_TYPE); inline;
|
||||
procedure vramSetBankB(b: VRAM_B_TYPE); inline;
|
||||
procedure vramSetBankC(c: VRAM_C_TYPE); inline;
|
||||
procedure vramSetBankD(d: VRAM_D_TYPE); inline;
|
||||
procedure vramSetBankE(e: VRAM_E_TYPE); inline;
|
||||
procedure vramSetBankF(f: VRAM_F_TYPE); inline;
|
||||
procedure vramSetBankG(g: VRAM_G_TYPE); inline;
|
||||
procedure vramSetBankH(h: VRAM_H_TYPE); inline;
|
||||
procedure vramSetBankI(i: VRAM_I_TYPE); inline;
|
||||
|
||||
const
|
||||
REG_DISPCNT : pcuint32 = pointer($04000000);
|
||||
@ -628,4 +628,49 @@ begin
|
||||
GFX_BUSY := GFX_STATUS^ and (1 shl 27) <> 0;
|
||||
end;
|
||||
|
||||
procedure vramSetBankA(a: VRAM_A_TYPE); inline;
|
||||
begin
|
||||
VRAM_A_CR^ := VRAM_ENABLE or a;
|
||||
end;
|
||||
|
||||
procedure vramSetBankB(b: VRAM_B_TYPE); inline;
|
||||
begin
|
||||
VRAM_B_CR^ := VRAM_ENABLE or b;
|
||||
end;
|
||||
|
||||
procedure vramSetBankC(c: VRAM_C_TYPE); inline;
|
||||
begin
|
||||
VRAM_C_CR^ := VRAM_ENABLE or c;
|
||||
end;
|
||||
|
||||
procedure vramSetBankD(d: VRAM_D_TYPE); inline;
|
||||
begin
|
||||
VRAM_D_CR^ := VRAM_ENABLE or d;
|
||||
end;
|
||||
|
||||
procedure vramSetBankE(e: VRAM_E_TYPE); inline;
|
||||
begin
|
||||
VRAM_E_CR^ := VRAM_ENABLE or e;
|
||||
end;
|
||||
|
||||
procedure vramSetBankF(f: VRAM_F_TYPE); inline;
|
||||
begin
|
||||
VRAM_F_CR^ := VRAM_ENABLE or f;
|
||||
end;
|
||||
|
||||
procedure vramSetBankG(g: VRAM_G_TYPE); inline;
|
||||
begin
|
||||
VRAM_G_CR^ := VRAM_ENABLE or g;
|
||||
end;
|
||||
|
||||
procedure vramSetBankH(h: VRAM_H_TYPE); inline;
|
||||
begin
|
||||
VRAM_H_CR^ := VRAM_ENABLE or h;
|
||||
end;
|
||||
|
||||
procedure vramSetBankI(i: VRAM_I_TYPE); inline;
|
||||
begin
|
||||
VRAM_I_CR^ := VRAM_ENABLE or i;
|
||||
end;
|
||||
|
||||
{$endif NDS_IMPLEMENTATION}
|
||||
|
@ -60,15 +60,20 @@ const
|
||||
IRQ_IPC_SYNC : IRQ_MASK = (1 shl 16); (* IPC sync interrupt mask *)
|
||||
IRQ_FIFO_EMPTY : IRQ_MASK = (1 shl 17); (* Send FIFO empty interrupt mask *)
|
||||
IRQ_FIFO_NOT_EMPTY : IRQ_MASK = (1 shl 18); (* Receive FIFO empty interrupt mask *)
|
||||
IRQ_CARD : IRQ_MASK = (1 shl 19); (* interrupt mask *)
|
||||
IRQ_CARD : IRQ_MASK = (1 shl 19); (* interrupt mask DS Card Slot *)
|
||||
IRQ_CARD_LINE : IRQ_MASK = (1 shl 20); (* interrupt mask *)
|
||||
IRQ_GEOMETRY_FIFO : IRQ_MASK = (1 shl 21); (* geometry FIFO interrupt mask *)
|
||||
IRQ_LID : IRQ_MASK = (1 shl 22); (* interrupt mask *)
|
||||
IRQ_LID : IRQ_MASK = (1 shl 22); (* interrupt mask hinge *)
|
||||
IRQ_SPI : IRQ_MASK = (1 shl 23); (* SPI interrupt mask *)
|
||||
IRQ_WIFI : IRQ_MASK = (1 shl 24); (* WIFI interrupt mask (ARM7)*)
|
||||
IRQ_ALL : IRQ_MASK = (not 0); //$FFFFFF ?
|
||||
|
||||
|
||||
type
|
||||
IRQ_MASKSAUX = cuint;
|
||||
const
|
||||
IRQ_POWER: IRQ_MASKSAUX = (1 shl 6); (* Power Button interrupt mask (DSi ARM7) *)
|
||||
|
||||
function IRQ_TIMER(n: cint): cint; inline;
|
||||
|
||||
const
|
||||
@ -77,9 +82,11 @@ const
|
||||
|
||||
|
||||
const
|
||||
REG_IE : pcuint32 = pointer($04000210);
|
||||
REG_IF : pcuint32 = pointer($04000214);
|
||||
REG_IME : pcuint16 = pointer($04000208);
|
||||
REG_IE : pcuint32 = pointer($04000210);
|
||||
REG_AUXIE: pcuint32 = pointer($04000218);
|
||||
REG_IF : pcuint32 = pointer($04000214);
|
||||
REG_AUXIF: pcuint32 = pointer($0400021C);
|
||||
REG_IME : pcuint32 = pointer($04000208);
|
||||
|
||||
type
|
||||
IME_VALUE = integer;
|
||||
@ -89,7 +96,7 @@ const
|
||||
|
||||
|
||||
type
|
||||
TVoidFunctionPointer = procedure of object;
|
||||
TVoidFn = procedure of object;
|
||||
|
||||
var
|
||||
// __irq_vector: array [0..0] of VoidFunctionPointer; cvar; external;
|
||||
@ -102,10 +109,11 @@ var
|
||||
/// __irq_flags: pcuint32; cvar; external;
|
||||
__irq_vector: Pointer; external name '__irq_vector';
|
||||
__irq_flags: pcuint32; external name '__irq_flags';
|
||||
__irq_flagsaux: pcuint32; external name '__irq_flagsaux';
|
||||
|
||||
|
||||
|
||||
{$define VBLANK_INTR_WAIT_FLAGS := __irq_flags}
|
||||
{$define INTR_WAIT_FLAGS := __irq_flags}
|
||||
{$define INTR_WAIT_FLAGSAUX := __irq_flagsaux}
|
||||
{$define IRQ_HANDLER := __irq_vector}
|
||||
|
||||
type
|
||||
@ -115,15 +123,20 @@ type
|
||||
end;
|
||||
|
||||
procedure irqInit(); cdecl; external;
|
||||
procedure irqSet(irq: IRQ_MASK; handler: TVoidFunctionPointer); cdecl; external;
|
||||
procedure irqSet(irq: IRQ_MASK; handler: pointer); cdecl; external;
|
||||
procedure irqClear(irq: IRQ_MASK); cdecl; external;
|
||||
procedure irqInitHandler(handler: TVoidFunctionPointer); cdecl; external;
|
||||
procedure irqSet(irq: cuint32; handler: TVoidFn); cdecl; external;
|
||||
procedure irqSet(irq: cuint32; handler: pointer); cdecl; external;
|
||||
procedure irqSetAUX(irq: cuint32; handler: TVoidFn); cdecl; external;
|
||||
procedure irqSetAUX(irq: cuint32; handler: pointer); cdecl; external;
|
||||
procedure irqClear(irq: cuint32); cdecl; external;
|
||||
procedure irqClearAUX(irq: cuint32); cdecl; external;
|
||||
procedure irqInitHandler(handler: TVoidFn); cdecl; external;
|
||||
procedure irqInitHandler(handler: pointer); cdecl; external;
|
||||
procedure irqEnable(irq: cuint32); cdecl; external;
|
||||
procedure irqEnableAUX(irq: cuint32); cdecl; external;
|
||||
procedure irqDisable(irq: cuint32); cdecl; external;
|
||||
procedure irqDisableAUX(irq: cuint32); cdecl; external;
|
||||
|
||||
procedure swiIntrWait(waitForSet: cint; flags: cuint32); cdecl; external;
|
||||
procedure swiIntrWait(waitForSet: cuint32; flags: cuint32); cdecl; external;
|
||||
procedure swiWaitForVBlank(); cdecl; external;
|
||||
function enterCriticalSection(): cint; inline;
|
||||
procedure leaveCriticalSection(oldIME: cint); inline;
|
||||
|
@ -78,31 +78,35 @@
|
||||
{$include jtypes.inc}
|
||||
{$include bios.inc}
|
||||
{$include card.inc}
|
||||
{$include debug.inc} // testing...
|
||||
{$include dma.inc}
|
||||
{$include interrupts.inc}
|
||||
{$include ipc.inc}
|
||||
{$include memory.inc}
|
||||
{$include system.inc}
|
||||
{$include timers.inc}
|
||||
{$include fifocommon.inc} // testing...
|
||||
{$include touch.inc} // testing...
|
||||
{$include input.inc} // testing...
|
||||
|
||||
{$ifdef ARM9}
|
||||
{$include arm9/background.inc}
|
||||
{$include arm9/boxtest.inc}
|
||||
{$include arm9/cache.inc}
|
||||
{$include arm9/console.inc}
|
||||
{$include arm9/keyboard.inc} // testing...
|
||||
{$include arm9/exceptions.inc}
|
||||
{$include arm9/image.inc}
|
||||
{$include arm9/input.inc}
|
||||
{$include arm9/math.inc}
|
||||
{$include arm9/pcx.inc}
|
||||
{ $include nds/arm9/postest.inc} // da rimuovere
|
||||
{$include arm9/rumble.inc}
|
||||
{$include arm9/sound.inc}
|
||||
{$include arm9/trig_lut.inc}
|
||||
{$include arm9/ndsmotion.inc}
|
||||
{$include arm9/video.inc}
|
||||
{$include arm9/videoGL.inc}
|
||||
{$include arm9/sprite.inc}
|
||||
{$include arm9/decompress.inc} // testing...
|
||||
{$endif ARM9}
|
||||
|
||||
{$ifdef ARM7}
|
||||
@ -110,6 +114,7 @@
|
||||
{$include arm7/clock.inc}
|
||||
{$include arm7/serial.inc}
|
||||
{$include arm7/touch.inc}
|
||||
{$include arm7/input.inc} // testing...
|
||||
{$endif ARM7}
|
||||
|
||||
{$ifdef ARM7}
|
||||
|
@ -13,7 +13,8 @@
|
||||
{$include fifocommon.inc}
|
||||
{$include system.inc}
|
||||
{$include timers.inc}
|
||||
{$include fifomessages.inc}
|
||||
{$include fifomessages.inc}
|
||||
{$include input.inc} // testing...
|
||||
|
||||
{$include linkedlist.inc}
|
||||
{$include dynamicArray.inc}
|
||||
@ -46,6 +47,5 @@
|
||||
{$include arm7/clock.inc}
|
||||
{$include arm7/input.inc}
|
||||
{$include arm7/serial.inc}
|
||||
{ $include arm7/system.inc}
|
||||
{$include arm7/touch.inc}
|
||||
{$endif ARM7}
|
||||
|
@ -139,7 +139,7 @@ typedef volatile s64 vs64;
|
||||
|
||||
|
||||
//IntFn = function: pointer;
|
||||
VoidFunctionPointer = function: pointer; cdecl;
|
||||
VoidFn = function: pointer; cdecl;
|
||||
//fp = function: pointer;
|
||||
|
||||
IntFn = procedure;
|
||||
|
@ -198,8 +198,6 @@ type
|
||||
PPERSONAL_DATA = ^tPERSONAL_DATA;
|
||||
|
||||
const
|
||||
REG_KEYINPUT : pcuint16 = pointer($04000130);
|
||||
REG_KEYCNT : pcuint16 = pointer($04000132);
|
||||
PersonalData : PPERSONAL_DATA = pointer($2FFFC80);
|
||||
|
||||
|
||||
@ -218,6 +216,15 @@ type
|
||||
const
|
||||
__system_argv: Pargv = pointer($02FFFE70);
|
||||
ARGV_MAGIC = $5f617267;
|
||||
BOOTSIG = $62757473746F6F62; // ULL?
|
||||
|
||||
type
|
||||
__bootstub = packed record // packed ?
|
||||
bootsig: cuint64;
|
||||
arm9reboot: VoidFn;
|
||||
arm7reboot: VoidFn;
|
||||
bootsize: cuint32;
|
||||
end;
|
||||
|
||||
|
||||
type
|
||||
@ -236,8 +243,13 @@ type
|
||||
{$ifdef ARM9}
|
||||
procedure memCached(address: pointer); cdecl; external;
|
||||
procedure memUncached(address: pointer); cdecl; external;
|
||||
procedure resetARM7(address: cuint32); cdecl; external;
|
||||
{$endif ARM9}
|
||||
|
||||
{$ifdef ARM7}
|
||||
procedure resetARM9(address: cuint32); cdecl; external;
|
||||
{$endif ARM7}
|
||||
|
||||
|
||||
{$endif NDS_INTERFACE}
|
||||
|
||||
|
@ -8,7 +8,8 @@
|
||||
_start:
|
||||
@---------------------------------------------------------------------------------
|
||||
mov r0, #0x04000000 @ IME = 0;
|
||||
str r0, [r0, #0x208]
|
||||
mov r1, #0
|
||||
str r1, [r0, #0x208]
|
||||
|
||||
mov r0, #0x12 @ Switch to IRQ Mode
|
||||
msr cpsr, r0
|
||||
|
@ -18,6 +18,18 @@ _start:
|
||||
@---------------------------------------------------------------------------------
|
||||
mov r0, #0x04000000 @ IME = 0;
|
||||
str r0, [r0, #0x208]
|
||||
|
||||
@ set sensible stacks to allow bios call
|
||||
|
||||
mov r0, #0x13 @ Switch to SVC Mode
|
||||
msr cpsr, r0
|
||||
mov r1,#0x03000000
|
||||
sub r1,r1,#0x1000
|
||||
mov sp,r1
|
||||
mov r0, #0x1F @ Switch to System Mode
|
||||
msr cpsr, r0
|
||||
sub r1,r1,#0x100
|
||||
mov sp,r1
|
||||
|
||||
ldr r3,=__libnds_mpu_setup
|
||||
blx r3
|
||||
|
@ -8,7 +8,8 @@
|
||||
_start:
|
||||
@---------------------------------------------------------------------------------
|
||||
mov r0, #0x04000000 @ IME = 0;
|
||||
str r0, [r0, #0x208]
|
||||
mov r1, #0
|
||||
str r1, [r0, #0x208]
|
||||
|
||||
mov r0, #0x12 @ Switch to IRQ Mode
|
||||
msr cpsr, r0
|
||||
|
@ -19,6 +19,18 @@ _start:
|
||||
mov r0, #0x04000000 @ IME = 0;
|
||||
str r0, [r0, #0x208]
|
||||
|
||||
@ set sensible stacks to allow bios call
|
||||
|
||||
mov r0, #0x13 @ Switch to SVC Mode
|
||||
msr cpsr, r0
|
||||
mov r1,#0x03000000
|
||||
sub r1,r1,#0x1000
|
||||
mov sp,r1
|
||||
mov r0, #0x1F @ Switch to System Mode
|
||||
msr cpsr, r0
|
||||
sub r1,r1,#0x100
|
||||
mov sp,r1
|
||||
|
||||
ldr r3,=__libnds_mpu_setup
|
||||
blx r3
|
||||
|
||||
|
@ -19,22 +19,25 @@
|
||||
{*****************************************************************************
|
||||
Directory Handling
|
||||
*****************************************************************************}
|
||||
procedure mkdir(const s: string);[IOCheck];
|
||||
procedure mkdir(s: pchar; len: sizeuint);[IOCheck, public, alias : 'FPC_SYS_MKDIR'];
|
||||
begin
|
||||
if not assigned(s) or (len=0) or (InOutRes<>0) then exit;
|
||||
if FileIODevice.DirIO.DoMkdir <> nil then
|
||||
FileIODevice.DirIO.DoMkdir(s);
|
||||
FileIODevice.DirIO.DoMkdir(strpas(s));
|
||||
end;
|
||||
|
||||
procedure rmdir(const s: string);[IOCheck];
|
||||
procedure rmdir(s: pchar; len: sizeuint);[IOCheck, public, alias : 'FPC_SYS_RMDIR'];
|
||||
begin
|
||||
if not assigned(s) or (len=0) then exit;
|
||||
if FileIODevice.DirIO.DoRmdir <> nil then
|
||||
FileIODevice.DirIO.DoRmdir(s);
|
||||
FileIODevice.DirIO.DoRmdir(strpas(s));
|
||||
end;
|
||||
|
||||
procedure chdir(const s: string);[IOCheck];
|
||||
procedure chdir(s: pchar; len: sizeuint);[IOCheck, public, alias : 'FPC_SYS_CHDIR'];
|
||||
begin
|
||||
if not assigned(s) or (len=0) then exit;
|
||||
if FileIODevice.DirIO.DoChdir <> nil then
|
||||
FileIODevice.DirIO.DoChdir(s);
|
||||
FileIODevice.DirIO.DoChdir(strpas(s));
|
||||
end;
|
||||
|
||||
procedure GetDir(DriveNr: byte; var Dir: ShortString);
|
||||
|
@ -223,7 +223,7 @@ end;
|
||||
Misc Functions
|
||||
****************************************************************************}
|
||||
|
||||
procedure Beep;
|
||||
Procedure SysBeep;
|
||||
begin
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user