diff --git a/AutoMidiPlayer.Data/Properties/Settings.Designer.cs b/AutoMidiPlayer.Data/Properties/Settings.Designer.cs
index 8c23daf..59e0304 100644
--- a/AutoMidiPlayer.Data/Properties/Settings.Designer.cs
+++ b/AutoMidiPlayer.Data/Properties/Settings.Designer.cs
@@ -531,6 +531,36 @@ public bool ActiveSky
}
}
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("HTGame.exe")]
+ public string NTELocation
+ {
+ get
+ {
+ return ((string)(this["NTELocation"]));
+ }
+ set
+ {
+ this["NTELocation"] = value;
+ }
+ }
+
+ [global::System.Configuration.UserScopedSettingAttribute()]
+ [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
+ [global::System.Configuration.DefaultSettingValueAttribute("True")]
+ public bool ActiveNTE
+ {
+ get
+ {
+ return ((bool)(this["ActiveNTE"]));
+ }
+ set
+ {
+ this["ActiveNTE"] = value;
+ }
+ }
+
[global::System.Configuration.UserScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("0")]
diff --git a/AutoMidiPlayer.Data/Properties/Settings.settings b/AutoMidiPlayer.Data/Properties/Settings.settings
index 31d7325..9236271 100644
--- a/AutoMidiPlayer.Data/Properties/Settings.settings
+++ b/AutoMidiPlayer.Data/Properties/Settings.settings
@@ -89,6 +89,9 @@
RobloxPlayerBeta.exe
+
+ HTGame.exe
+
True
@@ -104,6 +107,9 @@
True
+
+ True
+
0
diff --git a/AutoMidiPlayer.WPF/AutoMidiPlayer.WPF.csproj b/AutoMidiPlayer.WPF/AutoMidiPlayer.WPF.csproj
index 23a900c..35cb006 100644
--- a/AutoMidiPlayer.WPF/AutoMidiPlayer.WPF.csproj
+++ b/AutoMidiPlayer.WPF/AutoMidiPlayer.WPF.csproj
@@ -6,7 +6,7 @@
true
AutoMidiPlayer.WPF.App
app.manifest
- 6.24.6
+ 6.25.0
Resources\logo.ico
enable
https://github.com/Jed556/AutoMidiPlayer
diff --git a/AutoMidiPlayer.WPF/Core/Games/GameRegistry.cs b/AutoMidiPlayer.WPF/Core/Games/GameRegistry.cs
index 225f637..25c33fd 100644
--- a/AutoMidiPlayer.WPF/Core/Games/GameRegistry.cs
+++ b/AutoMidiPlayer.WPF/Core/Games/GameRegistry.cs
@@ -121,6 +121,26 @@ public static class GameRegistry
setLocation: v => Settings.Modify(s => s.SkyLocation = v),
getIsActive: () => Settings.ActiveSky,
setIsActive: v => Settings.Modify(s => s.ActiveSky = v)
+ ),
+ new GameDefinition(
+ id: "NTE",
+ displayName: "NTE (Neverness to Everness)",
+ instrumentGameName: "NTE",
+ imageResourcePath: "pack://application:,,,/Resources/NTE.png",
+ processNames: ["HTGame"],
+ defaultExeName: "HTGame.exe",
+ defaultSearchPaths:
+ [
+ @"C:\Program Files\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
+ @"D:\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
+ @"E:\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
+ @"F:\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
+ @"G:\Neverness To Everness\Client\WindowsNoEditor\HT\Binaries\Win64\HTGame.exe",
+ ],
+ getLocation: () => Settings.NTELocation,
+ setLocation: v => Settings.Modify(s => s.NTELocation = v),
+ getIsActive: () => Settings.ActiveNTE,
+ setIsActive: v => Settings.Modify(s => s.ActiveNTE = v)
)
];
diff --git a/AutoMidiPlayer.WPF/Core/Games/NTE/Instruments/Piano.cs b/AutoMidiPlayer.WPF/Core/Games/NTE/Instruments/Piano.cs
new file mode 100644
index 0000000..0879218
--- /dev/null
+++ b/AutoMidiPlayer.WPF/Core/Games/NTE/Instruments/Piano.cs
@@ -0,0 +1,17 @@
+using System.Collections.Generic;
+
+namespace AutoMidiPlayer.WPF.Core.Instruments;
+
+public static partial class NTEInstruments
+{
+ public static readonly InstrumentConfig Piano21k = new(
+ game: "NTE",
+ name: "Piano (21 Key)",
+ notes: [
+ 60, 62, 64, 65, 67, 69, 71, // C4 D4 E4 F4 G4 A4 B4
+ 48, 50, 52, 53, 55, 57, 59, // C3 D3 E3 F3 G3 A3 B3
+ 36, 38, 40, 41, 43, 45, 47, // C2 D2 E2 F2 G2 A2 B2
+ ],
+ keyboardLayouts: [NTEKeyboardLayouts.QWERTY_21Keys]
+ );
+}
diff --git a/AutoMidiPlayer.WPF/Core/Games/NTE/KeyboardLayout.cs b/AutoMidiPlayer.WPF/Core/Games/NTE/KeyboardLayout.cs
new file mode 100644
index 0000000..68c7dc3
--- /dev/null
+++ b/AutoMidiPlayer.WPF/Core/Games/NTE/KeyboardLayout.cs
@@ -0,0 +1,15 @@
+namespace AutoMidiPlayer.WPF.Core.Instruments;
+
+///
+/// NTE keyboard layouts.
+///
+internal static class NTEKeyboardLayouts
+{
+ public static readonly KeyboardLayoutConfig QWERTY_21Keys = new(
+ name: "QWERTY",
+ keys: [
+ 'q', 'w', 'e', 'r', 't', 'y', 'u',
+ 'a', 's', 'd', 'f', 'g', 'h', 'j',
+ 'z', 'x', 'c', 'v', 'b', 'n', 'm',
+ ]);
+}
diff --git a/AutoMidiPlayer.WPF/Resources/NTE.png b/AutoMidiPlayer.WPF/Resources/NTE.png
new file mode 100644
index 0000000..b3ad217
Binary files /dev/null and b/AutoMidiPlayer.WPF/Resources/NTE.png differ
diff --git a/README.md b/README.md
index 88669e3..24d5f72 100644
--- a/README.md
+++ b/README.md
@@ -24,6 +24,7 @@ https://github.com/user-attachments/assets/8e7d8dec-33c4-4d2b-a268-4abd1dbac405
- **Heartopia** - Piano (All variations), 15-key instruments (e.g. lyre, wooden bass, violin, etc.)
- **Roblox** - Piano (61-key)
- **Sky: Children of the Light** - All available Sky instruments as of Feb 2026
+- **NTE (Neverness to Everness)** - Piano (21-Key)
See the [Support wiki page][wiki-support] for details on supported games, instruments, and keyboard layouts.
@@ -86,6 +87,7 @@ The short answer is that it's uncertain. Use it at your own risk. Do not play so
* For Heartopia, here is their [Official Discord message](https://discord.com/channels/1128257488375005215/1460985755529773301/1465702188700405986) about using 3rd party tools.
* For Sky, see their policy on [third-party apps](https://thatgamecompany.helpshift.com/hc/en/17-sky-children-of-the-light/faq/1250-can-i-use-or-create-third-party-applications-like-mods-or-bots/).
* For Roblox, refer to their [third-party services Terms of Use](https://en.help.roblox.com/hc/en-us/articles/115004647846-Roblox-Terms-of-Use#third-party-services).
+* For NTE, see their [Data collected to prevent cheating and unauthorized software](https://static.pwsdk.com/nte/privacy/privacy.html).
## Documentation
@@ -134,7 +136,7 @@ This project is inspired by and built on top of **[sabihoshi/GenshinLyreMidiPlay
# License
* This project is under the [MIT](LICENSE.md) license.
* Originally created by [sabihoshi][GenshinLyreMidiPlayer]. Modified by [Jed556](https://github.com/Jed556) for multi-game support and modernization.
-* All rights reserved by © miHoYo Co., Ltd., © XD Inc., © thatgamecompany, Inc., and © Roblox Corporation. This project is not affiliated nor endorsed by miHoYo, XD, thatgamecompany, or Roblox. Genshin Impact™, Heartopia™, Sky: Children of the Light™, Roblox™, and other properties belong to their respective owners.
+* All rights reserved by © miHoYo Co., Ltd., © XD Inc., © thatgamecompany, Inc., © Roblox Corporation, and © Hotta Studio, a Perfect World company. This project is not affiliated nor endorsed by miHoYo, XD, thatgamecompany, Roblox, or Hotta Studio. Genshin Impact™, Heartopia™, Sky: Children of the Light™, Roblox™, NTE (Neverness to Everness)™, and other properties belong to their respective owners.
* This project uses third-party libraries or other resources that may be distributed under [different licenses](THIRD-PARTY-NOTICES.md).