Skip to content
CAI
Software that uses CAICheck a score

Oliodh/Ochip

51.6

Weak · 20 September 2026

1.8k

lines of production code

VB.NET

primary language

1

measurement over time

CAI band scale
CAI lens gauges

What this system is

This system is a Windows Forms application built on .NET 10 that provides emulation capabilities for retro computing systems. It currently supports the CHIP-8 interpreter and the Nintendo Entertainment System (NES), allowing users to load and run ROMs for both platforms. The application manages distinct rendering buffers and input mappings for each emulator, though NES support is currently limited to CPU, PPU, and memory management without sound or advanced graphics features.

Features

Add NES emulation support to the Ochip emulator

The Ochip emulator now supports Nintendo Entertainment System (NES) games in addition to its existing CHIP-8 and Super-CHIP capabilities. This update introduces a full 6502 CPU implementation, a Picture Processing Unit (PPU) for background rendering, and memory management for iNES format ROMs. The application automatically detects NES ROMs by file extension, resizes the window to 256x240 pixels, and maps keyboard inputs to NES controller buttons. Note that sprite rendering, scrolling, and sound (APU) are not yet implemented.

(repo-wide) · high confidence

Introduce NES emulation alongside CHIP-8

The WinForms application now supports two distinct emulation targets: the original CHIP-8 interpreter and the Nintendo Entertainment System (NES). This change adds a new NES emulator implementation (including 6502 CPU, PPU, and memory management) and updates the main form to switch between CHIP-8 and NES modes. Users can now load NES ROMs and use a mapped controller layout (e.g., X/Z for A/B, arrows for D-pad) in addition to the existing CHIP-8 key bindings. The UI includes a 'Choose ROM' button to load software for the currently selected emulator, and the rendering logic handles separate display buffers and scaling for both 64x32/128x64 (CHIP-8) and 256x240 (NES) resolutions.

WinFormsApp16 · high confidence

Dependencies

Initial project setup for WinForms application targeting .NET 10

Added the project file (WinFormsApp16.vbproj) for a new Windows Forms application. The project is configured to target the net10.0-windows framework and enables Windows Forms support. It sets the output type to a Windows executable and includes standard imports for System.Data, System.Drawing, and System.Windows.Forms.

(dependencies) · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Baseline

  • First survey — no prior run to compare against. CAI 52.

Lenses

  • Code Health 78
  • Architecture 100
  • Maturity 48
  • Readiness 36
  • Security 80

Changes since last survey

  • 79 commits — 49 feature/other, 30 fixes

By area

  • (repo) — 32 commits
  • WinFormsApp16/NES.vb — 17 commits
  • WinFormsApp16/Form1.vb — 9 commits
  • WinFormsApp16/Chip8.vb — 8 commits
  • (root) — 7 commits
  • .github/workflows — 3 commits
  • WinFormsApp16/Form1.Designer.vb — 2 commits
  • WinFormsApp16/My Project — 1 commit

Notable commits

  • fix: Add bounds checking for ROM loading and fix resource disposal
  • fix: Fix JSR/RTS instruction implementation: correct PC increment and stack pop order
  • fix: Fix NES ROM crash by handling trainer flag in iNES header
  • fix: Fix PPUADDR register logic and update palette comment
  • fix: Fix ScrollDown bounds check to allow full-height scrolling
  • fix: Fix arithmetic overflow in Branch method when handling negative offsets
  • fix: Fix arithmetic overflow in CPU6502 Push and Pop methods
  • fix: Fix blinking paddles by removing synchronous Update() call
  • fix: Fix code review issues in CPU instructions
  • fix: Fix code review issues: 6502 JSR/RTS bug, optimize rendering, improve code clarity
  • fix: Fix exit flag and add bounds checks to scrolling functions
  • fix: Fix interrupt vector addresses in CPU
  • fix: Fix overflow exception in Branch function by handling signed offset arithmetic properly
  • fix: Fix paddle flickering by forcing synchronous screen updates
  • fix: Fix sprite blinking by implementing bitmap-based rendering for CHIP-8
  • fix: Fix sprite clipping in CHIP-8 DRW instruction
  • fix: Fix sprite drawing for DXY0 in low-res mode
  • fix: Fix stack pointer overflow in NES CPU Push/Pop methods
  • fix: Implement basic NES PPU rendering to fix black screen issue
  • fix: Merge pull request #12 from Oliodh/copilot/fix-nes-crash-issue
  • …and 59 more

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

Oliodh/Ochip was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 20 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit e36d0007f1e40724bd69f7ec6c6944e267bf95de — the exact code this score is about.
  • Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.