| 
									
										
										
										
											2021-05-13 04:22:57 -04:00
										 |  |  | # Furnace
 | 
					
						
							| 
									
										
										
										
											2021-05-11 16:08:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 03:36:42 -05:00
										 |  |  |  | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-11 03:52:26 -05:00
										 |  |  | this is a work-in-progress chiptune tracker compatible with DefleMask modules (.dmf). | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## features
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-13 03:05:41 -05:00
										 |  |  | - supports the following systems: | 
					
						
							|  |  |  |   - Sega Genesis | 
					
						
							|  |  |  |   - Sega Master System | 
					
						
							|  |  |  |   - Game Boy | 
					
						
							|  |  |  |   - PC Engine | 
					
						
							|  |  |  |   - NES | 
					
						
							|  |  |  |   - Commodore 64 | 
					
						
							|  |  |  |   - Yamaha YM2151 (plus PCM) | 
					
						
							|  |  |  |   - Neo Geo | 
					
						
							|  |  |  |   - AY-3-8910 (ZX Spectrum, Atari ST, etc.) | 
					
						
							| 
									
										
										
										
											2022-01-14 00:02:10 -05:00
										 |  |  |   - Microchip AY8930 | 
					
						
							| 
									
										
										
										
											2022-01-16 01:11:50 -05:00
										 |  |  |   - Philips SAA1099 | 
					
						
							|  |  |  |   - Amiga | 
					
						
							| 
									
										
										
										
											2022-01-14 12:23:19 -05:00
										 |  |  |   - TIA (Atari 2600/7800) | 
					
						
							| 
									
										
										
										
											2022-01-11 03:52:26 -05:00
										 |  |  | - multiple sound chips in a single song! | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | - clean-room design (zero reverse-engineered code and zero decompilation; using official DMF specs, guesswork and ABX tests only) | 
					
						
							|  |  |  | - bug/quirk implementation for increased playback accuracy | 
					
						
							| 
									
										
										
										
											2022-01-16 04:42:40 -05:00
										 |  |  | - accurate emulation cores whether possible (Nuked, MAME, SameBoy, Mednafen PCE, puNES, reSID, Stella and ymfm) | 
					
						
							| 
									
										
										
										
											2022-01-11 04:55:52 -05:00
										 |  |  | - additional features on top: | 
					
						
							| 
									
										
										
										
											2022-01-11 03:52:26 -05:00
										 |  |  |   - SSG envelopes in Neo Geo | 
					
						
							|  |  |  |   - full duty/cutoff range in C64 | 
					
						
							| 
									
										
										
										
											2022-01-25 04:14:17 -05:00
										 |  |  |   - ability to change tempo mid-song with `Cxxx` effect (`xxx` between `000` and `3ff`) | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | - open-source. GPLv2. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | ## downloads
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-30 18:58:51 -05:00
										 |  |  | check out the Releases page. available for Windows, macOS and Linux (AppImage). | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-16 01:11:50 -05:00
										 |  |  | ## help
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | check out the [documentation](papers/doc/README.md). it's mostly incomplete, but has details on effects. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | # developer info
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | ## dependencies
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-28 16:31:35 -04:00
										 |  |  | - CMake | 
					
						
							|  |  |  | - SDL2 | 
					
						
							|  |  |  | - zlib | 
					
						
							| 
									
										
										
										
											2021-06-09 04:33:03 -04:00
										 |  |  | - JACK (optional) | 
					
						
							| 
									
										
										
										
											2021-05-28 16:31:35 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-14 14:33:24 -05:00
										 |  |  | SDL2 and zlib are included as submodules. | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## compilation
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-28 15:44:02 -04:00
										 |  |  | your typical CMake project. clone (including submodules) and: | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-28 16:31:35 -04:00
										 |  |  | ### Windows using MSVC
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 03:37:42 -05:00
										 |  |  | **no longer tested!** as of now tildearrow uses MinGW for Windows builds... | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-28 16:31:35 -04:00
										 |  |  | from the developer tools command prompt: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | mkdir build | 
					
						
							|  |  |  | cd build | 
					
						
							|  |  |  | cmake .. | 
					
						
							|  |  |  | msbuild ALL_BUILD.vcxproj | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ### macOS and Linux
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | ``` | 
					
						
							|  |  |  | mkdir build | 
					
						
							|  |  |  | cd build | 
					
						
							|  |  |  | cmake .. | 
					
						
							|  |  |  | make | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## usage
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | ./furnace | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | this opens the program. | 
					
						
							| 
									
										
										
										
											2021-12-07 13:08:48 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | ./furnace -console <file> | 
					
						
							| 
									
										
										
										
											2021-12-07 13:08:48 -05:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-16 04:43:54 -05:00
										 |  |  | this will play a compatible file. | 
					
						
							| 
									
										
										
										
											2021-12-07 13:08:48 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | ./furnace -console -view commands <file> | 
					
						
							| 
									
										
										
										
											2021-12-07 13:08:48 -05:00
										 |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-16 04:43:54 -05:00
										 |  |  | this will play a compatible file and enable the commands view. | 
					
						
							| 
									
										
										
										
											2021-12-07 13:08:48 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 13:30:06 -05:00
										 |  |  | # notes
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-11 03:52:26 -05:00
										 |  |  | > how do I use Neo Geo SSG envelopes?
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | the following effects are provided: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - `22xy`: set envelope mode. | 
					
						
							|  |  |  |   - `x` sets the envelope shape, which may be one of the following: | 
					
						
							|  |  |  |     - `0: \___` decay | 
					
						
							|  |  |  |     - `4: /___` attack once | 
					
						
							|  |  |  |     - `8: \\\\` saw | 
					
						
							|  |  |  |     - `9: \___` decay | 
					
						
							|  |  |  |     - `A: \/\/` inverse obelisco | 
					
						
							|  |  |  |     - `B: \¯¯¯` decay once | 
					
						
							|  |  |  |     - `C: ////` inverse saw | 
					
						
							|  |  |  |     - `D: /¯¯¯` attack | 
					
						
							|  |  |  |     - `E: /\/\` obelisco | 
					
						
							|  |  |  |     - `F: /___` attack once | 
					
						
							|  |  |  |   - if `y` is 1 then the envelope will affect this channel. | 
					
						
							|  |  |  | - `23xx`: set envelope period low byte. | 
					
						
							|  |  |  | - `24xx`: set envelope period high byte. | 
					
						
							| 
									
										
										
										
											2022-01-11 18:38:26 -05:00
										 |  |  | - `25xx`: slide envelope period up. | 
					
						
							|  |  |  | - `26xx`: slide envelope period down. | 
					
						
							| 
									
										
										
										
											2022-01-11 03:52:26 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | a lower envelope period will make the envelope run faster. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-11 18:57:26 -05:00
										 |  |  | > how do I use C64 absolute filter/duty?
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | on Instrument Editor in the C64 tab there are two options to toggle these. | 
					
						
							|  |  |  | also provided are two effects: | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | - `3xxx`: set fine duty. | 
					
						
							|  |  |  | - `4xxx`: set fine cutoff. `xxx` range is 000-7ff. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 13:30:06 -05:00
										 |  |  | > my song sounds very odd at a certain point
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | file a bug report. use the Issues page. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | it's probably another playback inaccuracy. | 
					
						
							| 
									
										
										
										
											2021-12-11 13:41:37 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | > my song sounds correct, but it doesn't in DefleMask
 | 
					
						
							| 
									
										
										
										
											2021-12-11 13:41:37 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-19 13:05:09 -05:00
										 |  |  | file a bug report **here**. it still is a playback inaccuracy. | 
					
						
							| 
									
										
										
										
											2022-01-11 03:52:26 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | > my C64 song sounds terrible after saving as .dmf!
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | that's a limitation of the DefleMask format. save in Furnace song format instead (.fur). | 
					
						
							| 
									
										
										
										
											2022-01-19 17:10:21 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | > how do I solo channels?
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | right click on the channel name. |