From 9e89151f22268368cd916caf5e020ce28186f58a Mon Sep 17 00:00:00 2001 From: fincs Date: Tue, 26 Aug 2014 22:51:50 +0200 Subject: [PATCH 1/8] Add .gitignore to examples --- examples/.gitignore | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 examples/.gitignore diff --git a/examples/.gitignore b/examples/.gitignore new file mode 100644 index 0000000..a4149ca --- /dev/null +++ b/examples/.gitignore @@ -0,0 +1,3 @@ +build/ +*.3dsx +*.elf From 589c59fab709f9885e4d60ca699785ae20128aa7 Mon Sep 17 00:00:00 2001 From: fincs Date: Tue, 26 Aug 2014 22:53:00 +0200 Subject: [PATCH 2/8] Move 3ds.h to root, add C++ guard, use #pragma once --- examples/gpu/source/main.c | 2 +- libctru/include/{3ds => }/3ds.h | 22 ++++++++++++++++++---- libctru/include/3ds/AC.h | 6 +----- libctru/include/3ds/APT.h | 5 +---- libctru/include/3ds/CFGNOR.h | 6 +----- libctru/include/3ds/CSND.h | 6 +----- libctru/include/3ds/FS.h | 18 ++---------------- libctru/include/3ds/GPU.h | 5 +---- libctru/include/3ds/GSP.h | 5 +---- libctru/include/3ds/GX.h | 5 +---- libctru/include/3ds/HID.h | 5 +---- libctru/include/3ds/HTTPC.h | 5 +---- libctru/include/3ds/IR.h | 6 +----- libctru/include/3ds/PTM.h | 5 +---- libctru/include/3ds/SHDR.h | 5 +---- libctru/include/3ds/SOC.h | 5 +---- libctru/include/3ds/gfx.h | 6 +----- libctru/include/3ds/os.h | 5 +---- libctru/include/3ds/srv.h | 5 +---- libctru/include/3ds/types.h | 7 +------ 20 files changed, 38 insertions(+), 96 deletions(-) rename libctru/include/{3ds => }/3ds.h (51%) diff --git a/examples/gpu/source/main.c b/examples/gpu/source/main.c index 159454f..40c46e0 100644 --- a/examples/gpu/source/main.c +++ b/examples/gpu/source/main.c @@ -2,7 +2,7 @@ #include #include #include -#include <3ds/3ds.h> +#include <3ds.h> #include "math.h" #include "test_vsh_shbin.h" #include "test_png_bin.h" diff --git a/libctru/include/3ds/3ds.h b/libctru/include/3ds.h similarity index 51% rename from libctru/include/3ds/3ds.h rename to libctru/include/3ds.h index 724712e..5b51a17 100644 --- a/libctru/include/3ds/3ds.h +++ b/libctru/include/3ds.h @@ -1,16 +1,30 @@ -#ifndef __3DS_H +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif //might be missing some #include <3ds/types.h> +#include <3ds/svc.h> #include <3ds/srv.h> +#include <3ds/os.h> +#include <3ds/AC.h> #include <3ds/APT.h> +#include <3ds/CFGNOR.h> +#include <3ds/CSND.h> +#include <3ds/FS.h> +#include <3ds/gfx.h> #include <3ds/GSP.h> #include <3ds/GX.h> #include <3ds/GPU.h> #include <3ds/HID.h> +#include <3ds/HTTPC.h> +#include <3ds/IR.h> +#include <3ds/PTM.h> #include <3ds/SHDR.h> -#include <3ds/svc.h> -#include <3ds/os.h> -#include <3ds/gfx.h> +#include <3ds/SOC.h> +#ifdef __cplusplus +} #endif diff --git a/libctru/include/3ds/AC.h b/libctru/include/3ds/AC.h index 0205d76..3db84fa 100644 --- a/libctru/include/3ds/AC.h +++ b/libctru/include/3ds/AC.h @@ -1,11 +1,7 @@ -#ifndef AC_H -#define AC_H +#pragma once Result acInit(); Result acExit(); Result ACU_GetWifiStatus(Handle* servhandle, u32 *out); Result ACU_WaitInternetConnection(); - -#endif - diff --git a/libctru/include/3ds/APT.h b/libctru/include/3ds/APT.h index aae153c..1a1e644 100644 --- a/libctru/include/3ds/APT.h +++ b/libctru/include/3ds/APT.h @@ -1,5 +1,4 @@ -#ifndef APT_H -#define APT_H +#pragma once // TODO : find a better place to put this #define RUNFLAG_APTWORKAROUND (BIT(0)) @@ -68,5 +67,3 @@ Result APT_ReplySleepQuery(Handle* handle, NS_APPID appID, u32 a); Result APT_ReplySleepNotificationComplete(Handle* handle, NS_APPID appID); Result APT_PrepareToCloseApplication(Handle* handle, u8 a); Result APT_CloseApplication(Handle* handle, u32 a, u32 b, u32 c); - -#endif diff --git a/libctru/include/3ds/CFGNOR.h b/libctru/include/3ds/CFGNOR.h index b6ca73d..6bcfd71 100644 --- a/libctru/include/3ds/CFGNOR.h +++ b/libctru/include/3ds/CFGNOR.h @@ -1,5 +1,4 @@ -#ifndef CFGNOR_H -#define CFGNOR_H +#pragma once Result CFGNOR_Initialize(u8 value); Result CFGNOR_Shutdown(); @@ -7,6 +6,3 @@ Result CFGNOR_ReadData(u32 offset, u32 *buf, u32 size); Result CFGNOR_WriteData(u32 offset, u32 *buf, u32 size); Result CFGNOR_DumpFlash(u32 *buf, u32 size); Result CFGNOR_WriteFlash(u32 *buf, u32 size); - -#endif - diff --git a/libctru/include/3ds/CSND.h b/libctru/include/3ds/CSND.h index 6ac0b89..f607955 100644 --- a/libctru/include/3ds/CSND.h +++ b/libctru/include/3ds/CSND.h @@ -1,5 +1,4 @@ -#ifndef CSND_H -#define CSND_H +#pragma once #define CSND_SHAREDMEM_DEFAULT 0x10004000 @@ -29,6 +28,3 @@ Result CSND_sharedmemtype0_cmdupdatestate(int waitdone); Result CSND_getchannelstate(u32 entryindex, u32 *out); Result CSND_getchannelstate_isplaying(u32 entryindex, u8 *status); - -#endif - diff --git a/libctru/include/3ds/FS.h b/libctru/include/3ds/FS.h index b0e82f6..5cf9945 100644 --- a/libctru/include/3ds/FS.h +++ b/libctru/include/3ds/FS.h @@ -1,20 +1,12 @@ #pragma once -#ifndef FS_H -#define FS_H +#include +#include <3ds/types.h> /*! @file FS.h * * Filesystem Services */ -#include -#include <3ds/types.h> - -#ifdef __cplusplus -extern "C" -{ -#endif - /*! @defgroup fs_open_flags FS Open Flags * * @sa FSUSER_OpenFile @@ -159,9 +151,3 @@ Result FSFILE_Flush(Handle handle); Result FSDIR_Read(Handle handle, u32 *entriesRead, u32 entrycount, FS_dirent *buffer); Result FSDIR_Close(Handle handle); - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/libctru/include/3ds/GPU.h b/libctru/include/3ds/GPU.h index 2d521e9..0b2ee2a 100644 --- a/libctru/include/3ds/GPU.h +++ b/libctru/include/3ds/GPU.h @@ -1,5 +1,4 @@ -#ifndef GPU_H -#define GPU_H +#pragma once void GPU_Init(Handle *gsphandle); void GPU_Reset(u32* gxbuf, u32* gpuBuf, u32 gpuBufSize); @@ -96,5 +95,3 @@ void GPU_SetTexEnv(u8 id, u16 rgbSources, u16 alphaSources, u16 rgbOperands, u16 void GPU_DrawArray(GPU_Primitive_t primitive, u32 n); void GPU_DrawElements(GPU_Primitive_t primitive, u32* indexArray, u32 n); - -#endif diff --git a/libctru/include/3ds/GSP.h b/libctru/include/3ds/GSP.h index 7a86c57..f7ddfc2 100644 --- a/libctru/include/3ds/GSP.h +++ b/libctru/include/3ds/GSP.h @@ -1,5 +1,4 @@ -#ifndef GSP_H -#define GSP_H +#pragma once #define GSP_REBASE_REG(r) ((r)-0x1EB00000) @@ -80,5 +79,3 @@ Result GSPGPU_RegisterInterruptRelayQueue(Handle *handle, Handle eventHandle, u3 Result GSPGPU_UnregisterInterruptRelayQueue(Handle* handle); Result GSPGPU_TriggerCmdReqQueue(Handle *handle); Result GSPGPU_SubmitGxCommand(u32* sharedGspCmdBuf, u32 gxCommand[0x8], Handle* handle); - -#endif diff --git a/libctru/include/3ds/GX.h b/libctru/include/3ds/GX.h index ad9e941..396a752 100644 --- a/libctru/include/3ds/GX.h +++ b/libctru/include/3ds/GX.h @@ -1,5 +1,4 @@ -#ifndef GX_H -#define GX_H +#pragma once #define GX_BUFFER_DIM(w, h) (((h)<<16)|((w)&0xFFFF)) @@ -9,5 +8,3 @@ Result GX_SetMemoryFill(u32* gxbuf, u32* buf0a, u32 buf0v, u32* buf0e, u16 width Result GX_SetDisplayTransfer(u32* gxbuf, u32* inadr, u32 indim, u32* outadr, u32 outdim, u32 flags); Result GX_SetTextureCopy(u32* gxbuf, u32* inadr, u32 indim, u32* outadr, u32 outdim, u32 size, u32 flags); Result GX_SetCommandList_First(u32* gxbuf, u32* buf0a, u32 buf0s, u32* buf1a, u32 buf1s, u32* buf2a, u32 buf2s); - -#endif diff --git a/libctru/include/3ds/HID.h b/libctru/include/3ds/HID.h index b361ebd..3e73eee 100644 --- a/libctru/include/3ds/HID.h +++ b/libctru/include/3ds/HID.h @@ -1,5 +1,4 @@ -#ifndef HID_H -#define HID_H +#pragma once #define HID_SHAREDMEM_DEFAULT (0x10000000) @@ -66,5 +65,3 @@ Result HIDUSER_EnableAccelerometer(); Result HIDUSER_DisableAccelerometer(); Result HIDUSER_EnableGyroscope(); Result HIDUSER_DisableGyroscope(); - -#endif diff --git a/libctru/include/3ds/HTTPC.h b/libctru/include/3ds/HTTPC.h index 3ceeb66..5e53e6f 100644 --- a/libctru/include/3ds/HTTPC.h +++ b/libctru/include/3ds/HTTPC.h @@ -1,5 +1,4 @@ -#ifndef HTTPC_H -#define HTTPC_H +#pragma once Result HTTPC_Initialize(Handle handle); Result HTTPC_InitializeConnectionSession(Handle handle, Handle contextHandle); @@ -9,5 +8,3 @@ Result HTTPC_SetProxyDefault(Handle handle, Handle contextHandle); Result HTTPC_AddRequestHeaderField(Handle handle, Handle contextHandle, char* name, char* value); Result HTTPC_BeginRequest(Handle handle, Handle contextHandle); Result HTTPC_ReceiveData(Handle handle, Handle contextHandle, u8* buffer, u32 size); - -#endif diff --git a/libctru/include/3ds/IR.h b/libctru/include/3ds/IR.h index 8c09d66..8134607 100644 --- a/libctru/include/3ds/IR.h +++ b/libctru/include/3ds/IR.h @@ -1,5 +1,4 @@ -#ifndef IR_H -#define IR_H +#pragma once Result IRU_Initialize(u32 *sharedmem_addr, u32 sharedmem_size);//The permissions for the specified memory is set to RO. This memory must be already mapped. Result IRU_Shutdown(); @@ -10,6 +9,3 @@ Result IRU_SetBitRate(u8 value); Result IRU_GetBitRate(u8 *out); Result IRU_SetIRLEDState(u32 value); Result IRU_GetIRLEDRecvState(u32 *out); - -#endif - diff --git a/libctru/include/3ds/PTM.h b/libctru/include/3ds/PTM.h index aa761f4..7c595b9 100644 --- a/libctru/include/3ds/PTM.h +++ b/libctru/include/3ds/PTM.h @@ -1,10 +1,7 @@ -#ifndef PTM_H -#define PTM_H +#pragma once Result ptmInit(); Result ptmExit(); Result PTMU_GetBatteryLevel(Handle* servhandle, u8 *out); Result PTMU_GetBatteryChargeState(Handle* servhandle, u8 *out); - -#endif diff --git a/libctru/include/3ds/SHDR.h b/libctru/include/3ds/SHDR.h index e6808f8..459aa0b 100644 --- a/libctru/include/3ds/SHDR.h +++ b/libctru/include/3ds/SHDR.h @@ -1,5 +1,4 @@ -#ifndef SHDR_H -#define SHDR_H +#pragma once typedef enum{ VERTEX_SHDR=0x0, @@ -67,5 +66,3 @@ void DVLP_SendOpDesc(DVLP_s* dvlp); void DVLE_SendOutmap(DVLE_s* dvle); void DVLE_SendConstants(DVLE_s* dvle); - -#endif diff --git a/libctru/include/3ds/SOC.h b/libctru/include/3ds/SOC.h index 3dc33ef..32fb909 100644 --- a/libctru/include/3ds/SOC.h +++ b/libctru/include/3ds/SOC.h @@ -1,8 +1,5 @@ -#ifndef SOC_H -#define SOC_H +#pragma once Result SOC_Initialize(u32 *context_addr, u32 context_size);//Example context_size: 0x48000. The specified context buffer can no longer be accessed by the process which called this function, since the userland permissions for this block are set to no-access. Result SOC_Shutdown(); int SOC_GetErrno(); - -#endif diff --git a/libctru/include/3ds/gfx.h b/libctru/include/3ds/gfx.h index 4c5b5e1..27923a9 100644 --- a/libctru/include/3ds/gfx.h +++ b/libctru/include/3ds/gfx.h @@ -1,6 +1,4 @@ -#ifndef GFX_H -#define GFX_H - +#pragma once #include <3ds/types.h> typedef enum @@ -34,5 +32,3 @@ void* gfxAllocLinear(size_t size); extern u8* gfxTopLeftFramebuffers[2]; extern u8* gfxSubFramebuffers[2]; extern u8* gfxBottomFramebuffers[2]; - -#endif diff --git a/libctru/include/3ds/os.h b/libctru/include/3ds/os.h index 0ae7eeb..c267590 100644 --- a/libctru/include/3ds/os.h +++ b/libctru/include/3ds/os.h @@ -1,5 +1,4 @@ -#ifndef OS_H -#define OS_H +#pragma once #define SYSTEM_VERSION(major, minor, revision) \ (((major)<<24)|((minor)<<16)|((revision)<<8)) @@ -8,5 +7,3 @@ u32 osConvertVirtToPhys(u32 vaddr); const char* osStrError(u32 error); u32 osGetFirmVersion(); u32 osGetKernelVersion(); - -#endif diff --git a/libctru/include/3ds/srv.h b/libctru/include/3ds/srv.h index 09d5afe..5012eeb 100644 --- a/libctru/include/3ds/srv.h +++ b/libctru/include/3ds/srv.h @@ -1,9 +1,6 @@ -#ifndef SRV_H -#define SRV_H +#pragma once Result srvInit(); Result srvExit(); Result srvRegisterClient(); Result srvGetServiceHandle(Handle* out, char* name); - -#endif diff --git a/libctru/include/3ds/types.h b/libctru/include/3ds/types.h index 0b24698..1168f12 100644 --- a/libctru/include/3ds/types.h +++ b/libctru/include/3ds/types.h @@ -2,10 +2,7 @@ types.h _ Various system types. */ -#ifndef TYPES_H -#define TYPES_H - - +#pragma once #include #include @@ -36,5 +33,3 @@ typedef s32 Result; typedef void (*ThreadFunc)(u32); #define BIT(n) (1U<<(n)) - -#endif From 8b9666ac4032d975c047d2426b8d122e19f40c31 Mon Sep 17 00:00:00 2001 From: fincs Date: Tue, 26 Aug 2014 22:56:38 +0200 Subject: [PATCH 3/8] 3ds/types.h: #include --- libctru/include/3ds/types.h | 1 + 1 file changed, 1 insertion(+) diff --git a/libctru/include/3ds/types.h b/libctru/include/3ds/types.h index 1168f12..bfd565e 100644 --- a/libctru/include/3ds/types.h +++ b/libctru/include/3ds/types.h @@ -5,6 +5,7 @@ #pragma once #include #include +#include #define U64_MAX UINT64_MAX From cad12973c8ca6e68f85dd43d2d0e06533b042e5a Mon Sep 17 00:00:00 2001 From: mtheall Date: Tue, 26 Aug 2014 15:58:18 -0500 Subject: [PATCH 4/8] Add FSUSER_IsSdmcDetected() and FSUSER_IsSdmcWritable(). --- libctru/include/3ds/FS.h | 2 + libctru/source/services/fs.c | 81 ++++++++++++++++++++++++++++++++++-- 2 files changed, 79 insertions(+), 4 deletions(-) diff --git a/libctru/include/3ds/FS.h b/libctru/include/3ds/FS.h index 5cf9945..d26920f 100644 --- a/libctru/include/3ds/FS.h +++ b/libctru/include/3ds/FS.h @@ -139,6 +139,8 @@ Result FSUSER_CloseArchive(Handle* handle, FS_archive* archive); Result FSUSER_CreateDirectory(Handle* handle, FS_archive archive, FS_path dirLowPath); Result FSUSER_DeleteFile(Handle *handle, FS_archive archive, FS_path fileLowPath); Result FSUSER_DeleteDirectory(Handle *handle, FS_archive archive, FS_path dirLowPath); +Result FSUSER_IsSdmcDetected(Handle *handle); +Result FSUSER_IsSdmcWritable(Handle *handle); Result FSFILE_Close(Handle handle); Result FSFILE_Read(Handle handle, u32 *bytesRead, u64 offset, void *buffer, u32 size); diff --git a/libctru/source/services/fs.c b/libctru/source/services/fs.c index cdd2f31..4216e85 100644 --- a/libctru/source/services/fs.c +++ b/libctru/source/services/fs.c @@ -1,8 +1,5 @@ #include -#include <3ds/types.h> -#include <3ds/FS.h> -#include <3ds/srv.h> -#include <3ds/svc.h> +#include <3ds.h> /*! @internal * @@ -609,6 +606,82 @@ FSUSER_CloseArchive(Handle *handle, return cmdbuf[1]; } +/*! Check if SD card is detected + * + * @param[in] handle fs:USER handle + * + * @returns error + * + * @internal + * + * #### Request + * + * Index Word | Description + * -----------|------------------------- + * 0 | Header code [0x08170000] + * + * #### Response + * + * Index Word | Description + * -----------|------------------------- + * 0 | Header code + * 1 | Result code + */ +Result +FSUSER_IsSdmcDetected(Handle *handle) +{ + if(!handle) + handle = &fsuHandle; + + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x08170000; + + Result ret = 0; + if((ret = svcSendSyncRequest(*handle))) + return ret; + + return cmdbuf[1]; +} + +/*! Check if SD card is writable + * + * @param[in] handle fs:USER handle + * + * @returns error + * + * @internal + * + * #### Request + * + * Index Word | Description + * -----------|------------------------- + * 0 | Header code [0x08180000] + * + * #### Response + * + * Index Word | Description + * -----------|------------------------- + * 0 | Header code + * 1 | Result code + */ +Result +FSUSER_IsSdmcWritable(Handle *handle) +{ + if(!handle) + handle = &fsuHandle; + + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x08180000; + + Result ret = 0; + if((ret = svcSendSyncRequest(*handle))) + return ret; + + return cmdbuf[1]; +} + /*! Close an open file * * @param[in] handle Open file handle From 9b370c7eff8d58de2cc0d1bf8b770be0f3d2c6f6 Mon Sep 17 00:00:00 2001 From: fincs Date: Tue, 26 Aug 2014 23:18:14 +0200 Subject: [PATCH 5/8] Reorganize includes --- libctru/include/3ds.h | 30 ++++++++++--------- libctru/include/3ds/{GPU.h => gpu/gpu.h} | 0 libctru/include/3ds/{GX.h => gpu/gx.h} | 0 libctru/include/3ds/{SHDR.h => gpu/shdr.h} | 0 libctru/include/3ds/{AC.h => services/ac.h} | 0 libctru/include/3ds/{APT.h => services/apt.h} | 0 .../3ds/{CFGNOR.h => services/cfgnor.h} | 0 .../include/3ds/{CSND.h => services/csnd.h} | 0 libctru/include/3ds/{FS.h => services/fs.h} | 0 libctru/include/3ds/{GSP.h => services/gsp.h} | 0 libctru/include/3ds/{HID.h => services/hid.h} | 0 .../include/3ds/{HTTPC.h => services/httpc.h} | 0 libctru/include/3ds/{IR.h => services/ir.h} | 0 libctru/include/3ds/{PTM.h => services/ptm.h} | 0 libctru/include/3ds/{SOC.h => services/soc.h} | 0 libctru/source/gfx.c | 7 +---- libctru/source/gpu/gpu.c | 6 +--- libctru/source/gpu/shdr.c | 7 +---- libctru/source/initSystem.c | 3 +- libctru/source/os.c | 4 +-- libctru/source/services/ac.c | 5 +--- libctru/source/services/apt.c | 6 +--- libctru/source/services/cfgnor.c | 5 +--- libctru/source/services/csnd.c | 6 +--- libctru/source/services/gsp.c | 5 +--- libctru/source/services/gx.c | 5 +--- libctru/source/services/hid.c | 5 +--- libctru/source/services/httpc.c | 4 +-- libctru/source/services/ir.c | 5 +--- libctru/source/services/ptm.c | 5 +--- libctru/source/services/soc.c | 6 +--- libctru/source/srv.c | 4 +-- 32 files changed, 33 insertions(+), 85 deletions(-) rename libctru/include/3ds/{GPU.h => gpu/gpu.h} (100%) rename libctru/include/3ds/{GX.h => gpu/gx.h} (100%) rename libctru/include/3ds/{SHDR.h => gpu/shdr.h} (100%) rename libctru/include/3ds/{AC.h => services/ac.h} (100%) rename libctru/include/3ds/{APT.h => services/apt.h} (100%) rename libctru/include/3ds/{CFGNOR.h => services/cfgnor.h} (100%) rename libctru/include/3ds/{CSND.h => services/csnd.h} (100%) rename libctru/include/3ds/{FS.h => services/fs.h} (100%) rename libctru/include/3ds/{GSP.h => services/gsp.h} (100%) rename libctru/include/3ds/{HID.h => services/hid.h} (100%) rename libctru/include/3ds/{HTTPC.h => services/httpc.h} (100%) rename libctru/include/3ds/{IR.h => services/ir.h} (100%) rename libctru/include/3ds/{PTM.h => services/ptm.h} (100%) rename libctru/include/3ds/{SOC.h => services/soc.h} (100%) diff --git a/libctru/include/3ds.h b/libctru/include/3ds.h index 5b51a17..6628e69 100644 --- a/libctru/include/3ds.h +++ b/libctru/include/3ds.h @@ -9,21 +9,23 @@ extern "C" { #include <3ds/svc.h> #include <3ds/srv.h> #include <3ds/os.h> -#include <3ds/AC.h> -#include <3ds/APT.h> -#include <3ds/CFGNOR.h> -#include <3ds/CSND.h> -#include <3ds/FS.h> #include <3ds/gfx.h> -#include <3ds/GSP.h> -#include <3ds/GX.h> -#include <3ds/GPU.h> -#include <3ds/HID.h> -#include <3ds/HTTPC.h> -#include <3ds/IR.h> -#include <3ds/PTM.h> -#include <3ds/SHDR.h> -#include <3ds/SOC.h> + +#include <3ds/services/ac.h> +#include <3ds/services/apt.h> +#include <3ds/services/cfgnor.h> +#include <3ds/services/csnd.h> +#include <3ds/services/fs.h> +#include <3ds/services/gsp.h> +#include <3ds/services/hid.h> +#include <3ds/services/httpc.h> +#include <3ds/services/ir.h> +#include <3ds/services/ptm.h> +#include <3ds/services/soc.h> + +#include <3ds/gpu/gx.h> +#include <3ds/gpu/gpu.h> +#include <3ds/gpu/shdr.h> #ifdef __cplusplus } diff --git a/libctru/include/3ds/GPU.h b/libctru/include/3ds/gpu/gpu.h similarity index 100% rename from libctru/include/3ds/GPU.h rename to libctru/include/3ds/gpu/gpu.h diff --git a/libctru/include/3ds/GX.h b/libctru/include/3ds/gpu/gx.h similarity index 100% rename from libctru/include/3ds/GX.h rename to libctru/include/3ds/gpu/gx.h diff --git a/libctru/include/3ds/SHDR.h b/libctru/include/3ds/gpu/shdr.h similarity index 100% rename from libctru/include/3ds/SHDR.h rename to libctru/include/3ds/gpu/shdr.h diff --git a/libctru/include/3ds/AC.h b/libctru/include/3ds/services/ac.h similarity index 100% rename from libctru/include/3ds/AC.h rename to libctru/include/3ds/services/ac.h diff --git a/libctru/include/3ds/APT.h b/libctru/include/3ds/services/apt.h similarity index 100% rename from libctru/include/3ds/APT.h rename to libctru/include/3ds/services/apt.h diff --git a/libctru/include/3ds/CFGNOR.h b/libctru/include/3ds/services/cfgnor.h similarity index 100% rename from libctru/include/3ds/CFGNOR.h rename to libctru/include/3ds/services/cfgnor.h diff --git a/libctru/include/3ds/CSND.h b/libctru/include/3ds/services/csnd.h similarity index 100% rename from libctru/include/3ds/CSND.h rename to libctru/include/3ds/services/csnd.h diff --git a/libctru/include/3ds/FS.h b/libctru/include/3ds/services/fs.h similarity index 100% rename from libctru/include/3ds/FS.h rename to libctru/include/3ds/services/fs.h diff --git a/libctru/include/3ds/GSP.h b/libctru/include/3ds/services/gsp.h similarity index 100% rename from libctru/include/3ds/GSP.h rename to libctru/include/3ds/services/gsp.h diff --git a/libctru/include/3ds/HID.h b/libctru/include/3ds/services/hid.h similarity index 100% rename from libctru/include/3ds/HID.h rename to libctru/include/3ds/services/hid.h diff --git a/libctru/include/3ds/HTTPC.h b/libctru/include/3ds/services/httpc.h similarity index 100% rename from libctru/include/3ds/HTTPC.h rename to libctru/include/3ds/services/httpc.h diff --git a/libctru/include/3ds/IR.h b/libctru/include/3ds/services/ir.h similarity index 100% rename from libctru/include/3ds/IR.h rename to libctru/include/3ds/services/ir.h diff --git a/libctru/include/3ds/PTM.h b/libctru/include/3ds/services/ptm.h similarity index 100% rename from libctru/include/3ds/PTM.h rename to libctru/include/3ds/services/ptm.h diff --git a/libctru/include/3ds/SOC.h b/libctru/include/3ds/services/soc.h similarity index 100% rename from libctru/include/3ds/SOC.h rename to libctru/include/3ds/services/soc.h diff --git a/libctru/source/gfx.c b/libctru/source/gfx.c index e3c78c4..0f7596b 100644 --- a/libctru/source/gfx.c +++ b/libctru/source/gfx.c @@ -1,12 +1,7 @@ #include #include #include - -#include <3ds/types.h> -#include <3ds/GSP.h> -#include <3ds/GX.h> -#include <3ds/svc.h> -#include <3ds/gfx.h> +#include <3ds.h> GSP_FramebufferInfo topFramebufferInfo, bottomFramebufferInfo; diff --git a/libctru/source/gpu/gpu.c b/libctru/source/gpu/gpu.c index e9e8067..5c995f8 100644 --- a/libctru/source/gpu/gpu.c +++ b/libctru/source/gpu/gpu.c @@ -4,11 +4,7 @@ #include #include -#include <3ds/types.h> -#include <3ds/GSP.h> -#include <3ds/GX.h> -#include <3ds/GPU.h> -#include <3ds/svc.h> +#include <3ds.h> u32* gpuCmdBuf; u32 gpuCmdBufSize; diff --git a/libctru/source/gpu/shdr.c b/libctru/source/gpu/shdr.c index 542f60b..bab4166 100644 --- a/libctru/source/gpu/shdr.c +++ b/libctru/source/gpu/shdr.c @@ -4,12 +4,7 @@ #include #include -#include <3ds/types.h> -#include <3ds/GSP.h> -#include <3ds/GX.h> -#include <3ds/GPU.h> -#include <3ds/SHDR.h> -#include <3ds/svc.h> +#include <3ds.h> //please don't feed this an invalid SHBIN diff --git a/libctru/source/initSystem.c b/libctru/source/initSystem.c index 0e89d63..b1ad146 100644 --- a/libctru/source/initSystem.c +++ b/libctru/source/initSystem.c @@ -1,7 +1,6 @@ #include -#include <3ds/types.h> -#include <3ds/svc.h> #include +#include <3ds.h> // System globals we define here int __system_argc; diff --git a/libctru/source/os.c b/libctru/source/os.c index b8d828f..f09bf24 100644 --- a/libctru/source/os.c +++ b/libctru/source/os.c @@ -1,6 +1,4 @@ -#include <3ds/types.h> -#include <3ds/svc.h> -#include <3ds/os.h> +#include <3ds.h> u32 osConvertVirtToPhys(u32 vaddr) { diff --git a/libctru/source/services/ac.c b/libctru/source/services/ac.c index 1b382d8..e99db11 100644 --- a/libctru/source/services/ac.c +++ b/libctru/source/services/ac.c @@ -1,8 +1,5 @@ #include -#include <3ds/types.h> -#include <3ds/AC.h> -#include <3ds/svc.h> -#include <3ds/srv.h> +#include <3ds.h> static Handle acHandle; diff --git a/libctru/source/services/apt.c b/libctru/source/services/apt.c index 9fe25c3..bda13b6 100644 --- a/libctru/source/services/apt.c +++ b/libctru/source/services/apt.c @@ -4,11 +4,7 @@ #include #include -#include <3ds/types.h> -#include <3ds/srv.h> -#include <3ds/APT.h> -#include <3ds/GSP.h> -#include <3ds/svc.h> +#include <3ds.h> #define APT_HANDLER_STACKSIZE (0x1000) diff --git a/libctru/source/services/cfgnor.c b/libctru/source/services/cfgnor.c index 45aa4e3..2041b99 100644 --- a/libctru/source/services/cfgnor.c +++ b/libctru/source/services/cfgnor.c @@ -1,8 +1,5 @@ #include -#include <3ds/types.h> -#include <3ds/svc.h> -#include <3ds/srv.h> -#include <3ds/CFGNOR.h> +#include <3ds.h> Handle CFGNOR_handle = 0; diff --git a/libctru/source/services/csnd.c b/libctru/source/services/csnd.c index 3663ab6..9eb11bb 100644 --- a/libctru/source/services/csnd.c +++ b/libctru/source/services/csnd.c @@ -1,10 +1,6 @@ #include #include -#include <3ds/types.h> -#include <3ds/os.h> -#include <3ds/svc.h> -#include <3ds/srv.h> -#include <3ds/CSND.h> +#include <3ds.h> //See here regarding CSND shared-mem commands, etc: http://3dbrew.org/wiki/CSND_Shared_Memory diff --git a/libctru/source/services/gsp.c b/libctru/source/services/gsp.c index 377547a..d92d7ea 100644 --- a/libctru/source/services/gsp.c +++ b/libctru/source/services/gsp.c @@ -4,10 +4,7 @@ #include #include -#include <3ds/types.h> -#include <3ds/GSP.h> -#include <3ds/svc.h> -#include <3ds/srv.h> +#include <3ds.h> #define GSP_EVENT_STACK_SIZE 0x1000 diff --git a/libctru/source/services/gx.c b/libctru/source/services/gx.c index 5b42eb1..c4fd8a1 100644 --- a/libctru/source/services/gx.c +++ b/libctru/source/services/gx.c @@ -3,10 +3,7 @@ */ #include -#include <3ds/types.h> -#include <3ds/GSP.h> -#include <3ds/GX.h> -#include <3ds/svc.h> +#include <3ds.h> Result GX_RequestDma(u32* gxbuf, u32* src, u32* dst, u32 length) { diff --git a/libctru/source/services/hid.c b/libctru/source/services/hid.c index b85ce9a..e67e60d 100644 --- a/libctru/source/services/hid.c +++ b/libctru/source/services/hid.c @@ -3,10 +3,7 @@ */ #include #include -#include <3ds/types.h> -#include <3ds/HID.h> -#include <3ds/srv.h> -#include <3ds/svc.h> +#include <3ds.h> Handle hidHandle; Handle hidMemHandle; diff --git a/libctru/source/services/httpc.c b/libctru/source/services/httpc.c index ce61824..d9e7ec7 100644 --- a/libctru/source/services/httpc.c +++ b/libctru/source/services/httpc.c @@ -1,7 +1,5 @@ #include -#include <3ds/types.h> -#include <3ds/HTTPC.h> -#include <3ds/svc.h> +#include <3ds.h> Result HTTPC_Initialize(Handle handle) { diff --git a/libctru/source/services/ir.c b/libctru/source/services/ir.c index b2e4078..22ec39a 100644 --- a/libctru/source/services/ir.c +++ b/libctru/source/services/ir.c @@ -1,9 +1,6 @@ #include #include -#include <3ds/types.h> -#include <3ds/svc.h> -#include <3ds/srv.h> -#include <3ds/IR.h> +#include <3ds.h> static Handle iru_handle=0; static Handle iru_sharedmem_handle=0; diff --git a/libctru/source/services/ptm.c b/libctru/source/services/ptm.c index 136c512..8fa21fc 100644 --- a/libctru/source/services/ptm.c +++ b/libctru/source/services/ptm.c @@ -1,8 +1,5 @@ #include -#include <3ds/types.h> -#include <3ds/svc.h> -#include <3ds/srv.h> -#include <3ds/PTM.h> +#include <3ds.h> static Handle ptmHandle; diff --git a/libctru/source/services/soc.c b/libctru/source/services/soc.c index 3e488c6..3791b9f 100644 --- a/libctru/source/services/soc.c +++ b/libctru/source/services/soc.c @@ -1,8 +1,3 @@ -#include <3ds/types.h> -#include <3ds/svc.h> -#include <3ds/srv.h> -#include <3ds/SOC.h> - #include #include #include @@ -10,6 +5,7 @@ #include #include #include +#include <3ds.h> Handle SOCU_handle = 0; static int SOCU_errno = 0; diff --git a/libctru/source/srv.c b/libctru/source/srv.c index 40f98d6..06f3d8b 100644 --- a/libctru/source/srv.c +++ b/libctru/source/srv.c @@ -3,9 +3,7 @@ */ #include -#include <3ds/types.h> -#include <3ds/srv.h> -#include <3ds/svc.h> +#include <3ds.h> /* From 2eadd6d0b249af1e0a79e3ae5944d3f70f6bbe76 Mon Sep 17 00:00:00 2001 From: mtheall Date: Tue, 26 Aug 2014 17:43:34 -0500 Subject: [PATCH 6/8] FIX DERP. --- libctru/include/3ds/services/fs.h | 4 ++-- libctru/source/services/fs.c | 18 ++++++++++++++---- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/libctru/include/3ds/services/fs.h b/libctru/include/3ds/services/fs.h index d26920f..28628aa 100644 --- a/libctru/include/3ds/services/fs.h +++ b/libctru/include/3ds/services/fs.h @@ -139,8 +139,8 @@ Result FSUSER_CloseArchive(Handle* handle, FS_archive* archive); Result FSUSER_CreateDirectory(Handle* handle, FS_archive archive, FS_path dirLowPath); Result FSUSER_DeleteFile(Handle *handle, FS_archive archive, FS_path fileLowPath); Result FSUSER_DeleteDirectory(Handle *handle, FS_archive archive, FS_path dirLowPath); -Result FSUSER_IsSdmcDetected(Handle *handle); -Result FSUSER_IsSdmcWritable(Handle *handle); +Result FSUSER_IsSdmcDetected(Handle *handle, u32 *detected); +Result FSUSER_IsSdmcWritable(Handle *handle, u32 *writable); Result FSFILE_Close(Handle handle); Result FSFILE_Read(Handle handle, u32 *bytesRead, u64 offset, void *buffer, u32 size); diff --git a/libctru/source/services/fs.c b/libctru/source/services/fs.c index 4216e85..99fcec4 100644 --- a/libctru/source/services/fs.c +++ b/libctru/source/services/fs.c @@ -608,7 +608,8 @@ FSUSER_CloseArchive(Handle *handle, /*! Check if SD card is detected * - * @param[in] handle fs:USER handle + * @param[in] handle fs:USER handle + * @param[out] detected Output detected state * * @returns error * @@ -628,7 +629,8 @@ FSUSER_CloseArchive(Handle *handle, * 1 | Result code */ Result -FSUSER_IsSdmcDetected(Handle *handle) +FSUSER_IsSdmcDetected(Handle *handle, + u32 *detected) { if(!handle) handle = &fsuHandle; @@ -641,12 +643,16 @@ FSUSER_IsSdmcDetected(Handle *handle) if((ret = svcSendSyncRequest(*handle))) return ret; + if(detected) + *detected = cmdbuf[2]; + return cmdbuf[1]; } /*! Check if SD card is writable * - * @param[in] handle fs:USER handle + * @param[in] handle fs:USER handle + * @param[out] writable Output writable state * * @returns error * @@ -666,7 +672,8 @@ FSUSER_IsSdmcDetected(Handle *handle) * 1 | Result code */ Result -FSUSER_IsSdmcWritable(Handle *handle) +FSUSER_IsSdmcWritable(Handle *handle, + u32 *writable) { if(!handle) handle = &fsuHandle; @@ -679,6 +686,9 @@ FSUSER_IsSdmcWritable(Handle *handle) if((ret = svcSendSyncRequest(*handle))) return ret; + if(writable) + *writable = cmdbuf[2]; + return cmdbuf[1]; } From a2911e48835548c9a2bb2f73d95cf3d8d2cb3c4a Mon Sep 17 00:00:00 2001 From: mtheall Date: Tue, 26 Aug 2014 17:54:52 -0500 Subject: [PATCH 7/8] Add word 2 to response for FSUSER_IsSdmcDetected() and FSUSER_IsSdmcWritable(). --- libctru/source/services/fs.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libctru/source/services/fs.c b/libctru/source/services/fs.c index 99fcec4..22910da 100644 --- a/libctru/source/services/fs.c +++ b/libctru/source/services/fs.c @@ -627,6 +627,7 @@ FSUSER_CloseArchive(Handle *handle, * -----------|------------------------- * 0 | Header code * 1 | Result code + * 2 | Whether SD is detected */ Result FSUSER_IsSdmcDetected(Handle *handle, @@ -670,6 +671,7 @@ FSUSER_IsSdmcDetected(Handle *handle, * -----------|------------------------- * 0 | Header code * 1 | Result code + * 2 | Whether SD is writable */ Result FSUSER_IsSdmcWritable(Handle *handle, From 43661f8263961984872b133022ce2e2ada35f336 Mon Sep 17 00:00:00 2001 From: mtheall Date: Tue, 26 Aug 2014 19:01:00 -0500 Subject: [PATCH 8/8] Add FSUSER_GetSdmcArchiveResource(). --- libctru/include/3ds/services/fs.h | 1 + libctru/source/services/fs.c | 62 +++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/libctru/include/3ds/services/fs.h b/libctru/include/3ds/services/fs.h index 28628aa..2fced27 100644 --- a/libctru/include/3ds/services/fs.h +++ b/libctru/include/3ds/services/fs.h @@ -139,6 +139,7 @@ Result FSUSER_CloseArchive(Handle* handle, FS_archive* archive); Result FSUSER_CreateDirectory(Handle* handle, FS_archive archive, FS_path dirLowPath); Result FSUSER_DeleteFile(Handle *handle, FS_archive archive, FS_path fileLowPath); Result FSUSER_DeleteDirectory(Handle *handle, FS_archive archive, FS_path dirLowPath); +Result FSUSER_GetSdmcArchiveResource(Handle *handle, u32 *sectorSize, u32 *clusterSize, u32 *numClusters, u32 *freeClusters); Result FSUSER_IsSdmcDetected(Handle *handle, u32 *detected); Result FSUSER_IsSdmcWritable(Handle *handle, u32 *writable); diff --git a/libctru/source/services/fs.c b/libctru/source/services/fs.c index 22910da..be5bbd0 100644 --- a/libctru/source/services/fs.c +++ b/libctru/source/services/fs.c @@ -606,6 +606,68 @@ FSUSER_CloseArchive(Handle *handle, return cmdbuf[1]; } +/*! Get SD FAT information + * + * @param[in] handle fs:USER handle + * @param[out] sectorSize Sector size (bytes) + * @param[out] clusterSize Cluster size (bytes) + * @param[out] numClusters Total number of clusters + * @param[out] freeClusters Number of free clusters + * + * @returns error + * + * @internal + * + * #### Request + * + * Index Word | Description + * -----------|------------------------- + * 0 | Header code [0x08140000] + * + * #### Response + * + * Index Word | Description + * -----------|------------------------- + * 0 | Header code + * 1 | Result code + * 2 | Sector (bytes) + * 3 | Cluster (bytes) + * 4 | Partition capacity (clusters) + * 5 | Free space (clusters) + */ +Result +FSUSER_GetSdmcArchiveResource(Handle *handle, + u32 *sectorSize, + u32 *clusterSize, + u32 *numClusters, + u32 *freeClusters) +{ + if(!handle) + handle = &fsuHandle; + + u32 *cmdbuf = getThreadCommandBuffer(); + + cmdbuf[0] = 0x08140000; + + Result ret = 0; + if((ret = svcSendSyncRequest(*handle))) + return ret; + + if(sectorSize) + *sectorSize = cmdbuf[2]; + + if(clusterSize) + *clusterSize = cmdbuf[3]; + + if(numClusters) + *numClusters = cmdbuf[4]; + + if(freeClusters) + *freeClusters = cmdbuf[5]; + + return cmdbuf[1]; +} + /*! Check if SD card is detected * * @param[in] handle fs:USER handle