nx_chunk_paginate.nx
buildroot/runtime/nx_chunk_paginate.nx
about
nx_chunk_paginate.nx -- flash-streamed world chunks.
THE T1/MCU UNLOCK PRIMITIVE for worlds bigger than RAM. ESP32 has
520 KiB SRAM but ~4 MB flash. A walkable Minecraft-equivalent world
at 32³ chunks (12 KiB each at 3bpp) means ~32 chunks comfortably
fit in flash; substrate streams them into RAM as player moves.
LRU cache: keep N chunks resident in RAM; on miss, evict LRU and
load the requested chunk from flash. Caller supplies the "flash
storage" as a content-addressed byte buffer (the integration layer
maps the actual flash partition).
Composes:
nx_tissue -- each chunk is a 32³ NxTissue
nx_palette -- chunks are palette-packed (3bpp typical for T1)
nx_aerobic -- evicted chunks go to aerobic pile for journaling
(we never silently lose data)
nx_metabolism -- chunk-page-miss is a substrate-level event;
metabolism tracks misses per call site
dependencies 3 imports · 2 importers
imports: nx_syscalls.nxnx_tier.nxnx_tissue.nx
imported by: nx_chunk_paginate_test.nxnx_minecraft_mcu_compose_test.nx
structs
| 38 | struct NxChunkSlot |
| 45 | struct NxChunkPaginator |
consts
| 24 | const NX_MAGIC_1024: i64 = 1024 |
| 26 | const NX_CP_OK: nx_int = 0 |
| 27 | const NX_CP_ERR_NOT_FOUND: nx_int = 1 |
| 28 | const NX_CP_ERR_BAD_COORD: nx_int = 2 |
| 29 | const NX_CP_CACHE_HIT: nx_int = 3 |
| 30 | const NX_CP_CACHE_MISS: nx_int = 4 |
| 54 | const NX_CP_SLOT_BYTES: nx_size = 32 |
functions
| 56 | func nx_chunk_paginator_new(capacity: nx_size) -> *NxChunkPaginator |
| 78 | func _cp_at(p: *NxChunkPaginator, idx: nx_size) -> *NxChunkSlot |
| 82 | func _cp_find_loaded(p: *NxChunkPaginator, chunk_id: nx_int) -> nx_int |
| 99 | func _cp_find_lru(p: *NxChunkPaginator) -> nx_int |
| 123 | func _cp_find_free(p: *NxChunkPaginator) -> nx_int |
| 140 | func nx_chunk_request(p: *NxChunkPaginator, |
| 181 | func nx_chunk_loaded_count(p: *NxChunkPaginator) -> nx_size |
| 185 | func nx_chunk_hit_count(p: *NxChunkPaginator) -> nx_int |
| 189 | func nx_chunk_miss_count(p: *NxChunkPaginator) -> nx_int |
| 193 | func nx_chunk_evict_count(p: *NxChunkPaginator) -> nx_int called by 1: main |
| 202 | func nx_chunk_hit_rate_q10(p: *NxChunkPaginator) -> nx_int called by 1: main |
| 210 | func nx_chunk_is_loaded(p: *NxChunkPaginator, chunk_id: nx_int) -> nx_int |