-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinterrupts.c
40 lines (34 loc) · 869 Bytes
/
interrupts.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <interrupts.h>
#include <stdio.h>
void m_interrupt_check(m_dmg_t *m_dmg)
{
if (m_dmg->m_cpu->interrupts->m_master && m_dmg->m_cpu->interrupts->m_enabled && m_dmg->m_cpu->interrupts->m_flags)
{
uint8_t m_int = m_dmg->m_cpu->interrupts->m_enabled & m_dmg->m_cpu->interrupts->m_flags;
if (m_int & INT_VBLANK)
{
m_dmg->m_cpu->interrupts->m_enabled &= ~INT_VBLANK;
printf("VBlank!\n");
}
if (m_int & INT_LCD)
{
m_dmg->m_cpu->interrupts->m_enabled &= ~INT_LCD;
printf("LCD!\n");
}
if (m_int & INT_TIMER)
{
m_dmg->m_cpu->interrupts->m_enabled &= ~INT_TIMER;
printf("TIMER!\n");
}
if (m_int & INT_SERIAL)
{
m_dmg->m_cpu->interrupts->m_enabled &= ~INT_SERIAL;
printf("SERIAL!\n");
}
if (m_int & INT_JOYPAD)
{
m_dmg->m_cpu->interrupts->m_enabled &= ~INT_JOYPAD;
printf("JOYPAD!\n");
}
}
}