bsnes/higan/processor
Tim Allen d4876a831f Update to v103r07 release.
byuu says:

Changelog:

  - gba/cpu: massive code cleanup effort
  - gba/cpu: DMA can run in between active instructions¹
  - gba/cpu: added two-cycle startup delay between DMA activation and
    DMA transfers²
  - processor/spc700: BBC, BBC, CBNE cycle 4 is an idle cycle
  - processor/spc700: ADDW, SUBW, MOVW (read) cycle 4 is an idle cycle

¹: unfortunately, this causes yet another performance penalty for the
poor GBA core =( Also, I think I may have missed disabling DMAs while
the CPU is stopped. I'll fix that in the next WIP.

²: I put the waiting counter decrement at the wrong place, so this
doesn't actually work. Needs to be more like
this:

    auto CPU::step(uint clocks) -> void {
      for(auto _ : range(clocks)) {
        for(auto& timer : this->timer) timer.run();
        for(auto& dma : this->dma) if(dma.active && dma.waiting) dma.waiting--;
        context.clock++;
      }
      ...

    auto CPU::DMA::run() -> bool {
      if(cpu.stopped() || !active || waiting) return false;

      transfer();
      if(irq) cpu.irq.flag |= CPU::Interrupt::DMA0 << id;
      if(drq && id == 3) cpu.irq.flag |= CPU::Interrupt::Cartridge;
      return true;
    }

Of course, the real fix will be restructuring how DMA works, so that
it's always running in parallel with the CPU instead of this weird
design where it tries to run all channels in some kind of loop until no
channels are active anymore whenever one channel is activated.

Not really sure how to design that yet, however.
2017-07-05 15:29:27 +10:00
..
arm Update to v102r26 release. 2017-06-16 10:06:17 +10:00
gsu Update to v102r27 release. 2017-06-19 12:07:54 +10:00
hg51b Update to v102r27 release. 2017-06-19 12:07:54 +10:00
huc6280 Update to v102r26 release. 2017-06-16 10:06:17 +10:00
lr35902 Update to v102r27 release. 2017-06-19 12:07:54 +10:00
m68k Update to v103r03 release. 2017-06-28 17:24:46 +10:00
mos6502 Update to v102r26 release. 2017-06-16 10:06:17 +10:00
spc700 Update to v103r07 release. 2017-07-05 15:29:27 +10:00
upd96050 Update to v099r12 release. 2016-06-28 20:43:47 +10:00
v30mz Update to v102r24 release. 2017-06-13 11:42:31 +10:00
wdc65816 Update to v102r26 release. 2017-06-16 10:06:17 +10:00
z80 Update to v103r02 release. 2017-06-27 11:18:28 +10:00
GNUmakefile Update to v102r24 release. 2017-06-13 11:42:31 +10:00
processor.hpp Update to v097r01 release. 2016-01-23 18:29:34 +11:00