Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Attempting to fix issues with printing memory address info in the SmileHook menu
- Loading branch information
0 parents
commit d3bce11
Showing
469 changed files
with
62,200 additions
and
0 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
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=<path to>devkitARM") | ||
endif | ||
|
||
ifneq ($(strip $(shell firmtool -v 2>&1 | grep usage)),) | ||
$(error "Please install firmtool v1.1 or greater") | ||
endif | ||
|
||
include $(DEVKITARM)/base_tools | ||
|
||
name := Luma3DS | ||
revision := $(shell git describe --tags --match v[0-9]* --abbrev=8 | sed 's/-[0-9]*-g/-/') | ||
version_major := $(shell git describe --tags --match v[0-9]* | cut -c2- | cut -f1 -d- | cut -f1 -d.) | ||
version_minor := $(shell git describe --tags --match v[0-9]* | cut -c2- | cut -f1 -d- | cut -f2 -d.) | ||
version_build := $(shell git describe --tags --match v[0-9]* | cut -c2- | cut -f1 -d- | cut -f3 -d.) | ||
commit := $(shell git rev-parse --short=8 HEAD) | ||
is_release := 0 | ||
|
||
ifeq ($(strip $(revision)),) | ||
revision := v0.0.0-0 | ||
version_major := 0 | ||
version_minor := 0 | ||
version_build := 0 | ||
endif | ||
|
||
ifeq ($(strip $(commit)),) | ||
commit := 0 | ||
endif | ||
|
||
ifeq ($(strip $(version_build)),) | ||
version_build := 0 | ||
endif | ||
|
||
ifeq ($(strip $(shell git describe --tags --match v[0-9]* | grep -)),) | ||
is_release := 1 | ||
endif | ||
|
||
dir_source := source | ||
dir_patches := patches | ||
dir_arm11 := arm11 | ||
dir_chainloader := chainloader | ||
dir_exceptions := exceptions | ||
dir_arm9_exceptions := $(dir_exceptions)/arm9 | ||
dir_k11_extension := k11_extension | ||
dir_sysmodules := sysmodules | ||
dir_loader := $(dir_sysmodules)/loader | ||
dir_rosalina := $(dir_sysmodules)/rosalina | ||
dir_build := build | ||
dir_out := out | ||
|
||
ASFLAGS := -mcpu=arm946e-s | ||
CFLAGS := -Wall -Wextra $(ASFLAGS) -fno-builtin -std=c11 -Wno-main -O2 -flto -ffast-math | ||
LDFLAGS := -nostartfiles -Wl,--nmagic | ||
|
||
objects = $(patsubst $(dir_source)/%.s, $(dir_build)/%.o, \ | ||
$(patsubst $(dir_source)/%.c, $(dir_build)/%.o, \ | ||
$(call rwildcard, $(dir_source), *.s *.c))) | ||
|
||
bundled = $(dir_build)/reboot.bin.o $(dir_build)/emunand.bin.o $(dir_build)/chainloader.bin.o $(dir_build)/arm9_exceptions.bin.o | ||
|
||
modules = $(dir_build)/loader.cxi $(dir_build)/rosalina.cxi | ||
|
||
define bin2o | ||
bin2s $< | $(AS) -o $(@) | ||
endef | ||
|
||
.PHONY: all | ||
all: firm | ||
|
||
.PHONY: release | ||
release: $(dir_out)/$(name)$(revision).7z | ||
|
||
.PHONY: firm | ||
firm: $(dir_out)/boot.firm | ||
|
||
.PHONY: clean | ||
clean: | ||
@$(MAKE) -C $(dir_arm11) clean | ||
@$(MAKE) -C $(dir_chainloader) clean | ||
@$(MAKE) -C $(dir_arm9_exceptions) clean | ||
@$(MAKE) -C $(dir_k11_extension) clean | ||
@$(MAKE) -C $(dir_loader) clean | ||
@$(MAKE) -C $(dir_rosalina) clean | ||
@rm -rf $(dir_out) $(dir_build) | ||
|
||
.PRECIOUS: $(dir_build)/%.bin | ||
|
||
.PHONY: $(dir_arm11) | ||
.PHONY: $(dir_chainloader) | ||
.PHONY: $(dir_arm9_exceptions) | ||
.PHONY: $(dir_k11_extension) | ||
.PHONY: $(dir_loader) | ||
.PHONY: $(dir_rosalina) | ||
|
||
$(dir_out)/$(name)$(revision).7z: all | ||
@mkdir -p "$(@D)" | ||
@7z a -mx $@ ./$(@D)/* ./$(dir_exceptions)/exception_dump_parser.py | ||
|
||
$(dir_out)/boot.firm: $(dir_build)/modules.bin $(dir_build)/arm11.elf $(dir_build)/main.elf $(dir_build)/k11_extension.bin | ||
@mkdir -p "$(@D)" | ||
@firmtool build $@ -D $^ -A 0x18180000 0x18000000 -C XDMA XDMA NDMA XDMA | ||
|
||
$(dir_build)/modules.bin: $(modules) | ||
@mkdir -p "$(@D)" | ||
cat $^ > $@ | ||
|
||
$(dir_build)/arm11.elf: $(dir_arm11) | ||
@mkdir -p "$(@D)" | ||
@$(MAKE) -C $< | ||
|
||
$(dir_build)/main.elf: $(bundled) $(objects) | ||
$(LINK.o) -T linker.ld $(OUTPUT_OPTION) $^ | ||
|
||
$(dir_build)/k11_extension.bin: $(dir_k11_extension) | ||
@mkdir -p "$(@D)" | ||
@$(MAKE) -C $< | ||
|
||
$(dir_build)/loader.cxi: $(dir_loader) | ||
@mkdir -p "$(@D)" | ||
@$(MAKE) -C $< | ||
|
||
$(dir_build)/rosalina.cxi: $(dir_rosalina) | ||
@mkdir -p "$(@D)" | ||
@$(MAKE) -C $< | ||
|
||
$(dir_build)/%.bin.o: $(dir_build)/%.bin | ||
@$(bin2o) | ||
|
||
$(dir_build)/chainloader.bin: $(dir_chainloader) | ||
@mkdir -p "$(@D)" | ||
@$(MAKE) -C $< | ||
|
||
$(dir_build)/arm9_exceptions.bin: $(dir_arm9_exceptions) | ||
@mkdir -p "$(@D)" | ||
@$(MAKE) -C $< | ||
|
||
$(dir_build)/%.bin: $(dir_patches)/%.s | ||
@mkdir -p "$(@D)" | ||
@armips $< | ||
|
||
$(dir_build)/memory.o $(dir_build)/strings.o: CFLAGS += -O3 | ||
$(dir_build)/config.o: CFLAGS += -DCONFIG_TITLE="\"$(name) $(revision) configuration\"" | ||
$(dir_build)/patches.o: CFLAGS += -DVERSION_MAJOR="$(version_major)" -DVERSION_MINOR="$(version_minor)"\ | ||
-DVERSION_BUILD="$(version_build)" -DISRELEASE="$(is_release)" -DCOMMIT_HASH="0x$(commit)" | ||
$(dir_build)/firm.o: $(dir_build)/modules.bin | ||
$(dir_build)/firm.o: CFLAGS += -DLUMA_SECTION0_SIZE="$(shell wc -c $(dir_build)/modules.bin | tr -d [:space:][:alpha:][:punct:])" | ||
|
||
$(dir_build)/bundled.h: $(bundled) | ||
@$(foreach f, $(bundled),\ | ||
echo "extern const u8" `(echo $(basename $(notdir $(f))) | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> $@;\ | ||
echo "extern const u32" `(echo $(basename $(notdir $(f)))| sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> $@;\ | ||
) | ||
|
||
$(dir_build)/%.o: $(dir_source)/%.c $(dir_build)/bundled.h | ||
@mkdir -p "$(@D)" | ||
$(COMPILE.c) $(OUTPUT_OPTION) $< | ||
|
||
$(dir_build)/%.o: $(dir_source)/%.s | ||
@mkdir -p "$(@D)" | ||
$(COMPILE.s) $(OUTPUT_OPTION) $< |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
# Luma3DS | ||
*Noob-proof (N)3DS "Custom Firmware"* | ||
|
||
## What it is | ||
|
||
**Luma3DS** is a program to patch the system software of (New) Nintendo 3DS handheld consoles "on the fly", adding features (such as per-game language settings and debugging capabilities for developers) and removing restrictions enforced by Nintendo (such as the region lock). | ||
It also allows you to run unauthorized ("homebrew") content by removing signature checks. | ||
To use it, you will need a console capable of running homebrew software on the ARM9 processor. We recommend [Plailect's guide](https://3ds.guide/) for details on how to get your system ready. | ||
|
||
Since Luma3DS v8.0, Luma3DS has its own in-game menu, triggerable by `L+Down+Select` (see the [release notes](https://github.com/AuroraWright/Luma3DS/releases/tag/v8.0)). | ||
|
||
--- | ||
|
||
## Compiling | ||
|
||
First you need to clone the repository with: `git clone https://github.com/AuroraWright/Luma3DS.git` | ||
To compile, you'll need [armips](https://github.com/Kingcom/armips) and a build of a recent commit of [makerom](https://github.com/profi200/Project_CTR) added to your PATH. You'll also need to install [firmtool](https://github.com/TuxSH/firmtool), its README contains installation instructions. | ||
For now, you'll also need to update your [libctru](https://github.com/smealum/ctrulib) install, building from the latest commit. | ||
For your convenience, here are [Windows](http://www91.zippyshare.com/v/ePGpjk9r/file.html) and [Linux](https://mega.nz/#!uQ1T1IAD!Q91O0e12LXKiaXh_YjXD3D5m8_W3FuMI-hEa6KVMRDQ) builds of armips (thanks to who compiled them!) and [makerom](https://github.com/Steveice10/buildtools/tree/master/3ds) (thanks @Steveice10!). | ||
Finally just run `make` and everything should work! | ||
You can find the compiled files in the `out` folder. | ||
|
||
--- | ||
|
||
## Setup / Usage / Features | ||
|
||
See https://github.com/AuroraWright/Luma3DS/wiki | ||
|
||
--- | ||
|
||
## Credits | ||
|
||
See https://github.com/AuroraWright/Luma3DS/wiki/Credits | ||
|
||
--- | ||
|
||
## Licensing | ||
|
||
This software is licensed under the terms of the GPLv3. | ||
You can find a copy of the license in the LICENSE.txt file. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
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=<path to>devkitARM") | ||
endif | ||
|
||
include $(DEVKITARM)/base_tools | ||
|
||
name := $(shell basename $(CURDIR)) | ||
|
||
dir_source := source | ||
dir_build := build | ||
dir_out := ../$(dir_build) | ||
|
||
ASFLAGS := -mcpu=mpcore | ||
CFLAGS := -Wall -Wextra -MMD -MP -marm $(ASFLAGS) -fno-builtin -std=c11 -Wno-main -O2 -flto -ffast-math | ||
LDFLAGS := -nostartfiles -Wl,--nmagic | ||
|
||
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).elf | ||
|
||
.PHONY: clean | ||
clean: | ||
@rm -rf $(dir_build) | ||
|
||
$(dir_out)/$(name).elf: $(objects) | ||
$(LINK.o) -T linker.ld $(OUTPUT_OPTION) $^ | ||
|
||
$(dir_build)/%.o: $(dir_source)/%.c | ||
@mkdir -p "$(@D)" | ||
$(COMPILE.c) $(OUTPUT_OPTION) $< | ||
|
||
$(dir_build)/%.o: $(dir_source)/%.s | ||
@mkdir -p "$(@D)" | ||
$(COMPILE.s) $(OUTPUT_OPTION) $< |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
build/main.o: source/main.c source/types.h source/memory.h | ||
|
||
source/types.h: | ||
|
||
source/memory.h: |
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
build/memory.o: source/memory.c source/memory.h source/types.h | ||
|
||
source/memory.h: | ||
|
||
source/types.h: |
Binary file not shown.
Binary file not shown.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
OUTPUT_FORMAT("elf32-littlearm", "elf32-bigarm", "elf32-littlearm") | ||
OUTPUT_ARCH(arm) | ||
|
||
ENTRY(_start) | ||
SECTIONS | ||
{ | ||
. = 0x1FF80000; | ||
|
||
.text : ALIGN(4) { *(.text.start) *(.text*); . = ALIGN(4); } | ||
.rodata : ALIGN(4) { *(.rodata*); . = ALIGN(4); } | ||
.data : ALIGN(4) { *(.data*); . = ALIGN(4); } | ||
.bss : ALIGN(8) { __bss_start = .; *(.bss* COMMON); . = ALIGN(8); __bss_end = .; } | ||
|
||
__stack_top__ = 0x1FFFE000; | ||
. = ALIGN(4); | ||
} |
Oops, something went wrong.