Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions config/eur/arm9/delinks.txt
Original file line number Diff line number Diff line change
Expand Up @@ -89,3 +89,8 @@ libs/nds/src/sbc.c:
.text start:0x020198bc end:0x0201b1bc
.data start:0x02057354 end:0x02057434
.bss start:0x0205ae08 end:0x0205db08

libs/nds/src/heap.c:
complete
.text start:0x02017034 end:0x020179ac
.bss start:0x0205ade4 end:0x0205adf4
94 changes: 47 additions & 47 deletions config/eur/arm9/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -675,51 +675,51 @@ func_02016efc kind:function(thumb,size=0xd0) addr:0x02016efc
func_02016fcc kind:function(thumb,size=0x1a) addr:0x02016fcc
func_02016fe8 kind:function(thumb,size=0x2e) addr:0x02016fe8
func_02017018 kind:function(thumb,size=0x1c) addr:0x02017018
func_02017034 kind:function(thumb,size=0x1a) addr:0x02017034
func_02017050 kind:function(thumb,size=0x1c) addr:0x02017050
func_0201706c kind:function(thumb,size=0x20) addr:0x0201706c
func_0201708c kind:function(thumb,size=0x1a) addr:0x0201708c
func_020170a8 kind:function(thumb,size=0x50) addr:0x020170a8
func_020170f8 kind:function(thumb,size=0x100) addr:0x020170f8
func_020171f8 kind:function(thumb,size=0x7c) addr:0x020171f8
func_02017274 kind:function(thumb,size=0x74) addr:0x02017274
func_020172e8 kind:function(thumb,size=0x8c) addr:0x020172e8
func_02017374 kind:function(thumb,size=0x20) addr:0x02017374
func_02017394 kind:function(thumb,size=0x8) addr:0x02017394
NewEXPH kind:function(thumb,size=0x20) addr:0x0201739c
func_020173bc kind:function(thumb,size=0xe8) addr:0x020173bc
func_020174a4 kind:function(thumb,size=0x2a) addr:0x020174a4
func_020174d0 kind:function(thumb,size=0x16) addr:0x020174d0
func_020174e8 kind:function(thumb,size=0x46) addr:0x020174e8
func_02017530 kind:function(thumb,size=0x2c) addr:0x02017530
func_0201755c kind:function(thumb,size=0x3e) addr:0x0201755c
func_0201759c kind:function(thumb,size=0x3c) addr:0x0201759c
func_020175d8 kind:function(thumb,size=0xe) addr:0x020175d8
func_020175e8 kind:function(thumb,size=0x1a) addr:0x020175e8
func_02017604 kind:function(thumb,size=0x20) addr:0x02017604
func_02017624 kind:function(thumb,size=0x8) addr:0x02017624
NewFRMH kind:function(thumb,size=0x22) addr:0x0201762c
func_02017650 kind:function(thumb,size=0x1e) addr:0x02017650
func_02017670 kind:function(thumb,size=0x24) addr:0x02017670
func_02017694 kind:function(thumb,size=0x2e) addr:0x02017694
func_020176c4 kind:function(thumb,size=0x30) addr:0x020176c4
func_020176f4 kind:function(thumb,size=0x1c) addr:0x020176f4
func_02017710 kind:function(thumb,size=0x3e) addr:0x02017710
func_02017750 kind:function(thumb,size=0x1c) addr:0x02017750
func_0201776c kind:function(thumb,size=0x5c) addr:0x0201776c
func_020177c8 kind:function(thumb,size=0x10) addr:0x020177c8
func_020177d8 kind:function(thumb,size=0x10) addr:0x020177d8
func_020177e8 kind:function(thumb,size=0xc) addr:0x020177e8
func_020177f4 kind:function(thumb,size=0x1a) addr:0x020177f4
func_02017810 kind:function(thumb,size=0x2c) addr:0x02017810
func_0201783c kind:function(thumb,size=0x2a) addr:0x0201783c
func_02017868 kind:function(thumb,size=0x36) addr:0x02017868
func_020178a0 kind:function(thumb,size=0x3a) addr:0x020178a0
func_020178dc kind:function(thumb,size=0x10) addr:0x020178dc
func_020178ec kind:function(thumb,size=0xe) addr:0x020178ec
func_020178fc kind:function(thumb,size=0x98) addr:0x020178fc
func_02017994 kind:function(thumb,size=0x8) addr:0x02017994
func_0201799c kind:function(thumb,size=0x10) addr:0x0201799c
Heap_GetRegion kind:function(thumb,size=0x1a) addr:0x02017034
Heap_RemoveBlock kind:function(thumb,size=0x1c) addr:0x02017050
Heap_InsertBlock kind:function(thumb,size=0x20) addr:0x0201706c
Heap_InitBlock kind:function(thumb,size=0x1a) addr:0x0201708c
Heap_EXPHInit kind:function(thumb,size=0x50) addr:0x020170a8
Heap_AllocFreeBlock kind:function(thumb,size=0x100) addr:0x020170f8
Heap_EXPHAllocHead kind:function(thumb,size=0x7c) addr:0x020171f8
Heap_EXPHAllocTail kind:function(thumb,size=0x74) addr:0x02017274
Heap_EmptyRegion kind:function(thumb,size=0x8c) addr:0x020172e8
Heap_EXPHCreate kind:function(thumb,size=0x20) addr:0x02017374
Heap_EXPHDestroy kind:function(thumb,size=0x8) addr:0x02017394
Heap_EXPHNew kind:function(thumb,size=0x20) addr:0x0201739c
Heap_EXPHResizeBlock kind:function(thumb,size=0xe8) addr:0x020173bc
Heap_EXPHFreeBlock kind:function(thumb,size=0x2a) addr:0x020174a4
Heap_EXPHGetEmptySize kind:function(thumb,size=0x16) addr:0x020174d0
Heap_EXPHGetMaxEmptySize kind:function(thumb,size=0x46) addr:0x020174e8
Heap_FRMHInit kind:function(thumb,size=0x2c) addr:0x02017530
Heap_FRMHAllocHead kind:function(thumb,size=0x3e) addr:0x0201755c
Heap_FRMHAllocTail kind:function(thumb,size=0x3c) addr:0x0201759c
Heap_FRMHFreeHead kind:function(thumb,size=0xe) addr:0x020175d8
Heap_FRMHFreeTail kind:function(thumb,size=0x1a) addr:0x020175e8
Heap_FRMHCreate kind:function(thumb,size=0x20) addr:0x02017604
Heap_FRMHDestroy kind:function(thumb,size=0x8) addr:0x02017624
Heap_FRMHNew kind:function(thumb,size=0x22) addr:0x0201762c
Heap_FRMHFreeBlock kind:function(thumb,size=0x1e) addr:0x02017650
Heap_FRMHGetMaxEmptySize kind:function(thumb,size=0x24) addr:0x02017670
Heap_FRMHSaveState kind:function(thumb,size=0x2e) addr:0x02017694
Heap_FRMHLoadState kind:function(thumb,size=0x30) addr:0x020176c4
Heap_FRMHFreeEmpty kind:function(thumb,size=0x1c) addr:0x020176f4
Heap_FindBlockInternal kind:function(thumb,size=0x3e) addr:0x02017710
Heap_FindParentHeap kind:function(thumb,size=0x1c) addr:0x02017750
Heap_InitHeader kind:function(thumb,size=0x5c) addr:0x0201776c
Heap_DestroyInternal kind:function(thumb,size=0x10) addr:0x020177c8
Heap_FindBlock kind:function(thumb,size=0x10) addr:0x020177d8
Heap_InitList kind:function(thumb,size=0xc) addr:0x020177e8
Heap_ListSetFirst kind:function(thumb,size=0x1a) addr:0x020177f4
Heap_ListAppend kind:function(thumb,size=0x2c) addr:0x02017810
Heap_ListPrepend kind:function(thumb,size=0x2a) addr:0x0201783c
Heap_ListInsertBefore kind:function(thumb,size=0x36) addr:0x02017868
Heap_ListRemove kind:function(thumb,size=0x3a) addr:0x020178a0
Heap_ListNext kind:function(thumb,size=0x10) addr:0x020178dc
Heap_ListPrev kind:function(thumb,size=0xe) addr:0x020178ec
Heap_UNTHCreate kind:function(thumb,size=0x98) addr:0x020178fc
Heap_Destroy kind:function(thumb,size=0x8) addr:0x02017994
Heap_UNTHSize kind:function(thumb,size=0x10) addr:0x0201799c
func_020179ac kind:function(arm,size=0x20) addr:0x020179ac
func_020179cc kind:function(arm,size=0x18) addr:0x020179cc
func_020179e4 kind:function(arm,size=0x14) addr:0x020179e4
Expand Down Expand Up @@ -3014,8 +3014,8 @@ data_0205ada8 kind:bss addr:0x0205ada8
data_0205adac kind:bss addr:0x0205adac
data_0205adc0 kind:bss addr:0x0205adc0
data_0205ade0 kind:bss addr:0x0205ade0
data_0205ade4 kind:bss addr:0x0205ade4
data_0205ade8 kind:bss addr:0x0205ade8
gHeapListInitialized kind:bss addr:0x0205ade4 local
gHeapList kind:bss addr:0x0205ade8 local
data_0205adf4 kind:bss addr:0x0205adf4
data_0205ae08 kind:bss addr:0x0205ae08
data_0205db08 kind:bss addr:0x0205db08
Expand Down
5 changes: 5 additions & 0 deletions config/usa/arm9/delinks.txt
Original file line number Diff line number Diff line change
Expand Up @@ -85,3 +85,8 @@ libs/nds/src/sbc.c:
.text start:0x020198bc end:0x0201b1bc
.data start:0x020572f4 end:0x020573d4
.bss start:0x0205ada8 end:0x0205daa8

