[Scummvm-cvs-logs] SF.net SVN: scummvm:[39526] scummvm/trunk/backends

fingolfin at users.sourceforge.net fingolfin at users.sourceforge.net
Thu Mar 19 10:51:46 CET 2009


Revision: 39526
          http://scummvm.svn.sourceforge.net/scummvm/?rev=39526&view=rev
Author:   fingolfin
Date:     2009-03-19 09:51:40 +0000 (Thu, 19 Mar 2009)

Log Message:
-----------
Merged Neil's NDS changes into trunk

Modified Paths:
--------------
    scummvm/trunk/backends/fs/ds/ds-fs.cpp
    scummvm/trunk/backends/fs/ds/ds-fs.h
    scummvm/trunk/backends/platform/ds/arm7/source/main.cpp
    scummvm/trunk/backends/platform/ds/arm9/makefile
    scummvm/trunk/backends/platform/ds/arm9/source/blitters_arm.s
    scummvm/trunk/backends/platform/ds/arm9/source/cdaudio.cpp
    scummvm/trunk/backends/platform/ds/arm9/source/dsmain.cpp
    scummvm/trunk/backends/platform/ds/arm9/source/dsmain.h
    scummvm/trunk/backends/platform/ds/arm9/source/dsoptions.cpp
    scummvm/trunk/backends/platform/ds/arm9/source/dsoptions.h
    scummvm/trunk/backends/platform/ds/arm9/source/fat/disc_io.c
    scummvm/trunk/backends/platform/ds/arm9/source/osystem_ds.cpp
    scummvm/trunk/backends/platform/ds/arm9/source/osystem_ds.h
    scummvm/trunk/backends/platform/ds/arm9/source/portdefs.h
    scummvm/trunk/backends/platform/ds/arm9/source/scummhelp.cpp
    scummvm/trunk/backends/platform/ds/commoninclude/NDS/scummvm_ipc.h

Added Paths:
-----------
    scummvm/trunk/backends/platform/ds/arm9/source/interrupt.s

Removed Paths:
-------------
    scummvm/trunk/backends/platform/ds/arm9/source/console2.h
    scummvm/trunk/backends/platform/ds/arm9/source/scummconsole.c
    scummvm/trunk/backends/platform/ds/arm9/source/scummconsole.h

Property Changed:
----------------
    scummvm/trunk/backends/fs/ds/
    scummvm/trunk/backends/platform/ds/


Property changes on: scummvm/trunk/backends/fs/ds
___________________________________________________________________
Added: svn:mergeinfo
   + /scummvm/branches/branch-0-13-0/backends/fs/ds:35922-39517

Modified: scummvm/trunk/backends/fs/ds/ds-fs.cpp
===================================================================
--- scummvm/trunk/backends/fs/ds/ds-fs.cpp	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/fs/ds/ds-fs.cpp	2009-03-19 09:51:40 UTC (rev 39526)
@@ -197,11 +197,11 @@
 }
 
 Common::SeekableReadStream *DSFileSystemNode::createReadStream() {
-	return StdioStream::makeFromPath(getPath().c_str(), false);
+	return DSFileStream::makeFromPath(getPath().c_str(), false);
 }
 
 Common::WriteStream *DSFileSystemNode::createWriteStream() {
-	return StdioStream::makeFromPath(getPath().c_str(), true);
+	return DSFileStream::makeFromPath(getPath().c_str(), true);
 }
 
 //////////////////////////////////////////////////////////////////////////
@@ -211,9 +211,8 @@
 GBAMPFileSystemNode::GBAMPFileSystemNode() {
 	_displayName = "mp:/";
 	_path = "mp:/";
-	_isValid = true;
+	_isValid = false;
 	_isDirectory = true;
-	_path = "mp:/";
 }
 
 GBAMPFileSystemNode::GBAMPFileSystemNode(const Common::String& path) {
@@ -283,9 +282,9 @@
 
 AbstractFSNode *GBAMPFileSystemNode::getChild(const Common::String& n) const {
 	if (_path.lastChar() == '\\') {
-		return new DSFileSystemNode(_path + n);
+		return new GBAMPFileSystemNode(_path + n);
 	} else {
-		return new DSFileSystemNode(_path + "\\" + n);
+		return new GBAMPFileSystemNode(_path + "\\" + n);
 	}
 
 	return NULL;
@@ -376,16 +375,113 @@
 //	consolePrintf("Opening: %s\n", getPath().c_str());
 
 	if (!strncmp(getPath().c_str(), "mp:/", 4)) {
-		return StdioStream::makeFromPath(getPath().c_str() + 3, false);
+		return DSFileStream::makeFromPath(getPath().c_str() + 3, false);
 	} else {
-		return StdioStream::makeFromPath(getPath().c_str(), false);
+		return DSFileStream::makeFromPath(getPath().c_str(), false);
 	}
 }
 
 Common::WriteStream *GBAMPFileSystemNode::createWriteStream() {
-	return StdioStream::makeFromPath(getPath().c_str(), true);
+	return DSFileStream::makeFromPath(getPath().c_str(), true);
 }
 
+
+
+
+DSFileStream::DSFileStream(void *handle) : _handle(handle) {
+	assert(handle);
+	_writeBufferPos = 0;
+}
+
+DSFileStream::~DSFileStream() {
+	if (_writeBufferPos > 0) {
+		flush();
+	}
+	std_fclose((FILE *)_handle);
+}
+
+bool DSFileStream::err() const {
+	return std_ferror((FILE *)_handle) != 0;
+}
+
+void DSFileStream::clearErr() {
+	std_clearerr((FILE *)_handle);
+}
+
+bool DSFileStream::eos() const {
+	return std_feof((FILE *)_handle) != 0;
+}
+
+int32 DSFileStream::pos() const {
+	if (_writeBufferPos > 0) {
+		// Discard constness.  Bad, but I can't see another way.
+		((DSFileStream *) (this))->flush();
+	}
+	return std_ftell((FILE *)_handle);
+}
+
+int32 DSFileStream::size() const {
+	if (_writeBufferPos > 0) {
+		// Discard constness.  Bad, but I can't see another way.
+		((DSFileStream *) (this))->flush();
+	}
+	int32 oldPos = std_ftell((FILE *)_handle);
+	std_fseek((FILE *)_handle, 0, SEEK_END);
+	int32 length = std_ftell((FILE *)_handle);
+	std_fseek((FILE *)_handle, oldPos, SEEK_SET);
+
+	return length;
+}
+
+bool DSFileStream::seek(int32 offs, int whence) {
+	if (_writeBufferPos > 0) {
+		flush();
+	}
+	return std_fseek((FILE *)_handle, offs, whence) == 0;
+}
+
+uint32 DSFileStream::read(void *ptr, uint32 len) {
+	if (_writeBufferPos > 0) {
+		flush();
+	}
+	return std_fread((byte *)ptr, 1, len, (FILE *)_handle);
+}
+
+uint32 DSFileStream::write(const void *ptr, uint32 len) {
+	if (_writeBufferPos + len < WRITE_BUFFER_SIZE) {
+		memcpy(_writeBuffer + _writeBufferPos, ptr, len);
+		_writeBufferPos += len;
+	}
+	else
+	{
+		if (_writeBufferPos > 0) {
+			flush();
+		}
+		return std_fwrite(ptr, 1, len, (FILE *)_handle);
+	}
+}
+
+bool DSFileStream::flush() {
+
+	if (_writeBufferPos > 0) {
+		std_fwrite(_writeBuffer, 1, _writeBufferPos, (FILE *) _handle);
+		_writeBufferPos = 0;
+	}
+
+	return std_fflush((FILE *)_handle) == 0;
+}
+
+DSFileStream *DSFileStream::makeFromPath(const Common::String &path, bool writeMode) {
+	FILE *handle = std_fopen(path.c_str(), writeMode ? "wb" : "rb");
+
+	if (handle)
+		return new DSFileStream(handle);
+	return 0;
+}
+
+
+
+
 // Stdio replacements
 #define MAX_FILE_HANDLES 32
 

Modified: scummvm/trunk/backends/fs/ds/ds-fs.h
===================================================================
--- scummvm/trunk/backends/fs/ds/ds-fs.h	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/fs/ds/ds-fs.h	2009-03-19 09:51:40 UTC (rev 39526)
@@ -27,7 +27,6 @@
 #include "common/fs.h"
 #include "zipreader.h"
 #include "ramsave.h"
-#include "scummconsole.h"
 #include "fat/gba_nds_fat.h"
 #include "backends/fs/abstract-fs.h"
 
@@ -168,6 +167,41 @@
 	DSSaveFile* sramFile;
 };
 
