diff --git a/fix_name.bat b/fix_name.bat new file mode 100644 index 0000000..8419900 --- /dev/null +++ b/fix_name.bat @@ -0,0 +1 @@ +ren firm.bin test_firm.bin \ No newline at end of file diff --git a/include/arm9/crypto.h b/include/arm9/crypto.h index e708498..564a181 100644 --- a/include/arm9/crypto.h +++ b/include/arm9/crypto.h @@ -1,3 +1,10 @@ +/* + * AES code based on code from Normmatt + * + * 2016 + * profi200 + */ + #pragma once #include "types.h" @@ -45,7 +52,7 @@ #define AES_FLUSH_WRITE_FIFO (1u<<11) #define AES_BIT12 (1u<<12) #define AES_BIT13 (1u<<13) -#define AES_MAC_SIZE(n) ((n & 7u)<<16) +#define AES_MAC_SIZE(n) ((n - 2 / 2)<<16) #define AES_MAC_REGISTER_SOURCE (1u<<20) #define AES_MAC_STATUS (1u<<21) // AES_UNKNOWN_21 #define AES_OUTPUT_BIG (1u<<22) diff --git a/include/arm9/ndma.h b/include/arm9/ndma.h index 948ff60..44e32b5 100644 --- a/include/arm9/ndma.h +++ b/include/arm9/ndma.h @@ -1,3 +1,8 @@ +/** + * 2016 + * profi200 + */ + #pragma once #include "types.h" diff --git a/include/types.h b/include/types.h index 2880c12..8d599d1 100644 --- a/include/types.h +++ b/include/types.h @@ -1,5 +1,6 @@ #pragma once +#include #include #include #include @@ -7,6 +8,7 @@ #define NORETURN __attribute__((noreturn)) +#define PACKED __attribute__((packed)) #define ALIGN(n) __attribute__((aligned(n))) diff --git a/include/util.h b/include/util.h index f7cf193..5e76acb 100644 --- a/include/util.h +++ b/include/util.h @@ -1,5 +1,9 @@ #pragma once +#include "types.h" + + + static void sleep_wait(u32 cycles) { cycles >>= 2; @@ -9,3 +13,6 @@ cycles--; } } + +u32 getleu32(const void* ptr); +u32 swap32(u32 val); diff --git a/source/arm9/crypto.c b/source/arm9/crypto.c index 1dc5bce..cca4f40 100644 --- a/source/arm9/crypto.c +++ b/source/arm9/crypto.c @@ -1,11 +1,13 @@ /* * AES code based on code from Normmatt + * + * 2016 + * profi200 */ - #include #include "types.h" -#include "crypto.h" +#include "arm9/crypto.h" diff --git a/source/arm9/start.s b/source/arm9/start.s index 9ef2a77..722e832 100644 --- a/source/arm9/start.s +++ b/source/arm9/start.s @@ -23,7 +23,7 @@ .extern fake_heap_start .extern fake_heap_end -.section ".init" +.section ".crt0" diff --git a/source/arm9/util.c b/source/arm9/util.c deleted file mode 100644 index 3cf3cff..0000000 --- a/source/arm9/util.c +++ /dev/null @@ -1,15 +0,0 @@ -#include "types.h" - -u32 getleu32(const void* ptr) -{ - const u8* p = (const u8*)ptr; - - return (u32)((p[0]<<0) | (p[1]<<8) | (p[2]<<16) | (p[3]<<24)); -} - -u32 swap32(u32 num) -{ - return (num>>24) |((num>>8)&0xFF00) | - ((num<<8)&0xFF0000) | - (num<<24); -} diff --git a/source/util.c b/source/util.c new file mode 100644 index 0000000..19fd681 --- /dev/null +++ b/source/util.c @@ -0,0 +1,16 @@ +#include "types.h" + +u32 getleu32(const void* ptr) +{ + const u8* p = (const u8*)ptr; + + return (u32)((p[0]<<0) | (p[1]<<8) | (p[2]<<16) | (p[3]<<24)); +} + +u32 swap32(u32 val) +{ + return ((val>>24)| + (val>>8 & 0x0000FF00)| + (val<<8 & 0x00FF0000)| + (val<<24)); +}