libs/nds/src/heap.c:
complete
.text start:0x02017034 end:0x020179ac
.bss start:0x0205ad84 end:0x0205ad94
94 changes: 47 additions & 47 deletions config/usa/arm9/symbols.txt
Original file line number Diff line number Diff line change
Expand Up @@ -675,51 +675,51 @@ func_02016efc kind:function(thumb,size=0xd0) addr:0x02016efc
func_02016fcc kind:function(thumb,size=0x1a) addr:0x02016fcc
func_02016fe8 kind:function(thumb,size=0x2e) addr:0x02016fe8
func_02017018 kind:function(thumb,size=0x1c) addr:0x02017018
func_02017034 kind:function(thumb,size=0x1a) addr:0x02017034
func_02017050 kind:function(thumb,size=0x1c) addr:0x02017050
func_0201706c kind:function(thumb,size=0x20) addr:0x0201706c
func_0201708c kind:function(thumb,size=0x1a) addr:0x0201708c
func_020170a8 kind:function(thumb,size=0x50) addr:0x020170a8
func_020170f8 kind:function(thumb,size=0x100) addr:0x020170f8
func_020171f8 kind:function(thumb,size=0x7c) addr:0x020171f8
func_02017274 kind:function(thumb,size=0x74) addr:0x02017274
func_020172e8 kind:function(thumb,size=0x8c) addr:0x020172e8
func_02017374 kind:function(thumb,size=0x20) addr:0x02017374
func_02017394 kind:function(thumb,size=0x8) addr:0x02017394
NewEXPH kind:function(thumb,size=0x20) addr:0x0201739c
func_020173bc kind:function(thumb,size=0xe8) addr:0x020173bc
func_020174a4 kind:function(thumb,size=0x2a) addr:0x020174a4
func_020174d0 kind:function(thumb,size=0x16) addr:0x020174d0
func_020174e8 kind:function(thumb,size=0x46) addr:0x020174e8
func_02017530 kind:function(thumb,size=0x2c) addr:0x02017530
func_0201755c kind:function(thumb,size=0x3e) addr:0x0201755c
func_0201759c kind:function(thumb,size=0x3c) addr:0x0201759c
func_020175d8 kind:function(thumb,size=0xe) addr:0x020175d8
func_020175e8 kind:function(thumb,size=0x1a) addr:0x020175e8
func_02017604 kind:function(thumb,size=0x20) addr:0x02017604
func_02017624 kind:function(thumb,size=0x8) addr:0x02017624
NewFRMH kind:function(thumb,size=0x22) addr:0x0201762c
func_02017650 kind:function(thumb,size=0x1e) addr:0x02017650
func_02017670 kind:function(thumb,size=0x24) addr:0x02017670
func_02017694 kind:function(thumb,size=0x2e) addr:0x02017694
func_020176c4 kind:function(thumb,size=0x30) addr:0x020176c4
func_020176f4 kind:function(thumb,size=0x1c) addr:0x020176f4
func_02017710 kind:function(thumb,size=0x3e) addr:0x02017710
func_02017750 kind:function(thumb,size=0x1c) addr:0x02017750
func_0201776c kind:function(thumb,size=0x5c) addr:0x0201776c
func_020177c8 kind:function(thumb,size=0x10) addr:0x020177c8
func_020177d8 kind:function(thumb,size=0x10) addr:0x020177d8
func_020177e8 kind:function(thumb,size=0xc) addr:0x020177e8
func_020177f4 kind:function(thumb,size=0x1a) addr:0x020177f4
func_02017810 kind:function(thumb,size=0x2c) addr:0x02017810
func_0201783c kind:function(thumb,size=0x2a) addr:0x0201783c
func_02017868 kind:function(thumb,size=0x36) addr:0x02017868
func_020178a0 kind:function(thumb,size=0x3a) addr:0x020178a0
func_020178dc kind:function(thumb,size=0x10) addr:0x020178dc
func_020178ec kind:function(thumb,size=0xe) addr:0x020178ec
func_020178fc kind:function(thumb,size=0x98) addr:0x020178fc
func_02017994 kind:function(thumb,size=0x8) addr:0x02017994
func_0201799c kind:function(thumb,size=0x10) addr:0x0201799c
Heap_GetRegion kind:function(thumb,size=0x1a) addr:0x02017034
Heap_RemoveBlock kind:function(thumb,size=0x1c) addr:0x02017050
Heap_InsertBlock kind:function(thumb,size=0x20) addr:0x0201706c
Heap_InitBlock kind:function(thumb,size=0x1a) addr:0x0201708c
Heap_EXPHInit kind:function(thumb,size=0x50) addr:0x020170a8
Heap_AllocFreeBlock kind:function(thumb,size=0x100) addr:0x020170f8
Heap_EXPHAllocHead kind:function(thumb,size=0x7c) addr:0x020171f8
Heap_EXPHAllocTail kind:function(thumb,size=0x74) addr:0x02017274
Heap_EmptyRegion kind:function(thumb,size=0x8c) addr:0x020172e8
Heap_EXPHCreate kind:function(thumb,size=0x20) addr:0x02017374
Heap_EXPHDestroy kind:function(thumb,size=0x8) addr:0x02017394
Heap_EXPHNew kind:function(thumb,size=0x20) addr:0x0201739c
Heap_EXPHResizeBlock kind:function(thumb,size=0xe8) addr:0x020173bc
Heap_EXPHFreeBlock kind:function(thumb,size=0x2a) addr:0x020174a4
Heap_EXPHGetEmptySize kind:function(thumb,size=0x16) addr:0x020174d0
Heap_EXPHGetMaxEmptySize kind:function(thumb,size=0x46) addr:0x020174e8
Heap_FRMHInit kind:function(thumb,size=0x2c) addr:0x02017530
Heap_FRMHAllocHead kind:function(thumb,size=0x3e) addr:0x0201755c
Heap_FRMHAllocTail kind:function(thumb,size=0x3c) addr:0x0201759c
Heap_FRMHFreeHead kind:function(thumb,size=0xe) addr:0x020175d8
Heap_FRMHFreeTail kind:function(thumb,size=0x1a) addr:0x020175e8
Heap_FRMHCreate kind:function(thumb,size=0x20) addr:0x02017604
Heap_FRMHDestroy kind:function(thumb,size=0x8) addr:0x02017624
Heap_FRMHNew kind:function(thumb,size=0x22) addr:0x0201762c
Heap_FRMHFreeBlock kind:function(thumb,size=0x1e) addr:0x02017650
Heap_FRMHGetMaxEmptySize kind:function(thumb,size=0x24) addr:0x02017670
Heap_FRMHSaveState kind:function(thumb,size=0x2e) addr:0x02017694
Heap_FRMHLoadState kind:function(thumb,size=0x30) addr:0x020176c4
Heap_FRMHFreeEmpty kind:function(thumb,size=0x1c) addr:0x020176f4
Heap_FindBlockInternal kind:function(thumb,size=0x3e) addr:0x02017710
Heap_FindParentHeap kind:function(thumb,size=0x1c) addr:0x02017750
Heap_InitHeader kind:function(thumb,size=0x5c) addr:0x0201776c
Heap_DestroyInternal kind:function(thumb,size=0x10) addr:0x020177c8
Heap_FindBlock kind:function(thumb,size=0x10) addr:0x020177d8
Heap_InitList kind:function(thumb,size=0xc) addr:0x020177e8
Heap_ListSetFirst kind:function(thumb,size=0x1a) addr:0x020177f4
Heap_ListAppend kind:function(thumb,size=0x2c) addr:0x02017810
Heap_ListPrepend kind:function(thumb,size=0x2a) addr:0x0201783c
Heap_ListInsertBefore kind:function(thumb,size=0x36) addr:0x02017868
Heap_ListRemove kind:function(thumb,size=0x3a) addr:0x020178a0
Heap_ListNext kind:function(thumb,size=0x10) addr:0x020178dc
Heap_ListPrev kind:function(thumb,size=0xe) addr:0x020178ec
Heap_UNTHCreate kind:function(thumb,size=0x98) addr:0x020178fc
Heap_Destroy kind:function(thumb,size=0x8) addr:0x02017994
Heap_UNTHSize kind:function(thumb,size=0x10) addr:0x0201799c
func_020179ac kind:function(arm,size=0x20) addr:0x020179ac
func_020179cc kind:function(arm,size=0x18) addr:0x020179cc
func_020179e4 kind:function(arm,size=0x14) addr:0x020179e4
Expand Down Expand Up @@ -3014,8 +3014,8 @@ data_0205ada8 kind:bss addr:0x0205ad48
data_0205adac kind:bss addr:0x0205ad4c
data_0205adc0 kind:bss addr:0x0205ad60
data_0205ade0 kind:bss addr:0x0205ad80
data_0205ade4 kind:bss addr:0x0205ad84
data_0205ade8 kind:bss addr:0x0205ad88
gHeapListInitialized kind:bss addr:0x0205ad84 local
gHeapList kind:bss addr:0x0205ad88 local
data_0205adf4 kind:bss addr:0x0205ad94
data_0205ae08 kind:bss addr:0x0205ada8
data_0205db08 kind:bss addr:0x0205daa8
Expand Down
1 change: 1 addition & 0 deletions include/Actor/ActorManager.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
#include "types.h"

