Talk:INES Mapper 099: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
(→‎Minimal discrete logic clone: slightly better plan)
(don't say "conflicts" because they're not bus conflicts, just functionality collisions. Mention RAM configuration, and needing to deal with coin acceptors.)
 
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 conflicts with writes to $4017, but few games will write to that register more than once. (It still conflicts with writes to the RAM at $6xxx.) —[[User:Lidnariq|Lidnariq]] ([[User talk:Lidnariq|talk]]) 23:25, 3 May 2014 (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)