Difference between revisions of "ASCII-EX mapper"
From MSX Game Library
Line 1: | Line 1: | ||
Here's a proposal for a mapper format operating with a 16-bit segment register and allowing ROMs of 512 MB (8 KB segment) or 1 GB (16 KB segment). | Here's a proposal for a mapper format operating with a 16-bit segment register and allowing ROMs of 512 MB (8 KB segment) or 1 GB (16 KB segment). | ||
− | The idea is to use the ASCII8/16 mapper format | + | The idea is to use the ASCII8/16 mapper format for the low byte of the segment register and to use the 8000h~9FFFh memory space unused by ASCII to manage the high byte. |
+ | In this way, we could build hardware capable of running ASCII8/16 ROMs in addition to the new 16-bit format. | ||
− | + | Detection by emulators should be fairly easy (counting ROM write accesses). | |
+ | |||
+ | Below, the parts in blue are the only additions to the ASCII8/16 format. | ||
== MRC16 mapper == | == MRC16 mapper == |
Revision as of 10:04, 12 July 2023
Here's a proposal for a mapper format operating with a 16-bit segment register and allowing ROMs of 512 MB (8 KB segment) or 1 GB (16 KB segment).
The idea is to use the ASCII8/16 mapper format for the low byte of the segment register and to use the 8000h~9FFFh memory space unused by ASCII to manage the high byte. In this way, we could build hardware capable of running ASCII8/16 ROMs in addition to the new 16-bit format.
Detection by emulators should be fairly easy (counting ROM write accesses).
Below, the parts in blue are the only additions to the ASCII8/16 format.
MRC16 mapper
Bank (16kB) | Switching address | Initial segment |
---|---|---|
4000h~7FFFh (mirror: C000h~FFFFh) | Lower byte: 6000h (mirrors: 6001h~67FFh) Higher byte: 8000h (mirror: 8001h~87FFh) |
0 |
8000h~BFFFh (mirror: 0000h~3FFFh) | Lower byte: 7000h (mirrors: 7001h~77FFh) Higher byte: 9000h (mirror: 9001h~97FFh) |
0 |
MRC8 mapper
Bank (8kB) | Switching address | Initial segment |
---|---|---|
4000h~5FFFh (mirror: C000h~DFFFh) | Lower byte: 6000h (mirrors: 6001h~67FFh) Higher byte: 8000h (mirror: 8001h~87FFh) |
0 |
6000h~7FFFh (mirror: E000h~FFFFh) | Lower byte: 6800h (mirrors: 6801h~6FFFh) Higher byte: 8800h (mirror: 8801h~8FFFh) |
0 |
8000h~9FFFh (mirror: 0000h~1FFFh) | Lower byte: 7000h (mirrors: 7001h~77FFh) Higher byte: 9000h (mirror: 9001h~97FFh) |
0 |
A000h~BFFFh (mirror: 2000h~3FFFh) | Lower byte: 7800h (mirrors: 7801h~7FFFh) Higher byte: 9800h (mirror: 9801h~9FFFh) |
0 |