diff --git a/.gitignore b/.gitignore index 10d2b55..91c7142 100644 --- a/.gitignore +++ b/.gitignore @@ -3,6 +3,7 @@ *.ko *.obj *.elf +*.map # Precompiled Headers *.gch diff --git a/Makefile b/Makefile index ab86727..ccefb56 100644 --- a/Makefile +++ b/Makefile @@ -1,204 +1,73 @@ -#--------------------------------------------------------------------------------- -.SUFFIXES: -#--------------------------------------------------------------------------------- ifeq ($(strip $(DEVKITARM)),) $(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") endif -include $(DEVKITARM)/ds_rules +include $(DEVKITARM)/base_tools +include Makefile.common -#--------------------------------------------------------------------------------- -# TARGET is the name of the output -# BUILD is the directory where object files & intermediate files will be placed -# SOURCES is a list of directories containing source code -# DATA is a list of directories containing data files -# INCLUDES is a list of directories containing header files -# SPECS is the directory containing the important build and link files -#--------------------------------------------------------------------------------- -export TARGET := GodMode9 -ifeq ($(SAFEMODE),1) - export TARGET := SafeMode9 -endif -BUILD := build -SOURCES := source source/common source/filesys source/crypto source/fatfs source/nand source/virtual source/game source/gamecart source/quicklz source/qrcodegen source/system source/utils -DATA := data -INCLUDES := common source source/common source/font source/filesys source/crypto source/fatfs source/nand source/virtual source/game source/gamecart source/quicklz source/qrcodegen source/system source/utils +# Base definitions +export VERSION := $(shell git describe --tags --abbrev=8) +export DBUILTS := $(shell date +'%Y%m%d%H%M%S') +export DBUILTL := $(shell date +'%Y-%m-%d %H:%M:%S') -#--------------------------------------------------------------------------------- -# options for code generation -#--------------------------------------------------------------------------------- -ARCH := -DARM9 -march=armv5te -mthumb -mthumb-interwork +export OUTDIR := output +export RELDIR := release -ASFLAGS := $(ARCH) -g -x assembler-with-cpp $(INCLUDE) -CFLAGS := $(ARCH) -g -Wall -Wextra -Wpedantic -Wcast-align -Wno-main -O2 \ - -mtune=arm946e-s -fomit-frame-pointer -ffast-math -std=gnu11 \ - $(INCLUDE) -Wno-unused-function +# Definitions for initial RAM disk +VRAM_OUT := $(OUTDIR)/vram0.tar +VRAM_DIRS := data/ +VRAM_FLAGS := -VERSION := $(shell git describe --tags --abbrev=8) -DBUILTS := $(shell date +'%Y%m%d%H%M%S') -DBUILTL := $(shell date +'%Y-%m-%d %H:%M:%S') -CFLAGS += -DDBUILTS="\"$(DBUILTS)\"" -DDBUILTL="\"$(DBUILTL)\"" -DVERSION="\"$(VERSION)\"" +# Definitions for ARM binaries +export INCLUDE := -I"$(shell pwd)/common" -ifeq ($(FONT),ORIG) -CFLAGS += -DFONT_ORIGINAL -else ifeq ($(FONT),6X10) -CFLAGS += -DFONT_6X10 -else ifeq ($(FONT),ACORN) -CFLAGS += -DFONT_ACORN -else ifeq ($(FONT),GB) -CFLAGS += -DFONT_GB -else -CFLAGS += -DFONT_6X10 -endif +export ASFLAGS := -g -x assembler-with-cpp $(INCLUDE) +export CFLAGS := -DDBUILTS="\"$(DBUILTS)\"" -DDBUILTL="\"$(DBUILTL)\"" -DVERSION="\"$(VERSION)\""\ + -g -O2 -Wall -Wextra -Wpedantic -Wcast-align -Wno-main \ + -fomit-frame-pointer -ffast-math -std=gnu11 \ + -Wno-unused-function $(INCLUDE) +export LDFLAGS := -Tlink.ld -nostartfiles -Wl,--gc-sections,-z,max-page-size=512 +ELF := arm9/arm9.elf mpcore/mpcore.elf -ifeq ($(SAFEMODE),1) - CFLAGS += -DSAFEMODE -endif +.PHONY: all firm clean +all: firm -ifeq ($(SALTMODE),1) - CFLAGS += -DSALTMODE -endif - -ifeq ($(SWITCH_SCREENS),1) - CFLAGS += -DSWITCH_SCREENS -endif - -ifeq ($(AUTORUN_SCRIPT),1) - CFLAGS += -DAUTORUN_SCRIPT -endif - -ifdef FIXED_BRIGHTNESS - CFLAGS += -DFIXED_BRIGHTNESS=$(FIXED_BRIGHTNESS) -endif - -CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions - -LDFLAGS = -T../link.ld -nostartfiles -g $(ARCH) -Wl,-Map,$(TARGET).map,-z,max-page-size=512 - -LIBS := - -#--------------------------------------------------------------------------------- -# list of directories containing libraries, this must be the top level containing -# include and lib -#--------------------------------------------------------------------------------- -LIBDIRS := - -#--------------------------------------------------------------------------------- -# no real need to edit anything past this point unless you need to add additional -# rules for different file extensions -#--------------------------------------------------------------------------------- -ifneq ($(BUILD),$(notdir $(CURDIR))) -#--------------------------------------------------------------------------------- - -export OUTPUT_D := $(CURDIR)/output -export OUTPUT := $(OUTPUT_D)/$(TARGET) -export RELEASE := $(CURDIR)/release - -export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \ - $(foreach dir,$(DATA),$(CURDIR)/$(dir)) - -export DEPSDIR := $(CURDIR)/$(BUILD) - -CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c))) -CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp))) -SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s))) -BINFILES := - -#--------------------------------------------------------------------------------- -# use CXX for linking C++ projects, CC for standard C -#--------------------------------------------------------------------------------- -ifeq ($(strip $(CPPFILES)),) -#--------------------------------------------------------------------------------- - export LD := $(CC) -#--------------------------------------------------------------------------------- -else -#--------------------------------------------------------------------------------- - export LD := $(CXX) -#--------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------- -export HFILES := $(addsuffix .h,$(subst .,_,$(BINFILES))) - -export OFILES_BIN := $(addsuffix .o,$(BINFILES)) -export OFILES_SOURCES := $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) -export OFILES := $(OFILES_BIN) $(OFILES_SOURCES) - -export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \ - $(foreach dir,$(LIBDIRS),-I$(dir)/include) \ - -I$(CURDIR)/$(BUILD) - -export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) - -export FTCOMMON := -A 0x18000000 -D $(OUTPUT).elf $(OUTPUT_D)/screeninit.elf $(CURDIR)/resources/vram0.tar -C NDMA XDMA memcpy - -.PHONY: common clean all firm binary screeninit release - -#--------------------------------------------------------------------------------- -all: firm ntrboot - -common: - @[ -d $(OUTPUT_D) ] || mkdir -p $(OUTPUT_D) - @[ -d $(BUILD) ] || mkdir -p $(BUILD) - -screeninit: - @$(MAKE) --no-print-directory dir_out=$(OUTPUT_D) -C screeninit - -binary: common - @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile - -firm: binary screeninit - firmtool build $(OUTPUT).firm $(FTCOMMON) -S nand-retail -g - firmtool build $(OUTPUT)_dev.firm $(FTCOMMON) -S nand-dev -g - -ntrboot: binary screeninit - firmtool build $(OUTPUT)_ntr.firm $(FTCOMMON) -S spi-retail -g - firmtool build $(OUTPUT)_ntr_dev.firm $(FTCOMMON) -S spi-dev -g +clean: + @set -e; for elf in $(ELF); do \ + $(MAKE) --no-print-directory -C $$(dirname $$elf) clean; \ + done + @rm -rf $(OUTDIR) $(RELDIR) $(FIRM) $(FIRMD) $(VRAM_OUT) release: - @-rm -fr $(BUILD) $(OUTPUT_D) $(RELEASE) + @$(MAKE) --no-print-directory clean @$(MAKE) --no-print-directory firm - @$(MAKE) --no-print-directory ntrboot - @[ -d $(RELEASE) ] || mkdir -p $(RELEASE) - @[ -d $(RELEASE)/ntrboot ] || mkdir -p $(RELEASE)/ntrboot - @cp $(OUTPUT).firm $(RELEASE) - @cp $(CURDIR)/README.md $(RELEASE) - @cp $(CURDIR)/HelloScript.gm9 $(RELEASE) - @cp $(OUTPUT)_ntr.firm $(RELEASE)/ntrboot - @cp $(OUTPUT)_ntr.firm.sha $(RELEASE)/ntrboot - @cp $(OUTPUT)_ntr_dev.firm $(RELEASE)/ntrboot - @cp $(OUTPUT)_ntr_dev.firm.sha $(RELEASE)/ntrboot - @cp -R $(CURDIR)/resources/gm9 $(RELEASE)/gm9 - @-7z a $(RELEASE)/$(TARGET)-$(VERSION)-$(DBUILTS).zip $(RELEASE)/* + @$(MAKE) --no-print-directory firm NTRBOOT=1 -#--------------------------------------------------------------------------------- -clean: - @echo clean ... - @-$(MAKE) clean --no-print-directory -C screeninit - @rm -fr $(BUILD) $(OUTPUT_D) $(RELEASE) + @mkdir -p $(RELDIR) + @cp $(FIRM) $(RELDIR) + @[ -d $(RELDIR) ] || mkdir -p $(RELDIR) + @[ -d $(RELDIR)/ntrboot ] || mkdir -p $(RELDIR)/ntrboot + @cp $(OUTDIR)/$(FLAVOR)_ntr.firm $(RELDIR)/ntrboot/ + @cp $(OUTDIR)/$(FLAVOR)_ntr_dev.firm $(RELDIR)/ntrboot/ + @cp $(OUTDIR)/$(FLAVOR).firm $(RELDIR)/ + @cp $(OUTDIR)/$(FLAVOR)_dev.firm $(RELDIR)/ + @cp $(ELF) $(RELDIR) + @cp $(CURDIR)/README.md $(RELDIR) + @cp $(CURDIR)/HelloScript.gm9 $(RELDIR) + @cp -R $(CURDIR)/resources/gm9 $(RELDIR)/gm9 + @-7z a $(RELDIR)/$(FLAVOR)-$(VERSION)-$(DBUILTS).zip $(RELDIR)/* +$(VRAM_OUT): + @mkdir -p "$(@D)" + @echo "Creating $@" + @tar $(VRAM_FLAGS) cf $@ $(VRAM_DIRS) -#--------------------------------------------------------------------------------- -else +%.elf: + @echo "Building $@" + @$(MAKE) --no-print-directory -C $(call dirname,"$@") -DEPENDS := $(OFILES:.o=.d) - -#--------------------------------------------------------------------------------- -# main targets -#--------------------------------------------------------------------------------- -$(OUTPUT).bin : $(OUTPUT).elf -$(OFILES_SOURCES) : $(HFILES) -$(OUTPUT).elf : $(OFILES) - -#--------------------------------------------------------------------------------- -%.bin: %.elf - @$(OBJCOPY) --set-section-flags .bss=alloc,load,contents -O binary $< $@ - @echo built ... $(notdir $@) - - --include $(DEPENDS) - - -#--------------------------------------------------------------------------------------- -endif -#--------------------------------------------------------------------------------------- +firm: $(ELF) $(VRAM_OUT) + @mkdir -p $(call dirname,"$(FIRM)") $(call dirname,"$(FIRMD)") + firmtool build $(FIRM) $(FTFLAGS) -g -A 0x18000000 -D $^ -C NDMA XDMA memcpy + firmtool build $(FIRMD) $(FTDFLAGS) -g -A 0x18000000 -D $^ -C NDMA XDMA memcpy diff --git a/Makefile.common b/Makefile.common new file mode 100644 index 0000000..246b6d1 --- /dev/null +++ b/Makefile.common @@ -0,0 +1,53 @@ + +dirname = $(shell dirname $(1)) + +rwildcard = $(foreach d, $(wildcard $1*), \ + $(filter $(subst *, %, $2), $d) \ + $(call rwildcard, $d/, $2)) + +FLAVOR := GodMode9 + +ifeq ($(FONT),ORIG) +CFLAGS += -DFONT_ORIGINAL +else ifeq ($(FONT),6X10) +CFLAGS += -DFONT_6X10 +else ifeq ($(FONT),ACORN) +CFLAGS += -DFONT_ACORN +else ifeq ($(FONT),GB) +CFLAGS += -DFONT_GB +else +CFLAGS += -DFONT_6X10 +endif + +ifeq ($(SAFEMODE),1) + CFLAGS += -DSAFEMODE + FLAVOR := SafeMode9 +endif + +ifeq ($(SALTMODE),1) + CFLAGS += -DSALTMODE +endif + +ifeq ($(SWITCH_SCREENS),1) + CFLAGS += -DSWITCH_SCREENS +endif + +ifeq ($(AUTORUN_SCRIPT),1) + CFLAGS += -DAUTORUN_SCRIPT +endif + +ifdef FIXED_BRIGHTNESS + CFLAGS += -DFIXED_BRIGHTNESS=$(FIXED_BRIGHTNESS) +endif + +ifdef NTRBOOT + FTFLAGS = -S spi-retail + FTDFLAGS = -S spi-dev + FIRM = $(OUTDIR)/$(FLAVOR)_ntr.firm + FIRMD = $(OUTDIR)/$(FLAVOR)_ntr_dev.firm +else + FTFLAGS = -S nand-retail + FTDFLAGS = -S nand-dev + FIRM = $(OUTDIR)/$(FLAVOR).firm + FIRMD = $(OUTDIR)/$(FLAVOR)_dev.firm +endif diff --git a/arm9/Makefile b/arm9/Makefile new file mode 100644 index 0000000..dea7378 --- /dev/null +++ b/arm9/Makefile @@ -0,0 +1,37 @@ +TARGET := $(shell basename $(CURDIR)) + +SOURCE := source +BUILD := build + +SUBARCH := -DARM9 -mcpu=arm946e-s -mtune=arm946e-s -mfloat-abi=soft -mthumb +INCDIRS := source source/common source/filesys source/crypto source/fatfs source/nand source/virtual source/game source/gamecart source/quicklz source/qrcodegen source/system source/utils +INCLUDE := $(foreach dir,$(INCDIRS),-I"$(shell pwd)/$(dir)") + +ASFLAGS += $(SUBARCH) $(INCLUDE) +CFLAGS += $(SUBARCH) $(INCLUDE) +LDFLAGS += $(SUBARCH) -Wl,-Map,$(TARGET).map + +include ../Makefile.common + +OBJECTS = $(patsubst $(SOURCE)/%.s, $(BUILD)/%.o, \ + $(patsubst $(SOURCE)/%.c, $(BUILD)/%.o, \ + $(call rwildcard, $(SOURCE), *.s *.c))) + +.PHONY: all +all: $(TARGET).elf + +.PHONY: clean +clean: + @rm -rf $(BUILD) $(TARGET).elf $(TARGET).map + +$(TARGET).elf: $(OBJECTS) + @mkdir -p "$(@D)" + $(CC) $(LDFLAGS) $^ -o $@ + +$(BUILD)/%.o: $(SOURCE)/%.c + @mkdir -p "$(@D)" + $(CC) -c $(CFLAGS) -o $@ $< + +$(BUILD)/%.o: $(SOURCE)/%.s + @mkdir -p "$(@D)" + $(CC) -c $(ASFLAGS) -o $@ $< diff --git a/link.ld b/arm9/link.ld similarity index 100% rename from link.ld rename to arm9/link.ld diff --git a/source/common/common.h b/arm9/source/common/common.h similarity index 100% rename from source/common/common.h rename to arm9/source/common/common.h diff --git a/source/common/font.h b/arm9/source/common/font.h similarity index 100% rename from source/common/font.h rename to arm9/source/common/font.h diff --git a/source/common/font_6x10.h b/arm9/source/common/font_6x10.h similarity index 100% rename from source/common/font_6x10.h rename to arm9/source/common/font_6x10.h diff --git a/source/common/font_acorn_8x8.h b/arm9/source/common/font_acorn_8x8.h similarity index 100% rename from source/common/font_acorn_8x8.h rename to arm9/source/common/font_acorn_8x8.h diff --git a/source/common/font_gb_7x6.h b/arm9/source/common/font_gb_7x6.h similarity index 100% rename from source/common/font_gb_7x6.h rename to arm9/source/common/font_gb_7x6.h diff --git a/source/common/font_orig.h b/arm9/source/common/font_orig.h similarity index 100% rename from source/common/font_orig.h rename to arm9/source/common/font_orig.h diff --git a/source/common/hid.c b/arm9/source/common/hid.c similarity index 100% rename from source/common/hid.c rename to arm9/source/common/hid.c diff --git a/source/common/hid.h b/arm9/source/common/hid.h similarity index 100% rename from source/common/hid.h rename to arm9/source/common/hid.h diff --git a/source/common/power.c b/arm9/source/common/power.c similarity index 100% rename from source/common/power.c rename to arm9/source/common/power.c diff --git a/source/common/power.h b/arm9/source/common/power.h similarity index 100% rename from source/common/power.h rename to arm9/source/common/power.h diff --git a/source/common/rtc.c b/arm9/source/common/rtc.c similarity index 100% rename from source/common/rtc.c rename to arm9/source/common/rtc.c diff --git a/source/common/rtc.h b/arm9/source/common/rtc.h similarity index 100% rename from source/common/rtc.h rename to arm9/source/common/rtc.h diff --git a/source/common/sighax.h b/arm9/source/common/sighax.h similarity index 100% rename from source/common/sighax.h rename to arm9/source/common/sighax.h diff --git a/source/common/timer.c b/arm9/source/common/timer.c similarity index 100% rename from source/common/timer.c rename to arm9/source/common/timer.c diff --git a/source/common/timer.h b/arm9/source/common/timer.h similarity index 100% rename from source/common/timer.h rename to arm9/source/common/timer.h diff --git a/source/common/ui.c b/arm9/source/common/ui.c similarity index 100% rename from source/common/ui.c rename to arm9/source/common/ui.c diff --git a/source/common/ui.h b/arm9/source/common/ui.h similarity index 100% rename from source/common/ui.h rename to arm9/source/common/ui.h diff --git a/source/common/unittype.h b/arm9/source/common/unittype.h similarity index 100% rename from source/common/unittype.h rename to arm9/source/common/unittype.h diff --git a/source/crypto/aes.c b/arm9/source/crypto/aes.c similarity index 100% rename from source/crypto/aes.c rename to arm9/source/crypto/aes.c diff --git a/source/crypto/aes.h b/arm9/source/crypto/aes.h similarity index 100% rename from source/crypto/aes.h rename to arm9/source/crypto/aes.h diff --git a/source/crypto/keydb.c b/arm9/source/crypto/keydb.c similarity index 100% rename from source/crypto/keydb.c rename to arm9/source/crypto/keydb.c diff --git a/source/crypto/keydb.h b/arm9/source/crypto/keydb.h similarity index 100% rename from source/crypto/keydb.h rename to arm9/source/crypto/keydb.h diff --git a/source/crypto/sha.c b/arm9/source/crypto/sha.c similarity index 100% rename from source/crypto/sha.c rename to arm9/source/crypto/sha.c diff --git a/source/crypto/sha.h b/arm9/source/crypto/sha.h similarity index 100% rename from source/crypto/sha.h rename to arm9/source/crypto/sha.h diff --git a/source/fatfs/00history.txt b/arm9/source/fatfs/00history.txt similarity index 100% rename from source/fatfs/00history.txt rename to arm9/source/fatfs/00history.txt diff --git a/source/fatfs/00readme.txt b/arm9/source/fatfs/00readme.txt similarity index 100% rename from source/fatfs/00readme.txt rename to arm9/source/fatfs/00readme.txt diff --git a/source/fatfs/diskio.c b/arm9/source/fatfs/diskio.c similarity index 100% rename from source/fatfs/diskio.c rename to arm9/source/fatfs/diskio.c diff --git a/source/fatfs/diskio.h b/arm9/source/fatfs/diskio.h similarity index 100% rename from source/fatfs/diskio.h rename to arm9/source/fatfs/diskio.h diff --git a/source/fatfs/ff.c b/arm9/source/fatfs/ff.c similarity index 100% rename from source/fatfs/ff.c rename to arm9/source/fatfs/ff.c diff --git a/source/fatfs/ff.h b/arm9/source/fatfs/ff.h similarity index 100% rename from source/fatfs/ff.h rename to arm9/source/fatfs/ff.h diff --git a/source/fatfs/ffconf.h b/arm9/source/fatfs/ffconf.h similarity index 100% rename from source/fatfs/ffconf.h rename to arm9/source/fatfs/ffconf.h diff --git a/source/fatfs/ffsystem.c b/arm9/source/fatfs/ffsystem.c similarity index 100% rename from source/fatfs/ffsystem.c rename to arm9/source/fatfs/ffsystem.c diff --git a/source/fatfs/ffunicode.c b/arm9/source/fatfs/ffunicode.c similarity index 100% rename from source/fatfs/ffunicode.c rename to arm9/source/fatfs/ffunicode.c diff --git a/source/fatfs/integer.h b/arm9/source/fatfs/integer.h similarity index 100% rename from source/fatfs/integer.h rename to arm9/source/fatfs/integer.h diff --git a/source/fatfs/ramdrive.c b/arm9/source/fatfs/ramdrive.c similarity index 100% rename from source/fatfs/ramdrive.c rename to arm9/source/fatfs/ramdrive.c diff --git a/source/fatfs/ramdrive.h b/arm9/source/fatfs/ramdrive.h similarity index 100% rename from source/fatfs/ramdrive.h rename to arm9/source/fatfs/ramdrive.h diff --git a/source/filesys/fatmbr.c b/arm9/source/filesys/fatmbr.c similarity index 100% rename from source/filesys/fatmbr.c rename to arm9/source/filesys/fatmbr.c diff --git a/source/filesys/fatmbr.h b/arm9/source/filesys/fatmbr.h similarity index 100% rename from source/filesys/fatmbr.h rename to arm9/source/filesys/fatmbr.h diff --git a/source/filesys/filetype.c b/arm9/source/filesys/filetype.c similarity index 100% rename from source/filesys/filetype.c rename to arm9/source/filesys/filetype.c diff --git a/source/filesys/filetype.h b/arm9/source/filesys/filetype.h similarity index 100% rename from source/filesys/filetype.h rename to arm9/source/filesys/filetype.h diff --git a/source/filesys/fs.h b/arm9/source/filesys/fs.h similarity index 100% rename from source/filesys/fs.h rename to arm9/source/filesys/fs.h diff --git a/source/filesys/fsdir.c b/arm9/source/filesys/fsdir.c similarity index 100% rename from source/filesys/fsdir.c rename to arm9/source/filesys/fsdir.c diff --git a/source/filesys/fsdir.h b/arm9/source/filesys/fsdir.h similarity index 100% rename from source/filesys/fsdir.h rename to arm9/source/filesys/fsdir.h diff --git a/source/filesys/fsdrive.c b/arm9/source/filesys/fsdrive.c similarity index 100% rename from source/filesys/fsdrive.c rename to arm9/source/filesys/fsdrive.c diff --git a/source/filesys/fsdrive.h b/arm9/source/filesys/fsdrive.h similarity index 100% rename from source/filesys/fsdrive.h rename to arm9/source/filesys/fsdrive.h diff --git a/source/filesys/fsgame.c b/arm9/source/filesys/fsgame.c similarity index 100% rename from source/filesys/fsgame.c rename to arm9/source/filesys/fsgame.c diff --git a/source/filesys/fsgame.h b/arm9/source/filesys/fsgame.h similarity index 100% rename from source/filesys/fsgame.h rename to arm9/source/filesys/fsgame.h diff --git a/source/filesys/fsinit.c b/arm9/source/filesys/fsinit.c similarity index 100% rename from source/filesys/fsinit.c rename to arm9/source/filesys/fsinit.c diff --git a/source/filesys/fsinit.h b/arm9/source/filesys/fsinit.h similarity index 100% rename from source/filesys/fsinit.h rename to arm9/source/filesys/fsinit.h diff --git a/source/filesys/fsperm.c b/arm9/source/filesys/fsperm.c similarity index 100% rename from source/filesys/fsperm.c rename to arm9/source/filesys/fsperm.c diff --git a/source/filesys/fsperm.h b/arm9/source/filesys/fsperm.h similarity index 100% rename from source/filesys/fsperm.h rename to arm9/source/filesys/fsperm.h diff --git a/source/filesys/fsutil.c b/arm9/source/filesys/fsutil.c similarity index 100% rename from source/filesys/fsutil.c rename to arm9/source/filesys/fsutil.c diff --git a/source/filesys/fsutil.h b/arm9/source/filesys/fsutil.h similarity index 100% rename from source/filesys/fsutil.h rename to arm9/source/filesys/fsutil.h diff --git a/source/filesys/image.c b/arm9/source/filesys/image.c similarity index 100% rename from source/filesys/image.c rename to arm9/source/filesys/image.c diff --git a/source/filesys/image.h b/arm9/source/filesys/image.h similarity index 100% rename from source/filesys/image.h rename to arm9/source/filesys/image.h diff --git a/source/filesys/sddata.c b/arm9/source/filesys/sddata.c similarity index 100% rename from source/filesys/sddata.c rename to arm9/source/filesys/sddata.c diff --git a/source/filesys/sddata.h b/arm9/source/filesys/sddata.h similarity index 100% rename from source/filesys/sddata.h rename to arm9/source/filesys/sddata.h diff --git a/source/filesys/vff.c b/arm9/source/filesys/vff.c similarity index 100% rename from source/filesys/vff.c rename to arm9/source/filesys/vff.c diff --git a/source/filesys/vff.h b/arm9/source/filesys/vff.h similarity index 100% rename from source/filesys/vff.h rename to arm9/source/filesys/vff.h diff --git a/source/game/3dsx.h b/arm9/source/game/3dsx.h similarity index 100% rename from source/game/3dsx.h rename to arm9/source/game/3dsx.h diff --git a/source/game/boss.c b/arm9/source/game/boss.c similarity index 100% rename from source/game/boss.c rename to arm9/source/game/boss.c diff --git a/source/game/boss.h b/arm9/source/game/boss.h similarity index 100% rename from source/game/boss.h rename to arm9/source/game/boss.h diff --git a/source/game/cia.c b/arm9/source/game/cia.c similarity index 100% rename from source/game/cia.c rename to arm9/source/game/cia.c diff --git a/source/game/cia.h b/arm9/source/game/cia.h similarity index 100% rename from source/game/cia.h rename to arm9/source/game/cia.h diff --git a/source/game/codelzss.c b/arm9/source/game/codelzss.c similarity index 100% rename from source/game/codelzss.c rename to arm9/source/game/codelzss.c diff --git a/source/game/codelzss.h b/arm9/source/game/codelzss.h similarity index 100% rename from source/game/codelzss.h rename to arm9/source/game/codelzss.h diff --git a/source/game/exefs.c b/arm9/source/game/exefs.c similarity index 100% rename from source/game/exefs.c rename to arm9/source/game/exefs.c diff --git a/source/game/exefs.h b/arm9/source/game/exefs.h similarity index 100% rename from source/game/exefs.h rename to arm9/source/game/exefs.h diff --git a/source/game/firm.c b/arm9/source/game/firm.c similarity index 100% rename from source/game/firm.c rename to arm9/source/game/firm.c diff --git a/source/game/firm.h b/arm9/source/game/firm.h similarity index 100% rename from source/game/firm.h rename to arm9/source/game/firm.h diff --git a/source/game/game.h b/arm9/source/game/game.h similarity index 100% rename from source/game/game.h rename to arm9/source/game/game.h diff --git a/source/game/gba.c b/arm9/source/game/gba.c similarity index 58% rename from source/game/gba.c rename to arm9/source/game/gba.c index 46aaa04..a1e18fb 100644 --- a/source/game/gba.c +++ b/arm9/source/game/gba.c @@ -49,3 +49,40 @@ u32 ValidateAgbHeader(AgbHeader* agb) { return 0; } + +/* u32 ValidateAgbVc(void* data, u32 len) { + const u8 magic[] = { GBAVC_MAGIC }; + + if (len < sizeof(AgbHeader) + sizeof(AgbVcFooter)) + return 1; + + AgbHeader* header = (AgbHeader*) data; + AgbVcFooter* footer = (AgbVcFooter*) (((u8*) data) + len - sizeof(AgbVcFooter)); + + if ((ValidateAgbHeader(header) != 0) || (memcmp(footer->magic, magic, sizeof(magic)) != 0) || + (footer->rom_size != len - sizeof(AgbVcFooter))) + return 1; + + return 0; +} */ + +// basically reverse ValidateAgbSaveHeader() +/* u32 BuildAgbSaveHeader(AgbSaveHeader* header, u64 title_id, u32 save_size) { + const u8 magic[] = { AGBSAVE_MAGIC }; + + memset(header, 0x00, sizeof(AgbSaveHeader)); + memset(header->reserved0, 0xFF, sizeof(header->reserved0)); + memset(header->reserved1, 0xFF, sizeof(header->reserved1)); + memset(header->reserved2, 0xFF, sizeof(header->reserved2)); + memset(header->reserved3, 0xFF, sizeof(header->reserved3)); + + memcpy(header->magic, magic, sizeof(magic)); + header->unknown0 = 0x01; + header->title_id = title_id; + header->save_start = 0x200; + header->save_size = save_size; + + sdmmc_get_cid(0, (u32*) (void*) &(header->sd_cid)); + + return 0; +} */ diff --git a/source/game/gba.h b/arm9/source/game/gba.h similarity index 100% rename from source/game/gba.h rename to arm9/source/game/gba.h diff --git a/source/game/ncch.c b/arm9/source/game/ncch.c similarity index 100% rename from source/game/ncch.c rename to arm9/source/game/ncch.c diff --git a/source/game/ncch.h b/arm9/source/game/ncch.h similarity index 100% rename from source/game/ncch.h rename to arm9/source/game/ncch.h diff --git a/source/game/ncchinfo.c b/arm9/source/game/ncchinfo.c similarity index 100% rename from source/game/ncchinfo.c rename to arm9/source/game/ncchinfo.c diff --git a/source/game/ncchinfo.h b/arm9/source/game/ncchinfo.h similarity index 100% rename from source/game/ncchinfo.h rename to arm9/source/game/ncchinfo.h diff --git a/source/game/ncsd.c b/arm9/source/game/ncsd.c similarity index 100% rename from source/game/ncsd.c rename to arm9/source/game/ncsd.c diff --git a/source/game/ncsd.h b/arm9/source/game/ncsd.h similarity index 100% rename from source/game/ncsd.h rename to arm9/source/game/ncsd.h diff --git a/source/game/nds.c b/arm9/source/game/nds.c similarity index 100% rename from source/game/nds.c rename to arm9/source/game/nds.c diff --git a/source/game/nds.h b/arm9/source/game/nds.h similarity index 100% rename from source/game/nds.h rename to arm9/source/game/nds.h diff --git a/source/game/region.c b/arm9/source/game/region.c similarity index 100% rename from source/game/region.c rename to arm9/source/game/region.c diff --git a/source/game/region.h b/arm9/source/game/region.h similarity index 100% rename from source/game/region.h rename to arm9/source/game/region.h diff --git a/source/game/romfs.c b/arm9/source/game/romfs.c similarity index 100% rename from source/game/romfs.c rename to arm9/source/game/romfs.c diff --git a/source/game/romfs.h b/arm9/source/game/romfs.h similarity index 100% rename from source/game/romfs.h rename to arm9/source/game/romfs.h diff --git a/source/game/smdh.c b/arm9/source/game/smdh.c similarity index 100% rename from source/game/smdh.c rename to arm9/source/game/smdh.c diff --git a/source/game/smdh.h b/arm9/source/game/smdh.h similarity index 100% rename from source/game/smdh.h rename to arm9/source/game/smdh.h diff --git a/source/game/ticket.c b/arm9/source/game/ticket.c similarity index 100% rename from source/game/ticket.c rename to arm9/source/game/ticket.c diff --git a/source/game/ticket.h b/arm9/source/game/ticket.h similarity index 100% rename from source/game/ticket.h rename to arm9/source/game/ticket.h diff --git a/source/game/tmd.c b/arm9/source/game/tmd.c similarity index 100% rename from source/game/tmd.c rename to arm9/source/game/tmd.c diff --git a/source/game/tmd.h b/arm9/source/game/tmd.h similarity index 100% rename from source/game/tmd.h rename to arm9/source/game/tmd.h diff --git a/source/gamecart/card_eeprom.c b/arm9/source/gamecart/card_eeprom.c similarity index 100% rename from source/gamecart/card_eeprom.c rename to arm9/source/gamecart/card_eeprom.c diff --git a/source/gamecart/card_eeprom.h b/arm9/source/gamecart/card_eeprom.h similarity index 100% rename from source/gamecart/card_eeprom.h rename to arm9/source/gamecart/card_eeprom.h diff --git a/source/gamecart/card_ntr.c b/arm9/source/gamecart/card_ntr.c similarity index 100% rename from source/gamecart/card_ntr.c rename to arm9/source/gamecart/card_ntr.c diff --git a/source/gamecart/card_ntr.h b/arm9/source/gamecart/card_ntr.h similarity index 100% rename from source/gamecart/card_ntr.h rename to arm9/source/gamecart/card_ntr.h diff --git a/source/gamecart/command_ak2i.c b/arm9/source/gamecart/command_ak2i.c similarity index 100% rename from source/gamecart/command_ak2i.c rename to arm9/source/gamecart/command_ak2i.c diff --git a/source/gamecart/command_ak2i.h b/arm9/source/gamecart/command_ak2i.h similarity index 100% rename from source/gamecart/command_ak2i.h rename to arm9/source/gamecart/command_ak2i.h diff --git a/source/gamecart/command_ctr.c b/arm9/source/gamecart/command_ctr.c similarity index 100% rename from source/gamecart/command_ctr.c rename to arm9/source/gamecart/command_ctr.c diff --git a/source/gamecart/command_ctr.h b/arm9/source/gamecart/command_ctr.h similarity index 100% rename from source/gamecart/command_ctr.h rename to arm9/source/gamecart/command_ctr.h diff --git a/source/gamecart/command_ntr.c b/arm9/source/gamecart/command_ntr.c similarity index 100% rename from source/gamecart/command_ntr.c rename to arm9/source/gamecart/command_ntr.c diff --git a/source/gamecart/command_ntr.h b/arm9/source/gamecart/command_ntr.h similarity index 100% rename from source/gamecart/command_ntr.h rename to arm9/source/gamecart/command_ntr.h diff --git a/source/gamecart/delay.h b/arm9/source/gamecart/delay.h similarity index 100% rename from source/gamecart/delay.h rename to arm9/source/gamecart/delay.h diff --git a/source/gamecart/gamecart.c b/arm9/source/gamecart/gamecart.c similarity index 100% rename from source/gamecart/gamecart.c rename to arm9/source/gamecart/gamecart.c diff --git a/source/gamecart/gamecart.h b/arm9/source/gamecart/gamecart.h similarity index 100% rename from source/gamecart/gamecart.h rename to arm9/source/gamecart/gamecart.h diff --git a/source/gamecart/iodelay.s b/arm9/source/gamecart/iodelay.s similarity index 100% rename from source/gamecart/iodelay.s rename to arm9/source/gamecart/iodelay.s diff --git a/source/gamecart/ndscard.h b/arm9/source/gamecart/ndscard.h similarity index 100% rename from source/gamecart/ndscard.h rename to arm9/source/gamecart/ndscard.h diff --git a/source/gamecart/protocol.c b/arm9/source/gamecart/protocol.c similarity index 100% rename from source/gamecart/protocol.c rename to arm9/source/gamecart/protocol.c diff --git a/source/gamecart/protocol.h b/arm9/source/gamecart/protocol.h similarity index 100% rename from source/gamecart/protocol.h rename to arm9/source/gamecart/protocol.h diff --git a/source/gamecart/protocol_ctr.c b/arm9/source/gamecart/protocol_ctr.c similarity index 100% rename from source/gamecart/protocol_ctr.c rename to arm9/source/gamecart/protocol_ctr.c diff --git a/source/gamecart/protocol_ctr.h b/arm9/source/gamecart/protocol_ctr.h similarity index 100% rename from source/gamecart/protocol_ctr.h rename to arm9/source/gamecart/protocol_ctr.h diff --git a/source/gamecart/protocol_ntr.c b/arm9/source/gamecart/protocol_ntr.c similarity index 100% rename from source/gamecart/protocol_ntr.c rename to arm9/source/gamecart/protocol_ntr.c diff --git a/source/gamecart/protocol_ntr.h b/arm9/source/gamecart/protocol_ntr.h similarity index 100% rename from source/gamecart/protocol_ntr.h rename to arm9/source/gamecart/protocol_ntr.h diff --git a/source/gamecart/secure_ntr.c b/arm9/source/gamecart/secure_ntr.c similarity index 100% rename from source/gamecart/secure_ntr.c rename to arm9/source/gamecart/secure_ntr.c diff --git a/source/gamecart/secure_ntr.h b/arm9/source/gamecart/secure_ntr.h similarity index 100% rename from source/gamecart/secure_ntr.h rename to arm9/source/gamecart/secure_ntr.h diff --git a/source/godmode.c b/arm9/source/godmode.c similarity index 100% rename from source/godmode.c rename to arm9/source/godmode.c diff --git a/source/godmode.h b/arm9/source/godmode.h similarity index 100% rename from source/godmode.h rename to arm9/source/godmode.h diff --git a/source/main.c b/arm9/source/main.c similarity index 100% rename from source/main.c rename to arm9/source/main.c diff --git a/source/nand/delay.h b/arm9/source/nand/delay.h similarity index 100% rename from source/nand/delay.h rename to arm9/source/nand/delay.h diff --git a/source/nand/delay.s b/arm9/source/nand/delay.s similarity index 100% rename from source/nand/delay.s rename to arm9/source/nand/delay.s diff --git a/source/nand/essentials.h b/arm9/source/nand/essentials.h similarity index 100% rename from source/nand/essentials.h rename to arm9/source/nand/essentials.h diff --git a/source/nand/nand.c b/arm9/source/nand/nand.c similarity index 100% rename from source/nand/nand.c rename to arm9/source/nand/nand.c diff --git a/source/nand/nand.h b/arm9/source/nand/nand.h similarity index 100% rename from source/nand/nand.h rename to arm9/source/nand/nand.h diff --git a/source/nand/sdmmc.c b/arm9/source/nand/sdmmc.c similarity index 100% rename from source/nand/sdmmc.c rename to arm9/source/nand/sdmmc.c diff --git a/source/nand/sdmmc.h b/arm9/source/nand/sdmmc.h similarity index 100% rename from source/nand/sdmmc.h rename to arm9/source/nand/sdmmc.h diff --git a/source/qrcodegen/qrcodegen.c b/arm9/source/qrcodegen/qrcodegen.c similarity index 100% rename from source/qrcodegen/qrcodegen.c rename to arm9/source/qrcodegen/qrcodegen.c diff --git a/source/qrcodegen/qrcodegen.h b/arm9/source/qrcodegen/qrcodegen.h similarity index 100% rename from source/qrcodegen/qrcodegen.h rename to arm9/source/qrcodegen/qrcodegen.h diff --git a/source/quicklz/qlzcomp.c b/arm9/source/quicklz/qlzcomp.c similarity index 100% rename from source/quicklz/qlzcomp.c rename to arm9/source/quicklz/qlzcomp.c diff --git a/source/quicklz/qlzcomp.h b/arm9/source/quicklz/qlzcomp.h similarity index 100% rename from source/quicklz/qlzcomp.h rename to arm9/source/quicklz/qlzcomp.h diff --git a/source/quicklz/quicklz.c b/arm9/source/quicklz/quicklz.c similarity index 100% rename from source/quicklz/quicklz.c rename to arm9/source/quicklz/quicklz.c diff --git a/source/quicklz/quicklz.h b/arm9/source/quicklz/quicklz.h similarity index 100% rename from source/quicklz/quicklz.h rename to arm9/source/quicklz/quicklz.h diff --git a/source/start.s b/arm9/source/start.s similarity index 100% rename from source/start.s rename to arm9/source/start.s diff --git a/source/system/bootfirm.h b/arm9/source/system/bootfirm.h similarity index 100% rename from source/system/bootfirm.h rename to arm9/source/system/bootfirm.h diff --git a/source/system/bootfirm.s b/arm9/source/system/bootfirm.s similarity index 100% rename from source/system/bootfirm.s rename to arm9/source/system/bootfirm.s diff --git a/source/system/cache.h b/arm9/source/system/cache.h similarity index 100% rename from source/system/cache.h rename to arm9/source/system/cache.h diff --git a/source/system/cache.s b/arm9/source/system/cache.s similarity index 100% rename from source/system/cache.s rename to arm9/source/system/cache.s diff --git a/source/system/i2c.c b/arm9/source/system/i2c.c similarity index 100% rename from source/system/i2c.c rename to arm9/source/system/i2c.c diff --git a/source/system/i2c.h b/arm9/source/system/i2c.h similarity index 100% rename from source/system/i2c.h rename to arm9/source/system/i2c.h diff --git a/source/system/itcm.h b/arm9/source/system/itcm.h similarity index 100% rename from source/system/itcm.h rename to arm9/source/system/itcm.h diff --git a/source/system/tar.c b/arm9/source/system/tar.c similarity index 100% rename from source/system/tar.c rename to arm9/source/system/tar.c diff --git a/source/system/tar.h b/arm9/source/system/tar.h similarity index 100% rename from source/system/tar.h rename to arm9/source/system/tar.h diff --git a/source/system/vram0.h b/arm9/source/system/vram0.h similarity index 100% rename from source/system/vram0.h rename to arm9/source/system/vram0.h diff --git a/source/system/xrq.c b/arm9/source/system/xrq.c similarity index 100% rename from source/system/xrq.c rename to arm9/source/system/xrq.c diff --git a/source/system/xrq_handler.s b/arm9/source/system/xrq_handler.s similarity index 100% rename from source/system/xrq_handler.s rename to arm9/source/system/xrq_handler.s diff --git a/source/utils/ctrtransfer.c b/arm9/source/utils/ctrtransfer.c similarity index 100% rename from source/utils/ctrtransfer.c rename to arm9/source/utils/ctrtransfer.c diff --git a/source/utils/ctrtransfer.h b/arm9/source/utils/ctrtransfer.h similarity index 100% rename from source/utils/ctrtransfer.h rename to arm9/source/utils/ctrtransfer.h diff --git a/source/utils/gameutil.c b/arm9/source/utils/gameutil.c similarity index 100% rename from source/utils/gameutil.c rename to arm9/source/utils/gameutil.c diff --git a/source/utils/gameutil.h b/arm9/source/utils/gameutil.h similarity index 100% rename from source/utils/gameutil.h rename to arm9/source/utils/gameutil.h diff --git a/source/utils/keydbutil.c b/arm9/source/utils/keydbutil.c similarity index 100% rename from source/utils/keydbutil.c rename to arm9/source/utils/keydbutil.c diff --git a/source/utils/keydbutil.h b/arm9/source/utils/keydbutil.h similarity index 100% rename from source/utils/keydbutil.h rename to arm9/source/utils/keydbutil.h diff --git a/source/utils/nandcmac.c b/arm9/source/utils/nandcmac.c similarity index 100% rename from source/utils/nandcmac.c rename to arm9/source/utils/nandcmac.c diff --git a/source/utils/nandcmac.h b/arm9/source/utils/nandcmac.h similarity index 100% rename from source/utils/nandcmac.h rename to arm9/source/utils/nandcmac.h diff --git a/source/utils/nandutil.c b/arm9/source/utils/nandutil.c similarity index 100% rename from source/utils/nandutil.c rename to arm9/source/utils/nandutil.c diff --git a/source/utils/nandutil.h b/arm9/source/utils/nandutil.h similarity index 100% rename from source/utils/nandutil.h rename to arm9/source/utils/nandutil.h diff --git a/source/utils/scripting.c b/arm9/source/utils/scripting.c similarity index 100% rename from source/utils/scripting.c rename to arm9/source/utils/scripting.c diff --git a/source/utils/scripting.h b/arm9/source/utils/scripting.h similarity index 100% rename from source/utils/scripting.h rename to arm9/source/utils/scripting.h diff --git a/source/utils/sysinfo.c b/arm9/source/utils/sysinfo.c similarity index 100% rename from source/utils/sysinfo.c rename to arm9/source/utils/sysinfo.c diff --git a/source/utils/sysinfo.h b/arm9/source/utils/sysinfo.h similarity index 100% rename from source/utils/sysinfo.h rename to arm9/source/utils/sysinfo.h diff --git a/source/utils/utils.h b/arm9/source/utils/utils.h similarity index 100% rename from source/utils/utils.h rename to arm9/source/utils/utils.h diff --git a/source/virtual/vcart.c b/arm9/source/virtual/vcart.c similarity index 100% rename from source/virtual/vcart.c rename to arm9/source/virtual/vcart.c diff --git a/source/virtual/vcart.h b/arm9/source/virtual/vcart.h similarity index 100% rename from source/virtual/vcart.h rename to arm9/source/virtual/vcart.h diff --git a/source/virtual/vgame.c b/arm9/source/virtual/vgame.c similarity index 100% rename from source/virtual/vgame.c rename to arm9/source/virtual/vgame.c diff --git a/source/virtual/vgame.h b/arm9/source/virtual/vgame.h similarity index 100% rename from source/virtual/vgame.h rename to arm9/source/virtual/vgame.h diff --git a/source/virtual/virtual.c b/arm9/source/virtual/virtual.c similarity index 100% rename from source/virtual/virtual.c rename to arm9/source/virtual/virtual.c diff --git a/source/virtual/virtual.h b/arm9/source/virtual/virtual.h similarity index 100% rename from source/virtual/virtual.h rename to arm9/source/virtual/virtual.h diff --git a/source/virtual/vkeydb.c b/arm9/source/virtual/vkeydb.c similarity index 100% rename from source/virtual/vkeydb.c rename to arm9/source/virtual/vkeydb.c diff --git a/source/virtual/vkeydb.h b/arm9/source/virtual/vkeydb.h similarity index 100% rename from source/virtual/vkeydb.h rename to arm9/source/virtual/vkeydb.h diff --git a/source/virtual/vmem.c b/arm9/source/virtual/vmem.c similarity index 100% rename from source/virtual/vmem.c rename to arm9/source/virtual/vmem.c diff --git a/source/virtual/vmem.h b/arm9/source/virtual/vmem.h similarity index 100% rename from source/virtual/vmem.h rename to arm9/source/virtual/vmem.h diff --git a/source/virtual/vnand.c b/arm9/source/virtual/vnand.c similarity index 100% rename from source/virtual/vnand.c rename to arm9/source/virtual/vnand.c diff --git a/source/virtual/vnand.h b/arm9/source/virtual/vnand.h similarity index 100% rename from source/virtual/vnand.h rename to arm9/source/virtual/vnand.h diff --git a/source/virtual/vtickdb.c b/arm9/source/virtual/vtickdb.c similarity index 100% rename from source/virtual/vtickdb.c rename to arm9/source/virtual/vtickdb.c diff --git a/source/virtual/vtickdb.h b/arm9/source/virtual/vtickdb.h similarity index 100% rename from source/virtual/vtickdb.h rename to arm9/source/virtual/vtickdb.h diff --git a/source/virtual/vvram.c b/arm9/source/virtual/vvram.c similarity index 100% rename from source/virtual/vvram.c rename to arm9/source/virtual/vvram.c diff --git a/source/virtual/vvram.h b/arm9/source/virtual/vvram.h similarity index 100% rename from source/virtual/vvram.h rename to arm9/source/virtual/vvram.h diff --git a/mpcore/Makefile b/mpcore/Makefile new file mode 100644 index 0000000..38efe8b --- /dev/null +++ b/mpcore/Makefile @@ -0,0 +1,37 @@ +TARGET := $(shell basename $(CURDIR)) + +SOURCE := source +BUILD := build + +SUBARCH := -DARM11 -mcpu=mpcore -mtune=mpcore -mfloat-abi=soft -marm +INCDIRS := source +INCLUDE := $(foreach dir,$(INCDIRS),-I"$(shell pwd)/$(dir)") + +ASFLAGS += $(SUBARCH) $(INCLUDE) +CFLAGS += $(SUBARCH) $(INCLUDE) +LDFLAGS += $(SUBARCH) -Wl,-Map,$(TARGET).map + +include ../Makefile.common + +OBJECTS = $(patsubst $(SOURCE)/%.s, $(BUILD)/%.o, \ + $(patsubst $(SOURCE)/%.c, $(BUILD)/%.o, \ + $(call rwildcard, $(SOURCE), *.s *.c))) + +.PHONY: all +all: $(TARGET).elf + +.PHONY: clean +clean: + @rm -rf $(BUILD) $(TARGET).elf $(TARGET).map + +$(TARGET).elf: $(OBJECTS) + @mkdir -p "$(@D)" + $(CC) $(LDFLAGS) $^ -o $@ + +$(BUILD)/%.o: $(SOURCE)/%.c + @mkdir -p "$(@D)" + $(CC) -c $(CFLAGS) -o $@ $< + +$(BUILD)/%.o: $(SOURCE)/%.s + @mkdir -p "$(@D)" + $(CC) -c $(ASFLAGS) -o $@ $< diff --git a/screeninit/linker.ld b/mpcore/link.ld similarity index 100% rename from screeninit/linker.ld rename to mpcore/link.ld diff --git a/screeninit/source/boot.s b/mpcore/source/boot.s similarity index 100% rename from screeninit/source/boot.s rename to mpcore/source/boot.s diff --git a/screeninit/source/gic.c b/mpcore/source/gic.c similarity index 100% rename from screeninit/source/gic.c rename to mpcore/source/gic.c diff --git a/screeninit/source/gic.h b/mpcore/source/gic.h similarity index 100% rename from screeninit/source/gic.h rename to mpcore/source/gic.h diff --git a/screeninit/source/gpulcd.c b/mpcore/source/gpulcd.c similarity index 100% rename from screeninit/source/gpulcd.c rename to mpcore/source/gpulcd.c diff --git a/screeninit/source/gpulcd.h b/mpcore/source/gpulcd.h similarity index 100% rename from screeninit/source/gpulcd.h rename to mpcore/source/gpulcd.h diff --git a/screeninit/source/irq.s b/mpcore/source/irq.s similarity index 100% rename from screeninit/source/irq.s rename to mpcore/source/irq.s diff --git a/screeninit/source/main.c b/mpcore/source/main.c similarity index 97% rename from screeninit/source/main.c rename to mpcore/source/main.c index 1a3d944..7824595 100644 --- a/screeninit/source/main.c +++ b/mpcore/source/main.c @@ -9,7 +9,7 @@ vu32 *entrypoint = (vu32*)0x1FFFFFFC; void PXI_IRQHandler(void) { - char pxi_buf[PXI_MAXBUFLEN] = {0}; + // char pxi_buf[PXI_MAXBUFLEN] = {0}; u32 pxi_args[PXI_FIFO_LEN] = {0}; u8 pxi_cmd; diff --git a/resources/vram0.tar b/resources/vram0.tar deleted file mode 100644 index e5842bb..0000000 Binary files a/resources/vram0.tar and /dev/null differ diff --git a/screeninit/Makefile b/screeninit/Makefile deleted file mode 100644 index 46fbb6e..0000000 --- a/screeninit/Makefile +++ /dev/null @@ -1,47 +0,0 @@ -rwildcard = $(foreach d, $(wildcard $1*), $(filter $(subst *, %, $2), $d) $(call rwildcard, $d/, $2)) - -ifeq ($(strip $(DEVKITARM)),) -$(error "Please set DEVKITARM in your environment. export DEVKITARM=devkitARM") -endif - -include $(DEVKITARM)/base_tools - -name := $(shell basename $(CURDIR)) - -dir_source := source -dir_build := build -dir_out := ../$(dir_build) - -ARCH := -DARM11 -mcpu=mpcore -mfloat-abi=soft -marm -mno-thumb-interwork -INCLUDE := -I$(dir_source) -I../common - -ASFLAGS := $(ARCH) -x assembler-with-cpp $(INCLUDE) -CFLAGS := $(ARCH) -Wall -Wextra -MMD -MP -fno-builtin \ - -Wno-unused-function -Wno-unused-variable \ - -std=c11 -O2 -flto -ffast-math -Wno-main $(INCLUDE) -LDFLAGS := -nostdlib -nostartfiles -Wl,-z,max-page-size=512 - -objects = $(patsubst $(dir_source)/%.s, $(dir_build)/%.o, \ - $(patsubst $(dir_source)/%.c, $(dir_build)/%.o, \ - $(call rwildcard, $(dir_source), *.s *.c))) - -.PHONY: all -all: $(dir_out)/$(name).bin - -.PHONY: clean -clean: - @rm -rf $(dir_build) - -$(dir_out)/$(name).bin: $(dir_out)/$(name).elf - $(OBJCOPY) -S -O binary $< $@ - -$(dir_out)/$(name).elf: $(objects) - $(LINK.o) -T linker.ld $(OUTPUT_OPTION) $^ - -$(dir_build)/%.o: $(dir_source)/%.c - @mkdir -p "$(@D)" - $(CC) -c $(CFLAGS) -o $@ $< - -$(dir_build)/%.o: $(dir_source)/%.s - @mkdir -p "$(@D)" - $(CC) -c $(ASFLAGS) -o $@ $<