+
+class DSFileStream : public Common::SeekableReadStream, public Common::WriteStream, public Common::NonCopyable {
+protected:
+	static const int WRITE_BUFFER_SIZE = 512;
+
+	/** File handle to the actual file. */
+	void 	*_handle;
+
+	char	_writeBuffer[WRITE_BUFFER_SIZE];
+	int	_writeBufferPos;
+
+public:
+	/**
+	 * Given a path, invokes fopen on that path and wrap the result in a
+	 * StdioStream instance.
+	 */
+	static DSFileStream *makeFromPath(const Common::String &path, bool writeMode);
+
+	DSFileStream(void *handle);
+	virtual ~DSFileStream();
+
+	bool err() const;
+	void clearErr();
+	bool eos() const;
+
+	virtual uint32 write(const void *dataPtr, uint32 dataSize);
+	virtual bool flush();
+
+	virtual int32 pos() const;
+	virtual int32 size() const;
+	bool seek(int32 offs, int whence = SEEK_SET);
+	uint32 read(void *dataPtr, uint32 dataSize);
+};
+
+
 #undef stderr
 #undef stdout
 #undef stdin


Property changes on: scummvm/trunk/backends/platform/ds
___________________________________________________________________
Added: svn:mergeinfo
   + /scummvm/branches/branch-0-13-0/backends/platform/ds:35922-39516

Modified: scummvm/trunk/backends/platform/ds/arm7/source/main.cpp
===================================================================
--- scummvm/trunk/backends/platform/ds/arm7/source/main.cpp	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm7/source/main.cpp	2009-03-19 09:51:40 UTC (rev 39526)
@@ -34,6 +34,8 @@
 #include <bios.h>
 #include <arm7/touch.h>
 #include <arm7/clock.h>
+#include <arm7/audio.h>
+#include <system.h>
 #include <stdlib.h>
 #include <string.h>
 //#include <registers_alt.h>	// not needed in current libnds
