Allow piggybacking filesystem images to the GodMode9 firm

... just put an image file called `vram0.img` into data - max size:
3MB(!).
This commit is contained in:
d0k3 2017-09-27 01:52:40 +02:00
parent 3b56a12857
commit 21c1ae30fe
3 changed files with 17 additions and 8 deletions

2
.gitignore vendored
View File

@ -40,4 +40,6 @@
# User additions # User additions
/data/aeskeydb.bin /data/aeskeydb.bin
/data/aeskeydb_.bin /data/aeskeydb_.bin
/data/vram0.img
/data/vram0_.img
/zzz_backup /zzz_backup

View File

@ -136,6 +136,12 @@ export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib) export LIBPATHS := $(foreach dir,$(LIBDIRS),-L$(dir)/lib)
ifeq ("$(wildcard $(CURDIR)/$(DATA)/vram0.img)","")
export FTCOMMON := -D $(OUTPUT).elf $(OUTPUT_D)/screeninit.elf -C NDMA XDMA
else
export FTCOMMON := -A 0x18000000 -D $(OUTPUT).elf $(OUTPUT_D)/screeninit.elf $(CURDIR)/$(DATA)/vram0.img -C NDMA XDMA memcpy
endif
.PHONY: common clean all firm binary screeninit release .PHONY: common clean all firm binary screeninit release
#--------------------------------------------------------------------------------- #---------------------------------------------------------------------------------
@ -152,16 +158,15 @@ binary: common
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
firm: binary screeninit firm: binary screeninit
firmtool build $(OUTPUT).firm -D $(OUTPUT).elf $(OUTPUT_D)/screeninit.elf -C NDMA XDMA -S nand-retail -g firmtool build $(OUTPUT).firm $(FTCOMMON) -S nand-retail -g
firmtool build $(OUTPUT)_dev.firm -D $(OUTPUT).elf $(OUTPUT_D)/screeninit.elf -C NDMA XDMA -S nand-dev -g firmtool build $(OUTPUT)_dev.firm $(FTCOMMON) -S nand-dev -g
ntrboot: binary screeninit ntrboot: binary screeninit
firmtool build $(OUTPUT)_ntr.firm -D $(OUTPUT).elf $(OUTPUT_D)/screeninit.elf -C NDMA XDMA -S spi-retail -g firmtool build $(OUTPUT)_ntr.firm $(FTCOMMON) -S spi-retail -g
firmtool build $(OUTPUT)_ntr_dev.firm -D $(OUTPUT).elf $(OUTPUT_D)/screeninit.elf -C NDMA XDMA -S spi-dev -g firmtool build $(OUTPUT)_ntr_dev.firm $(FTCOMMON) -S spi-dev -g
release: release:
@-rm -fr $(BUILD) $(OUTPUT_D) $(RELEASE) @-rm -fr $(BUILD) $(OUTPUT_D) $(RELEASE)
@$(MAKE) --no-print-directory binary
@$(MAKE) --no-print-directory firm @$(MAKE) --no-print-directory firm
@$(MAKE) --no-print-directory ntrboot @$(MAKE) --no-print-directory ntrboot
@[ -d $(RELEASE) ] || mkdir -p $(RELEASE) @[ -d $(RELEASE) ] || mkdir -p $(RELEASE)

View File

@ -24,13 +24,15 @@ You may now run GodMode9 via holding the X Button (or any other button you chose
## How to run this / developer info ## How to run this / developer info
Copy `GodMode9.firm` to somewhere on your SD card (maybe refer to your CFW instructions) and run it from there. FIRM payloads can be ran from [Luma3DS](https://github.com/AuroraWright/Luma3DS), [boot9strap](https://github.com/SciresM/boot9strap) or from GodMode9 itself. Build this with `make firm` (requires [firmtool](https://github.com/TuxSH/firmtool) installed). Copy `GodMode9.firm` to somewhere on your SD card (maybe refer to your CFW instructions) and run it from there. FIRM payloads can be ran from [Luma3DS](https://github.com/AuroraWright/Luma3DS), [boot9strap](https://github.com/SciresM/boot9strap) or from GodMode9 itself. Build this with `make firm` (requires [firmtool](https://github.com/TuxSH/firmtool) installed).
If you are a developer and you are building this, you may also just run `make release` to get a nice, release-ready package of all required files. To build __SafeMode9__ (a bricksafe variant of GodMode9, with limited write permissions) instead of GodMode9, compile with `make SAFEMODE=1`. To switch screens, compile with `make SWITCH_SCREENS=1`. For additional customization, you may choose the internal font via `make FONT=6X10`, `make FONT=ACORN`, `make FONT=GB` or `make FONT=ORIG`. Further customization is possible by hardcoding `aeskeydb.bin` (just put the file into the data folder when compiling). A standalone script runner is compiled by providing `autorun.gm9` inside the data folder. If you are a developer and you are building this, you may also just run `make release` to get a nice, release-ready package of all required files. To build __SafeMode9__ (a bricksafe variant of GodMode9, with limited write permissions) instead of GodMode9, compile with `make SAFEMODE=1`. To switch screens, compile with `make SWITCH_SCREENS=1`. For additional customization, you may choose the internal font via `make FONT=6X10`, `make FONT=ACORN`, `make FONT=GB` or `make FONT=ORIG`.
Further customization is possible by hardcoding `aeskeydb.bin` (just put the file into the data folder when compiling). To preset `M:/vram.mem` with data of your choice (a filesystem image, maybe) provide `vram0.img` inside the data folder, but keep in mind there's a hard 3MB limit. A standalone script runner is compiled by providing `autorun.gm9` (again, in the data folder).
To build a .firm signed with SPI boot keys (for ntrboot and the like), run `make ntrboot`. You may need to rename the output files if the ntrboot installer you use uses hardcoded filenames. Some features such as boot9 / boot11 access are not currently available from the ntrboot environment. To build a .firm signed with SPI boot keys (for ntrboot and the like), run `make ntrboot`. You may need to rename the output files if the ntrboot installer you use uses hardcoded filenames. Some features such as boot9 / boot11 access are not currently available from the ntrboot environment.
## Bootloader mode / NTRboot mode ## Bootloader mode
Same as [boot9strap](https://github.com/SciresM/boot9strap), GodMode9 can be installed to the system FIRM partition ('FIRM0'). When executed from a FIRM partition, GodMode9 will default to bootloader mode and try to boot, in order, `FIRM from FCRAM` (see [A9NC](https://github.com/d0k3/A9NC/releases), `0:/bootonce.firm` (will be deleted on a successful boot), `0:/boot.firm`, `1:/boot.firm`. In bootloader mode, hold R+LEFT on boot to enter the boot menu. *Installing GodMode9 to a FIRM partition is only recommended for developers and will overwrite [boot9strap](https://github.com/SciresM/boot9strap)*. Same as [boot9strap](https://github.com/SciresM/boot9strap), GodMode9 can be installed to the system FIRM partition ('FIRM0'). When executed from a FIRM partition, GodMode9 will default to bootloader mode and try to boot, in order, `FIRM from FCRAM` (see [A9NC](https://github.com/d0k3/A9NC/releases)), `0:/bootonce.firm` (will be deleted on a successful boot), `0:/boot.firm`, `1:/boot.firm`. In bootloader mode, hold R+LEFT on boot to enter the boot menu. *Installing GodMode9 to a FIRM partition is only recommended for developers and will overwrite [boot9strap](https://github.com/SciresM/boot9strap)*.
## Write permissions system ## Write permissions system