summaryrefslogtreecommitdiff
path: root/mknes.h
diff options
context:
space:
mode:
authorPeter Fors <peter.fors@mindkiller.com>2025-04-02 06:30:39 +0200
committerPeter Fors <peter.fors@mindkiller.com>2025-04-02 06:30:39 +0200
commit7888e1d5408ed5f88cff788c37b942076f6b9c63 (patch)
treef2714ea36ae9ca99536e42b29fd1ea846ad2d583 /mknes.h
parent2e2f459ad4f8eb70a1d37f8ba7d620b4c264592e (diff)
skinny_version working horizontally
Diffstat (limited to 'mknes.h')
-rw-r--r--mknes.h103
1 files changed, 47 insertions, 56 deletions
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
};