Reset goddard segment on load

This commit is contained in:
a
2025-06-22 20:09:05 -04:00
parent 5be4aff8aa
commit b8ca566e42
2 changed files with 7 additions and 1 deletions

View File

@@ -45,10 +45,12 @@ DECLARE_SEGMENT(framebuffers)
extern u8 _goddardSegmentStart[];
extern u8 _engineSegmentStart[];
extern u8 _engineSegmentNoloadEnd[];
extern u8 _engineSegmentEnd[];
extern u8 _framebuffersSegmentNoloadEnd[];
extern u8 _goddardSegmentNoloadStart[];
extern u8 _goddardSegmentNoloadEnd[];
DECLARE_LEVEL_SEGMENT(menu)
DECLARE_LEVEL_SEGMENT(intro)
DECLARE_LEVEL_SEGMENT(ending)

View File

@@ -305,6 +305,10 @@ void *load_to_fixed_pool_addr(u8 *destAddr, u8 *srcStart, u8 *srcEnd) {
u32 srcSize = ALIGN16(srcEnd - srcStart);
u32 destSize = ALIGN16((u8 *) sPoolListHeadR - destAddr);
if (destAddr == _goddardSegmentStart) { // Clear goddard bss
bzero((u8 *) _goddardSegmentNoloadStart, (u8 *) _goddardSegmentNoloadEnd - (u8 *) _goddardSegmentNoloadStart);
}
if (srcSize <= destSize) {
dest = main_pool_alloc(destSize, MEMORY_POOL_RIGHT);
if (dest != NULL) {