diff --git a/include/segments.h b/include/segments.h index 99a716b8..d51e2423 100644 --- a/include/segments.h +++ b/include/segments.h @@ -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 diff --git a/sm64.ld b/sm64.ld index 414726c3..7bff39df 100755 --- a/sm64.ld +++ b/sm64.ld @@ -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 - .); diff --git a/src/boot/memory.c b/src/boot/memory.c index cfc084aa..4c3bd940 100644 --- a/src/boot/memory.c +++ b/src/boot/memory.c @@ -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;