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 09: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