Add segment type "overlay".

This commit is contained in:
Laubzega
2018-08-25 10:18:23 -07:00
parent 31461aaf02
commit 8b584cb89f
4 changed files with 59 additions and 15 deletions

View File

@@ -193,8 +193,13 @@ static void BinWriteMem (BinDesc* D, MemoryArea* M)
NewAddr += M->Start;
}
if (DoWrite || (M->Flags & MF_FILL) != 0) {
WriteMult (D->F, M->FillVal, NewAddr-Addr);
PrintNumVal ("SF_OFFSET", NewAddr - Addr);
/* Seek back for "overlay" segments */
if (NewAddr < Addr) {
fseek(D->F, NewAddr - M->Start, SEEK_SET);
} else {
WriteMult (D->F, M->FillVal, NewAddr-Addr);
PrintNumVal ("SF_OFFSET", NewAddr - Addr);
}
}
Addr = NewAddr;
}