diff --git a/android/app/build.gradle b/android/app/build.gradle index 18feaba8a..96f7149e8 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -15,8 +15,8 @@ android { } minSdkVersion 21 targetSdkVersion 26 - versionCode 226 - versionName "0.6.8pre2" + versionCode 227 + versionName "0.6.8" externalNativeBuild { cmake { arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON", "-DWITH_LOCALE=ON", "-DUSE_MOMO=ON" diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index e9703aeca..428f55847 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -1,8 +1,8 @@ diff --git a/papers/clipboard-format.md b/papers/clipboard-format.md index 90f5a7a9b..70a908199 100644 --- a/papers/clipboard-format.md +++ b/papers/clipboard-format.md @@ -6,7 +6,7 @@ when copying pattern data from Furnace, it's stored in the clipboard as plain te org.tildearrow.furnace - Pattern Data (144) ``` -this top line of text is always the same except for the number in parentheses, which is the internal format version. for example, 0.6.8pre2 is `226`. +this top line of text is always the same except for the number in parentheses, which is the internal format version. for example, 0.6.8 is `227`. the second line is a number between 0 and 18 (decimal) which indicates which column the clip starts from. - `0`: note. diff --git a/papers/format.md b/papers/format.md index c59cfee69..e4eaf7cdb 100644 --- a/papers/format.md +++ b/papers/format.md @@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1). the format versions are: +- 227: Furnace 0.6.8 - 226: Furnace 0.6.8pre2 - 225: Furnace 0.6.8pre1 - 219: Furnace 0.6.7 diff --git a/res/Info.plist b/res/Info.plist index 0624225cb..3cb57209a 100644 --- a/res/Info.plist +++ b/res/Info.plist @@ -15,17 +15,17 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleLongVersionString - 0.6.8pre2 + 0.6.8 CFBundleName Furnace CFBundlePackageType APPL CFBundleShortVersionString - 0.6.8pre2 + 0.6.8 CFBundleSignature ???? CFBundleVersion - 0.6.8pre2 + 0.6.8 NSHumanReadableCopyright NSHighResolutionCapable diff --git a/res/furnace.rc b/res/furnace.rc index 756507c87..717c31797 100644 --- a/res/furnace.rc +++ b/res/furnace.rc @@ -33,10 +33,10 @@ "Furnace" VALUE "ProductVersion", - "0.6.8pre2" + "0.6.8" VALUE "FileVersion", - "0.6.8pre2" + "0.6.8" VALUE "CompanyName", "tildearrow" diff --git a/src/engine/engine.h b/src/engine/engine.h index 94510d2f3..21fc9cebf 100644 --- a/src/engine/engine.h +++ b/src/engine/engine.h @@ -52,10 +52,10 @@ class DivWorkPool; #define EXTERN_BUSY_BEGIN_SOFT e->softLocked=true; e->isBusy.lock(); #define EXTERN_BUSY_END e->isBusy.unlock(); e->softLocked=false; -#define DIV_UNSTABLE +//#define DIV_UNSTABLE -#define DIV_VERSION "0.6.8pre2" -#define DIV_ENGINE_VERSION 226 +#define DIV_VERSION "0.6.8" +#define DIV_ENGINE_VERSION 227 // for imports #define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_FC 0xff02 diff --git a/src/gui/gui.cpp b/src/gui/gui.cpp index bc084bc37..2e78bc037 100644 --- a/src/gui/gui.cpp +++ b/src/gui/gui.cpp @@ -8581,6 +8581,9 @@ FurnaceGUI::FurnaceGUI(): vibrator(NULL), vibratorAvailable(false), cv(NULL), + lastCVFrame(0), + cvFrameTime(100000), + cvFrameHold(0), sampleTex(NULL), sampleTexW(0), sampleTexH(0), diff --git a/src/gui/gui.h b/src/gui/gui.h index 88b5b079a..522a03804 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -1628,6 +1628,8 @@ class FurnaceGUI { FurnaceCV* cv; FurnaceGUITexture* cvTex; + uint64_t lastCVFrame; + int cvFrameTime, cvFrameHold; FurnaceGUITexture* sampleTex; int sampleTexW, sampleTexH; diff --git a/src/gui/tutorial.cpp b/src/gui/tutorial.cpp index 25adc1820..9c1247e29 100644 --- a/src/gui/tutorial.cpp +++ b/src/gui/tutorial.cpp @@ -1011,6 +1011,9 @@ void FurnaceGUI::drawTutorial() { cv=new FurnaceCV; cv->init(e); cv->hiScore=cvHiScore; + lastCVFrame=SDL_GetPerformanceCounter(); + cvFrameTime=100000; + cvFrameHold=0; } if (cvTex==NULL) { cvTex=rend->createTexture(true,320,224,false,bestTexFormat); @@ -1056,7 +1059,16 @@ void FurnaceGUI::drawTutorial() { cv->e->setSongRate(cv->origSongRate*1.5); } - cv->render(touchControls); + uint64_t nextFrame=SDL_GetPerformanceCounter(); + unsigned int mDivider=SDL_GetPerformanceFrequency()/1000000; + int delta=(nextFrame-lastCVFrame)/mDivider; + cvFrameTime=(cvFrameTime*15+delta)/16; + cvFrameHold+=delta; + if (cvFrameHold>=16667 || cvFrameTime>15000) { + cv->render(touchControls); + cvFrameHold%=16667; + } + lastCVFrame=nextFrame; if (cv->hiScore>cvHiScore) { cvHiScore=cv->hiScore;