@@ -135,13 +137,13 @@
 
   switch (format) {
 	case 1: {
-		flags |= SOUND_8BIT;
+		flags |= SOUND_FORMAT_8BIT;
 		flags |= SOUND_REPEAT;// | (1 << 15);
 		break;
 	}
 
 	case 0: {
-		flags |= SOUND_16BIT;
+		flags |= SOUND_FORMAT_16BIT;
 		flags |= SOUND_REPEAT;// | (1 << 15);
 		break;
 	}
@@ -433,13 +435,14 @@
     but = REG_KEYXY;
     if (!(but & 0x40)) {
       // Read the touch screen
-	  touchPosition p = touchReadXY();
+	touchPosition p;
+	touchReadXY(&p);
 
 //      x = touchRead(TSC_MEASURE_X);
  //     y = touchRead(TSC_MEASURE_Y);
 
-	  x = p.x;
-	  y = p.y;
+	  x = p.rawx;
+	  y = p.rawy;
 
 	  xpx = p.px;
 	  ypx = p.py;
@@ -581,14 +584,14 @@
   rtcReset();
 
   //enable sound
-  powerON(POWER_SOUND);
+//  powerOn(POWER_SOUND);
   SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F);
   IPC->soundData = 0;
   IPC->reset = false;
 
 
+ fifoInit();
 
-
   for (int r = 0; r < 8; r++) {
 	IPC->adpcm.arm7Buffer[r] = (u8 *) malloc(512);
   }

Modified: scummvm/trunk/backends/platform/ds/arm9/makefile
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/makefile	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/makefile	2009-03-19 09:51:40 UTC (rev 39526)
@@ -8,36 +8,39 @@
 # Select the build by setting SCUMM_BUILD to a,b,c,d,e,f or g.
 # Anything else gets build a.
 
-ifeq ($(SCUMM_BUILD),h)
-        DS_BUILD_H = 1
- else
- ifeq ($(SCUMM_BUILD),g)
-        DS_BUILD_G = 1
+ifeq ($(SCUMM_BUILD),i)
+        DS_BUILD_I = 1
+else
+ ifeq ($(SCUMM_BUILD),h)
+         DS_BUILD_H = 1
   else
-  ifeq ($(SCUMM_BUILD),f)
-        DS_BUILD_F = 1
-  else
-   ifeq ($(SCUMM_BUILD),e)
-        DS_BUILD_E = 1
+   ifeq ($(SCUMM_BUILD),g)
+         DS_BUILD_G = 1
    else
-    ifeq ($(SCUMM_BUILD),d)
-        DS_BUILD_D = 1
+    ifeq ($(SCUMM_BUILD),f)
+         DS_BUILD_F = 1
     else
-     ifeq ($(SCUMM_BUILD),c)
-        DS_BUILD_C = 1
+     ifeq ($(SCUMM_BUILD),e)
+         DS_BUILD_E = 1
      else
-      ifeq ($(SCUMM_BUILD),b)
-        DS_BUILD_B = 1
+      ifeq ($(SCUMM_BUILD),d)
+         DS_BUILD_D = 1
       else
-        DS_BUILD_A = 1
+       ifeq ($(SCUMM_BUILD),c)
+         DS_BUILD_C = 1
+       else
+        ifeq ($(SCUMM_BUILD),b)
+         DS_BUILD_B = 1
+        else
+         DS_BUILD_A = 1
+        endif
+       endif
       endif
      endif
     endif
    endif
   endif
  endif
-endif
-
 # To do:
 # - FAT cache?
 
@@ -151,6 +154,12 @@
 	BUILD=scummvm-H
 endif
 
+ifdef DS_BUILD_I
+	DEFINES = -DDS_NON_SCUMM_BUILD -DDS_BUILD_H
+	LOGO = logog.bmp
+	ENABLE_TUCKER = STATIC_PLUGIN
+	BUILD=scummvm-H
+endif
 
 ARM7BIN	:= -7 $(CURDIR)/../../arm7/arm7.bin
 ICON		:= -b ../../../logo.bmp "ScummVM;By Neil Millstone;"
@@ -196,10 +205,13 @@
 	DEFINES += -DUSE_MAD
 endif
 
-DEFINES += -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE -DREDUCE_MEMORY_USAGE
+DEFINES += -DREDUCE_MEMORY_USAGE
 
-LDFLAGS = -specs=ds_arm9.specs -mthumb-interwork -Wl,--wrap,time -mno-fpu -Wl,-Map,map.txt -Wl,--gc-sections
+# Removed, as these are done in portdefs.h
+# -DDISABLE_TEXT_CONSOLE -DDISABLE_COMMAND_LINE 
 
+LDFLAGS = -specs=ds_arm9.specs -mthumb-interwork -mno-fpu -Wl,-Map,map.txt -Wl,--gc-sections
+
 INCLUDES= -I$(portdir)/$(BUILD) -I$(srcdir) -I$(srcdir)/engines \
 			-I$(portdir)/data -I$(portdir)/../commoninclude \
 			-I$(portdir)/source -I$(portdir)/source/mad -I$(portdir)/source/libcartreset \
@@ -239,8 +251,9 @@
 PORT_OBJS :=	$(portdir)/source/blitters_arm.o $(portdir)/source/cdaudio.o $(portdir)/source/dsmain.o \
 		$(portdir)/../../../fs/ds/ds-fs.o $(portdir)/source/gbampsave.o $(portdir)/source/scummhelp.o\
 		$(portdir)/source/osystem_ds.o $(portdir)/source/portdefs.o $(portdir)/source/ramsave.o\
-		$(portdir)/source/scummconsole.o $(portdir)/source/touchkeyboard.o $(portdir)/source/zipreader.o\
-		$(portdir)/source/dsoptions.o $(portdir)/source/keys.o $(portdir)/source/wordcompletion.o
+		$(portdir)/source/touchkeyboard.o $(portdir)/source/zipreader.o\
+		$(portdir)/source/dsoptions.o $(portdir)/source/keys.o $(portdir)/source/wordcompletion.o\
+		$(portdir)/source/interrupt.o
 
 ifdef USE_PROFILER
 	PORT_OBJS += $(portdir)/source/profiler/cyg-profile.o
@@ -281,7 +294,7 @@
 OPT_SPEED := -O3
 
 # Compiler options for files which should be optimised for space
-OPT_SIZE := -Os
+OPT_SIZE := -Os -mthumb
 
 
 #-mthumb -fno-gcse -fno-schedule-insns2

Modified: scummvm/trunk/backends/platform/ds/arm9/source/blitters_arm.s
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/blitters_arm.s	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/blitters_arm.s	2009-03-19 09:51:40 UTC (rev 39526)
@@ -20,9 +20,17 @@
 @
 @ @author Robin Watts (robin at wss.co.uk)
 
+@	.global timerTickHandler
+@	.align 2
+@	.code 32
+
+ at timerTickHandler:
+@	bx lr
+
+
 	.global	Rescale_320x256xPAL8_To_256x256x1555
 	.global	Rescale_320x256x1555_To_256x256x1555
-	.section .itcm,"ax", %progbits
+@	.section .itcm,"ax", %progbits
 	.align 2
 	.code 32
 

Modified: scummvm/trunk/backends/platform/ds/arm9/source/cdaudio.cpp
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/cdaudio.cpp	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/cdaudio.cpp	2009-03-19 09:51:40 UTC (rev 39526)
@@ -25,7 +25,6 @@
 #include "common/config-manager.h"
 #include "dsmain.h"
 #include "NDS/scummvm_ipc.h"
-#include "console2.h"
 
 #define WAV_FORMAT_IMA_ADPCM 0x14
 #define BUFFER_SIZE 8192

Deleted: scummvm/trunk/backends/platform/ds/arm9/source/console2.h
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/console2.h	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/console2.h	2009-03-19 09:51:40 UTC (rev 39526)
@@ -1,124 +0,0 @@
-//////////////////////////////////////////////////////////////////////
-//
-// consol.h --provides basic consol type print functionality
-//
-// version 0.1, February 14, 2005
-//
-//  Copyright (C) 2005 Michael Noland (joat) and Jason Rogers (dovoto)
-//
-//  This software is provided 'as-is', without any express or implied
-//  warranty.  In no event will the authors be held liable for any
-//  damages arising from the use of this software.
-//
-//  Permission is granted to anyone to use this software for any
-//  purpose, including commercial applications, and to alter it and
-//  redistribute it freely, subject to the following restrictions:
-//
-//  1. The origin of this software must not be misrepresented; you
-//     must not claim that you wrote the original software. If you use
-//     this software in a product, an acknowledgment in the product
-//     documentation would be appreciated but is not required.
-//  2. Altered source versions must be plainly marked as such, and
-//     must not be misrepresented as being the original software.
-//  3. This notice may not be removed or altered from any source
-//     distribution.
-//
-// Changelog:
-//   0.1: First version
-//	 0.2: Fixed sprite mapping bug.  1D mapping should work now.
-//			Changed some register defines for consistency.
-//
-//////////////////////////////////////////////////////////////////////
-#ifndef CONSOLE_H2
-#define CONSOLE_H2
-
-#define CONSOLE_USE_COLOR255 16
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void consoleInit(u16* font, u16* charBase, u16 numCharacters, u8 charStart, u16* map, u8 pal, u8 bitDepth);
-void consoleInitDefault(u16* map, u16* charBase, u8 bitDepth);
-
-void consolePrintf(const char* s, ...);
-
-void consolePrintSet(int x, int y);
-
-void consolePrintChar(char c);
-
-void consolePutString(int x, int y, char* s);
-void consolePutInt(int x, int y, int d);
-void consolePutX(int x, int y, int d);
-void consolePutChar(int x, int y, char c);
-void consolePutBin(int x, int y, int b);
-
-void consoleClear(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-//////////////////////////////////////////////////////////////////////
-//
-// consol.h --provides basic consol type print functionality
-//
-// version 0.1, February 14, 2005
-//
-//  Copyright (C) 2005 Michael Noland (joat) and Jason Rogers (dovoto)
-//
-//  This software is provided 'as-is', without any express or implied
-//  warranty.  In no event will the authors be held liable for any
-//  damages arising from the use of this software.
-//
-//  Permission is granted to anyone to use this software for any
-//  purpose, including commercial applications, and to alter it and
-//  redistribute it freely, subject to the following restrictions:
-//
-//  1. The origin of this software must not be misrepresented; you
-//     must not claim that you wrote the original software. If you use
-//     this software in a product, an acknowledgment in the product
-//     documentation would be appreciated but is not required.
-//  2. Altered source versions must be plainly marked as such, and
-//     must not be misrepresented as being the original software.
-//  3. This notice may not be removed or altered from any source
-//     distribution.
-//
-// Changelog:
-//   0.1: First version
-//	 0.2: Fixed sprite mapping bug.  1D mapping should work now.
-//			Changed some register defines for consistency.
-//
-//////////////////////////////////////////////////////////////////////
-#ifndef CONSOLE_H2
-#define CONSOLE_H2
-
-#define CONSOLE_USE_COLOR255 16
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void consoleInit(u16* font, u16* charBase, u16 numCharacters, u8 charStart, u16* map, u8 pal, u8 bitDepth);
-void consoleInitDefault(u16* map, u16* charBase, u8 bitDepth);
-
-void consolePrintf(const char* s, ...);
-
-void consolePrintSet(int x, int y);
-
-void consolePrintChar(char c);
-
-void consolePutString(int x, int y, char* s);
-void consolePutInt(int x, int y, int d);
-void consolePutX(int x, int y, int d);
-void consolePutChar(int x, int y, char c);
-void consolePutBin(int x, int y, int b);
-
-void consoleClear(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif

Modified: scummvm/trunk/backends/platform/ds/arm9/source/dsmain.cpp
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/dsmain.cpp	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/dsmain.cpp	2009-03-19 09:51:40 UTC (rev 39526)
@@ -67,6 +67,7 @@
 #include <nds.h>
 #include <nds/registers_alt.h>
 #include <nds/arm9/exceptions.h>
+#include <nds/arm9/console.h>
 
 //#include <ARM9/console.h> //basic print funcionality
 
@@ -94,8 +95,11 @@
 #include "profiler/cyg-profile.h"
 #endif
 #include "backends/fs/ds/ds-fs.h"
+#include "engine.h"
 
+extern "C" void OurIntrMain(void);
 extern "C" u32 getExceptionAddress( u32 opcodeAddress, u32 thumbState);
+
 extern const char __itcm_start[];
 static const char *registerNames[] =
 	{	"r0","r1","r2","r3","r4","r5","r6","r7",
@@ -115,6 +119,7 @@
 }
 */
 
+
 namespace DS {
 
 // From console.c in NDSLib
@@ -556,22 +561,18 @@
 #endif
 	u16 buffer[32 * 32];
 
+	initGame();
+
 	setKeyboardEnable(false);
 
 	if (!displayModeIs8Bit) {
 		for (int r = 0; r < 32 * 32; r++) {
 			buffer[r] = ((u16 *) SCREEN_BASE_BLOCK_SUB(4))[r];
 		}
-	}
-
-	consoleInitDefault((u16*)SCREEN_BASE_BLOCK(2), (u16*)CHAR_BASE_BLOCK(0), 16);
-	consolePrintSet(0, 23);
-
-	if (!displayModeIs8Bit) {
+	} else {
 		for (int r = 0; r < 32 * 32; r++) {
-			((u16 *) SCREEN_BASE_BLOCK(2))[r] = buffer[r];
+			buffer[r] = ((u16 *) SCREEN_BASE_BLOCK(2))[r];
 		}
-//		dmaCopyHalfWords(3, (u16 *) SCREEN_BASE_BLOCK(0), buffer, 32 * 32 * 2);
 	}
 
 	displayModeIs8Bit = true;
@@ -618,16 +619,42 @@
 	SUB_BG3_CR = BG_BMP8_512x256;
 
 	SUB_BG3_XDX = (int) (subScreenWidth / 256.0f * 256);
-    SUB_BG3_XDY = 0;
-    SUB_BG3_YDX = 0;
-    SUB_BG3_YDY = (int) (subScreenHeight / 192.0f * 256);
+    	SUB_BG3_XDY = 0;
+    	SUB_BG3_YDX = 0;
+	SUB_BG3_YDY = (int) (subScreenHeight / 192.0f * 256);
 
 
+
+	if (consoleEnable)
+	{
+		consoleInit(NULL, 0, BgType_Text4bpp, BgSize_T_256x256, 2, 0, true);
+
+		// Move the cursor to the bottom of the screen using ANSI escape code
+		consolePrintf("\033[23;0f");
+	}
+//	consoleInitDefault((u16*)SCREEN_BASE_BLOCK(2), (u16*)CHAR_BASE_BLOCK(0), 16);
+//	consoleSetWindow(NULL, 0, 0, 32, 24);
+//	consolePrintSet(0, 23);
+/*	while (1) {
+		printf("Hello world");
+	}*/
+
+
+	for (int r = 0; r < 32 * 32; r++) {
+		((u16 *) SCREEN_BASE_BLOCK(2))[r] = buffer[r];
+//		dmaCopyHalfWords(3, (u16 *) SCREEN_BASE_BLOCK(0), buffer, 32 * 32 * 2);
+	}
+
+	// ConsoleInit destroys the hardware palette :-(
+	OSystem_DS::instance()->restoreHardwarePalette();
+	
+//	BG_PALETTE_SUB[255] = RGB15(31,31,31);//by default font will be rendered with color 255
+
 	// Do text stuff
 	// console chars at 1C000 (7), map at 1D000 (74)
 
-	BG0_CR = BG_MAP_BASE(2) | BG_TILE_BASE(0);
-	BG0_Y0 = 0;
+//	BG0_CR = BG_MAP_BASE(2) | BG_TILE_BASE(0);
+//	BG0_Y0 = 0;
 
 	// Restore palette entry used by text in the front-end
 //	PALETTE_SUB[255] = savedPalEntry255;
@@ -635,7 +662,6 @@
 
 
 
-	initGame();
 
 	#ifdef HEAVY_LOGGING
 	consolePrintf("done\n");
@@ -808,9 +834,11 @@
 
 	releaseAllKeys();
 
-	if (displayModeIs8Bit) {
-//		static int test = 0;
-//		consolePrintf("saving buffer... %d\n", test++);
+	if (!displayModeIs8Bit) {
+		for (int r = 0; r < 32 * 32; r++) {
+			buffer[r] = ((u16 *) SCREEN_BASE_BLOCK_SUB(4))[r];
+		}
+	} else {
 		saveGameBackBuffer();
 		for (int r = 0; r < 32 * 32; r++) {
 			buffer[r] = ((u16 *) SCREEN_BASE_BLOCK(2))[r];
@@ -833,24 +861,24 @@
 
 	memset(BG_GFX, 0, 512 * 256 * 2);
 
-	savedPalEntry255 = PALETTE_SUB[255];
-	PALETTE_SUB[255] = RGB15(31,31,31);//by default font will be rendered with color 255
+	savedPalEntry255 = BG_PALETTE_SUB[255];
+	BG_PALETTE_SUB[255] = RGB15(31,31,31);//by default font will be rendered with color 255
 
 	// Do text stuff
 	SUB_BG0_CR = BG_MAP_BASE(4) | BG_TILE_BASE(0);
 	SUB_BG0_Y0 = 0;
 
-	consoleInitDefault((u16*)SCREEN_BASE_BLOCK_SUB(4), (u16*)CHAR_BASE_BLOCK_SUB(0), 16);
+	consoleInit(NULL, 0, BgType_Text4bpp, BgSize_T_256x256, 4, 0, false);
+//	consoleInitDefault((u16*)SCREEN_BASE_BLOCK_SUB(4), (u16*)CHAR_BASE_BLOCK_SUB(0), 16);
 
-	if (displayModeIs8Bit) {
-		//dmaCopyHalfWords(3, (u16 *) SCREEN_BASE_BLOCK_SUB(0), buffer, 32 * 32 * 2);
-		for (int r = 0; r < 32 * 32; r++) {
-			((u16 *) SCREEN_BASE_BLOCK_SUB(4))[r] = buffer[r];
-		}
+	for (int r = 0; r < 32 * 32; r++) {
+		((u16 *) SCREEN_BASE_BLOCK_SUB(4))[r] = buffer[r];
 	}
 
-	consolePrintSet(0, 23);
-	consolePrintf("\n");
+	consoleSetWindow(NULL, 0, 0, 32, 24);
+//	consolePrintSet(0, 23);
+//	consolePrintf("Hello world!\n\n");
+//	consolePrintf("\n");
 
 	// Show keyboard
 	SUB_BG1_CR = BG_TILE_BASE(1) | BG_MAP_BASE(12);
@@ -860,15 +888,20 @@
 
 	displayModeIs8Bit = false;
 
+	// ConsoleInit destroys the hardware palette :-(
+	OSystem_DS::instance()->restoreHardwarePalette();
+
 	BG3_XDX = isCpuScalerEnabled() ? 256 : (int) (1.25f * 256);
-    BG3_XDY = 0;
-    BG3_YDX = 0;
-    BG3_YDY = (int) ((200.0f / 192.0f) * 256);
+	BG3_XDY = 0;
+	BG3_YDX = 0;	
+	BG3_YDY = (int) ((200.0f / 192.0f) * 256);
 
 	#ifdef HEAVY_LOGGING
 	consolePrintf("done\n");
 	#endif
 
+	BG_PALETTE_SUB[255] = RGB15(31,31,31);//by default font will be rendered with color 255
+
 }
 
 
@@ -1470,6 +1503,7 @@
 
 			if ((!getIndyFightState()) && (getKeysDown() & KEY_Y)) {
 				consoleEnable = !consoleEnable;
+				consolePrintf("Console enable: %d\n", consoleEnable);
 				if (displayModeIs8Bit) {
 					displayMode8Bit();
 				} else {
@@ -1536,13 +1570,31 @@
 
 			}
 
-			if ((getKeysDown() & KEY_SELECT)) {
-				//scaledMode = !scaledMode;
-				//scY = 4;
-				showOptionsDialog();
+
+			static int selectHoldCount = 0;			
+			static const int SELECT_HOLD_TIME = 60;
+
+			if ((getKeysHeld() & KEY_SELECT)) {
+				selectHoldCount++;
+
+				if (selectHoldCount == SELECT_HOLD_TIME) {
+					// Hold select down for one second - show GMM
+					g_engine->openMainMenuDialog();
+				}
+			} else {
+				selectHoldCount = 0;
 			}
 
+			
+	
+			if (getKeysReleased() & KEY_SELECT) {
+				if (selectHoldCount < SELECT_HOLD_TIME) {
+					// Just pressed select - show DS options screen
+					showOptionsDialog();
+				}
+			}
 
+
 		}
 
 		if (!getIndyFightState() && !((getKeysHeld() & KEY_L) || (getKeysHeld() & KEY_R)) && (getKeysDown() & KEY_X)) {
@@ -1654,6 +1706,7 @@
 
 
 		if ((getKeysChanged() & KEY_START)) {
+			event.kbd.flags = 0;
 			event.type = getKeyEvent(KEY_START);
 			if (currentGame->control == CONT_FUTURE_WARS) {
 				event.kbd.keycode = Common::KEYCODE_F10;
@@ -1670,7 +1723,6 @@
 				event.kbd.ascii = Common::ASCII_F5;
 //				consolePrintf("!!!!!F5!!!!!");
 			}
-			event.kbd.flags = 0;
 			system->addEvent(event);
 		}
 
@@ -1780,6 +1832,13 @@
 //		bufferFirstHalf = true;
 	}
 
+// TIMER0
+	if ((callback) && (callbackTimer > 0)) {
+		callbackTimer--;
+	}
+	currentTimeMillis++;
+// TIMER0 end
+	
 	soundHiPart = !soundHiPart;
 }
 
@@ -1879,17 +1938,23 @@
 //  }
 
 	//consolePrintf("X:%d Y:%d\n", getPenX(), getPenY());
+/*
+	if ((callback) && (callbackTimer > 0)) {
+		callbackTimer--;
+	}
+	currentTimeMillis++;
+*/
+/*	static int firstTime = 1;
 
-	static bool firstTime = true;
-
 	// This is to ensure that the ARM7 vblank handler runs before this one.
 	// Fixes the problem with the MMD when the screens swap over on load.
-	if (firstTime) {
-		firstTime = false;
+	if (firstTime > 0) {
+		REG_IF = IRQ_VBLANK;
+		firstTime--;
 		return;
 	}
+*/
 
-
 	IPC->tweak = tweak;
 	soundUpdate();
 
@@ -2165,7 +2230,7 @@
 	updateOAM();
 
 	//PALETTE[0] = RGB15(0, 0, 0);
-	REG_IF = IRQ_VBLANK;
+	//REG_IF = IRQ_VBLANK;
 }
 
 int getMillis() {
@@ -2181,13 +2246,17 @@
 }
 
 void timerTickHandler() {
-	REG_IF = IRQ_TIMER0;
+//	REG_IF = IRQ_TIMER0;
 	if ((callback) && (callbackTimer > 0)) {
 		callbackTimer--;
 	}
 	currentTimeMillis++;
 }
 
+
+
+
+
 void setTalkPos(int x, int y) {
 //	if (gameID != Scumm::GID_SAMNMAX) {
 //		setTopScreenTarget(x, 0);
@@ -2238,7 +2307,7 @@
 
 	penInit();
 
-	powerON(POWER_ALL);
+	powerOn(POWER_ALL);
 /*	vramSetBankA(VRAM_A_MAIN_BG);
 	vramSetBankB(VRAM_B_MAIN_BG);
 	vramSetBankC(VRAM_C_SUB_BG); */
@@ -2257,17 +2326,17 @@
 
 
 	for (int r = 0; r < 255; r++) {
-		PALETTE[r] = 0;
+		BG_PALETTE[r] = 0;
 	}
 
-	PALETTE[255] = RGB15(0,31,0);
+	BG_PALETTE[255] = RGB15(0,31,0);
 
 
 	for (int r = 0; r < 255; r++) {
-		PALETTE_SUB[r] = 0;
+		BG_PALETTE_SUB[r] = 0;
 	}
 
-	PALETTE_SUB[255] = RGB15(0,31,0);
+	BG_PALETTE_SUB[255] = RGB15(0,31,0);
 
 	// Allocate save buffer for game screen
 //	savedBuffer = new u8[320 * 200];
@@ -2295,7 +2364,7 @@
 	//BG0_CR = BG_MAP_BASE(0) | BG_TILE_BASE(1);
 //	BG0_Y0 = 48;
 
-	PALETTE[255] = RGB15(31,31,31);//by default font will be rendered with color 255
+	BG_PALETTE[255] = RGB15(31,31,31);//by default font will be rendered with color 255
 
 	//consoleInit() is a lot more flexible but this gets you up and running quick
 //	consoleInitDefault((u16*)SCREEN_BASE_BLOCK(0), (u16*)CHAR_BASE_BLOCK(1), 16);
@@ -2303,14 +2372,14 @@
 
 	//irqs are nice
 	irqInit();
-//	irqInitHandler();
+	irqInitHandler(OurIntrMain);
 	irqSet(IRQ_VBLANK, VBlankHandler);
 	irqSet(IRQ_TIMER0, timerTickHandler);
 	irqSet(IRQ_TIMER2, soundBufferEmptyHandler);
 
 	irqEnable(IRQ_VBLANK);
 	irqEnable(IRQ_TIMER0);
-	irqEnable(IRQ_TIMER2);
+//	irqEnable(IRQ_TIMER2);
 
 #ifdef USE_PROFILER
 	irqSet(IRQ_HBLANK, hBlankHandler);
@@ -2330,7 +2399,7 @@
 	consolePrintf("done\n");
 	#endif
 
-	PALETTE[255] = RGB15(0,0,31);
+	BG_PALETTE[255] = RGB15(0,0,31);
 
 	initSprites();
 
@@ -2682,17 +2751,15 @@
 ///////////////////
 
 #define FAST_RAM_SIZE (24000)
-
 u8* fastRamPointer;
 u8 fastRamData[FAST_RAM_SIZE] ITCM_DATA;
 
 void* fastRamAlloc(int size) {
-//	return malloc(size);
 	void* result = (void *) fastRamPointer;
 	fastRamPointer += size;
 	if(fastRamPointer > fastRamData + FAST_RAM_SIZE) {
 		consolePrintf("FastRam (ITCM) allocation failed!\n");
-		return NULL;
+		return malloc(size);
 	}
 	return result;
 }
@@ -2839,8 +2906,8 @@
 void dsExceptionHandler() {
 	consolePrintf("Blue screen of death");
 	setExceptionHandler(NULL);
+	while(1);
 
-
 	u32	currentMode = getCPSR() & 0x1f;
 	u32 thumbState = ((*(u32*)0x027FFD90) & 0x20);
 
@@ -2875,10 +2942,10 @@
 					registerNames[i], exceptionRegisters[i],
 					registerNames[i+8],exceptionRegisters[i+8]);
 	}
-//	u32 *stack = (u32 *)exceptionRegisters[13];
-//	for ( i=0; i<10; i++ ) {
-//		consolePrintf( "\x1b[%d;2H%08X: %08X %08X", i + 14, (u32)&stack[i*2],stack[i*2], stack[(i*2)+1] );
-//	}
+	u32 *stack = (u32 *)exceptionRegisters[13];
+	for ( i=0; i<10; i++ ) {
+		consolePrintf("%08X %08X %08X\n", stack[i*3], stack[i*3+1], stack[(i*3)+2] );
+	}
 
 	memoryReport();
 
@@ -2978,7 +3045,7 @@
 	consolePrintf("-------------------------------\n");
 	consolePrintf("ScummVM DS\n");
 	consolePrintf("Ported by Neil Millstone\n");
-	consolePrintf("Version 0.13.0 SVN ");
+	consolePrintf("Version 0.13.1 beta1 ");
 #if defined(DS_BUILD_A)
 	consolePrintf("build A\n");
 	consolePrintf("Lucasarts SCUMM games (SCUMM)\n");

Modified: scummvm/trunk/backends/platform/ds/arm9/source/dsmain.h
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/dsmain.h	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/dsmain.h	2009-03-19 09:51:40 UTC (rev 39526)
@@ -25,7 +25,6 @@
 
 #include <nds.h>
 #include "osystem_ds.h"
-#include "scummconsole.h"
 #include "NDS/scummvm_ipc.h"
 
 namespace DS {

Modified: scummvm/trunk/backends/platform/ds/arm9/source/dsoptions.cpp
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/dsoptions.cpp	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/dsoptions.cpp	2009-03-19 09:51:40 UTC (rev 39526)
@@ -52,8 +52,10 @@
 DSOptionsDialog::DSOptionsDialog() : GUI::Dialog(0, 0, 320 - 10, 230 - 40) {
 
 	new GUI::ButtonWidget(this, 10, 170, 72, 16, "Close", GUI::kCloseCmd, 'C');
-	_tab = new GUI::TabWidget(this, 5, 5, 300, 230 - 20 - 40 - 10);
+	new GUI::ButtonWidget(this, 320 - 10 - 130, 170, 120, 16, "ScummVM Main Menu", 0x40000000, 'M');
 
+	_tab = new GUI::TabWidget(this, 10, 5, 300, 230 - 20 - 40 - 20);
+
 	_tab->addTab("Controls");
 
 	_leftHandedCheckbox = new GUI::CheckboxWidget(_tab, 5, 5, 130, 20, "Left handed mode", 0, 'L');
@@ -264,8 +266,8 @@
 
 	}
 
-	if ((!guard) && (_radioButtonMode))
-	{
+
+	if ((!guard) && (_radioButtonMode)) {
 		guard = true;
 
 		if ((sender == _touchPadStyle) && (cmd == 0x20000001)) {
@@ -332,30 +334,17 @@
 		updateConfigManager();
 		close();
 	}
-}
 
-void togglePause() {
-	// Toggle pause mode by simulating pressing 'p'.  Not a good way of doing things!
-	// FIXME: What is this code meant to do ?!?
-
-	if (getCurrentGame()->control == CONT_SCUMM_ORIGINAL) {
-		Common::Event event;
-		OSystem_DS* system = OSystem_DS::instance();
-
-		event.type = Common::EVENT_KEYDOWN;
-		event.kbd.keycode = Common::KEYCODE_p;
-		event.kbd.ascii = 'p';
-		event.kbd.flags = 0;
-		system->addEvent(event);
-
-		event.type = Common::EVENT_KEYUP;
-		system->addEvent(event);
+	
+	if ((!guard) && (cmd == 0x40000000)) {
+		close();
+		g_engine->openMainMenuDialog();
 	}
 }
 
+
 void showOptionsDialog() {
 
-	togglePause();
 
 	DS::displayMode16Bit();
 
@@ -366,7 +355,6 @@
 
 	DS::displayMode8Bit();
 
-	togglePause();
 }
 
 void setOptions() {

Modified: scummvm/trunk/backends/platform/ds/arm9/source/dsoptions.h
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/dsoptions.h	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/dsoptions.h	2009-03-19 09:51:40 UTC (rev 39526)
@@ -44,7 +44,6 @@
 
 protected:
 	virtual void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data);
-	void togglePause();
 	void updateConfigManager();
 
 	GUI::TabWidget* _tab;

Modified: scummvm/trunk/backends/platform/ds/arm9/source/fat/disc_io.c
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/fat/disc_io.c	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/fat/disc_io.c	2009-03-19 09:51:40 UTC (rev 39526)
@@ -33,7 +33,6 @@
 #endif
 
 #include "disc_io.h"
-#include "scummconsole.h"
 
 
 // Include known io-interfaces:

Copied: scummvm/trunk/backends/platform/ds/arm9/source/interrupt.s (from rev 39516, scummvm/branches/branch-0-13-0/backends/platform/ds/arm9/source/interrupt.s)
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/interrupt.s	                        (rev 0)
+++ scummvm/trunk/backends/platform/ds/arm9/source/interrupt.s	2009-03-19 09:51:40 UTC (rev 39526)
@@ -0,0 +1,154 @@
+/*---------------------------------------------------------------------------------
+	$Id: interruptDispatcher.s,v 1.10 2007/08/11 06:00:23 wntrmute Exp $
+
+	Copyright (C) 2005
+		Dave Murphy (WinterMute)
+
+	This software is provided 'as-is', without any express or implied
+	warranty.  In no event will the authors be held liable for any
+	damages arising from the use of this software.
+
+	Permission is granted to anyone to use this software for any
+	purpose, including commercial applications, and to alter it and
+	redistribute it freely, subject to the following restrictions:
+
+	1.	The origin of this software must not be misrepresented; you
+		must not claim that you wrote the original software. If you use
+		this software in a product, an acknowledgment in the product
+		documentation would be appreciated but is not required.
+	2.	Altered source versions must be plainly marked as such, and
+		must not be misrepresented as being the original software.
+	3.	This notice may not be removed or altered from any source
+		distribution.
+
+	$Log: interruptDispatcher.s,v $
+	Revision 1.10  2007/08/11 06:00:23  wntrmute
+	make nesting really work
+
+	Revision 1.9  2007/01/10 15:48:27  wntrmute
+	remove unused code
+
+	Revision 1.8  2006/12/16 09:10:02  wntrmute
+	acknowledge interrupt before calling handler
+
+	Revision 1.7  2006/04/26 05:11:31  wntrmute
+	rebase dtcm, take __irq_flags and __irq_vector from linker script
+	move arm7 irq vector & irq flags to actual locations
+
+	Revision 1.6  2006/04/23 18:19:15  wntrmute
+	reworked interrupt code to allow dtcm moving
+
+	Revision 1.5  2005/12/12 13:01:55  wntrmute
+	disable interrupts on return from user handler
+
+	Revision 1.4  2005/10/21 22:43:42  wntrmute
+	restore REG_IME on exit from null handler
+
+	Revision 1.3  2005/09/27 18:21:53  wntrmute
+	safer nested interrupt support
+
+	Revision 1.2  2005/09/04 16:37:01  wntrmute
+	check for NULL handler
+
+	Revision 1.1  2005/09/03 17:09:35  wntrmute
+	added interworking aware interrupt dispatcher
+
+
+---------------------------------------------------------------------------------*/
+
+#ifdef ARM7
+	.text
+#endif
+
+#ifdef ARM9
+	.section	.itcm,"ax",%progbits
+#endif
+
+	.extern	irqTable
+	.code 32
+
+	.global	OurIntrMain
+ at ---------------------------------------------------------------------------------
+OurIntrMain:
+ at ---------------------------------------------------------------------------------
+	mov	r3, #0x4000000		@ REG_BASE
+
+	ldr	r1, [r3, #0x208]	@ r1 = IME
+	str	r3, [r3, #0x208]	@ disable IME
+	mrs	r0, spsr
+	stmfd	sp!, {r0-r1,r3,lr}	@ {spsr, IME, REG_BASE, lr_irq}
+
+	ldr	r1, [r3,#0x210]		@ REG_IE
+	ldr	r2, [r3,#0x214]		@ REG_IF
+	and	r1,r1,r2
+
+	ldr	r0,=__irq_flags		@ defined by linker script
+
+	ldr	r2,[r0]
+	orr	r2,r2,r1
+	str	r2,[r0]
+
+	ldr	r2,=irqTable
+ at ---------------------------------------------------------------------------------
+findIRQ:
+ at ---------------------------------------------------------------------------------
+	ldr r0, [r2, #4]
+	cmp	r0,#0
+	beq	no_handler
+	ands	r0, r0, r1
+	bne	jump_intr
+	add	r2, r2, #8
+	b	findIRQ
+
+ at ---------------------------------------------------------------------------------
+no_handler:
+ at ---------------------------------------------------------------------------------
+	str	r1, [r3, #0x0214]	@ IF Clear
+	ldmfd   sp!, {r0-r1,r3,lr}	@ {spsr, IME, REG_BASE, lr_irq}
+	str	r1, [r3, #0x208]	@ restore REG_IME
+	mov	pc,lr
+
+ at ---------------------------------------------------------------------------------
+jump_intr:
+ at ---------------------------------------------------------------------------------
+	ldr	r1, [r2]		@ user IRQ handler address
+	cmp	r1, #0
+	bne	got_handler
+	mov	r1, r0
+	b	no_handler
+ at ---------------------------------------------------------------------------------
+got_handler:
+ at ---------------------------------------------------------------------------------
+
+	mrs	r2, cpsr
+	bic	r2, r2, #0xdf		@ \__
+	orr	r2, r2, #0x1f		@ /  --> Enable IRQ & FIQ. Set CPU mode to System.
+	msr	cpsr,r2
+
+	str	r0, [r3, #0x0214]	@ IF Clear
+
+	sub	r13,r13,#256
+	push	{lr}
+	adr	lr, IntrRet
+	bx	r1
+
+ at ---------------------------------------------------------------------------------
+IntrRet:
+ at ---------------------------------------------------------------------------------
+	mov	r3, #0x4000000		@ REG_BASE
+	str	r3, [r3, #0x208]	@ disable IME
+	pop	{lr}
+	add	r13,r13,#256
+
+	mrs	r3, cpsr
+	bic	r3, r3, #0xdf		@ \__
+	orr	r3, r3, #0x92		@ /  --> Disable IRQ. Enable FIQ. Set CPU mode to IRQ.
+	msr	cpsr, r3
+
+	ldmfd   sp!, {r0-r1,r3,lr}	@ {spsr, IME, REG_BASE, lr_irq}
+	msr	spsr, r0		@ restore spsr
+	str	r1, [r3, #0x208]	@ restore REG_IME
+	mov	pc,lr
+
+	.pool
+	.end

Modified: scummvm/trunk/backends/platform/ds/arm9/source/osystem_ds.cpp
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/osystem_ds.cpp	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/osystem_ds.cpp	2009-03-19 09:51:40 UTC (rev 39526)
@@ -156,7 +156,7 @@
 		green >>= 3;
 		blue >>= 3;
 
-//		if (r != 255)
+		//if (r != 255)
 		{
 			u16 paletteValue = red | (green << 5) | (blue << 10);
 
@@ -175,6 +175,19 @@
 	}
 }
 
+void OSystem_DS::restoreHardwarePalette()
+{
+	// Set the hardware palette up based on the stored palette
+
+	for (int r = 0; r < 255; r++) {
+		BG_PALETTE[r] = _palette[r];
+
+		if (!DS::getKeyboardEnable()) {
+			BG_PALETTE_SUB[r] = _palette[r];
+		}
+	}
+}
+
 void OSystem_DS::setCursorPalette(const byte *colors, uint start, uint num) {
 
 //	consolePrintf("Cursor palette set: start: %d, cols: %d\n", start, num);
@@ -213,13 +226,14 @@
 	return true;
 }
 
-void OSystem_DS::grabPalette(unsigned char *colors, uint start, uint num) {
+void OSystem_DS::grabPalette(unsigned char *colours, uint start, uint num) {
 //	consolePrintf("Grabpalette");
 
 	for (unsigned int r = start; r < start + num; r++) {
-		*colors++ = (BG_PALETTE[r] & 0x001F) << 3;
-		*colors++ = (BG_PALETTE[r] & 0x03E0) >> 5 << 3;
-		*colors++ = (BG_PALETTE[r] & 0x7C00) >> 10 << 3;
+		*colours++ = (BG_PALETTE[r] & 0x001F) << 3;
+		*colours++ = (BG_PALETTE[r] & 0x03E0) >> 5 << 3;
+		*colours++ = (BG_PALETTE[r] & 0x7C00) >> 10 << 3;
+		colours++;
 	}
 }
 
@@ -248,12 +262,21 @@
 		stride = DS::get8BitBackBufferStride();
 	}
 
+
 	if (((pitch & 1) != 0) || ((w & 1) != 0) || (((int) (buf) & 1) != 0)) {
 
 		// Something is misaligned, so we have to use the slow but sure method
 
 		int by = 0;
 
+		if (DS::getKeyboardEnable()) {
+			// When they keyboard is on screen, we don't update the subscreen because
+			// the keyboard image uses the same VRAM addresses.  In order to do this,
+			// I'm going to update the main screen twice.  This avoids putting a compare
+			// in the loop and slowing down the common case.
+			bgSub = bg;
+		}
+
 		for (int dy = y; dy < y + h; dy++) {
 			u8* dest = ((u8 *) (bg)) + (dy * stride) + x;
 			u8* destSub = ((u8 *) (bgSub)) + (dy * 512) + x;
@@ -395,8 +418,19 @@
 //	consolePrintf("clearovl\n");
 }
 
-void OSystem_DS::grabOverlay(OverlayColor *buf, int pitch) {
-//	consolePrintf("grabovl\n");
+void OSystem_DS::grabOverlay(OverlayColor* buf, int pitch) {
+//	consolePrintf("grabovl\n")
+	u16* start = DS::get16BitBackBuffer();
+
+	for (int y = 0; y < 200; y++) {
+		u16* src = start + (y * 320);
+		u16* dest = ((u16 *) (buf)) + (y * pitch);
+				
+		for (int x = 0; x < 320; x++) {
+			*dest++ =  *src++;
+		}
+	}
+	
 }
 
 void OSystem_DS::copyRectToOverlay(const OverlayColor *buf, int pitch, int x, int y, int w, int h) {

Modified: scummvm/trunk/backends/platform/ds/arm9/source/osystem_ds.h
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/osystem_ds.h	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/osystem_ds.h	2009-03-19 09:51:40 UTC (rev 39526)
@@ -93,6 +93,7 @@
 	virtual int16 getWidth();
 	virtual void setPalette(const byte *colors, uint start, uint num);
 	virtual void grabPalette(unsigned char* colors, uint start, uint num);
+	void restoreHardwarePalette();
 
 	virtual void copyRectToScreen(const byte *buf, int pitch, int x, int y, int w, int h);
 	virtual void updateScreen();

Modified: scummvm/trunk/backends/platform/ds/arm9/source/portdefs.h
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/portdefs.h	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/portdefs.h	2009-03-19 09:51:40 UTC (rev 39526)
@@ -38,6 +38,7 @@
 
 #include "nds/jtypes.h"
 
+
 // Somebody removed these from scummsys.h, but they're still required, so I'm adding them here
 // in the hope that they'll stay.
 #include <stdio.h>
@@ -51,6 +52,8 @@
 
 #define CT_NO_TRANSPARENCY
 
+#define DISABLE_TEXT_CONSOLE
+#define DISABLE_COMMAND_LINE
 
 #ifdef __cplusplus
 extern "C" {
@@ -64,6 +67,8 @@
 //#define assert(expr) consolePrintf("Asserted!")
 #define NO_DEBUG_MSGS
 
+#define consolePrintf iprintf
+
 #ifdef assert
 #undef assert
 #endif

Deleted: scummvm/trunk/backends/platform/ds/arm9/source/scummconsole.c
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/scummconsole.c	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/scummconsole.c	2009-03-19 09:51:40 UTC (rev 39526)
@@ -1,568 +0,0 @@
-//////////////////////////////////////////////////////////////////////
-//
-// console.cpp -- provides basic print functionality
-//
-// version 0.1, February 14, 2005
-//
-//  Copyright (C) 2005 Michael Noland (joat) and Jason Rogers (dovoto)
-//
-//  This software is provided 'as-is', without any express or implied
-//  warranty.  In no event will the authors be held liable for any
-//  damages arising from the use of this software.
-//
-//  Permission is granted to anyone to use this software for any
-//  purpose, including commercial applications, and to alter it and
-//  redistribute it freely, subject to the following restrictions:
-//
-//  1. The origin of this software must not be misrepresented; you
-//     must not claim that you wrote the original software. If you use
-//     this software in a product, an acknowledgment in the product
-//     documentation would be appreciated but is not required.
-//  2. Altered source versions must be plainly marked as such, and
-//     must not be misrepresented as being the original software.
-//  3. This notice may not be removed or altered from any source
-//     distribution.
-//
-// Changelog:
-//   0.1: First version
-//	 0.2: Fixed sprite mapping bug.  1D mapping should work now.  
-//			Changed some register defines for consistency.
-//
-//////////////////////////////////////////////////////////////////////
-
-
-#include <nds.h>
-#include "scummconsole.h"
-
-#include <stdarg.h>
-
-#include <default_font_bin.h>
-
-/////////////////////////////////////////
-//global console variables
-
-#define CONSOLE_WIDTH 32
-#define CONSOLE_HEIGHT 24
-#define TAB_SIZE 3
-
-//map to print to
-u16* fontMap;
-
-//location of cursor
-u8 row, col;
-
-//font may not start on a character base boundry
-u16 fontOffset; 
-
-//the first character in the set (0 if you have a full set)
-u16 fontStart;
-
-//the 16-color palette to use
-u16 fontPal;
-
-
-
-
-///////////////////////////////////////////////////////////
-//consoleInit
-// param: 
-//		font: 16 color font
-//		charBase: the location the font data will be loaded to
-//		numCharacters: count of characters in the font
-//		charStart: The ascii number of the first character in the font set
-//					if you have a full set this will be zero
-//		map: pointer to the map you will be printing to.
-//		pal: specifies the 16 color palette to use, if > 15 it will change all non-zero
-//			entries in the font to use palette index 255
-void consoleInit(u16* font, u16* charBase, u16 numCharacters, u8 charStart, u16* map, u8 pal, u8 bitDepth)
-{
-	int i;
-
-	row = col = 0;
-	
-	fontStart = charStart;
-
-	fontOffset = 0;
-
-	fontMap = map;
-
-	if(bitDepth == 16)
-	{
-		if(pal < 16)
-		{
-			fontPal = pal << 12;
-
-			for (i = 0; i < numCharacters * 16; i++)
-				charBase[i] = font[i];
-		}
-		else
-		{
-			fontPal = 15 << 12;
-
-			for (i = 0; i < numCharacters * 16; i++)
-			{
-				u16 temp = 0;
-
-				if(font[i] & 0xF)
-					temp |= 0xF;
-				if(font[i] & 0xF0)
-					temp |= 0xF0;
-				if(font[i] & 0xF00)
-					temp |= 0xF00;
-				if(font[i] & 0xF000)
-					temp |= 0xF000;
-	
-				charBase[i] = temp;
-			}	
-		}
-	}//end if bitdepth
-	else
-	{
-		fontPal = 0;
-		for(i = 0; i < numCharacters * 16; i++)
-		{
-			u32 temp = 0;
-
-			if(font[i] & 0xF)
-				temp = 255;
-			if(font[i] & 0xF0)
-				temp |= 255 << 8;
-			if(font[i] & 0xF00)
-				temp |= 255 << 16;
-			if(font[i] & 0xF000)
-				temp |= 255 << 24;
-
-			((u32*)charBase)[i] = temp;
-
-		}
-	}
-}
-
-void consoleInitDefault(u16* map, u16* charBase, u8 bitDepth)
-{
-	consoleInit((u16 *) default_font_bin, charBase, 128, 0, map, CONSOLE_USE_COLOR255, bitDepth); 	
-}
-
-void consolePrintSet(int x, int y)
-{
-	if(y < CONSOLE_HEIGHT)
-		row = y;
-	else
-		row = CONSOLE_HEIGHT - 1;
-
-	if(x < CONSOLE_WIDTH)
-		col = x;
-	else
-		col = CONSOLE_WIDTH - 1;
-}
-
-void consolePrintChar(char c)
-{
-	int i;
-
-	if(col >= CONSOLE_WIDTH)
-	{
-		col = 0;
-
-		row++;		
-	}
-	
-	if(row >= CONSOLE_HEIGHT)
-	{
-		row--;
-
-		for(i = CONSOLE_WIDTH; i < CONSOLE_HEIGHT * CONSOLE_WIDTH; i++)
-			fontMap[i - CONSOLE_WIDTH] = fontMap[i];
-		for(i = 0; i < CONSOLE_WIDTH; i++)
-			fontMap[i + (CONSOLE_HEIGHT-1)*CONSOLE_WIDTH] = fontPal | (u16)(' ' + fontOffset - fontStart);
-
-
-	}
-	
-	switch(c)
-	{
-
-	case 10:
-	case 11:
-	case 12:
-	case 13:
-		row++;
-		col = 0;
-		break;
-	case 9:
-		col += TAB_SIZE;
-		break;
-	default:
-		fontMap[col + row * CONSOLE_WIDTH] = fontPal | (u16)(c + fontOffset - fontStart);
-		col++;
-		break;
-
-	}
-
-	
-}
-
-
-void printX(int w, unsigned d)
-{
-	int loop = 0;
-	int i = 0;
-	
-	char buf[20] = {0};
-
-
-	while(d > 0)
-	{
-		buf[loop++] =  d & 0xF;
-		d = d>>4; 
-	}
-	
-	for (i = 7; i >= 0; i--)
-	{
-		if(buf[i] || i < loop)
-		{
-			if(buf[i] < 10)
-				consolePrintChar(buf[i] + '0');
-			else
-				consolePrintChar(buf[i] + 'A' - 10);
-		}
-		else if(i < w)
-			consolePrintChar(' ');
-	}
-}
-
-void printx(int w, unsigned int d)
-{
-	int loop = 0;
-	int i = 0;
-	
-	char buf[20] = {0};
-
-	while(d > 0)
-	{
-		buf[loop++] =  d & 0xF;
-		d = d>>4; 
-	}
-	
-	for (i = 7; i >= 0; i--)
-	{
-		if(buf[i] || i < loop)
-		{
-			if(buf[i] < 10)
-				consolePrintChar(buf[i] + '0');
-			else
-				consolePrintChar(buf[i] + 'a' - 10);
-		}
-		else if(i < w)
-			consolePrintChar(' ');
-	}
-}
-
-void printInt(int w, int d)
-{
-	int loop = 0;
-	int i = 0;
-	
-	char buf[20] = {0}; 
-
-	if(d < 0)
-	{
-		consolePrintChar('-');
-		d *= -1;
-	}
-
-	if (d == 0)
-		buf[loop++] = 0;
-	else while (d > 0)
-	{
-		buf[loop++] =  d % 10;
-		d /= 10; 
-	}
-	
-	for (i = 7; i >= 0; i--)
-	{
-		if(buf[i] || i < loop)
-			consolePrintChar(buf[i] + '0');
-		else if(i < w)
-			consolePrintChar(' ');
-	}
-}
-
-void printBin(int w, int d)
-{
-	int i;
-	int first = 0;
-	for (i = 31; i >= 0; i--)
-	{
-		if(d & BIT(i))
-		{
-			first = 1;
-			consolePrintChar('1');
-		}
-		else if (first  || i == 0)
-			consolePrintChar('0');
-		else if (i < w)
-			consolePrintChar(' ');
-	}
-}
-
-void print0X(int w, unsigned d)
-{
-	int loop = 0;
-	int i = 0;
-	
-	char buf[] = {0,0,0,0,0,0,0,0}; //set to zero cause I may add formatted output someday
-	
-
-	while(d > 0)
-	{
-		buf[loop++] =  d & 0xF;
-		d = d>>4; 
-	}
-	
-	for (i = 7; i >= 0; i--)
-	{
-		if(buf[i] || i < w  || i < loop)
-		{
-			if(buf[i] < 10)
-				consolePrintChar(buf[i] + '0');
-			else
-				consolePrintChar(buf[i] + 'A' - 10);
-		}
-	}
-}
-
-void print0x(int w, unsigned int d)
-{
-	int loop = 0;
-	int i = 0;
-	
-	char buf[] = {0,0,0,0,0,0,0,0}; //set to zero cause I may add formatted output someday
-	
-
-	while(d > 0)
-	{
-		buf[loop++] =  d & 0xF;
-		d = d>>4; 
-	}
-	
-	for (i = 7; i >= 0; i--)
-	{
-		if(buf[i] || i < w  || i < loop)
-		{
-			if(buf[i] < 10)
-				consolePrintChar(buf[i] + '0');
-			else
-				consolePrintChar(buf[i] + 'a' - 10);
-		}
-	}
-}
-
-void print0Int(int w, int d)
-{
-	int loop = 0;
-	int i = 0;
-	
-	char buf[] = {0,0,0,0,0,0,0,0,0,0,0,0,0}; //set to zero cause I may add formatted output someday
-	
-	if(d < 0)
-	{
-		consolePrintChar('-');
-		d *= -1;
-	}
-
-	while(d > 0)
-	{
-		buf[loop++] =  d % 10;
-		d /= 10;  
-	}
-	
-	for (i = 15; i >= 0; i--)
-		if(buf[i] || i < w  || i < loop)
-			consolePrintChar(buf[i] + '0');
-
-}
-
-void print0Bin(int w, int d)
-{
-	int i;
-	int first = 0;
-	for (i = 31; i >= 0; i--)
-	{
-		if(d & BIT(i))
-		{
-			first = 1;
-			consolePrintChar('1');
-		}
-		else if (first  || i == 0)
-			consolePrintChar('0');
-		else if (i < w)
-			consolePrintChar('0');
-	}
-}
-
-void print(const char* s)
-{
-	for(; *s; s++) consolePrintChar(*s);
-}
-
-void printF(int w, float f)
-{
-	unsigned int* t = (unsigned int*)&f;
-	unsigned int fraction = (*t) & 0x007FFFFF;
-	int exp = ((*t) >> 23) & 0xFF;
-
-	if(*t & BIT(31))
-		consolePrintChar('-');
-	
-
-	print0Bin(32, fraction);
-	
-	printInt(1, fraction);
-	consolePrintChar('e');
-	printInt(1, exp - 127);
-	
-	/*
-	if(exp == 0 && fraction == 0)
-	{
-		printInt(1,0);
-	}
-	else if(exp == 0xFF && fraction == 0)
-	{
-		print("Inifinite");
-	}
-	else
-	{
-		printInt(w,fraction);
-		consolePrintChar('e');
-		printInt(1,exp - 127);
-	}
-	*/
-}
-
-int consolePrintf(const char* s, ...)
-{
-	int w = 1, z = 0;
-
-	va_list argp;
-
-	va_start(argp, s);
-	
-
-	while(*s)
-	{
-		w = 1;
-		z = 0;
-
-		switch(*s)
-		{
-		case '%':
-			s++;
-			if(*s == '0')
-			{
-				z = 1;
-				s++;
-			}
-			if(*s > '0' && *s <= '9')
-			{
-				w = *s - '0';
-				s++;
-			}
-			switch (*s)
-			{
-			case 'i':
-			case 'I':
-			case 'd':
-			case 'D':
-				if(z)print0Int(w, va_arg(argp, int)); 
-				else printInt(w, va_arg(argp, int));
-				s++;
-				break;
-			case 'X':
-				if(z)print0X(w, va_arg(argp, int));
-				else printX(w, va_arg(argp, int));
-				s++;
-				break;
-
-			case 'x':
-				if(z)print0x(w, va_arg(argp, int));
-				else printx(w, va_arg(argp, int));
-				s++;
-				break;
-
-			case 'b':
-			case 'B':
-				if(z)print0Bin(w, va_arg(argp, int));
-				else printBin(w, va_arg(argp, int));
-				s++;
-				break;
-			case 'f':
-			case 'F':
-/* Need to undo our 'all doubles are floats' definition */
-#define TEMP_DEF double
-#undef double
-			        printF(w,va_arg(argp, double));
-#define double TEMP_DEF
-#undef TEMP_DEF
-				s++;
-				break;
-			case 's':
-			case 'S':
-				print(va_arg(argp, char*));
-				s++;
-				break;
-			default:
-				consolePrintChar('%');
-				break;
-			}
-		default:
-			consolePrintChar(*s);
-			break;
-		}
-
-		s++;
-	}
-	va_end(argp);
-	
-	return 0;
-}
-
-void consolePutString(int x, int y, char* s)
-{
-	consolePrintSet(x, y);
-	consolePrintf(s);
-}
-
-void consolePutInt(int x, int y, int d)
-{
-	consolePrintSet(x,y);
-	printInt(1,d);
-}
-
-void consolePutX(int x, int y, int d)
-{
-	consolePrintSet(x, y);
-	printX(1,d);
-}
-
-void consolePutChar(int x, int y, char c)
-{
-	consolePrintSet(x, y);
-	consolePrintChar(c);
-}
-
-void consolePutBin(int x, int y, int b)
-{
-	consolePrintSet(x, y);
-	printBin(1,b);
-}
-void consoleClear(void)
-{
-	int i = 0;
-	consolePrintSet(0,0);
-
-	while(i++ < CONSOLE_HEIGHT * CONSOLE_WIDTH)
-		consolePrintChar(' ');
-
-	consolePrintSet(0,0);
-}

Deleted: scummvm/trunk/backends/platform/ds/arm9/source/scummconsole.h
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/scummconsole.h	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/scummconsole.h	2009-03-19 09:51:40 UTC (rev 39526)
@@ -1,67 +0,0 @@
-//////////////////////////////////////////////////////////////////////
-//
-// consol.h --provides basic consol type print functionality
-//
-// version 0.1, February 14, 2005
-//
-//  Copyright (C) 2005 Michael Noland (joat) and Jason Rogers (dovoto)
-//
-//  This software is provided 'as-is', without any express or implied
-//  warranty.  In no event will the authors be held liable for any
-//  damages arising from the use of this software.
-//
-//  Permission is granted to anyone to use this software for any
-//  purpose, including commercial applications, and to alter it and
-//  redistribute it freely, subject to the following restrictions:
-//
-//  1. The origin of this software must not be misrepresented; you
-//     must not claim that you wrote the original software. If you use
-//     this software in a product, an acknowledgment in the product
-//     documentation would be appreciated but is not required.
-//  2. Altered source versions must be plainly marked as such, and
-//     must not be misrepresented as being the original software.
-//  3. This notice may not be removed or altered from any source
-//     distribution.
-//
-// Changelog:
-//   0.1: First version
-//	 0.2: Fixed sprite mapping bug.  1D mapping should work now.
-//			Changed some register defines for consistency.
-//
-//////////////////////////////////////////////////////////////////////
-#ifndef CONSOLE_H2
-#define CONSOLE_H2
-
-#define CONSOLE_USE_COLOR255 16
-
-#include "portdefs.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void poo(u8 p);
-
-void consoleInit(u16* font, u16* charBase, u16 numCharacters, u8 charStart, u16* map, u8 pal, u8 bitDepth);
-void consoleInitDefault(u16* map, u16* charBase, u8 bitDepth);
-
-int consolePrintf(const char* s, ...);
-
-void consolePrintSet(int x, int y);
-
-void consolePrintChar(char c);
-
-void consolePutString(int x, int y, char* s);
-void consolePutInt(int x, int y, int d);
-void consolePutX(int x, int y, int d);
-void consolePutChar(int x, int y, char c);
-void consolePutBin(int x, int y, int b);
-
-void consoleClear(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-

Modified: scummvm/trunk/backends/platform/ds/arm9/source/scummhelp.cpp
===================================================================
--- scummvm/trunk/backends/platform/ds/arm9/source/scummhelp.cpp	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/arm9/source/scummhelp.cpp	2009-03-19 09:51:40 UTC (rev 39526)
@@ -48,8 +48,8 @@
 		ADD_BIND("A", "Switch screens");
 		ADD_BIND("Y", "Show/hide debug console");
 		ADD_BIND("X", "Show/hide keyboard");
-		ADD_BIND("L + Pad/Pen", "Scroll current touch screen view");
-		ADD_BIND("L + B/A", "Zoom in/out");
+		ADD_BIND("L+Pad/Pen", "Scroll current touch screen view");
+		ADD_BIND("L+B/A", "Zoom in/out");
 		break;
 	}
 
@@ -65,13 +65,13 @@
 		ADD_BIND("Pad Up", "Show/hide keyboard");
 		ADD_BIND("Pad Left", "Show/hide debug console");
 		ADD_BIND("Pad Right", "Swap screens");
-		ADD_BIND("R + Pad/Pen", "Scroll current touch screen view");
-		ADD_BIND("R+down/right", "Zoom in/out");
+		ADD_BIND("R+Pad/Pen", "Scroll current touch screen view");
+		ADD_BIND("R+dwn/rgt", "Zoom in/out");
 		break;
 	}
 
 	case 3: {
-		title = "Indiana Jones Fighting controls:";
+		title = "Indiana Jones Fight controls:";
 		ADD_BIND("Pad Left", "Move left");
 		ADD_BIND("Pad Right", "Move right");
 		ADD_BIND("Pad Up", "High guard");
@@ -80,9 +80,6 @@
 		ADD_BIND("X", "Punch high");
 		ADD_BIND("A", "Punch middle");
 		ADD_BIND("B", "Punch low");
-
-		ADD_BIND("L+R", "Hold during bootup to clear SRAM");
-		ADD_BIND("", "(flash cart only)");
 		break;
 	}
 	}

Modified: scummvm/trunk/backends/platform/ds/commoninclude/NDS/scummvm_ipc.h
===================================================================
--- scummvm/trunk/backends/platform/ds/commoninclude/NDS/scummvm_ipc.h	2009-03-19 09:09:31 UTC (rev 39525)
+++ scummvm/trunk/backends/platform/ds/commoninclude/NDS/scummvm_ipc.h	2009-03-19 09:51:40 UTC (rev 39526)
@@ -33,6 +33,18 @@
 //////////////////////////////////////////////////////////////////////
 
 
+
+
+//---------------------------------------------------------------------------------
+typedef struct sTransferSound {
+//---------------------------------------------------------------------------------
+  TransferSoundData data[16];
+  u8 count;
+  u8 PADDING[3];
+} TransferSound, * pTransferSound;
+
+
+
 typedef struct _adpcmBuffer {
 	u8* buffer[8];
 	bool filled[8];


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list