Talk:RAMBO-1: Difference between revisions

From NESdev Wiki
Jump to navigationJump to search
m (→‎IRQ related - Hard Drivin': Added a few details to be clear.)
Line 4: Line 4:


Suggested changes for the Mapper64 IRQ. It makes Hard Drivin' to work fine. No other games are affected with this change.
Suggested changes for the Mapper64 IRQ. It makes Hard Drivin' to work fine. No other games are affected with this change.
Every cycle on 6502 is either a read or a write cycle. So, you update the IRQ counter in the next CPU cycle:


Next CPU clock:
* '''IF''' $C001 was written to after previous clock
* '''IF''' $C001 was written to after previous clock
** reload IRQ counter with IRQ Reload value '''PLUS ONE'''
** reload IRQ counter with IRQ Reload value '''PLUS ONE'''
Line 11: Line 11:
** reload IRQ counter with IRQ Reload value
** reload IRQ counter with IRQ Reload value


When the IRQ is clocked:
When the IRQ is clocked by the mapper (in scanline or cycle mode):
** Decrement IRQ counter by 1
** Decrement IRQ counter by 1
** '''IF''' IRQ counter is now 0 '''AND''' IRQs are enabled
** '''IF''' IRQ counter is now 0 '''AND''' IRQs are enabled
*** wait one M2 cycle, then trigger IRQ
*** wait one M2 cycle, then trigger IRQ


Hard Drivin' works. --[[User:Zepper|Zepper]] ([[User talk:Zepper|talk]]) 21:14, 11 January 2014 (MST)
Hard Drivin' works. --[[User:Zepper|Zepper]] ([[User talk:Zepper|talk]]) 17:57, 14 January 2014 (MST)

Revision as of 00:57, 15 January 2014

As for the 2mb PRG, I'm not sure if the cart actually supports that much ROM, but the PRG registers apparently are 8 bits, and 8kb * $100 = 2048kb = 2mb. --Drag 03:05, 9 November 2011 (UTC)

IRQ related - Hard Drivin'

Suggested changes for the Mapper64 IRQ. It makes Hard Drivin' to work fine. No other games are affected with this change. Every cycle on 6502 is either a read or a write cycle. So, you update the IRQ counter in the next CPU cycle:

  • IF $C001 was written to after previous clock
    • reload IRQ counter with IRQ Reload value PLUS ONE
  • ELSE IF IRQ counter is 0
    • reload IRQ counter with IRQ Reload value

When the IRQ is clocked by the mapper (in scanline or cycle mode):

    • Decrement IRQ counter by 1
    • IF IRQ counter is now 0 AND IRQs are enabled
      • wait one M2 cycle, then trigger IRQ

Hard Drivin' works. --Zepper (talk) 17:57, 14 January 2014 (MST)