Skip to content
The CNA BibleCNA 0.1.0-alpha.1 Edition

Appendix F Ecosystem and Platform Reference

This companion to Appendix A maps the framework-service and sharp-runtime surface used throughout Parts VIIX. It groups stable API roles and puts the current implementation boundary beside each one. Exact signatures belong to the pinned headers; platform delivery, ownership, hostile-input behavior and test evidence belong to the cited chapters.

F.1 Input: Keyboard, Mouse, GamePad, and Touch

Type group Public shape Current boundary
Keyboard, KeyboardState Static state snapshots, key up/down and pressed-key enumeration; marked scancode, modifier and naming helpers. SDL delivery is real; layout name, physical scancode and XNA key identity must not be collapsed.
Mouse, MouseState Position, buttons, vertical wheel and desktop capture, relative/global helpers. Logical-presentation, window, physical-pixel and post-present coordinates diverge by renderer and host.
GamePad, capabilities and state Player-indexed state, dead-zone modes, vibration, buttons/sticks/triggers; marked identity, light, trigger-rumble and sensor additions. Device open/hotplug, SDL mapping and modern-controller extensions have separate evidence.
TouchPanel, collection and gesture types Touch snapshot, display metadata, enabled gestures and gesture dequeue, plus platform-injection plumbing. Mouse/touch substitution is not physical-touch proof; Web and mobile coordinate/lifecycle paths differ.
CNA::Input services Clipboard, joystick, haptics, sensors, power and enumerated input devices outside XNA’s surface. These are CNA extensions and can have platform-specific absence/refusal semantics.

Chapter 44 owns the exact SDL event/state paths and coordinate matrix. A state object being constructible without hardware is not evidence that a host delivered the event or that the selected renderer maps its coordinates back into the same logical space.

F.2 Audio and Media

Type group Public shape Current boundary
SoundEffect,
SoundEffectInstance
Loaded/raw PCM sound, fire-and-forget or owned instance playback, volume/pitch/pan/loop and listener/emitter Apply3D. The 3D model is a CNA-side approximation over SDL3_mixer; source/instance disposal and channel ownership are observable contracts.
DynamicSoundEffect
Instance
Buffer-needed event and streamed PCM submission, plus a marked float-buffer path. Int16 and float modes cannot be mixed silently; queue timing and callback thread/order need runtime evidence.
XACT objects Wave banks, sound banks, cues, categories, variables and RPC/DSP-like authored behavior. CNA parses and plays a substantial subset through its own engine; unsupported fields and malformed boundaries remain explicit.
Song, MediaPlayer Song metadata and static queue/playback control, shuffle/repeat/mute/volume, position and state-change events. Ownership, callback order and track metadata differ between bare files, library scans and active playback. The public Song/Content extension maps omit .mid even though vendored SDL3_mixer retains its Timidity decoder; decoder presence is not a supported asset route.
Video, VideoPlayer Video metadata, play/pause/resume/stop, frame texture, volume/mute/loop and marked URI/track selection. FFmpeg availability is platform-conditioned; decoded CPU frame, uploaded texture and synchronized playback are distinct milestones.

Chapters 45 and 46 separate decode, object lifetime, playback and platform codecs. A reader accepting a file is not proof that a mixer/video device played it or that its events arrived on the intended thread.

F.3 Devices and Sensors

Type group Public shape Current boundary
Sensor base and readings Support/state, update interval, current value, start/stop and change events for accelerometer, compass, gyroscope and motion-shaped types. SDL covers only part of the sensor vocabulary; Android-native seams, permissions and lifecycle must be named.
VibrateController XNA/WP-shaped vibration plus marked intensity/support/device helpers. A stored request is not motor engagement; emulator and physical hardware are different evidence tiers.
CNA::Devices Camera, display/system information, dialogs, URL launch, locale, clipboard, tray and power services. Optional devices-ext module and host support; many services deliberately fail or return unavailable on headless/unsupported hosts.

Chapter 47 documents event queues, thread safety and the gap between synthetic injection and physical delivery. Chapter 67 records the limited Android/macOS artifacts at the pin; it does not promote source presence to mobile coverage.

F.4 Networking and GamerServices

Type group Public shape Current boundary
NetworkSession Create/find/join/invited families, local/remote/all/previous gamer collections, session state/events, update, host migration and simulated network conditions. Local discovery and ENet delivery are real; they are not Xbox LIVE matchmaking and do not supply arbitrary Internet traversal.
LocalNetworkGamer,
NetworkGamer
Identity/host/local/ready/round-trip state, send/receive, voice-like and session-owned relationships. Packet framing, peer identity, ordering and leave/disconnect transitions require two-process hostile-input tests.
SignedInGamer and related service types Local identity, persistence, paging/rating and selected overlay behavior. Synthetic/local substitutes preserve API shape but do not claim Xbox LIVE service equivalence.
AvatarRenderer and related types Faithful base Avatar API plus opt-in SkinnedModelEXT real-rendering route. Base existence and extension rendering are deliberately separate; neither supplies Microsoft’s remote avatar service/assets.

Chapters 51, 49, and 52 own the delivery, persistence, hostile-packet, local-substitute, and extension boundaries.

F.5 Storage

Type Public shape Current boundary
StorageDevice Fake-async selector/container open, connected/capacity state, delete-container, and application-root extensions. Five focused tests exist; selection is a local-filesystem substitute for platform UI.
StorageContainer Relative directory/file create/delete/enumerate/existence and stream-open operations. Path containment is absent at the pin and this class has no focused test corpus; caller-controlled paths are a security boundary.

Chapter 50 explains the base-root/container-root asymmetry and fake-async ownership. Do not summarize the namespace as “tested” by transferring StorageDevice evidence to StorageContainer.

F.6 SharpRuntime Core Types Used Everywhere

Type group Translation role C++ reality
System::Object and type helpers .NET-shaped base naming, equality/hash/string and selected runtime identity. Standard C++ objects/RTTI; no CLR object header, reflection universe, universal boxing or garbage collector.
Primitive aliases and String Greppable mapping from C# primitive vocabulary into fixed-width C++ types and std::string. UTF and managed-string semantics require explicit per-operation work; an alias is not a CLR.
TimeSpan, date/time types Tick-based durations and selected date/time operations. Value types with explicit arithmetic/validation; timezone/runtime breadth is bounded.
EventHandler<T> Subscription tokens, add/remove/clear and snapshot-based raise. Combines C# delegate/event roles explicitly; lifetime and thread safety remain caller/library contracts.
Collections and task/thread primitives Source-translation-friendly containers, tasks, cancellation and synchronization subsets. APIs may be implemented, ignored, or intentionally out of scope; the database status is not a behavioral parity percentage.
System::IO::Stream, MemoryStream, readers/writers Abstract byte I/O, in-memory storage and .NET-shaped binary/text helpers. Ownership, closed-state behavior, encodings and exception types must be checked per implementation.

Chapters 5558 separate API-shaped translation help from actual C++ semantics, include closure and verification. The sharp-runtime database at the pin contains 16,201 task rows and 2,183 tickets, but those are workflow classifications with query-defined denominators, not a whole-BCL completion score.

F.7 Reading this appendix safely

Search CNA’s module-owned headers for exact framework declarations and sharp-runtime’s pinned headers/database for foundation details. Then require the appropriate source path, runtime, oracle and host artifact from Appendix G. A common type name across XNA, FNA, CNA and sharp-runtime establishes lineage; it does not by itself establish identical ownership, exceptions, threading, encoding, platform reach, or behavior.

Type at least three characters. Results are ranked by how often and where the words occur.