Reverted moving the buffers to fix pool issues

This commit is contained in:
Mr-Wiseguy
2022-01-07 13:07:32 -05:00
committed by Mr-Wiseguy
parent 9d7d56989e
commit 797f9fa223
3 changed files with 10 additions and 29 deletions

View File

@@ -38,7 +38,7 @@
* importing large custom content.
*/
#define SEG_POOL_START _engineSegmentBssEnd // 0x0165000 in size
#define SEG_POOL_START _framebuffersSegmentBssEnd // 0x0165000 in size
#define POOL_SIZE RAM_END - SEG_POOL_START
#define MAP_PARSER_ADDRESS 0x80345678

26
sm64.ld
View File

@@ -102,6 +102,13 @@ SECTIONS
END_SEG(boot)
. = (RAM_START + 0x400);
BEGIN_NOLOAD(zbuffer)
{
BUILD_DIR/src/buffers/zbuffer.o(.bss*);
}
END_NOLOAD(zbuffer)
. = _zbufferSegmentBssEnd;
BEGIN_NOLOAD(buffers)
{
BUILD_DIR/src/buffers/buffers.o(.bss*);
@@ -279,28 +286,13 @@ SECTIONS
. = ALIGN(0x40);
}
END_NOLOAD(engine)
#ifndef USE_EXT_RAM
. = 0x80200000;
#else
. = 0x80400000;
#endif
. = _engineSegmentBssEnd;
BEGIN_NOLOAD(framebuffers)
{
BUILD_DIR/src/buffers/framebuffers.o(.bss*);
}
END_NOLOAD(framebuffers)
#ifndef USE_EXT_RAM
. = 0x80300000;
#else
. = 0x80500000;
#endif
BEGIN_NOLOAD(zbuffer)
{
BUILD_DIR/src/buffers/zbuffer.o(.bss*);
}
END_NOLOAD(zbuffer)
. = _engineSegmentBssEnd;
__mainPoolStart = .;
__mainPoolSize = (RAM_END - .);

View File

@@ -139,11 +139,6 @@ void main_pool_init(void *start, void *end) {
#endif
}
extern u8 _framebuffersSegmentBssStart[];
extern u8 _framebuffersSegmentBssEnd[];
extern u8 _zbufferSegmentBssStart[];
extern u8 _zbufferSegmentBssEnd[];
/**
* Allocate a block of memory from the pool of given size, and from the
* specified side of the pool (MEMORY_POOL_LEFT or MEMORY_POOL_RIGHT).
@@ -158,12 +153,6 @@ void *main_pool_alloc(u32 size, u32 side) {
sPoolFreeSpace -= size;
if (side == MEMORY_POOL_LEFT) {
newListHead = (struct MainPoolBlock *) ((u8 *) sPoolListHeadL + size);
if ((u32)newListHead >= (u32)&_framebuffersSegmentBssStart && (u32)newListHead <= (u32)&_framebuffersSegmentBssEnd) {
newListHead = (struct MainPoolBlock *)ALIGN16((u32)&_framebuffersSegmentBssEnd + 0x40);
}
if ((u32)newListHead >= (u32)&_zbufferSegmentBssStart && (u32)newListHead <= (u32)&_zbufferSegmentBssEnd) {
newListHead = (struct MainPoolBlock *)ALIGN16((u32)&_zbufferSegmentBssEnd + 0x40);
}
sPoolListHeadL->next = newListHead;
newListHead->prev = sPoolListHeadL;
newListHead->next = NULL;