release v0.6.3

This commit is contained in:
tildearrow 2024-05-01 15:16:55 -05:00
parent 0f0cccc2b6
commit f28dcec683
20 changed files with 76 additions and 51 deletions

View file

@ -16,7 +16,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
set(CMAKE_PROJECT_VERSION_MAJOR 0) set(CMAKE_PROJECT_VERSION_MAJOR 0)
set(CMAKE_PROJECT_VERSION_MINOR 6) set(CMAKE_PROJECT_VERSION_MINOR 6)
set(CMAKE_PROJECT_VERSION_PATCH 2) set(CMAKE_PROJECT_VERSION_PATCH 3)
set(BUILD_GUI_DEFAULT ON) set(BUILD_GUI_DEFAULT ON)
set(USE_SDL2_DEFAULT ON) set(USE_SDL2_DEFAULT ON)
@ -166,6 +166,7 @@ if (WIN32)
# support Windows XP # support Windows XP
if (SUPPORT_XP) if (SUPPORT_XP)
list(APPEND DEPENDENCIES_DEFINES "_WIN32_WINNT=0x0501") list(APPEND DEPENDENCIES_DEFINES "_WIN32_WINNT=0x0501")
list(APPEND DEPENDENCIES_DEFINES "SUPPORT_XP")
endif() endif()
endif() endif()

View file

