Merge branch 'master' of https://github.com/tildearrow/furnace into SID3
This commit is contained in:
commit
c50c2ea528
4
.github/workflows/build.yml
vendored
4
.github/workflows/build.yml
vendored
|
@ -11,7 +11,7 @@ defaults:
|
|||
shell: bash
|
||||
|
||||
env:
|
||||
BUILD_TYPE: Debug
|
||||
BUILD_TYPE: Release
|
||||
|
||||
jobs:
|
||||
build:
|
||||
|
@ -231,8 +231,10 @@ jobs:
|
|||
cp -vr ../po/locale locale
|
||||
cp -vr ../papers ../${binPath}/furnace.exe ./
|
||||
if [ '${{ matrix.config.compiler }}' == 'msvc' ]; then
|
||||
if [ -e ../${binPath}/furnace.pdb ]; then
|
||||
cp -v ../${binPath}/furnace.pdb ./
|
||||
fi
|
||||
fi
|
||||
sha256sum ../${binPath}/furnace.exe > checksum.txt
|
||||
|
||||
popd
|
||||
|
|
|
@ -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 5)
|
||||
set(CMAKE_PROJECT_VERSION_PATCH 6)
|
||||
|
||||
set(BUILD_GUI_DEFAULT ON)
|
||||
set(USE_SDL2_DEFAULT ON)
|
||||
|
|
|
@ -15,8 +15,8 @@ android {
|
|||
}
|
||||
minSdkVersion 21
|
||||
targetSdkVersion 26
|
||||
versionCode 214
|
||||
versionName "0.6.5"
|
||||
versionCode 218
|
||||
versionName "0.6.6"
|
||||
externalNativeBuild {
|
||||
cmake {
|
||||
arguments "-DANDROID_APP_PLATFORM=android-21", "-DANDROID_STL=c++_static", "-DWARNINGS_ARE_ERRORS=ON", "-DWITH_LOCALE=ON", "-DUSE_MOMO=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="214"
|
||||
android:versionName="0.6.5"
|
||||
android:versionCode="218"
|
||||
android:versionName="0.6.6"
|
||||
android:installLocation="auto">
|
||||
|
||||
<!-- OpenGL ES 2.0 -->
|
||||
|
|
|
@ -12,6 +12,8 @@
|
|||
|
||||
**asset**: an instrument, wavetable or sample.
|
||||
|
||||
**bit**: a single binary on-off value.
|
||||
|
||||
**bitbang**: to achieve PCM sound by sending a rapid stream of volume commands to a non-PCM channel.
|
||||
|
||||
**bitmask**: a set of bits which represent individual single-bit toggles or groups representing small numbers. these are explained fully in the [hexadecimal primer](hex.md).
|
||||
|
@ -72,6 +74,8 @@
|
|||
|
||||
**LFO**: low frequency oscillator. a wave with a slow period (often below hearing range) used to alter other sounds.
|
||||
|
||||
**LFSR**: linear-feedback shift register. a method to generate pseudo-random noise that loops, also known as "periodic noise". within a sequence of on-off bits, it does math to combine the bits at specified locations called "taps", then shifts the whole sequence and adds the resulting bit on the end, guaranteeing a different state for the next pass. depending on the locations of the taps, different lengths of noise loops are generated; for short loops, this will affect their tone.
|
||||
|
||||
**macro**: a sequence of values automatically applied while a note plays.
|
||||
|
||||
**noise bass**: the technique of using a PSG's periodic noise generator with a very short period to create low-frequency sounds.
|
||||
|
@ -86,7 +90,7 @@
|
|||
|
||||
**period**: the length of a repeating waveform. as frequency rises, the period shortens.
|
||||
|
||||
**periodic noise**: an approximation of random noise generated algorithmically.
|
||||
**periodic noise**: an approximation of random noise generated algorithmically with an LFSR.
|
||||
- the period is the number of values generated until the algorithm repeats itself.
|
||||
|
||||
**phase reset**: to restart a waveform at its initial value.
|
||||
|
@ -128,6 +132,8 @@
|
|||
|
||||
**supersaw**: a sound made up of multiple saw waves at slightly different frequencies to achieve a chorusing effect.
|
||||
|
||||
**tap**: a specified bit location within an LFSR.
|
||||
|
||||
**tick rate**: the number of times per second that the sound engine moves forward. all notes and effects are quantized to this rate.
|
||||
- this usually corresponds to the frame rate the system uses for video, approximately 60 for NTSC and 50 for PAL.
|
||||
|
||||
|
|
|
@ -13,10 +13,12 @@ buttons from left to right:
|
|||
- right-clicking always brings up the menu.
|
||||
- **Duplicate**: duplicates the currently selected instrument.
|
||||
- **Open**: brings up a file dialog to load a file as a new instrument at the end of the list.
|
||||
- if the file is an instrument bank, a dialog will appear to select which instruments to load.
|
||||
- **Save**: brings up a file dialog to save the currently selected instrument.
|
||||
- instruments are saved as Furnace instrument (.fui) files.
|
||||
- right-clicking brings up a menu with the following options:
|
||||
- **save instrument as .dmp...**: saves the selected instrument in DefleMask format.
|
||||
- **save all instruments...**: saves all instruments to the selected folder as .fui files.
|
||||
- **Toggle folders/standard view**: enables (and disables) folder view, explained below.
|
||||
- **Move up**: moves the currently selected instrument up in the list. pattern data will automatically be adjusted to match.
|
||||
- **Move down**: same, but downward.
|
||||
|
@ -41,9 +43,10 @@ everything from the instrument list applies here also, with one major difference
|
|||
|
||||
wavetables are saved as Furnace wavetable (.fuw) files.
|
||||
|
||||
- right-clicking the Save button brings up a menu with the following options:
|
||||
right-clicking the Save button brings up a menu with the following options:
|
||||
- **save wavetable as .dmw...**: saves the selected wavetable in DefleMask format.
|
||||
- **save raw wavetable...**: saves the selected wavetable as raw data.
|
||||
- **save all wavetables...**: saves all wavetables to the selected folder as .fuw files.
|
||||
|
||||
## sample list
|
||||
|
||||
|
@ -57,6 +60,7 @@ samples are saved as standard wave (.wav) files.
|
|||
|
||||
right-clicking the Save button brings up a menu with the following options:
|
||||
- **save raw sample...**: saves the selected sample as raw data.
|
||||
- **save all samples...**: saves all samples to the selected folder as .wav files.
|
||||
|
||||
right-clicking a sample in the list brings up a menu:
|
||||
- **make instrument**: creates a new instrument which is set to use the selected sample.
|
||||
|
|
|
@ -68,6 +68,13 @@ the following settings are available:
|
|||
- **loop**: enables loop. if disabled, the song won't loop.
|
||||
- **optimize size**: removes unnecessary commands to reduce size.
|
||||
|
||||
## ROM
|
||||
|
||||
depending on the system, this option may appear to allow you to export your song to a working ROM image or code that can be built into one. export options are explained in the system's accompanying documentation.
|
||||
|
||||
currently, only one system can be exported this way:
|
||||
- [Atari 2600 (TIunA)](../7-systems/tia.md)
|
||||
|
||||
## text
|
||||
|
||||
this option allows you to export your song as a text file.
|
||||
|
|
|
@ -152,6 +152,7 @@ the keys in the "Global hotkeys" section can be used in any window, although not
|
|||
| Expand song | — |
|
||||
| Set note input latch | — |
|
||||
| Clear note input latch | — |
|
||||
| Absorb instrument/octave from status at cursor | — |
|
||||
| | |
|
||||
| **Instrument list** | |
|
||||
| Add instrument | `Insert` |
|
||||
|
|
|
@ -93,6 +93,10 @@ settings are saved when clicking the **OK** or **Apply** buttons at the bottom o
|
|||
- **Export**: select an `.ini` file to save current settings.
|
||||
- **Factory Reset**: resets all settings to default and purges settings backups.
|
||||
|
||||
### Import
|
||||
|
||||
- **Use OPL3 instead of OPL2 for S3M import**: changes which system is used for the import of S3M files that contain FM channels.
|
||||
|
||||
## Audio
|
||||
|
||||
### Output
|
||||
|
|
|
@ -15,9 +15,16 @@ however, effects are continuous (unless specified), which means you only need to
|
|||
- `F8xx`: **Single tick volume up.** adds `x` to volume.
|
||||
- `F9xx`: **Single tick volume down.** subtracts `x` from volume.
|
||||
- ---
|
||||
- `D3xx`: **Volume portamento.** slides volume toward the new value instead of jumping immediately. `x` is the speed of the slide.
|
||||
- `D4xx`: **Volume portamento (fast).** same as `D3xx` but 256× faster.
|
||||
- ---
|
||||
- `07xy`: **Tremolo.** changes volume to be "wavy" with a sine LFO. `x` is the speed. `y` is the depth.
|
||||
- tremolo is downward only.
|
||||
- maximum tremolo depth is -60 volume steps.
|
||||
- ---
|
||||
- `D3xx`: **Volume portamento.** slides the volume to the one specified in the volume column. `x` is the slide speed.
|
||||
- a volume _must_ be present with this effect for it to work.
|
||||
- `D4xx`: **Volume portamento (fast).** like `D3xx` but four times faster.
|
||||
|
||||
## pitch
|
||||
|
||||
|
|
|
@ -72,6 +72,10 @@ the following options are available in the Chip Manager window:
|
|||
- DPCM: the default mode, playing 1-bit DPCM samples as supported by the hardware.
|
||||
- PCM: this mode provides crispier samples by writing the delta counter directly. uses a lot of CPU time in console.
|
||||
|
||||
## DPCM sample loop
|
||||
|
||||
due to hardware limitations, a loop in a DPCM sample must start on a multiple of 512 samples (512, 1024, 1536...) and have a length that is a multiple of 128 plus 8 samples (136, 264, 392...)
|
||||
|
||||
## short noise frequencies (NTSC)
|
||||
|
||||
note | arpeggio | fundamental | MIDI note | pitch
|
||||
|
|
|
@ -27,13 +27,9 @@ Furnace isn't complete without this one...
|
|||
- `E`: low pure buzzy
|
||||
- `F`: low reedy
|
||||
|
||||
## ROM export
|
||||
|
||||
|
||||
## info
|
||||
|
||||
this chip uses the [TIA](../4-instrument/tia.md) instrument editor.
|
||||
|
||||
the arp macro's fixed mode operates differently, writing the direct pitch to the chip. here's a list of pitches.
|
||||
a song can be exported to assembly code for use with the TIunA software driver for the Atari 2600. see [TIunA on GitHub](https://github.com/AYCEdemo/twin-tiuna) for explanations of the export options.
|
||||
|
||||
## chip config
|
||||
|
||||
|
@ -47,6 +43,12 @@ the following options are available in the Chip Manager window:
|
|||
- **Stereo**: output two channels on left and right.
|
||||
- **PAL**: run slower blah blah blah
|
||||
|
||||
## info
|
||||
|
||||
this chip uses the [TIA](../4-instrument/tia.md) instrument editor.
|
||||
|
||||
the arp macro's fixed mode operates differently, writing the direct pitch to the chip. here's a list of pitches.
|
||||
|
||||
### shape 1
|
||||
|
||||
| pitch | NTSC | note | cent | PAL | note | cent
|
||||
|
|
|
@ -68,9 +68,13 @@ in most arcade boards the chip was used in combination with a PCM chip, like [Se
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## info
|
||||
|
||||
|
|
|
@ -99,9 +99,13 @@ several variants of this chip were released as well, with more features.
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## extended channel 3
|
||||
|
||||
|
|
|
@ -99,9 +99,13 @@ the YM2610 (OPNB) and YM2610B chips are very similar to this one, but the built-
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## extended channel 3
|
||||
|
||||
|
|
|
@ -97,9 +97,13 @@ its soundchip is a 4-in-1: 4ch 4-op FM, YM2149 (AY-3-8910 clone) and [2 differen
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## extended channel 2
|
||||
|
||||
|
|
|
@ -96,9 +96,13 @@ it is backward compatible with the original chip.
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## extended channel 3
|
||||
|
||||
|
|
|
@ -82,9 +82,13 @@ thanks to the Z80 sound CPU, DualPCM can play two samples at once! this mode spl
|
|||
- `5Dxx`: **set D2R/SR of operator 2.**
|
||||
- `5Exx`: **set D2R/SR of operator 3.**
|
||||
- `5Fxx`: **set D2R/SR of operator 4.**
|
||||
- `60xx`: **set operator mask.**
|
||||
- `xx` goes from `0` to `F`. it is a bitfield.
|
||||
- each bit corresponds to an operator.
|
||||
- `60xy`: **set operator mask.**
|
||||
- enables or disables operators.
|
||||
- if `x` is `0`, `y` ranges from `0` to `F`. it is a bitfield, so `y` is the sum of the active operators' bits:
|
||||
- OP1 is +1, OP2 is +2, OP3 is +4, and OP4 is +8.
|
||||
- for example, having only OP2 and OP4 on would be 2 + 8 = 10, resulting in an `xy` value of `0A`.
|
||||
- if `x` is `1` to `4`, the effect targets that operator; `y` turns it off with a value of `0` and on with a value of `1`.
|
||||
- for example, the effect `6031` enables OP3.
|
||||
|
||||
## info
|
||||
|
||||
|
|
|
@ -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.5 is `215`.
|
||||
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.6 is `218`.
|
||||
|
||||
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:
|
||||
|
||||
- 218: Furnace 0.6.6
|
||||
- 214: Furnace 0.6.5
|
||||
- 212: Furnace 0.6.4
|
||||
- 201: Furnace 0.6.3
|
||||
|
|
16418
po/furnace.pot
16418
po/furnace.pot
File diff suppressed because it is too large
Load diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
17696
po/pt_BR.po
17696
po/pt_BR.po
File diff suppressed because it is too large
Load diff
16514
po/zh_HK.po
16514
po/zh_HK.po
File diff suppressed because it is too large
Load diff
|
@ -15,17 +15,17 @@
|
|||
<key>CFBundleInfoDictionaryVersion</key>
|
||||
<string>6.0</string>
|
||||
<key>CFBundleLongVersionString</key>
|
||||
<string>0.6.5</string>
|
||||
<string>0.6.6</string>
|
||||
<key>CFBundleName</key>
|
||||
<string>Furnace</string>
|
||||
<key>CFBundlePackageType</key>
|
||||
<string>APPL</string>
|
||||
<key>CFBundleShortVersionString</key>
|
||||
<string>0.6.5</string>
|
||||
<string>0.6.6</string>
|
||||
<key>CFBundleSignature</key>
|
||||
<string>????</string>
|
||||
<key>CFBundleVersion</key>
|
||||
<string>0.6.5</string>
|
||||
<string>0.6.6</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.5</i>
|
||||
<i>for version 0.6.6</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.5 of Furnace.<br/>it may not necessarily apply to previous or future versions.</p>
|
||||
<p>this manual is written for version 0.6.6 of Furnace.<br/>it may not necessarily apply to previous or future versions.</p>
|
||||
</section>
|
||||
<section id="index">
|
||||
%s
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
1 VERSIONINFO
|
||||
FILEVERSION 0,6,5,0
|
||||
PRODUCTVERSION 0,6,5,0
|
||||
FILEVERSION 0,6,6,0
|
||||
PRODUCTVERSION 0,6,6,0
|
||||
{
|
||||
BLOCK "VarFileInfo"
|
||||
{
|
||||
|
@ -33,10 +33,10 @@
|
|||
"Furnace"
|
||||
|
||||
VALUE "ProductVersion",
|
||||
"0.6.5"
|
||||
"0.6.6"
|
||||
|
||||
VALUE "FileVersion",
|
||||
"0.6.5"
|
||||
"0.6.6"
|
||||
|
||||
VALUE "CompanyName",
|
||||
"tildearrow"
|
||||
|
|
|
@ -16,7 +16,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
|
|||
- Furnace on GitHub (project page and issue tracker): https://github.com/tildearrow/furnace
|
||||
- issues: https://github.com/tildearrow/furnace/issues
|
||||
- discussion: https://github.com/tildearrow/furnace/discussions
|
||||
- online manual: https://tildearrow.org/furnace/doc/v0.6.5/
|
||||
- online manual: https://tildearrow.org/furnace/doc/v0.6.6/
|
||||
|
||||
# notes
|
||||
|
||||
|
|
|
@ -26,7 +26,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
|
|||
- Furnace on GitHub (project page and issue tracker): https://github.com/tildearrow/furnace
|
||||
- issues: https://github.com/tildearrow/furnace/issues
|
||||
- discussion: https://github.com/tildearrow/furnace/discussions
|
||||
- online manual: https://tildearrow.org/furnace/doc/v0.6.5/
|
||||
- online manual: https://tildearrow.org/furnace/doc/v0.6.6/
|
||||
|
||||
# notes
|
||||
|
||||
|
|
|
@ -16,8 +16,7 @@ if you find issues (e.g. bugs or annoyances), report them. links below.
|
|||
- Furnace on GitHub (project page and issue tracker): https://github.com/tildearrow/furnace
|
||||
- issues: https://github.com/tildearrow/furnace/issues
|
||||
- discussion: https://github.com/tildearrow/furnace/discussions
|
||||
- online manual: https://tildearrow.org/furnace/doc/v0.6.5/
|
||||
|
||||
- online manual: https://tildearrow.org/furnace/doc/v0.6.6/
|
||||
# notes
|
||||
|
||||
copyright (C) 2021-2024 tildearrow and contributors.
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
|
||||
FUR_VERSION="0.6.5"
|
||||
FUR_VERSION="0.6.6"
|
||||
|
||||
EXPORT_LANGS=("de" "es" "fr" "fi" "hy" "id" "ja" "ko" "nl" "pl" "pt_BR" "ru" "sk" "sv" "th" "tr" "uk" "zh" "zh_HK")
|
||||
|
||||
|
|
|
@ -52,9 +52,9 @@ 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 "dev218"
|
||||
#define DIV_VERSION "0.6.6"
|
||||
#define DIV_ENGINE_VERSION 218
|
||||
// for imports
|
||||
#define DIV_VERSION_MOD 0xff01
|
||||
|
|
|
@ -127,7 +127,6 @@ struct TiunaMatches {
|
|||
static void writeCmd(std::vector<TiunaBytes>& cmds, TiunaCmd& cmd, unsigned char ch, int& lastWait, int fromTick, int toTick) {
|
||||
while (fromTick<toTick) {
|
||||
int val=MIN(toTick-fromTick,256);
|
||||
assert(val>0);
|
||||
if (lastWait!=val) {
|
||||
cmd.wait=val;
|
||||
lastWait=val;
|
||||
|
|
Loading…
Reference in a new issue