aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Brown2006-07-09 15:32:06 +0000
committerJames Brown2006-07-09 15:32:06 +0000
commit140097267fe8f9beaa7d6310a112326b3b9d8f16 (patch)
tree8995fb4bfaf628961fedb0a6d89cec76234d917c
parent1ffa13180f9b0eef110a6548d840257c15343804 (diff)
downloadscummvm-rg350-140097267fe8f9beaa7d6310a112326b3b9d8f16.tar.gz
scummvm-rg350-140097267fe8f9beaa7d6310a112326b3b9d8f16.tar.bz2
scummvm-rg350-140097267fe8f9beaa7d6310a112326b3b9d8f16.zip
Final fixes. Builds fine now, apart from a few still-missing-from-svn files
svn-id: r23461
-rw-r--r--backends/platform/ds/arm7/Makefile222
-rw-r--r--backends/platform/ds/arm7/source/main.cpp568
-rw-r--r--backends/platform/ds/arm9/makefile261
3 files changed, 4 insertions, 1047 deletions
diff --git a/backends/platform/ds/arm7/Makefile b/backends/platform/ds/arm7/Makefile
index 349de22427..d0498b069b 100644
--- a/backends/platform/ds/arm7/Makefile
+++ b/backends/platform/ds/arm7/Makefile
@@ -55,7 +55,7 @@ LIBS := -lnds7
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
-LIBDIRS := $(DEVKITPRO)/libnds
+LIBDIRS := $(DEVKITPRO)/libnds $(DEVKITPRO)/libnds/nds
#---------------------------------------------------------------------------------
@@ -93,7 +93,7 @@ export OFILES := $(MAPFILES:.map=.o) $(RAWFILES:.raw=.o) $(PALFILES:.pal=.o) $(B
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) -I- -I$(CURDIR)/../commoninclude\
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
- $(foreach dir,$(LIBDIRS),-I$(dir)/include/NDS)\
+ $(foreach dir,$(LIBDIRS),-I$(dir)/include/nds)\
-I$(CURDIR)/$(BUILD)
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
@@ -216,221 +216,3 @@ endef
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------
-#---------------------------------------------------------------------------------
-.SUFFIXES:
-#---------------------------------------------------------------------------------
-
-#---------------------------------------------------------------------------------
-# TARGET is the name of the output, if this ends with _mb generates a multiboot image
-# BUILD is the directory where object files & intermediate files will be placed
-# SOURCES is a list of directories containing source code
-# INCLUDES is a list of directories containing extra header files
-#---------------------------------------------------------------------------------
-TARGET := arm7
-BUILD := build
-SOURCES := gfx source data
-INCLUDES := include build
-
-#---------------------------------------------------------------------------------
-# options for code generation
-#---------------------------------------------------------------------------------
-ARCH := -mthumb-interwork
-
-# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
-# *insists* it has a FPU or VFP, and it won't take no for an answer!
-CFLAGS := -g -Wall -O2\
- -mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\
- -ffast-math \
- $(ARCH)
-
-CFLAGS += $(INCLUDE) -DARM7
-
-CXXFLAGS := $(CFLAGS) -fno-exceptions -fno-rtti
-ASFLAGS := -g $(ARCH)
-LDFLAGS := -g $(ARCH) -mno-fpu
-
-#---------------------------------------------------------------------------------
-# path to tools - this can be deleted if you set the path in windows
-#---------------------------------------------------------------------------------
-# export PATH := /d/dev/ds/devkitARM_r11/bin:/bin
-
-#---------------------------------------------------------------------------------
-# PATH to ndslib - just make a system variable called NDSLIBPATH and be done with it
-#---------------------------------------------------------------------------------
-# NDSLIBPATH := /d/dev/ds/ndslib/
-
-#---------------------------------------------------------------------------------
-# the prefix on the compiler executables
-#---------------------------------------------------------------------------------
-PREFIX := arm-eabi-
-#---------------------------------------------------------------------------------
-# any extra libraries we wish to link with the project
-#---------------------------------------------------------------------------------
-LIBS := -lnds7
-
-
-#---------------------------------------------------------------------------------
-# list of directories containing libraries, this must be the top level containing
-# include and lib
-#---------------------------------------------------------------------------------
-LIBDIRS := $(DEVKITPRO)/libnds
-
-
-#---------------------------------------------------------------------------------
-# no real need to edit anything past this point unless you need to add additional
-# rules for different file extensions
-#---------------------------------------------------------------------------------
-ifneq ($(BUILD),$(notdir $(CURDIR)))
-#---------------------------------------------------------------------------------
-
-export OUTPUT := $(CURDIR)/$(TARGET)
-
-export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
-
-export CC := $(PREFIX)gcc
-export CXX := $(PREFIX)g++
-export AR := $(PREFIX)ar
-export OBJCOPY := $(PREFIX)objcopy
-#---------------------------------------------------------------------------------
-# use CXX for linking C++ projects, CC for standard C
-#---------------------------------------------------------------------------------
-export LD := $(CXX)
-#export LD := $(CC)
-
-CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
-CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
-SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
-PCXFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pcx)))
-BINFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.bin)))
-PALFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.pal)))
-RAWFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.raw)))
-MAPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.map)))
-
-export OFILES := $(MAPFILES:.map=.o) $(RAWFILES:.raw=.o) $(PALFILES:.pal=.o) $(BINFILES:.bin=.o) $(PCXFILES:.pcx=.o)\
- $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
-
-export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) -I- -I$(CURDIR)/../commoninclude\
- $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
- $(foreach dir,$(LIBDIRS),-I$(dir)/include/NDS)\
- -I$(CURDIR)/$(BUILD)
-
-export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
-
-.PHONY: $(BUILD) clean
-
-#---------------------------------------------------------------------------------
-$(BUILD):
- @[ -d $@ ] || mkdir -p $@
- @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
-
-#---------------------------------------------------------------------------------
-clean:
- @echo clean ...$(TARGET)
- @rm -fr $(BUILD) *.bin
-
-
-#---------------------------------------------------------------------------------
-else
-
-DEPENDS := $(OFILES:.o=.d)
-
-#---------------------------------------------------------------------------------
-# main targets
-#---------------------------------------------------------------------------------
-
-$(OUTPUT).bin : $(OUTPUT).elf
-
-$(OUTPUT).elf : $(OFILES)
-
-
-
-#---------------------------------------------------------------------------------
-%.bin: %.elf
- @echo built ... $(notdir $@)
- @$(OBJCOPY) -O binary $(TARGET).elf $@
-
-#---------------------------------------------------------------------------------
-%.elf:
- echo ELF
- @$(LD) $(LDFLAGS) -specs=ds_arm7.specs $(OFILES) $(LIBPATHS) $(LIBS) -o $(TARGET).elf
-
-
-
-#---------------------------------------------------------------------------------
-# Compile Targets for C/C++
-#---------------------------------------------------------------------------------
-
-#---------------------------------------------------------------------------------
-%.o : %.cpp
- @echo $(notdir $<)
- @echo $(CXX) -MM $(CXXFLAGS) -o $*.d $<
- @$(CXX) -MM $(CXXFLAGS) -o $*.d $<
- @$(CXX) $(CXXFLAGS) -c $< -o$@
-
-#---------------------------------------------------------------------------------
-%.o : %.c
- @echo $(notdir $<)
- @$(CC) -MM $(CFLAGS) -o $*.d $<
- @$(CC) $(CFLAGS) -c $< -o$@
-
-#---------------------------------------------------------------------------------
-%.o : %.s
- @echo $(notdir $<)
- @$(CC) -MM $(CFLAGS) -o $*.d $<
- @$(CC) $(ASFLAGS) -c $< -o$@
-
-define bin2o
- cp $(<) $(*).tmp
- $(OBJCOPY) -I binary -O elf32-littlearm -B arm \
- --rename-section .data=.rodata \
- --redefine-sym _binary_$*_tmp_start=$*\
- --redefine-sym _binary_$*_tmp_end=$*_end\
- --redefine-sym _binary_$*_tmp_size=$*_size\
- $(*).tmp $(@)
- echo "extern const u8" $(*)"[];" > $(*).h
- echo "extern const u32" $(*)_size[]";" >> $(*).h
- rm $(*).tmp
-endef
-
-#---------------------------------------------------------------------------------
-%.o : %.pcx
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.bin
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.raw
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.pal
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.map
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.mdl
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-
--include $(DEPENDS)
-
-#---------------------------------------------------------------------------------------
-endif
-#--------------------------------------------------------------------------------------- \ No newline at end of file
diff --git a/backends/platform/ds/arm7/source/main.cpp b/backends/platform/ds/arm7/source/main.cpp
index f5518be647..c5cf7e406f 100644
--- a/backends/platform/ds/arm7/source/main.cpp
+++ b/backends/platform/ds/arm7/source/main.cpp
@@ -32,573 +32,9 @@
#include <arm7/clock.h>
#include <stdlib.h>
#include <string.h>
+#include <registers_alt.h>
-#include <nds/scummvm_ipc.h>
-//////////////////////////////////////////////////////////////////////
-
-
-#define TOUCH_CAL_X1 (*(vs16*)0x027FFCD8)
-#define TOUCH_CAL_Y1 (*(vs16*)0x027FFCDA)
-#define TOUCH_CAL_X2 (*(vs16*)0x027FFCDE)
-#define TOUCH_CAL_Y2 (*(vs16*)0x027FFCE0)
-#define SCREEN_WIDTH 256
-#define SCREEN_HEIGHT 192
-s32 TOUCH_WIDTH = TOUCH_CAL_X2 - TOUCH_CAL_X1;
-s32 TOUCH_HEIGHT = TOUCH_CAL_Y2 - TOUCH_CAL_Y1;
-s32 TOUCH_OFFSET_X = ( ((SCREEN_WIDTH -60) * TOUCH_CAL_X1) / TOUCH_WIDTH ) - 28;
-s32 TOUCH_OFFSET_Y = ( ((SCREEN_HEIGHT-60) * TOUCH_CAL_Y1) / TOUCH_HEIGHT ) - 28;
-
-vu8* soundData;
-
-vu8* soundBuffer;
-vu8* arm9Buffer;
-bool soundFilled[4];
-
-int playingSection;
-
-bool needSleep = false;
-int temp;
-
-int adpcmBufferNum = 0;
-
-// those are pixel positions of the two points you click when calibrating
-#define TOUCH_CNTRL_X1 (*(vu8*)0x027FFCDC)
-#define TOUCH_CNTRL_Y1 (*(vu8*)0x027FFCDD)
-#define TOUCH_CNTRL_X2 (*(vu8*)0x027FFCE2)
-#define TOUCH_CNTRL_Y2 (*(vu8*)0x027FFCE3)
-
-
-//////////////////////////////////////////////////////////////////////
-
-/*
-void startSound(int sampleRate, const void* data, uint32 bytes, u8 channel=0, u8 vol=0x7F, u8 pan=63, u8 format=0) {
- SCHANNEL_TIMER(channel) = SOUND_FREQ(sampleRate);
- SCHANNEL_SOURCE(channel) = (uint32)data;
- SCHANNEL_LENGTH(channel) = bytes;
- SCHANNEL_CR(channel) = SOUND_ENABLE | SOUND_ONE_SHOT | SOUND_VOL(vol) | SOUND_PAN(pan) | (format==1?SOUND_8BIT:SOUND_16BIT);
-}
-
-
-s8 getFreeSoundChannel() {
- for (int i=0; i<16; i++) {
- if ( (SCHANNEL_CR(i) & SOUND_ENABLE) == 0 ) return i;
- }
- return -1;
-}
-*/
-
-
-s8 getFreeSoundChannel() {
-// return 0;
- for (int i=0; i<16; i++) {
- if ( (SCHANNEL_CR(i) & SCHANNEL_ENABLE) == 0 ) return i;
- }
- return -1;
-}
-
-void startSound(int sampleRate, const void* data, uint32 bytes, u8 channel=0, u8 vol=0x7F, u8 pan=63, u8 format=0) {
- REG_IME = IME_DISABLE;
-
- channel = getFreeSoundChannel();
-/* if (format == 2) {
- channel = 1;
- } else {
- channel = 0;
- }*/
-
- if (channel > 1) channel = 1;
-
- bytes &= ~7; // Multiple of 4 bytes!
-// bytes += 4;
-
- SCHANNEL_CR(channel) = 0;
- SCHANNEL_TIMER(channel) = SOUND_FREQ(sampleRate);
- SCHANNEL_SOURCE(channel) = ((uint32) (data));
- SCHANNEL_LENGTH(channel) = ((bytes & 0x7FFFFFFF) >> 2);
- SCHANNEL_REPEAT_POINT(channel) = 0;
-
- SCHANNEL_CR(channel + 2) = 0;
- SCHANNEL_TIMER(channel + 2) = SOUND_FREQ(sampleRate);
- SCHANNEL_SOURCE(channel + 2) = ((uint32) (data));
- SCHANNEL_LENGTH(channel + 2) = ((bytes & 0x7FFFFFFF) >> 2);
- SCHANNEL_REPEAT_POINT(channel + 2) = 0;
-
- uint32 flags = SCHANNEL_ENABLE | SOUND_VOL(vol) | SOUND_PAN(pan);
-
- switch (format) {
- case 1: {
- flags |= SOUND_8BIT;
- flags |= SOUND_REPEAT;// | (1 << 15);
- break;
- }
-
- case 0: {
- flags |= SOUND_16BIT;
- flags |= SOUND_REPEAT;// | (1 << 15);
- break;
- }
-
- case 2: {
- flags |= SOUND_FORMAT_ADPCM;
- flags |= SOUND_ONE_SHOT;// | (1 << 15);
-
- SCHANNEL_SOURCE(channel) = (unsigned int) IPC->adpcm.buffer[0];
- //bytes += 32;
- SCHANNEL_LENGTH(channel) = (((bytes + 4) & 0x7FFFFFFF) >> 2);
-
- SCHANNEL_CR(channel + 1) = 0;
- SCHANNEL_SOURCE(channel + 1) = (unsigned int) IPC->adpcm.buffer[0];
- SCHANNEL_LENGTH(channel + 1) = (((bytes + 4) & 0x7FFFFFFF) >> 2);
- SCHANNEL_TIMER(channel + 1) = SOUND_FREQ(sampleRate);
- SCHANNEL_REPEAT_POINT(channel + 1) = 0;
- SCHANNEL_CR(channel + 1) = flags;
- temp = bytes;
- adpcmBufferNum = 0;
- break;
- }
- }
-
-
-// if (bytes & 0x80000000) {
-// flags |= SOUND_REPEAT;
-// } else {
-// }
-
-
-
-
- soundData = (vu8* ) data;
-
- SCHANNEL_CR(channel) = flags;
- SCHANNEL_CR(channel + 2) = flags;
-
-
-
- if (channel == 0) {
- for (volatile int i = 0; i < 16384 * 2; i++) {
- // Delay loop - this makes everything stay in sync!
- }
-
- TIMER0_CR = 0;
- TIMER0_DATA = SOUND_FREQ(sampleRate) * 2;
- TIMER0_CR = TIMER_ENABLE | TIMER_DIV_1;
-
- TIMER1_CR = 0;
- TIMER1_DATA = 65536 - ((bytes & 0x7FFFFFFF) >> 3); // Trigger four times during the length of the buffer
- TIMER1_CR = TIMER_ENABLE | TIMER_IRQ_REQ | TIMER_CASCADE;
-
- playingSection = 0;
- } else {
- for (volatile int i = 0; i < 16384 * 2; i++) {
- // Delay loop - this makes everything stay in sync!
- }
-
- TIMER2_CR = 0;
- TIMER2_DATA = SOUND_FREQ(sampleRate) * 2;
- TIMER2_CR = TIMER_ENABLE | TIMER_DIV_1;
-
- TIMER3_CR = 0;
- TIMER3_DATA = 65536 - ((bytes & 0x7FFFFFFF) >> 3); // Trigger four times during the length of the buffer
- TIMER3_CR = TIMER_ENABLE | TIMER_IRQ_REQ | TIMER_CASCADE;
-
- for (int r = 0; r < 4; r++) {
-// IPC->streamFillNeeded[r] = true;
- }
-
- IPC->streamPlayingSection = 0;
- }
-
-
-
-// IPC->fillSoundFirstHalf = true;
-// IPC->fillSoundSecondHalf = true;
-// soundFirstHalf = true;
-
- REG_IME = IME_ENABLE;
-}
-
-void stopSound(int chan) {
- SCHANNEL_CR(chan) = 0;
-}
-
-void DummyHandler() {
- REG_IF = REG_IF;
-}
-
-uint16 powerManagerWrite(uint32 command, u32 data, bool enable) {
-
- uint16 result;
- SerialWaitBusy();
-
- // Write the command and wait for it to complete
- REG_SPICNT = SPI_ENABLE | SPI_BAUD_1MHz | (1 << 11);
- REG_SPIDATA = command | 0x80;
- SerialWaitBusy();
-
- // Write the second command and clock in the data
- REG_SPICNT = SPI_ENABLE | SPI_BAUD_1MHz;
- REG_SPIDATA = 0;
- SerialWaitBusy();
-
- result = REG_SPIDATA & 0xFF;
-
-
-
- // Write the command and wait for it to complete
- REG_SPICNT = SPI_ENABLE | SPI_BAUD_1MHz | (1 << 11);
- REG_SPIDATA = command;
- SerialWaitBusy();
-
- // Write the second command and clock in the data
- REG_SPICNT = SPI_ENABLE | SPI_BAUD_1MHz;
- REG_SPIDATA = enable? (result | data): (result & ~data);
- SerialWaitBusy();
-}
-
-/*
-void performSleep() {
-
- powerManagerWrite(0, 0x30, true);
-
- // Here, I set up a dummy interrupt handler, then trigger all interrupts.
- // These are just aknowledged by the handler without doing anything else.
- // Why? Because without it the sleep mode will only happen once, and then
- // never again. I got the idea from reading the MoonShell source.
- IME = 0;
- u32 irq = (u32) IRQ_HANDLER;
- IRQ_HANDLER = DummyHandler;
- IF = ~0;
- IME = 1;
-
-
- // Now save which interrupts are enabled, then set only the screens unfolding
- // interrupt to be enabled, so that the first interrupt that happens is the
- // one I want.
- int saveInts = IE;
-
-
-
- IE = IRQ_TIMER0; // Screens unfolding interrupt
-
- // Now call the sleep function in the bios
- bool b;
- do {
- TIMER0_CR = 0;
- TIMER0_DATA = TIMER_FREQ(20);
- TIMER0_CR = TIMER_ENABLE | TIMER_DIV_64;
-
- swiDelay(100);
-
- swiSleep();
-
- swiDelay(100);
-
- powerManagerWrite(0, 0x30, b = !b);
- } while (!(TIMER0_CR & TIMER_ENABLE));
-
- TIMER0_CR = 0;
-
- // We're back from sleep, now restore the interrupt state and IRQ handler
- IRQ_HANDLER = (void (*)()) irq;
- IE = saveInts;
- IF = ~0;
- IME = 1;
-
-
-
- powerManagerWrite(0, 0x30, false);
-}
-*/
-
-
-void performSleep() {
- powerManagerWrite(0, 0x30, true);
-
- IPC->performArm9SleepMode = true; // Tell ARM9 to sleep
-
-// u32 irq = (u32) IRQ_HANDLER;
-// IRQ_HANDLER = DummyHandler;
-// POWER_CR &= ~POWER_SOUND;
-
-// int saveInts = REG_IE;
-// REG_IE = (1 << 22) | IRQ_VBLANK; // Lid open
-// *((u32*) (0x0380FFF8)) = *((u32*) (0x0380FFF8)) | (REG_IE & REG_IF);
-// VBLANK_INTR_WAIT_FLAGS = IRQ_VBLANK;
-
-
- int r = 0;
- while ((REG_KEYXY & (1 << 7))) { // Wait for lid to open
- swiDelay(1000000);
- r++;
- }
-
-// IRQ_HANDLER = (void (*)()) irq;
- IPC->performArm9SleepMode = false; // Tell ARM9 to wake up
-// REG_IE = saveInts;
-
-// POWER_CR |= POWER_SOUND;
-
- powerManagerWrite(0, 0x30, false);
-}
-
-//////////////////////////////////////////////////////////////////////
-
-
-void InterruptHandler(void) {
- static int heartbeat = 0;
-
- if (REG_IF & IRQ_TIMER1) {
-
- IPC->fillNeeded[playingSection] = true;
- soundFilled[playingSection] = false;
-
- if (playingSection == 3) {
-// IME = IME_DISABLED;
-
- // while (SCHANNEL_CR(0) & SCHANNEL_ENABLE) {
- // }
-// SCHANNEL_CR(0) &= ~SCHANNEL_ENABLE;
-
-// SCHANNEL_CR(0) |= SCHANNEL_ENABLE;
-// TIMER1_CR = 0;
-// TIMER1_CR = TIMER_ENABLE | TIMER_IRQ_REQ | TIMER_CASCADE;
-
- playingSection = 0;
-
-// IME = IME_ENABLED;
- } else {
- playingSection++;
- }
-
- IPC->playingSection = playingSection;
-
-/* for (int r = 0; r < 4; r++) {
- //if ((!soundFilled[r]) && (!IPC->fillNeeded[playingSection])) {
- memcpy((void *) (soundBuffer + (r * 1024)), (void *) (arm9Buffer + (r * 1024)), 1024);
-
- vu16* p = (vu16 *) (soundBuffer);
- //for (int t = 0; t < 2048; t++) {
- // *(p + t) = (t & 1)? 0xF000: 0x0000;
- //}
- soundFilled[r] = true;
- //}
- }*/
-
-
- REG_IF = IRQ_TIMER1;
- }
-
-
- if (REG_IF & IRQ_TIMER3) {
- while (IPC->adpcm.semaphore); // Wait for buffer to become free if needed
- IPC->adpcm.semaphore = true; // Lock the buffer structure to prevent clashing with the ARM7
-
- IPC->streamFillNeeded[IPC->streamPlayingSection] = true;
-
- if (IPC->streamPlayingSection == 3) {
- IPC->streamPlayingSection = 0;
- } else {
- IPC->streamPlayingSection++;
- }
-
- REG_IF = IRQ_TIMER3;
-
- IPC->adpcm.semaphore = false;
- }
-
-
-// IPC->performArm9SleepMode = false;
-
- // precalculate some values
-// static int16 TOUCH_WIDTH = TOUCH_CAL_X2 - TOUCH_CAL_X1;
-// static int16 TOUCH_HEIGHT = TOUCH_CAL_Y2 - TOUCH_CAL_Y1;
-// static int16 CNTRL_WIDTH = TOUCH_CNTRL_X2 - (TOUCH_CNTRL_X1 - 8);
-// static int16 CNTRL_HEIGHT = TOUCH_CNTRL_Y2 - (TOUCH_CNTRL_Y1 - 8);
-
-
-
-
-
- if (REG_IF & IRQ_VBLANK) {
- uint16 but=0, x=0, y=0, xpx=0, ypx=0, z1=0, z2=0, batt=0, aux=0;
- int t1=0, t2=0;
- uint32 temp=0;
- uint8 ct[sizeof(IPC->curtime)];
-
-
- // Update the heartbeat
- heartbeat++;
-
- // Read the X/Y buttons and the /PENIRQ line
- but = REG_KEYXY;
- if (!(but & 0x40)) {
- // Read the touch screen
- touchPosition p = touchReadXY();
-
-// x = touchRead(TSC_MEASURE_X);
- // y = touchRead(TSC_MEASURE_Y);
-
- x = p.x;
- y = p.y;
-
- xpx = p.px;
- ypx = p.py;
-
-// xpx = ( ((SCREEN_WIDTH -60) * x) / TOUCH_WIDTH ) - TOUCH_OFFSET_X;
- // ypx = ( ((SCREEN_HEIGHT-60) * y) / TOUCH_HEIGHT ) - TOUCH_OFFSET_Y;
-
-// xpx = (IPC->touchX - (int16) TOUCH_CAL_X1) * CNTRL_WIDTH / TOUCH_WIDTH + (int16) (TOUCH_CNTRL_X1 - 8);
- // ypx = (IPC->touchY - (int16) TOUCH_CAL_Y1) * CNTRL_HEIGHT / TOUCH_HEIGHT + (int16) (TOUCH_CNTRL_Y1 - 8);
-
-
- z1 = touchRead(TSC_MEASURE_Z1);
- z2 = touchRead(TSC_MEASURE_Z2);
- }
-
- if (but & (1 << 7)) { // Check if screen is folded
- needSleep = true;
- }
-
-
- batt = touchRead(TSC_MEASURE_BATTERY);
- aux = touchRead(TSC_MEASURE_AUX);
-
- // Read the time
- rtcGetTime((uint8 *)ct);
- BCDToInteger((uint8 *)&(ct[1]), 7);
-
- // Read the temperature
- temp = touchReadTemperature(&t1, &t2);
-
- // Update the IPC struct
- IPC->heartbeat = heartbeat;
- IPC->buttons = but;
- IPC->touchX = x;
- IPC->touchY = y;
- IPC->touchXpx = xpx;
- IPC->touchYpx = ypx;
- IPC->touchZ1 = z1;
- IPC->touchZ2 = z2;
- IPC->battery = batt;
- IPC->aux = aux;
-
- for(u32 i=0; i<sizeof(ct); i++) {
- IPC->curtime[i] = ct[i];
- }
-
- IPC->temperature = temp;
- IPC->tdiode1 = t1;
- IPC->tdiode2 = t2;
-
-
-
- //sound code :)
- TransferSound *snd = IPC->soundData;
- IPC->soundData = 0;
- if (snd) {
- for (int i=0; i<snd->count; i++) {
- s8 chan = getFreeSoundChannel();
- if (snd->data[i].rate > 0) {
- if (chan >= 0) {
- startSound(snd->data[i].rate, snd->data[i].data, snd->data[i].len, chan, snd->data[i].vol, snd->data[i].pan, snd->data[i].format);
- }
- } else {
- stopSound(-snd->data[i].rate);
- }
- }
- }
-
- REG_IF = IRQ_VBLANK;
- }
-
-}
-
-
-//////////////////////////////////////////////////////////////////////
-
-
-int main(int argc, char ** argv) {
- // Reset the clock if needed
- rtcReset();
-
- //enable sound
- powerON(POWER_SOUND);
- SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F);
- IPC->soundData = 0;
- IPC->reset = false;
-
-
- for (int r = 0; r < 8; r++) {
- IPC->adpcm.arm7Buffer[r] = (u8 *) malloc(512);
- }
-
- for (int r = 0; r < 4; r++) {
- soundFilled[r] = false;
- }
-
-
- // Set up the interrupt handler
- REG_IME = 0;
- IRQ_HANDLER = &InterruptHandler;
- REG_IE = IRQ_VBLANK | IRQ_TIMER1 | IRQ_TIMER3;
- REG_IF = ~0;
- DISP_SR = DISP_VBLANK_IRQ;
- REG_IME = 1;
-
-
-
- // Keep the ARM7 out of main RAM
- while (1) {
- if (needSleep) {
- performSleep();
- needSleep = false;
- }
-// if (IPC->reset) {
-// swiSoftReset();
-// }
- }
- return 0;
-}
-
-
-//////////////////////////////////////////////////////////////////////
-
-/* ScummVMDS - Scumm Interpreter DS Port
- * Copyright (C) 2002-2004 The ScummVM project and Neil Millstone
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- *
- * $Header: /cvsroot/scummvm/scummvm/backends/fs/fs.cpp,v 1.3.2.1 2004/12/18 02:33:52 fingolfin Exp $
- */
-
-//////////////////////////////////////////////////////////////////////
-// Simple ARM7 stub (sends RTC, TSC, and X/Y data to the ARM 9)
-// -- joat
-// -- modified by Darkain and others
-//////////////////////////////////////////////////////////////////////
-
-
-#include <nds.h>
-
-#include <bios.h>
-#include <arm7/touch.h>
-#include <arm7/clock.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <nds/scummvm_ipc.h>
+#include <NDS/scummvm_ipc.h>
//////////////////////////////////////////////////////////////////////
diff --git a/backends/platform/ds/arm9/makefile b/backends/platform/ds/arm9/makefile
index c648d6d4dd..a435077302 100644
--- a/backends/platform/ds/arm9/makefile
+++ b/backends/platform/ds/arm9/makefile
@@ -259,264 +259,3 @@ endif
# $(MKDIR) $(*D)/$(DEPDIR)
# $(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
-#BUILD_PLUGINS = 1
-libndsdir = $(DEVKITPRO)/libnds
-
-DS_SCUMM_BUILD = 1
-
-#DS_NON_SCUMM_BUILD = 1
-
-USE_MAD = 1
-
-VPATH = $(srcdir)
-
-# Command to build libmad is:
-# ./configure --host=arm-elf --enable-speed --enable-sso -enable-fpm=arm CFLAGS='-specs=ds_arm9.specs -mthumb-interwork'
-
-ifdef DS_NON_SCUMM_BUILD
- DEFINES = -DDS_NON_SCUMM_BUILD
- DISABLE_HE = 1
- DISABLE_SCUMM = 1
- DISABLE_SCUMM_7_8 = 1
- #DISABLE_SIMON = 1
- #DISABLE_SKY = 1
- DISABLE_SWORD1 = 1
- DISABLE_SWORD2 = 1
- #DISABLE_QUEEN = 1
- DISABLE_SAGA = 1
- DISABLE_KYRA = 1
- #DISABLE_GOB = 1
- DISABLE_LURE = 1
- DISABLE_CINE = 1
- DISABLE_AGI = 1
- BUILD=scummvm-B
-endif
-
-ifdef DS_SCUMM_BUILD
- DEFINES = -DDS_SCUMM_BUILD
- DISABLE_HE = 1
- #DISABLE_SCUMM = 1
- DISABLE_SCUMM_7_8 = 1
- DISABLE_SIMON = 1
- DISABLE_SKY = 1
- DISABLE_SWORD1 = 1
- DISABLE_SWORD2 = 1
- DISABLE_QUEEN = 1
- DISABLE_SAGA = 1
- DISABLE_KYRA = 1
- DISABLE_GOB = 1
- DISABLE_LURE = 1
- DISABLE_CINE = 1
- DISABLE_AGI = 1
- BUILD=scummvm-A
-endif
-
-ARM7BIN := -7 $(CURDIR)/../../arm7/arm7.bin
-ICON := -b ../../../logo.bmp "ScummVM;By Neil Millstone;"
-
-CC = arm-eabi-gcc
-CXX = arm-eabi-g++
-
-CFLAGS = -Wno-multichar -Wall -Os\
- -Wno-multichar -mcpu=arm9tdmi -mtune=arm9tdmi \
- -mcpu=arm9tdmi -mtune=arm9tdmi -fomit-frame-pointer\
- -ffast-math -mthumb-interwork
-
-CXXFLAGS= $(CFLAGS) -Wno-non-virtual-dtor -Wno-non-virtual-dtor \
- -fno-exceptions -fno-rtti
-
-ASFLAGS = -mcpu=arm9tdmi -mthumb-interwork
-DEFINES += -D__DS__ -DNDS -DARM9 -DNONSTANDARD_PORT -DDISABLE_FANCY_THEMES
-ifdef USE_MAD
- DEFINES += -DUSE_MAD
-endif
-
-LDFLAGS = -specs=ds_arm9.specs -mthumb-interwork -mno-fpu -Wl,-Map,map.txt
-
-INCLUDES= -I./ -I$(portdir)/$(BUILD) -I$(srcdir) -I$(srcdir)/common -I$(portdir)/source -I$(portdir)/source/compressor -I$(portdir)/source/fat \
- -I$(srcdir)/backends/fs -I$(srcdir)/backends/fs/ds -I$(portdir)/data -I$(libndsdir)/include -I$(portdir)/../commoninclude\
- -I$(srcdir)/scumm -I$(libndsdir)/include -I$(libndsdir)/include/nds -I$(srcdir)/engines -I$(portdir)/source/mad
-
-
-LIBS = -lm -L$(libndsdir)/lib -L$(portdir)/lib -lnds9
-ifdef USE_MAD
- LIBS += -lmad
-endif
-
-#-Lscumm -lscumm -Lbase -lbase -Lcommon -lcommon -Lgraphics -lgraphics -Lgui -lgui -Lsound -lsound
-EXECUTABLE = scummvm.elf
-PLUGIN_PREFIX =
-PLUGIN_SUFFIX = .plg
-PLUGIN_EXTRA_DEPS = plugin.x plugin.syms scummvm.elf
-PLUGIN_LDFLAGS = -nostartfiles -Wl,-q,-Tplugin.x,--just-symbols,scummvm.elf,--retain-symbols-file,plugin.syms -L$(ronindir)/lib
-MKDIR = mkdir -p
-RM = rm -f
-RM_REC = rm -rf
-AR = arm-eabi-ar cru
-RANLIB = arm-eabi-ranlib
-OBJCOPY = arm-eabi-objcopy
-AS = arm-eabi-as
-HAVE_GCC3 = true
-DISABLE_SCALERS = true
-
-ifdef BUILD_PLUGINS
-DEFINES += -DDYNAMIC_MODULES
-PRE_OBJS_FLAGS = -Wl,--whole-archive
-POST_OBJS_FLAGS = -Wl,--no-whole-archive
-endif
-
-PORT_OBJS := $(portdir)/source/blitters.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
-
-DATA_OBJS := $(portdir)/data/icons.o $(portdir)/data/keyboard.o $(portdir)/data/keyboard_pal.o $(portdir)/data/default_font.o
-
-
-COMPRESSOR_OBJS := $(portdir)/source/compressor/lz.o
-
-FAT_OBJS := $(portdir)/source/fat/disc_io.o $(portdir)/source/fat/gba_nds_fat.o\
- $(portdir)/source/fat/io_fcsr.o $(portdir)/source/fat/io_m3cf.o\
- $(portdir)/source/fat/io_mpcf.o $(portdir)/source/fat/io_sccf.o\
- $(portdir)/source/fat/io_m3sd.o\
- $(portdir)/source/fat/io_nmmc.o $(portdir)/source/fat/io_scsd.o \
- $(portdir)/source/fat/io_m3sd_asm.o $(portdir)/source/fat/io_scsd_asm.o
-
-
-
-OBJS := $(DATA_OBJS) $(PORT_OBJS) $(COMPRESSOR_OBJS) $(FAT_OBJS)
-
-
-
-MODULE_DIRS += .
-
-ndsall:
- @[ -d $(BUILD) ] || mkdir -p $(BUILD)
- make -C ./$(BUILD) -f ../makefile scummvm.nds
-
-include $(srcdir)/Makefile.common
-
-clean:
- $(RM) $(OBJS) $(EXECUTABLE)
- rm -fr $(BUILD)
-
-plugin_dist :
- find . -name '*.plg' | while read p; do \
- sh-elf-strip -g -o "`basename \"$$p\" | tr '[:lower:]' '[:upper:]'`" "$$p"; \
- done
-
-dist : SCUMMVM.BIN plugins plugin_dist
-
-
-#---------------------------------------------------------------------------------
-# canned command sequence for binary data
-#---------------------------------------------------------------------------------
-#define bin2o
-# bin2s $< | $(AS) -mthumb -mthumb-interwork -o $(@)
-# echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_raw_end[];" > `(echo $(<F) | tr . _)`.h
-# echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_raw[];" >> `(echo $(<F) | tr . _)`.h
-# echo "extern const u32" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_raw_size";" >> `(echo $(<F) | tr . _)`.h
-#endef
-
-
-define bin2o
- bin2s $< | $(AS) -mthumb -mthumb-interwork -o $(@)
- echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(<F) | tr . _)`.h
- echo "extern const u8" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(<F) | tr . _)`.h
- echo "extern const u32" `(echo $(<F) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(<F) | tr . _)`.h
-endef
-
-
-#define bin2o
-# @echo $(*)
-# cp $(<) $(*).tmp
-# $(OBJCOPY) -I binary -O elf32-littlearm -B arm \
-# --rename-section .data=.rodata \
-# --redefine-sym _binary_$(subst .,_,$(subst /,_,$(*)))_tmp_start=$(notdir $*)\
-# --redefine-sym _binary_$(subst .,_,$(subst /,_,$(*)))_tmp_end=$(notdir $*)_end\
-# $(*).tmp $(@)
-# echo "extern const u8" $(notdir $*)"[] __attribute__ ((aligned (4)));" > $(*).h
-# echo "extern const u32" $(notdir $(*))_size[]";" >> $(*).h
-#
-# echo $(*).h
-# rm $(*).tmp
-#endef
-
-##############
-# Replacement rule for the one in makefile.common
-##############
-ifndef HAVE_GCC3
-# If you use GCC, disable the above and enable this for intelligent
-# dependency tracking.
-.cpp.o:
- $(MKDIR) $(*D)/$(DEPDIR)
- $(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d2" $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
- $(ECHO) "$(*D)/" > $(*D)/$(DEPDIR)/$(*F).d
- $(CAT) "$(*D)/$(DEPDIR)/$(*F).d2" >> "$(*D)/$(DEPDIR)/$(*F).d"
- $(RM) "$(*D)/$(DEPDIR)/$(*F).d2"
-else
-# If you even have GCC 3.x, you can use this build rule, which is safer; the above
-# rule can get you into a bad state if you Ctrl-C at the wrong moment.
-# Also, with this GCC inserts additional dummy rules for the involved headers,
-# which ensures a smooth compilation even if said headers become obsolete.
-.cpp.o:
- $(MKDIR) $(*D)/$(DEPDIR)
-# $(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
- $(CXX) -MMD -MF "$(*D)/$(DEPDIR)/$(*F).d" $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
-endif
-
-
-
-#---------------------------------------------------------------------------------
-%.o : %.pcx
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.bin
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.raw
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.pal
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.map
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.o : %.mdl
-#---------------------------------------------------------------------------------
- @echo $(notdir $<)
- @$(bin2o)
-
-#---------------------------------------------------------------------------------
-%.nds: %.bin
- @echo ndstool -c $@ -9 scummvm.bin $(ARM7BIN) -b ../../logo.bmp "$(shell basename $@);ScummVM 0.9.0;Port v0.6"
- ndstool -c $@ -9 scummvm.bin $(ARM7BIN) -b ../../logo.bmp "$(shell basename $@);ScummVM 0.9.0;Port v0.6"
- dsbuild $@
- padbin 16 $(basename $@).ds.gba
-
-#---------------------------------------------------------------------------------
-%.bin: %.elf
- $(OBJCOPY) -S scummvm.elf scummvm-stripped.elf
- $(OBJCOPY) -O binary scummvm-stripped.elf scummvm.bin
-
-#%.o: %.s
-# $(MKDIR) $(*D)/$(DEPDIR)
-# $(CXX) -Wp,-MMD,"$(*D)/$(DEPDIR)/$(*F).d",-MQ,"$@",-MP $(CXXFLAGS) $(CPPFLAGS) -c $(<) -o $*.o
- \ No newline at end of file