duckstation

duckstation, but archived from the revision just before upstream changed it to a proprietary software project, this version is the libre one
git clone https://git.neptards.moe/u3shit/duckstation.git
Log | Files | Refs | README | LICENSE

interrupt_controller.h (938B)


      1 // SPDX-FileCopyrightText: 2019-2024 Connor McLaughlin <stenzek@gmail.com>
      2 // SPDX-License-Identifier: (GPL-3.0 OR CC-BY-NC-ND-4.0)
      3 
      4 #pragma once
      5 #include "types.h"
      6 
      7 class StateWrapper;
      8 
      9 namespace InterruptController {
     10 
     11 static constexpr u32 NUM_IRQS = 11;
     12 
     13 enum class IRQ : u32
     14 {
     15   VBLANK = 0, // IRQ0 - VBLANK
     16   GPU = 1,    // IRQ1 - GPU via GP0(1Fh)
     17   CDROM = 2,  // IRQ2 - CDROM
     18   DMA = 3,    // IRQ3 - DMA
     19   TMR0 = 4,   // IRQ4 - TMR0 - Sysclk or Dotclk
     20   TMR1 = 5,   // IRQ5 - TMR1 - Sysclk Hblank
     21   TMR2 = 6,   // IRQ6 - TMR2 - Sysclk or Sysclk / 8
     22   PAD = 7,    // IRQ7 - Controller and Memory Card Byte Received
     23   SIO = 8,    // IRQ8 - SIO
     24   SPU = 9,    // IRQ9 - SPU
     25   IRQ10 = 10, // IRQ10 - Lightpen interrupt, PIO
     26 
     27   MaxCount
     28 };
     29 
     30 void Reset();
     31 bool DoState(StateWrapper& sw);
     32 
     33 void SetLineState(IRQ irq, bool state);
     34 
     35 u32 ReadRegister(u32 offset);
     36 void WriteRegister(u32 offset, u32 value);
     37 
     38 } // namespace InterruptController