diff options
| author | Miquel Sabaté Solà <mikisabate@gmail.com> | 2025-01-23 16:14:12 +0100 |
|---|---|---|
| committer | Miquel Sabaté Solà <mikisabate@gmail.com> | 2025-02-04 22:00:07 +0100 |
| commit | fdf44365e56c3741f47cbd421a57f0d074a5492c (patch) | |
| tree | 92b55944dd84171f6c42857402b1f90f835abfa2 /config/mmc3.cfg | |
| parent | 6c207c192b7ce1a292249afd7b0a3499be70d03c (diff) | |
| download | code.nes-fdf44365e56c3741f47cbd421a57f0d074a5492c.tar.gz code.nes-fdf44365e56c3741f47cbd421a57f0d074a5492c.zip | |
fx: Provide an example of PPU bank switching
Signed-off-by: Miquel Sabaté Solà <mikisabate@gmail.com>
Diffstat (limited to 'config/mmc3.cfg')
| -rw-r--r-- | config/mmc3.cfg | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/config/mmc3.cfg b/config/mmc3.cfg new file mode 100644 index 0000000..9dbfa05 --- /dev/null +++ b/config/mmc3.cfg @@ -0,0 +1,93 @@ +MEMORY { + # iNES header + HEADER: file = %O, start = $0000, size = $0010, fill = yes; + + # First 15 switchable banks at $8000. + PRG0_00: start = $8000, size = $2000, file = %O, fill = yes, fillval = $00; + PRG0_01: start = $8000, size = $2000, file = %O, fill = yes, fillval = $01; + PRG0_02: start = $8000, size = $2000, file = %O, fill = yes, fillval = $02; + PRG0_03: start = $8000, size = $2000, file = %O, fill = yes, fillval = $03; + PRG0_04: start = $8000, size = $2000, file = %O, fill = yes, fillval = $04; + PRG0_05: start = $8000, size = $2000, file = %O, fill = yes, fillval = $05; + PRG0_06: start = $8000, size = $2000, file = %O, fill = yes, fillval = $06; + PRG0_07: start = $8000, size = $2000, file = %O, fill = yes, fillval = $07; + PRG0_08: start = $8000, size = $2000, file = %O, fill = yes, fillval = $08; + PRG0_09: start = $8000, size = $2000, file = %O, fill = yes, fillval = $09; + PRG0_0A: start = $8000, size = $2000, file = %O, fill = yes, fillval = $0A; + PRG0_0B: start = $8000, size = $2000, file = %O, fill = yes, fillval = $0B; + PRG0_0C: start = $8000, size = $2000, file = %O, fill = yes, fillval = $0C; + PRG0_0D: start = $8000, size = $2000, file = %O, fill = yes, fillval = $0D; + PRG0_0E: start = $8000, size = $2000, file = %O, fill = yes, fillval = $0E; + + # Last 15 switchable banks at $A000. + PRG1_00: start = $A000, size = $2000, file = %O, fill = yes, fillval = $10; + PRG1_01: start = $A000, size = $2000, file = %O, fill = yes, fillval = $11; + PRG1_02: start = $A000, size = $2000, file = %O, fill = yes, fillval = $12; + PRG1_03: start = $A000, size = $2000, file = %O, fill = yes, fillval = $13; + PRG1_04: start = $A000, size = $2000, file = %O, fill = yes, fillval = $14; + PRG1_05: start = $A000, size = $2000, file = %O, fill = yes, fillval = $15; + PRG1_06: start = $A000, size = $2000, file = %O, fill = yes, fillval = $16; + PRG1_07: start = $A000, size = $2000, file = %O, fill = yes, fillval = $17; + PRG1_08: start = $A000, size = $2000, file = %O, fill = yes, fillval = $18; + PRG1_09: start = $A000, size = $2000, file = %O, fill = yes, fillval = $19; + PRG1_0A: start = $A000, size = $2000, file = %O, fill = yes, fillval = $1A; + PRG1_0B: start = $A000, size = $2000, file = %O, fill = yes, fillval = $1B; + PRG1_0C: start = $A000, size = $2000, file = %O, fill = yes, fillval = $1C; + PRG1_0D: start = $A000, size = $2000, file = %O, fill = yes, fillval = $1D; + PRG1_0E: start = $A000, size = $2000, file = %O, fill = yes, fillval = $1E; + + # Last two fixed banks + vectors. + FIXED: start = $C000, size = $2000, fill = yes, fillval = $FA, define = yes; + TAIL: start = $E000, size = $1FFA, fill = yes, fillval = $FB, define = yes; + ROMV: start = $FFFA, size = $0006, fill = yes, fillval = $FC, define = yes; + + # CHR ROM. Groupped all together as we don't need as much flexibility + # really, but `incbin` statements will suffice. + CHARS: start = $0000, size = $20000, file = %O, fill = no; +} + +SEGMENTS { + HEADER: load = HEADER, type = ro; + + # 15 first switchable banks. + PRG0_00: load = PRG0_00, type = ro; + PRG0_01: load = PRG0_01, type = ro; + PRG0_02: load = PRG0_02, type = ro; + PRG0_03: load = PRG0_03, type = ro; + PRG0_04: load = PRG0_04, type = ro; + PRG0_05: load = PRG0_05, type = ro; + PRG0_06: load = PRG0_06, type = ro; + PRG0_07: load = PRG0_07, type = ro; + PRG0_08: load = PRG0_08, type = ro; + PRG0_09: load = PRG0_09, type = ro; + PRG0_0A: load = PRG0_0A, type = ro; + PRG0_0B: load = PRG0_0B, type = ro; + PRG0_0C: load = PRG0_0C, type = ro; + PRG0_0D: load = PRG0_0D, type = ro; + PRG0_0E: load = PRG0_0E, type = ro; + + # 15 last switchable banks. + PRG1_00: load = PRG1_00, type = ro; + PRG1_01: load = PRG1_01, type = ro; + PRG1_02: load = PRG1_02, type = ro; + PRG1_03: load = PRG1_03, type = ro; + PRG1_04: load = PRG1_04, type = ro; + PRG1_05: load = PRG1_05, type = ro; + PRG1_06: load = PRG1_06, type = ro; + PRG1_07: load = PRG1_07, type = ro; + PRG1_08: load = PRG1_08, type = ro; + PRG1_09: load = PRG1_09, type = ro; + PRG1_0A: load = PRG1_0A, type = ro; + PRG1_0B: load = PRG1_0B, type = ro; + PRG1_0C: load = PRG1_0C, type = ro; + PRG1_0D: load = PRG1_0D, type = ro; + PRG1_0E: load = PRG1_0E, type = ro; + + # Last two fixed banks + vectors. + FIXED: load = FIXED, type = ro; + TAIL: load = TAIL, type = ro; + VECTORS: load = ROMV, type = ro; + + # CHR-ROM is groupped all together. + CHARS: load = CHARS, type = ro; +} |
