diff --git a/.gitignore b/.gitignore
index 08ec4b2..0fdcfa7 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,8 +1,8 @@
build/
build.linux/
-buildtools/
output/
ftpd
*.3dsx
+*.cia
*.smdh
*.elf
diff --git a/Makefile b/Makefile
index ef9ca89..6b4b8aa 100644
--- a/Makefile
+++ b/Makefile
@@ -1,10 +1,15 @@
-.PHONY: all clean linux
+.PHONY: all 3dsx cia clean linux
export VERSION := 2.2
-all:
- @$(MAKE) -f Makefile.3ds
+all: 3dsx
+3dsx:
+ @$(MAKE) -f Makefile.3ds 3dsx
+
+cia:
+ @$(MAKE) -f Makefile.3ds cia
+
linux:
@$(MAKE) -f Makefile.linux
diff --git a/Makefile.3ds b/Makefile.3ds
index 7ecb67d..e5f65db 100644
--- a/Makefile.3ds
+++ b/Makefile.3ds
@@ -37,7 +37,11 @@ ROMFS :=
APP_TITLE := Super ftpd II Turbo
APP_DESCRIPTION := v$(VERSION)
APP_AUTHOR := mtheall
-ICON := ftpd.png
+
+ICON := meta/icon.png
+BNR_IMAGE := meta/banner.png
+BNR_AUDIO := meta/audio.wav
+RSF_FILE := meta/ftpd-cia.rsf
#---------------------------------------------------------------------------------
# options for code generation
@@ -131,15 +135,21 @@ endif
#---------------------------------------------------------------------------------
all: $(BUILD)
+ @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.3ds
+
+3dsx: $(BUILD)
+ @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.3ds 3dsx
+
+cia: $(BUILD)
+ @make --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.3ds cia
$(BUILD):
@[ -d $@ ] || mkdir -p $@
- @$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile.3ds
#---------------------------------------------------------------------------------
clean:
@echo clean ...
- @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf
+ @rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf $(TARGET).cia output/
#---------------------------------------------------------------------------------
@@ -150,15 +160,37 @@ DEPENDS := $(OFILES:.o=.d)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
+#all: $(OUTPUT).cia $(OUTPUT).3dsx
+
+3dsx: $(OUTPUT).3dsx
+
+cia: $(OUTPUT).cia
+
ifeq ($(strip $(NO_SMDH)),)
.PHONY: all
all : $(OUTPUT).3dsx $(OUTPUT).smdh
-$(OUTPUT).smdh : $(TOPDIR)/Makefile
+$(OUTPUT).smdh : $(TOPDIR)/Makefile.3ds
$(OUTPUT).3dsx: $(OUTPUT).smdh
endif
+
$(OUTPUT).3dsx: $(OUTPUT).elf
$(OUTPUT).elf: $(OFILES)
+#$(OUTPUT).smdh : $(APP_ICON)
+# @bannertool makesmdh -s "$(APP_TITLE)" -l "$(APP_DESCRIPTION)" -p "$(APP_AUTHOR)" -i $(APP_ICON) -o $@
+# @echo "built ... $(notdir $@)"
+
+$(OUTPUT).cia : $(OUTPUT).elf $(OUTPUT).smdh $(TARGET).bnr $(TOPDIR)/$(RSF_FILE)
+ @makerom -f cia -target t -exefslogo -o $@ \
+ -elf $(OUTPUT).elf -rsf $(TOPDIR)/$(RSF_FILE) \
+ -banner $(TARGET).bnr \
+ -icon $(OUTPUT).smdh
+ @echo "built ... $(notdir $@)"
+
+$(TARGET).bnr : $(TOPDIR)/$(BNR_IMAGE) $(TOPDIR)/$(BNR_AUDIO)
+ @bannertool makebanner -o $@ -i $(TOPDIR)/$(BNR_IMAGE) -a $(TOPDIR)/$(BNR_AUDIO)
+ @echo "built ... $@"
+
#---------------------------------------------------------------------------------
# you need a rule like this for each extension you use as binary data
#---------------------------------------------------------------------------------
diff --git a/Makefile.linux b/Makefile.linux
index 00227a4..f8964af 100644
--- a/Makefile.linux
+++ b/Makefile.linux
@@ -1,4 +1,4 @@
-TARGET := $(notdir $(CURDIR))
+TARGET := ftpd
CFILES := $(wildcard source/*.c)
OFILES := $(patsubst source/%,build.linux/%,$(CFILES:.c=.o))
diff --git a/ftpd.png b/ftpd.png
deleted file mode 100644
index a14273d..0000000
Binary files a/ftpd.png and /dev/null differ
diff --git a/meta/audio.wav b/meta/audio.wav
new file mode 100644
index 0000000..8bdb0e1
Binary files /dev/null and b/meta/audio.wav differ
diff --git a/meta/banner.png b/meta/banner.png
new file mode 100644
index 0000000..a5e0683
Binary files /dev/null and b/meta/banner.png differ
diff --git a/meta/banner.svg b/meta/banner.svg
new file mode 100644
index 0000000..d9d93b7
--- /dev/null
+++ b/meta/banner.svg
@@ -0,0 +1,88 @@
+
+
+
+
diff --git a/meta/ftpd-cia.rsf b/meta/ftpd-cia.rsf
new file mode 100644
index 0000000..208f625
--- /dev/null
+++ b/meta/ftpd-cia.rsf
@@ -0,0 +1,218 @@
+BasicInfo:
+ Title : "ftpd"
+ ProductCode : "ftpd"
+ Logo : Homebrew # Nintendo / Licensed / Distributed / iQue / iQueForSystem
+
+RomFs:
+ $(APP_ROMFS)
+
+TitleInfo:
+ Category : Application
+ UniqueId : 0xC0FFEE
+
+Option:
+ UseOnSD : true # true if App is to be installed to SD
+ FreeProductCode : true # Removes limitations on ProductCode
+ MediaFootPadding : false # If true CCI files are created with padding
+ EnableCrypt : false # Enables encryption for NCCH and CIA
+ EnableCompress : true # Compresses where applicable (currently only exefs:/.code)
+
+AccessControlInfo:
+ CoreVersion : 2
+
+ # Exheader Format Version
+ DescVersion : 2
+
+ # Minimum Required Kernel Version (below is for 4.5.0)
+ ReleaseKernelMajor : "02"
+ ReleaseKernelMinor : "33"
+
+ # ExtData
+ UseExtSaveData : false # enables ExtData
+ #ExtSaveDataId : 0x300 # only set this when the ID is different to the UniqueId
+
+ # FS:USER Archive Access Permissions
+ # Uncomment as required
+ FileSystemAccess:
+ #- CategorySystemApplication
+ #- CategoryHardwareCheck
+ - CategoryFileSystemTool
+ #- Debug
+ #- TwlCardBackup
+ #- TwlNandData
+ #- Boss
+ - DirectSdmc
+ #- Core
+ #- CtrNandRo
+ #- CtrNandRw
+ #- CtrNandRoWrite
+ #- CategorySystemSettings
+ #- CardBoard
+ #- ExportImportIvs
+ #- DirectSdmcWrite
+ #- SwitchCleanup
+ #- SaveDataMove
+ #- Shop
+ #- Shell
+ #- CategoryHomeMenu
+
+ # Process Settings
+ MemoryType : Application # Application/System/Base
+ SystemMode : 64MB # 64MB(Default)/96MB/80MB/72MB/32MB
+ IdealProcessor : 0
+ AffinityMask : 1
+ Priority : 16
+ MaxCpu : 0x9E # Default
+ HandleTableSize : 0x200
+ DisableDebug : false
+ EnableForceDebug : false
+ CanWriteSharedPage : true
+ CanUsePrivilegedPriority : false
+ CanUseNonAlphabetAndNumber : true
+ PermitMainFunctionArgument : true
+ CanShareDeviceMemory : true
+ RunnableOnSleep : false
+ SpecialMemoryArrange : true
+
+ # New3DS Exclusive Process Settings
+ SystemModeExt : Legacy # Legacy(Default)/124MB/178MB Legacy:Use Old3DS SystemMode
+ CpuSpeed : 804MHz # 256MHz(Default)/804MHz
+ EnableL2Cache : true # false(default)/true
+ CanAccessCore2 : true
+
+ # Virtual Address Mappings
+ IORegisterMapping:
+ - 1ff00000-1ff7ffff # DSP memory
+ MemoryMapping:
+ - 1f000000-1f5fffff:r # VRAM
+
+ # Accessible SVCs, :
+ SystemCallAccess:
+ ArbitrateAddress: 34
+ Backdoor: 123
+ Break: 60
+ CancelTimer: 28
+ ClearEvent: 25
+ ClearTimer: 29
+ CloseHandle: 35
+ ConnectToPort: 45
+ ControlMemory: 1
+ ControlProcessMemory: 112
+ CreateAddressArbiter: 33
+ CreateEvent: 23
+ CreateMemoryBlock: 30
+ CreateMutex: 19
+ CreateSemaphore: 21
+ CreateThread: 8
+ CreateTimer: 26
+ DuplicateHandle: 39
+ ExitProcess: 3
+ ExitThread: 9
+ GetCurrentProcessorNumber: 17
+ GetHandleInfo: 41
+ GetProcessId: 53
+ GetProcessIdOfThread: 54
+ GetProcessIdealProcessor: 6
+ GetProcessInfo: 43
+ GetResourceLimit: 56
+ GetResourceLimitCurrentValues: 58
+ GetResourceLimitLimitValues: 57
+ GetSystemInfo: 42
+ GetSystemTick: 40
+ GetThreadContext: 59
+ GetThreadId: 55
+ GetThreadIdealProcessor: 15
+ GetThreadInfo: 44
+ GetThreadPriority: 11
+ MapMemoryBlock: 31
+ OutputDebugString: 61
+ QueryMemory: 2
+ ReleaseMutex: 20
+ ReleaseSemaphore: 22
+ SendSyncRequest1: 46
+ SendSyncRequest2: 47
+ SendSyncRequest3: 48
+ SendSyncRequest4: 49
+ SendSyncRequest: 50
+ SetThreadPriority: 12
+ SetTimer: 27
+ SignalEvent: 24
+ SleepThread: 10
+ UnmapMemoryBlock: 32
+ WaitSynchronization1: 36
+ WaitSynchronizationN: 37
+
+ # Service List
+ # Maximum 34 services (32 if firmware is prior to 9.6.0)
+ ServiceAccessControl:
+ - APT:U
+ - ac:u
+ - am:net
+ - boss:U
+ - cam:u
+ - cecd:u
+ - cfg:nor
+ - cfg:u
+ - csnd:SND
+ - dsp::DSP
+ - frd:u
+ - fs:USER
+ - gsp::Gpu
+ - hid:USER
+ - http:C
+ - ir:rst
+ - ir:u
+ - ir:USER
+ - mic:u
+ - ndm:u
+ - news:u
+ - nwm::UDS
+ - ptm:u
+ - pxi:dev
+ - soc:U
+ - ssl:C
+ - y2r:u
+
+
+SystemControlInfo:
+ SaveDataSize: 0KB # Change if the app uses savedata
+ RemasterVersion: 2
+ StackSize: 0x40000
+
+ # Modules that run services listed above should be included below
+ # Maximum 48 dependencies
+ # :
+ Dependency:
+ ac: 0x0004013000002402
+ #act: 0x0004013000003802
+ am: 0x0004013000001502
+ boss: 0x0004013000003402
+ camera: 0x0004013000001602
+ cecd: 0x0004013000002602
+ cfg: 0x0004013000001702
+ codec: 0x0004013000001802
+ csnd: 0x0004013000002702
+ dlp: 0x0004013000002802
+ dsp: 0x0004013000001a02
+ friends: 0x0004013000003202
+ gpio: 0x0004013000001b02
+ gsp: 0x0004013000001c02
+ hid: 0x0004013000001d02
+ http: 0x0004013000002902
+ i2c: 0x0004013000001e02
+ ir: 0x0004013000003302
+ mcu: 0x0004013000001f02
+ mic: 0x0004013000002002
+ ndm: 0x0004013000002b02
+ news: 0x0004013000003502
+ #nfc: 0x0004013000004002
+ nim: 0x0004013000002c02
+ nwm: 0x0004013000002d02
+ pdn: 0x0004013000002102
+ ps: 0x0004013000003102
+ ptm: 0x0004013000002202
+ #qtm: 0x0004013020004202
+ ro: 0x0004013000003702
+ socket: 0x0004013000002e02
+ spi: 0x0004013000002302
+ ssl: 0x0004013000002f02
\ No newline at end of file
diff --git a/meta/icon.png b/meta/icon.png
new file mode 100644
index 0000000..50e7541
Binary files /dev/null and b/meta/icon.png differ
diff --git a/meta/icon.svg b/meta/icon.svg
new file mode 100644
index 0000000..be06dce
--- /dev/null
+++ b/meta/icon.svg
@@ -0,0 +1,96 @@
+
+
+
+