Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -35,13 +35,10 @@ libft0cc/build
libft0cc/build_ms
Testing/Temporary

distribute/*

# ignore submodules
Dn-help/*

# this should be automatically generated at build
distribute/*
hlp/HTMLDefines.h
Dn-FamiTracker.rc_status.txt

# generated headers
/Source/drivers/*.h
Expand Down
11 changes: 6 additions & 5 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,19 +6,19 @@ Written by D.P.C.M.

Version 0.5.2.9

Last updated: January 07, 2026
Last updated: January 11, 2026

---

## Unreleased - 2026-01-07
## Unreleased - 2026-01-11

### Important changes

- ...

### Improvements

- ...
- Clarify NSF driver licensing (@Gumball2415 #401)

### Bug fixes

Expand All @@ -42,8 +42,9 @@ Last updated: January 07, 2026
- Refactor custom build commands in `.vcxproj`s (@Gumball2415 #398)
- Update CMake build scripts (@Gumball2415 #398)
- Update CMake source list in `exe.cmake` (@Gumball2415 #398)


- Update NSF driver licensing (@Gumball2415 #401)
- Add MIT-0 license for NSF driver license
- Fix `LICENSE.md` links

## Dn0.5.2 - 2025-08-18

Expand Down
11 changes: 7 additions & 4 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ find_package(Python 3.10)

# update version in Dn-FamiTracker.rc
add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Dn-FamiTracker.rc
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/Dn-FamiTracker.rc_status.txt
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/version.h
COMMAND ${Python_EXECUTABLE} resource_version_update.py
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
Expand Down Expand Up @@ -75,11 +75,14 @@ add_custom_command(
# update changelog
add_custom_command(
OUTPUT ${DNHELP_SRC_DIR}/changelog.htm
DEPENDS ${DNHELP_SRC_DIR}/changelog-shell.htm
${DNHELP_SRC_DIR}/license.htm
DEPENDS ${DNHELP_SRC_DIR}/changelog-template.htm
${DNHELP_SRC_DIR}/license-template.htm
CHANGELOG.md
LICENSE.md
WORKING_DIRECTORY ${DNHELP_SRC_DIR}
COMMAND call ${DNHELP_SRC_DIR}/update-changelog-htm.bat
COMMENT "Updating changelog.htm."
COMMAND call ${DNHELP_SRC_DIR}/update-htm-templates
COMMENT "Updating templated pages."
VERBATIM)

# builds the NSF driver
Expand Down
9 changes: 5 additions & 4 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,14 +12,15 @@ To edit and/or build the source, you may use Visual Studio 2022, or alternativel
- Note that HTML Help Workshop is no longer supported and thus no longer available to download on Microsoft's website.
- [Link to archived download.](https://web.archive.org/web/20200720082840/http://download.microsoft.com/download/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe)
- [Pandoc](https://pandoc.org), for markdown document conversion.
- Currently used for HTMLHelp manual changelog compiling.
- For NSF driver compiling:
- [CC65 build tools](https://cc65.github.io/), make sure `ld65` and `ca65` is available in environment path.
- Currently used for templated pages for the HTMLHelp manual.
- [CC65 build tools](https://cc65.github.io/)
- Used for NSF driver compiling.
- Make sure `ld65` and `ca65` is available in environment path.
- For miscellaneous custom build scripts:
- [Python 3.10+](https://www.python.org/)
- For any IDE that supports building via CMake:
- CMake version 3.16+
- The latest MSVC build tools
- The latest MSVC build tools
- may be installed by VS Installer or by other sources
- Windows 11 SDK (10.0.26100.0)
- may be installed through VS Installer or by other sources
Expand Down
4 changes: 2 additions & 2 deletions Dn-FamiTracker.vcxproj
Original file line number Diff line number Diff line change
Expand Up @@ -693,7 +693,6 @@
<Message>Generating map file for help compiler.</Message>
<Command>call $(SolutionDir)generate-helpmap.bat</Command>
<Outputs>Dn-help\hlp\HTMLDefines.h;%(Outputs)</Outputs>
<AdditionalInputs>$(SolutionDir)Dn-help\hlp\changelog_shell.htm;%(AdditionalInputs)</AdditionalInputs>
<BuildInParallel>true</BuildInParallel>
</CustomBuild>
<ClInclude Include="Source\ConfigEmulation.h" />
Expand Down Expand Up @@ -847,7 +846,8 @@
<CustomBuild Include="version.h">
<Command>python $(SolutionDir)resource_version_update.py</Command>
<Message>Updating version info in resource file.</Message>
<Outputs>$(SolutionDir)Dn-FamiTracker.rc;%(Outputs)</Outputs>
<AdditionalInputs>$(SolutionDir)Dn-FamiTracker.rc;</AdditionalInputs>
<Outputs>$(SolutionDir)Dn-FamiTracker.rc_status.txt;%(Outputs)</Outputs>
<BuildInParallel>true</BuildInParallel>
</CustomBuild>
<ClInclude Include="Source\ChannelMap.h" />
Expand Down
18 changes: 18 additions & 0 deletions LICENSE-MIT-0.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
MIT No Attribution

Copyright 2020-2026 D.P.C.M.

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
of the Software, and to permit persons to whom the Software is furnished to do
so.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
50 changes: 19 additions & 31 deletions LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
# Licenses

---

The application is distributed under the
[GPLv3+ license](https://www.gnu.org/licenses/gpl-3.0.en.html), or any later
version.

```_
```text
Dn-FamiTracker - NES/Famicom sound tracker
Copyright (C) 2020-2025 D.P.C.M.
Copyright (C) 2020-2026 D.P.C.M.
FamiTracker Copyright (C) 2005-2020 Jonathan Liss
0CC-FamiTracker Copyright (C) 2014-2018 HertzDevil

Expand All @@ -27,7 +29,7 @@ along with this program. If not, see https://www.gnu.org/licenses/.
## Tracker source code and libraries

The tracker source code is distributed under the
[GPLv3+ license](https://www.gnu.org/licenses/gpl-3.0.en.html), or any later
[GPLv3+ license](https://www.gnu.org/licenses/gpl-3.0.html), or any later
version.

- FamiTracker
Expand All @@ -40,50 +42,36 @@ version.
- Licensed under
[GPLv2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html), or any
later version.
- Copyright (C) 2006 Brezza, 2012-2025 Brad Smith
- Used under an [informal license](Source/APU/nsfplay/readme.txt).
- VRC7/OPLL sound emulator from emu2413 v1.5.9
- Copyright (C) 2001-2019 Mitsutaka Okazaki
- NSFPlay
- Copyright (C) 2006 Brezza, 2012-2026 Brad Smith
- Used under an [informal license](https://github.com/bbbradsmith/nsfplay/blob/master/readme.txt).
- VRC7/OPLL sound emulator from [emu2413](https://github.com/digital-sound-antiques/emu2413) v1.5.9
- Copyright (C) 2001-2022 Mitsutaka Okazaki
- Licensed under the [MIT license](https://mit-license.org/).
- FDS and N163 sound emulator from Mesen
- Copyright (C) 2014-2024 Sour
- FDS and N163 sound emulator from [Mesen](https://github.com/SourMesen/Mesen2)
- Copyright (C) 2014-2025 Sour
- Licensed under
[GPLv3](https://www.gnu.org/licenses/old-licenses/gpl-3.0.en.html), or any
[GPLv3](https://www.gnu.org/licenses/gpl-3.0.html), or any
later version.
- Blip_buffer 0.4.1
- [Blip_buffer](https://www.slack.net/~ant/libs/audio.html#Blip_Buffer) 0.4.1
- Copyright (C) 2003-2006 Shay Green
- Licensed under
[LGPLv2.1](https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html)
- modified by nyanpasu64
- Free FFT and convolution (C++)
- [Free FFT and convolution](https://www.nayuki.io/page/free-small-fft-in-multiple-languages) (C++)
- Copyright (C) 2017 Project Nayuki
- Licensed under the
[MIT license](https://mit-license.org/).
- JSON for Modern C++
- [JSON for Modern C++](https://github.com/nlohmann/json/)
- Copyright (C) 2013-2024 Niels Lohmann <https://nlohmann.me>
- Licensed under the [MIT license](https://mit-license.org/).
- libsamplerate
- [libsamplerate](https://github.com/libsndfile/libsamplerate)
- Copyright (C) 2012-2016, Erik de Castro Lopo <[email protected]>.
All rights reserved.
- Licensed under the
[BSD-2-Clause license](https://www.freebsd.org/copyright/freebsd-license/).

## NSFs, Exported music, modules, etc.

The licenses mentioned for the NSF driver and the tracker source do not apply to
exported media made with the program that does not contain executable code that
resembles any source file, such as exported `.wav`s, `.txt`s, `.json`s, or `.csv`s.

[jsr's comment on music created with FT.](http://forums.famitracker.com/viewtopic.php?f=4&t=122&p=741#p741)

However, NSFs/ROMs contain machine code that more or less corresponds to the NSF
driver source, and thus the software licenses may apply. More details can be
found [in the NSF source's license](./Source/drivers/asm/LICENSE.md).

This does not apply to exported assembly or binary music data, as they do not
include the NSF driver data.

## NSF driver source code

Dn-FT NSF driver changes are under GPL v2 due to 0CC-FT. More details can be
found [in the NSF source's license](./Source/drivers/asm/LICENSE.md).
Dn-FT NSF driver modifications are under [MIT-0](LICENSE-MIT-0.txt). More details can be found
[in the NSF driver source's license](https://github.com/Dn-Programming-Core-Management/Dn-FamiTracker/blob/main/Source/drivers/asm/LICENSE.md).
25 changes: 17 additions & 8 deletions Source/drivers/asm/LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,21 +1,30 @@
```text
Dn-FamiTracker NSF Driver Copyright (C) 2020-2026 D.P.C.M.
0CC-FamiTracker NSF Driver Copyright (C) 2014-2018 HertzDevil
FamiTracker NSF music driver Copyright (C) 2005-2015 Jonathan Liss
```

The original FT NSF driver's source code is explicitly *not* under the
GPL.[^1][^2][^3]

It is instead source-available, under no explicit license. Based on its usecase,
and jsr's comments [^4], I presume that distribution and modification is
and jsr's comments [^4], it is presumed that distribution and modification is
permitted, and attribution is recommended.

[^1]: <http://famitracker.com/forum/posts.php?id=787#5149>
[^2]: <http://forums.famitracker.com/viewtopic.php?t=2638>
[^3]: <http://famitracker.com/forum/posts.php?id=4337#44063>
[^4]: <http://famitracker.com/forum/posts.php?id=4337#44083>

0CC-FamiTracker's NSF driver code modifications is licensed under GPL v2,
which may restrict anyone sharing compiled NSFs and binaries without sharing the
assembly source, as they contain machine code that directly correlates to the
NSF driver source.
0CC-FamiTracker's modified NSF driver source comes with a
[GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) license
file. Although
[the output of the program is not covered by the GNU GPL](https://www.gnu.org/licenses/gpl-faq.en.html#WhatCaseIsOutputGPL),
the NSF/ROM output might be considered as an executable binary, which in theory
may restrict anyone sharing compiled NSFs and binaries without sharing the
assembly source, according to section 3.

0CC-FT NSF driver modifications are under GPL v2.
Dn-FamiTracker's modifications are under [MIT-0](../../../LICENSE-MIT-0.txt).

Dn-FT NSF driver modifications are under the same license as 0CC-FT NSF driver
modifications.
Dn-FamiTracker NSF driver source as a whole is effectively under the
[GPL v2](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html) license.
10 changes: 9 additions & 1 deletion resource_version_update.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,4 +57,12 @@ def overwrite_rc(key_str: str, val_str: str):
)


print(f"Resource versions updated as {ver_api}.{ver_maj}.{ver_min}.{ver_bld}")
print(f"Resource versions updated as {ver_api}.{ver_maj}.{ver_min}.{ver_bld}")

# TODO: Copy Dn-FamiTracker.rc to a temp file first before executing this
# annoying; Visual Studio Custom build requires that we have an output
# but during rebuilding or cleaning, it deletes that output
# we can't just delete Dn-FamiTracker.rc!
# so instead, we indicate that this is the output it can scapegoat
with open("Dn-FamiTracker.rc_status.txt", mode="w") as output:
output.write("all good!")