Talk:RAMBO-1: Difference between revisions
From NESdev Wiki
Jump to navigationJump to search
m (→IRQ related - Hard Drivin': whoops) |
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: | |||
* '''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]]) | 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)
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)