Talk:RAMBO-1

From NESdev Wiki
Revision as of 02:12, 8 August 2017 by Zepper (talk | contribs) (→‎Alternate IRQ timing: Minor update, almost perfect!)
Jump to navigationJump to search

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)

Alternate IRQ timing

This is how to get 4 games working: Klax, Skull&Crossbones, Rolling Thunder and Hard Drivin'.

  • Address mask: $E001.
writes to $C000: irq_flags|=2; irq_latch=data;
writes to $C001: irq_flags|=1; irq_mode=data&1;
writes to $E000: irq_enable=false; IRQ acknowledge by CPU.
writes to $E001: irq_enable=true; IRQ acknowledge by CPU.
  • When the IRQ is clocked by CPU or scanline modes:
If irq_flags&1:
   irq_counter = irq_latch;
   if irq_latch != 0
   {
      if irq_flags&2 irq_counter |= 1;
      else irq_counter+=1;
   }
   irq_flags=0;
Else if irq_counter == 0:
   irq_counter = irq_latch;
Else
   irq_counter--;
If irq_counter == 0 and irq_enable == true
   irq_delay=4 (IRQ will be fired 4 CPU cycles later)

--Zepper (talk) 20:12, 7 August 2017 (MDT)