소스 검색

Fix backdrop override quirk

master
Nathaniel Walizer 10 달 전
부모
커밋
7b981c89d4
2개의 변경된 파일8개의 추가작업 그리고 1개의 파일을 삭제
  1. +7
    -0
      src/ppu.c
  2. +1
    -1
      src/sdl_render.c

+ 7
- 0
src/ppu.c 파일 보기

@@ -89,6 +89,10 @@ static inline void nes_ppu_internal_copy_y(nes_ppu* ppu) {
((ppu->t & 0x7000U) >> 12);
}

static inline void nes_ppu_internal_copy_v(nes_ppu* ppu) {
ppu->addr = ppu->t;
}

void nes_ppu_write(nes_ppu* ppu, uint16_t addr, uint8_t val) {
PPU_LOG("PPU: W-> $%04x %02x\n", addr, val);

@@ -236,6 +240,9 @@ nes_ppu_Result nes_ppu_run(nes_ppu* ppu, int cycles) {
if (ppu->scanline == 0) {
nes_ppu_internal_copy_y(ppu);
}
if (ppu->mask & (ppu_Mask_Sprite | ppu_Mask_Back)) {
nes_ppu_internal_copy_v(ppu);
}
}

if ( NULL != ppu->mapper->scanline &&


+ 1
- 1
src/sdl_render.c 파일 보기

@@ -560,7 +560,7 @@ static void render_scanline(nes_ppu* ppu, int line,

if (line >= 0) {
// Emulate the happy part of the backdrop override quirk
int pal_idx = (ppu->addr >= nes_ppu_mem_pal_start) ?
int pal_idx = ((ppu->addr & 0x3FFFU) >= nes_ppu_mem_pal_start) ?
(ppu->addr & (nes_ppu_mem_pal_size - 1)) : 0;
SDL_Color ext = nes_palette[ppu->palette[pal_idx]];
SDL_FillRect(data->target, &dst_rect, ((int)ext.r << 16) |


불러오는 중...
취소
저장