switch-frame-tap Copyright (C) 2026 Tomas Uribe Contact: Some_Potato_1@protonmail.com / reddit u/Papux200 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License version 2, as published by the Free Software Foundation. See LICENSE for the full text. GPL-2.0 is not an arbitrary choice: tier4/applet-mitm is a libstratosphere sysmodule. It is compiled inside an Atmosphère checkout, links libstratosphere, and ships a patch against it (tier4/applet-mitm/patch_libstrat.py). Atmosphère is GPL-2.0, so anything built this way is too. Third-party material this project depends on but does not redistribute ---------------------------------------------------------------------- Nothing under ref/ is committed to this repository; see ref/README.md for what belongs there and where to fetch it. Atmosphère GPL-2.0 https://github.com/Atmosphere-NX/Atmosphere SysDVR GPL-2.0 https://github.com/exelix11/SysDVR SysDVR-UVC-Capture GPL-2.0 https://github.com/Insektaure/SysDVR-UVC-Capture libdrm (tegra) MIT https://gitlab.freedesktop.org/mesa/drm libnx ISC https://github.com/switchbrew/libnx switchbrew wiki https://switchbrew.org/wiki/ Derived work ------------ tier4/applet-mitm/source/vic40_config.hpp transcribes the VIC 4.0 register methods and configuration-struct layout from libdrm's Tegra backend (vic.h / vic40.h, Copyright (c) 2018 NVIDIA Corporation, MIT). Every one of the nine config structs in it was diffed field-for-field and bit-for-bit against those headers. tier4/applet-mitm/source/applet_mitm_uvc.cpp (v0.4 webcam mode) follows Insektaure's SysDVR-UVC-Capture (GPL-2.0, source/uvc/uvc_device.c and docs/RESEARCH.md): the UVC descriptor layout, the EP0 control-transfer handling on usb:ds (manual status stages, StallCtrl), probe/commit negotiation and the bulk payload rules (2-byte headers, FID toggling, zero-length packets, cancel-and-reap on timeout). Adapted to two frame sizes at 60 fps and a sender fed by this project's NVENC stream. tier4/applet-mitm/source/nvjpg_dec_control.h, generated by tools/nvjpg_dec_control.py, is a test job for the NVJPG engine. Its decode picture-info record is laid out at the field offsets of the T210 hardware's record as averne's oss-nvjpg documents it (GPL-3.0, include/nvjpg/nv/registers.hpp): the offsets describe the hardware; no code from oss-nvjpg is in this tree. It runs only in a test install armed with "jpgdec". tier4/applet-mitm/patch_libstrat.py backports Atmosphère commit b05166d50 (GPL-2.0): mitm ForwardRequest closes the request's copy handles. tier4/applet-mitm/source/applet_mitm_nv.cpp (FindLibnxNvMaps) and applet_mitm_audout.cpp rely on libnx's data layouts (ISC): struct NvMap (nvidia/map.h) and AudioOutBuffer plus the audout:u commands (services/audout.h). Only the layouts are used; no libnx code is copied.