@ -15,8 +15,8 @@ android {
} }
minSdkVersion 21 minSdkVersion 21
targetSdkVersion 26 targetSdkVersion 26
versionCode 197 versionCode 201
versionName "0.6.2" versionName "0.6.3"
externalNativeBuild { externalNativeBuild {
cmake { cmake {
arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON" arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON"

View file

@ -1,8 +1,8 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.tildearrow.furnace" package="org.tildearrow.furnace"
android:versionCode="192" android:versionCode="201"
android:versionName="0.6.2" android:versionName="0.6.3"
android:installLocation="auto"> android:installLocation="auto">
<!-- OpenGL ES 2.0 --> <!-- OpenGL ES 2.0 -->

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -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) 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 build number. for example, 0.6.2 is `197`. this top line of text is always the same except for the number in parentheses, which is the internal build number. for example, 0.6.3 is `201`.
the second line is a number between 0 and 18 (decimal) which indicates which column the clip starts from. the second line is a number between 0 and 18 (decimal) which indicates which column the clip starts from.
- `0`: note. - `0`: note.

View file

@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1).
the format versions are: the format versions are:
- 201: Furnace 0.6.3
- 197: Furnace 0.6.2 - 197: Furnace 0.6.2
- 192: Furnace 0.6.1 - 192: Furnace 0.6.1
- 181: Furnace 0.6 - 181: Furnace 0.6

View file

@ -15,17 +15,17 @@
<key>CFBundleInfoDictionaryVersion</key> <key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string> <string>6.0</string>
<key>CFBundleLongVersionString</key> <key>CFBundleLongVersionString</key>
<string>0.6.2</string> <string>0.6.3</string>
<key>CFBundleName</key> <key>CFBundleName</key>
<string>Furnace</string> <string>Furnace</string>
<key>CFBundlePackageType</key> <key>CFBundlePackageType</key>
<string>APPL</string> <string>APPL</string>
<key>CFBundleShortVersionString</key> <key>CFBundleShortVersionString</key>
<string>0.6.2</string> <string>0.6.3</string>
<key>CFBundleSignature</key> <key>CFBundleSignature</key>
<string>????</string> <string>????</string>
<key>CFBundleVersion</key> <key>CFBundleVersion</key>
<string>0.6.2</string> <string>0.6.3</string>
<key>NSHumanReadableCopyright</key> <key>NSHumanReadableCopyright</key>
<string></string> <string></string>
<key>NSHighResolutionCapable</key> <key>NSHighResolutionCapable</key>

View file

@ -325,7 +325,7 @@ if __name__ == "__main__":
<h1>Furnace<br/>User Manual</h1> <h1>Furnace<br/>User Manual</h1>
</div> </div>
<div> <div>
<i>for version 0.6.2</i> <i>for version 0.6.3</i>
</div> </div>
</section> </section>
<section id="authors"> <section id="authors">
@ -348,7 +348,7 @@ if __name__ == "__main__":
<p>this documentation is under the <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported</a> license.</p> <p>this documentation is under the <a href="https://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution 3.0 Unported</a> license.</p>
<p>you may reproduce, modify and/or distribute this documentation provided this copyright notice (including license and attribution) is present and any necessary disclaimers whether modifications have been made.</p> <p>you may reproduce, modify and/or distribute this documentation provided this copyright notice (including license and attribution) is present and any necessary disclaimers whether modifications have been made.</p>
<p>this documentation is provided as-is and without warranty of any kind.</p> <p>this documentation is provided as-is and without warranty of any kind.</p>
<p>this manual is written for version 0.6.2 of Furnace.<br/>it may not necessarily apply to previous or future versions.</p> <p>this manual is written for version 0.6.3 of Furnace.<br/>it may not necessarily apply to previous or future versions.</p>
</section> </section>
<section id="index"> <section id="index">
%s %s

View file

@ -18,7 +18,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
- discussion: https://github.com/tildearrow/furnace/discussions - discussion: https://github.com/tildearrow/furnace/discussions
- Furnace on Discord: https://discord.gg/EfrwT2wq7z - Furnace on Discord: https://discord.gg/EfrwT2wq7z
- Furnace on Revolt: https://rvlt.gg/GRPS6tmc - Furnace on Revolt: https://rvlt.gg/GRPS6tmc
- online manual: https://tildearrow.org/furnace/doc/v0.6.2/ - online manual: https://tildearrow.org/furnace/doc/v0.6.3/
# notes # notes

View file

@ -28,7 +28,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
- discussion: https://github.com/tildearrow/furnace/discussions - discussion: https://github.com/tildearrow/furnace/discussions
- Furnace on Discord: https://discord.gg/EfrwT2wq7z - Furnace on Discord: https://discord.gg/EfrwT2wq7z
- Furnace on Revolt: https://rvlt.gg/GRPS6tmc - Furnace on Revolt: https://rvlt.gg/GRPS6tmc
- online manual: https://tildearrow.org/furnace/doc/v0.6.2/ - online manual: https://tildearrow.org/furnace/doc/v0.6.3/
# notes # notes

View file

@ -18,7 +18,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
- discussion: https://github.com/tildearrow/furnace/discussions - discussion: https://github.com/tildearrow/furnace/discussions
- Furnace on Discord: https://discord.gg/EfrwT2wq7z - Furnace on Discord: https://discord.gg/EfrwT2wq7z
- Furnace on Revolt: https://rvlt.gg/GRPS6tmc - Furnace on Revolt: https://rvlt.gg/GRPS6tmc
- online manual: https://tildearrow.org/furnace/doc/v0.6.2/ - online manual: https://tildearrow.org/furnace/doc/v0.6.3/
# notes # notes

View file

@ -52,10 +52,10 @@ class DivWorkPool;
#define EXTERN_BUSY_BEGIN_SOFT e->softLocked=true; e->isBusy.lock(); #define EXTERN_BUSY_BEGIN_SOFT e->softLocked=true; e->isBusy.lock();
#define EXTERN_BUSY_END e->isBusy.unlock(); e->softLocked=false; #define EXTERN_BUSY_END e->isBusy.unlock(); e->softLocked=false;
#define DIV_UNSTABLE //#define DIV_UNSTABLE
#define DIV_VERSION "dev200" #define DIV_VERSION "0.6.3"
#define DIV_ENGINE_VERSION 200 #define DIV_ENGINE_VERSION 201
// for imports // for imports
#define DIV_VERSION_MOD 0xff01 #define DIV_VERSION_MOD 0xff01
#define DIV_VERSION_FC 0xff02 #define DIV_VERSION_FC 0xff02

View file

@ -157,6 +157,7 @@ const char* aboutLine[]={
"scooblee", "scooblee",
"sheffield^2", "sheffield^2",
"sillygoose", "sillygoose",
"Slightly Large NC",
"smaybius", "smaybius",
"SnugglyBun", "SnugglyBun",
"Spinning Square Waves", "Spinning Square Waves",

View file

@ -6966,19 +6966,18 @@ bool FurnaceGUI::init() {
logV("window size: %dx%d",scrW,scrH); logV("window size: %dx%d",scrW,scrH);
if (!initRender()) { if (!initRender()) {
if (settings.renderBackend!="SDL") { if (settings.renderBackend!="Software") {
settings.renderBackend="SDL"; settings.renderBackend="Software";
e->setConf("renderBackend","SDL"); e->setConf("renderBackend","Software");
e->saveConf();
lastError=fmt::sprintf("could not init renderer!\r\nfalling back to software renderer. please restart Furnace.");
} else if (settings.renderBackend=="SDL") {
lastError=fmt::sprintf("could not init renderer! %s\r\nfalling back to software renderer. please restart Furnace.",SDL_GetError());
settings.renderBackend="Software";
e->setConf("renderBackend","Software");
e->saveConf(); e->saveConf();
lastError=fmt::sprintf("could not init renderer!\r\nthe render backend has been set to a safe value. please restart Furnace.");
} else { } else {
lastError=fmt::sprintf("could not init renderer! %s",SDL_GetError()); lastError=fmt::sprintf("could not init renderer!");
if (!settings.renderDriver.empty()) {
settings.renderDriver="";
e->setConf("renderDriver","");
e->saveConf();
lastError+=fmt::sprintf("\r\nthe render driver has been set to a safe value. please restart Furnace.");
}
} }
return false; return false;
} }
@ -7068,19 +7067,18 @@ bool FurnaceGUI::init() {
logD("starting render backend..."); logD("starting render backend...");
if (!rend->init(sdlWin,settings.vsync)) { if (!rend->init(sdlWin,settings.vsync)) {
logE("it failed..."); logE("it failed...");
if (settings.renderBackend!="SDL") { if (settings.renderBackend!="Software") {
settings.renderBackend="SDL"; settings.renderBackend="Software";
e->setConf("renderBackend","SDL"); e->setConf("renderBackend","Software");
e->saveConf();
lastError=fmt::sprintf("could not init renderer!\r\nfalling back to software renderer. please restart Furnace.");
} else if (settings.renderBackend=="SDL") {
lastError=fmt::sprintf("could not init renderer! %s\r\nfalling back to software renderer. please restart Furnace.",SDL_GetError());
settings.renderBackend="Software";
e->setConf("renderBackend","Software");
e->saveConf(); e->saveConf();
lastError=fmt::sprintf("could not init renderer!\r\nthe render backend has been set to a safe value. please restart Furnace.");
} else { } else {
lastError=fmt::sprintf("could not init renderer! %s",SDL_GetError()); lastError=fmt::sprintf("could not init renderer!");
if (!settings.renderDriver.empty()) {
settings.renderDriver="";
e->setConf("renderDriver","");
e->saveConf();
lastError+=fmt::sprintf("\r\nthe render driver has been set to a safe value. please restart Furnace.");
}
} }
return false; return false;
} }

View file

@ -117,12 +117,22 @@ enum FurnaceGUIRenderBackend {
#define GUI_HEIGHT_DEFAULT 600 #define GUI_HEIGHT_DEFAULT 600
#define GUI_MAIN_FONT_DEFAULT 3 #define GUI_MAIN_FONT_DEFAULT 3
#define GUI_PAT_FONT_DEFAULT 3 #define GUI_PAT_FONT_DEFAULT 3
#define GUI_FONT_SIZE_DEFAULT 13
#define GUI_ICON_SIZE_DEFAULT 12
#define GUI_OVERSAMPLE_DEFAULT 1
#define GUI_FONT_ANTIALIAS_DEFAULT 0
#define GUI_FONT_HINTING_DEFAULT 1
#define GUI_DECORATIONS_DEFAULT 0 #define GUI_DECORATIONS_DEFAULT 0
#else #else
#define GUI_WIDTH_DEFAULT 1280 #define GUI_WIDTH_DEFAULT 1280
#define GUI_HEIGHT_DEFAULT 800 #define GUI_HEIGHT_DEFAULT 800
#define GUI_MAIN_FONT_DEFAULT 0 #define GUI_MAIN_FONT_DEFAULT 0
#define GUI_PAT_FONT_DEFAULT 0 #define GUI_PAT_FONT_DEFAULT 0
#define GUI_FONT_SIZE_DEFAULT 18
#define GUI_ICON_SIZE_DEFAULT 16
#define GUI_OVERSAMPLE_DEFAULT 2
#define GUI_FONT_ANTIALIAS_DEFAULT 1
#define GUI_FONT_HINTING_DEFAULT 0
#define GUI_DECORATIONS_DEFAULT 1 #define GUI_DECORATIONS_DEFAULT 1
#endif #endif
@ -1905,10 +1915,10 @@ class FurnaceGUI {
Settings(): Settings():
settingsChanged(false), settingsChanged(false),
mainFontSize(18), mainFontSize(GUI_FONT_SIZE_DEFAULT),
patFontSize(18), patFontSize(GUI_FONT_SIZE_DEFAULT),
headFontSize(27), headFontSize(27),
iconSize(16), iconSize(GUI_ICON_SIZE_DEFAULT),
audioEngine(DIV_AUDIO_SDL), audioEngine(DIV_AUDIO_SDL),
audioQuality(0), audioQuality(0),
audioHiPass(1), audioHiPass(1),
@ -2115,7 +2125,7 @@ class FurnaceGUI {
fontBitmap(0), fontBitmap(0),
fontAutoHint(1), fontAutoHint(1),
fontAntiAlias(1), fontAntiAlias(1),
fontOversample(2), fontOversample(GUI_OVERSAMPLE_DEFAULT),
selectAssetOnLoad(1), selectAssetOnLoad(1),
basicColors(1), basicColors(1),
playbackTime(1), playbackTime(1),
@ -2150,7 +2160,11 @@ class FurnaceGUI {
bool introPlayed; bool introPlayed;
bool protoWelcome; bool protoWelcome;
Tutorial(): Tutorial():
#ifdef SUPPORT_XP
introPlayed(true),
#else
introPlayed(false), introPlayed(false),
#endif
protoWelcome(false) { protoWelcome(false) {
} }
} tutorial; } tutorial;

View file

@ -44,7 +44,7 @@
#endif #endif
#ifdef HAVE_FREETYPE #ifdef HAVE_FREETYPE
#define FONT_BACKEND_DEFAULT 0 #define FONT_BACKEND_DEFAULT 1
#else #else
#define FONT_BACKEND_DEFAULT 0 #define FONT_BACKEND_DEFAULT 0
#endif #endif
@ -4256,10 +4256,10 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
} }
if (groups&GUI_SETTINGS_FONT) { if (groups&GUI_SETTINGS_FONT) {
settings.mainFontSize=conf.getInt("mainFontSize",18); settings.mainFontSize=conf.getInt("mainFontSize",GUI_FONT_SIZE_DEFAULT);
settings.headFontSize=conf.getInt("headFontSize",27); settings.headFontSize=conf.getInt("headFontSize",27);
settings.patFontSize=conf.getInt("patFontSize",18); settings.patFontSize=conf.getInt("patFontSize",GUI_FONT_SIZE_DEFAULT);
settings.iconSize=conf.getInt("iconSize",16); settings.iconSize=conf.getInt("iconSize",GUI_ICON_SIZE_DEFAULT);
settings.mainFont=conf.getInt("mainFont",GUI_MAIN_FONT_DEFAULT); settings.mainFont=conf.getInt("mainFont",GUI_MAIN_FONT_DEFAULT);
settings.headFont=conf.getInt("headFont",0); settings.headFont=conf.getInt("headFont",0);
@ -4275,11 +4275,11 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
settings.loadFallback=conf.getInt("loadFallback",1); settings.loadFallback=conf.getInt("loadFallback",1);
settings.fontBackend=conf.getInt("fontBackend",FONT_BACKEND_DEFAULT); settings.fontBackend=conf.getInt("fontBackend",FONT_BACKEND_DEFAULT);
settings.fontHinting=conf.getInt("fontHinting",0); settings.fontHinting=conf.getInt("fontHinting",GUI_FONT_HINTING_DEFAULT);
settings.fontBitmap=conf.getInt("fontBitmap",0); settings.fontBitmap=conf.getInt("fontBitmap",0);
settings.fontAutoHint=conf.getInt("fontAutoHint",1); settings.fontAutoHint=conf.getInt("fontAutoHint",1);
settings.fontAntiAlias=conf.getInt("fontAntiAlias",1); settings.fontAntiAlias=conf.getInt("fontAntiAlias",GUI_FONT_ANTIALIAS_DEFAULT);
settings.fontOversample=conf.getInt("fontOversample",2); settings.fontOversample=conf.getInt("fontOversample",GUI_OVERSAMPLE_DEFAULT);
} }
if (groups&GUI_SETTINGS_APPEARANCE) { if (groups&GUI_SETTINGS_APPEARANCE) {

View file

@ -497,7 +497,11 @@ static const char* cvText[]={
}; };
void FurnaceGUI::syncTutorial() { void FurnaceGUI::syncTutorial() {
#ifdef SUPPORT_XP
tutorial.introPlayed=e->getConfBool("tutIntroPlayed",true);
#else
tutorial.introPlayed=e->getConfBool("tutIntroPlayed",false); tutorial.introPlayed=e->getConfBool("tutIntroPlayed",false);
#endif
tutorial.protoWelcome=e->getConfBool("tutProtoWelcome2",false); tutorial.protoWelcome=e->getConfBool("tutProtoWelcome2",false);
} }

View file

@ -42,6 +42,12 @@ typedef HRESULT (WINAPI *SPDA)(PROCESS_DPI_AWARENESS);
struct sigaction termsa; struct sigaction termsa;
#endif #endif
#ifdef SUPPORT_XP
#define TUT_INTRO_PLAYED true
#else
#define TUT_INTRO_PLAYED false
#endif
#include "cli/cli.h" #include "cli/cli.h"
#ifdef HAVE_GUI #ifdef HAVE_GUI
@ -582,7 +588,7 @@ int main(int argc, char** argv) {
e.setAudio(DIV_AUDIO_DUMMY); e.setAudio(DIV_AUDIO_DUMMY);
} }
if (!fileName.empty() && ((!e.getConfBool("tutIntroPlayed",false)) || e.getConfInt("alwaysPlayIntro",0)!=3 || consoleMode || benchMode || infoMode || outName!="" || vgmOutName!="" || cmdOutName!="")) { if (!fileName.empty() && ((!e.getConfBool("tutIntroPlayed",TUT_INTRO_PLAYED)) || e.getConfInt("alwaysPlayIntro",0)!=3 || consoleMode || benchMode || infoMode || outName!="" || vgmOutName!="" || cmdOutName!="")) {
logI("loading module..."); logI("loading module...");
FILE* f=ps_fopen(fileName.c_str(),"rb"); FILE* f=ps_fopen(fileName.c_str(),"rb");
if (f==NULL) { if (f==NULL) {