Skip to content

Commit

Permalink
Merge branch 'ES5503-for-fork' into ES5503
Browse files Browse the repository at this point in the history
  • Loading branch information
LTVA1 authored Dec 30, 2023
2 parents d898666 + 51155aa commit db0d8ab
Show file tree
Hide file tree
Showing 164 changed files with 13,082 additions and 117,044 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Build furnace

on:
push:
branches: master
branches: [master, ESFM]
pull_request:
branches: master

Expand Down Expand Up @@ -355,7 +355,7 @@ jobs:
tar -zcv -f ../${{ steps.package-identify.outputs.filename }} furnace
- name: Upload artifact
if: ${{ github.repository == 'tildearrow/furnace' && github.ref_name == 'master' }}
if: ${{ github.repository == 'LTVA1/furnace' && github.ref_name == 'master' }}
uses: actions/[email protected]
with:
name: ${{ steps.package-identify.outputs.id }}
Expand Down
31 changes: 22 additions & 9 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -711,6 +711,28 @@ src/engine/export/amigaValidation.cpp

src/engine/effect/abstract.cpp
src/engine/effect/dummy.cpp

src/engine/importExport/dmf.cpp
src/engine/importExport/fc.cpp
src/engine/importExport/ftm.cpp
src/engine/importExport/mod.cpp
src/engine/importExport/s3m.cpp

src/engine/importExport/shared.cpp
src/engine/importExport/dmp.cpp
src/engine/importExport/bnk.cpp
src/engine/importExport/ff.cpp
src/engine/importExport/gyb.cpp
src/engine/importExport/opli.cpp
src/engine/importExport/opm.cpp
src/engine/importExport/opni.cpp
src/engine/importExport/s3i.cpp
src/engine/importExport/sbi.cpp
src/engine/importExport/tfi.cpp
src/engine/importExport/vgi.cpp
src/engine/importExport/wopl.cpp
src/engine/importExport/wopn.cpp
src/engine/importExport/y12.cpp
)

if (USE_SNDFILE)
Expand Down Expand Up @@ -754,12 +776,6 @@ src/gui/font_furicon.cpp
src/gui/fonts.cpp

src/gui/image_icon.cpp
src/gui/image_talogo.cpp
src/gui/image_tachip.cpp
src/gui/image_logo.cpp
src/gui/image_wordmark.cpp
src/gui/image_introbg.cpp
src/gui/image_pat.cpp
src/gui/image.cpp

src/gui/debug.cpp
Expand All @@ -768,7 +784,6 @@ src/gui/fileDialog.cpp
src/gui/intConst.cpp
src/gui/guiConst.cpp

src/gui/introTune.cpp

src/gui/about.cpp
src/gui/channels.cpp
Expand All @@ -788,7 +803,6 @@ src/gui/fmPreview.cpp
src/gui/gradient.cpp
src/gui/grooves.cpp
src/gui/insEdit.cpp
src/gui/intro.cpp
src/gui/log.cpp
src/gui/mixer.cpp
src/gui/midiMap.cpp
Expand All @@ -814,7 +828,6 @@ src/gui/sysEx.cpp
src/gui/sysManager.cpp
src/gui/sysPartNumber.cpp
src/gui/sysPicker.cpp
src/gui/tutorial.cpp
src/gui/util.cpp
src/gui/waveEdit.cpp
src/gui/volMeter.cpp
Expand Down
105 changes: 0 additions & 105 deletions CONTRIBUTING.md

This file was deleted.

8 changes: 8 additions & 0 deletions PLEASE_HEEEEEELP_AHHH.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Things we need help with

