From 2695f8d39a2ecef149ca864934ed0fd49bbd7ff6 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 21 Jan 2018 14:57:28 -0500 Subject: Include in global.h and add dependency scanning --- include/global.h | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) (limited to 'include') diff --git a/include/global.h b/include/global.h index 75592d5..66c1b6d 100644 --- a/include/global.h +++ b/include/global.h @@ -1,10 +1,11 @@ #ifndef GUARD_GLOBAL_H #define GUARD_GLOBAL_H +#include #include "gba/gba.h" // IDE support -#ifdef __APPLE__ +#if defined(__APPLE__) || defined(__CYGWIN__) #define _(x) x #define __(x) x #define INCBIN_U8 {0} @@ -13,9 +14,6 @@ #define INCBIN_S8 {0} #define INCBIN_S16 {0} #define INCBIN_S32 {0} -void * memcpy (void *, const void *, size_t); -void * memset (void *, int, size_t); -int strcmp (const char *, const char *); #endif // Prevent cross-jump optimization. @@ -26,14 +24,6 @@ int strcmp (const char *, const char *); #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n") -#define nonmatching(fndec, x) {\ -__attribute__((naked))\ -fndec\ -{\ - asm_unified(x);\ -}\ -} - #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) #endif // GUARD_GLOBAL_H -- cgit v1.2.3 From 91c6c244007944ffcd5da2e42b1a5221b0ce2074 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 21 Jan 2018 16:51:04 -0500 Subject: sub_8006218 --- include/code_800558C.h | 6 ++++++ include/file_system.h | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+) create mode 100644 include/code_800558C.h create mode 100644 include/file_system.h (limited to 'include') diff --git a/include/code_800558C.h b/include/code_800558C.h new file mode 100644 index 0000000..be974cc --- /dev/null +++ b/include/code_800558C.h @@ -0,0 +1,6 @@ +#ifndef GUARD_code_800558C_H +#define GUARD_code_800558C_H + +extern u32 gUnknown_203B078; + +#endif //GUARD_code_800558C_H diff --git a/include/file_system.h b/include/file_system.h new file mode 100644 index 0000000..360f7ac --- /dev/null +++ b/include/file_system.h @@ -0,0 +1,34 @@ +#ifndef GUARD_FILE_SYSTEM_H +#define GUARD_FILE_SYSTEM_H + +struct File +{ + char *name; + u8 *data; +}; + +struct OpenedFile +{ + struct File *file; + u8 *data; +}; + +struct FileArchive +{ + char magic[8]; + s32 count; + struct File *entries; +}; + +struct SiroArchive +{ + u32 magic; + u8 *data; +}; + +struct OpenedFile *OpenFile(const char *filename, const struct FileArchive *arc); +u8 *GetFileDataPtr(struct OpenedFile *openedFile, int unused); +struct OpenedFile *OpenFileAndGetFileDataPtr(const char *filename, const struct FileArchive *arc); +struct OpenedFile *Call_OpenFileAndGetFileDataPtr(const char *filename, const struct FileArchive *arc); + +#endif //GUARD_FILE_SYSTEM_H -- cgit v1.2.3 From 8bff04787167a733caa74c0b22dcd332b391f54d Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 21 Jan 2018 17:12:02 -0500 Subject: through sub_80063D8 --- include/code_800B540.h | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 include/code_800B540.h (limited to 'include') diff --git a/include/code_800B540.h b/include/code_800B540.h new file mode 100644 index 0000000..050998e --- /dev/null +++ b/include/code_800B540.h @@ -0,0 +1,6 @@ +#ifndef GUARD_code_800B540_H +#define GUARD_code_800B540_H + +void sub_800CDA8(int a0); + +#endif //GUARD_code_800B540_H -- cgit v1.2.3 From 192ee78bb96bae8dc8316cdd9edf2112ad2d1777 Mon Sep 17 00:00:00 2001 From: scnorton Date: Sun, 21 Jan 2018 17:48:35 -0500 Subject: through sub_8006438 --- include/code_800558C.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'include') diff --git a/include/code_800558C.h b/include/code_800558C.h index be974cc..e1b3432 100644 --- a/include/code_800558C.h +++ b/include/code_800558C.h @@ -1,6 +1,6 @@ #ifndef GUARD_code_800558C_H #define GUARD_code_800558C_H -extern u32 gUnknown_203B078; +extern void *gUnknown_203B078; #endif //GUARD_code_800558C_H -- cgit v1.2.3 From f4ef62bb4134498a4b4a9c4d61b99bda24c98680 Mon Sep 17 00:00:00 2001 From: nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> Date: Sun, 18 Nov 2018 16:23:57 +0800 Subject: Renamed primary heap variables and partial cleanup m4a.s --- include/gba/defines.h | 4 +++- include/memory.h | 56 +++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 include/memory.h (limited to 'include') diff --git a/include/gba/defines.h b/include/gba/defines.h index 7fd429d..5f0123a 100644 --- a/include/gba/defines.h +++ b/include/gba/defines.h @@ -8,6 +8,8 @@ #define IWRAM_DATA __attribute__((section("iwram_data"))) #define EWRAM_DATA __attribute__((section("ewram_data"))) +#define UNUSED __attribute__((unused)) +#define NAKED __attribute__((naked)) #define ALIGNED(n) __attribute__((aligned(n))) @@ -59,4 +61,4 @@ #define WIN_RANGE(a, b) (((a) << 8) | (b)) -#endif // GUARD_GBA_DEFINES +#endif // GUARD_GBA_DEFINES \ No newline at end of file diff --git a/include/memory.h b/include/memory.h new file mode 100644 index 0000000..99b03e0 --- /dev/null +++ b/include/memory.h @@ -0,0 +1,56 @@ +#ifndef GUARD_MEMORY_H +#define GUARD_MEMORY_H + +#define HEAP_SIZE 0x24000 + +struct HeapSettings +{ + u8 *start; + u32 size; +}; + +struct HeapMemoryBlock { + u8 *start; + s32 size; + s32 allocatedSize; +}; + +struct HeapFreeListElement +{ + u32 unk_atb; + u32 atb; + u32 grp; + struct HeapMemoryBlock block; +}; + +struct HeapDescriptor +{ + u32 unk0; + u32 unk4; + struct HeapFreeListElement *freeList; + s32 freeCount; + u32 freeListLength; + u8 *start; + u32 size; +}; + +void InitHeap(void); + +void MemoryClear8(u8 *dest, s32 size); +void MemoryClear16(u16 *dest, s32 size); +void MemoryClear32(u32 *dest, s32 size); +void MemoryFill8(u8 *dest, u8 value, s32 size); +void MemoryFill16(u16 *dest, u16 value, s32 size); +void MemoryFill32(u32 *dest, u32 value, s32 size); +void MemoryCopy8(u8 *dest, u8 *src, s32 size); +void MemoryCopy16(u16 *dest, u16 *src, s32 size); +void MemoryCopy32(u32 *dest, u32 *src, s32 size); +void MemoryCopy8(u8 *dest, u8 *src, s32 size); +void MemoryCopy16(u16 *dest, u16 *src, s32 size); +void MemoryCopy32(u32 *dest, u32 *src, s32 size); + +void InitHeapInternal(void); +void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32); +void InitSubHeap(struct HeapDescriptor *, struct HeapFreeListElement *, u32); + +#endif // GUARD_MEMORY_H \ No newline at end of file -- cgit v1.2.3 From c7045ae3694f677b634f3908c1ea935c2998727e Mon Sep 17 00:00:00 2001 From: nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> Date: Tue, 20 Nov 2018 13:17:30 +0800 Subject: Identify, split, decompile m4a, and more ResetSprites, gCharMemCursor, gSpriteCount; analysed subheaps; identified more file pointers --- include/memory.h | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/memory.h b/include/memory.h index 99b03e0..4b1e587 100644 --- a/include/memory.h +++ b/include/memory.h @@ -26,7 +26,7 @@ struct HeapFreeListElement struct HeapDescriptor { u32 unk0; - u32 unk4; + struct HeapDescriptor *parentHeap; struct HeapFreeListElement *freeList; s32 freeCount; u32 freeListLength; @@ -51,6 +51,6 @@ void MemoryCopy32(u32 *dest, u32 *src, s32 size); void InitHeapInternal(void); void DoInitHeap(struct HeapDescriptor *, struct HeapSettings *, struct HeapFreeListElement *, u32); -void InitSubHeap(struct HeapDescriptor *, struct HeapFreeListElement *, u32); +void InitSubHeap(struct HeapDescriptor *, struct HeapMemoryBlock *, u32); -#endif // GUARD_MEMORY_H \ No newline at end of file +#endif // GUARD_MEMORY_H -- cgit v1.2.3 From ff37bfefe07cdbb6e087e0123576a1b338145dce Mon Sep 17 00:00:00 2001 From: nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> Date: Tue, 20 Nov 2018 19:49:35 +0800 Subject: Dump gMPlayTable and gSongTable --- include/macros/m4a.inc | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 include/macros/m4a.inc (limited to 'include') diff --git a/include/macros/m4a.inc b/include/macros/m4a.inc new file mode 100644 index 0000000..6c5abc0 --- /dev/null +++ b/include/macros/m4a.inc @@ -0,0 +1,13 @@ + .macro song label, music_player, unknown + .4byte \label + .2byte \music_player + .2byte \unknown + .endm + + .macro music_player info_struct, track_struct, unknown_1, unknown_2 + .4byte \info_struct + .4byte \track_struct + .byte \unknown_1 + .space 1 + .2byte \unknown_2 + .endm -- cgit v1.2.3 From a611b9673e73eeb74af802250d9fee5157f76a20 Mon Sep 17 00:00:00 2001 From: nullableVoidPtr <30564701+nullableVoidPtr@users.noreply.github.com> Date: Wed, 21 Nov 2018 18:48:01 +0800 Subject: "Finish" decompiling bg_palette_buffer.s and m4a_2.s, and rename text variables We all have our breaking points :matchlikethis: --- include/global.h | 2 ++ 1 file changed, 2 insertions(+) (limited to 'include') diff --git a/include/global.h b/include/global.h index 66c1b6d..b5a4593 100644 --- a/include/global.h +++ b/include/global.h @@ -24,6 +24,8 @@ #define asm_unified(x) asm(".syntax unified\n" x "\n.syntax divided\n") +#define NAKED __attribute__((naked)) + #define ARRAY_COUNT(array) (sizeof(array) / sizeof((array)[0])) #endif // GUARD_GLOBAL_H -- cgit v1.2.3