| 
									
										
										
										
											2021-05-13 04:22:57 -04:00
										 |  |  | # Furnace
 | 
					
						
							| 
									
										
										
										
											2021-05-11 16:08:08 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 04:55:31 -05:00
										 |  |  | this is a player for DefleMask module files (.dmf). | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | ## features
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-09 03:37:31 -05:00
										 |  |  | - supports Sega Genesis, Master System, Game Boy, PC Engine, NES, C64, YM2151/PCM and Neo Geo! | 
					
						
							| 
									
										
										
										
											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 | 
					
						
							| 
									
										
										
										
											2021-12-11 04:55:31 -05:00
										 |  |  | - accurate emulation cores whether possible (Nuked, MAME, SameBoy, Mednafen PCE, puNES, reSID and ymfm) | 
					
						
							| 
									
										
										
										
											2021-05-28 15:15:27 -04:00
										 |  |  | - open-source. GPLv2. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ## 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | ./furnace <file> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-12-11 04:55:31 -05:00
										 |  |  | this will play a .dmf file. | 
					
						
							| 
									
										
										
										
											2021-12-07 13:08:48 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | ./furnace -view commands <file> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | this will play a .dmf file and enable the commands view. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | ./furnace -loops 0 <file> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | this will play a .dmf file and not loop it. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | ./furnace -output audio.wav <file> | 
					
						
							|  |  |  | ``` | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | this will render a .dmf file to .wav. | 
					
						
							| 
									
										
										
										
											2021-12-11 13:30:06 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | # notes
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | > my song plays different after looping!
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | that's because Furnace does not reset channel status when looping. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | > 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
										 |  |  | 
 | 
					
						
							|  |  |  | > extremely high CPU usage in arcade platform
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | yep, that's how accurate Nuked is. I'll add an ymfm-based core soon. |