add twltouch demo to tests directory
This commit is contained in:
parent
a2c7355b97
commit
e3a1c15e83
|
@ -0,0 +1,41 @@
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
.SUFFIXES:
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
ifeq ($(strip $(DEVKITARM)),)
|
||||||
|
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(DEVKITARM)/ds_rules
|
||||||
|
|
||||||
|
export TARGET := $(shell basename $(CURDIR))
|
||||||
|
export TOPDIR := $(CURDIR)
|
||||||
|
|
||||||
|
PARAMS :=
|
||||||
|
ifeq ($(USETWLSDMMC),1)
|
||||||
|
PARAMS += USETWLSDMMC=1
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: arm7/$(TARGET).elf arm9/$(TARGET).elf
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# main targets
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
all: $(TARGET).nds
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(TARGET).nds : arm7/$(TARGET).elf arm9/$(TARGET).elf
|
||||||
|
ndstool -c $(TARGET).nds -7 arm7/$(TARGET).elf -9 arm9/$(TARGET).elf
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
arm7/$(TARGET).elf:
|
||||||
|
$(MAKE) -C arm7 $(PARAMS)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
arm9/$(TARGET).elf:
|
||||||
|
$(MAKE) -C arm9 $(PARAMS)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
clean:
|
||||||
|
$(MAKE) -C arm9 clean
|
||||||
|
$(MAKE) -C arm7 clean
|
||||||
|
rm -f $(TARGET).nds $(TARGET).arm7 $(TARGET).arm9
|
|
@ -0,0 +1,135 @@
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
.SUFFIXES:
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
ifeq ($(strip $(DEVKITARM)),)
|
||||||
|
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(DEVKITARM)/ds_rules
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# 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
|
||||||
|
# DATA is a list of directories containing binary files
|
||||||
|
# all directories are relative to this makefile
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
BUILD := build
|
||||||
|
SOURCES := source
|
||||||
|
INCLUDES := include build
|
||||||
|
DATA :=
|
||||||
|
|
||||||
|
DEFINES :=
|
||||||
|
ifeq ($(USETWLSDMMC),1)
|
||||||
|
DEFINES += -DUSETWLSDMMC
|
||||||
|
endif
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# options for code generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
ARCH := -mthumb-interwork
|
||||||
|
|
||||||
|
CFLAGS := -g -Wall -O2\
|
||||||
|
-mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\
|
||||||
|
-ffast-math \
|
||||||
|
$(ARCH)
|
||||||
|
|
||||||
|
CFLAGS += $(INCLUDE) -DARM7 $(DEFINES)
|
||||||
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-rtti
|
||||||
|
|
||||||
|
|
||||||
|
ASFLAGS := -g $(ARCH)
|
||||||
|
LDFLAGS = -specs=ds_arm7.specs -g $(ARCH) -Wl,-Map,$(notdir $*).map
|
||||||
|
|
||||||
|
LIBS :=
|
||||||
|
ifeq ($(USETWLSDMMC),1)
|
||||||
|
LIBS += -ltwlsdmmc7
|
||||||
|
endif
|
||||||
|
LIBS += -ldswifi7 -lmm7 -lnds7
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# list of directories containing libraries, this must be the top level containing
|
||||||
|
# include and lib
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
LIBDIRS := $(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 ARM7ELF := $(CURDIR)/$(TARGET).elf
|
||||||
|
export DEPSDIR := $(CURDIR)/$(BUILD)
|
||||||
|
|
||||||
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
|
||||||
|
|
||||||
|
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
||||||
|
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
||||||
|
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
||||||
|
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
||||||
|
|
||||||
|
export OFILES := $(addsuffix .o,$(BINFILES)) \
|
||||||
|
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
|
||||||
|
|
||||||
|
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
||||||
|
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
||||||
|
-I$(CURDIR)/$(BUILD)
|
||||||
|
|
||||||
|
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# use CXX for linking C++ projects, CC for standard C
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
ifeq ($(strip $(CPPFILES)),)
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
export LD := $(CC)
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
else
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
export LD := $(CXX)
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
endif
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
.PHONY: $(BUILD) clean
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(BUILD):
|
||||||
|
@[ -d $@ ] || mkdir -p $@
|
||||||
|
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
clean:
|
||||||
|
@echo clean ...
|
||||||
|
@rm -fr $(BUILD) *.elf
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
else
|
||||||
|
|
||||||
|
DEPENDS := $(OFILES:.o=.d)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# main targets
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(ARM7ELF) : $(OFILES)
|
||||||
|
@echo linking $(notdir $@)
|
||||||
|
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# you need a rule like this for each extension you use as binary data
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
%.bin.o : %.bin
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
@echo $(notdir $<)
|
||||||
|
@$(bin2o)
|
||||||
|
|
||||||
|
-include $(DEPENDS)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------------
|
||||||
|
endif
|
||||||
|
#---------------------------------------------------------------------------------------
|
|
@ -0,0 +1,135 @@
|
||||||
|
#include <nds.h>
|
||||||
|
|
||||||
|
static u32 cdcCurrentPage = -1;
|
||||||
|
|
||||||
|
void CDC_WriteRegister(u32 reg, u32 val);
|
||||||
|
|
||||||
|
void CDC_ChangePage(u32 page)
|
||||||
|
{
|
||||||
|
if (cdcCurrentPage == page)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (cdcCurrentPage == 0xFF)
|
||||||
|
CDC_WriteRegister(0x7F, page);
|
||||||
|
else
|
||||||
|
CDC_WriteRegister(0, page);
|
||||||
|
|
||||||
|
cdcCurrentPage = page;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CDC_WriteRegister(u32 reg, u32 val)
|
||||||
|
{
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
REG_SPICNT = 0x8A00;
|
||||||
|
REG_SPIDATA = (reg<<1) & 0xFF;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
REG_SPICNT = 0x8200;
|
||||||
|
REG_SPIDATA = val & 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDC_WriteRegisterEx(u32 page, u32 reg, u32 val)
|
||||||
|
{
|
||||||
|
CDC_ChangePage(page);
|
||||||
|
CDC_WriteRegister(reg, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDC_WriteRegisters(u32 reg, u8* buf, u32 size)
|
||||||
|
{
|
||||||
|
if (size == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
REG_SPICNT = 0x8A00;
|
||||||
|
REG_SPIDATA = (reg<<1) & 0xFF;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
while(size-- > 1)
|
||||||
|
{
|
||||||
|
REG_SPIDATA = 0;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
*buf++ = REG_SPIDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
REG_SPICNT = 0x8200;
|
||||||
|
REG_SPIDATA = 0;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
*buf++ = REG_SPIDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDC_WriteRegistersEx(u32 page, u32 reg, u8* buf, u32 size)
|
||||||
|
{
|
||||||
|
CDC_ChangePage(page);
|
||||||
|
CDC_WriteRegisters(reg, buf, size);
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 CDC_ReadRegister(u32 reg)
|
||||||
|
{
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
REG_SPICNT = 0x8A00;
|
||||||
|
REG_SPIDATA = ((reg<<1) | 1) & 0xFF;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
REG_SPICNT = 0x8200;
|
||||||
|
REG_SPIDATA = 0;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
return REG_SPIDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
u32 CDC_ReadRegisterEx(u32 page, u32 reg)
|
||||||
|
{
|
||||||
|
CDC_ChangePage(page);
|
||||||
|
return CDC_ReadRegister(reg);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void CDC_ReadRegisters(u32 reg, u8* buf, u32 size)
|
||||||
|
{
|
||||||
|
if (size == 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
REG_SPICNT = 0x8A00;
|
||||||
|
REG_SPIDATA = ((reg<<1)|1) & 0xFF;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
while(size-- > 1)
|
||||||
|
{
|
||||||
|
REG_SPIDATA = 0;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
*buf++ = REG_SPIDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
REG_SPICNT = 0x8200;
|
||||||
|
REG_SPIDATA = 0;
|
||||||
|
|
||||||
|
while(REG_SPICNT & 0x80);
|
||||||
|
|
||||||
|
*buf++ = REG_SPIDATA;
|
||||||
|
}
|
||||||
|
|
||||||
|
void CDC_ReadRegistersEx(u32 page, u32 reg, u8* buf, u32 size)
|
||||||
|
{
|
||||||
|
CDC_ChangePage(page);
|
||||||
|
CDC_ReadRegisters(reg, buf, size);
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
default ARM7 core
|
||||||
|
|
||||||
|
Copyright (C) 2005 - 2010
|
||||||
|
Michael Noland (joat)
|
||||||
|
Jason Rogers (dovoto)
|
||||||
|
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.
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------*/
|
||||||
|
#include <nds.h>
|
||||||
|
#include <dswifi7.h>
|
||||||
|
#include <maxmod7.h>
|
||||||
|
|
||||||
|
u32 TouchRead(u32* xpos, u32* ypos);
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
void VblankHandler(void) {
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
Wifi_Update();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
void VcountHandler() {
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
//inputGetAndSend();
|
||||||
|
}
|
||||||
|
|
||||||
|
volatile bool exitflag = false;
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
void powerButtonCB() {
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
exitflag = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
int main() {
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
u32 *ptr = (u32*)0x02400000;
|
||||||
|
// readUserSettings();
|
||||||
|
|
||||||
|
irqInit();
|
||||||
|
// Start the RTC tracking IRQ
|
||||||
|
// initClockIRQ();
|
||||||
|
fifoInit();
|
||||||
|
|
||||||
|
/* mmInstall(FIFO_MAXMOD);
|
||||||
|
|
||||||
|
SetYtrigger(80);
|
||||||
|
|
||||||
|
installWifiFIFO();
|
||||||
|
installSoundFIFO();
|
||||||
|
|
||||||
|
installSystemFIFO();
|
||||||
|
|
||||||
|
irqSet(IRQ_VCOUNT, VcountHandler);
|
||||||
|
irqSet(IRQ_VBLANK, VblankHandler);
|
||||||
|
|
||||||
|
irqEnable( IRQ_VBLANK | IRQ_VCOUNT | IRQ_NETWORK);
|
||||||
|
|
||||||
|
setPowerButtonCB(powerButtonCB); */
|
||||||
|
|
||||||
|
//ptr[0] = TouchRead(ptr+1, ptr+2);
|
||||||
|
|
||||||
|
// Keep the ARM7 mostly idle
|
||||||
|
while (!exitflag) {
|
||||||
|
ptr[0] = TouchRead(ptr+1, ptr+2);
|
||||||
|
|
||||||
|
// if ( 0 == (REG_KEYINPUT & (KEY_SELECT | KEY_START | KEY_L | KEY_R))) {
|
||||||
|
// exitflag = true;
|
||||||
|
// }
|
||||||
|
// swiWaitForVBlank();
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
|
@ -0,0 +1,59 @@
|
||||||
|
/*
|
||||||
|
Read touchscreen positions.
|
||||||
|
|
||||||
|
Returns 1 if touched, and the average position in xpos and ypos. Otherwise, if not touched, returns 0.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <nds.h>
|
||||||
|
|
||||||
|
void CDC_ReadRegistersEx(u32 page, u32 reg, u8* buf, u32 size);
|
||||||
|
|
||||||
|
u32 TouchRead(u32* xpos, u32* ypos)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
u8 buf[20];
|
||||||
|
u16 x[5];
|
||||||
|
u16 y[5];
|
||||||
|
u32 xavg;
|
||||||
|
u32 yavg;
|
||||||
|
u8 state;
|
||||||
|
|
||||||
|
|
||||||
|
state = CDC_ReadRegisterEx(3,9);
|
||||||
|
if ( (state & 0xC0) == 0x40 )
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
state = CDC_ReadRegisterEx(3, 14);
|
||||||
|
if (state & 2)
|
||||||
|
return 2;
|
||||||
|
|
||||||
|
|
||||||
|
CDC_ReadRegistersEx(252, 1, buf, 20);
|
||||||
|
|
||||||
|
xavg = 0;
|
||||||
|
yavg = 0;
|
||||||
|
|
||||||
|
for(i=0; i<5; i++)
|
||||||
|
{
|
||||||
|
x[i] = buf[i*2+1] | (buf[i*2+0]<<8);
|
||||||
|
y[i] = buf[10+i*2+1] | (buf[10+i*2+0]<<8);
|
||||||
|
|
||||||
|
if (x[i] & 0xF000)
|
||||||
|
return 3;
|
||||||
|
|
||||||
|
if (y[i] & 0xF000)
|
||||||
|
return 4;
|
||||||
|
|
||||||
|
xavg += x[i];
|
||||||
|
yavg += y[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
xavg /= 5;
|
||||||
|
yavg /= 5;
|
||||||
|
|
||||||
|
*xpos = xavg;
|
||||||
|
*ypos = yavg;
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,127 @@
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
.SUFFIXES:
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
ifeq ($(strip $(DEVKITARM)),)
|
||||||
|
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
|
||||||
|
endif
|
||||||
|
|
||||||
|
include $(DEVKITARM)/ds_rules
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# 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
|
||||||
|
# DATA is a list of directories containing binary files
|
||||||
|
# all directories are relative to this makefile
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
BUILD := build
|
||||||
|
SOURCES := source
|
||||||
|
INCLUDES := include
|
||||||
|
DATA :=
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# options for code generation
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
ARCH := -mthumb -mthumb-interwork
|
||||||
|
|
||||||
|
CFLAGS := -g -Wall -O2\
|
||||||
|
-march=armv5te -mtune=arm946e-s -fomit-frame-pointer\
|
||||||
|
-ffast-math \
|
||||||
|
$(ARCH)
|
||||||
|
|
||||||
|
CFLAGS += $(INCLUDE) -DARM9
|
||||||
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
||||||
|
|
||||||
|
ASFLAGS := -g $(ARCH) -march=armv5te -mtune=arm946e-s
|
||||||
|
|
||||||
|
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# any extra libraries we wish to link with the project
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
LIBS := -lnds9
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# list of directories containing libraries, this must be the top level containing
|
||||||
|
# include and lib
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
LIBDIRS := $(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 ARM9ELF := $(CURDIR)/$(TARGET).elf
|
||||||
|
export DEPSDIR := $(CURDIR)/$(BUILD)
|
||||||
|
|
||||||
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
||||||
|
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
||||||
|
|
||||||
|
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
||||||
|
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
||||||
|
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
||||||
|
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# use CXX for linking C++ projects, CC for standard C
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
ifeq ($(strip $(CPPFILES)),)
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
export LD := $(CC)
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
else
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
export LD := $(CXX)
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
endif
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
export OFILES := $(addsuffix .o,$(BINFILES)) \
|
||||||
|
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
|
||||||
|
|
||||||
|
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
||||||
|
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
||||||
|
-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 ...
|
||||||
|
@rm -fr $(BUILD) *.elf *.nds* *.bin
|
||||||
|
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
else
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# main targets
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(ARM9ELF) : $(OFILES)
|
||||||
|
@echo linking $(notdir $@)
|
||||||
|
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# you need a rule like this for each extension you use as binary data
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
%.bin.o : %.bin
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
@echo $(notdir $<)
|
||||||
|
@$(bin2o)
|
||||||
|
|
||||||
|
-include $(DEPSDIR)/*.d
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------------
|
||||||
|
endif
|
||||||
|
#---------------------------------------------------------------------------------------
|
|
@ -0,0 +1,31 @@
|
||||||
|
/*---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
Simple console print demo
|
||||||
|
-- dovoto
|
||||||
|
|
||||||
|
---------------------------------------------------------------------------------*/
|
||||||
|
#include <nds.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
int main(void) {
|
||||||
|
//---------------------------------------------------------------------------------
|
||||||
|
u32 *ptr = (u32*)0x02400000;
|
||||||
|
|
||||||
|
consoleDemoInit(); //setup the sub screen for printing
|
||||||
|
|
||||||
|
printf("twltouch\n");
|
||||||
|
swiWaitForVBlank();
|
||||||
|
|
||||||
|
while(1) {
|
||||||
|
|
||||||
|
DC_InvalidateRange(ptr, 0x10);
|
||||||
|
iprintf("\x1b[10;0H%x, x = %04i, y = %04i\n", ptr[0], ptr[1], ptr[2]);
|
||||||
|
|
||||||
|
swiWaitForVBlank();
|
||||||
|
scanKeys();
|
||||||
|
if (keysDown()&KEY_START) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Reference in New Issue