Phase 1: Setup project structure and tool installation guide

- Created project directory structure
- Added docs/SETUP_PHASE1.md with tool installation instructions
- Added docs/AUDIO_ANALYSIS.md with game audio architecture
- Added src/HomuraHimeAudioMod/ BepInEx plugin skeleton
- Added patch stubs for VoiceManager, AudioDucking, EnemyAudio
- Configured .gitignore for build artifacts and game files
- Initialized beads issue tracker
This commit is contained in:
2026-03-22 13:35:01 -04:00
parent 05b01ef276
commit 7169d4533b
9 changed files with 640 additions and 1 deletions

View File

@@ -0,0 +1,33 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net48</TargetFramework>
<AssemblyName>HomuraHimeAudioMod</AssemblyName>
<RootNamespace>HomuraHimeAudioMod</RootNamespace>
<Version>1.0.0</Version>
<Authors>Ed</Authors>
<Description>Audio improvements mod for HomuraHime - fixes glitches and improves enemy indicators</Description>
<GameAssemblyPath>C:\apps\steam\steamapps\common\Homura Hime\HomuraHime_Data\Managed</GameAssemblyPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="0Harmony" Version="2.2.2" />
<PackageReference Include="BepInEx" Version="5.4.21" />
</ItemGroup>
<ItemGroup>
<Reference Include="FMODUnity">
<HintPath>$(GameAssemblyPath)\FMODUnity.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="UnityEngine.AudioModule">
<HintPath>$(GameAssemblyPath)\UnityEngine.AudioModule.dll</HintPath>
<Private>false</Private>
</Reference>
<Reference Include="Assembly-CSharp">
<HintPath>$(GameAssemblyPath)\Assembly-CSharp.dll</HintPath>
<Private>false</Private>
</Reference>
</ItemGroup>
</Project>

View File

@@ -0,0 +1,19 @@
using HarmonyLib;
namespace HomuraHimeAudioMod.Patches
{
/// <summary>
/// Patches for audio ducking system improvements.
/// TO BE IMPLEMENTED AFTER PHASE 2 CODE ANALYSIS
/// </summary>
public class AudioDuckingPatch
{
public static void Apply(ref Harmony harmony)
{
// TODO: After Phase 2, implement patches for:
// - Improve ducking fade times
// - Adjust duck amounts for combat
// - Add custom ducking rules
}
}
}

View File

@@ -0,0 +1,19 @@
using HarmonyLib;
namespace HomuraHimeAudioMod.Patches
{
/// <summary>
/// Patches for enemy behavior audio indicator improvements.
/// TO BE IMPLEMENTED AFTER PHASE 2 CODE ANALYSIS
/// </summary>
public class EnemyAudioPatch
{
public static void Apply(ref Harmony harmony)
{
// TODO: After Phase 2, implement patches for:
// - Boost enemy indicator volumes
// - Improve state change audio cues
// - Add debug logging for enemy audio
}
}
}

View File

@@ -0,0 +1,19 @@
using HarmonyLib;
namespace HomuraHimeAudioMod.Patches
{
/// <summary>
/// Patches for voice limit and voice manager improvements.
/// TO BE IMPLEMENTED AFTER PHASE 2 CODE ANALYSIS
/// </summary>
public class VoiceManagerPatch
{
public static void Apply(ref Harmony harmony)
{
// TODO: After Phase 2, implement patches for:
// - Increase max voice count
// - Improve voice stealing behavior
// - Adjust pooling sizes
}
}
}

View File

@@ -0,0 +1,47 @@
using BepInEx;
using BepInEx.Logging;
using HarmonyLib;
namespace HomuraHimeAudioMod
{
[BepInPlugin(PluginInfo.PLUGIN_GUID, PluginInfo.PLUGIN_NAME, PluginInfo.PLUGIN_VERSION)]
public class Plugin : BaseUnityPlugin
{
public const string PLUGIN_GUID = "com.homurahime.audiomod";
public const string PLUGIN_NAME = "HomuraHime Audio Mod";
public const string PLUGIN_VERSION = "1.0.0";
private static Plugin instance;
private static ManualLogSource logger;
private Harmony harmony;
public static ManualLogSource Log => logger;
private void Awake()
{
instance = this;
logger = Logger;
harmony = new Harmony(PluginInfo.PLUGIN_GUID);
ApplyPatches();
}
private void ApplyPatches()
{
Log.LogInfo($"Applying audio patches...");
// Phase 2 will populate these patch classes after code analysis
// VoiceManagerPatch.Apply(ref harmony);
// AudioDuckingPatch.Apply(ref harmony);
// EnemyAudioPatch.Apply(ref harmony);
Log.LogInfo($"Patches applied successfully");
}
private void OnDestroy()
{
harmony?.UnpatchAll();
}
}
}

View File

@@ -0,0 +1,19 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
[assembly: AssemblyTitle("HomuraHimeAudioMod")]
[assembly: AssemblyDescription("Audio improvements mod for HomuraHime")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HomuraHimeAudioMod")]
[assembly: AssemblyCopyright("Copyright © 2026")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
[assembly: ComVisible(false)]
[assembly: Guid("xxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]