mirror of
https://github.com/gbdev/rgbds.git
synced 2026-10-05 19:56:18 +00:00
Reset LOAD offset when changing SECTIONs
This would cause spurious section overflow messages, since the load offset is added to the section's when computing its size.
This commit is contained in:
1 parent
e970b6d6eb
commit
69d7f84502
9 files changed
+52
-9
No files matched your search
+9
-9
@@ -418,6 +418,7 @@ void sect_NewSection(char const *name, uint32_t type, uint32_t org,
|
||||
|
||||
changeSection();
|
||||
curOffset = mod == SECTION_UNION ? 0 : sect->size;
|
||||
loadOffset = 0; // This is still used when checking for section size overflow!
|
||||
currentSection = sect;
|
||||
}
|
||||
|
||||
@@ -989,16 +990,15 @@ void sect_PopSection(void)
|
||||
if (currentLoadSection)
|
||||
fatalerror("Cannot change the section within a `LOAD` block!\n");
|
||||
|
||||
struct SectionStackEntry *sect;
|
||||
struct SectionStackEntry *entry = sectionStack;
|
||||
|
||||
sect = sectionStack;
|
||||
changeSection();
|
||||
currentSection = sect->section;
|
||||
currentLoadSection = sect->loadSection;
|
||||
sym_SetCurrentSymbolScope(sect->scope);
|
||||
curOffset = sect->offset;
|
||||
loadOffset = sect->loadOffset;
|
||||
currentSection = entry->section;
|
||||
currentLoadSection = entry->loadSection;
|
||||
sym_SetCurrentSymbolScope(entry->scope);
|
||||
curOffset = entry->offset;
|
||||
loadOffset = entry->loadOffset;
|
||||
|
||||
sectionStack = sect->next;
|
||||
free(sect);
|
||||
sectionStack = entry->next;
|
||||
free(entry);
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
|
||||
SECTION "Output", ROM0[0]
|
||||
dw Rom0Label1
|
||||
dw Rom0Label2
|
||||
dw SramLabel1
|
||||
dw SramLabel2
|
||||
dw RomxLabel1
|
||||
dw RomxLabel2
|
||||
dw HramLabel
|
||||
|
||||
|
||||
SECTION "A", ROM0[$1324]
|
||||
Rom0Label1:
|
||||
LOAD "LA", SRAM[$BEAD]
|
||||
SramLabel1:
|
||||
PUSHS
|
||||
; not inside a section or load section here yet
|
||||
SECTION "B", ROMX[$4698]
|
||||
RomxLabel1:
|
||||
LOAD "LB", HRAM[$FF86]
|
||||
HramLabel:
|
||||
ENDL
|
||||
RomxLabel2:
|
||||
POPS
|
||||
SramLabel2:
|
||||
ENDL
|
||||
Rom0Label2:
|
||||
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1 @@
|
||||
$$ⅩⅩ�F�F��
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
SECTION "Output", ROM0[0]
|
||||
db SIZEOF("ROM CODE")
|
||||
db SIZEOF("RAM CODE")
|
||||
db SIZEOF("HRAM")
|
||||
|
||||
|
||||
SECTION "ROM CODE",ROM0
|
||||
ds $80
|
||||
LOAD "RAM CODE",SRAM
|
||||
PUSHS
|
||||
SECTION "HRAM",HRAM
|
||||
ds 1
|
||||
POPS
|
||||
ENDL
|
||||
Whitespace-only changes.
Whitespace-only changes.
Binary file not shown.
Reference in new issue
Block a user