|
From: <c99...@us...> - 2007-07-17 23:06:59
|
Revision: 417
http://svn.sourceforge.net/cadcdev/?rev=417&view=rev
Author: c99koder
Date: 2007-07-17 16:06:07 -0700 (Tue, 17 Jul 2007)
Log Message:
-----------
NDS: Link with libfat, initialize libfat and the DS hardware, remove AutoLock calls from Stream class, and handle DS input events during VBlank interrupt
Modified Paths:
--------------
tiki/nds/Makefile.rules
tiki/nds/src/audio/stream.cpp
tiki/nds/src/init_shutdown.cpp
tiki/nds/src/plathid.cpp
tiki/nds/src/tikitime.cpp
Modified: tiki/nds/Makefile.rules
===================================================================
--- tiki/nds/Makefile.rules 2007-07-08 01:05:36 UTC (rev 416)
+++ tiki/nds/Makefile.rules 2007-07-17 23:06:07 UTC (rev 417)
@@ -12,7 +12,7 @@
$(error "Please set DEVKITPRO in your environment. export DEVKITPRO=<path to>devkitARM)
endif
-TIKI_BASE_LIBS=-ltiki -L$(DEVKITPRO)/libnds/lib -lnds9
+TIKI_BASE_LIBS=-ltiki -L$(DEVKITPRO)/libnds/lib -lfat -lnds9
CXXFLAGS=-I$(DEVKITPRO)/libnds/include
Modified: tiki/nds/src/audio/stream.cpp
===================================================================
--- tiki/nds/src/audio/stream.cpp 2007-07-08 01:05:36 UTC (rev 416)
+++ tiki/nds/src/audio/stream.cpp 2007-07-17 23:06:07 UTC (rev 417)
@@ -36,83 +36,61 @@
m_queueing = false;
m_state = StateStopped;
m_volume = 0.8f;
- m_mutex = new Mutex();
}
Stream::~Stream() {
- destroy();
}
bool Stream::create() {
- AutoLock lock(m_mutex);
return true;
}
void Stream::destroy() {
- AutoLock lock(m_mutex);
}
// virtual void filter(int freq, int chncount, void * buffer, int smpcnt) { }
void Stream::filterAdd(Filter * f) {
- AutoLock lock(m_mutex);
-
m_filters.insertTail(f);
}
void Stream::filterRemove(Filter * f) {
- AutoLock lock(m_mutex);
-
m_filters.del(f);
}
void Stream::setQueueing(bool isQueued) {
- AutoLock lock(m_mutex);
-
m_queueing = isQueued;
}
void Stream::setFrequency(int freq) {
- AutoLock lock(m_mutex);
-
m_freq = freq;
}
void Stream::setChannelCount(int chncount) {
- AutoLock lock(m_mutex);
-
m_chnCount = chncount;
}
void Stream::start() {
- AutoLock lock(m_mutex);
m_state = StatePlaying;
}
void Stream::stop() {
- AutoLock lock(m_mutex);
m_state = StateStopped;
}
void Stream::pause() {
- AutoLock lock(m_mutex);
m_state = StatePaused;
}
void Stream::resume() {
- AutoLock lock(m_mutex);
m_state = StatePlaying;
}
void Stream::setVolume(float vol) {
- AutoLock lock(m_mutex);
-
m_volume = vol;
}
bool Stream::isPlaying() {
- AutoLock lock(m_mutex);
-
return m_state == StatePlaying;
}
Modified: tiki/nds/src/init_shutdown.cpp
===================================================================
--- tiki/nds/src/init_shutdown.cpp 2007-07-08 01:05:36 UTC (rev 416)
+++ tiki/nds/src/init_shutdown.cpp 2007-07-17 23:06:07 UTC (rev 417)
@@ -13,9 +13,15 @@
#include "Tiki/plxcompat.h"
#include "Tiki/hid.h"
+#include <nds.h>
+#include <fat.h>
+
namespace Tiki {
bool init(int argc, char **argv) {
+ REG_POWERCNT = POWER_ALL;
+ irqInit();
+ fatInitDefault();
return Hid::init();
}
Modified: tiki/nds/src/plathid.cpp
===================================================================
--- tiki/nds/src/plathid.cpp 2007-07-08 01:05:36 UTC (rev 416)
+++ tiki/nds/src/plathid.cpp 2007-07-17 23:06:07 UTC (rev 417)
@@ -4,7 +4,71 @@
namespace Tiki {
namespace Hid {
+#define CONTROLLER_BUTTON_MAP(OLDSTATE, NEWSTATE, BUTTON, EVENT) \
+ if((NEWSTATE & BUTTON) && !(OLDSTATE & BUTTON)) { \
+ Event evt(Event::EvtBtnPress); \
+ evt.btn = EVENT; \
+ evt.port = 1; \
+ sendEvent(evt); \
+ } \
+ if(!(NEWSTATE & BUTTON) && (OLDSTATE & BUTTON)) { \
+ Event evt(Event::EvtBtnRelease); \
+ evt.btn = EVENT; \
+ evt.port = 1; \
+ sendEvent(evt); \
+ }
+
+#define CONTROLLER_KEY_MAP(OLDSTATE, NEWSTATE, BUTTON, EVENT) \
+ if((NEWSTATE & BUTTON) && !(OLDSTATE & BUTTON)) { \
+ Event evtPress(Event::EvtKeypress); \
+ evtPress.key = EVENT; \
+ evtPress.port = 1; \
+ sendEvent(evtPress); \
+ \
+ Event evt(Event::EvtKeyDown); \
+ evt.key = EVENT; \
+ evt.port = 1; \
+ sendEvent(evt); \
+ } \
+ if(!(NEWSTATE & BUTTON) && (OLDSTATE & BUTTON)) { \
+ Event evt(Event::EvtKeyUp); \
+ evt.key = EVENT; \
+ evt.port = 1; \
+ sendEvent(evt); \
+ }
+
+void TikiVBlank(void)
+{
+ static u32 oldkeys = 0;
+ scanKeys();
+ u32 keys = keysHeld();
+
+ //Controller events
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_UP, Event::BtnUp);
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_DOWN, Event::BtnDown);
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_LEFT, Event::BtnLeft);
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_RIGHT, Event::BtnRight);
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_A, Event::BtnA);
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_B, Event::BtnB);
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_X, Event::BtnX);
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_Y, Event::BtnY);
+ CONTROLLER_BUTTON_MAP(oldkeys, keys, KEY_START, Event::BtnStart);
+
+ //Keyboard emulation
+ CONTROLLER_KEY_MAP(oldkeys, keys, KEY_UP, Event::KeyUp);
+ CONTROLLER_KEY_MAP(oldkeys, keys, KEY_DOWN, Event::KeyDown);
+ CONTROLLER_KEY_MAP(oldkeys, keys, KEY_LEFT, Event::KeyLeft);
+ CONTROLLER_KEY_MAP(oldkeys, keys, KEY_RIGHT, Event::KeyRight);
+ CONTROLLER_KEY_MAP(oldkeys, keys, KEY_START, 13);
+ CONTROLLER_KEY_MAP(oldkeys, keys, KEY_A, 32);
+ CONTROLLER_KEY_MAP(oldkeys, keys, KEY_B, Event::KeyEsc);
+
+ oldkeys = keys;
+}
+
bool platInit() {
+ irqSet(IRQ_VBLANK,&TikiVBlank);
+ irqEnable(IRQ_VBLANK);
return true;
}
Modified: tiki/nds/src/tikitime.cpp
===================================================================
--- tiki/nds/src/tikitime.cpp 2007-07-08 01:05:36 UTC (rev 416)
+++ tiki/nds/src/tikitime.cpp 2007-07-17 23:06:07 UTC (rev 417)
@@ -11,6 +11,7 @@
#include <sys/time.h>
#include <unistd.h>
+#include <nds.h>
namespace Tiki {
namespace Time {
@@ -25,17 +26,12 @@
}
void sleep(uint64 us) {
-// TODO: add this
-}
+ float seconds = (float)us / 1000000.0f;
+ int blanks = (int)(seconds * 60.0f);
+ for(int i=0; i < blanks; i++) {
+ swiWaitForVBlank();
+ }
}
}
-
-
-
-
-
-
-
-
-
+}
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|