Skip to content

Commit

Permalink
fix:修复背景绘制镜像错误
Browse files Browse the repository at this point in the history
  • Loading branch information
Dozingfiretruck committed Jul 29, 2024
1 parent bb11a8f commit 10972c4
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 8 deletions.
1 change: 1 addition & 0 deletions inc/nes_ppu.h
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,7 @@ typedef struct nes_ppu{
struct {
uint8_t* pattern_table[8];
uint8_t* name_table[4];
uint8_t* name_table_mirrors[4];
};
uint8_t* chr_banks[16]; /* 16k chr_banks,without background_palette and sprite_palette
0 - 3 pattern_table_0 4k
Expand Down
6 changes: 3 additions & 3 deletions src/nes.c
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ static void nes_render_background_line(nes_t* nes,uint16_t scanline,nes_color_t*
}
m = 7;
}
nametable_id ^= nes->nes_rom.mirroring_type ? 1:2;
nametable_id ^= 1;
for (uint8_t tile_x = 0; tile_x <= dx; tile_x++){
const uint8_t pattern_id = nes->nes_ppu.name_table[nametable_id][tile_x + (tile_y << 5)];
const uint8_t* bit0_p = nes->nes_ppu.pattern_table[nes->nes_ppu.CTRL_B ? 4 : 0] + pattern_id * 16;
Expand Down Expand Up @@ -251,8 +251,8 @@ static void nes_render_sprite_line(nes_t* nes,uint16_t scanline,nes_color_t* dra

void nes_run(nes_t* nes){
nes_printf("mapper:%03d\n",nes->nes_rom.mapper_number);
nes_printf("prg_rom_size:%d*16kb\n",nes->nes_rom.prg_rom_size);
nes_printf("chr_rom_size:%d*8kb\n",nes->nes_rom.chr_rom_size);
nes_printf("prg_rom_size:%d*16kB\n",nes->nes_rom.prg_rom_size);
nes_printf("chr_rom_size:%d*8kB\n",nes->nes_rom.chr_rom_size);
nes_printf("mirroring_type:%d\n",nes->nes_rom.mirroring_type);
nes_printf("four_screen:%d\n",nes->nes_rom.four_screen);
// nes_printf("save_ram:%d\n",nes->nes_rom.save_ram);
Expand Down
10 changes: 5 additions & 5 deletions src/nes_ppu.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@

static inline uint8_t nes_read_ppu_memory(nes_t* nes){
const uint16_t address = nes->nes_ppu.v_reg & (uint16_t)0x3FFF;
const uint16_t index = address >> 10;
const uint8_t index = address >> 10;
const uint16_t offset = address & (uint16_t)0x3FF;
if (address < (uint16_t)0x3F00) {// BANK
uint8_t data = nes->nes_ppu.buffer;
Expand Down Expand Up @@ -162,9 +162,9 @@ void nes_ppu_init(nes_t *nes){
nes->nes_ppu.name_table[3] = nes->nes_ppu.ppu_vram1;
}
// mirrors
nes->nes_ppu.chr_banks[12] = nes->nes_ppu.name_table[0];
nes->nes_ppu.chr_banks[13] = nes->nes_ppu.name_table[1];
nes->nes_ppu.chr_banks[14] = nes->nes_ppu.name_table[2];
nes->nes_ppu.chr_banks[15] = nes->nes_ppu.name_table[3];
nes->nes_ppu.name_table_mirrors[0] = nes->nes_ppu.name_table[0];
nes->nes_ppu.name_table_mirrors[1] = nes->nes_ppu.name_table[1];
nes->nes_ppu.name_table_mirrors[2] = nes->nes_ppu.name_table[2];
nes->nes_ppu.name_table_mirrors[3] = nes->nes_ppu.name_table[3];
}

0 comments on commit 10972c4

Please sign in to comment.