aboutsummaryrefslogtreecommitdiff
path: root/src/NDS.h
diff options
context:
space:
mode:
authorArisotura <thetotalworm@gmail.com>2020-06-02 00:39:09 +0200
committerGitHub <noreply@github.com>2020-06-02 00:39:09 +0200
commitd6332f96f162849ad0dde2738cacd3fae6e76e5d (patch)
tree649c101a956cb3640140a95c1f380e5a2f89d51d /src/NDS.h
parent993048dd241b59747a7b30edfc861eedd4c005c9 (diff)
parent6c0ec5ebd8f991b6f8778afd98dc7a22f2b77d4d (diff)
Merge pull request #638 from Arisotura/melonDSi
merge melonDSi
Diffstat (limited to 'src/NDS.h')
-rw-r--r--src/NDS.h60
1 files changed, 54 insertions, 6 deletions
diff --git a/src/NDS.h b/src/NDS.h
index daeadc4..9c5fe3d 100644
--- a/src/NDS.h
+++ b/src/NDS.h
@@ -42,6 +42,11 @@ enum
Event_Div,
Event_Sqrt,
+ // DSi
+ Event_DSi_SDMMCTransfer,
+ Event_DSi_SDIOTransfer,
+ Event_DSi_NWifi,
+
Event_MAX
};
@@ -74,12 +79,42 @@ enum
IRQ_IPCSync,
IRQ_IPCSendDone,
IRQ_IPCRecv,
- IRQ_CartSendDone,
- IRQ_CartIREQMC,
+ IRQ_CartSendDone, // TODO: less misleading name
+ IRQ_CartIREQMC, // IRQ triggered by game cart (example: Pokémon Typing Adventure, BT controller)
IRQ_GXFIFO,
IRQ_LidOpen,
IRQ_SPI,
- IRQ_Wifi
+ IRQ_Wifi,
+
+ // DSi IRQs
+ IRQ_DSi_DSP = 24,
+ IRQ_DSi_Camera,
+ IRQ_DSi_Unk26,
+ IRQ_DSi_Unk27,
+ IRQ_DSi_NDMA0,
+ IRQ_DSi_NDMA1,
+ IRQ_DSi_NDMA2,
+ IRQ_DSi_NDMA3,
+};
+
+enum
+{
+ // DSi ARM7-side IE2/IF2
+ IRQ2_DSi_GPIO18_0 = 0,
+ IRQ2_DSi_GPIO18_1,
+ IRQ2_DSi_GPIO18_2,
+ IRQ2_DSi_Unused3,
+ IRQ2_DSi_GPIO33_0,
+ IRQ2_DSi_Headphone,
+ IRQ2_DSi_PowerButton,
+ IRQ2_DSi_GPIO33_3, // "sound enable input"
+ IRQ2_DSi_SDMMC,
+ IRQ2_DSi_SD_Data1,
+ IRQ2_DSi_SDIO,
+ IRQ2_DSi_SDIO_Data1,
+ IRQ2_DSi_AES,
+ IRQ2_DSi_I2C,
+ IRQ2_DSi_MicExt
};
typedef struct
@@ -98,6 +133,8 @@ typedef struct
} MemRegion;
+extern int ConsoleType;
+
extern u8 ARM9MemTimings[0x40000][4];
extern u8 ARM7MemTimings[0x20000][4];
@@ -105,12 +142,15 @@ extern u64 ARM9Timestamp, ARM9Target;
extern u64 ARM7Timestamp, ARM7Target;
extern u32 ARM9ClockShift;
-// hax
extern u32 IME[2];
extern u32 IE[2];
extern u32 IF[2];
+extern u32 IE2;
+extern u32 IF2;
extern Timer Timers[8];
+extern u32 CPUStop;
+
extern u16 PowerControl9;
extern u16 ExMemCnt[2];
@@ -119,10 +159,12 @@ extern u8 ROMSeed1[2*8];
extern u8 ARM9BIOS[0x1000];
extern u8 ARM7BIOS[0x4000];
+extern u16 ARM7BIOSProt;
-#define MAIN_RAM_SIZE 0x400000
+extern u8 MainRAM[0x1000000];
+extern u32 MainRAMMask;
-extern u8 MainRAM[MAIN_RAM_SIZE];
+extern u32 KeyInput;
bool Init();
void DeInit();
@@ -134,6 +176,9 @@ bool DoSavestate(Savestate* file);
void SetARM9RegionTimings(u32 addrstart, u32 addrend, int buswidth, int nonseq, int seq);
void SetARM7RegionTimings(u32 addrstart, u32 addrend, int buswidth, int nonseq, int seq);
+// 0=DS 1=DSi
+void SetConsoleType(int type);
+
bool LoadROM(const char* path, const char* sram, bool direct);
bool LoadGBAROM(const char* path, const char* sram);
void LoadBIOS();
@@ -161,8 +206,11 @@ void Halt();
void MapSharedWRAM(u8 val);
+void UpdateIRQ(u32 cpu);
void SetIRQ(u32 cpu, u32 irq);
void ClearIRQ(u32 cpu, u32 irq);
+void SetIRQ2(u32 irq);
+void ClearIRQ2(u32 irq);
bool HaltInterrupted(u32 cpu);
void StopCPU(u32 cpu, u32 mask);
void ResumeCPU(u32 cpu, u32 mask);