diff --git a/Documentation/I18N/DictionnaryIndexes.md b/Documentation/I18N/DictionnaryIndexes.md
index 8f2610f9..9a7190f7 100644
--- a/Documentation/I18N/DictionnaryIndexes.md
+++ b/Documentation/I18N/DictionnaryIndexes.md
@@ -20,6 +20,8 @@
11 : "Song speed" description
12 : "AI Level" option title
13 : "AI Level" description
+14 : "Global offset" option title
+15 : "Global offset" description
16 : "Layout type" option title
17 : "Layout type" description
18 : "Time stretch" description
diff --git a/README-EN.md b/README-EN.md
index c7689332..096515b5 100644
--- a/README-EN.md
+++ b/README-EN.md
@@ -306,6 +306,7 @@ Download SlimDX again from https://code.google.com/archive/p/slimdx/downloads\.
> * [AkiraChnl/OpenTaiko Icon](https://github.com/AkiraChnl)(@akirach_jp)
> * [cien/OpenTaiko Logo](https://twitter.com/CienpixeL)(@CienpixeL)
> * [funnym0th/OpenTaiko Spanish Translation](https://github.com/funnym0th) (@funnym0th)
+> * [basketballsmash/English README Translation](https://twitter.com/basketballsmash)(@basketballsmash)
> * [Meowgister/OpenTaiko English Translation](https://www.youtube.com/channel/UCDi5puZaJLMUA6OgIAb7rmQ)
> * [Aioilight/TJAPlayer3](https://github.com/aioilight/TJAPlayer3)(@aioilight)
> * [TwoPointZero/TJAPlayer3](https://github.com/twopointzero/TJAPlayer3)(@twopointzero)
diff --git a/README.md b/README.md
index ed212d0c..132407c0 100644
--- a/README.md
+++ b/README.md
@@ -2,6 +2,8 @@
+English : https://github.com/0auBSQ/OpenTaiko/blob/main/README-EN.md
+
# OpenTaiko
TJAPlayer3-Develop-ReWriteのフォーク, .tjaファイルのシミュレーターです。
@@ -307,6 +309,7 @@ SlimDXを改めてダウンロードしてください:https://code.google.com
> * [AkiraChnl/OpenTaiko Icon](https://github.com/AkiraChnl)(@akirach_jp)
> * [cien/OpenTaiko Logo](https://twitter.com/CienpixeL)(@CienpixeL)
> * [funnym0th/OpenTaiko Spanish Translation](https://github.com/funnym0th) (@funnym0th)
+> * [basketballsmash/English README Translation](https://twitter.com/basketballsmash)(@basketballsmash)
> * [Meowgister/OpenTaiko English Translation](https://www.youtube.com/channel/UCDi5puZaJLMUA6OgIAb7rmQ)
> * [Aioilight/TJAPlayer3](https://github.com/aioilight/TJAPlayer3)(@aioilight)
> * [TwoPointZero/TJAPlayer3](https://github.com/twopointzero/TJAPlayer3)(@twopointzero)
diff --git a/TJAPlayer3/Common/CConfigIni.cs b/TJAPlayer3/Common/CConfigIni.cs
index 61120674..ddaa690b 100644
--- a/TJAPlayer3/Common/CConfigIni.cs
+++ b/TJAPlayer3/Common/CConfigIni.cs
@@ -817,6 +817,7 @@ namespace TJAPlayer3
// public int nハイハット切り捨て下限Velocity;
// public int n切り捨て下限Velocity; // #23857 2010.12.12 yyagi VelocityMin
public int nInputAdjustTimeMs;
+ public int nGlobalOffsetMs;
public STDGBVALUE nJudgeLinePosOffset; // #31602 2013.6.23 yyagi 判定ライン表示位置のオフセット
public bool bIsAutoResultCapture; // #25399 2011.6.9 yyagi リザルト画像自動保存機能のON/OFF制御
public int nPoliphonicSounds; // #28228 2012.5.1 yyagi レーン毎の最大同時発音数
@@ -1371,6 +1372,7 @@ namespace TJAPlayer3
this.判定文字表示位置 = new STDGBVALUE();
this.n譜面スクロール速度 = new STDGBVALUE();
this.nInputAdjustTimeMs = 0;
+ this.nGlobalOffsetMs = 0;
this.nJudgeLinePosOffset = new STDGBVALUE(); // #31602 2013.6.23 yyagi
this.e判定表示優先度 = E判定表示優先度.Chipより下;
for ( int i = 0; i < 3; i++ )
@@ -1829,7 +1831,8 @@ namespace TJAPlayer3
#region [ Adjust ]
sw.WriteLine( "; 判定タイミング調整(-99~99)[ms]" );
sw.WriteLine("; Revision value to adjust judgment timing."); //
- sw.WriteLine("InputAdjustTime={0}", this.nInputAdjustTimeMs); //
+ sw.WriteLine("InputAdjustTime={0}", this.nInputAdjustTimeMs); //
+ sw.WriteLine("GlobalOffset={0}", this.nGlobalOffsetMs);
sw.WriteLine();
sw.WriteLine( "; 判定ラインの表示位置調整(ドラム, ギター, ベース)(-99~99)[px]" ); // #31602 2013.6.23 yyagi 判定ラインの表示位置オフセット
@@ -2488,6 +2491,10 @@ namespace TJAPlayer3
{
this.nInputAdjustTimeMs = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nInputAdjustTimeMs );
}
+ else if (str3.Equals("GlobalOffset"))
+ {
+ this.nGlobalOffsetMs = C変換.n値を文字列から取得して範囲内に丸めて返す(str4, -99, 99, this.nGlobalOffsetMs);
+ }
else if ( str3.Equals( "JudgeLinePosOffsetDrums" ) ) // #31602 2013.6.23 yyagi
{
this.nJudgeLinePosOffset.Drums = C変換.n値を文字列から取得して範囲内に丸めて返す( str4, -99, 99, this.nJudgeLinePosOffset.Drums );
diff --git a/TJAPlayer3/I18N/CLang_en.cs b/TJAPlayer3/I18N/CLang_en.cs
index a26f3759..6b90d392 100644
--- a/TJAPlayer3/I18N/CLang_en.cs
+++ b/TJAPlayer3/I18N/CLang_en.cs
@@ -37,6 +37,12 @@ namespace TJAPlayer3
"If 0, AI is disabled.\n" +
"If 1 or more, the 2P will play as AI.\n" +
"Disabled if AUTO 2P is on.",
+ [14] = "Global offset",
+ [15] = "Change the interpreted OFFSET\nvalue for all charts.\n" +
+ "You can set from -99 to 99ms.\n" +
+ "To decrease input lag, set minus value.\n\n" +
+ "Note: Reload songs to make\n" +
+ " the setting take effect.",
[16] = "Layout type",
[17] = "You can change the layout of the songs \ndisplayed on the song select screen.\n" +
"0 : Regular (Up to down diagonal)\n" +
diff --git a/TJAPlayer3/I18N/CLang_fr.cs b/TJAPlayer3/I18N/CLang_fr.cs
index c80db3c3..1606874c 100644
--- a/TJAPlayer3/I18N/CLang_fr.cs
+++ b/TJAPlayer3/I18N/CLang_fr.cs
@@ -43,6 +43,12 @@ namespace TJAPlayer3
"Si 0, l'IA est désactivée.\n" +
"Si au moins 1, le J2 est joué par l'IA.\n" +
"Non compatible avec le mode AUTO J2.",
+ [14] = "Décalage général",
+ [15] = "Modifie la valeur OFFSET\nlue pour tout les sons.\n" +
+ "Définit entre -99 to 99ms.\n" +
+ "Une valeur négative peut réduire \nles latences d'entrées.\n\n" +
+ "Note: Cette option prend effet\n" +
+ " après le rechargement des sons.",
[16] = "Disposition des blocs",
[17] = "Cette option détermine l'ordonnancement \ndes blocs dans le menu de selection \n des musiques en mode partie rapide.\n" +
"0 : Standard (Diagonale haut-bas)\n" +
diff --git a/TJAPlayer3/I18N/CLang_jp.cs b/TJAPlayer3/I18N/CLang_jp.cs
index beb4d757..c3dbfcc7 100644
--- a/TJAPlayer3/I18N/CLang_jp.cs
+++ b/TJAPlayer3/I18N/CLang_jp.cs
@@ -43,6 +43,12 @@ namespace TJAPlayer3
"0ならAIはオフされます。\n" +
"1以上なら2PはAIとして自動でやります。\n" +
"AUTO 2PはオンならAI使用できません。",
+ [14] = "グローバルオフセット",
+ [15] = "全譜面のOFFSETメタデータ\nを変化設定です。\n" +
+ "-99から99msまで設ける可能です。\n" +
+ "入力遅れを減るためマイナス値をご設定ください。\n\n" +
+ "※ 設定は譜面の再読み込み時\n" +
+ " に有効になります。",
[16] = "選曲画面レイアウト",
[17] = "選曲画面のレイアウトの変更ができます。\n" +
"0=>通常の設計(上下斜)\n" +
diff --git a/TJAPlayer3/Songs/CDTX.cs b/TJAPlayer3/Songs/CDTX.cs
index c0ea420e..27622046 100644
--- a/TJAPlayer3/Songs/CDTX.cs
+++ b/TJAPlayer3/Songs/CDTX.cs
@@ -4969,12 +4969,16 @@ namespace TJAPlayer3
else if (strCommandName.Equals("OFFSET") && !string.IsNullOrEmpty(strCommandParam))
{
this.nOFFSET = (int)(Convert.ToDouble(strCommandParam) * 1000);
+
this.bOFFSETの値がマイナスである = this.nOFFSET < 0 ? true : false;
this.listBPM[0].bpm_change_bmscroll_time = -2000 * this.dbNowBPM / 15000;
if (this.bOFFSETの値がマイナスである == true)
- this.nOFFSET = this.nOFFSET * -1; //OFFSETは秒を加算するので、必ず正の数にすること。
- //tbOFFSET.Text = strCommandParam;
+ this.nOFFSET = this.nOFFSET * -1; //OFFSETは秒を加算するので、必ず正の数にすること。
+ //tbOFFSET.Text = strCommandParam;
+
+ // Add global offset
+ this.nOFFSET += TJAPlayer3.ConfigIni.nGlobalOffsetMs;
}
else if (strCommandName.Equals("MOVIEOFFSET"))
{
diff --git a/TJAPlayer3/Stages/04.Config/CActConfigList.cs b/TJAPlayer3/Stages/04.Config/CActConfigList.cs
index e48d9e70..71ad919b 100644
--- a/TJAPlayer3/Stages/04.Config/CActConfigList.cs
+++ b/TJAPlayer3/Stages/04.Config/CActConfigList.cs
@@ -351,7 +351,12 @@ namespace TJAPlayer3
CLangManager.LangInstance.GetString(79));
this.list項目リスト.Add( this.iInputAdjustTimeMs );
- this.iTaikoDefaultCourse = new CItemList(CLangManager.LangInstance.GetString(80), CItemBase.Eパネル種別.通常, TJAPlayer3.ConfigIni.nDefaultCourse,
+ this.iGlobalOffsetMs = new CItemInteger(CLangManager.LangInstance.GetString(14), -99, 99, TJAPlayer3.ConfigIni.nGlobalOffsetMs,
+ CLangManager.LangInstance.GetString(15));
+ this.list項目リスト.Add(this.iGlobalOffsetMs);
+
+
+ this.iTaikoDefaultCourse = new CItemList(CLangManager.LangInstance.GetString(80), CItemBase.Eパネル種別.通常, TJAPlayer3.ConfigIni.nDefaultCourse,
CLangManager.LangInstance.GetString(81),
new string[] { "Easy", "Normal", "Hard", "Oni", "Edit" });
this.list項目リスト.Add(this.iTaikoDefaultCourse);
@@ -1343,6 +1348,8 @@ namespace TJAPlayer3
CItemInteger MusicPreTimeMs;
private CItemInteger iInputAdjustTimeMs;
+ private CItemInteger iGlobalOffsetMs;
+
private CItemList iSystemSkinSubfolder; // #28195 2012.5.2 yyagi
private CItemBase iSystemReloadDTX; // #32081 2013.10.21 yyagi
//private CItemInteger iSystemMasterVolume; // #33700 2014.4.26 yyagi
@@ -1475,6 +1482,8 @@ namespace TJAPlayer3
TJAPlayer3.ConfigIni.nInputAdjustTimeMs = this.iInputAdjustTimeMs.n現在の値;
+ TJAPlayer3.ConfigIni.nGlobalOffsetMs = this.iGlobalOffsetMs.n現在の値;
+
TJAPlayer3.ConfigIni.n表示可能な最小コンボ数.Drums = this.iSystemMinComboDrums.n現在の値;
TJAPlayer3.ConfigIni.nRisky = this.iSystemRisky.n現在の値; // #23559 2911.7.27 yyagi
//CDTXMania.ConfigIni.e判定表示優先度.Drums = (E判定表示優先度) this.iDrumsJudgeDispPriority.n現在選択されている項目番号;
diff --git a/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs b/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs
index fa7a3f90..8cea725c 100644
--- a/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs
+++ b/TJAPlayer3/Stages/07.Game/Taiko/CStage演奏ドラム画面.cs
@@ -881,6 +881,7 @@ namespace TJAPlayer3
protected override void t入力処理_ドラム()
{
+ // Input adjust here
var nInputAdjustTimeMs = TJAPlayer3.ConfigIni.nInputAdjustTimeMs;
for( int nPad = 0; nPad < (int) Eパッド.MAX; nPad++ ) // #27029 2012.1.4 from: <10 to <=10; Eパッドの要素が1つ(HP)増えたため。