Cleaned the interrupt code a bit
This commit is contained in:
		
							
								
								
									
										20
									
								
								src/interrupts.c
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								src/interrupts.c
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) 2022 Dominic Masters
 | 
			
		||||
 * 
 | 
			
		||||
 * This software is released under the MIT License.
 | 
			
		||||
 * https://opensource.org/licenses/MIT
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include "interrupts.h"
 | 
			
		||||
 | 
			
		||||
void interruptOnScanline() {
 | 
			
		||||
  if(LYC_REG == 0) {
 | 
			
		||||
    LCDC_REG |= LCDCF_BG8000;
 | 
			
		||||
    if((TEXTBOX_STATE & TEXTBOX_STATE_VISIBLE) != 0) {
 | 
			
		||||
      LYC_REG = INTERRUPT_TEXTBOX_VRAM;
 | 
			
		||||
    }
 | 
			
		||||
  } else if(LYC_REG == INTERRUPT_TEXTBOX_VRAM) {
 | 
			
		||||
    LCDC_REG &= ~LCDCF_BG8000;
 | 
			
		||||
    LYC_REG = 0;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								src/interrupts.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								src/interrupts.h
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Copyright (c) 2022 Dominic Masters
 | 
			
		||||
 * 
 | 
			
		||||
 * This software is released under the MIT License.
 | 
			
		||||
 * https://opensource.org/licenses/MIT
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "libs.h"
 | 
			
		||||
#include "conversation/textbox.h"
 | 
			
		||||
 | 
			
		||||
#define INTERRUPT_TEXTBOX_VRAM ((TEXTBOX_WIN_Y * TILE_HEIGHT) - 1)
 | 
			
		||||
 | 
			
		||||
void interruptOnScanline();
 | 
			
		||||
							
								
								
									
										18
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								src/main.c
									
									
									
									
									
								
							@@ -7,18 +7,6 @@
 | 
			
		||||
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
#define TEXTBOX_INTERRUPT_Y ((TEXTBOX_WIN_Y * TILE_HEIGHT) - 1)
 | 
			
		||||
 | 
			
		||||
// TODO: cleanup
 | 
			
		||||
void scanline_isr() {
 | 
			
		||||
  if(LYC_REG == 0) {
 | 
			
		||||
    LYC_REG = TEXTBOX_INTERRUPT_Y;
 | 
			
		||||
    LCDC_REG |= LCDCF_BG8000;
 | 
			
		||||
  } else if(LYC_REG == TEXTBOX_INTERRUPT_Y) {
 | 
			
		||||
    LYC_REG = 0;
 | 
			
		||||
    LCDC_REG &= ~LCDCF_BG8000;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main() {
 | 
			
		||||
  int16_t j;
 | 
			
		||||
@@ -27,14 +15,13 @@ void main() {
 | 
			
		||||
  // Set up the GAMEBOY's registers.
 | 
			
		||||
  disable_interrupts();
 | 
			
		||||
 | 
			
		||||
  // Create a critical section
 | 
			
		||||
  // Create a critical section for some video stuff
 | 
			
		||||
  CRITICAL {
 | 
			
		||||
    DISPLAY_OFF;
 | 
			
		||||
    LCDC_REG = LCDCF_OFF | LCDCF_BG8000 | LCDCF_BG9800 | LCDCF_BGON;
 | 
			
		||||
    STAT_REG |= STATF_LYC;
 | 
			
		||||
    LYC_REG = 0;
 | 
			
		||||
 | 
			
		||||
    add_LCD(scanline_isr);
 | 
			
		||||
    add_LCD(interruptOnScanline);
 | 
			
		||||
  }
 | 
			
		||||
  set_interrupts(VBL_IFLAG | LCD_IFLAG);
 | 
			
		||||
 | 
			
		||||
@@ -98,5 +85,6 @@ void main() {
 | 
			
		||||
    // Update conversation fade effect
 | 
			
		||||
    conversationFadeUpdate();
 | 
			
		||||
    // mainDebugDraw();
 | 
			
		||||
    LCDC_REG |= LCDCF_BG8000;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@@ -9,9 +9,7 @@
 | 
			
		||||
 | 
			
		||||
#include "libs.h"
 | 
			
		||||
#include "time.h"
 | 
			
		||||
 | 
			
		||||
#include "SM.h"
 | 
			
		||||
 | 
			
		||||
#include "poker/poker.h"
 | 
			
		||||
#include "poker/card.h"
 | 
			
		||||
#include "conversation/fade.h"
 | 
			
		||||
@@ -19,7 +17,7 @@
 | 
			
		||||
#include "conversation/queue.h"
 | 
			
		||||
#include "conversation/textbox.h"
 | 
			
		||||
#include "conversation/questionbox.h"
 | 
			
		||||
 | 
			
		||||
#include "interrupts.h"
 | 
			
		||||
#include "sprites/spritecards.h"
 | 
			
		||||
 | 
			
		||||
#define GB_BACKGROUND_COLUMNS 0x20
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user