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 up to 512 MB (8 KB segment) or 1 GB (16 KB segment).
 +
 
 +
A 16-bit segment register may allow to select one of 65536 segments for each memory bank.
  
 
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.
 
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.
+
In this way, we could build hardware capable of running standard ASCII8/16 ROMs in addition to the new 16-bit format.
  
 
Detection by emulators should be fairly easy (counting ROM write accesses).
 
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.
+
Below, the parts in blue are the only additions to the standard ASCII8/16 format.
  
−
== MRC16 mapper ==
+
== ASCII-EX16 mapper ==
  
 
{| class="wikitable"
 
{| class="wikitable"
Line 18: Line 20:
 
|}
 
|}
  
−
== MRC8 mapper ==
+
== ASCII-EX8 mapper ==
  
 
{| class="wikitable"
 
{| class="wikitable"

Revision as of 10:16, 22 November 2023

Here's a proposal for a mapper format operating with a 16-bit segment register and allowing ROMs of up to 512 MB (8 KB segment) or 1 GB (16 KB segment).

A 16-bit segment register may allow to select one of 65536 segments for each memory bank.

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 standard 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 standard ASCII8/16 format.

ASCII-EX16 mapper

Bank (16kB) Switching address Initial segment
4000h~7FFFh (mirror: C000h~FFFFh) Lower byte: 6000h (mirrors: 6001h~67FFh)
Higher byte: 8000h (mirror: 8001h~87FFh)
00000h
8000h~BFFFh (mirror: 0000h~3FFFh) Lower byte: 7000h (mirrors: 7001h~77FFh)
Higher byte: 9000h (mirror: 9001h~97FFh)
00000h

ASCII-EX8 mapper

Bank (8kB) Switching address Initial segment
4000h~5FFFh (mirror: C000h~DFFFh) Lower byte: 6000h (mirrors: 6001h~67FFh)
Higher byte: 8000h (mirror: 8001h~87FFh)
00000h
6000h~7FFFh (mirror: E000h~FFFFh) Lower byte: 6800h (mirrors: 6801h~6FFFh)
Higher byte: 8800h (mirror: 8801h~8FFFh)
00000h
8000h~9FFFh (mirror: 0000h~1FFFh) Lower byte: 7000h (mirrors: 7001h~77FFh)
Higher byte: 9000h (mirror: 9001h~97FFh)
00000h
A000h~BFFFh (mirror: 2000h~3FFFh) Lower byte: 7800h (mirrors: 7801h~7FFFh)
Higher byte: 9800h (mirror: 9801h~9FFFh)
00000h