From 7888e1d5408ed5f88cff788c37b942076f6b9c63 Mon Sep 17 00:00:00 2001 From: Peter Fors Date: Wed, 2 Apr 2025 06:30:39 +0200 Subject: skinny_version working horizontally --- mknes.h | 103 +++++++++++++++++++++++++++++----------------------------------- 1 file changed, 47 insertions(+), 56 deletions(-) (limited to 'mknes.h') diff --git a/mknes.h b/mknes.h index 91c816f..5997bc8 100644 --- a/mknes.h +++ b/mknes.h @@ -43,61 +43,54 @@ struct nes_state; struct ppu_state { - uint8_t control; - uint8_t mask; - uint8_t fine_x; - uint8_t coarse_x; - uint8_t coarse_y; - uint32_t nt_x_offset; - uint32_t nt_y_offset; - uint8_t fine_y; - uint8_t fine_y_latch; - - uint32_t vram_addr; - uint32_t tmp_addr; - uint8_t write_latch; - uint8_t read_buffer; - - uint32_t render_coarse_x; - uint32_t render_coarse_y; - uint32_t render_fine_y; - uint32_t render_nt_x; - uint32_t render_nt_y; - - uint32_t cycle; - uint32_t scanline; - uint32_t dot; - uint32_t frame; - - uint32_t bg_shift_lo; - uint32_t bg_shift_hi; - uint32_t attr_shift_lo; - uint32_t attr_shift_hi; - uint8_t bg_attribute_latch; - - uint8_t next_tile; - uint8_t next_attr; - uint8_t next_lo; - uint8_t next_hi; - - uint8_t vram[2048]; - uint8_t palette[32]; + uint8_t pixels[256 * 240]; uint8_t oam[256]; uint8_t oam_addr; + uint8_t oam_data; uint8_t secondary_oam[32]; - uint32_t sprite_count; - uint8_t sprite_zero_hit; - uint8_t sprite_overflow; - uint8_t pixels[256 * 240]; + uint8_t reg_ctrl; + uint8_t reg_mask; + uint8_t reg_status; + uint8_t reg_scroll[2]; + uint8_t reg_addr[2]; + uint8_t reg_latch; - uint8_t vblank; - uint8_t frame_ready; -}; + uint32_t vram_addr; + uint32_t temp_addr; + uint32_t fine_x; + uint8_t vram_read_buffer; + uint8_t write_latch; + uint8_t ciram[0x800]; + uint8_t palette[0x20]; + uint32_t scanline; + uint32_t dot; + uint8_t even_frame; + uint8_t frame_ready; + + uint8_t sprite_indexes[8]; + uint8_t sprite_zero_hit_possible; + uint8_t sprite_count; + uint32_t sprite_patterns[8]; + uint8_t sprite_positions[8]; + uint8_t sprite_priorities[8]; + uint8_t sprite_shift_lo[8]; + uint8_t sprite_shift_hi[8]; + + uint32_t bg_shift_pattern_low; + uint32_t bg_shift_pattern_high; + uint32_t bg_shift_attrib_low; + uint32_t bg_shift_attrib_high; + + uint8_t bg_next_tile_id; + uint8_t bg_next_tile_attrib; + uint8_t bg_next_tile_lsb; + uint8_t bg_next_tile_msb; +}; struct cpu_state { @@ -149,19 +142,17 @@ struct nes_state { uint8_t ram[2048]; uint8_t rom[4 * 1024 * 1024]; uint8_t chrrom[4 * 1024 * 1024]; - uint8_t ciram[2048]; - uint8_t palette[0x20]; uint8_t irq_pending; uint8_t nmi_pending; }; static uint32_t nes_palette[64] = { - 0x757575ff, 0x271a75ff, 0x3b0072ff, 0x4c0f64ff, 0x400048ff, 0x600027ff, 0x600000ff, 0x500f00ff, - 0x783a00ff, 0x755c00ff, 0x406c00ff, 0x504764ff, 0x005468ff, 0x000000ff, 0x000000ff, 0x000000ff, - 0xbfbfbfff, 0x273aa7ff, 0x5c14a7ff, 0x7514a7ff, 0x751468ff, 0x982727ff, 0xa03a00ff, 0x986c00ff, - 0x888800ff, 0x689800ff, 0x3aa700ff, 0x6c6c6cff, 0x007878ff, 0x000000ff, 0x000000ff, 0x000000ff, - 0xffffffff, 0x3ab5ffff, 0x5cb5ffff, 0x9888ffff, 0xa778ffff, 0xc87878ff, 0xf05c00ff, 0xf08800ff, - 0xe0a700ff, 0xb8b800ff, 0x88c800ff, 0xcccc68ff, 0x00e0d8ff, 0x000000ff, 0x000000ff, 0x000000ff, - 0xffffffff, 0xa7e0ffff, 0xb8d8ffff, 0xc8c8ffff, 0xd8b8ffff, 0xd8a7a7ff, 0xf0d0b8ff, 0xf0d898ff, - 0xf0c878ff, 0xd8d878ff, 0xb8e078ff, 0xd0e0b8ff, 0xb8f0f0ff, 0x000000ff, 0x000000ff, 0x000000ff + 0x757575ff, 0x271a75ff, 0x3b0072ff, 0x4c0f64ff, 0x400048ff, 0x600027ff, 0x600000ff, 0x500f00ff, + 0x783a00ff, 0x755c00ff, 0x406c00ff, 0x504764ff, 0x005468ff, 0x000000ff, 0x000000ff, 0x000000ff, + 0xbfbfbfff, 0x273aa7ff, 0x5c14a7ff, 0x7514a7ff, 0x751468ff, 0x982727ff, 0xa03a00ff, 0x986c00ff, + 0x888800ff, 0x689800ff, 0x3aa700ff, 0x6c6c6cff, 0x007878ff, 0x000000ff, 0x000000ff, 0x000000ff, + 0xffffffff, 0x3ab5ffff, 0x5cb5ffff, 0x9888ffff, 0xa778ffff, 0xc87878ff, 0xf05c00ff, 0xf08800ff, + 0xe0a700ff, 0xb8b800ff, 0x88c800ff, 0xcccc68ff, 0x00e0d8ff, 0x000000ff, 0x000000ff, 0x000000ff, + 0xffffffff, 0xa7e0ffff, 0xb8d8ffff, 0xc8c8ffff, 0xd8b8ffff, 0xd8a7a7ff, 0xf0d0b8ff, 0xf0d898ff, + 0xf0c878ff, 0xd8d878ff, 0xb8e078ff, 0xd0e0b8ff, 0xb8f0f0ff, 0x000000ff, 0x000000ff, 0x000000ff }; -- cgit v1.2.3