Talk:INES Mapper 099: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
 
(don't say "conflicts" because they're not bus conflicts, just functionality collisions. Mention RAM configuration, and needing to deal with coin acceptors.)
 
(One intermediate revision by the same user not shown)
Line 1: Line 1:
== Minimal discrete logic clone ==
== Minimal discrete logic clone ==


A [[74138]], selecting on M2, A14, A4, and A1 high; R/W and A0 low, and a 7474 (or any larger latch). Maps the write-only register at every address [4-7C-F].[13579BDF][26AE]. Conflicts on writes to $4012 and DualSystem games that communicate using RAM. Using a [[74161]] or any other latch with an additional active-low enable would remove the conflict with the DualSystem RAM; however, there's no obvious place to get an extra active-high enable to prevent the conflict with $4012. —[[User:Lidnariq|Lidnariq]] ([[User talk:Lidnariq|talk]]) 16:15, 31 October 2013 (MDT)
A [[74138]], selecting on M2, A14, A4, and A1 high; R/W and A0 low, and a 7474 (or any larger latch). Maps the write-only register at every address [4-7C-F].[13579BDF][26AE]. Incorrectly decodes writes to $4012 and DualSystem RAM. Using a [[74161]] or any other latch with an additional active-low enable would remove the collision with the DualSystem RAM; however, there's no obvious place to get an extra active-high enable to prevent the collision with $4012. —[[User:Lidnariq|Lidnariq]] ([[User talk:Lidnariq|talk]]) 16:15, 31 October 2013 (MDT)
 
* Half of the 7474 can be configured to [http://forums.nesdev.org/viewtopic.php?p=125760#p125760 act as an inverter]. In this case, instead of requiring A0 low, we could instead require A2 high, mapping the register at [4-7C-F].[13579BDF][67EF]. Now it incorrectly decodes writes to $4017, but few games will write to that register more than once. (It still collides with writes to the RAM at $6xxx.)
* For games that require the extra RAM, using a 74138 or 74139 has the advantage that it already produces a /($4000-$5fff) signal. This could then be combined with another '138 or '139 to require A4, A2, and A1 high; and R/W (and A0) low.
 
Regardless, open bus behavior will cause the game to perceive one of the coin acceptors as always true. The last configuration above can produce /RD4016or4017, which can be combined with a tristateable buffer (and a button? or infrared receiver? or oscillator?) to pull D6 and D5 high or low as appropriate to fake the coin acceptors. —[[User:Lidnariq|Lidnariq]] ([[User talk:Lidnariq|talk]]) 12:37, 4 May 2014 (MDT)

Latest revision as of 18:37, 4 May 2014

Minimal discrete logic clone

A 74138, selecting on M2, A14, A4, and A1 high; R/W and A0 low, and a 7474 (or any larger latch). Maps the write-only register at every address [4-7C-F].[13579BDF][26AE]. Incorrectly decodes writes to $4012 and DualSystem RAM. Using a 74161 or any other latch with an additional active-low enable would remove the collision with the DualSystem RAM; however, there's no obvious place to get an extra active-high enable to prevent the collision with $4012. —Lidnariq (talk) 16:15, 31 October 2013 (MDT)

  • Half of the 7474 can be configured to act as an inverter. In this case, instead of requiring A0 low, we could instead require A2 high, mapping the register at [4-7C-F].[13579BDF][67EF]. Now it incorrectly decodes writes to $4017, but few games will write to that register more than once. (It still collides with writes to the RAM at $6xxx.)
  • For games that require the extra RAM, using a 74138 or 74139 has the advantage that it already produces a /($4000-$5fff) signal. This could then be combined with another '138 or '139 to require A4, A2, and A1 high; and R/W (and A0) low.

Regardless, open bus behavior will cause the game to perceive one of the coin acceptors as always true. The last configuration above can produce /RD4016or4017, which can be combined with a tristateable buffer (and a button? or infrared receiver? or oscillator?) to pull D6 and D5 high or low as appropriate to fake the coin acceptors. —Lidnariq (talk) 12:37, 4 May 2014 (MDT)