summaryrefslogtreecommitdiff
path: root/mknes.h
diff options
context:
space:
mode:
authorPeter Fors <peter.fors@mindkiller.com>2025-04-21 14:06:43 +0200
committerPeter Fors <peter.fors@mindkiller.com>2025-04-21 14:06:43 +0200
commit19f119e49c91580f49bb02f86bb905a05ba90d6b (patch)
tree1fb671eb5bec6cd723e3708e0085280aee926547 /mknes.h
parent6321f071ed2ab36242e857a9414b7f4c53092d72 (diff)
back to 2560fps after wrangling the ppu_state into two cachelines
Diffstat (limited to 'mknes.h')
-rw-r--r--mknes.h17
1 files changed, 10 insertions, 7 deletions
diff --git a/mknes.h b/mknes.h
index a9e58a0..f8e4be7 100644
--- a/mknes.h
+++ b/mknes.h
@@ -26,11 +26,11 @@ struct ppu_state {
uint16_t bg_shift_attrib_low;
uint16_t bg_shift_attrib_high;
- uint32_t scanline;
- uint32_t dot;
- uint32_t vram_addr;
- uint32_t temp_addr;
- uint32_t fine_x;
+ uint16_t scanline;
+ uint16_t dot;
+ uint16_t vram_addr;
+ uint16_t temp_addr;
+ uint8_t fine_x;
uint8_t bg_next_tile_id;
uint8_t bg_next_tile_attrib;
uint8_t bg_next_tile_lsb;
@@ -49,20 +49,23 @@ struct ppu_state {
uint8_t open_bus;
- uint8_t frame_ready;
uint8_t sprite_zero_hit_possible;
uint8_t sprite_count;
+ uint8_t palette[32];
+
+ // NOTE(peter): CACHELINE 2 start here!
+
uint8_t sprite_indexes[8];
uint8_t sprite_positions[8];
uint8_t sprite_priorities[8];
uint8_t sprite_shift_lo[8];
uint8_t sprite_shift_hi[8];
- uint8_t palette[32];
uint8_t secondary_oam[32];
uint8_t oam[256];
+ uint8_t frame_ready;
} __attribute__((packed, aligned(64)));
struct cpu_state {