User:Lidnariq/Discrete Logic Table: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (minor reformat, add m168)
(GTROM should be on the list)
 
(29 intermediate revisions by 2 users not shown)
Line 1: Line 1:
It appears that all discrete logic mappers either switch 32kB at a time with no fixed bank ("GxROM-like"), or have a 16kB fixed bank and can switch the other ("UxROM-like"). The tables below illustrate the tradeoffs between CHR, PRG, and banking style.
It appears that all discrete logic mappers either switch 32kB at a time with no fixed bank ("GxROM-like"), or have a 16kB fixed bank and can switch the other ("UxROM-like"). The tables below illustrate the tradeoffs between CHR, PRG, and banking style.


How on earth do I make these HTML tables look good in wiki markup?
{| class="datatable" style="text-align:center;"
|-
! colspan=2 rowspan=2| GxROM-like !! colspan="9" style="text-align:center;" rowspan="1"|8kB CHR bank bits
|-
!0 !! 1 !! 2 !! 3 !! 4 !! 5 !! 6 !! 7 !! 8
|-
! colspan="1" rowspan="9"|32kB PRG bank bits !! 0
| [[NROM]], [[iNES Mapper 143|143]], [[iNES Mapper 185|185]] || [[iNES Mapper 099|Vs. System]], [[iNES Mapper 145|145]], [[iNES Mapper 149|149]] || [[CNROM]], [[iNES Mapper 087|87]]=[[iNES Mapper 101|101]], [[CPROM]]†, [[iNES Mapper 173|173]] ||  ||  ||  ||  ||  || style="border-right:1px solid black; border-bottom:1px solid black;"| oversize [[CNROM]]
|-
!1
| [[AxROM|AN1ROM]]¹ ||  || [[GxROM|MHROM]], [[iNES Mapper 132|132]], [[iNES Mapper 133|133]], [[iNES Mapper 203|203]] || [[NINA-003-006|NINA-03/06]]=[[iNES Mapper 146|146]], [[iNES Mapper 148|148]] ||  ||  ||  || style="border-right:1px solid black; border-bottom:1px solid black;"| ||
|-
!2
| [[AxROM|ANROM]]¹, [[BNROM]] ||  || [[GxROM|GNROM]], [[iNES Mapper 038|38]], [[NES 2.0 Mapper 299|299]]ʰ, [[NES 2.0 Mapper 379|379]] || [[iNES Mapper 058|58]]ʰ=[[iNES Mapper 213|213]], [[iNES Mapper 059|59]]ʰ, [[iNES Mapper 086|86]], [[iNES Mapper 096|96]]†, [[iNES Mapper 174|174]]ʰ, [[NES 2.0 Mapper 288|288]] || [[Color Dreams]], [[iNES Mapper 036|36]], [[iNES Mapper 057|57]]ʰ, [[iNES Mapper 140|140]], [[iNES Mapper 147|147]], [[NES 2.0 Mapper 319|319]]ʰ, [[NES 2.0 Mapper 332|332]]ʰ ||  || style="border-right:1px solid black; border-bottom:1px solid black;"| oversize [[iNES Mapper 038|38]] || ||
|-
!3
| [[AxROM|AOROM]]¹, [[NES 2.0 Mapper 283|283]] ||  ||  ||  || [[iNES Mapper 041|41]]ʰ, [[iNES Mapper 113|113]]ʰ, [[NES 2.0 Mapper 261|261]]ʰ, [[NES 2.0 Mapper 335|335]]ʰ || style="border-right:1px solid black; border-bottom:1px solid black;"| || || ||
|-
!4
| oversize [[AxROM]]¹, [[iNES Mapper 231|231]]ʰ, [[NES 2.0 Mapper 285|285]]ʰ¹, [[NES 2.0 Mapper 337|337]]ʰ || [[GTROM]]⁴ ||  ||  || style="border-right:1px solid black; border-bottom:1px solid black;"| oversize [[GxROM|GNROM]] || [[NES 2.0 Mapper 290|290]]ʰ, [[NES 2.0 Mapper 389|389]]ʰ || || ||
|-
!5
| [[iNES Mapper 015|15]]ʰ, [[iNES Mapper 227|227]]ʰ, [[NES 2.0 Mapper 349|349]]ʰ, [[NES 2.0 Mapper 541|541]]ʰ ||  ||  || style="border-right:1px solid black; border-bottom:1px solid black;"| ||  ||  || [[iNES Mapper 225|225]]ʰ=[[iNES Mapper 255|255]]ʰ || [[iNES Mapper 046|46]] ||
|-
!6
| [[iNES Mapper 226|226]]ʰ ||  || style="border-right:1px solid black; border-bottom:1px solid black;"| ||  ||  ||  || [[iNES Mapper 228|228]]ʰ, [[NES 2.0 Mapper 314|314]]ʰ || [[iNES Mapper 062|62]]ʰ, [[NES 2.0 Mapper 519|519]]ʰ ||
|-
!7
| [[iNES Mapper 063|63]]ʰ, [[iNES Mapper 235|235]]ʰ¹ || style="border-right:1px solid black; border-bottom:1px solid black;"| || || || || || || ||
|-
!8
|style="border-right:1px solid black; border-bottom:1px solid black;"|  oversize [[BNROM]] || || || || || || || ||
|}