- Editing the release build scripts (`scripts/release-*.sh`) so they can be launched in MinGW (or similar; must be runnable in MSYS2 shell on Windows and Linux, at least) environment and not obscure Arch-specific one they work only in right now
- Bonus points if they automatically install all the required tools (e.g. use Flipper Zero's `fbt` toolchain as a reference)
- Even more bonus points for the script that automatically builds all the releases for all operating systems
- **EVEN MORE** bonus points if you add Android builds there
- Adding proper `clang-format`: the settings file so contributors can run it locally, and add check to build workflow so monolithic code formatting style is enforced in Furnace code (does not affect submodules)
- Refactoring the code, more specifically, making it better structured and separated. E.g. separating `drawInsEdit()` contents into separate instrument-specific functions, the same goes with file import routines. It is very tedious job but it makes future developers' lifes easier (especially for the ones that add new chips).
14 changes: 14 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,17 @@
# Furnace-B

A fork of [Furnace chiptune tracker](https://github.com/tildearrow/furnace) with the aim to cut out the bloat (aka abandoned/unfinished stuff), make codebase cleaner and easier to understand, optimize performance and memory usage, and bring more useful features.

Here are our [community rules](code_of_conduct.md) and [contribution rules](contribution_guide.md). And here's [what we need the help with](PLEASE_HEEEEEELP_AHHH.md) right now.

Here are the [future plans](todo_list.md).

[See here](https://nightly.link/ltva1/furnace/workflows/build/master) for the latest unstable build of the fork.

[Fork changelog](fork_changelog.md)

[Our Discord server](https://discord.gg/sT8zcsyJZt)

# Furnace (chiptune tracker)

![screenshot](papers/screenshot3.png)
Expand Down
13 changes: 0 additions & 13 deletions TODO.md

This file was deleted.

Binary file added chip_menu_draft.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
7 changes: 7 additions & 0 deletions code_of_conduct.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
# Rules

- Be nice to each other. Respect other developers, contributors, users, etc.
- Don't cause drama, make chaos, try to vandalize the repo, hate and discriminate other persons based on their nationality, age, religion, gender, etc. Noone cares who you are and what is your identity. What matters is the quality of your input, and this defines you in the context of this project. Also don't waste time discussing the previous sentence.
- No politics, especially fascism and other extreme political movements.
- Respect the licence. We will anyway eventually find out you pirated or disassembled some still-copyrighted code or violated the licence in some other way. Don't drag us poor souls to the court with mighty corporations.
- No hate and insults towards tildearrow, will result in a ban everywhere and closing writing access to this repo (if hater has it). You can criticize his code style, program structure decisions, etc., but `no bully` please.
21 changes: 21 additions & 0 deletions contribution_guide.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Contribution guide

You can create pull requests as usual, however, you may be given write access to the repo which means that you can work directly in **this** repo. You will be given an access after at least 3 merged pull requests where at least one of them is of significant effort.

Usual pull requests can be as short as one line, or even small fixes in this one line. Significant effort pull request, however, means a substantial change made to the program. For example: adding new chip, refactoring major feature like macros or instrument editor, structuring the big piece of code, implementing new relatively complex feature (e.g. local wavetables — per-instrument wavetables).

Please, before you start working on some big pull request, ask others (preferably on Discord server), maybe somebody is already working on it.

## Work with write access

When you are given write access to the repo, you can work directly in it. However, you would still need to create pull request, but this time it would be different.

First, when you want to start working on some big change, no matter what it is, you also need to ask others to avoid the situation of two persons independently working on the same thing.

You will need to create your own branch there, in `LTVA1/Furnace` repo. It's convenient to name the branch like `user/change_description`, so e.g. when you are `BaaFur2000` and you refactor module saving/loading code, you name the branch `BaaFur2000/refactor_module_saveload`. Multiple persons can work on the same task, but it may be better to separate it into two branches anyway to avoid collisions. After work is done all the individual branches can be merged into some selected one, which would be the branch that gets merged in pull request.

Pull request name must hold a short description of the change, as usual pull request should do. It would be nice to explain the change in more detail in the conversation.

Generally you can merge such pull request immediately after creating it, but it would be nice to see if automatic build fails. When builds pass, you can merge the request all by yourself.

Why such a system is needed is because you can revert all the changes you did by just reverting one single pull request commit. It allows to quickly exclude the code which e.g. is prone to crashes from master branch, rework it until it does not crash anymore, and then merge again.
Binary file added demos/misc/fragments_turbosound.fur
Binary file not shown.
Binary file added demos/nes/christmas-fever.fur
Binary file not shown.
2 changes: 0 additions & 2 deletions doc/1-intro/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ Furnace uses a music tracker interface. think of a table with music notes writte
for an introduction to a tracker interface, see [tracker concepts and terms](concepts.md) before using Furnace.
there's also a [glossary of common terms](glossary.md).

due to its nature of being feature-packed, it may be technical and somewhat difficult to get around. therefore we added a [basic mode](../2-interface/basic-mode.md), which hides several advanced features.

it also has a flexible windowing system which you may move around and organize.

see [2-interface](../2-interface/README.md) and [3-pattern](../3-pattern/README.md) for more information.
Expand Down
1 change: 0 additions & 1 deletion doc/2-interface/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,5 +43,4 @@ the default layout of Furnace is depicted below.

## other topics

- [basic mode](basic-mode.md)
- [settings](settings.md)
36 changes: 0 additions & 36 deletions doc/2-interface/basic-mode.md

This file was deleted.

1 change: 0 additions & 1 deletion doc/2-interface/menu-bar.md
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,6 @@ it's not really useful, unless you're a developer and want to use a command stre

- **full screen**: expands the Furnace window so it covers your screen.
- **lock layout**: prevents you from dragging/resizing docked windows, or docking more.
- **basic mode**: toggles [Basic Mode](basic-mode.md).
- **visualizer**: toggles pattern view particle effects when the song plays.
- **reset layout**: resets the workspace to its defaults.
- **settings...**: shows the Settings window. these are detailed in [settings.md].
Expand Down
6 changes: 1 addition & 5 deletions doc/2-interface/settings.md
Original file line number Diff line number Diff line change
Expand Up @@ -51,11 +51,6 @@ settings are saved when clicking the **OK** or **Apply** buttons at the bottom o

### Start-up

- **Play intro on start-up:**
- **No**: skips intro entirely.
- **Short**: shows silent title screen briefly.
- **Full (short when loading song)**: shows animated musical intro unless started with a song (command line, double-clicking a .fur file, etc.)
- **Full (always)**: always shows animated musical intro.
- **Disable fade-in during start-up**
- **About screen party time**
- _warning:_ may cause epileptic seizures.
Expand Down Expand Up @@ -497,6 +492,7 @@ below all the binds, select a key from the dropdown list to add it. it will appe

- **Rounded window corners**
- **Rounded buttons**
- **Rounded tabs**
- **Rounded menu corners**
- **Borders around widgets**: draws borders on buttons, checkboxes, text widgets, and the like.

Expand Down
10 changes: 4 additions & 6 deletions doc/2-interface/song-info.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@

all of this metadata will be included in a VGM export. this isn't the case for an audio export, however.

- _**Tuning (A-4)**_: set tuning based on the note A-4, which should be 440 in most cases. opening an Amiga MOD will set it to 436 for hardware compatibility. available only in advanced mode.
- **Tuning (A-4)**: set tuning based on the note A-4, which should be 440 in most cases. opening an Amiga MOD will set it to 436 for hardware compatibility. available only in advanced mode.

## subsongs

Expand All @@ -23,24 +23,22 @@ this window allows one to create **subsongs** - multiple individual songs within

there are multiple ways to set the tempo of a song.

items in _italic_ don't appear in basic mode and are only available in advanced mode.

**Tick Rate**: the frequency of ticks per second, thus the rate at which notes and effects are processed.
- all values are allowed for all chips, though most chips have hardware limitations that mean they should stay at either 60 (approximately NTSC) or 50 (exactly PAL).
- clicking the Tick Rate button switches to a more traditional **Base Tempo** BPM setting.

**Speed**: the number of ticks per row.
- clicking the "Speed" button changes to more complex modes covered in the [grooves] page.

_**Virtual Tempo**:_ Simulates any arbitrary tempo without altering the tick rate. it does this by adding or skipping ticks to approximate the tempo. the two numbers represent a ratio applied to the actual tick rate. example:
**Virtual Tempo**: Simulates any arbitrary tempo without altering the tick rate. it does this by adding or skipping ticks to approximate the tempo. the two numbers represent a ratio applied to the actual tick rate. example:
- set tick rate to 150 BPM (60 Hz) and speed to 6.
- set the first virtual tempo number (numerator) to 200.
- set the second virtual tempo number (denominator) to 150.
- the track will play at 200 BPM.
- the ratio doesn't have to match BPM numbers. set the numerator to 4 and the denominator to 5, and the virtual BPM becomes 150 × 4/5 = 120.
- another way to accomplish this with more control over the results is to use grooves. see the page on [grooves](../8-advanced/grooves.md) for details.

_**Divider**:_ Changes the effective tick rate. a tick rate of 60Hz and a divisor of 6 will result in ticks lasting a tenth of a second each!
**Divider**: Changes the effective tick rate. a tick rate of 60Hz and a divisor of 6 will result in ticks lasting a tenth of a second each!

**Highlight**: sets the pattern row highlights:
- the first value represents the number of rows per beat.
Expand All @@ -50,4 +48,4 @@ _**Divider**:_ Changes the effective tick rate. a tick rate of 60Hz and a diviso

**Pattern Length**: the length of each pattern in rows. this affects all patterns in the song, and every pattern must be the same length. (Individual patterns can be cut short by `0Bxx`, `0Dxx`, and `FFxx` commands.)

_**Song Length**:_ how many orders are in the order list. decreasing it will hide the orders at the bottom. increasing it will restore those orders; increasing it further will add new orders of all `00` patterns.
**Song Length**: how many orders are in the order list. decreasing it will hide the orders at the bottom. increasing it will restore those orders; increasing it further will add new orders of all `00` patterns.
Loading

0 comments on commit db0d8ab

Please sign in to comment.