Appendix F Ecosystem and Platform Reference
This companion to Appendix A maps the framework-service and sharp-runtime surface used throughout Parts VII–X. 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. |
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. |
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. |
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 55–58 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.