I've created a mapper that maps 0x4020 to 0xFFFF to PRG ROM.
I called it Akerasoft Mapper 474.
It maps more than NROM-368. But an NROM-368 is also planned. So the original one is NROM-383 (rounding down).
My prototype uses FLASH memory but is designed to be programmed before soldering and is not reflashable.
https://www.nesdev.org/wiki/NROM-368
My design however is this 64KB of ROM space:
Bank 0:
Memory 0x0000 - 0x3FFF (empty or ignored, all zeros?)
Bank 1:
Memory 0x4000 - 0x401F (empty or ignored, all zeros?)
Memory 0x4020 - 0x7FFF (PRG)
Bank 2:
Memory 0x8000 - 0xBFFF (PRG)
Bank 3:
Memory 0xC000 - 0xFFFF (PRG)
Mapper 472 submapper 0 - 0x4020 - 0xFFFF (NROM-383)
Repo: https://github.com/Akerasoft/AS_Mapper_474
Schematic: https://github.com/Akerasoft/AS_Mapper_ ... ematic.pdf
Mapper 472 submapper 1 - 0x4800 - 0xFFFF (NROM-368)
Repo: https://github.com/Akerasoft/AS-NROM-368
Schematic: https://github.com/Akerasoft/AS-NROM-36 ... ematic.pdf
For .NES File my design is this 48KB of ROM space:
Bank 0:
Memory 0x4000 - 0x401F (empty or ignored, all zeros?)
Memory 0x4020 - 0x7FFF (PRG)
Bank 1:
Memory 0x8000 - 0xBFFF (PRG)
Bank 2:
Memory 0xC000 - 0xFFFF (PRG)
Repos for the above built ROMs:
https://github.com/Akerasoft/hello_world_nrom_383
https://github.com/Akerasoft/hello_world_nrom_368
Code: Select all
|--------|-----------|---------------|--------|----------------|----------|----------|-----------|-----------|
| Mapper | Submapper | Mapper Type | Save | Save Type | ROM Size | RAM Size | ROM Start | RAM Start |
|--------|-----------|---------------|--------|----------------|----------|----------|-----------|-----------|
| 474 | 0 | NROM-383 | N | None | ~48KB | None | 0x4020 | N/A |
|--------|-----------|---------------|--------|----------------|----------|----------|-----------|-----------|
| 474 | 1 | NROM-368 | N | None | 46KB | None | 0x4800 | N/A |
|--------|-----------|---------------|--------|----------------|----------|----------|-----------|-----------|
| 474 | 2 | NROM-320 | N | None | 40KB | None | 0x6000 | N/A |
|--------|-----------|---------------|--------|----------------|----------|----------|-----------|-----------|
| 474 | 3 | NROM-320-SB | Y | SRAM + Battery | 40KB | ~8KB | 0x6000 | 0x4020 |
|--------|-----------|---------------|--------|----------------|----------|----------|-----------|-----------|
| 474 | 3 | NROM-320-SF | Y | FRAM AKA FeRAM | 40KB | ~8KB | 0x6000 | 0x4020 |
|--------|-----------|---------------|--------|----------------|----------|----------|-----------|-----------|
ROM is from 0x6000 to 0xFFFF.
For mapper 474 submapper #3 with saving...
Save RAM is from 0x4020 to 0x5FFF
ROM is from 0x6000 to 0xFFFF.
FRAM also called FeRAM is a special type of non-volatile memory that is as fast as SRAM but does not need a battery to be non-volatile.
It is more expensive than SRAM. It is also RAM because it can be accessed randomly for both read and write just like SRAM.