Coverage
Legend
⚠️ Feature regressed temporarily due to dependency or upstream (usually when zig updates this can happen)
⛔ Blocked due to upstream. Impossible to do until something gets fixed or added, usually listed in https://codeberg.org/GasInfinity/zitrus/issues/1
🟢 Fully implemented 🟡 Partially implemented 🔴 Implementation not started/missing critical things
🔋 High priority 🪫 Low priority
Documentation
- 🟡 Mango
- 🟡 Horizon
Tests
- 🟡 Horizon
- 🟡 Mango
Formats (+ Tooling)
- 🟢 Smdh (tools/Smdh): Make / Dump
- 🟢 3dsx (tools/3dsx): Make / Dump / Link (send and execute)
- 🟢 Pica (tools/Pica): Assemble / Disassemble
- 🟢 Assemble: Only ZitrusPicaShader’s are implemented as an output format.
- 🟢 Disassemble: Outputs ZitrusPicaAssembly. Either RAW instructions, ZPSH’s or DVL’s (.shbin) can be disassembled.
- 🟢 Firm (tools/Firm): Make / Info / Dump
- 🟡 Ncch (tools/Ncch): Make CXI / Dump / Info
- 🟢 ExeFS (tools/ExeFs): Make / List / Dump
- 🟢 RomFS (tools/RomFs): Make / List / Dump
- 🟡 Compression (tools/Compress):
- 🟡 LZrev (Compress/LzRev): Decompression
- 🟡 Yaz0 (Compress/Yaz): Decompression
- 🟡 LZ10 (Compress/Lz10): Decompression
- 🟡 LZ11 (Compress/Lz11): Decompression
- 🟡 Archives (tools/Archive):
- 🟢 Darc (Archive/Darc): Make / List / Dump
- 🟡 Sarc (Archive/Sarc): List / Dump
- 🟡 Layouts (tools/Layout):
- 🟡 Image (Layout/Image): Dump
- 🔴 Layout
- 🔴 Animation
- 🔴 Cro0 / Crr0
- 🔴 Cia
Horizon
Runtime
- 🟢
threadlocalvariables & multithreading. - 🟢 Panic / error reporting and tracing.
- For the full stacktrace check
luma/errdisp.txtin your SD card (with an emulator check you logs and/or enable application debug logging) - 🟢 Segfaults (Data Aborts, Prefetch Aborts, …).
- 🔴 “Pretty” stacktraces with DWARF/Symbols
- For the full stacktrace check
- 🟢 Application Test runner.
- 🟢
std.Io- 🟢 Synchronization through futexes
- 🟢 POSIX’Y fd layer
- 🟢 RomFS
- 🟢 Sdmc
- 🟢 Networking
- 🔴 Concurrency / Async runtime
- 🔴⛔🔋
libc
Services
- 🟢
srv: - 🟢
err:f - 🟡
APT:S/A/U - 🟡
hid:SPRV/USER - 🟢
ir:rst - 🟡
fs:USER/LDR - 🟡
cfg:u/s/i - 🟢
gsp::Gpu - 🟡🪫
gsp::Lcd - 🟡
ns:s - 🟢
ns:p/c - 🟡
csnd:SND - 🟡🪫
pm:app - 🟢
pm:dbg - 🟡
soc:U - 🟡
ps:ps - 🟡
pxi:ps9 - 🟢
Loader - 🔴 All other services not listed here
Library Applets
- 🟢
error - 🟡
swkbd - 🔴 All other applets not listed here.
Mango (PICA200 VK-like Graphics API)
Backends
- 🟢 Horizon
- 🟢 Interface (for
freestandingusage)
Objects
- 🟢 Presentation engine: 240x400, 240x400x2, 240x800 + 240x320.
DoubleorTriplebuffered inMailboxorFifo.- 🔴 Arbitrary, depends on the backend.
- 🟡 Queues
- 🟡 Fill (clear and fill operations)
- 🟡 Transfer (copy and blit operations)
- 🟢 Submit (
CommandBuffersubmission) - 🟢 Present (see
PresentationEngine)
- 🟢
Semaphores - 🟢
DeviceMemory - 🟢
Buffers - 🟢
Sampler - 🟢
Images / ImageViews - 🟢
CommandPools - 🟡
Pipelines- 🟢 Lighting
- 🔴 Shadows
- 🟡 Geometry shaders
- 🔴 Fog
- 🔴 Gas
- 🟡
CommandBuffers- 🔴 Shadow Rendering
- 🔴 Gas Rendering
- 🟡 Image Sampling
- 🔴 Shadow textures
- 🟡 Cubemaps
Hardware
Whether register bits are present and/or relevant tooling (assemblers, disassemblers, etc…)
- 🟢 CSND
- 🟢 PXI
- 🟢 LGY
- 🟢 HID
- 🟢 I2C
- 🟡 CPU (ARM9 & ARM11)
- 🟡 DSP
- 🟡 PICA200: Missing typing of some documented registers, mostly done.