mirror of
https://github.com/tildearrow/furnace.git
synced 2024-11-22 04:25:11 +00:00
release v0.6.3
This commit is contained in:
parent
0f0cccc2b6
commit
f28dcec683
20 changed files with 76 additions and 51 deletions
|
@ -16,7 +16,7 @@ set(CMAKE_CXX_EXTENSIONS OFF)
|
|||
|
||||
set(CMAKE_PROJECT_VERSION_MAJOR 0)
|
||||
set(CMAKE_PROJECT_VERSION_MINOR 6)
|
||||
set(CMAKE_PROJECT_VERSION_PATCH 2)
|
||||
set(CMAKE_PROJECT_VERSION_PATCH 3)
|
||||
|
||||
set(BUILD_GUI_DEFAULT ON)
|
||||
set(USE_SDL2_DEFAULT ON)
|
||||
|
@ -166,6 +166,7 @@ if (WIN32)
|
|||
# support Windows XP
|
||||
if (SUPPORT_XP)
|
||||
list(APPEND DEPENDENCIES_DEFINES "_WIN32_WINNT=0x0501")
|
||||
list(APPEND DEPENDENCIES_DEFINES "SUPPORT_XP")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
|
|
|
@ -15,8 +15,8 @@ android {
|
|||
}
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 197
|
||||
versionName "0.6.2"
|
||||
versionCode 201
|
||||
versionName "0.6.3"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.tildearrow.furnace"
|
||||
android:versionCode="192"
|
||||
android:versionName="0.6.2"
|
||||
android:versionCode="201"
|
||||
android:versionName="0.6.3"
|
||||
android:installLocation="auto">
|
||||
|
||||
<!-- OpenGL ES 2.0 -->
|
||||
|
|
BIN
demos/misc/brokenspace-msm5232.fur
Normal file
BIN
demos/misc/brokenspace-msm5232.fur
Normal file
Binary file not shown.
BIN
demos/misc/cavedotwave-msm5232.fur
Normal file
BIN
demos/misc/cavedotwave-msm5232.fur
Normal file
Binary file not shown.
BIN
demos/virtualboy/wavetablehell4-vb.fur
Normal file
BIN
demos/virtualboy/wavetablehell4-vb.fur
Normal file
Binary file not shown.
|
@ -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 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.
|
||||
- `0`: note.
|
||||
|
|
|
@ -32,6 +32,7 @@ these fields are 0 in format versions prior to 100 (0.6pre1).
|
|||
|
||||
the format versions are:
|
||||
|
||||
- 201: Furnace 0.6.3
|
||||
- 197: Furnace 0.6.2
|
||||
- 192: Furnace 0.6.1
|
||||
- 181: Furnace 0.6
|
||||
|
|
|
@ -15,17 +15,17 @@
|
|||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>0.6.2</string>
|
||||
<string>0.6.3</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Furnace</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.6.2</string>
|
||||
<string>0.6.3</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.6.2</string>
|
||||
<string>0.6.3</string>
|
||||
<key>NSHumanReadableCopyright</key>
|
||||
<string></string>
|
||||
<key>NSHighResolutionCapable</key>
|
||||
|
|
|
@ -325,7 +325,7 @@ if __name__ == "__main__":
|
|||
<h1>Furnace<br/>User Manual</h1>
|
||||
</div>
|
||||
<div>
|
||||
<i>for version 0.6.2</i>
|
||||
<i>for version 0.6.3</i>
|
||||
</div>
|
||||
</section>
|
||||
<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>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 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 id="index">
|
||||
%s
|
||||
|
|
|
@ -18,7 +18,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
|
|||
- discussion: https://github.com/tildearrow/furnace/discussions
|
||||
- Furnace on Discord: https://discord.gg/EfrwT2wq7z
|
||||
- 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
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
|
|||
- discussion: https://github.com/tildearrow/furnace/discussions
|
||||
- Furnace on Discord: https://discord.gg/EfrwT2wq7z
|
||||
- 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
|
||||
|
||||
|
|
|
@ -18,7 +18,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
|
|||
- discussion: https://github.com/tildearrow/furnace/discussions
|
||||
- Furnace on Discord: https://discord.gg/EfrwT2wq7z
|
||||
- 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
|
||||
|
||||
|
|
|
@ -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 "dev200"
|
||||
#define DIV_ENGINE_VERSION 200
|
||||
#define DIV_VERSION "0.6.3"
|
||||
#define DIV_ENGINE_VERSION 201
|
||||
// for imports
|
||||
#define DIV_VERSION_MOD 0xff01
|
||||
#define DIV_VERSION_FC 0xff02
|
||||
|
|
|
@ -157,6 +157,7 @@ const char* aboutLine[]={
|
|||
"scooblee",
|
||||
"sheffield^2",
|
||||
"sillygoose",
|
||||
"Slightly Large NC",
|
||||
"smaybius",
|
||||
"SnugglyBun",
|
||||
"Spinning Square Waves",
|
||||
|
|
|
@ -6966,19 +6966,18 @@ bool FurnaceGUI::init() {
|
|||
logV("window size: %dx%d",scrW,scrH);
|
||||
|
||||
if (!initRender()) {
|
||||
if (settings.renderBackend!="SDL") {
|
||||
settings.renderBackend="SDL";
|
||||
e->setConf("renderBackend","SDL");
|
||||
if (settings.renderBackend!="Software") {
|
||||
settings.renderBackend="Software";
|
||||
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();
|
||||
lastError=fmt::sprintf("could not init renderer!\r\nthe render backend has been set to a safe value. please restart Furnace.");
|
||||
} else {
|
||||
lastError=fmt::sprintf("could not init renderer! %s",SDL_GetError());
|
||||
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.");
|
||||
}
|
||||
lastError=fmt::sprintf("could not init renderer!");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
@ -7068,19 +7067,18 @@ bool FurnaceGUI::init() {
|
|||
logD("starting render backend...");
|
||||
if (!rend->init(sdlWin,settings.vsync)) {
|
||||
logE("it failed...");
|
||||
if (settings.renderBackend!="SDL") {
|
||||
settings.renderBackend="SDL";
|
||||
e->setConf("renderBackend","SDL");
|
||||
if (settings.renderBackend!="Software") {
|
||||
settings.renderBackend="Software";
|
||||
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();
|
||||
lastError=fmt::sprintf("could not init renderer!\r\nthe render backend has been set to a safe value. please restart Furnace.");
|
||||
} else {
|
||||
lastError=fmt::sprintf("could not init renderer! %s",SDL_GetError());
|
||||
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.");
|
||||
}
|
||||
lastError=fmt::sprintf("could not init renderer!");
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -117,12 +117,22 @@ enum FurnaceGUIRenderBackend {
|
|||
#define GUI_HEIGHT_DEFAULT 600
|
||||
#define GUI_MAIN_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
|
||||
#else
|
||||
#define GUI_WIDTH_DEFAULT 1280
|
||||
#define GUI_HEIGHT_DEFAULT 800
|
||||
#define GUI_MAIN_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
|
||||
#endif
|
||||
|
||||
|
@ -1905,10 +1915,10 @@ class FurnaceGUI {
|
|||
|
||||
Settings():
|
||||
settingsChanged(false),
|
||||
mainFontSize(18),
|
||||
patFontSize(18),
|
||||
mainFontSize(GUI_FONT_SIZE_DEFAULT),
|
||||
patFontSize(GUI_FONT_SIZE_DEFAULT),
|
||||
headFontSize(27),
|
||||
iconSize(16),
|
||||
iconSize(GUI_ICON_SIZE_DEFAULT),
|
||||
audioEngine(DIV_AUDIO_SDL),
|
||||
audioQuality(0),
|
||||
audioHiPass(1),
|
||||
|
@ -2115,7 +2125,7 @@ class FurnaceGUI {
|
|||
fontBitmap(0),
|
||||
fontAutoHint(1),
|
||||
fontAntiAlias(1),
|
||||
fontOversample(2),
|
||||
fontOversample(GUI_OVERSAMPLE_DEFAULT),
|
||||
selectAssetOnLoad(1),
|
||||
basicColors(1),
|
||||
playbackTime(1),
|
||||
|
@ -2150,7 +2160,11 @@ class FurnaceGUI {
|
|||
bool introPlayed;
|
||||
bool protoWelcome;
|
||||
Tutorial():
|
||||
#ifdef SUPPORT_XP
|
||||
introPlayed(true),
|
||||
#else
|
||||
introPlayed(false),
|
||||
#endif
|
||||
protoWelcome(false) {
|
||||
}
|
||||
} tutorial;
|
||||
|
|
|
@ -44,7 +44,7 @@
|
|||
#endif
|
||||
|
||||
#ifdef HAVE_FREETYPE
|
||||
#define FONT_BACKEND_DEFAULT 0
|
||||
#define FONT_BACKEND_DEFAULT 1
|
||||
#else
|
||||
#define FONT_BACKEND_DEFAULT 0
|
||||
#endif
|
||||
|
@ -4256,10 +4256,10 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
|
|||
}
|
||||
|
||||
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.patFontSize=conf.getInt("patFontSize",18);
|
||||
settings.iconSize=conf.getInt("iconSize",16);
|
||||
settings.patFontSize=conf.getInt("patFontSize",GUI_FONT_SIZE_DEFAULT);
|
||||
settings.iconSize=conf.getInt("iconSize",GUI_ICON_SIZE_DEFAULT);
|
||||
|
||||
settings.mainFont=conf.getInt("mainFont",GUI_MAIN_FONT_DEFAULT);
|
||||
settings.headFont=conf.getInt("headFont",0);
|
||||
|
@ -4275,11 +4275,11 @@ void FurnaceGUI::readConfig(DivConfig& conf, FurnaceGUISettingGroups groups) {
|
|||
settings.loadFallback=conf.getInt("loadFallback",1);
|
||||
|
||||
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.fontAutoHint=conf.getInt("fontAutoHint",1);
|
||||
settings.fontAntiAlias=conf.getInt("fontAntiAlias",1);
|
||||
settings.fontOversample=conf.getInt("fontOversample",2);
|
||||
settings.fontAntiAlias=conf.getInt("fontAntiAlias",GUI_FONT_ANTIALIAS_DEFAULT);
|
||||
settings.fontOversample=conf.getInt("fontOversample",GUI_OVERSAMPLE_DEFAULT);
|
||||
}
|
||||
|
||||
if (groups&GUI_SETTINGS_APPEARANCE) {
|
||||
|
|
|
@ -497,7 +497,11 @@ static const char* cvText[]={
|
|||
};
|
||||
|
||||
void FurnaceGUI::syncTutorial() {
|
||||
#ifdef SUPPORT_XP
|
||||
tutorial.introPlayed=e->getConfBool("tutIntroPlayed",true);
|
||||
#else
|
||||
tutorial.introPlayed=e->getConfBool("tutIntroPlayed",false);
|
||||
#endif
|
||||
tutorial.protoWelcome=e->getConfBool("tutProtoWelcome2",false);
|
||||
}
|
||||
|
||||
|
|
|
@ -42,6 +42,12 @@ typedef HRESULT (WINAPI *SPDA)(PROCESS_DPI_AWARENESS);
|
|||
struct sigaction termsa;
|
||||
#endif
|
||||
|
||||
#ifdef SUPPORT_XP
|
||||
#define TUT_INTRO_PLAYED true
|
||||
#else
|
||||
#define TUT_INTRO_PLAYED false
|
||||
#endif
|
||||
|
||||
#include "cli/cli.h"
|
||||
|
||||
#ifdef HAVE_GUI
|
||||
|
@ -582,7 +588,7 @@ int main(int argc, char** argv) {
|
|||
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...");
|
||||
FILE* f=ps_fopen(fileName.c_str(),"rb");
|
||||
if (f==NULL) {
|
||||
|
|
Loading…
Reference in a new issue