diff --git a/docs/PROJECT-STRUCTURE.md b/docs/PROJECT-STRUCTURE.md index 5f499e3..f32c35b 100644 --- a/docs/PROJECT-STRUCTURE.md +++ b/docs/PROJECT-STRUCTURE.md @@ -118,9 +118,9 @@ S:\Game Hacking\Eushully\Himegari\ ← workspace root (three siblings) │ ├── Age.Engine/Persistence/ native S3SD/S4SD + S3RT codecs, shared payload/ReadTextDB, │ layout-3 numbered state/history/gfx, DAT/STH pair + BMP codec, │ and profile-owned state - │ ├── Age.Engine.Frontend/ platform-neutral frontend diagnostics/options project: page - │ locator, timeline/trace/step-limit diagnostics, VM/window launch - │ options, and performance-frame logging + │ ├── Age.Engine.Frontend/ platform-neutral frontend support: diagnostics/options, page + │ location, performance logging, movie decoder/runtime contracts, + │ audio alignment, surface registry, and WAV sanitization │ └── Age.Engine.Text.Windows/ optional exact Windows GDI gray-4 reference backend; kept │ outside the platform-neutral VM/runtime core ├── native/ authored native runtime boundaries @@ -154,8 +154,10 @@ full-width text entry. Both `engine/AgeEngine.sln` and `godot/Himegari.sln` include the project; Godot and `Age.Engine.Tests` consume it through project references rather than compiling duplicate linked sources. The first owned cluster contains `PageLocatorState`, `GodotTimelineLog`, `GodotTraceSink`, `StepLimitDiagnosticFormatter`, `GodotVmOptions`, -`PerformanceFrameLog`, and `WindowLaunchOptions`. Movie runtime/decoder helpers remain under `godot/` until their -separate ownership slices. +`PerformanceFrameLog`, and `WindowLaunchOptions`. It also owns the internal movie decoder boundary/runtime, +audio-timeline alignment, movie-surface registry, and RIFF/WAVE sanitizer; only the `Himegari` and +`Age.Engine.Tests` assemblies receive explicit friend access to that internal API. FFmpeg interop and decoder +implementation remain under `godot/` until their separate ownership slice. `godot/GodotAdvHost.cs` retains cross-domain host coordination. Its partial-class companion `godot/GodotAdvHost.AdvText.cs` owns live/retained ADV text, surface glyph rasterization and caching, diff --git a/docs/remake-architecture-and-roadmap.md b/docs/remake-architecture-and-roadmap.md index a99f51d..d4a4996 100644 --- a/docs/remake-architecture-and-roadmap.md +++ b/docs/remake-architecture-and-roadmap.md @@ -834,6 +834,13 @@ do not mix mechanical moves with semantic changes. test source links without changing public types, namespaces, behavior, or export configuration. Both solution builds and runtime validation remain green. + The second bounded build-graph slice moved the unchanged internal movie decoder boundary/runtime, audio + alignment policy, movie-surface registry, and RIFF/WAVE sanitizer from `godot/` into `Age.Engine.Frontend`. + Five more direct test source links are gone. Explicit friend access is limited to `Himegari` and + `Age.Engine.Tests`, so the move preserves the intentionally internal API instead of widening it; FFmpeg remains + in Godot while implementing the moved boundary through that friend access. Both solution builds and runtime + validation remain green. + 5. **Close repository-policy and storage gaps.** Add an explicit project license, third-party notices and checksums/provenance for committed binaries, consistent editor/build policy, a pinned .NET SDK, and a CI entry point built on the same validation driver. Remove the empty workspace-root `.git` directory and @@ -1188,9 +1195,9 @@ layer's rendering diverges from ADV; save layout. ## 8. Immediate next step Begin step 4 of the **codebase consolidation** maintenance slice: make the build graph express source ownership -without changing behavior. Move the platform-neutral movie abstractions and runtime support—decoder interfaces, -movie/audio runtime state, movie-surface registry, and RIFF sanitization—from `godot/` into -`Age.Engine.Frontend` next. Replace their test source links while preserving the intentionally internal API through -explicit friend-assembly access; leave FFmpeg interop/decoder ownership for the following slice. +without changing behavior. Move `FfmpegMovieNative.cs` and `FfmpegMovieDecoder.cs` from `godot/` into +`Age.Engine.Frontend` next. Replace both test source links and the movie corpus gate's native-source link with +project references, granting narrowly scoped friend access to the corpus-gate assembly while preserving native +ABI, decoder pacing, failure, and teardown behavior. Concrete playthrough blockers may still preempt this bounded maintenance work; the consolidation effort does not replace Phase B gameplay validation or the open cross-platform gates. diff --git a/godot/IMovieDecoder.cs b/engine/Age.Engine.Frontend/IMovieDecoder.cs similarity index 100% rename from godot/IMovieDecoder.cs rename to engine/Age.Engine.Frontend/IMovieDecoder.cs diff --git a/godot/MovieAudioTimeline.cs b/engine/Age.Engine.Frontend/MovieAudioTimeline.cs similarity index 100% rename from godot/MovieAudioTimeline.cs rename to engine/Age.Engine.Frontend/MovieAudioTimeline.cs diff --git a/godot/MovieRuntime.cs b/engine/Age.Engine.Frontend/MovieRuntime.cs similarity index 100% rename from godot/MovieRuntime.cs rename to engine/Age.Engine.Frontend/MovieRuntime.cs diff --git a/godot/MovieSurfaceRegistry.cs b/engine/Age.Engine.Frontend/MovieSurfaceRegistry.cs similarity index 100% rename from godot/MovieSurfaceRegistry.cs rename to engine/Age.Engine.Frontend/MovieSurfaceRegistry.cs diff --git a/engine/Age.Engine.Frontend/Properties/AssemblyInfo.cs b/engine/Age.Engine.Frontend/Properties/AssemblyInfo.cs new file mode 100644 index 0000000..223b7b5 --- /dev/null +++ b/engine/Age.Engine.Frontend/Properties/AssemblyInfo.cs @@ -0,0 +1,4 @@ +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Age.Engine.Tests")] +[assembly: InternalsVisibleTo("Himegari")] diff --git a/godot/RiffWaveSanitizer.cs b/engine/Age.Engine.Frontend/RiffWaveSanitizer.cs similarity index 100% rename from godot/RiffWaveSanitizer.cs rename to engine/Age.Engine.Frontend/RiffWaveSanitizer.cs diff --git a/engine/Age.Engine.Tests/Age.Engine.Tests.csproj b/engine/Age.Engine.Tests/Age.Engine.Tests.csproj index fe6bf19..beaa608 100644 --- a/engine/Age.Engine.Tests/Age.Engine.Tests.csproj +++ b/engine/Age.Engine.Tests/Age.Engine.Tests.csproj @@ -24,13 +24,8 @@ - - - - -