Fixed zelda lyc first line timing issue
This commit is contained in:
@ -104,7 +104,7 @@ bool pipeline_fifo_add() {
|
||||
color = lcd_get_context()->bg_colors[0];
|
||||
}
|
||||
|
||||
if(LCDC_OBJ_ENABLE && !ppu_get_context()->debug) {
|
||||
if(LCDC_OBJ_ENABLE) {
|
||||
color = fetch_sprite_pixels(bit, color, hi | lo);
|
||||
}
|
||||
|
||||
@ -287,7 +287,7 @@ void pipeline_push_pixel() {
|
||||
}
|
||||
if(ppu_get_context()->rendering_window) {
|
||||
ppu_get_context()->video_buffer[ppu_get_context()->pfc.pushed_x +
|
||||
(lcd_get_context()->ly * XRES)] = pixel_data;//interpolate(ppu_get_context()->video_buffer[ppu_get_context()->pfc.pushed_x +
|
||||
(lcd_get_context()->ly * XRES)] = ppu_get_context()->debug ? 0xFF0000 : pixel_data;//interpolate(ppu_get_context()->video_buffer[ppu_get_context()->pfc.pushed_x +
|
||||
//(lcd_get_context()->ly * XRES)], pixel_data);
|
||||
|
||||
ppu_get_context()->pfc.pushed_x++;
|
||||
|
17
lib/ppu_sm.c
17
lib/ppu_sm.c
@ -121,14 +121,8 @@ void ppu_mode_xfer() {
|
||||
void ppu_mode_vblank() {
|
||||
if(ppu_get_context()->line_ticks >= TICKS_PER_LINE) {
|
||||
increment_ly();
|
||||
|
||||
if(lcd_get_context()->ly >= LINES_PER_FRAME) {
|
||||
LCDS_MODE_SET(MODE_OAM);
|
||||
if(LCDS_STAT_INT(SS_OAM)) {
|
||||
cpu_request_interrupt(IT_LCD_STAT);
|
||||
}
|
||||
lcd_get_context()->ly = 0;
|
||||
if(lcd_get_context()->ly == lcd_get_context()->ly_compare) {
|
||||
if(lcd_get_context()->ly == LINES_PER_FRAME-1) {
|
||||
if(lcd_get_context()->ly_compare == 0) {
|
||||
LCDS_LYC_SET(1);
|
||||
if(LCDS_STAT_INT(SS_LYC)) {
|
||||
cpu_request_interrupt(IT_LCD_STAT);
|
||||
@ -136,6 +130,13 @@ void ppu_mode_vblank() {
|
||||
} else {
|
||||
LCDS_LYC_SET(0);
|
||||
}
|
||||
}
|
||||
if(lcd_get_context()->ly >= LINES_PER_FRAME) {
|
||||
LCDS_MODE_SET(MODE_OAM);
|
||||
if(LCDS_STAT_INT(SS_OAM)) {
|
||||
cpu_request_interrupt(IT_LCD_STAT);
|
||||
}
|
||||
lcd_get_context()->ly = 0;
|
||||
ppu_get_context()->window_line = 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user