mirror of
https://github.com/gbdev/rgbds.git
synced 2025-11-20 18:22:07 +00:00
Switch linkdefs from scattered arrays to an array of structs
The info is better organized this way
This commit is contained in:
101
src/linkdefs.c
101
src/linkdefs.c
@@ -1,48 +1,65 @@
|
||||
|
||||
#include "linkdefs.h"
|
||||
|
||||
uint16_t startaddr[] = {
|
||||
[SECTTYPE_ROM0] = 0x0000,
|
||||
[SECTTYPE_ROMX] = 0x4000,
|
||||
[SECTTYPE_VRAM] = 0x8000,
|
||||
[SECTTYPE_SRAM] = 0xA000,
|
||||
[SECTTYPE_WRAM0] = 0xC000,
|
||||
[SECTTYPE_WRAMX] = 0xD000,
|
||||
[SECTTYPE_OAM] = 0xFE00,
|
||||
[SECTTYPE_HRAM] = 0xFF80
|
||||
};
|
||||
|
||||
uint16_t maxsize[] = {
|
||||
[SECTTYPE_ROM0] = 0x8000, // patched to 0x4000 if !is32kMode
|
||||
[SECTTYPE_ROMX] = 0x4000,
|
||||
[SECTTYPE_VRAM] = 0x2000,
|
||||
[SECTTYPE_SRAM] = 0x2000,
|
||||
[SECTTYPE_WRAM0] = 0x2000, // patched to 0x1000 if !isWRA0Mode
|
||||
[SECTTYPE_WRAMX] = 0x1000,
|
||||
[SECTTYPE_OAM] = 0x00A0,
|
||||
[SECTTYPE_HRAM] = 0x007F
|
||||
};
|
||||
|
||||
uint32_t bankranges[][2] = {
|
||||
[SECTTYPE_ROM0] = {BANK_MIN_ROM0, BANK_MAX_ROM0},
|
||||
[SECTTYPE_ROMX] = {BANK_MIN_ROMX, BANK_MAX_ROMX},
|
||||
[SECTTYPE_VRAM] = {BANK_MIN_VRAM, BANK_MAX_VRAM},
|
||||
[SECTTYPE_SRAM] = {BANK_MIN_SRAM, BANK_MAX_SRAM},
|
||||
[SECTTYPE_WRAM0] = {BANK_MIN_WRAM0, BANK_MAX_WRAM0},
|
||||
[SECTTYPE_WRAMX] = {BANK_MIN_WRAMX, BANK_MAX_WRAMX},
|
||||
[SECTTYPE_OAM] = {BANK_MIN_OAM, BANK_MAX_OAM},
|
||||
[SECTTYPE_HRAM] = {BANK_MIN_HRAM, BANK_MAX_HRAM}
|
||||
};
|
||||
|
||||
char const * const typeNames[] = {
|
||||
[SECTTYPE_ROM0] = "ROM0",
|
||||
[SECTTYPE_ROMX] = "ROMX",
|
||||
[SECTTYPE_VRAM] = "VRAM",
|
||||
[SECTTYPE_SRAM] = "SRAM",
|
||||
[SECTTYPE_WRAM0] = "WRAM0",
|
||||
[SECTTYPE_WRAMX] = "WRAMX",
|
||||
[SECTTYPE_OAM] = "OAM",
|
||||
[SECTTYPE_HRAM] = "HRAM"
|
||||
// The default values are the most lax, as they are used as-is by RGBASM; only RGBLINK has the full info,
|
||||
// so RGBASM's job is only to catch unconditional errors earlier.
|
||||
struct SectionTypeInfo sectionTypeInfo[SECTTYPE_INVALID] = {
|
||||
[SECTTYPE_ROM0] = {
|
||||
.name = "ROM0",
|
||||
.startAddr = 0x0000,
|
||||
.size = 0x8000, // Patched to 0x4000 if !is32kMode
|
||||
.firstBank = 0,
|
||||
.lastBank = 0,
|
||||
},
|
||||
[SECTTYPE_ROMX] = {
|
||||
.name = "ROMX",
|
||||
.startAddr = 0x4000,
|
||||
.size = 0x4000,
|
||||
.firstBank = 1,
|
||||
.lastBank = 65535,
|
||||
},
|
||||
[SECTTYPE_VRAM] = {
|
||||
.name = "VRAM",
|
||||
.startAddr = 0x8000,
|
||||
.size = 0x2000,
|
||||
.firstBank = 0,
|
||||
.lastBank = 1, // Patched to 0 if isDmgMode
|
||||
},
|
||||
[SECTTYPE_SRAM] = {
|
||||
.name = "SRAM",
|
||||
.startAddr = 0xA000,
|
||||
.size = 0x2000,
|
||||
.firstBank = 0,
|
||||
.lastBank = 255,
|
||||
},
|
||||
[SECTTYPE_WRAM0] = {
|
||||
.name = "WRAM0",
|
||||
.startAddr = 0xC000,
|
||||
.size = 0x2000, // Patched to 0x1000 if !isWRA0Mode
|
||||
.firstBank = 0,
|
||||
.lastBank = 0,
|
||||
},
|
||||
[SECTTYPE_WRAMX] = {
|
||||
.name = "WRAMX",
|
||||
.startAddr = 0xD000,
|
||||
.size = 0x1000,
|
||||
.firstBank = 1,
|
||||
.lastBank = 7,
|
||||
},
|
||||
[SECTTYPE_OAM] = {
|
||||
.name = "OAM",
|
||||
.startAddr = 0xFE00,
|
||||
.size = 0x00A0,
|
||||
.firstBank = 0,
|
||||
.lastBank = 0,
|
||||
},
|
||||
[SECTTYPE_HRAM] = {
|
||||
.name = "HRAM",
|
||||
.startAddr = 0xFF80,
|
||||
.size = 0x007F,
|
||||
.firstBank = 0,
|
||||
.lastBank = 0,
|
||||
},
|
||||
};
|
||||
|
||||
char const * const sectionModNames[] = {
|
||||
|
||||
Reference in New Issue
Block a user