Skip to content

Instantly share code, notes, and snippets.

Thank you for the clarification! You’re proposing that the FPGA itself acts as the CHR-RAM, directly presenting VIC-2-rendered graphics data to the NES PPU bus, rather than using a separate CHR-RAM chip on the cartridge. This approach changes the design significantly, as the FPGA would dynamically generate and serve tile/sprite data in real-time to the PPU, emulating CHR-RAM behavior internally. Let’s analyze this and provide an updated Markdown design addressing this approach, confirming feasibility, and including relevant VHDL and example game code.

Feasibility Analysis

Using the FPGA to emulate CHR-RAM (instead of a physical SRAM chip) is feasible but introduces specific considerations:

  • FPGA as CHR-RAM: The FPGA can present tile/sprite data on the PPU bus (CHR address/data lines) as if it were CHR-RAM. It would internally generate VIC-2 graphics and format them into NES-compatible 8x8 tiles, serving them in real-time as the PPU requests data.
  • Advantages:
  • Eliminates the need for a s

C++ Development Conventions

This document outlines the coding and project structure conventions for C++ projects.

C++ Language Standards

  • C++23 is always required
  • Use modern C++ features and idioms

Compiler and Build Configuration

%% Algorithm 1
graph TD
op8 --> op7
op7 --> op6
op6 --> op5
op5 --> op4
op4 --> op3
op3 --> op2
graph TD
    subgraph Tree1
        A1[1] --> B1[2]
        A1 --> C1[3]
        B1 --> D1[4]
        B1 --> E1[5]
        D1 --> F1[6]
    end
sequenceDiagram
    participant AP
    participant WLC

    %% Step 1: AP discovers WLC and starts the Join process
    AP->>WLC: **Discovery Request**
    WLC->>AP: **Discovery Response**
    Note over AP,WLC: DTLS Tunnel Established
    AP->>WLC: **Join Request**
Node: /dev/dri/card0
├───Driver: nvidia-drm (NVIDIA DRM driver) version 0.0.0 (20160202)
│ ├───DRM_CLIENT_CAP_STEREO_3D supported
│ ├───DRM_CLIENT_CAP_UNIVERSAL_PLANES supported
│ ├───DRM_CLIENT_CAP_ATOMIC supported
│ ├───DRM_CLIENT_CAP_ASPECT_RATIO supported
│ ├───DRM_CLIENT_CAP_WRITEBACK_CONNECTORS supported
│ ├───DRM_CLIENT_CAP_CURSOR_PLANE_HOTSPOT not supported
│ ├───DRM_CAP_DUMB_BUFFER = 1
│ ├───DRM_CAP_VBLANK_HIGH_CRTC = 1
@paigeadelethompson
paigeadelethompson / gist:97040c9117daa86fdd83a02e69fb81da
Last active August 26, 2025 21:06
ldconfig -f /var/run/ld-elf.so.hints -r
274:-lxenstore.4 => /usr/local/lib/libxenstore.so.4
275:-lxkbcommon.0 => /usr/local/lib/libxkbcommon.so.0
276:-lpangocairo-1.0.0 => /usr/local/lib/libpangocairo-1.0.so.0
277:-lart_lgpl_2.2 => /usr/local/lib/libart_lgpl_2.so.2
278:-lpowerdevilcore.2 => /usr/local/lib/libpowerdevilcore.so.2
279:-lgdk-3.0 => /usr/local/lib/libgdk-3.so.0
280:-lpulse-mainloop-glib.0 => /usr/local/lib/libpulse-mainloop-glib.so.0
281:-lgucharmap_2_90.7 => /usr/local/lib/libgucharmap_2_90.so.7
282:-lpolkit-qt5-core-1.1 => /usr/local/lib/libpolkit-qt5-core-1.so.1
283:-lrte_common_iavf.23 => /usr/local/lib/librte_common_iavf.so.23
The process will require 959 MiB more space.
Proceed with this action? [y/N]: y
[1/1] Installing linux-nvidia-libs-570.169...
[1/1] Extracting linux-nvidia-libs-570.169: 100%
/compat/linux/sbin/ldconfig: /lib/libSPIRV-Tools-opt.so is not a symbolic link
/compat/linux/sbin/ldconfig: /lib/libSPIRV-Tools-lint.so is not a symbolic link
/compat/linux/sbin/ldconfig: /lib/libssl3.so is not a symbolic link
http_port 192.88.99.0:3128
snmp_port 3401
forwarded_for off
dns_nameservers 203.0.113.53
visible_hostname proxy-ingr.netcrave.local
coredump_dir /var/squid/cache
access_log syslog:local2 squid
cache_log syslog:local2 squid
pinger_enable off
acl snmp_server src 10.255.255.254/32
Require Import Coq.Reals.Reals.
Require Import Coq.Arith.Arith.
Require Import Coq.Logic.FunctionalExtensionality.
(* Real number assumptions for physical validity *)
Open Scope R_scope.
(* Signal Source *)
Definition signal_source (P : R) : R := P. (* Laser power in Watts *)