#include "lib/files.hpp"
#include "nds/heap.h"

#include "Actor/Actor.hpp"
#include "Actor/ActorRef.hpp"
Expand Down
104 changes: 104 additions & 0 deletions libs/nds/include/nds/heap.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
#include "global.h"
#include "types.h"

#ifdef __cplusplus
extern "C" {
#endif

typedef struct Heap_Region_ {
/* 00 */ void *start;
/* 04 */ void *end;
/* 08 */
} Heap_Region;

typedef struct Heap_LinkedObject_ {
/* 00 */ void *prev;
/* 04 */ void *next;
/* 08 */
} Heap_LinkedObject;

typedef struct Heap_LinkedList_ {
/* 00 */ void *head;
/* 04 */ void *tail;
/* 08 */ u16 numElements;
/* 0a */ u16 offset;
/* 0c */
} Heap_LinkedList;

typedef struct Heap_Header_ {
/* 00 */ u32 stamp;
/* 04 */ Heap_LinkedObject link;
/* 0c */ Heap_LinkedList children;
/* 18 */ void *startAddr;
/* 1c */ void *endAddr;
/* 20 */ u32 flags;
/* 24 */
} Heap_Header;

typedef struct Heap_EXPHBlockHeader_ {
/* 00 */ u16 stamp;
/* 02 */ u16 flags;
/* 04 */ u32 size;
/* 08 */ struct Heap_EXPHBlockHeader_ *prev;
/* 0c */ struct Heap_EXPHBlockHeader_ *next;
/* 20 */
} Heap_EXPHBlockHeader;

typedef struct Heap_EXPHBlockList_ {
/* 00 */ Heap_EXPHBlockHeader *head;
/* 04 */ Heap_EXPHBlockHeader *tail;
/* 08 */
} Heap_EXPHBlockList;

typedef struct Heap_EXPHHeader_ {
/* 00 */ Heap_EXPHBlockList freeBlocks;
/* 08 */ Heap_EXPHBlockList usedBlocks;
/* 10 */ u16 id;
/* 12 */ u16 flags;
/* 14 */
} Heap_EXPHHeader;

typedef struct Heap_FRMHState_ {
/* 00 */ u32 id;
/* 04 */ void *head;
/* 08 */ void *tail;
/* 0c */ struct Heap_FRMHState_ *prev;
/* 10 */
} Heap_FRMHState;

typedef struct Heap_FRMHHeader_ {
/* 00 */ void *head;
/* 04 */ void *tail;
/* 08 */ Heap_FRMHState *state;
/* 0c */
} Heap_FRMHHeader;

typedef struct Heap_UNTHBlockHeader_ {
/* 00 */ struct Heap_UNTHBlockHeader_ *next;
/* 04 */
} Heap_UNTHBlockHeader;

typedef struct Heap_UNTHBlockList_ {
/* 00 */ Heap_UNTHBlockHeader *head;
/* 04 */
} Heap_UNTHBlockList;

typedef struct Heap_UNTHHeader_ {
/* 00 */ Heap_UNTHBlockList freeBlocks;
/* 04 */ u32 blockSize;
/* 08 */
} Heap_UNTHHeader;

// function declarations
void *Heap_EXPHNew(Heap_Header *heap, u32 size, int alignment);
void Heap_EXPHFreeBlock(Heap_Header *heap, void *memBlock);
void Heap_InitHeader(Heap_Header *pHeapHd, u32 signature, void *heapStart, void *heapEnd, u16 optFlag);
void Heap_DestroyInternal(Heap_Header *pHeapHd);
void Heap_InitList(Heap_LinkedList *list, u16 offset);
void Heap_ListAppend(Heap_LinkedList *list, void *object);
void Heap_ListRemove(Heap_LinkedList *list, void *object);
void *Heap_ListNext(Heap_LinkedList *list, void *object);

#ifdef __cplusplus
}
#endif
Loading
Loading