<table border="1">
<tr><td colspan=2 rowspan=2>GxROM-like</td><td colspan="9" align="center" rowspan="1">8kB CHR bank bits</td></tr>
<tr><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td><td>7</td><td>8</td></tr>
<tr><td colspan="1" rowspan="9">32kB PRG bank bits</td><td>0</td><td>[[NROM]]</td><td></td><td>[[CNROM]], [[iNES Mapper 087|87]]</td><td></td><td></td><td></td><td></td><td></td><td>oversize [[CNROM]]</td></tr>
<tr><td>1</td><td>[[AxROM|AN1ROM]]¹</td><td></td><td>[[GxROM|MHROM]]</td><td>[[iNES Mapper 079|79]]</td><td></td><td></td><td></td><td></td></tr>
<tr><td>2</td><td>[[AxROM|ANROM]]¹, [[BNROM]]</td><td></td><td>[[GxROM|GNROM]], [[iNES Mapper 038|38]]</td><td>[[iNES Mapper 086|86]]</td><td>[[iNES Mapper 011|11]], [[iNES Mapper 140|140]]</td><td></td><td>oversize [[iNES Mapper 038|38]]</td></tr>
<tr><td>3</td><td>[[AxROM|AOROM]]¹</td><td></td><td></td><td></td><td></td><td></td></tr>
<tr><td>4</td><td>oversize [[AxROM]]¹</td><td></td><td></td><td></td><td>oversize [[GxROM|GNROM]]</td></tr>
<tr><td>5</td><td></td><td></td><td></td><td></td></tr>
<tr><td>6</td><td></td><td></td><td></td></tr>
<tr><td>7</td><td></td><td></td></tr>
<tr><td>8</td><td>oversize [[BNROM]]</td></tr>
</table>


<table border="1">
{| class="datatable"
<tr><td colspan=2 rowspan=2>UxROM-like</td><td colspan="7" align="center" rowspan="1">8kB CHR bank bits</td></tr>
|-
<tr><td>0</td><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr>
! colspan=2 rowspan=2|UxROM-like !! colspan=7 style="text-align:center;"|8kB CHR bank bits
<tr><td colspan="1" rowspan="7">16kB PRG bank bits</td><td>2</td><td></td><td></td><td></td><td></td><td>[[iNES Mapper 168|168]]†</td><td></td><td></td></tr>
|-
<tr><td>3</td><td>[[UxROM|UNROM]], [[iNES Mapper 094|94]]</td><td></td><td></td><td></td><td>[[iNES Mapper 072|72]], [[iNES Mapper 078|78]]¹, [[iNES Mapper 089|89]]¹, [[iNES Mapper 093|93]], [[iNES Mapper 152|152]]¹</td><td></td></tr>
!0 || 1 || 2 || 3 || 4 || 5 || 6
<tr><td>4</td><td>[[UxROM|UOROM]], [[iNES Mapper 180|180]]</td><td></td><td></td><td></td><td>[[iNES Mapper 070|70]], [[iNES Mapper 092|92]]</td></tr>
|-
<tr><td>5</td><td></td><td></td><td></td><td></td></tr>
! colspan=1 rowspan=7|16kB PRG bank bits || 2  
<tr><td>6</td><td></td><td></td><td></td></tr>
|  ||  ||  ||  || [[iNES Mapper 168|168]]† ||  ||
<tr><td>7</td><td></td><td></td></tr>
|-
<tr><td>8</td><td>oversize [[UxROM]]</td></tr>
!3  
</table>
| [[UxROM|UNROM]], [[iNES Mapper 094|94]], [[iNES Mapper 180|180]] ||  || [[iNES Mapper 029|29]] ||  || [[iNES Mapper 072|72]], [[iNES Mapper 078|78]]¹­ʰ, [[iNES Mapper 089|89]]¹, [[iNES Mapper 093|93]]*, [[iNES Mapper 152|152]]¹ ||
|-
!4  
| [[UxROM|UOROM]] ||  ||  ||  || [[iNES Mapper 070|70]], [[iNES Mapper 092|92]]
|-
!5  
|  || || [[UNROM 512|Sealie UNROM 512]]¹ ||
|-
!6  
| oversize [[iNES Mapper 094|94]] ||  ||
|-
!7  
|  ||
|-
!8  
| oversize [[UxROM]], oversize [[iNES Mapper 180|180]]
|}


