mirror of
https://github.com/ApacheThunder/GBA-Exploader.git
synced 2025-06-19 03:55:41 -04:00
Initial port to current libnds
* UI appears to function correclty. As I do not have a compatilbe slot-2 device I can't test further. * Soft reset into GBA mode not yet fixed so likely not working yet. * File browser untested. Ported fixes from NDS_Backup_Tool but untested due to lacking compatible slot-2 hardware.
This commit is contained in:
parent
bbe4ce75c0
commit
d8f3fd9832
58
Makefile
58
Makefile
@ -2,36 +2,54 @@
|
|||||||
.SUFFIXES:
|
.SUFFIXES:
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
ifeq ($(strip $(DEVKITARM)),)
|
ifeq ($(strip $(DEVKITARM)),)
|
||||||
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM)
|
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
export TARGET := GBA_ExpLoader
|
||||||
|
export TOPDIR := $(CURDIR)
|
||||||
|
|
||||||
|
export VERSION_MAJOR := 0
|
||||||
|
export VERSION_MINOR := 57
|
||||||
|
export VERSTRING := $(VERSION_MAJOR).$(VERSION_MINOR)
|
||||||
|
|
||||||
|
# GMAE_ICON is the image used to create the game icon, leave blank to use default rule
|
||||||
|
GAME_ICON :=
|
||||||
|
|
||||||
|
# specify a directory which contains the nitro filesystem
|
||||||
|
# this is relative to the Makefile
|
||||||
|
# NITRO_FILES := nitroFiles
|
||||||
|
|
||||||
|
|
||||||
|
# These set the information text in the nds file
|
||||||
|
#GAME_TITLE := My Wonderful Homebrew
|
||||||
|
#GAME_SUBTITLE1 := built with devkitARM
|
||||||
|
#GAME_SUBTITLE2 := http://devitpro.org
|
||||||
|
|
||||||
include $(DEVKITARM)/ds_rules
|
include $(DEVKITARM)/ds_rules
|
||||||
|
|
||||||
export TARGET := $(shell basename $(CURDIR))
|
.PHONY: data clean
|
||||||
export TOPDIR := $(CURDIR)
|
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
# path to tools - this can be deleted if you set the path in windows
|
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
export PATH := $(DEVKITARM)/bin:$(PATH)
|
|
||||||
|
|
||||||
.PHONY: $(TARGET).arm7 $(TARGET).arm9
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# main targets
|
# main targets
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
all: $(TARGET).nds
|
all: checkarm7 checkarm9 $(TARGET).nds
|
||||||
|
|
||||||
#$(TARGET).ds.gba : $(TARGET).nds
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
$(TARGET).nds : $(TARGET).arm7 $(TARGET).arm9
|
checkarm7:
|
||||||
ndstool -c GBA_ExpLoader.nds -7 arm7/arm7.bin -9 arm9/arm9.bin -b arm9/logo32.bmp "GBA ExpLoader;Version 0.57;By Rudolph"
|
$(MAKE) -C arm7
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
$(TARGET).arm7 : arm7/$(TARGET).elf
|
checkarm9:
|
||||||
$(TARGET).arm9 : arm9/$(TARGET).elf
|
$(MAKE) -C arm9
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
$(TARGET).nds : arm7/$(TARGET).elf arm9/$(TARGET).elf
|
||||||
|
@ndstool -c $@ -7 arm7/$(TARGET).elf -9 arm9/$(TARGET).elf \
|
||||||
|
-b $(CURDIR)/logo32.bmp "GBA ExpLoader;Version $(VERSTRING);By Rudolph;" \
|
||||||
|
-g GBEX 01 "GBAEXPLOADER" -z 80040000 -u 00030004 -a 00000138 -p 0001 \
|
||||||
|
|
||||||
|
data:
|
||||||
|
@mkdir -p data
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
arm7/$(TARGET).elf:
|
arm7/$(TARGET).elf:
|
||||||
@ -45,4 +63,6 @@ arm9/$(TARGET).elf:
|
|||||||
clean:
|
clean:
|
||||||
$(MAKE) -C arm9 clean
|
$(MAKE) -C arm9 clean
|
||||||
$(MAKE) -C arm7 clean
|
$(MAKE) -C arm7 clean
|
||||||
rm -f $(TARGET).ds.gba $(TARGET).nds $(TARGET).arm7 $(TARGET).arm9
|
rm -rf data
|
||||||
|
rm -f $(TARGET).nds
|
||||||
|
|
||||||
|
@ -22,27 +22,32 @@ DATA :=
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
# ARCH := -mthumb -mthumb-interwork
|
||||||
ARCH := -mthumb-interwork
|
ARCH := -mthumb-interwork
|
||||||
|
|
||||||
CFLAGS := -g -Wall -O2\
|
CFLAGS := -g -Wall -O2 \
|
||||||
-mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\
|
-mcpu=arm7tdmi -mtune=arm7tdmi -fomit-frame-pointer\
|
||||||
-ffast-math \
|
-ffast-math \
|
||||||
$(ARCH)
|
$(ARCH)
|
||||||
|
|
||||||
CFLAGS += $(INCLUDE) -DARM7
|
# CFLAGS += $(INCLUDE) -DARM7
|
||||||
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -fno-rtti
|
CFLAGS += $(INCLUDE) -DARM7 -fsigned-char
|
||||||
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
||||||
|
CXXFLAGS := $(CFLAGS)
|
||||||
|
|
||||||
|
|
||||||
ASFLAGS := -g $(ARCH)
|
ASFLAGS := -g $(ARCH)
|
||||||
LDFLAGS = -specs=ds_arm7.specs -g $(ARCH) -mno-fpu -Wl,-Map,../arm7.map
|
LDFLAGS = -specs=ds_arm7.specs -g $(ARCH) -Wl,-Map,$(notdir $*).map
|
||||||
|
# LDFLAGS = -specs=ds_arm7_iwram.specs -g $(ARCH) -Wl,-Map,$(notdir $*).map
|
||||||
|
|
||||||
LIBS := -lnds7
|
|
||||||
|
LIBS := -lnds7
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# list of directories containing libraries, this must be the top level containing
|
# list of directories containing libraries, this must be the top level containing
|
||||||
# include and lib
|
# include and lib
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
LIBDIRS := $(LIBNDS) $(LIBFAT)
|
LIBDIRS := $(LIBNDS)
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
@ -52,8 +57,7 @@ LIBDIRS := $(LIBNDS) $(LIBFAT)
|
|||||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
export ARM7BIN := $(CURDIR)/arm7.bin
|
export ARM7ELF := $(CURDIR)/$(TARGET).elf
|
||||||
export ARM7ELF := $(CURDIR)/arm7.elf
|
|
||||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
export DEPSDIR := $(CURDIR)/$(BUILD)
|
||||||
|
|
||||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir))
|
||||||
@ -107,11 +111,6 @@ DEPENDS := $(OFILES:.o=.d)
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# main targets
|
# main targets
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
$(ARM7BIN) : $(ARM7ELF)
|
|
||||||
@$(OBJCOPY) -O binary $< $@
|
|
||||||
@echo built ... $(notdir $@)
|
|
||||||
|
|
||||||
|
|
||||||
$(ARM7ELF) : $(OFILES)
|
$(ARM7ELF) : $(OFILES)
|
||||||
@echo linking $(notdir $@)
|
@echo linking $(notdir $@)
|
||||||
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
||||||
@ -130,3 +129,4 @@ $(ARM7ELF) : $(OFILES)
|
|||||||
#---------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------
|
||||||
endif
|
endif
|
||||||
#---------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
724
arm7/arm7.map
724
arm7/arm7.map
@ -1,724 +0,0 @@
|
|||||||
Archive member included because of file (symbol)
|
|
||||||
|
|
||||||
d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
main.o (rtcGetTimeAndDate)
|
|
||||||
d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
main.o (writePowerManagement)
|
|
||||||
d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
main.o (touchReadXY)
|
|
||||||
d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
main.o (irqSet)
|
|
||||||
d:/devkitPro/libnds/lib\libnds7.a(biosCalls.o)
|
|
||||||
main.o (swiSoftReset)
|
|
||||||
d:/devkitPro/libnds/lib\libnds7.a(interruptDispatcher.o)
|
|
||||||
d:/devkitPro/libnds/lib\libnds7.a(interrupts.o) (IntrMain)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_divsi3.o)
|
|
||||||
main.o (__aeabi_idiv)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_dvmd_tls.o)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_divsi3.o) (__div0)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_call_via_rX.o)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o (_call_via_r3)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-init.o)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o (__libc_init_array)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-memcpy.o)
|
|
||||||
main.o (memcpy)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
d:/devkitPro/libnds/lib\libnds7.a(clock.o) (mktime)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o) (__tzcalc_limits)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzlock.o)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o) (__tz_lock)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o) (_daylight)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-div.o)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o) (div)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-gettzinfo.o)
|
|
||||||
d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o) (__gettzinfo)
|
|
||||||
|
|
||||||
Allocating common symbols
|
|
||||||
Common symbol size file
|
|
||||||
|
|
||||||
_menu7_Gen 0x4 ret_menu7_Gen.o
|
|
||||||
irqTable 0xc8 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
tempPos 0xc main.o
|
|
||||||
first 0xc main.o
|
|
||||||
|
|
||||||
Memory Configuration
|
|
||||||
|
|
||||||
Name Origin Length Attributes
|
|
||||||
rom 0x08000000 0x02000000
|
|
||||||
iwram 0x037f8000 0x00018000
|
|
||||||
*default* 0x00000000 0xffffffff
|
|
||||||
|
|
||||||
Linker script and memory map
|
|
||||||
|
|
||||||
0x037f8000 __iwram_start = 0x37f8000
|
|
||||||
0x03810000 __iwram_top = 0x3810000
|
|
||||||
0x0380ffa0 __sp_irq = (__iwram_top - 0x60)
|
|
||||||
0x0380fea0 __sp_svc = (__sp_irq - 0x100)
|
|
||||||
0x0380fda0 __sp_usr = (__sp_svc - 0x100)
|
|
||||||
0x0380fff8 __irq_flags = (__iwram_top - 0x8)
|
|
||||||
0x0380fffc __irq_vector = (__iwram_top - 0x4)
|
|
||||||
|
|
||||||
.init 0x037f8000 0xe8
|
|
||||||
0x037f8000 __text_start = .
|
|
||||||
*(.init)
|
|
||||||
.init 0x037f8000 0xd0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o
|
|
||||||
0x037f8000 _start
|
|
||||||
.init 0x037f80d0 0xc d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
0x037f80d0 _init
|
|
||||||
.init 0x037f80dc 0xc d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
0x037f80e8 . = ALIGN (0x4)
|
|
||||||
|
|
||||||
.plt
|
|
||||||
*(.plt)
|
|
||||||
|
|
||||||
.text 0x037f80f0 0x3298
|
|
||||||
*(.text.*)
|
|
||||||
*(.stub)
|
|
||||||
*(.gnu.warning)
|
|
||||||
*(.gnu.linkonce.t*)
|
|
||||||
*(.glue_7)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
.glue_7 0x037f80f0 0x0 main.o
|
|
||||||
.glue_7 0x037f80f0 0x0 ret_menu7_Gen.o
|
|
||||||
.glue_7 0x037f80f0 0x0 ret_menu7_R4.o
|
|
||||||
.glue_7 0x037f80f0 0x0 ret_menu7_mse.o
|
|
||||||
.glue_7 0x037f80f0 0x0 linkreset_arm7.o
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitPro/libnds/lib\libnds7.a(biosCalls.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitPro/libnds/lib\libnds7.a(interruptDispatcher.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_divsi3.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_dvmd_tls.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_call_via_rX.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-init.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-memcpy.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzlock.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-div.o)
|
|
||||||
.glue_7 0x037f80f0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-gettzinfo.o)
|
|
||||||
.glue_7 0x037f80f0 0x9c d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
0x037f812c __irqSet_from_arm
|
|
||||||
0x037f8180 __swiSoftReset_from_arm
|
|
||||||
0x037f815c __swiDelay_from_arm
|
|
||||||
0x037f8138 __irqEnable_from_arm
|
|
||||||
0x037f8174 __touchReadTemperature_from_arm
|
|
||||||
0x037f80f0 ___call_via_r3_from_arm
|
|
||||||
0x037f8108 __swiSwitchToGBAMode_from_arm
|
|
||||||
0x037f8150 __touchReadXY_from_arm
|
|
||||||
0x037f8168 __rtcGetTimeAndDate_from_arm
|
|
||||||
0x037f8114 __irqInit_from_arm
|
|
||||||
0x037f8144 __swiWaitForVBlank_from_arm
|
|
||||||
0x037f8120 __initClockIRQ_from_arm
|
|
||||||
0x037f80fc __writePowerManagement_from_arm
|
|
||||||
.glue_7 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
*(.glue_7t)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
.glue_7t 0x037f818c 0x0 main.o
|
|
||||||
.glue_7t 0x037f818c 0x0 ret_menu7_Gen.o
|
|
||||||
.glue_7t 0x037f818c 0x0 ret_menu7_R4.o
|
|
||||||
.glue_7t 0x037f818c 0x0 ret_menu7_mse.o
|
|
||||||
.glue_7t 0x037f818c 0x0 linkreset_arm7.o
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitPro/libnds/lib\libnds7.a(biosCalls.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitPro/libnds/lib\libnds7.a(interruptDispatcher.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_divsi3.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_dvmd_tls.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_call_via_rX.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-init.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-memcpy.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzlock.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-div.o)
|
|
||||||
.glue_7t 0x037f818c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-gettzinfo.o)
|
|
||||||
.glue_7t 0x037f818c 0x10 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
0x037f818c __mktime_from_thumb
|
|
||||||
0x037f8194 ____aeabi_idiv_from_thumb
|
|
||||||
0x037f8190 __mktime_change_to_arm
|
|
||||||
0x037f8198 ____aeabi_idiv_change_to_arm
|
|
||||||
.glue_7t 0x037f819c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
0x037f819c . = ALIGN (0x4)
|
|
||||||
.text 0x037f819c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o
|
|
||||||
.text 0x037f819c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
.text 0x037f819c 0xa4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
.text 0x037f8240 0x6ac main.o
|
|
||||||
0x037f842c VcountHandler
|
|
||||||
0x037f86bc PM_SetControl
|
|
||||||
0x037f8240 FIFOInit
|
|
||||||
0x037f8318 gbaMode
|
|
||||||
0x037f8258 startSound
|
|
||||||
0x037f8534 PM_SetRegister
|
|
||||||
0x037f839c main
|
|
||||||
0x037f86dc VblankHandler
|
|
||||||
0x037f85d8 PM_GetRegister
|
|
||||||
0x037f82ec getFreeSoundChannel
|
|
||||||
.text 0x037f88ec 0x300 ret_menu7_Gen.o
|
|
||||||
0x037f88ec ret_menu7_Gen
|
|
||||||
0x037f8a0c _menu7_Gen_s
|
|
||||||
.text 0x037f8bec 0x2c4 ret_menu7_R4.o
|
|
||||||
0x037f8d00 ret_menu7_R4
|
|
||||||
.text 0x037f8eb0 0x118 ret_menu7_mse.o
|
|
||||||
0x037f8eb0 ret_menu7_mse
|
|
||||||
.text 0x037f8fc8 0x18 linkreset_arm7.o
|
|
||||||
0x037f8fc8 LinkReset_ARM7
|
|
||||||
.text 0x037f8fe0 0x3d0 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
0x037f8fe0 BCDToInteger
|
|
||||||
0x037f912c rtcSetTime
|
|
||||||
0x037f9154 rtcGetTime
|
|
||||||
0x037f9298 initClockIRQ
|
|
||||||
0x037f925c integerToBCD
|
|
||||||
0x037f9354 syncRTC
|
|
||||||
0x037f91a0 rtcSetTimeAndDate
|
|
||||||
0x037f9218 rtcReset
|
|
||||||
0x037f900c rtcTransaction
|
|
||||||
0x037f91cc rtcGetTimeAndDate
|
|
||||||
.text 0x037f93b0 0xf0 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
0x037f93b0 writePowerManagement
|
|
||||||
0x037f9408 readFirmware
|
|
||||||
.text 0x037f94a0 0x7dc d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
0x037f9520 CheckStylus
|
|
||||||
0x037f9b7c touchRead
|
|
||||||
0x037f9650 readTouchValue
|
|
||||||
0x037f9c48 touchReadTemperature
|
|
||||||
0x037f987c touchReadXY
|
|
||||||
0x037f94a0 UpdateRange
|
|
||||||
.text 0x037f9c7c 0x21c d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
0x037f9df4 irqEnable
|
|
||||||
0x037f9c80 irqSet
|
|
||||||
0x037f9e4c irqDisable
|
|
||||||
0x037f9cec irqInit
|
|
||||||
0x037f9c7c irqDummy
|
|
||||||
0x037f9dc0 irqInitHandler
|
|
||||||
0x037f9d3c irqClear
|
|
||||||
*fill* 0x037f9e98 0x8 ff
|
|
||||||
.text 0x037f9ea0 0x80 d:/devkitPro/libnds/lib\libnds7.a(biosCalls.o)
|
|
||||||
0x037f9eb0 swiSleep
|
|
||||||
0x037f9eea swiDecompressLZSSVram
|
|
||||||
0x037f9f02 swiGetPitchTable
|
|
||||||
0x037f9ed2 swiFastCopy
|
|
||||||
0x037f9ed6 swiSqrt
|
|
||||||
0x037f9f0a swiSwitchToGBAMode
|
|
||||||
0x037f9ea0 swiSoftReset
|
|
||||||
0x037f9eda swiCRC16
|
|
||||||
0x037f9eee swiDecompressHuffman
|
|
||||||
0x037f9f0e swiSetHaltCR
|
|
||||||
0x037f9efe swiGetSineTable
|
|
||||||
0x037f9f06 swiGetVolumeTable
|
|
||||||
0x037f9ebc swiRemainder
|
|
||||||
0x037f9ee2 swiUnpackBits
|
|
||||||
0x037f9efa swiHalt
|
|
||||||
0x037f9ee6 swiDecompressLZSSWram
|
|
||||||
0x037f9ea4 swiDelay
|
|
||||||
0x037f9ec2 swiDivMod
|
|
||||||
0x037f9ef6 swiDecompressRLEVram
|
|
||||||
0x037f9ef2 swiDecompressRLEWram
|
|
||||||
0x037f9eb8 swiDivide
|
|
||||||
0x037f9eb4 swiChangeSoundBias
|
|
||||||
0x037f9eac swiWaitForVBlank
|
|
||||||
0x037f9ea8 swiIntrWait
|
|
||||||
0x037f9ede swiIsDebugger
|
|
||||||
0x037f9ece swiCopy
|
|
||||||
.text 0x037f9f20 0xc8 d:/devkitPro/libnds/lib\libnds7.a(interruptDispatcher.o)
|
|
||||||
0x037f9f20 IntrMain
|
|
||||||
.text 0x037f9fe8 0x144 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_divsi3.o)
|
|
||||||
0x037f9fe8 __aeabi_idiv
|
|
||||||
0x037f9fe8 __divsi3
|
|
||||||
0x037fa114 __aeabi_idivmod
|
|
||||||
.text 0x037fa12c 0x4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_dvmd_tls.o)
|
|
||||||
0x037fa12c __aeabi_ldiv0
|
|
||||||
0x037fa12c __div0
|
|
||||||
0x037fa12c __aeabi_idiv0
|
|
||||||
.text 0x037fa130 0x3c d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_call_via_rX.o)
|
|
||||||
0x037fa138 _call_via_r2
|
|
||||||
0x037fa148 _call_via_r6
|
|
||||||
0x037fa144 _call_via_r5
|
|
||||||
0x037fa13c _call_via_r3
|
|
||||||
0x037fa15c _call_via_fp
|
|
||||||
0x037fa150 _call_via_r8
|
|
||||||
0x037fa14c _call_via_r7
|
|
||||||
0x037fa130 _call_via_r0
|
|
||||||
0x037fa158 _call_via_sl
|
|
||||||
0x037fa164 _call_via_sp
|
|
||||||
0x037fa154 _call_via_r9
|
|
||||||
0x037fa140 _call_via_r4
|
|
||||||
0x037fa134 _call_via_r1
|
|
||||||
0x037fa160 _call_via_ip
|
|
||||||
0x037fa168 _call_via_lr
|
|
||||||
.text 0x037fa16c 0xd4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-init.o)
|
|
||||||
0x037fa1b8 __libc_init_array
|
|
||||||
0x037fa16c __libc_fini_array
|
|
||||||
.text 0x037fa240 0x9c d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-memcpy.o)
|
|
||||||
0x037fa240 memcpy
|
|
||||||
.text 0x037fa2dc 0x7e4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
0x037fa694 mktime
|
|
||||||
.text 0x037faac0 0x848 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
0x037faac0 __tzcalc_limits
|
|
||||||
0x037fad30 _mktm_r
|
|
||||||
.text 0x037fb308 0x8 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzlock.o)
|
|
||||||
0x037fb30c __tz_unlock
|
|
||||||
0x037fb308 __tz_lock
|
|
||||||
.text 0x037fb310 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
.text 0x037fb310 0x6c d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-div.o)
|
|
||||||
0x037fb310 div
|
|
||||||
.text 0x037fb37c 0xc d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-gettzinfo.o)
|
|
||||||
0x037fb37c __gettzinfo
|
|
||||||
.text 0x037fb388 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
.text 0x037fb388 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
|
|
||||||
.fini 0x037fb388 0x18
|
|
||||||
*(.fini)
|
|
||||||
.fini 0x037fb388 0xc d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
0x037fb388 _fini
|
|
||||||
.fini 0x037fb394 0xc d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
0x037fb3a0 __text_end = .
|
|
||||||
|
|
||||||
.rodata 0x037fb3a0 0xcc
|
|
||||||
*(.rodata)
|
|
||||||
.rodata 0x037fb3a0 0x60 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
.rodata 0x037fb400 0x68 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
*all.rodata*(*)
|
|
||||||
*(.roda)
|
|
||||||
*(.rodata.*)
|
|
||||||
.rodata.str1.4
|
|
||||||
0x037fb468 0x4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
*(.gnu.linkonce.r*)
|
|
||||||
0x037fb46c . = ALIGN (0x4)
|
|
||||||
|
|
||||||
.ARM.extab
|
|
||||||
*(.ARM.extab* .gnu.linkonce.armextab.*)
|
|
||||||
0x037fb46c __exidx_start = .
|
|
||||||
|
|
||||||
.ARM.exidx
|
|
||||||
*(.ARM.exidx* .gnu.linkonce.armexidx.*)
|
|
||||||
0x037fb46c __exidx_end = .
|
|
||||||
0x037fb46c . = ALIGN (0x4)
|
|
||||||
0x037fb46c PROVIDE (__preinit_array_start, .)
|
|
||||||
|
|
||||||
.preinit_array
|
|
||||||
*(.preinit_array)
|
|
||||||
0x037fb46c PROVIDE (__preinit_array_end, .)
|
|
||||||
0x037fb46c PROVIDE (__init_array_start, .)
|
|
||||||
|
|
||||||
.init_array 0x037fb46c 0x4
|
|
||||||
*(.init_array)
|
|
||||||
.init_array 0x037fb46c 0x4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
0x037fb470 PROVIDE (__init_array_end, .)
|
|
||||||
0x037fb470 PROVIDE (__fini_array_start, .)
|
|
||||||
|
|
||||||
.fini_array 0x037fb470 0x4
|
|
||||||
*(.fini_array)
|
|
||||||
.fini_array 0x037fb470 0x4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
0x037fb474 PROVIDE (__fini_array_end, .)
|
|
||||||
|
|
||||||
.ctors 0x037fb474 0x0
|
|
||||||
*crtbegin.o(.ctors)
|
|
||||||
*(EXCLUDE_FILE(*crtend.o) .ctors)
|
|
||||||
*(SORT(.ctors.*))
|
|
||||||
*(.ctors)
|
|
||||||
0x037fb474 . = ALIGN (0x4)
|
|
||||||
|
|
||||||
.dtors 0x037fb474 0x0
|
|
||||||
*crtbegin.o(.dtors)
|
|
||||||
*(EXCLUDE_FILE(*crtend.o) .dtors)
|
|
||||||
*(SORT(.dtors.*))
|
|
||||||
*(.dtors)
|
|
||||||
0x037fb474 . = ALIGN (0x4)
|
|
||||||
|
|
||||||
.eh_frame 0x037fb474 0x4
|
|
||||||
*(.eh_frame)
|
|
||||||
.eh_frame 0x037fb474 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
.eh_frame 0x037fb474 0x4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
0x037fb478 . = ALIGN (0x4)
|
|
||||||
|
|
||||||
.gcc_except_table
|
|
||||||
0x037fb478 0x0
|
|
||||||
*(.gcc_except_table)
|
|
||||||
0x037fb478 . = ALIGN (0x4)
|
|
||||||
|
|
||||||
.jcr 0x037fb478 0x4
|
|
||||||
*(.jcr)
|
|
||||||
.jcr 0x037fb478 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
.jcr 0x037fb478 0x4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
|
|
||||||
.got
|
|
||||||
*(.got.plt)
|
|
||||||
*(.got)
|
|
||||||
|
|
||||||
.iwram 0x037fb47c 0x0
|
|
||||||
0x037fb47c __iwram_start = <code 342> (.)
|
|
||||||
*(.iwram)
|
|
||||||
*iwram.*(.text)
|
|
||||||
0x037fb47c . = ALIGN (0x4)
|
|
||||||
0x037fb47c __iwram_end = <code 342> (.)
|
|
||||||
|
|
||||||
.data 0x037fb47c 0x54
|
|
||||||
0x037fb47c __data_start = <code 342> (.)
|
|
||||||
*(.data)
|
|
||||||
.data 0x037fb47c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o
|
|
||||||
.data 0x037fb47c 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
.data 0x037fb47c 0x4 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
0x037fb47c __dso_handle
|
|
||||||
.data 0x037fb480 0x4 main.o
|
|
||||||
.data 0x037fb484 0x0 ret_menu7_Gen.o
|
|
||||||
.data 0x037fb484 0x0 ret_menu7_R4.o
|
|
||||||
.data 0x037fb484 0x0 ret_menu7_mse.o
|
|
||||||
.data 0x037fb484 0x0 linkreset_arm7.o
|
|
||||||
.data 0x037fb484 0x0 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.data 0x037fb484 0x0 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.data 0x037fb484 0x1 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitPro/libnds/lib\libnds7.a(biosCalls.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitPro/libnds/lib\libnds7.a(interruptDispatcher.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_divsi3.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_dvmd_tls.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_call_via_rX.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-init.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-memcpy.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
.data 0x037fb485 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzlock.o)
|
|
||||||
*fill* 0x037fb485 0x3 ff
|
|
||||||
.data 0x037fb488 0x8 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
0x037fb488 _tzname
|
|
||||||
.data 0x037fb490 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-div.o)
|
|
||||||
.data 0x037fb490 0x40 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-gettzinfo.o)
|
|
||||||
.data 0x037fb4d0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
.data 0x037fb4d0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
*(.data.*)
|
|
||||||
*(.gnu.linkonce.d*)
|
|
||||||
0x037fb4d0 . = ALIGN (0x4)
|
|
||||||
0x037fb4d0 __data_end = <code 342> (.)
|
|
||||||
|
|
||||||
.bss 0x037fb4d0 0x11c
|
|
||||||
0x037fb4d0 __bss_start = <code 342> (.)
|
|
||||||
0x037fb4d0 __bss_start__ = <code 342> (.)
|
|
||||||
*(.dynbss)
|
|
||||||
*(.gnu.linkonce.b*)
|
|
||||||
*(.bss*)
|
|
||||||
.bss 0x037fb4d0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o
|
|
||||||
.bss 0x037fb4d0 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
.bss 0x037fb4d0 0x1c d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
.bss 0x037fb4ec 0x0 main.o
|
|
||||||
.bss 0x037fb4ec 0x0 ret_menu7_Gen.o
|
|
||||||
.bss 0x037fb4ec 0x0 ret_menu7_R4.o
|
|
||||||
.bss 0x037fb4ec 0x0 ret_menu7_mse.o
|
|
||||||
.bss 0x037fb4ec 0x0 linkreset_arm7.o
|
|
||||||
.bss 0x037fb4ec 0x0 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.bss 0x037fb4ec 0x0 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.bss 0x037fb4ec 0x14 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitPro/libnds/lib\libnds7.a(biosCalls.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitPro/libnds/lib\libnds7.a(interruptDispatcher.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_divsi3.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_dvmd_tls.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_call_via_rX.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-init.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-memcpy.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
.bss 0x037fb500 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzlock.o)
|
|
||||||
.bss 0x037fb500 0x8 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
0x037fb500 _daylight
|
|
||||||
0x037fb504 _timezone
|
|
||||||
.bss 0x037fb508 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-div.o)
|
|
||||||
.bss 0x037fb508 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-gettzinfo.o)
|
|
||||||
.bss 0x037fb508 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
.bss 0x037fb508 0x0 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
*(COMMON)
|
|
||||||
COMMON 0x037fb508 0x18 main.o
|
|
||||||
0x037fb508 tempPos
|
|
||||||
0x037fb514 first
|
|
||||||
COMMON 0x037fb520 0x4 ret_menu7_Gen.o
|
|
||||||
0x037fb520 _menu7_Gen
|
|
||||||
COMMON 0x037fb524 0xc8 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
0x037fb524 irqTable
|
|
||||||
0x037fb5ec . = ALIGN (0x4)
|
|
||||||
0x037fb5ec __bss_end = .
|
|
||||||
0x037fb5ec __bss_end__ = .
|
|
||||||
0x037fb5ec _end = .
|
|
||||||
0x037fb5ec __end__ = .
|
|
||||||
0x037fb5ec PROVIDE (end, _end)
|
|
||||||
|
|
||||||
.stab
|
|
||||||
*(.stab)
|
|
||||||
|
|
||||||
.stabstr
|
|
||||||
*(.stabstr)
|
|
||||||
|
|
||||||
.stab.excl
|
|
||||||
*(.stab.excl)
|
|
||||||
|
|
||||||
.stab.exclstr
|
|
||||||
*(.stab.exclstr)
|
|
||||||
|
|
||||||
.stab.index
|
|
||||||
*(.stab.index)
|
|
||||||
|
|
||||||
.stab.indexstr
|
|
||||||
*(.stab.indexstr)
|
|
||||||
|
|
||||||
.comment 0x00000000 0x2e2
|
|
||||||
*(.comment)
|
|
||||||
.comment 0x00000000 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
.comment 0x00000029 0x29 main.o
|
|
||||||
.comment 0x00000052 0x29 ret_menu7_Gen.o
|
|
||||||
.comment 0x0000007b 0x29 ret_menu7_R4.o
|
|
||||||
.comment 0x000000a4 0x29 ret_menu7_mse.o
|
|
||||||
.comment 0x000000cd 0x29 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.comment 0x000000f6 0x29 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.comment 0x0000011f 0x29 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.comment 0x00000148 0x29 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
.comment 0x00000171 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-init.o)
|
|
||||||
.comment 0x0000019a 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-memcpy.o)
|
|
||||||
.comment 0x000001c3 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
.comment 0x000001ec 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
.comment 0x00000215 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzlock.o)
|
|
||||||
.comment 0x0000023e 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
.comment 0x00000267 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-div.o)
|
|
||||||
.comment 0x00000290 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-gettzinfo.o)
|
|
||||||
.comment 0x000002b9 0x29 d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
|
|
||||||
.debug
|
|
||||||
*(.debug)
|
|
||||||
|
|
||||||
.line
|
|
||||||
*(.line)
|
|
||||||
|
|
||||||
.debug_srcinfo
|
|
||||||
*(.debug_srcinfo)
|
|
||||||
|
|
||||||
.debug_sfnames
|
|
||||||
*(.debug_sfnames)
|
|
||||||
|
|
||||||
.debug_aranges 0x00000000 0x120
|
|
||||||
*(.debug_aranges)
|
|
||||||
.debug_aranges
|
|
||||||
0x00000000 0x20 main.o
|
|
||||||
.debug_aranges
|
|
||||||
0x00000020 0x20 ret_menu7_Gen.o
|
|
||||||
.debug_aranges
|
|
||||||
0x00000040 0x20 ret_menu7_R4.o
|
|
||||||
.debug_aranges
|
|
||||||
0x00000060 0x20 ret_menu7_mse.o
|
|
||||||
.debug_aranges
|
|
||||||
0x00000080 0x20 linkreset_arm7.o
|
|
||||||
.debug_aranges
|
|
||||||
0x000000a0 0x20 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.debug_aranges
|
|
||||||
0x000000c0 0x20 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.debug_aranges
|
|
||||||
0x000000e0 0x20 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.debug_aranges
|
|
||||||
0x00000100 0x20 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
|
|
||||||
.debug_pubnames
|
|
||||||
0x00000000 0x34b
|
|
||||||
*(.debug_pubnames)
|
|
||||||
.debug_pubnames
|
|
||||||
0x00000000 0xcd main.o
|
|
||||||
.debug_pubnames
|
|
||||||
0x000000cd 0x44 ret_menu7_Gen.o
|
|
||||||
.debug_pubnames
|
|
||||||
0x00000111 0x23 ret_menu7_R4.o
|
|
||||||
.debug_pubnames
|
|
||||||
0x00000134 0x24 ret_menu7_mse.o
|
|
||||||
.debug_pubnames
|
|
||||||
0x00000158 0xbb d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.debug_pubnames
|
|
||||||
0x00000213 0x3c d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.debug_pubnames
|
|
||||||
0x0000024f 0x7c d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.debug_pubnames
|
|
||||||
0x000002cb 0x80 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
|
|
||||||
.debug_info 0x00000000 0x1e10
|
|
||||||
*(.debug_info)
|
|
||||||
.debug_info 0x00000000 0x85b main.o
|
|
||||||
.debug_info 0x0000085b 0x1d5 ret_menu7_Gen.o
|
|
||||||
.debug_info 0x00000a30 0x198 ret_menu7_R4.o
|
|
||||||
.debug_info 0x00000bc8 0xdb ret_menu7_mse.o
|
|
||||||
.debug_info 0x00000ca3 0x82 linkreset_arm7.o
|
|
||||||
.debug_info 0x00000d25 0x74b d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.debug_info 0x00001470 0x140 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.debug_info 0x000015b0 0x615 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.debug_info 0x00001bc5 0x24b d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
|
|
||||||
.debug_abbrev 0x00000000 0xa67
|
|
||||||
*(.debug_abbrev)
|
|
||||||
.debug_abbrev 0x00000000 0x2cc main.o
|
|
||||||
.debug_abbrev 0x000002cc 0xb7 ret_menu7_Gen.o
|
|
||||||
.debug_abbrev 0x00000383 0xf2 ret_menu7_R4.o
|
|
||||||
.debug_abbrev 0x00000475 0x85 ret_menu7_mse.o
|
|
||||||
.debug_abbrev 0x000004fa 0x14 linkreset_arm7.o
|
|
||||||
.debug_abbrev 0x0000050e 0x1a8 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.debug_abbrev 0x000006b6 0xa4 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.debug_abbrev 0x0000075a 0x1d8 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.debug_abbrev 0x00000932 0x135 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
|
|
||||||
.debug_line 0x00000000 0xe62
|
|
||||||
*(.debug_line)
|
|
||||||
.debug_line 0x00000000 0x2a6 main.o
|
|
||||||
.debug_line 0x000002a6 0x14f ret_menu7_Gen.o
|
|
||||||
.debug_line 0x000003f5 0x180 ret_menu7_R4.o
|
|
||||||
.debug_line 0x00000575 0x109 ret_menu7_mse.o
|
|
||||||
.debug_line 0x0000067e 0x69 linkreset_arm7.o
|
|
||||||
.debug_line 0x000006e7 0x1e7 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.debug_line 0x000008ce 0x118 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.debug_line 0x000009e6 0x321 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.debug_line 0x00000d07 0x15b d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
|
|
||||||
.debug_frame 0x00000000 0x4e8
|
|
||||||
*(.debug_frame)
|
|
||||||
.debug_frame 0x00000000 0x114 main.o
|
|
||||||
.debug_frame 0x00000114 0x44 ret_menu7_Gen.o
|
|
||||||
.debug_frame 0x00000158 0x50 ret_menu7_R4.o
|
|
||||||
.debug_frame 0x000001a8 0x28 ret_menu7_mse.o
|
|
||||||
.debug_frame 0x000001d0 0x144 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.debug_frame 0x00000314 0x44 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.debug_frame 0x00000358 0xe0 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.debug_frame 0x00000438 0xb0 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
|
|
||||||
.debug_str 0x00000000 0x8b6
|
|
||||||
*(.debug_str)
|
|
||||||
.debug_str 0x00000000 0x33d main.o
|
|
||||||
0x3c5 (size before relaxing)
|
|
||||||
.debug_str 0x0000033d 0x87 ret_menu7_Gen.o
|
|
||||||
0x179 (size before relaxing)
|
|
||||||
.debug_str 0x000003c4 0x61 ret_menu7_R4.o
|
|
||||||
0x148 (size before relaxing)
|
|
||||||
.debug_str 0x00000425 0x44 ret_menu7_mse.o
|
|
||||||
0x12b (size before relaxing)
|
|
||||||
.debug_str 0x00000469 0x18b d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
0x3aa (size before relaxing)
|
|
||||||
.debug_str 0x000005f4 0x71 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
0x173 (size before relaxing)
|
|
||||||
.debug_str 0x00000665 0x18e d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
0x2fa (size before relaxing)
|
|
||||||
.debug_str 0x000007f3 0xc3 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
0x1b4 (size before relaxing)
|
|
||||||
|
|
||||||
.debug_loc 0x00000000 0x1482
|
|
||||||
*(.debug_loc)
|
|
||||||
.debug_loc 0x00000000 0x346 main.o
|
|
||||||
.debug_loc 0x00000346 0x2ac ret_menu7_Gen.o
|
|
||||||
.debug_loc 0x000005f2 0x119 ret_menu7_R4.o
|
|
||||||
.debug_loc 0x0000070b 0x5f ret_menu7_mse.o
|
|
||||||
.debug_loc 0x0000076a 0x446 d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.debug_loc 0x00000bb0 0xf2 d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.debug_loc 0x00000ca2 0x6ab d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.debug_loc 0x0000134d 0x135 d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
|
|
||||||
.debug_macinfo
|
|
||||||
*(.debug_macinfo)
|
|
||||||
|
|
||||||
.debug_weaknames
|
|
||||||
*(.debug_weaknames)
|
|
||||||
|
|
||||||
.debug_funcnames
|
|
||||||
*(.debug_funcnames)
|
|
||||||
|
|
||||||
.debug_typenames
|
|
||||||
*(.debug_typenames)
|
|
||||||
|
|
||||||
.debug_varnames
|
|
||||||
*(.debug_varnames)
|
|
||||||
|
|
||||||
.stack 0x00080000 0x0
|
|
||||||
0x00080000 _stack = .
|
|
||||||
*(.stack)
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
LOAD main.o
|
|
||||||
LOAD ret_menu7_Gen.o
|
|
||||||
LOAD ret_menu7_R4.o
|
|
||||||
LOAD ret_menu7_mse.o
|
|
||||||
LOAD linkreset_arm7.o
|
|
||||||
LOAD d:/devkitPro/libnds/lib\libnds7.a
|
|
||||||
START GROUP
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libc.a
|
|
||||||
END GROUP
|
|
||||||
START GROUP
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libsysbase.a
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libc.a
|
|
||||||
END GROUP
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
LOAD d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
OUTPUT(d:/NDSŠJ”/GBA_ExpLoader5/arm7/arm7.elf elf32-littlearm)
|
|
||||||
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000000 0x10
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000000 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib/ds_arm7_crt0.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x0000001e 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crti.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x0000003c 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtbegin.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x0000005a 0x1e main.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000078 0x1e ret_menu7_Gen.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000096 0x1e ret_menu7_R4.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x000000b4 0x1e ret_menu7_mse.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x000000d2 0x1e linkreset_arm7.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x000000f0 0x1e d:/devkitPro/libnds/lib\libnds7.a(clock.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x0000010e 0x1e d:/devkitPro/libnds/lib\libnds7.a(spi.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x0000012c 0x1e d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x0000014a 0x1e d:/devkitPro/libnds/lib\libnds7.a(interrupts.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000168 0x1e d:/devkitPro/libnds/lib\libnds7.a(biosCalls.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000186 0x1e d:/devkitPro/libnds/lib\libnds7.a(interruptDispatcher.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x000001a4 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_divsi3.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x000001c2 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_dvmd_tls.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x000001e0 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2\libgcc.a(_call_via_rX.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x000001fe 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-init.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x0000021c 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-memcpy.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x0000023a 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktime.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000258 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-mktm_r.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000276 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzlock.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000294 0x1c d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-tzvars.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x000002b0 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-div.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x000002ce 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/../../../../arm-eabi/lib\libg.a(lib_a-gettzinfo.o)
|
|
||||||
.ARM.attributes
|
|
||||||
0x000002ec 0x1c d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtend.o
|
|
||||||
.ARM.attributes
|
|
||||||
0x00000308 0x1e d:/devkitpro/devkitarm/bin/../lib/gcc/arm-eabi/4.1.2/crtn.o
|
|
||||||
|
|
||||||
.debug_ranges 0x00000000 0xd0
|
|
||||||
.debug_ranges 0x00000000 0x88 main.o
|
|
||||||
.debug_ranges 0x00000088 0x48 d:/devkitPro/libnds/lib\libnds7.a(touch.o)
|
|
@ -1,18 +0,0 @@
|
|||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
void LinkReset_ARM7();
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
--------------------------
|
|
||||||
EDIY Studio
|
|
||||||
http://www.gbalink.net
|
|
||||||
http://www.ds-link.net
|
|
||||||
--------------------------
|
|
||||||
*/
|
|
@ -1,20 +0,0 @@
|
|||||||
.TEXT
|
|
||||||
.ARM
|
|
||||||
|
|
||||||
@---------------------------------------------------------------------------------------
|
|
||||||
.GLOBAL LinkReset_ARM7
|
|
||||||
.func LinkReset_ARM7
|
|
||||||
@---------------------------------------------------------------------------------------
|
|
||||||
LinkReset_ARM7:
|
|
||||||
MOV R12,#0x2800000
|
|
||||||
LDR R1,[R12,#-0x1DC]
|
|
||||||
ADD R1,R1,#0x1FC
|
|
||||||
CMP R12, R1
|
|
||||||
|
|
||||||
SUBEQ R15,R12,#0x700000
|
|
||||||
|
|
||||||
BX LR
|
|
||||||
|
|
||||||
.endfunc
|
|
||||||
|
|
||||||
.end
|
|
@ -1,53 +1,35 @@
|
|||||||
|
/*---------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
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 <nds.h>
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#include "linkreset_arm7.h"
|
/*void gbaMode() {
|
||||||
|
|
||||||
|
|
||||||
extern void ret_menu7_R4(void);
|
|
||||||
extern void ret_menu7_Gen(void);
|
|
||||||
extern void ret_menu7_mse(void);
|
|
||||||
|
|
||||||
|
|
||||||
#define IPC_CMD_GBAMODE 1
|
|
||||||
#define IPC_CMD_SLOT2 2
|
|
||||||
#define IPC_CMD_TURNOFF 9
|
|
||||||
#define IPC_CMD_SR_R4TF 11
|
|
||||||
#define IPC_CMD_SR_DLMS 12
|
|
||||||
#define IPC_CMD_SR_GEN 13
|
|
||||||
#define IPC_CMD_SR_MSE 14
|
|
||||||
|
|
||||||
|
|
||||||
void FIFOInit()
|
|
||||||
{
|
|
||||||
REG_IPC_FIFO_CR = IPC_FIFO_ENABLE | IPC_FIFO_SEND_CLEAR;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static void prepairReset()
|
|
||||||
{
|
|
||||||
vu32 vr;
|
|
||||||
u32 i;
|
|
||||||
|
|
||||||
powerON(POWER_SOUND);
|
|
||||||
|
|
||||||
for(i = 0x040000B0; i < (0x040000B0+0x30); i+=4) {
|
|
||||||
*((vu32*)i) = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
REG_IME = IME_DISABLE;
|
|
||||||
REG_IE = 0;
|
|
||||||
REG_IF = ~0;
|
|
||||||
|
|
||||||
for(vr = 0; vr < 0x100; vr++); // Wait ARM9
|
|
||||||
|
|
||||||
swiSoftReset();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void gbaMode()
|
|
||||||
{
|
|
||||||
vu32 vr;
|
vu32 vr;
|
||||||
|
|
||||||
REG_IME = IME_DISABLE;
|
REG_IME = IME_DISABLE;
|
||||||
@ -62,236 +44,48 @@ void gbaMode()
|
|||||||
// asm("swi 0x1F0000");
|
// asm("swi 0x1F0000");
|
||||||
|
|
||||||
while(1);
|
while(1);
|
||||||
}
|
}*/
|
||||||
|
|
||||||
__attribute__((noinline)) u8 PM_GetRegister(int reg)
|
|
||||||
{
|
|
||||||
|
|
||||||
// while(REG_SPICNT & SPI_BUSY)
|
|
||||||
// SWI_WaitByLoop(1);
|
|
||||||
SerialWaitBusy();
|
|
||||||
|
|
||||||
REG_SPICNT = SPI_ENABLE | SPI_DEVICE_POWER |SPI_BAUD_1MHz | SPI_CONTINUOUS;
|
|
||||||
REG_SPIDATA = reg | 0x80;
|
|
||||||
|
|
||||||
SerialWaitBusy();
|
|
||||||
// while(REG_SPICNT & SPI_BUSY)
|
|
||||||
// SWI_WaitByLoop(1);
|
|
||||||
|
|
||||||
REG_SPICNT = SPI_ENABLE | SPI_DEVICE_POWER |SPI_BAUD_1MHz ;
|
|
||||||
REG_SPIDATA = 0;
|
|
||||||
|
|
||||||
SerialWaitBusy();
|
|
||||||
// while(REG_SPICNT & SPI_BUSY)
|
|
||||||
// SWI_WaitByLoop(1);
|
|
||||||
|
|
||||||
|
|
||||||
return REG_SPIDATA & 0xff;
|
volatile bool exitflag = false;
|
||||||
}
|
|
||||||
|
|
||||||
__attribute__((noinline)) void PM_SetRegister(int reg, int control)
|
void powerButtonCB() { exitflag = true; }
|
||||||
{
|
|
||||||
|
|
||||||
SerialWaitBusy();
|
void VblankHandler(void) { /*Wifi_Update();*/ }
|
||||||
// while(REG_SPICNT & SPI_BUSY)
|
|
||||||
// SWI_WaitByLoop(1);
|
|
||||||
|
|
||||||
REG_SPICNT = SPI_ENABLE | SPI_DEVICE_POWER | SPI_BAUD_1MHz | SPI_CONTINUOUS;
|
|
||||||
REG_SPIDATA = reg;
|
|
||||||
|
|
||||||
SerialWaitBusy();
|
|
||||||
// while(REG_SPICNT & SPI_BUSY)
|
|
||||||
// SWI_WaitByLoop(1);
|
|
||||||
|
|
||||||
REG_SPICNT = SPI_ENABLE | SPI_DEVICE_POWER | SPI_BAUD_1MHz;
|
|
||||||
REG_SPIDATA = control;
|
|
||||||
|
|
||||||
|
|
||||||
}
|
void VcountHandler() { inputGetAndSend(); }
|
||||||
|
|
||||||
void PM_SetControl(int control)
|
int main() {
|
||||||
{
|
readUserSettings();
|
||||||
PM_SetRegister(0, PM_GetRegister(0) | control);
|
ledBlink(0);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
void startSound(int sampleRate, const void* data, u32 bytes, u8 channel, u8 vol, u8 pan, u8 format) {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
SCHANNEL_TIMER(channel) = SOUND_FREQ(sampleRate);
|
|
||||||
SCHANNEL_SOURCE(channel) = (u32)data;
|
|
||||||
SCHANNEL_LENGTH(channel) = bytes >> 2 ;
|
|
||||||
SCHANNEL_CR(channel) = SCHANNEL_ENABLE | SOUND_ONE_SHOT | SOUND_VOL(vol) | SOUND_PAN(pan) | (format==1?SOUND_8BIT:SOUND_16BIT);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
s32 getFreeSoundChannel() {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
int i;
|
|
||||||
for (i=0; i<16; i++) {
|
|
||||||
if ( (SCHANNEL_CR(i) & SCHANNEL_ENABLE) == 0 ) return i;
|
|
||||||
}
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
touchPosition first,tempPos;
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
void VcountHandler() {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
static int lastbut = -1;
|
|
||||||
|
|
||||||
uint16 but=0, x=0, y=0, xpx=0, ypx=0, z1=0, z2=0;
|
|
||||||
|
|
||||||
but = REG_KEYXY;
|
|
||||||
|
|
||||||
if (!( (but ^ lastbut) & (1<<6))) {
|
|
||||||
|
|
||||||
tempPos = touchReadXY();
|
|
||||||
|
|
||||||
if ( tempPos.x == 0 || tempPos.y == 0 ) {
|
|
||||||
but |= (1 <<6);
|
|
||||||
lastbut = but;
|
|
||||||
} else {
|
|
||||||
x = tempPos.x;
|
|
||||||
y = tempPos.y;
|
|
||||||
xpx = tempPos.px;
|
|
||||||
ypx = tempPos.py;
|
|
||||||
z1 = tempPos.z1;
|
|
||||||
z2 = tempPos.z2;
|
|
||||||
}
|
|
||||||
|
|
||||||
} else {
|
|
||||||
lastbut = but;
|
|
||||||
but |= (1 <<6);
|
|
||||||
}
|
|
||||||
|
|
||||||
IPC->touchX = x;
|
|
||||||
IPC->touchY = y;
|
|
||||||
IPC->touchXpx = xpx;
|
|
||||||
IPC->touchYpx = ypx;
|
|
||||||
IPC->touchZ1 = z1;
|
|
||||||
IPC->touchZ2 = z2;
|
|
||||||
IPC->buttons = but;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/***
|
|
||||||
#define READ_TIME_AND_DATE 0x65
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
void rtcGetTimeAndDate(uint8 * time) {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
uint8 command, status;
|
|
||||||
|
|
||||||
command = READ_TIME_AND_DATE;
|
|
||||||
rtcTransaction(&command, 1, time, 7);
|
|
||||||
|
|
||||||
command = READ_STATUS_REG1;
|
|
||||||
rtcTransaction(&command, 1, &status, 1);
|
|
||||||
|
|
||||||
if ( status & STATUS_24HRS ) {
|
|
||||||
time[4] &= 0x3f;
|
|
||||||
} else {
|
|
||||||
|
|
||||||
}
|
|
||||||
BCDToInteger(time,7);
|
|
||||||
}
|
|
||||||
**/
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
void VblankHandler(void) {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
u32 fifo;
|
|
||||||
|
|
||||||
if(!(REG_IPC_FIFO_CR & IPC_FIFO_RECV_EMPTY)) {
|
|
||||||
fifo = REG_IPC_FIFO_RX;
|
|
||||||
|
|
||||||
if(fifo == IPC_CMD_GBAMODE)
|
|
||||||
gbaMode();
|
|
||||||
if(fifo == IPC_CMD_SLOT2) {
|
|
||||||
prepairReset();
|
|
||||||
}
|
|
||||||
if(fifo == IPC_CMD_TURNOFF) {
|
|
||||||
PM_SetControl(1<<6);
|
|
||||||
while(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(fifo == IPC_CMD_SR_R4TF)
|
|
||||||
ret_menu7_R4();
|
|
||||||
if(fifo == IPC_CMD_SR_DLMS)
|
|
||||||
LinkReset_ARM7();
|
|
||||||
if(fifo == IPC_CMD_SR_GEN)
|
|
||||||
ret_menu7_Gen();
|
|
||||||
if(fifo == IPC_CMD_SR_MSE)
|
|
||||||
ret_menu7_mse();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
u32 i;
|
|
||||||
|
|
||||||
//sound code :)
|
|
||||||
TransferSound *snd = IPC->soundData;
|
|
||||||
IPC->soundData = 0;
|
|
||||||
|
|
||||||
if (0 != snd) {
|
|
||||||
|
|
||||||
for (i=0; i<snd->count; i++) {
|
|
||||||
s32 chan = getFreeSoundChannel();
|
|
||||||
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
uint8 ct[sizeof(IPC->time.curtime)];
|
|
||||||
int t1, t2;
|
|
||||||
|
|
||||||
rtcGetTimeAndDate((uint8 *)ct);
|
|
||||||
IPC->time.rtc.year = ct[0];
|
|
||||||
IPC->time.rtc.month = ct[1];
|
|
||||||
IPC->time.rtc.day = ct[2];
|
|
||||||
IPC->time.rtc.weekday = ct[3];
|
|
||||||
IPC->time.rtc.hours = (ct[4]<12) ? ct[4] : ct[4]+40;
|
|
||||||
IPC->time.rtc.minutes = ct[5];
|
|
||||||
IPC->time.rtc.seconds = ct[6];
|
|
||||||
|
|
||||||
IPC->temperature = touchReadTemperature(&t1, &t2);
|
|
||||||
IPC->tdiode1 = t1;
|
|
||||||
IPC->tdiode2 = t2;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
int main(int argc, char ** argv) {
|
|
||||||
//---------------------------------------------------------------------------------
|
|
||||||
|
|
||||||
// memset((void*)IPC, 0, sizeof(IPC));
|
|
||||||
|
|
||||||
// rtcReset();
|
|
||||||
FIFOInit();
|
|
||||||
|
|
||||||
//enable sound
|
|
||||||
powerON(POWER_SOUND);
|
|
||||||
SOUND_CR = SOUND_ENABLE | SOUND_VOL(0x7F);
|
|
||||||
IPC->soundData = 0;
|
|
||||||
|
|
||||||
irqInit();
|
irqInit();
|
||||||
|
|
||||||
// Start the RTC tracking IRQ
|
// Start the RTC tracking IRQ
|
||||||
initClockIRQ();
|
initClockIRQ();
|
||||||
|
fifoInit();
|
||||||
|
touchInit();
|
||||||
|
|
||||||
SetYtrigger(80);
|
SetYtrigger(80);
|
||||||
irqSet(IRQ_VBLANK, VblankHandler);
|
|
||||||
|
installSystemFIFO();
|
||||||
|
|
||||||
irqSet(IRQ_VCOUNT, VcountHandler);
|
irqSet(IRQ_VCOUNT, VcountHandler);
|
||||||
|
irqSet(IRQ_VBLANK, VblankHandler);
|
||||||
|
|
||||||
irqEnable(IRQ_VBLANK | IRQ_VCOUNT);
|
irqEnable( IRQ_VBLANK | IRQ_VCOUNT);
|
||||||
|
|
||||||
while(1) {
|
/*if (REG_SNDEXTCNT != 0) {
|
||||||
swiWaitForVBlank();
|
i2cWriteRegister(0x4A, 0x12, 0x00); // Press power-button for auto-reset
|
||||||
}
|
i2cWriteRegister(0x4A, 0x70, 0x01); // Bootflag = Warmboot/SkipHealthSafety
|
||||||
|
}*/
|
||||||
|
|
||||||
|
|
||||||
|
setPowerButtonCB(powerButtonCB);
|
||||||
|
|
||||||
|
// Keep the ARM7 mostly idle
|
||||||
|
while(1)swiWaitForVBlank();
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,163 +0,0 @@
|
|||||||
/***********************************************************
|
|
||||||
Arm7 Soft rest for General purpose
|
|
||||||
|
|
||||||
by Rudolph (<EFBFBD>c’é)
|
|
||||||
***************************************************************/
|
|
||||||
|
|
||||||
#include <nds.h>
|
|
||||||
//#include <nds/registers_alt.h> // devkitPror20
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
#define ARM7_PROG (0x03810000 - 0xA00)
|
|
||||||
typedef void (* FN_MEDIUM_ARM7)(void);
|
|
||||||
FN_MEDIUM_ARM7 _menu7_Gen;
|
|
||||||
|
|
||||||
extern void _menu7_Gen_s();
|
|
||||||
|
|
||||||
void ret_menu7_Gen()
|
|
||||||
{
|
|
||||||
u32 *adr;
|
|
||||||
u32 *buf;
|
|
||||||
u32 i;
|
|
||||||
|
|
||||||
while((*(vu32*)0x027FFDFC) != 0x027FFDF8) { // Timing adjustment with ARM9
|
|
||||||
vu32 w;
|
|
||||||
for(w=0;w<0x100;w++){
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
REG_IME = IME_DISABLE; // Disable interrupts
|
|
||||||
REG_IF = REG_IF; // Acknowledge interrupt
|
|
||||||
|
|
||||||
// REG_IME = 0;
|
|
||||||
|
|
||||||
for (i = 0x04000400; i < 0x04000500; i+=4) {
|
|
||||||
*((u32*)i) = 0;
|
|
||||||
}
|
|
||||||
SOUND_CR = 0;
|
|
||||||
|
|
||||||
for(i = 0x040000B0; i < (0x040000B0+0x30); i+=4) {
|
|
||||||
*((vu32*)i) = 0;
|
|
||||||
}
|
|
||||||
for(i = 0x04000100; i < 0x04000110; i+=2) {
|
|
||||||
*((u16*)i) = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//switch to user mode
|
|
||||||
asm("mov r0, #0x1F");
|
|
||||||
asm("msr cpsr, r0");
|
|
||||||
|
|
||||||
|
|
||||||
adr = (u32*)ARM7_PROG;
|
|
||||||
buf = (u32*)_menu7_Gen_s;
|
|
||||||
for(i = 0; i < 0x200/4; i++) {
|
|
||||||
*adr = *buf;
|
|
||||||
adr++;
|
|
||||||
buf++;
|
|
||||||
}
|
|
||||||
|
|
||||||
_menu7_Gen = (FN_MEDIUM_ARM7)ARM7_PROG;
|
|
||||||
_menu7_Gen();
|
|
||||||
|
|
||||||
while(1);
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void _menu7_Gen_s()
|
|
||||||
{
|
|
||||||
u32 *adr;
|
|
||||||
u32 *bufh, *buf7, *buf9;
|
|
||||||
u32 siz;
|
|
||||||
u32 i;
|
|
||||||
u32 *arm9s, *arm9e;
|
|
||||||
u32 *arm7s, *arm7e;
|
|
||||||
|
|
||||||
|
|
||||||
bufh = (u32*)(*(vu32*)0x027FFDF4);
|
|
||||||
|
|
||||||
adr = (u32*)0x027FFE00;
|
|
||||||
for(i = 0; i < 512/4; i++) { // Header
|
|
||||||
*adr = *bufh;
|
|
||||||
adr++;
|
|
||||||
bufh++;
|
|
||||||
}
|
|
||||||
|
|
||||||
buf9 = bufh;
|
|
||||||
buf7 = buf9 + ((*(vu32*)0x027FFE2C) / 4);
|
|
||||||
|
|
||||||
|
|
||||||
adr = (u32*)(*(vu32*)0x027FFE38);
|
|
||||||
siz = (*(vu32*)0x027FFE3C);
|
|
||||||
for(i = 0; i < siz/4; i++) { // ARM7
|
|
||||||
*adr = *buf7;
|
|
||||||
adr++;
|
|
||||||
buf7++;
|
|
||||||
}
|
|
||||||
arm7e = adr;
|
|
||||||
|
|
||||||
|
|
||||||
adr = (u32*)(*(vu32*)0x027FFE28);
|
|
||||||
siz = (*(vu32*)0x027FFE2C);
|
|
||||||
if(adr < buf9) { // ARM9
|
|
||||||
for(i = 0; i < siz/4; i++) {
|
|
||||||
*adr = *buf9;
|
|
||||||
adr++;
|
|
||||||
buf9++;
|
|
||||||
}
|
|
||||||
arm9e = adr;
|
|
||||||
} else {
|
|
||||||
adr += (siz/4 - 1);
|
|
||||||
buf9 += (siz/4 - 1);
|
|
||||||
arm9e = adr + 1;
|
|
||||||
for(i = 0; i < siz/4; i++) {
|
|
||||||
*adr = *buf9;
|
|
||||||
adr--;
|
|
||||||
buf9--;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
arm7s = (u32*)(*(vu32*)0x027FFE38);
|
|
||||||
if(arm7s > (u32*)0x023FF800)
|
|
||||||
arm7s = (u32*)0x023FF800;
|
|
||||||
arm9s = (u32*)(*(vu32*)0x027FFE28);
|
|
||||||
if(arm9s > arm7s) {
|
|
||||||
adr = arm9s;
|
|
||||||
arm9s = arm7s;
|
|
||||||
arm7s = adr;
|
|
||||||
adr = arm9e;
|
|
||||||
arm9e = arm7e;
|
|
||||||
arm7e = adr;
|
|
||||||
}
|
|
||||||
|
|
||||||
adr = (u32*)0x02000000;
|
|
||||||
while(adr < arm9s) {
|
|
||||||
*adr = 0x00000000;
|
|
||||||
adr++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while(arm9e < arm7s) {
|
|
||||||
*arm9e = 0x00000000;
|
|
||||||
arm9e++;
|
|
||||||
}
|
|
||||||
|
|
||||||
while(arm7e < (u32*)0x023FF800) {
|
|
||||||
*arm7e = 0x00000000;
|
|
||||||
arm7e++;
|
|
||||||
}
|
|
||||||
|
|
||||||
REG_IE = 0;
|
|
||||||
REG_IF = ~0;
|
|
||||||
(*(vu32*)(0x04000000-4)) = 0; //IRQ_HANDLER ARM7 version
|
|
||||||
(*(vu32*)(0x04000000-8)) = ~0; //VBLANK_INTR_WAIT_FLAGS, ARM7 version
|
|
||||||
REG_POWERCNT = 1; //turn off power to stuffs
|
|
||||||
|
|
||||||
*(vu32*)0x027FFDFC = *(vu32*)0x027FFE24;
|
|
||||||
asm("swi 0x00"); // JUMP 0x027FFE34
|
|
||||||
|
|
||||||
while(1);
|
|
||||||
// swiSoftReset();
|
|
||||||
}
|
|
@ -1,156 +0,0 @@
|
|||||||
/***********************************************************
|
|
||||||
|
|
||||||
by Rudolph (<EFBFBD>c’é)
|
|
||||||
2007/05/24 First release
|
|
||||||
2007/05/27 Timing adjustment with ARM9
|
|
||||||
|
|
||||||
------------------------------------------------------------
|
|
||||||
SoftwareReset Routines for R4DS or M3SimplyDS.
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms,
|
|
||||||
with or without modification, are permitted provided
|
|
||||||
that the following conditions are met:
|
|
||||||
|
|
||||||
Only the Homebrew application can be used.
|
|
||||||
It is not possible to use it by a business purpose.
|
|
||||||
|
|
||||||
This software is made based on information obtained
|
|
||||||
by Reverse engineering.
|
|
||||||
|
|
||||||
Please use that at once when a source code that is
|
|
||||||
more formal than the official is open to the public.
|
|
||||||
***************************************************************/
|
|
||||||
|
|
||||||
#include <nds.h>
|
|
||||||
//#include <nds/registers_alt.h> // devkitPror20
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
|
|
||||||
static int _set_r4menu()
|
|
||||||
{
|
|
||||||
u32 add;
|
|
||||||
|
|
||||||
add = (*(vu32*)0x027FFE18);
|
|
||||||
|
|
||||||
while(CARD_CR2 & CARD_BUSY);
|
|
||||||
|
|
||||||
CARD_CR1H = 0xC0;
|
|
||||||
CARD_COMMAND[0] = 0xB4;
|
|
||||||
CARD_COMMAND[1] = (add >> 24) & 0xFF;
|
|
||||||
CARD_COMMAND[2] = (add >> 16) & 0xFF;
|
|
||||||
CARD_COMMAND[3] = (add >> 8) & 0xFF;
|
|
||||||
CARD_COMMAND[4] = add & 0xFF;
|
|
||||||
// CARD_COMMAND[5] = 0x00;
|
|
||||||
// CARD_COMMAND[6] = 0x00;
|
|
||||||
// CARD_COMMAND[7] = 0x00;
|
|
||||||
|
|
||||||
CARD_CR2 = 0xA7586000;
|
|
||||||
while(!(CARD_CR2 & CARD_DATA_READY));
|
|
||||||
|
|
||||||
return(CARD_DATA_RD);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static int _read_r4menu(char *buf, u32 blk)
|
|
||||||
{
|
|
||||||
int s = 0;
|
|
||||||
u32 *buf32;
|
|
||||||
|
|
||||||
buf32 = (u32*)buf;
|
|
||||||
blk *= 2;
|
|
||||||
do {
|
|
||||||
while(CARD_CR2 & CARD_BUSY);
|
|
||||||
CARD_CR1H = 0xC0;
|
|
||||||
CARD_COMMAND[0] = 0xB6;
|
|
||||||
CARD_COMMAND[1] = (blk >> 16) & 0xFF;
|
|
||||||
CARD_COMMAND[2] = (blk >> 8) & 0xFF;
|
|
||||||
CARD_COMMAND[3] = blk & 0xFF;
|
|
||||||
CARD_COMMAND[4] = 0x00;
|
|
||||||
// CARD_COMMAND[5] = 0x00;
|
|
||||||
// CARD_COMMAND[6] = 0x00;
|
|
||||||
// CARD_COMMAND[7] = 0x00;
|
|
||||||
CARD_CR2 = 0xA7586000;
|
|
||||||
while(!(CARD_CR2 & CARD_DATA_READY));
|
|
||||||
} while(CARD_DATA_RD);
|
|
||||||
|
|
||||||
while(CARD_CR2 & CARD_BUSY);
|
|
||||||
CARD_CR1H = 0xC0;
|
|
||||||
CARD_COMMAND[0] = 0xBF;
|
|
||||||
CARD_COMMAND[1] = (blk >> 16) & 0xFF;
|
|
||||||
CARD_COMMAND[2] = (blk >> 8) & 0xFF;
|
|
||||||
CARD_COMMAND[3] = blk & 0xFF;
|
|
||||||
CARD_COMMAND[4] = 0x00;
|
|
||||||
// CARD_COMMAND[5] = 0x00;
|
|
||||||
// CARD_COMMAND[6] = 0x00;
|
|
||||||
// CARD_COMMAND[7] = 0x00;
|
|
||||||
CARD_CR2 = 0xA1586000;
|
|
||||||
|
|
||||||
do {
|
|
||||||
while(!(CARD_CR2 & CARD_DATA_READY));
|
|
||||||
*buf32 = CARD_DATA_RD;
|
|
||||||
buf32++;
|
|
||||||
s += 4;
|
|
||||||
} while(CARD_CR2 & CARD_BUSY);
|
|
||||||
|
|
||||||
return(s);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void ret_menu7_R4()
|
|
||||||
{
|
|
||||||
char *adr;
|
|
||||||
u32 blk, siz;
|
|
||||||
u32 i;
|
|
||||||
u32 *mem;
|
|
||||||
|
|
||||||
REG_IME = 0;
|
|
||||||
REG_IE = 0;
|
|
||||||
REG_IF = REG_IF;
|
|
||||||
|
|
||||||
REG_IPC_SYNC = 0;
|
|
||||||
DMA0_CR = 0;
|
|
||||||
DMA1_CR = 0;
|
|
||||||
DMA2_CR = 0;
|
|
||||||
DMA3_CR = 0;
|
|
||||||
|
|
||||||
while((*(vu32*)0x027FFDFC) != 0x027FFDF8); // Timing adjustment with ARM9
|
|
||||||
|
|
||||||
mem = (u32*)0x02000000;
|
|
||||||
for(i = 0; i < 0x3FF800/4; i++) {
|
|
||||||
*mem = 0x00000000;
|
|
||||||
mem++;
|
|
||||||
}
|
|
||||||
// memset((u8*)0x2000000, 0x00, 0x3FF800);
|
|
||||||
|
|
||||||
while(_set_r4menu());
|
|
||||||
|
|
||||||
adr = (char*)0x027FFE00;
|
|
||||||
_read_r4menu(adr, 0); // Header
|
|
||||||
|
|
||||||
|
|
||||||
blk = (*(vu32*)0x027FFE20) / 512;
|
|
||||||
adr = (char*)(*(vu32*)0x027FFE28);
|
|
||||||
siz = (*(vu32*)0x027FFE2C);
|
|
||||||
for(i = 0; i < siz; i += 512) { // ARM9
|
|
||||||
_read_r4menu(adr, blk);
|
|
||||||
blk++;
|
|
||||||
adr += 512;
|
|
||||||
}
|
|
||||||
|
|
||||||
blk = (*(vu32*)0x027FFE30) / 512;
|
|
||||||
adr = (char*)(*(vu32*)0x027FFE38);
|
|
||||||
siz = (*(vu32*)0x027FFE3C);
|
|
||||||
for(i = 0; i < siz; i += 512) { // ARM7
|
|
||||||
_read_r4menu(adr, blk);
|
|
||||||
blk++;
|
|
||||||
adr += 512;
|
|
||||||
}
|
|
||||||
|
|
||||||
*(vu32*)0x027FFDFC = *(vu32*)0x027FFE24;
|
|
||||||
asm("swi 0x00"); // JUMP 0x027FFE34
|
|
||||||
|
|
||||||
while(1);
|
|
||||||
|
|
||||||
}
|
|
@ -1,58 +0,0 @@
|
|||||||
/***********************************************************
|
|
||||||
Arm7 Soft rest for reset.mse
|
|
||||||
|
|
||||||
by Rudolph (<EFBFBD>c’é)
|
|
||||||
***************************************************************/
|
|
||||||
|
|
||||||
#include <nds.h>
|
|
||||||
//#include <nds/registers_alt.h> // devkitPror20
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <stdlib.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
|
|
||||||
void ret_menu7_mse()
|
|
||||||
{
|
|
||||||
u32 i;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
while(*((vu32*)0x027FFDFC) != 0x06000000) { // Timing adjustment with ARM9
|
|
||||||
vu32 w;
|
|
||||||
for(w=0;w<0x100;w++){
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
REG_IME = IME_DISABLE; // Disable interrupts
|
|
||||||
REG_IF = REG_IF; // Acknowledge interrupt
|
|
||||||
|
|
||||||
|
|
||||||
for (i = 0x04000400; i < 0x04000500; i+=4) {
|
|
||||||
*((u32*)i) = 0;
|
|
||||||
}
|
|
||||||
SOUND_CR = 0;
|
|
||||||
|
|
||||||
for(i = 0x040000B0; i < (0x040000B0+0x30); i+=4) {
|
|
||||||
*((vu32*)i) = 0;
|
|
||||||
}
|
|
||||||
for(i = 0x04000100; i < 0x04000110; i+=2) {
|
|
||||||
*((u16*)i) = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
//switch to user mode
|
|
||||||
asm("mov r0, #0x1F");
|
|
||||||
asm("msr cpsr, r0");
|
|
||||||
|
|
||||||
|
|
||||||
REG_IE = 0;
|
|
||||||
REG_IF = ~0;
|
|
||||||
(*(vu32*)(0x04000000-4)) = 0; //IRQ_HANDLER ARM7 version
|
|
||||||
(*(vu32*)(0x04000000-8)) = ~0; //VBLANK_INTR_WAIT_FLAGS, ARM7 version
|
|
||||||
REG_POWERCNT = 1; //turn off power to stuffs
|
|
||||||
|
|
||||||
*((vu32*)0x027FFE34) = *((vu32*)0x027FFDFC); // Bootloader start address
|
|
||||||
// asm("swi 0x00"); // JUMP 0x027FFE34
|
|
||||||
swiSoftReset();
|
|
||||||
while(1);
|
|
||||||
}
|
|
||||||
|
|
113
arm9/Makefile
113
arm9/Makefile
@ -11,47 +11,40 @@ include $(DEVKITARM)/ds_rules
|
|||||||
# BUILD is the directory where object files & intermediate files will be placed
|
# BUILD is the directory where object files & intermediate files will be placed
|
||||||
# SOURCES is a list of directories containing source code
|
# SOURCES is a list of directories containing source code
|
||||||
# INCLUDES is a list of directories containing extra header files
|
# INCLUDES is a list of directories containing extra header files
|
||||||
# DATA is a list of directories containing binary files
|
# DATA is a list of directories containing binary files embedded using bin2o
|
||||||
|
# GRAPHICS is a list of directories containing image files to be converted with grit
|
||||||
# all directories are relative to this makefile
|
# all directories are relative to this makefile
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
BUILD := build
|
BUILD := build
|
||||||
SOURCES := source data \
|
# SOURCES := source fonts source/tarosa source/card
|
||||||
source/tarosa
|
# INCLUDES := include build source/tarosa source/card
|
||||||
|
SOURCES := source data source/tarosa
|
||||||
INCLUDES := include build source/tarosa source/libfat
|
INCLUDES := include build source/tarosa
|
||||||
|
DATA := data
|
||||||
DATA := data
|
STATICLIBS :=
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
ARCH := -mthumb -mthumb-interwork
|
# $(ARCH) $(INCLUDE) -DARM9 -D_LegacyCardLib
|
||||||
#
|
ARCH := -mthumb-interwork
|
||||||
|
CFLAGS := -g -Wall -O2 \
|
||||||
# note: arm9tdmi isn't the correct CPU arch, but anything newer and LD
|
$(ARCH) $(INCLUDE) -DARM9
|
||||||
# *insists* it has a FPU or VFP, and it won't take no for an answer!
|
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
||||||
CFLAGS := -g -Wall -O2\
|
ASFLAGS := -g $(ARCH)
|
||||||
-mcpu=arm9tdmi -mtune=arm9tdmi -fomit-frame-pointer\
|
LDFLAGS = -specs=dsi_arm9.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
|
||||||
-ffast-math \
|
|
||||||
$(ARCH)
|
|
||||||
|
|
||||||
CFLAGS += $(INCLUDE) -DARM9
|
|
||||||
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
|
|
||||||
#--ansi
|
|
||||||
|
|
||||||
ASFLAGS := -g $(ARCH)
|
|
||||||
LDFLAGS = -specs=ds_arm9.specs -g $(ARCH) -mno-fpu -Wl,-Map,../arm9.map
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# any extra libraries we wish to link with the project
|
# any extra libraries we wish to link with the project
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
LIBS := -lfat -lnds9
|
# LIBS := -lfat -ldswifi9 -lnds9
|
||||||
|
# disable Wifi lib. It's not being used in this build
|
||||||
|
LIBS := -lfat -lnds329
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# list of directories containing libraries, this must be the top level containing
|
# list of directories containing libraries, this must be the top level containing
|
||||||
# include and lib
|
# include and lib
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
LIBDIRS := $(LIBNDS) $(LIBIORPG) $(LIBFAT)
|
LIBDIRS := $(LIBNDS) $(PORTLIBS)
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# no real need to edit anything past this point unless you need to add additional
|
# no real need to edit anything past this point unless you need to add additional
|
||||||
@ -60,81 +53,89 @@ LIBDIRS := $(LIBNDS) $(LIBIORPG) $(LIBFAT)
|
|||||||
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
ifneq ($(BUILD),$(notdir $(CURDIR)))
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
export ARM9BIN := $(CURDIR)/arm9.bin
|
export ARM9ELF := $(CURDIR)/$(TARGET).elf
|
||||||
export ARM9ELF := $(CURDIR)/arm9.elf
|
|
||||||
export DEPSDIR := $(CURDIR)/$(BUILD)
|
|
||||||
|
|
||||||
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
|
||||||
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
|
$(foreach dir,$(DATA),$(CURDIR)/$(dir)) \
|
||||||
|
$(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir))
|
||||||
|
|
||||||
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
export DEPSDIR := $(CURDIR)/$(BUILD)
|
||||||
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
|
||||||
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
|
||||||
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
|
||||||
|
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
|
||||||
|
BMPFILES := $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.bmp)))
|
||||||
|
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# use CXX for linking C++ projects, CC for standard C
|
# use CXX for linking C++ projects, CC for standard C
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
ifeq ($(strip $(CPPFILES)),)
|
ifeq ($(strip $(CPPFILES)),)
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
export LD := $(CC)
|
export LD := $(CC)
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
else
|
else
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
export LD := $(CXX)
|
export LD := $(CXX)
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
endif
|
endif
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
|
|
||||||
export OFILES := $(addsuffix .o,$(BINFILES)) \
|
export OFILES_BIN := $(addsuffix .o,$(BINFILES))
|
||||||
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
|
|
||||||
|
|
||||||
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
|
export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
|
||||||
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
|
|
||||||
-I$(CURDIR)/$(BUILD)
|
|
||||||
|
|
||||||
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
|
export OFILES := $(BMPFILES:.bmp=.o) $(OFILES_BIN) $(OFILES_SOURCES)
|
||||||
|
|
||||||
|
export HFILES := $(BMPFILES:.bmp=.h) $(addsuffix .h,$(subst .,_,$(BINFILES)))
|
||||||
|
|
||||||
|
export INCLUDE := $(foreach dir,$(INCLUDES),-iquote $(CURDIR)/$(dir))\
|
||||||
|
$(foreach dir,$(LIBDIRS),-I$(dir)/include)\
|
||||||
|
-I$(CURDIR)/$(BUILD)
|
||||||
|
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
|
||||||
|
|
||||||
.PHONY: $(BUILD) clean
|
.PHONY: $(BUILD) clean
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
$(BUILD):
|
$(BUILD):
|
||||||
@[ -d $@ ] || mkdir -p $@
|
@[ -d $@ ] || mkdir -p $@
|
||||||
@make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
clean:
|
clean:
|
||||||
@echo clean ...
|
@echo clean ...
|
||||||
@rm -fr $(BUILD) *.elf *.nds* *.bin
|
@rm -fr $(BUILD) $(TARGET).elf
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
else
|
else
|
||||||
|
|
||||||
DEPENDS := $(OFILES:.o=.d)
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# main targets
|
# main targets
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
$(ARM9BIN) : $(ARM9ELF)
|
$(ARM9ELF) : $(OFILES)
|
||||||
@$(OBJCOPY) -O binary $< $@
|
|
||||||
@echo built ... $(notdir $@)
|
|
||||||
|
|
||||||
$(ARM9ELF) : $(OFILES)
|
|
||||||
@echo linking $(notdir $@)
|
@echo linking $(notdir $@)
|
||||||
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
@$(LD) $(LDFLAGS) $(OFILES) $(LIBPATHS) $(LIBS) -o $@
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# you need a rule like this for each extension you use as binary data
|
%.bin.o %_bin.h : %.bin
|
||||||
#---------------------------------------------------------------------------------
|
|
||||||
%.bin.o : %.bin
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
@echo $(notdir $<)
|
@echo $(notdir $<)
|
||||||
@$(bin2o)
|
@$(bin2o)
|
||||||
|
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
# This rule creates assembly source files using grit
|
||||||
|
# grit takes an image file and a .grit describing how the file is to be processed
|
||||||
|
# add additional rules like this for each image extension
|
||||||
|
# you use in the graphics folders
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
%.s %.h: %.bmp %.grit
|
||||||
|
#---------------------------------------------------------------------------------
|
||||||
|
grit $< -fts -o$*
|
||||||
|
|
||||||
-include $(DEPENDS)
|
-include $(DEPSDIR)/*.d
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------
|
||||||
endif
|
endif
|
||||||
#---------------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
2528
arm9/arm9.map
2528
arm9/arm9.map
File diff suppressed because it is too large
Load Diff
@ -1,54 +0,0 @@
|
|||||||
/*
|
|
||||||
common.h
|
|
||||||
Common definitions and included files for the FATlib
|
|
||||||
|
|
||||||
Copyright (c) 2006 Michael "Chishm" Chisholm
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
3. The name of the author may not be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
2006-07-11 - Chishm
|
|
||||||
* Original release
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _COMMON_H
|
|
||||||
#define _COMMON_H
|
|
||||||
|
|
||||||
// When compiling for NDS, make sure NDS is defined
|
|
||||||
#ifndef NDS
|
|
||||||
#if defined ARM9 || defined ARM7
|
|
||||||
#define NDS
|
|
||||||
#endif
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef NDS
|
|
||||||
#include <nds/jtypes.h>
|
|
||||||
#else
|
|
||||||
#include "gba_types.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BYTES_PER_READ 512
|
|
||||||
|
|
||||||
#ifndef NULL
|
|
||||||
#define NULL 0
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#endif // _COMMON_H
|
|
@ -1,171 +0,0 @@
|
|||||||
/*
|
|
||||||
directory.h
|
|
||||||
Reading, writing and manipulation of the directory structure on
|
|
||||||
a FAT partition
|
|
||||||
|
|
||||||
Copyright (c) 2006 Michael "Chishm" Chisholm
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
3. The name of the author may not be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
2006-07-11 - Chishm
|
|
||||||
* Original release
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _DIRECTORY_H
|
|
||||||
#define _DIRECTORY_H
|
|
||||||
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "partition.h"
|
|
||||||
|
|
||||||
#define DIR_ENTRY_DATA_SIZE 0x20
|
|
||||||
#define MAX_FILENAME_LENGTH 256
|
|
||||||
#define MAX_ALIAS_LENGTH 13
|
|
||||||
#define LFN_ENTRY_LENGTH 13
|
|
||||||
#define FAT16_ROOT_DIR_CLUSTER 0
|
|
||||||
|
|
||||||
#define DIR_SEPARATOR '/'
|
|
||||||
|
|
||||||
// File attributes
|
|
||||||
#define ATTRIB_ARCH 0x20 // Archive
|
|
||||||
#define ATTRIB_DIR 0x10 // Directory
|
|
||||||
#define ATTRIB_LFN 0x0F // Long file name
|
|
||||||
#define ATTRIB_VOL 0x08 // Volume
|
|
||||||
#define ATTRIB_SYS 0x04 // System
|
|
||||||
#define ATTRIB_HID 0x02 // Hidden
|
|
||||||
#define ATTRIB_RO 0x01 // Read only
|
|
||||||
|
|
||||||
typedef enum {FT_DIRECTORY, FT_FILE} FILE_TYPE;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
u32 cluster;
|
|
||||||
u32 sector;
|
|
||||||
s32 offset;
|
|
||||||
} DIR_ENTRY_POSITION;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
u8 entryData[DIR_ENTRY_DATA_SIZE];
|
|
||||||
DIR_ENTRY_POSITION dataStart; // Points to the start of the LFN entries of a file, or the alias for no LFN
|
|
||||||
DIR_ENTRY_POSITION dataEnd; // Always points to the file/directory's alias entry
|
|
||||||
char filename[MAX_FILENAME_LENGTH];
|
|
||||||
} DIR_ENTRY;
|
|
||||||
|
|
||||||
// Directory entry offsets
|
|
||||||
enum DIR_ENTRY_offset {
|
|
||||||
DIR_ENTRY_name = 0x00,
|
|
||||||
DIR_ENTRY_extension = 0x08,
|
|
||||||
DIR_ENTRY_attributes = 0x0B,
|
|
||||||
DIR_ENTRY_reserved = 0x0C,
|
|
||||||
DIR_ENTRY_cTime_ms = 0x0D,
|
|
||||||
DIR_ENTRY_cTime = 0x0E,
|
|
||||||
DIR_ENTRY_cDate = 0x10,
|
|
||||||
DIR_ENTRY_aDate = 0x12,
|
|
||||||
DIR_ENTRY_clusterHigh = 0x14,
|
|
||||||
DIR_ENTRY_mTime = 0x16,
|
|
||||||
DIR_ENTRY_mDate = 0x18,
|
|
||||||
DIR_ENTRY_cluster = 0x1A,
|
|
||||||
DIR_ENTRY_fileSize = 0x1C
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
Returns true if the file specified by entry is a directory
|
|
||||||
*/
|
|
||||||
static inline bool _FAT_directory_isDirectory (DIR_ENTRY* entry) {
|
|
||||||
return ((entry->entryData[DIR_ENTRY_attributes] & ATTRIB_DIR) != 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool _FAT_directory_isWritable (DIR_ENTRY* entry) {
|
|
||||||
return ((entry->entryData[DIR_ENTRY_attributes] & ATTRIB_RO) == 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool _FAT_directory_isDot (DIR_ENTRY* entry) {
|
|
||||||
return ((entry->filename[0] == '.') && ((entry->filename[1] == '\0') ||
|
|
||||||
((entry->filename[1] == '.') && entry->filename[2] == '\0')));
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Reads the first directory entry from the directory starting at dirCluster
|
|
||||||
Places result in entry
|
|
||||||
entry will be destroyed even if no directory entry is found
|
|
||||||
Returns true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool _FAT_directory_getFirstEntry (PARTITION* partition, DIR_ENTRY* entry, u32 dirCluster);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Reads the next directory entry after the one already pointed to by entry
|
|
||||||
Places result in entry
|
|
||||||
entry will be destroyed even if no directory entry is found
|
|
||||||
Returns true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool _FAT_directory_getNextEntry (PARTITION* partition, DIR_ENTRY* entry);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Gets the directory entry corrsponding to the supplied path
|
|
||||||
entry will be destroyed even if no directory entry is found
|
|
||||||
pathEnd specifies the end of the path string, for cutting strings short if needed
|
|
||||||
specify NULL to use the full length of path
|
|
||||||
pathEnd is only a suggestion, and the path string will be searched up until the next PATH_SEPARATOR
|
|
||||||
after pathEND.
|
|
||||||
Returns true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool _FAT_directory_entryFromPath (PARTITION* partition, DIR_ENTRY* entry, const char* path, const char* pathEnd);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Changes the current directory to the one specified by path
|
|
||||||
Returns true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool _FAT_directory_chdir (PARTITION* partition, const char* path);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Removes the directory entry specified by entry
|
|
||||||
Assumes that entry is valid
|
|
||||||
Returns true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool _FAT_directory_removeEntry (PARTITION* partition, DIR_ENTRY* entry);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Add a directory entry to the directory specified by dirCluster
|
|
||||||
The fileData, dataStart and dataEnd elements of the DIR_ENTRY struct are
|
|
||||||
updated with the new directory entry position and alias.
|
|
||||||
Returns true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool _FAT_directory_addEntry (PARTITION* partition, DIR_ENTRY* entry, u32 dirCluster);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Get the start cluster of a file from it's entry data
|
|
||||||
*/
|
|
||||||
u32 _FAT_directory_entryGetCluster (const u8* entryData);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Fill in the file name and entry data of DIR_ENTRY* entry.
|
|
||||||
Assumes that the entry's dataStart and dataEnd are correct
|
|
||||||
Returns true on success, false on failure
|
|
||||||
*/
|
|
||||||
bool _FAT_directory_entryFromPosition (PARTITION* partition, DIR_ENTRY* entry);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Fill in a stat struct based on a file entry
|
|
||||||
*/
|
|
||||||
void _FAT_directory_entryStat (PARTITION* partition, DIR_ENTRY* entry, struct stat *st);
|
|
||||||
|
|
||||||
#endif // _DIRECTORY_H
|
|
@ -1,126 +0,0 @@
|
|||||||
/*
|
|
||||||
disc.h
|
|
||||||
Interface to the low level disc functions. Used by the higher level
|
|
||||||
file system code.
|
|
||||||
|
|
||||||
Copyright (c) 2006 Michael "Chishm" Chisholm
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
3. The name of the author may not be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
2006-07-11 - Chishm
|
|
||||||
* Original release
|
|
||||||
|
|
||||||
*/
|
|
||||||
#ifndef _DISC_H
|
|
||||||
#define _DISC_H
|
|
||||||
|
|
||||||
#include "../common.h"
|
|
||||||
#include "disc_io.h"
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search for a block based device in the GBA slot.
|
|
||||||
Return a pointer to a usable interface if one is found,
|
|
||||||
NULL if not.
|
|
||||||
*/
|
|
||||||
extern const IO_INTERFACE* _FAT_disc_gbaSlotFindInterface (void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search for a block based device in the DS slot.
|
|
||||||
Return a pointer to a usable interface if one is found,
|
|
||||||
NULL if not.
|
|
||||||
*/
|
|
||||||
#ifdef NDS
|
|
||||||
extern const IO_INTERFACE* _FAT_disc_dsSlotFindInterface (void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/*
|
|
||||||
Search for a block based device in the both slots.
|
|
||||||
Return a pointer to a usable interface if one is found,
|
|
||||||
NULL if not.
|
|
||||||
*/
|
|
||||||
extern const IO_INTERFACE* _FAT_disc_findInterface (void);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Check if a disc is inserted
|
|
||||||
Return true if a disc is inserted and ready, false otherwise
|
|
||||||
*/
|
|
||||||
static inline bool _FAT_disc_isInserted (const IO_INTERFACE* disc) {
|
|
||||||
return disc->fn_isInserted();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Read numSectors sectors from a disc, starting at sector.
|
|
||||||
numSectors is between 1 and 256
|
|
||||||
sector is from 0 to 2^28
|
|
||||||
buffer is a pointer to the memory to fill
|
|
||||||
*/
|
|
||||||
static inline bool _FAT_disc_readSectors (const IO_INTERFACE* disc, u32 sector, u32 numSectors, void* buffer) {
|
|
||||||
return disc->fn_readSectors (sector, numSectors, buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Write numSectors sectors to a disc, starting at sector.
|
|
||||||
numSectors is between 1 and 256
|
|
||||||
sector is from 0 to 2^28
|
|
||||||
buffer is a pointer to the memory to read from
|
|
||||||
*/
|
|
||||||
static inline bool _FAT_disc_writeSectors (const IO_INTERFACE* disc, u32 sector, u32 numSectors, const void* buffer) {
|
|
||||||
return disc->fn_writeSectors (sector, numSectors, buffer);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Reset the card back to a ready state
|
|
||||||
*/
|
|
||||||
static inline bool _FAT_disc_clearStatus (const IO_INTERFACE* disc) {
|
|
||||||
return disc->fn_clearStatus();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Initialise the disc to a state ready for data reading or writing
|
|
||||||
*/
|
|
||||||
static inline bool _FAT_disc_startup (const IO_INTERFACE* disc) {
|
|
||||||
return disc->fn_startup();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Put the disc in a state ready for power down.
|
|
||||||
Complete any pending writes and disable the disc if necessary
|
|
||||||
*/
|
|
||||||
static inline bool _FAT_disc_shutdown (const IO_INTERFACE* disc) {
|
|
||||||
return disc->fn_shutdown();
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Return a 32 bit value unique to each type of interface
|
|
||||||
*/
|
|
||||||
static inline u32 _FAT_disc_hostType (const IO_INTERFACE* disc) {
|
|
||||||
return disc->ioType;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
Return a 32 bit value that specifies the capabilities of the disc
|
|
||||||
*/
|
|
||||||
static inline u32 _FAT_disc_features (const IO_INTERFACE* disc) {
|
|
||||||
return disc->features;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // _DISC_H
|
|
@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
disc_io.h
|
|
||||||
Interface template for low level disc functions.
|
|
||||||
|
|
||||||
Copyright (c) 2006 Michael "Chishm" Chisholm
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
3. The name of the author may not be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
2006-07-11 - Chishm
|
|
||||||
* Original release
|
|
||||||
|
|
||||||
2006-07-16 - Chishm
|
|
||||||
* Renamed _CF_USE_DMA to _IO_USE_DMA
|
|
||||||
* Renamed _CF_ALLOW_UNALIGNED to _IO_ALLOW_UNALIGNED
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef _DISC_IO_H
|
|
||||||
#define _DISC_IO_H
|
|
||||||
|
|
||||||
#include "../common.h"
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------
|
|
||||||
// Customisable features
|
|
||||||
|
|
||||||
// Use DMA to read the card, remove this line to use normal reads/writes
|
|
||||||
// #define _IO_USE_DMA
|
|
||||||
|
|
||||||
// Allow buffers not alligned to 16 bits when reading files.
|
|
||||||
// Note that this will slow down access speed, so only use if you have to.
|
|
||||||
// It is also incompatible with DMA
|
|
||||||
#define _IO_ALLOW_UNALIGNED
|
|
||||||
|
|
||||||
#if defined _IO_USE_DMA && defined _IO_ALLOW_UNALIGNED
|
|
||||||
#error You can't use both DMA and unaligned memory
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define FEATURE_MEDIUM_CANREAD 0x00000001
|
|
||||||
#define FEATURE_MEDIUM_CANWRITE 0x00000002
|
|
||||||
#define FEATURE_SLOT_GBA 0x00000010
|
|
||||||
#define FEATURE_SLOT_NDS 0x00000020
|
|
||||||
|
|
||||||
typedef bool (* FN_MEDIUM_STARTUP)(void) ;
|
|
||||||
typedef bool (* FN_MEDIUM_ISINSERTED)(void) ;
|
|
||||||
typedef bool (* FN_MEDIUM_READSECTORS)(u32 sector, u32 numSectors, void* buffer) ;
|
|
||||||
typedef bool (* FN_MEDIUM_WRITESECTORS)(u32 sector, u32 numSectors, const void* buffer) ;
|
|
||||||
typedef bool (* FN_MEDIUM_CLEARSTATUS)(void) ;
|
|
||||||
typedef bool (* FN_MEDIUM_SHUTDOWN)(void) ;
|
|
||||||
|
|
||||||
struct IO_INTERFACE_STRUCT {
|
|
||||||
unsigned long ioType ;
|
|
||||||
unsigned long features ;
|
|
||||||
FN_MEDIUM_STARTUP fn_startup ;
|
|
||||||
FN_MEDIUM_ISINSERTED fn_isInserted ;
|
|
||||||
FN_MEDIUM_READSECTORS fn_readSectors ;
|
|
||||||
FN_MEDIUM_WRITESECTORS fn_writeSectors ;
|
|
||||||
FN_MEDIUM_CLEARSTATUS fn_clearStatus ;
|
|
||||||
FN_MEDIUM_SHUTDOWN fn_shutdown ;
|
|
||||||
} ;
|
|
||||||
|
|
||||||
typedef struct IO_INTERFACE_STRUCT IO_INTERFACE ;
|
|
||||||
|
|
||||||
#endif // define _DISC_IO_H
|
|
@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
io_dldi.h
|
|
||||||
|
|
||||||
Reserved space for post-compilation adding of an extra driver
|
|
||||||
|
|
||||||
Copyright (c) 2006 Michael "Chishm" Chisholm
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
3. The name of the author may not be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
2006-12-22 - Chishm
|
|
||||||
* Original release
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef IO_DLDI_H
|
|
||||||
#define IO_DLDI_H
|
|
||||||
|
|
||||||
// 'DLDD'
|
|
||||||
#define DEVICE_TYPE_DLDD 0x49444C44
|
|
||||||
|
|
||||||
#include "disc_io.h"
|
|
||||||
|
|
||||||
// export interface
|
|
||||||
extern const IO_INTERFACE _io_dldi ;
|
|
||||||
|
|
||||||
#endif // define IO_DLDI_H
|
|
@ -1,80 +0,0 @@
|
|||||||
/*
|
|
||||||
fatdir.h
|
|
||||||
|
|
||||||
Functions used by the newlib disc stubs to interface with
|
|
||||||
this library
|
|
||||||
|
|
||||||
Copyright (c) 2006 Michael "Chishm" Chisholm
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
3. The name of the author may not be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
2006-08-13 - Chishm
|
|
||||||
* Moved all externally visible directory related functions to fatdir
|
|
||||||
* Added _FAT_mkdir_r
|
|
||||||
|
|
||||||
2006-08-14 - Chishm
|
|
||||||
* Added directory iterator functions
|
|
||||||
|
|
||||||
2007-01-10 - Chishm
|
|
||||||
* Updated directory iterator functions for DevkitPro r20
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _FATDIR_H
|
|
||||||
#define _FATDIR_H
|
|
||||||
|
|
||||||
#include <sys/reent.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
#include <sys/iosupport.h>
|
|
||||||
#include "common.h"
|
|
||||||
#include "directory.h"
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
PARTITION* partition;
|
|
||||||
DIR_ENTRY currentEntry;
|
|
||||||
u32 startCluster;
|
|
||||||
bool inUse;
|
|
||||||
bool validEntry;
|
|
||||||
} DIR_STATE_STRUCT;
|
|
||||||
|
|
||||||
extern int _FAT_stat_r (struct _reent *r, const char *path, struct stat *st);
|
|
||||||
|
|
||||||
extern int _FAT_link_r (struct _reent *r, const char *existing, const char *newLink);
|
|
||||||
|
|
||||||
extern int _FAT_unlink_r (struct _reent *r, const char *name);
|
|
||||||
|
|
||||||
extern int _FAT_chdir_r (struct _reent *r, const char *name);
|
|
||||||
|
|
||||||
extern int _FAT_rename_r (struct _reent *r, const char *oldName, const char *newName);
|
|
||||||
|
|
||||||
extern int _FAT_mkdir_r (struct _reent *r, const char *path, int mode);
|
|
||||||
|
|
||||||
/*
|
|
||||||
Directory iterator functions
|
|
||||||
*/
|
|
||||||
extern DIR_ITER* _FAT_diropen_r(struct _reent *r, DIR_ITER *dirState, const char *path);
|
|
||||||
extern int _FAT_dirreset_r (struct _reent *r, DIR_ITER *dirState);
|
|
||||||
extern int _FAT_dirnext_r (struct _reent *r, DIR_ITER *dirState, char *filename, struct stat *filestat);
|
|
||||||
extern int _FAT_dirclose_r (struct _reent *r, DIR_ITER *dirState);
|
|
||||||
|
|
||||||
|
|
||||||
#endif // _FATDIR_H
|
|
@ -1,18 +0,0 @@
|
|||||||
#ifndef _FATDIR_EX_H_
|
|
||||||
#define _FATDIR_EX_H_
|
|
||||||
|
|
||||||
#include "fatdir.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int dirnextl (DIR_ITER *dirState, char *filename, char *longFilename, struct stat *filestat);
|
|
||||||
int renamex( const char *oldName, const char *newName );
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif//_FATDIR_EX_H_
|
|
@ -1,88 +0,0 @@
|
|||||||
/*
|
|
||||||
fatfile.h
|
|
||||||
|
|
||||||
Functions used by the newlib disc stubs to interface with
|
|
||||||
this library
|
|
||||||
|
|
||||||
Copyright (c) 2006 Michael "Chishm" Chisholm
|
|
||||||
|
|
||||||
Redistribution and use in source and binary forms, with or without modification,
|
|
||||||
are permitted provided that the following conditions are met:
|
|
||||||
|
|
||||||
1. Redistributions of source code must retain the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer.
|
|
||||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
|
||||||
this list of conditions and the following disclaimer in the documentation and/or
|
|
||||||
other materials provided with the distribution.
|
|
||||||
3. The name of the author may not be used to endorse or promote products derived
|
|
||||||
from this software without specific prior written permission.
|
|
||||||
|
|
||||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED
|
|
||||||
WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
|
|
||||||
AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE
|
|
||||||
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
||||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
||||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
|
|
||||||
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
|
|
||||||
2006-07-11 - Chishm
|
|
||||||
* Original release
|
|
||||||
|
|
||||||
2006-07-17 - Chishm
|
|
||||||
* Made all path inputs const char*
|
|
||||||
* Added _FAT_rename_r
|
|
||||||
|
|
||||||
2006-07-24 - Chishm
|
|
||||||
* Removed padding workaround from FILE_STRUCT
|
|
||||||
|
|
||||||
2006-08-13 - Chishm
|
|
||||||
* Moved all externally visible directory related functions to fatdir
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#ifndef _FATFILE_H
|
|
||||||
#define _FATFILE_H
|
|
||||||
|
|
||||||
#include <sys/reent.h>
|
|
||||||
#include <sys/stat.h>
|
|
||||||
|
|
||||||
#include "common.h"
|
|
||||||
#include "partition.h"
|
|
||||||
#include "directory.h"
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
u32 cluster;
|
|
||||||
u32 sector;
|
|
||||||
s32 byte;
|
|
||||||
} FILE_POSITION;
|
|
||||||
|
|
||||||
typedef struct {
|
|
||||||
u32 filesize;
|
|
||||||
u32 startCluster;
|
|
||||||
u32 currentPosition;
|
|
||||||
FILE_POSITION rwPosition;
|
|
||||||
FILE_POSITION appendPosition;
|
|
||||||
bool read;
|
|
||||||
bool write;
|
|
||||||
bool append;
|
|
||||||
bool inUse;
|
|
||||||
PARTITION* partition;
|
|
||||||
DIR_ENTRY_POSITION dirEntryStart; // Points to the start of the LFN entries of a file, or the alias for no LFN
|
|
||||||
DIR_ENTRY_POSITION dirEntryEnd; // Always points to the file's alias entry
|
|
||||||
} FILE_STRUCT;
|
|
||||||
|
|
||||||
extern int _FAT_open_r (struct _reent *r, void *fileStruct, const char *path, int flags, int mode);
|
|
||||||
|
|
||||||
extern int _FAT_close_r (struct _reent *r, int fd);
|
|
||||||
|
|
||||||
extern int _FAT_write_r (struct _reent *r,int fd, const char *ptr, int len);
|
|
||||||
|
|
||||||
extern int _FAT_read_r (struct _reent *r, int fd, char *ptr, int len);
|
|
||||||
|
|
||||||
extern int _FAT_seek_r (struct _reent *r, int fd,int pos, int dir);
|
|
||||||
|
|
||||||
extern int _FAT_fstat_r (struct _reent *r, int fd, struct stat *st);
|
|
||||||
|
|
||||||
#endif // _FATFILE_H
|
|
@ -1,19 +0,0 @@
|
|||||||
#ifndef _FATFILE_EX_H_
|
|
||||||
#define _FATFILE_EX_H_
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include "fatfile.h"
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
int freadex( void * buffer, int _size, int _n, FILE * f );
|
|
||||||
int fwritex( const void * buffer, int _size, int _n, FILE * f );
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#endif//_FATFILE_EX_H_
|
|
@ -1,7 +1,7 @@
|
|||||||
#include <nds.h>
|
#include <nds.h>
|
||||||
|
|
||||||
#include <fat.h>
|
#include <fat.h>
|
||||||
#include "fatdir_ex.h"
|
// #include "fatdir_ex.h"
|
||||||
#include <sys/iosupport.h>
|
#include <sys/iosupport.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -9,6 +9,9 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
#include <string>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
//#include "disc_io.h"
|
//#include "disc_io.h"
|
||||||
//#include "gba_nds_fat.h"
|
//#include "gba_nds_fat.h"
|
||||||
@ -81,7 +84,7 @@ int carttype = 0;
|
|||||||
|
|
||||||
extern int save_sel(int mod, char *name);
|
extern int save_sel(int mod, char *name);
|
||||||
|
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
void SetEWINRam(u8 page)
|
void SetEWINRam(u8 page)
|
||||||
{
|
{
|
||||||
@ -237,8 +240,7 @@ void SetM3Ram(u8 page)
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool _set_M3(int sw)
|
bool _set_M3(int sw) {
|
||||||
{
|
|
||||||
vu32 wait;
|
vu32 wait;
|
||||||
vu16 tmp;
|
vu16 tmp;
|
||||||
vu8 a;
|
vu8 a;
|
||||||
@ -487,7 +489,7 @@ int checkFlashID()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
char *Rudolph = "GBA ExpLoader by Rudolph (LocalCode v0.1)";
|
char const *Rudolph = "GBA ExpLoader by Rudolph (LocalCode v0.1)";
|
||||||
|
|
||||||
bool checkSRAM_cnf()
|
bool checkSRAM_cnf()
|
||||||
{
|
{
|
||||||
@ -1134,16 +1136,24 @@ static void _sort_file()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool nameEndsWith (const string& name, const string& extension) {
|
||||||
|
if (name.size() == 0) return false;
|
||||||
|
if (name.front() == '.') return false;
|
||||||
|
|
||||||
void FileListGBA()
|
const string ext = extension;
|
||||||
{
|
if (strcasecmp(name.c_str() + name.size() - ext.size(), ext.c_str()) == 0)return true;
|
||||||
DIR_ITER *dir;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: Fix Filelist to use new code based on port of NDS_Backup_Tool
|
||||||
|
void FileListGBA() {
|
||||||
|
DIR *dir;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char fname[256];
|
// char fname[256];
|
||||||
char lfnname[512];
|
// char lfnname[512];
|
||||||
|
|
||||||
u32 flen;
|
// u32 flen;
|
||||||
FILE *gbaFile;
|
FILE *gbaFile;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
// mkdir("/GBA_SAVE");
|
// mkdir("/GBA_SAVE");
|
||||||
@ -1152,13 +1162,41 @@ void FileListGBA()
|
|||||||
numFiles = 0;
|
numFiles = 0;
|
||||||
numGames = 0;
|
numGames = 0;
|
||||||
|
|
||||||
dir = diropen(curpath);
|
chdir (curpath);
|
||||||
|
dir = opendir(curpath);
|
||||||
if(dir == NULL) {
|
if(dir == NULL) {
|
||||||
strcpy(curpath, "/");
|
strcpy(curpath, "/");
|
||||||
dir = diropen(curpath);
|
dir = opendir(curpath);
|
||||||
}
|
}
|
||||||
|
|
||||||
while(dirnextl(dir, fname, lfnname, &st) == 0) {
|
const char* GBAEXT = ".GBA";
|
||||||
|
const char* BINEXT = ".BIN";
|
||||||
|
|
||||||
|
if (dir != NULL) {
|
||||||
|
while(true) {
|
||||||
|
dirent* pent = readdir(dir);
|
||||||
|
if(pent == NULL)break;
|
||||||
|
|
||||||
|
stat(pent->d_name, &st);
|
||||||
|
|
||||||
|
if (((string)pent->d_name).compare(".") != 0 && ((st.st_mode & S_IFMT) != S_IFDIR) && (nameEndsWith(pent->d_name, GBAEXT) || nameEndsWith(pent->d_name, BINEXT))) {
|
||||||
|
strcpy(fs[numFiles].filename, pent->d_name);
|
||||||
|
strcpy(fs[numFiles].Alias, pent->d_name);
|
||||||
|
fs[numFiles].type = st.st_mode;
|
||||||
|
FILE *file = fopen(pent->d_name, "rb");
|
||||||
|
if (file) {
|
||||||
|
fseek(file, 0, SEEK_END);
|
||||||
|
fs[numFiles].filesize = ftell(file);
|
||||||
|
fclose(file);
|
||||||
|
}
|
||||||
|
numFiles++;
|
||||||
|
if (numFiles > 199 )break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
closedir(dir);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*while(dirnextl(dir, fname, lfnname, &st) == 0) {
|
||||||
flen = strlen(fname);
|
flen = strlen(fname);
|
||||||
if(lfnname[0] == 0)
|
if(lfnname[0] == 0)
|
||||||
strcpy(lfnname, fname);
|
strcpy(lfnname, fname);
|
||||||
@ -1175,9 +1213,10 @@ void FileListGBA()
|
|||||||
numFiles++;
|
numFiles++;
|
||||||
if(numFiles > 199) break;
|
if(numFiles > 199) break;
|
||||||
}
|
}
|
||||||
}
|
}*/
|
||||||
|
|
||||||
dirclose(dir);
|
// dirclose(dir);
|
||||||
|
// closedir(dir);
|
||||||
|
|
||||||
for(i = 0; i < numFiles; i++) {
|
for(i = 0; i < numFiles; i++) {
|
||||||
sortfile[i] = i;
|
sortfile[i] = i;
|
||||||
@ -1188,8 +1227,7 @@ void FileListGBA()
|
|||||||
sprintf(tbuf, "%s%s", curpath, fs[i].filename);
|
sprintf(tbuf, "%s%s", curpath, fs[i].filename);
|
||||||
gbaFile = fopen(tbuf, "rb");
|
gbaFile = fopen(tbuf, "rb");
|
||||||
memset(tbuf, 0, 256);
|
memset(tbuf, 0, 256);
|
||||||
if(gbaFile != NULL)
|
if(gbaFile != NULL)fread(tbuf, 1, 256, gbaFile);
|
||||||
fread(tbuf, 1, 256, gbaFile);
|
|
||||||
tbuf[0xB0] = 0;
|
tbuf[0xB0] = 0;
|
||||||
strcpy(fs[i].gamecode, tbuf + 0xAC);
|
strcpy(fs[i].gamecode, tbuf + 0xAC);
|
||||||
tbuf[0xAC] = 0;
|
tbuf[0xAC] = 0;
|
||||||
|
@ -22,12 +22,14 @@
|
|||||||
#include "nds.h"
|
#include "nds.h"
|
||||||
#include <nds/arm9/console.h> //basic print funcionality
|
#include <nds/arm9/console.h> //basic print funcionality
|
||||||
//#include <nds/registers_alt.h>
|
//#include <nds/registers_alt.h>
|
||||||
#include <nds/jtypes.h>
|
// #include <nds/jtypes.h>
|
||||||
|
#include <nds/ndstypes.h>
|
||||||
|
|
||||||
#include <fat.h>
|
#include <fat.h>
|
||||||
#include <sys/dir.h>
|
#include <sys/dir.h>
|
||||||
#include <sys/iosupport.h>
|
#include <sys/iosupport.h>
|
||||||
#include "fatfile.h"
|
// #include "fatfile.h"
|
||||||
|
#include <nds/arm9/dldi.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -59,6 +61,7 @@ extern uint16* SubScreen;
|
|||||||
//uint16* MainScreen = VRAM_A;
|
//uint16* MainScreen = VRAM_A;
|
||||||
//uint16* SubScreen = (uint16*)BG_TILE_RAM_SUB(1);
|
//uint16* SubScreen = (uint16*)BG_TILE_RAM_SUB(1);
|
||||||
|
|
||||||
|
#define BG_256_COLOR (BIT(7))
|
||||||
|
|
||||||
int numFiles = 0;
|
int numFiles = 0;
|
||||||
int numGames = 0;
|
int numGames = 0;
|
||||||
@ -226,12 +229,11 @@ void gbaMode()
|
|||||||
videoSetMode(0);
|
videoSetMode(0);
|
||||||
videoSetModeSub(0);
|
videoSetModeSub(0);
|
||||||
|
|
||||||
vramSetMainBanks(VRAM_A_MAIN_BG, VRAM_B_MAIN_BG, VRAM_C_MAIN_BG, VRAM_D_MAIN_BG);
|
// vramSetMainBanks(VRAM_A_MAIN_BG, VRAM_B_MAIN_BG, VRAM_C_MAIN_BG, VRAM_D_MAIN_BG);
|
||||||
|
vramSetPrimaryBanks(VRAM_A_MAIN_BG, VRAM_B_MAIN_BG, VRAM_C_MAIN_BG, VRAM_D_MAIN_BG);
|
||||||
// vramSetMainBanks(VRAM_A_MAIN_BG, VRAM_B_MAIN_BG, VRAM_C_ARM7, VRAM_D_ARM7);
|
// vramSetMainBanks(VRAM_A_MAIN_BG, VRAM_B_MAIN_BG, VRAM_C_ARM7, VRAM_D_ARM7);
|
||||||
|
|
||||||
if(PersonalData->_user_data.gbaScreen)
|
if(PersonalData->gbaScreen) { lcdMainOnBottom(); } else { lcdMainOnTop(); }
|
||||||
lcdMainOnBottom();
|
|
||||||
else lcdMainOnTop();
|
|
||||||
|
|
||||||
// FIFOSend(IPC_CMD_GBAMODE);
|
// FIFOSend(IPC_CMD_GBAMODE);
|
||||||
|
|
||||||
@ -674,9 +676,11 @@ void _gba_sel_dsp(int no, int yc, int mod)
|
|||||||
DrawBox_SUB(SubScreen, 8, 82, 247, 109, 5, 0);
|
DrawBox_SUB(SubScreen, 8, 82, 247, 109, 5, 0);
|
||||||
|
|
||||||
|
|
||||||
if(GBAmode == 0)
|
if(GBAmode == 0) {
|
||||||
ColorSwap_SUB(SubScreen, 0, 0, 255, 192, 3, 5);
|
ColorSwap_SUB(SubScreen, 0, 0, 255, 192, 3, 5);
|
||||||
else ColorSwap_SUB(SubScreen, 0, 0, 255, 192, 5, 3);
|
} else {
|
||||||
|
ColorSwap_SUB(SubScreen, 0, 0, 255, 192, 5, 3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
checkSRAM(filename);
|
checkSRAM(filename);
|
||||||
@ -1042,7 +1046,7 @@ inp_key();
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
extern u32 _io_dldi;
|
// extern u32 _io_dldi;
|
||||||
|
|
||||||
extern void setLang(void);
|
extern void setLang(void);
|
||||||
|
|
||||||
@ -1053,8 +1057,9 @@ void mainloop(void)
|
|||||||
|
|
||||||
FILE *r4dt;
|
FILE *r4dt;
|
||||||
__handle *handle;
|
__handle *handle;
|
||||||
FILE_STRUCT *file;
|
// FILE_STRUCT *file;
|
||||||
PARTITION *part;
|
FILE *file;
|
||||||
|
// PARTITION *part;
|
||||||
|
|
||||||
int cmd;
|
int cmd;
|
||||||
|
|
||||||
@ -1147,22 +1152,24 @@ REG_EXMEMCNT = (reg & 0xFFE0) | (1 << 4) | (1 << 2) | 1;
|
|||||||
r4tf = 3;
|
r4tf = 3;
|
||||||
} else {
|
} else {
|
||||||
r4tf = 0;
|
r4tf = 0;
|
||||||
if(_io_dldi == 0x46543452) { // R4TF
|
if(io_dldi_data->ioInterface.ioType == 0x46543452) { // R4TF
|
||||||
if((*(vu32*)0x027FFE18) == 0x00000000) {
|
if((*(vu32*)0x027FFE18) == 0x00000000) {
|
||||||
r4dt = fopen("/_DS_MENU.DAT", "rb");
|
r4dt = fopen("/_DS_MENU.DAT", "rb");
|
||||||
if(r4dt != NULL) {
|
if(r4dt != NULL) {
|
||||||
handle = (__handle *)r4dt->_file;
|
handle = (__handle *)r4dt->_file;
|
||||||
file = (FILE_STRUCT *)handle->fileStruct;
|
// file = (FILE_STRUCT *)handle->fileStruct;
|
||||||
part = file->partition;
|
file = (FILE*)handle->fileStruct;
|
||||||
(*(vu32*)0x027FFE18) = (part->rootDirStart + file->dirEntryStart.sector) * 512 + file->dirEntryStart.offset * 32;
|
// part = file->partition;
|
||||||
|
// (*(vu32*)0x027FFE18) = (part->rootDirStart + file->dirEntryStart.sector) * 512 + file->dirEntryStart.offset * 32;
|
||||||
fclose(r4dt);
|
fclose(r4dt);
|
||||||
r4tf = 1;
|
r4tf = 1;
|
||||||
}
|
}
|
||||||
} else r4tf = 1;
|
} else {
|
||||||
|
r4tf = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_io_dldi == 0x534D4C44) // DLMS
|
if(io_dldi_data->ioInterface.ioType == 0x534D4C44)r4tf = 2; // DLMS
|
||||||
r4tf = 2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/******************************
|
/******************************
|
||||||
@ -1263,8 +1270,8 @@ int main(void) {
|
|||||||
|
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
vramSetMainBanks(VRAM_A_LCD , VRAM_B_LCD , VRAM_C_SUB_BG, VRAM_D_MAIN_BG );
|
vramSetPrimaryBanks(VRAM_A_LCD , VRAM_B_LCD , VRAM_C_SUB_BG, VRAM_D_MAIN_BG );
|
||||||
powerON(POWER_ALL);
|
powerOn(POWER_ALL);
|
||||||
|
|
||||||
irqInit();
|
irqInit();
|
||||||
irqSet(IRQ_VBLANK, Vblank);
|
irqSet(IRQ_VBLANK, Vblank);
|
||||||
@ -1273,7 +1280,8 @@ int main(void) {
|
|||||||
|
|
||||||
videoSetMode(MODE_FB0 | DISPLAY_BG2_ACTIVE);
|
videoSetMode(MODE_FB0 | DISPLAY_BG2_ACTIVE);
|
||||||
videoSetModeSub(MODE_0_2D | DISPLAY_BG0_ACTIVE );
|
videoSetModeSub(MODE_0_2D | DISPLAY_BG0_ACTIVE );
|
||||||
SUB_BG0_CR = BG_256_COLOR | BG_MAP_BASE(0) | BG_TILE_BASE(1);
|
// SUB_BG0_CR = BG_256_COLOR | BG_MAP_BASE(0) | BG_TILE_BASE(1);
|
||||||
|
REG_BG0CNT_SUB = BG_256_COLOR | BG_MAP_BASE(0) | BG_TILE_BASE(1);
|
||||||
uint16* map1 = (uint16*)BG_MAP_RAM_SUB(0);
|
uint16* map1 = (uint16*)BG_MAP_RAM_SUB(0);
|
||||||
for(i=0;i<(256*192/8/8);i++) map1[i]=i;
|
for(i=0;i<(256*192/8/8);i++) map1[i]=i;
|
||||||
lcdMainOnTop();
|
lcdMainOnTop();
|
||||||
|
@ -24,14 +24,6 @@ THE SOFTWARE.
|
|||||||
|
|
||||||
---------------------------------------------------------------------------------*/
|
---------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <nds.h>
|
#include <nds.h>
|
||||||
#include <nds/registers_alt.h>
|
#include <nds/registers_alt.h>
|
||||||
|
|
||||||
@ -64,11 +56,11 @@ void resetARM9Memory()
|
|||||||
// trun on vram banks for clear
|
// trun on vram banks for clear
|
||||||
VRAM_CR = 0x80808080;
|
VRAM_CR = 0x80808080;
|
||||||
(*(vu32*)0x027FFE04) = 0; // temporary variable
|
(*(vu32*)0x027FFE04) = 0; // temporary variable
|
||||||
PALETTE[0] = 0xFFFF;
|
BG_PALETTE[0] = 0xFFFF;
|
||||||
dmaFillWords((void*)0x027FFE04, PALETTE+1, (2*1024)-2);
|
dmaFillWords(0, BG_PALETTE+1, (2*1024)-2);
|
||||||
dmaFillWords((void*)0x027FFE04, OAM, 2*1024);
|
dmaFillWords(0, OAM, 2*1024);
|
||||||
dmaFillWords((void*)0x027FFE04, (void*)0x04000000, 0x56); //clear main display registers
|
dmaFillWords(0, (void*)0x04000000, 0x56); //clear main display registers
|
||||||
dmaFillWords((void*)0x027FFE04, (void*)0x04001000, 0x56); //clear sub display registers
|
dmaFillWords(0, (void*)0x04001000, 0x56); //clear sub display registers
|
||||||
|
|
||||||
// clear video registers
|
// clear video registers
|
||||||
REG_DISPCNT = 0;
|
REG_DISPCNT = 0;
|
||||||
@ -90,3 +82,4 @@ void resetARM9Memory()
|
|||||||
REG_IE = 0;
|
REG_IE = 0;
|
||||||
REG_IF = ~0;
|
REG_IF = ~0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ char *cmd_m[4];
|
|||||||
char *t_msg[22];
|
char *t_msg[22];
|
||||||
char *savmsg[6];
|
char *savmsg[6];
|
||||||
|
|
||||||
static char *errmsg_j[14] = {
|
static const char *errmsg_j[14] = {
|
||||||
"FATの初期化に失敗しました", // 0
|
"FATの初期化に失敗しました", // 0
|
||||||
"適切なDLDIパッチを行ってください", // 1
|
"適切なDLDIパッチを行ってください", // 1
|
||||||
"Slot2拡張パックがセットされていません", // 2
|
"Slot2拡張パックがセットされていません", // 2
|
||||||
@ -29,7 +29,7 @@ static char *errmsg_j[14] = {
|
|||||||
"(A):確認" // 13
|
"(A):確認" // 13
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *errmsg_e[14] = {
|
static const char *errmsg_e[14] = {
|
||||||
"FAT initialization failed ", // 0
|
"FAT initialization failed ", // 0
|
||||||
"Please apply the appropriate DLDI Patch.", // 1
|
"Please apply the appropriate DLDI Patch.", // 1
|
||||||
"Slot2 expansion pack not found ", // 2
|
"Slot2 expansion pack not found ", // 2
|
||||||
@ -47,7 +47,7 @@ static char *errmsg_e[14] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static char *cnfmsg_j[11] = {
|
static const char *cnfmsg_j[11] = {
|
||||||
"(A):実行, (B):取消", // 0
|
"(A):実行, (B):取消", // 0
|
||||||
"現在のSRAMにあるSAVEデータを", // 1
|
"現在のSRAMにあるSAVEデータを", // 1
|
||||||
"SAVファイルに保存します", // 2
|
"SAVファイルに保存します", // 2
|
||||||
@ -61,7 +61,7 @@ static char *cnfmsg_j[11] = {
|
|||||||
"設定(SRAMは失われます)していいですか?" // 10
|
"設定(SRAMは失われます)していいですか?" // 10
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *cnfmsg_e[11] = {
|
static const char *cnfmsg_e[11] = {
|
||||||
"(A):Run, (B):Cancel", // 0
|
"(A):Run, (B):Cancel", // 0
|
||||||
"Write save data in SRAM", // 1
|
"Write save data in SRAM", // 1
|
||||||
" to SAV file", // 2
|
" to SAV file", // 2
|
||||||
@ -76,14 +76,14 @@ static char *cnfmsg_e[11] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static char *barmsg_j[4] = {
|
static const char *barmsg_j[4] = {
|
||||||
" NORを消去中... ", // 0
|
" NORを消去中... ", // 0
|
||||||
" NORにコピー中... ", // 1
|
" NORにコピー中... ", // 1
|
||||||
" RAMにロード中... ", // 2
|
" RAMにロード中... ", // 2
|
||||||
" ROMを解析中... " // 3
|
" ROMを解析中... " // 3
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *barmsg_e[4] = {
|
static const char *barmsg_e[4] = {
|
||||||
" Erasing NOR... ", // 0
|
" Erasing NOR... ", // 0
|
||||||
" Copying to NOR... ", // 1
|
" Copying to NOR... ", // 1
|
||||||
" Loading to RAM... ", // 2
|
" Loading to RAM... ", // 2
|
||||||
@ -91,14 +91,14 @@ static char *barmsg_e[4] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static char *cmd_m_j[4] = {
|
static const char *cmd_m_j[4] = {
|
||||||
" 振動レベル : (小) ",
|
" 振動レベル : (小) ",
|
||||||
" 振動レベル : (中) ",
|
" 振動レベル : (中) ",
|
||||||
" 振動レベル : (大) ",
|
" 振動レベル : (大) ",
|
||||||
" ブラウザ用拡張メモリ "
|
" ブラウザ用拡張メモリ "
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *cmd_m_e[4] = {
|
static const char *cmd_m_e[4] = {
|
||||||
" Rumble level: Weak ",
|
" Rumble level: Weak ",
|
||||||
" Rumble level: Medium ",
|
" Rumble level: Medium ",
|
||||||
" Rumble level: Strong ",
|
" Rumble level: Strong ",
|
||||||
@ -106,7 +106,7 @@ static char *cmd_m_e[4] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static char *t_msg_j[22] = {
|
static const char *t_msg_j[22] = {
|
||||||
"選択中のゲーム",
|
"選択中のゲーム",
|
||||||
" PSRAMモード",
|
" PSRAMモード",
|
||||||
"(A):RAMにゲームをロードして実行 ",
|
"(A):RAMにゲームをロードして実行 ",
|
||||||
@ -131,7 +131,7 @@ static char *t_msg_j[22] = {
|
|||||||
" SDRAMモード",
|
" SDRAMモード",
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *t_msg_e[22] = {
|
static const char *t_msg_e[22] = {
|
||||||
"Selected game",
|
"Selected game",
|
||||||
" PSRAM Mode ",
|
" PSRAM Mode ",
|
||||||
"(A):Run (B):Write SRAM to SAV file",
|
"(A):Run (B):Write SRAM to SAV file",
|
||||||
@ -157,7 +157,7 @@ static char *t_msg_e[22] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
static char *savmsg_j[6] = {
|
static const char *savmsg_j[6] = {
|
||||||
" SRAMにSAVEデータをロード", // 0
|
" SRAMにSAVEデータをロード", // 0
|
||||||
"(A):選択したファイルをロード", // 1
|
"(A):選択したファイルをロード", // 1
|
||||||
"(B):ロードしない(新規ゲーム)", // 2
|
"(B):ロードしない(新規ゲーム)", // 2
|
||||||
@ -166,7 +166,7 @@ static char *savmsg_j[6] = {
|
|||||||
"(B):保存しない(取消)", // 5
|
"(B):保存しない(取消)", // 5
|
||||||
};
|
};
|
||||||
|
|
||||||
static char *savmsg_e[6] = {
|
static const char *savmsg_e[6] = {
|
||||||
" Load SRAM from SAV file ", // 0
|
" Load SRAM from SAV file ", // 0
|
||||||
"(A):Load from selected file", // 1
|
"(A):Load from selected file", // 1
|
||||||
"(B):No load(New Game)", // 2
|
"(B):No load(New Game)", // 2
|
||||||
@ -176,46 +176,31 @@ static char *savmsg_e[6] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void setLangMsg()
|
void setLangMsg() {
|
||||||
{
|
|
||||||
u32 UserLang = 0;
|
u32 UserLang = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
UserLang = PersonalData->_user_data.language;
|
UserLang = PersonalData->language;
|
||||||
|
|
||||||
if(UserLang != 0) {
|
if(UserLang != 0) {
|
||||||
for(i = 0; i < 14; i++)
|
for(i = 0; i < 14; i++)errmsg[i] = (char*)errmsg_e[i];
|
||||||
errmsg[i] = errmsg_e[i];
|
for(i = 0; i < 11; i++)cnfmsg[i] = (char*)cnfmsg_e[i];
|
||||||
for(i = 0; i < 11; i++)
|
for(i = 0; i < 4; i++)barmsg[i] = (char*)barmsg_e[i];
|
||||||
cnfmsg[i] = cnfmsg_e[i];
|
for(i = 0; i < 4; i++)cmd_m[i] = (char*)cmd_m_e[i];
|
||||||
for(i = 0; i < 4; i++)
|
for(i = 0; i < 22; i++)t_msg[i] = (char*)t_msg_e[i];
|
||||||
barmsg[i] = barmsg_e[i];
|
for(i = 0; i < 6; i++)savmsg[i] = (char*)savmsg_e[i];
|
||||||
for(i = 0; i < 4; i++)
|
|
||||||
cmd_m[i] = cmd_m_e[i];
|
|
||||||
for(i = 0; i < 22; i++)
|
|
||||||
t_msg[i] = t_msg_e[i];
|
|
||||||
for(i = 0; i < 6; i++)
|
|
||||||
savmsg[i] = savmsg_e[i];
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i = 0; i < 14; i++)
|
for(i = 0; i < 14; i++)errmsg[i] = (char*)errmsg_j[i];
|
||||||
errmsg[i] = errmsg_j[i];
|
for(i = 0; i < 11; i++)cnfmsg[i] = (char*)cnfmsg_j[i];
|
||||||
for(i = 0; i < 11; i++)
|
for(i = 0; i < 4; i++)barmsg[i] = (char*)barmsg_j[i];
|
||||||
cnfmsg[i] = cnfmsg_j[i];
|
for(i = 0; i < 4; i++)cmd_m[i] = (char*)cmd_m_j[i];
|
||||||
for(i = 0; i < 4; i++)
|
for(i = 0; i < 22; i++)t_msg[i] = (char*)t_msg_j[i];
|
||||||
barmsg[i] = barmsg_j[i];
|
for(i = 0; i < 6; i++)savmsg[i] = (char*)savmsg_j[i];
|
||||||
for(i = 0; i < 4; i++)
|
|
||||||
cmd_m[i] = cmd_m_j[i];
|
|
||||||
for(i = 0; i < 22; i++)
|
|
||||||
t_msg[i] = t_msg_j[i];
|
|
||||||
for(i = 0; i < 6; i++)
|
|
||||||
savmsg[i] = savmsg_j[i];
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool _isKanji1(u8 ch)
|
static bool _isKanji1(u8 ch) {
|
||||||
{
|
|
||||||
if((ch >= 0x81) && (ch <= 0x9F))
|
if((ch >= 0x81) && (ch <= 0x9F))
|
||||||
return true;
|
return true;
|
||||||
if((ch >= 0xE0) && (ch <= 0xEF))
|
if((ch >= 0xE0) && (ch <= 0xEF))
|
||||||
@ -225,8 +210,7 @@ static bool _isKanji1(u8 ch)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
char *jstrncpy(char *s1, char *s2, size_t n)
|
char *jstrncpy(char *s1, char *s2, size_t n) {
|
||||||
{
|
|
||||||
bool kan;
|
bool kan;
|
||||||
|
|
||||||
char *p = s1;
|
char *p = s1;
|
||||||
|
@ -6,14 +6,14 @@
|
|||||||
|
|
||||||
#include <nds.h>
|
#include <nds.h>
|
||||||
//#include <nds/registers_alt.h> // devkitPror20
|
//#include <nds/registers_alt.h> // devkitPror20
|
||||||
|
#include <nds/arm9/dldi.h>
|
||||||
|
|
||||||
#include <fat.h>
|
#include <fat.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
// extern u32 _io_dldi;
|
||||||
extern u32 _io_dldi;
|
|
||||||
|
|
||||||
static char *menu_nam;
|
static char *menu_nam;
|
||||||
static char name[32];
|
static char name[32];
|
||||||
@ -23,10 +23,10 @@ bool ret_menu_chk()
|
|||||||
FILE *fp;
|
FILE *fp;
|
||||||
char buf[5];
|
char buf[5];
|
||||||
|
|
||||||
buf[0] = _io_dldi & 0xFF;
|
buf[0] = io_dldi_data->ioInterface.ioType & 0xFF;
|
||||||
buf[1] = (_io_dldi >> 8) & 0xFF;
|
buf[1] = (io_dldi_data->ioInterface.ioType >> 8) & 0xFF;
|
||||||
buf[2] = (_io_dldi >> 16) & 0xFF;
|
buf[2] = (io_dldi_data->ioInterface.ioType >> 16) & 0xFF;
|
||||||
buf[3] = (_io_dldi >> 24) & 0xFF;
|
buf[3] = (io_dldi_data->ioInterface.ioType >> 24) & 0xFF;
|
||||||
buf[4] = 0;
|
buf[4] = 0;
|
||||||
sprintf(name, "/SoftReset.%s", buf);
|
sprintf(name, "/SoftReset.%s", buf);
|
||||||
fp = fopen(name, "rb");
|
fp = fopen(name, "rb");
|
||||||
@ -38,7 +38,7 @@ bool ret_menu_chk()
|
|||||||
|
|
||||||
menu_nam = NULL;
|
menu_nam = NULL;
|
||||||
|
|
||||||
if(_io_dldi == 0x53444353) { // SCDS
|
if(io_dldi_data->ioInterface.ioType == 0x53444353) { // SCDS
|
||||||
menu_nam = "/MSFORSC.NDS";
|
menu_nam = "/MSFORSC.NDS";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -46,23 +46,23 @@ bool ret_menu_chk()
|
|||||||
// menu_nam = "/system/akmenu2_fat.nds";
|
// menu_nam = "/system/akmenu2_fat.nds";
|
||||||
// }
|
// }
|
||||||
|
|
||||||
if(_io_dldi == 0x4F49524E) { // N-Card
|
if(io_dldi_data->ioInterface.ioType == 0x4F49524E) { // N-Card
|
||||||
menu_nam = "/udisk.nds"; // Žb’è
|
menu_nam = "/udisk.nds"; // Žb’è
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_io_dldi == 0x4E475052) { // AK.R.P.G NAND
|
if(io_dldi_data->ioInterface.ioType == 0x4E475052) { // AK.R.P.G NAND
|
||||||
menu_nam = "/akmenu4.nds";
|
menu_nam = "/akmenu4.nds";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_io_dldi == 0x53475052) { // AK.R.P.G SD
|
if(io_dldi_data->ioInterface.ioType == 0x53475052) { // AK.R.P.G SD
|
||||||
menu_nam = "/akmenu4.nds";
|
menu_nam = "/akmenu4.nds";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_io_dldi == 0x44533958) { // X9 SD
|
if(io_dldi_data->ioInterface.ioType == 0x44533958) { // X9 SD
|
||||||
menu_nam = "/loader.nds";
|
menu_nam = "/loader.nds";
|
||||||
}
|
}
|
||||||
|
|
||||||
if(_io_dldi == 0x4F495454) { // DSTT
|
if(io_dldi_data->ioInterface.ioType == 0x4F495454) { // DSTT
|
||||||
menu_nam = "/TTMENU.DAT";
|
menu_nam = "/TTMENU.DAT";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,8 +9,9 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#include <sys/dir.h>
|
#include <sys/dir.h>
|
||||||
|
#include <dirent.h>
|
||||||
|
|
||||||
#include "fatdir_ex.h"
|
// #include "fatdir_ex.h"
|
||||||
#include "message.h"
|
#include "message.h"
|
||||||
#include "GBA_ini.h"
|
#include "GBA_ini.h"
|
||||||
|
|
||||||
@ -24,8 +25,7 @@ char savnam[6][26];
|
|||||||
char savext[6][4];
|
char savext[6][4];
|
||||||
bool savexist[6];
|
bool savexist[6];
|
||||||
|
|
||||||
void _save_list(char *name)
|
void _save_list(char *name) {
|
||||||
{
|
|
||||||
struct tm *ptime;
|
struct tm *ptime;
|
||||||
struct stat st;
|
struct stat st;
|
||||||
char fname[512];
|
char fname[512];
|
||||||
|
Before Width: | Height: | Size: 630 B After Width: | Height: | Size: 630 B |
30
make_bin
30
make_bin
@ -1,30 +0,0 @@
|
|||||||
pause
|
|
||||||
@echo off
|
|
||||||
call setenv_devkitPro.bat
|
|
||||||
|
|
||||||
:loop
|
|
||||||
cls
|
|
||||||
goto skipclean
|
|
||||||
del /Q arm7\build\*.*
|
|
||||||
del /Q arm9\build\*.*
|
|
||||||
:skipclean
|
|
||||||
|
|
||||||
del arm7\_BOOT_MP.arm7.elf
|
|
||||||
del arm9\_BOOT_MP.arm9.elf
|
|
||||||
del _BOOT_MP.bin
|
|
||||||
rem del "C:\APP\_Network\anhttpd\public\wifitemp.nds"
|
|
||||||
make
|
|
||||||
if exist _BOOT_MP.nds goto run
|
|
||||||
pause
|
|
||||||
goto loop
|
|
||||||
|
|
||||||
:run
|
|
||||||
rem ren _BOOT_MP.nds _BOOT_MP.bin
|
|
||||||
del _BOOT_MP.arm7
|
|
||||||
del _BOOT_MP.arm9
|
|
||||||
rem del _BOOT_MP.ds.gba
|
|
||||||
rem call cfcopy.bat
|
|
||||||
rem call wificopy.bat
|
|
||||||
pause
|
|
||||||
goto loop
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
|||||||
rem with libnds-20060719
|
|
||||||
set PATH=d:\devkitPro\msys\bin;d:\devkitPro\devkitARM\bin;%PATH%
|
|
||||||
set DEVKITARM=/d/devkitPro/devkitARM
|
|
||||||
set DEVKITPRO=/d/devkitPro
|
|
||||||
set LIBNDS=/d/devkitPro/libnds
|
|
Loading…
Reference in New Issue
Block a user