† banks CHR-RAM, not CHR-ROM


¹ has mapper-controlled single-screen mirroring.
† 4F+4 or 4+4F CHR-RAM banking, not 8 CHR-ROM banking<br/>
¹ has mapper-controlled single-screen mirroring<br/>
ʰ has mapper-controlled H/V mirroring<br/>
<nowiki>*</nowiki> Emulators commonly implement mapper 93 as a plain UNROM variant, not supporting CHR banking. But the hardware does support it.
 
Non-standard CHR banking:
* [[NINA-001]] has 1 bit for 32 PRG and 8 bits for 4+4 CHR banking
* [[iNES Mapper 077|77]] has 4 bits for 2+6RAM CHR banking (plus 4 bits for 32 PRG banking)
* [[iNES Mapper 060|60]], [[iNES Mapper 107|107]], and [[iNES Mapper 201|201]] use the same bits to control both PRG and CHR banks
* [[iNES Mapper 184|184]] has 5 bits for 4+4 CHR banking
 
Exceptions:
* [[iNES Mapper 040|40]] and [[iNES Mapper 050|50]] have 24F+8+8F banking.

Latest revision as of 19:00, 8 July 2022

It appears that all discrete logic mappers either switch 32kB at a time with no fixed bank ("GxROM-like"), or have a 16kB fixed bank and can switch the other ("UxROM-like"). The tables below illustrate the tradeoffs between CHR, PRG, and banking style.

GxROM-like 8kB CHR bank bits
0 1 2 3 4 5 6 7 8
32kB PRG bank bits 0 NROM, 143, 185 Vs. System, 145, 149 CNROM, 87=101, CPROM†, 173 oversize CNROM
1 AN1ROM¹ MHROM, 132, 133, 203 NINA-03/06=146, 148
2 ANROM¹, BNROM GNROM, 38, 299ʰ, 379 58ʰ=213, 59ʰ, 86, 96†, 174ʰ, 288 Color Dreams, 36, 57ʰ, 140, 147, 319ʰ, 332ʰ oversize 38
3 AOROM¹, 283 41ʰ, 113ʰ, 261ʰ, 335ʰ
4 oversize AxROM¹, 231ʰ, 285ʰ¹, 337ʰ GTROM oversize GNROM 290ʰ, 389ʰ
5 15ʰ, 227ʰ, 349ʰ, 541ʰ 225ʰ=255ʰ 46
6 226ʰ 228ʰ, 314ʰ 62ʰ, 519ʰ
7 63ʰ, 235ʰ¹
8 oversize BNROM


UxROM-like 8kB CHR bank bits
0 1 2 3 4 5 6
16kB PRG bank bits 2 168
3 UNROM, 94, 180 29 72, 78¹­ʰ, 89¹, 93*, 152¹
4 UOROM 70, 92
5 Sealie UNROM 512¹
6 oversize 94
7
8 oversize UxROM, oversize 180


† 4F+4 or 4+4F CHR-RAM banking, not 8 CHR-ROM banking
¹ has mapper-controlled single-screen mirroring
ʰ has mapper-controlled H/V mirroring
* Emulators commonly implement mapper 93 as a plain UNROM variant, not supporting CHR banking. But the hardware does support it.

Non-standard CHR banking:

  • NINA-001 has 1 bit for 32 PRG and 8 bits for 4+4 CHR banking
  • 77 has 4 bits for 2+6RAM CHR banking (plus 4 bits for 32 PRG banking)
  • 60, 107, and 201 use the same bits to control both PRG and CHR banks
  • 184 has 5 bits for 4+4 CHR banking

Exceptions:

  • 40 and 50 have 24F+8+8F banking.